shithub: pokered

Download patch

ref: 7e9ccbb5b254f794a79c4d0f9d816b3cbfb81f3f
parent: 2fe1505babaf02b995cc0d9c3a827b798935b19a
parent: d5db0c3dbf78a957e8f10ad410789c4256d64f74
author: Rangi <35663410+Rangi42@users.noreply.github.com>
date: Thu Aug 20 15:07:42 EDT 2020

Merge pull request #287 from Rangi42/master

Simplify map event definitions

--- a/data/maps/objects/AgathasRoom.asm
+++ b/data/maps/objects/AgathasRoom.asm
@@ -1,19 +1,15 @@
 AgathasRoom_Object:
 	db $0 ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 4, 11, 2, BRUNOS_ROOM
 	warp 5, 11, 3, BRUNOS_ROOM
 	warp 4, 0, 0, LANCES_ROOM
 	warp 5, 0, 0, LANCES_ROOM
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_AGATHA, 5, 2, STAY, DOWN, 1, OPP_AGATHA, 1
 
-	; warp-to
-	warp_to 4, 11, AGATHAS_ROOM_WIDTH ; BRUNOS_ROOM
-	warp_to 5, 11, AGATHAS_ROOM_WIDTH ; BRUNOS_ROOM
-	warp_to 4, 0, AGATHAS_ROOM_WIDTH ; LANCES_ROOM
-	warp_to 5, 0, AGATHAS_ROOM_WIDTH ; LANCES_ROOM
+	def_warps_to AGATHAS_ROOM
--- a/data/maps/objects/BikeShop.asm
+++ b/data/maps/objects/BikeShop.asm
@@ -1,17 +1,15 @@
 BikeShop_Object:
 	db $e ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 4, LAST_MAP
 	warp 3, 7, 4, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_BIKE_SHOP_CLERK, 6, 2, STAY, NONE, 1 ; person
 	object SPRITE_MIDDLE_AGED_WOMAN, 5, 6, WALK, UP_DOWN, 2 ; person
 	object SPRITE_YOUNGSTER, 1, 3, STAY, UP, 3 ; person
 
-	; warp-to
-	warp_to 2, 7, BIKE_SHOP_WIDTH
-	warp_to 3, 7, BIKE_SHOP_WIDTH
+	def_warps_to BIKE_SHOP
--- a/data/maps/objects/BillsHouse.asm
+++ b/data/maps/objects/BillsHouse.asm
@@ -1,17 +1,15 @@
 BillsHouse_Object:
 	db $d ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 0, LAST_MAP
 	warp 3, 7, 0, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_MONSTER, 6, 5, STAY, NONE, 1 ; person
 	object SPRITE_SUPER_NERD, 4, 4, STAY, NONE, 2 ; person
 	object SPRITE_SUPER_NERD, 6, 5, STAY, NONE, 3 ; person
 
-	; warp-to
-	warp_to 2, 7, BILLS_HOUSE_WIDTH
-	warp_to 3, 7, BILLS_HOUSE_WIDTH
+	def_warps_to BILLS_HOUSE
--- a/data/maps/objects/BluesHouse.asm
+++ b/data/maps/objects/BluesHouse.asm
@@ -1,17 +1,15 @@
 BluesHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 1, LAST_MAP
 	warp 3, 7, 1, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_DAISY, 2, 3, STAY, RIGHT, 1 ; Daisy, sitting by map
 	object SPRITE_DAISY, 6, 4, WALK, UP_DOWN, 2, 0 ; Daisy, walking around
 	object SPRITE_POKEDEX, 3, 3, STAY, NONE, 3, 0 ; map on table
 
-	; warp-to
-	warp_to 2, 7, BLUES_HOUSE_WIDTH
-	warp_to 3, 7, BLUES_HOUSE_WIDTH
+	def_warps_to BLUES_HOUSE
--- a/data/maps/objects/BrunosRoom.asm
+++ b/data/maps/objects/BrunosRoom.asm
@@ -1,19 +1,15 @@
 BrunosRoom_Object:
 	db $3 ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 4, 11, 2, LORELEIS_ROOM
 	warp 5, 11, 3, LORELEIS_ROOM
 	warp 4, 0, 0, AGATHAS_ROOM
 	warp 5, 0, 1, AGATHAS_ROOM
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_BRUNO, 5, 2, STAY, DOWN, 1, OPP_BRUNO, 1
 
-	; warp-to
-	warp_to 4, 11, BRUNOS_ROOM_WIDTH ; LORELEIS_ROOM
-	warp_to 5, 11, BRUNOS_ROOM_WIDTH ; LORELEIS_ROOM
-	warp_to 4, 0, BRUNOS_ROOM_WIDTH ; AGATHAS_ROOM
-	warp_to 5, 0, BRUNOS_ROOM_WIDTH ; AGATHAS_ROOM
+	def_warps_to BRUNOS_ROOM
--- a/data/maps/objects/CeladonChiefHouse.asm
+++ b/data/maps/objects/CeladonChiefHouse.asm
@@ -1,17 +1,15 @@
 CeladonChiefHouse_Object:
 	db $f ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 11, LAST_MAP
 	warp 3, 7, 11, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_GRAMPS, 4, 2, STAY, DOWN, 1 ; person
 	object SPRITE_ROCKET, 1, 4, WALK, ANY_DIR, 2 ; person
 	object SPRITE_SAILOR, 5, 6, STAY, LEFT, 3 ; person
 
-	; warp-to
-	warp_to 2, 7, CELADON_CHIEF_HOUSE_WIDTH
-	warp_to 3, 7, CELADON_CHIEF_HOUSE_WIDTH
+	def_warps_to CELADON_CHIEF_HOUSE
--- a/data/maps/objects/CeladonCity.asm
+++ b/data/maps/objects/CeladonCity.asm
@@ -1,7 +1,7 @@
 CeladonCity_Object:
 	db $f ; border block
 
-	db 13 ; warps
+	def_warps
 	warp 8, 13, 0, CELADON_MART_1F
 	warp 10, 13, 2, CELADON_MART_1F
 	warp 24, 9, 0, CELADON_MANSION_1F
@@ -16,7 +16,7 @@
 	warp 35, 27, 0, CELADON_CHIEF_HOUSE
 	warp 43, 27, 0, CELADON_HOTEL
 
-	db 9 ; signs
+	def_signs
 	sign 27, 15, 10 ; CeladonCityText10
 	sign 19, 15, 11 ; CeladonCityText11
 	sign 42, 9, 12 ; PokeCenterSignText
@@ -27,7 +27,7 @@
 	sign 33, 21, 17 ; CeladonCityText17
 	sign 27, 21, 18 ; CeladonCityText18
 
-	db 9 ; objects
+	def_objects
 	object SPRITE_LITTLE_GIRL, 8, 17, WALK, ANY_DIR, 1 ; person
 	object SPRITE_GRAMPS, 11, 28, STAY, UP, 2 ; person
 	object SPRITE_GIRL, 14, 19, WALK, UP_DOWN, 3 ; person
@@ -38,17 +38,4 @@
 	object SPRITE_ROCKET, 32, 29, WALK, LEFT_RIGHT, 8 ; person
 	object SPRITE_ROCKET, 42, 14, WALK, LEFT_RIGHT, 9 ; person
 
-	; warp-to
-	warp_to 8, 13, CELADON_CITY_WIDTH ; CELADON_MART_1F
-	warp_to 10, 13, CELADON_CITY_WIDTH ; CELADON_MART_1F
-	warp_to 24, 9, CELADON_CITY_WIDTH ; CELADON_MANSION_1F
-	warp_to 24, 3, CELADON_CITY_WIDTH ; CELADON_MANSION_1F
-	warp_to 25, 3, CELADON_CITY_WIDTH ; CELADON_MANSION_1F
-	warp_to 41, 9, CELADON_CITY_WIDTH ; CELADON_POKECENTER
-	warp_to 12, 27, CELADON_CITY_WIDTH ; CELADON_GYM
-	warp_to 28, 19, CELADON_CITY_WIDTH ; GAME_CORNER
-	warp_to 39, 19, CELADON_CITY_WIDTH ; CELADON_MART_5F
-	warp_to 33, 19, CELADON_CITY_WIDTH ; GAME_CORNER_PRIZE_ROOM
-	warp_to 31, 27, CELADON_CITY_WIDTH ; CELADON_DINER
-	warp_to 35, 27, CELADON_CITY_WIDTH ; CELADON_CHIEF_HOUSE
-	warp_to 43, 27, CELADON_CITY_WIDTH ; CELADON_HOTEL
+	def_warps_to CELADON_CITY
--- a/data/maps/objects/CeladonDiner.asm
+++ b/data/maps/objects/CeladonDiner.asm
@@ -1,13 +1,13 @@
 CeladonDiner_Object:
 	db $f ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 10, LAST_MAP
 	warp 4, 7, 10, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 5 ; objects
+	def_objects
 	object SPRITE_COOK, 8, 5, WALK, LEFT_RIGHT, 1 ; person
 	object SPRITE_MIDDLE_AGED_WOMAN, 7, 2, STAY, NONE, 2 ; person
 	object SPRITE_MIDDLE_AGED_MAN, 1, 4, STAY, DOWN, 3 ; person
@@ -14,6 +14,4 @@
 	object SPRITE_FISHER, 5, 3, STAY, RIGHT, 4 ; person
 	object SPRITE_GYM_GUIDE, 0, 1, STAY, DOWN, 5 ; person
 
-	; warp-to
-	warp_to 3, 7, CELADON_DINER_WIDTH
-	warp_to 4, 7, CELADON_DINER_WIDTH
+	def_warps_to CELADON_DINER
--- a/data/maps/objects/CeladonGym.asm
+++ b/data/maps/objects/CeladonGym.asm
@@ -1,13 +1,13 @@
 CeladonGym_Object:
 	db $3 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 4, 17, 6, LAST_MAP
 	warp 5, 17, 6, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 8 ; objects
+	def_objects
 	object SPRITE_ERIKA, 4, 3, STAY, DOWN, 1, OPP_ERIKA, 1
 	object SPRITE_COOLTRAINER_F, 2, 11, STAY, RIGHT, 2, OPP_LASS, 17
 	object SPRITE_BEAUTY, 7, 10, STAY, LEFT, 3, OPP_BEAUTY, 1
@@ -17,6 +17,4 @@
 	object SPRITE_BEAUTY, 3, 3, STAY, DOWN, 7, OPP_BEAUTY, 3
 	object SPRITE_COOLTRAINER_F, 5, 3, STAY, DOWN, 8, OPP_COOLTRAINER_F, 1
 
-	; warp-to
-	warp_to 4, 17, CELADON_GYM_WIDTH
-	warp_to 5, 17, CELADON_GYM_WIDTH
+	def_warps_to CELADON_GYM
--- a/data/maps/objects/CeladonHotel.asm
+++ b/data/maps/objects/CeladonHotel.asm
@@ -1,17 +1,15 @@
 CeladonHotel_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 12, LAST_MAP
 	warp 4, 7, 12, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_GRANNY, 3, 1, STAY, DOWN, 1 ; person
 	object SPRITE_BEAUTY, 2, 4, STAY, NONE, 2 ; person
 	object SPRITE_SUPER_NERD, 8, 4, WALK, LEFT_RIGHT, 3 ; person
 
-	; warp-to
-	warp_to 3, 7, CELADON_HOTEL_WIDTH
-	warp_to 4, 7, CELADON_HOTEL_WIDTH
+	def_warps_to CELADON_HOTEL
--- a/data/maps/objects/CeladonMansion1F.asm
+++ b/data/maps/objects/CeladonMansion1F.asm
@@ -1,7 +1,7 @@
 CeladonMansion1F_Object:
 	db $f ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 4, 11, 2, LAST_MAP
 	warp 5, 11, 2, LAST_MAP
 	warp 4, 0, 4, LAST_MAP
@@ -8,18 +8,13 @@
 	warp 7, 1, 1, CELADON_MANSION_2F
 	warp 2, 1, 2, CELADON_MANSION_2F
 
-	db 1 ; signs
+	def_signs
 	sign 4, 9, 5 ; CeladonMansion1Text5
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_MONSTER, 0, 5, STAY, RIGHT, 1 ; person
 	object SPRITE_GRANNY, 1, 5, STAY, DOWN, 2 ; person
 	object SPRITE_FAIRY, 1, 8, WALK, LEFT_RIGHT, 3 ; person
 	object SPRITE_MONSTER, 4, 4, WALK, UP_DOWN, 4 ; person
 
-	; warp-to
-	warp_to 4, 11, CELADON_MANSION_1F_WIDTH
-	warp_to 5, 11, CELADON_MANSION_1F_WIDTH
-	warp_to 4, 0, CELADON_MANSION_1F_WIDTH
-	warp_to 7, 1, CELADON_MANSION_1F_WIDTH ; CELADON_MANSION_2F
-	warp_to 2, 1, CELADON_MANSION_1F_WIDTH ; CELADON_MANSION_2F
+	def_warps_to CELADON_MANSION_1F
--- a/data/maps/objects/CeladonMansion2F.asm
+++ b/data/maps/objects/CeladonMansion2F.asm
@@ -1,19 +1,15 @@
 CeladonMansion2F_Object:
 	db $f ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 6, 1, 0, CELADON_MANSION_3F
 	warp 7, 1, 3, CELADON_MANSION_1F
 	warp 2, 1, 4, CELADON_MANSION_1F
 	warp 4, 1, 3, CELADON_MANSION_3F
 
-	db 1 ; signs
+	def_signs
 	sign 4, 9, 1 ; CeladonMansion2Text1
 
-	db 0 ; objects
+	def_objects
 
-	; warp-to
-	warp_to 6, 1, CELADON_MANSION_2F_WIDTH ; CELADON_MANSION_3F
-	warp_to 7, 1, CELADON_MANSION_2F_WIDTH ; CELADON_MANSION_1F
-	warp_to 2, 1, CELADON_MANSION_2F_WIDTH ; CELADON_MANSION_1F
-	warp_to 4, 1, CELADON_MANSION_2F_WIDTH ; CELADON_MANSION_3F
+	def_warps_to CELADON_MANSION_2F
--- a/data/maps/objects/CeladonMansion3F.asm
+++ b/data/maps/objects/CeladonMansion3F.asm
@@ -1,26 +1,22 @@
 CeladonMansion3F_Object:
 	db $f ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 6, 1, 0, CELADON_MANSION_2F
 	warp 7, 1, 0, CELADON_MANSION_ROOF
 	warp 2, 1, 1, CELADON_MANSION_ROOF
 	warp 4, 1, 3, CELADON_MANSION_2F
 
-	db 4 ; signs
+	def_signs
 	sign 1, 3, 5 ; CeladonMansion3Text5
 	sign 4, 3, 6 ; CeladonMansion3Text6
 	sign 1, 6, 7 ; CeladonMansion3Text7
 	sign 4, 9, 8 ; CeladonMansion3Text8
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_BIKE_SHOP_CLERK, 0, 4, STAY, UP, 1 ; person
 	object SPRITE_CLERK, 3, 4, STAY, UP, 2 ; person
 	object SPRITE_SUPER_NERD, 0, 7, STAY, UP, 3 ; person
 	object SPRITE_SILPH_WORKER, 2, 3, STAY, NONE, 4 ; person
 
-	; warp-to
-	warp_to 6, 1, CELADON_MANSION_3F_WIDTH ; CELADON_MANSION_2F
-	warp_to 7, 1, CELADON_MANSION_3F_WIDTH ; CELADON_MANSION_ROOF
-	warp_to 2, 1, CELADON_MANSION_3F_WIDTH ; CELADON_MANSION_ROOF
-	warp_to 4, 1, CELADON_MANSION_3F_WIDTH ; CELADON_MANSION_2F
+	def_warps_to CELADON_MANSION_3F
--- a/data/maps/objects/CeladonMansionRoof.asm
+++ b/data/maps/objects/CeladonMansionRoof.asm
@@ -1,17 +1,14 @@
 CeladonMansionRoof_Object:
 	db $9 ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 6, 1, 1, CELADON_MANSION_3F
 	warp 2, 1, 2, CELADON_MANSION_3F
 	warp 2, 7, 0, CELADON_MANSION_ROOF_HOUSE
 
-	db 1 ; signs
+	def_signs
 	sign 3, 7, 1 ; CeladonMansion4Text1
 
-	db 0 ; objects
+	def_objects
 
-	; warp-to
-	warp_to 6, 1, CELADON_MANSION_ROOF_WIDTH ; CELADON_MANSION_3F
-	warp_to 2, 1, CELADON_MANSION_ROOF_WIDTH ; CELADON_MANSION_3F
-	warp_to 2, 7, CELADON_MANSION_ROOF_WIDTH ; CELADON_MANSION_ROOF_HOUSE
+	def_warps_to CELADON_MANSION_ROOF
--- a/data/maps/objects/CeladonMansionRoofHouse.asm
+++ b/data/maps/objects/CeladonMansionRoofHouse.asm
@@ -1,16 +1,14 @@
 CeladonMansionRoofHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 2, CELADON_MANSION_ROOF
 	warp 3, 7, 2, CELADON_MANSION_ROOF
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_HIKER, 2, 2, STAY, DOWN, 1 ; person
 	object SPRITE_POKE_BALL, 4, 3, STAY, NONE, 2 ; person
 
-	; warp-to
-	warp_to 2, 7, CELADON_MANSION_ROOF_HOUSE_WIDTH ; CELADON_MANSION_ROOF
-	warp_to 3, 7, CELADON_MANSION_ROOF_HOUSE_WIDTH ; CELADON_MANSION_ROOF
+	def_warps_to CELADON_MANSION_ROOF_HOUSE
--- a/data/maps/objects/CeladonMart1F.asm
+++ b/data/maps/objects/CeladonMart1F.asm
@@ -1,7 +1,7 @@
 CeladonMart1F_Object:
 	db $f ; border block
 
-	db 6 ; warps
+	def_warps
 	warp 2, 7, 0, LAST_MAP
 	warp 3, 7, 0, LAST_MAP
 	warp 16, 7, 1, LAST_MAP
@@ -9,17 +9,11 @@
 	warp 12, 1, 0, CELADON_MART_2F
 	warp 1, 1, 0, CELADON_MART_ELEVATOR
 
-	db 2 ; signs
+	def_signs
 	sign 11, 4, 2 ; CeladonMart1Text2
 	sign 14, 1, 3 ; CeladonMart1Text3
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_LINK_RECEPTIONIST, 8, 3, STAY, DOWN, 1 ; person
 
-	; warp-to
-	warp_to 2, 7, CELADON_MART_1F_WIDTH
-	warp_to 3, 7, CELADON_MART_1F_WIDTH
-	warp_to 16, 7, CELADON_MART_1F_WIDTH
-	warp_to 17, 7, CELADON_MART_1F_WIDTH
-	warp_to 12, 1, CELADON_MART_1F_WIDTH ; CELADON_MART_2F
-	warp_to 1, 1, CELADON_MART_1F_WIDTH ; CELADON_MART_ELEVATOR
+	def_warps_to CELADON_MART_1F
--- a/data/maps/objects/CeladonMart2F.asm
+++ b/data/maps/objects/CeladonMart2F.asm
@@ -1,21 +1,18 @@
 CeladonMart2F_Object:
 	db $f ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 12, 1, 4, CELADON_MART_1F
 	warp 16, 1, 1, CELADON_MART_3F
 	warp 1, 1, 0, CELADON_MART_ELEVATOR
 
-	db 1 ; signs
+	def_signs
 	sign 14, 1, 5 ; CeladonMart2Text5
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_CLERK, 5, 3, STAY, DOWN, 1 ; person
 	object SPRITE_CLERK, 6, 3, STAY, DOWN, 2 ; person
 	object SPRITE_MIDDLE_AGED_MAN, 19, 5, STAY, NONE, 3 ; person
 	object SPRITE_GIRL, 14, 4, WALK, UP_DOWN, 4 ; person
 
-	; warp-to
-	warp_to 12, 1, CELADON_MART_2F_WIDTH ; CELADON_MART_1F
-	warp_to 16, 1, CELADON_MART_2F_WIDTH ; CELADON_MART_3F
-	warp_to 1, 1, CELADON_MART_2F_WIDTH ; CELADON_MART_ELEVATOR
+	def_warps_to CELADON_MART_2F
--- a/data/maps/objects/CeladonMart3F.asm
+++ b/data/maps/objects/CeladonMart3F.asm
@@ -1,12 +1,12 @@
 CeladonMart3F_Object:
 	db $f ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 12, 1, 0, CELADON_MART_4F
 	warp 16, 1, 1, CELADON_MART_2F
 	warp 1, 1, 0, CELADON_MART_ELEVATOR
 
-	db 12 ; signs
+	def_signs
 	sign 2, 4, 6 ; CeladonMart3Text6
 	sign 3, 4, 7 ; CeladonMart3Text7
 	sign 5, 4, 8 ; CeladonMart3Text8
@@ -20,7 +20,7 @@
 	sign 6, 1, 16 ; CeladonMart3Text16
 	sign 10, 1, 17 ; CeladonMart3Text17
 
-	db 5 ; objects
+	def_objects
 	object SPRITE_CLERK, 16, 5, STAY, NONE, 1 ; person
 	object SPRITE_GAMEBOY_KID, 11, 6, STAY, RIGHT, 2 ; person
 	object SPRITE_GAMEBOY_KID, 7, 2, STAY, DOWN, 3 ; person
@@ -27,7 +27,4 @@
 	object SPRITE_GAMEBOY_KID, 8, 2, STAY, DOWN, 4 ; person
 	object SPRITE_LITTLE_BOY, 2, 5, STAY, UP, 5 ; person
 
-	; warp-to
-	warp_to 12, 1, CELADON_MART_3F_WIDTH ; CELADON_MART_4F
-	warp_to 16, 1, CELADON_MART_3F_WIDTH ; CELADON_MART_2F
-	warp_to 1, 1, CELADON_MART_3F_WIDTH ; CELADON_MART_ELEVATOR
+	def_warps_to CELADON_MART_3F
--- a/data/maps/objects/CeladonMart4F.asm
+++ b/data/maps/objects/CeladonMart4F.asm
@@ -1,20 +1,17 @@
 CeladonMart4F_Object:
 	db $f ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 12, 1, 0, CELADON_MART_3F
 	warp 16, 1, 1, CELADON_MART_5F
 	warp 1, 1, 0, CELADON_MART_ELEVATOR
 
-	db 1 ; signs
+	def_signs
 	sign 14, 1, 4 ; CeladonMart4Text4
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_CLERK, 5, 7, STAY, NONE, 1 ; person
 	object SPRITE_SUPER_NERD, 15, 5, WALK, LEFT_RIGHT, 2 ; person
 	object SPRITE_YOUNGSTER, 5, 2, WALK, LEFT_RIGHT, 3 ; person
 
-	; warp-to
-	warp_to 12, 1, CELADON_MART_4F_WIDTH ; CELADON_MART_3F
-	warp_to 16, 1, CELADON_MART_4F_WIDTH ; CELADON_MART_5F
-	warp_to 1, 1, CELADON_MART_4F_WIDTH ; CELADON_MART_ELEVATOR
+	def_warps_to CELADON_MART_4F
--- a/data/maps/objects/CeladonMart5F.asm
+++ b/data/maps/objects/CeladonMart5F.asm
@@ -1,21 +1,18 @@
 CeladonMart5F_Object:
 	db $f ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 12, 1, 0, CELADON_MART_ROOF
 	warp 16, 1, 1, CELADON_MART_4F
 	warp 1, 1, 0, CELADON_MART_ELEVATOR
 
-	db 1 ; signs
+	def_signs
 	sign 14, 1, 5 ; CeladonMart5Text5
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_GENTLEMAN, 14, 5, WALK, UP_DOWN, 1 ; person
 	object SPRITE_SAILOR, 2, 6, STAY, NONE, 2 ; person
 	object SPRITE_CLERK, 5, 3, STAY, DOWN, 3 ; person
 	object SPRITE_CLERK, 6, 3, STAY, DOWN, 4 ; person
 
-	; warp-to
-	warp_to 12, 1, CELADON_MART_5F_WIDTH ; CELADON_MART_ROOF
-	warp_to 16, 1, CELADON_MART_5F_WIDTH ; CELADON_MART_4F
-	warp_to 1, 1, CELADON_MART_5F_WIDTH ; CELADON_MART_ELEVATOR
+	def_warps_to CELADON_MART_5F
--- a/data/maps/objects/CeladonMartElevator.asm
+++ b/data/maps/objects/CeladonMartElevator.asm
@@ -1,15 +1,13 @@
 CeladonMartElevator_Object:
 	db $f ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 1, 3, 5, CELADON_MART_1F
 	warp 2, 3, 5, CELADON_MART_1F
 
-	db 1 ; signs
+	def_signs
 	sign 3, 0, 1 ; CeladonMartElevatorText1
 
-	db 0 ; objects
+	def_objects
 
-	; warp-to
-	warp_to 1, 3, CELADON_MART_ELEVATOR_WIDTH ; CELADON_MART_1F
-	warp_to 2, 3, CELADON_MART_ELEVATOR_WIDTH ; CELADON_MART_1F
+	def_warps_to CELADON_MART_ELEVATOR
--- a/data/maps/objects/CeladonMartRoof.asm
+++ b/data/maps/objects/CeladonMartRoof.asm
@@ -1,18 +1,17 @@
 CeladonMartRoof_Object:
 	db $42 ; border block
 
-	db 1 ; warps
+	def_warps
 	warp 15, 2, 0, CELADON_MART_5F
 
-	db 4 ; signs
+	def_signs
 	sign 10, 1, 3 ; CeladonMartRoofText3
 	sign 11, 1, 4 ; CeladonMartRoofText4
 	sign 12, 2, 5 ; CeladonMartRoofText5
 	sign 13, 2, 6 ; CeladonMartRoofText6
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_SUPER_NERD, 10, 4, STAY, LEFT, 1 ; person
 	object SPRITE_LITTLE_GIRL, 5, 5, WALK, ANY_DIR, 2 ; person
 
-	; warp-to
-	warp_to 15, 2, CELADON_MART_ROOF_WIDTH ; CELADON_MART_5F
+	def_warps_to CELADON_MART_ROOF
--- a/data/maps/objects/CeladonPokecenter.asm
+++ b/data/maps/objects/CeladonPokecenter.asm
@@ -1,18 +1,16 @@
 CeladonPokecenter_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 5, LAST_MAP
 	warp 4, 7, 5, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
 	object SPRITE_GENTLEMAN, 7, 3, WALK, LEFT_RIGHT, 2 ; person
 	object SPRITE_BEAUTY, 10, 5, WALK, ANY_DIR, 3 ; person
 	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
-	; warp-to
-	warp_to 3, 7, CELADON_POKECENTER_WIDTH
-	warp_to 4, 7, CELADON_POKECENTER_WIDTH
+	def_warps_to CELADON_POKECENTER
--- a/data/maps/objects/CeruleanBadgeHouse.asm
+++ b/data/maps/objects/CeruleanBadgeHouse.asm
@@ -1,17 +1,14 @@
 CeruleanBadgeHouse_Object:
 	db $c ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 2, 0, 9, LAST_MAP
 	warp 2, 7, 8, LAST_MAP
 	warp 3, 7, 8, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_MIDDLE_AGED_MAN, 5, 3, STAY, RIGHT, 1 ; person
 
-	; warp-to
-	warp_to 2, 0, CERULEAN_BADGE_HOUSE_WIDTH
-	warp_to 2, 7, CERULEAN_BADGE_HOUSE_WIDTH
-	warp_to 3, 7, CERULEAN_BADGE_HOUSE_WIDTH
+	def_warps_to CERULEAN_BADGE_HOUSE
--- a/data/maps/objects/CeruleanCave1F.asm
+++ b/data/maps/objects/CeruleanCave1F.asm
@@ -1,7 +1,7 @@
 CeruleanCave1F_Object:
 	db $7d ; border block
 
-	db 9 ; warps
+	def_warps
 	warp 24, 17, 6, LAST_MAP
 	warp 25, 17, 6, LAST_MAP
 	warp 27, 1, 0, CERULEAN_CAVE_2F
@@ -12,20 +12,11 @@
 	warp 3, 11, 5, CERULEAN_CAVE_2F
 	warp 0, 6, 0, CERULEAN_CAVE_B1F
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_POKE_BALL, 7, 13, STAY, NONE, 1, FULL_RESTORE
 	object SPRITE_POKE_BALL, 19, 3, STAY, NONE, 2, MAX_ELIXER
 	object SPRITE_POKE_BALL, 5, 0, STAY, NONE, 3, NUGGET
 
-	; warp-to
-	warp_to 24, 17, CERULEAN_CAVE_1F_WIDTH
-	warp_to 25, 17, CERULEAN_CAVE_1F_WIDTH
-	warp_to 27, 1, CERULEAN_CAVE_1F_WIDTH ; CERULEAN_CAVE_2F
-	warp_to 23, 7, CERULEAN_CAVE_1F_WIDTH ; CERULEAN_CAVE_2F
-	warp_to 18, 9, CERULEAN_CAVE_1F_WIDTH ; CERULEAN_CAVE_2F
-	warp_to 7, 1, CERULEAN_CAVE_1F_WIDTH ; CERULEAN_CAVE_2F
-	warp_to 1, 3, CERULEAN_CAVE_1F_WIDTH ; CERULEAN_CAVE_2F
-	warp_to 3, 11, CERULEAN_CAVE_1F_WIDTH ; CERULEAN_CAVE_2F
-	warp_to 0, 6, CERULEAN_CAVE_1F_WIDTH ; CERULEAN_CAVE_B1F
+	def_warps_to CERULEAN_CAVE_1F
--- a/data/maps/objects/CeruleanCave2F.asm
+++ b/data/maps/objects/CeruleanCave2F.asm
@@ -1,7 +1,7 @@
 CeruleanCave2F_Object:
 	db $7d ; border block
 
-	db 6 ; warps
+	def_warps
 	warp 29, 1, 2, CERULEAN_CAVE_1F
 	warp 22, 6, 3, CERULEAN_CAVE_1F
 	warp 19, 7, 4, CERULEAN_CAVE_1F
@@ -9,17 +9,11 @@
 	warp 1, 3, 6, CERULEAN_CAVE_1F
 	warp 3, 11, 7, CERULEAN_CAVE_1F
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_POKE_BALL, 29, 9, STAY, NONE, 1, PP_UP
 	object SPRITE_POKE_BALL, 4, 15, STAY, NONE, 2, ULTRA_BALL
 	object SPRITE_POKE_BALL, 13, 6, STAY, NONE, 3, FULL_RESTORE
 
-	; warp-to
-	warp_to 29, 1, CERULEAN_CAVE_2F_WIDTH ; CERULEAN_CAVE_1F
-	warp_to 22, 6, CERULEAN_CAVE_2F_WIDTH ; CERULEAN_CAVE_1F
-	warp_to 19, 7, CERULEAN_CAVE_2F_WIDTH ; CERULEAN_CAVE_1F
-	warp_to 9, 1, CERULEAN_CAVE_2F_WIDTH ; CERULEAN_CAVE_1F
-	warp_to 1, 3, CERULEAN_CAVE_2F_WIDTH ; CERULEAN_CAVE_1F
-	warp_to 3, 11, CERULEAN_CAVE_2F_WIDTH ; CERULEAN_CAVE_1F
+	def_warps_to CERULEAN_CAVE_2F
--- a/data/maps/objects/CeruleanCaveB1F.asm
+++ b/data/maps/objects/CeruleanCaveB1F.asm
@@ -1,15 +1,14 @@
 CeruleanCaveB1F_Object:
 	db $7d ; border block
 
-	db 1 ; warps
+	def_warps
 	warp 3, 6, 8, CERULEAN_CAVE_1F
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_MONSTER, 27, 13, STAY, DOWN, 1, MEWTWO, 70
 	object SPRITE_POKE_BALL, 16, 9, STAY, NONE, 2, ULTRA_BALL
 	object SPRITE_POKE_BALL, 18, 1, STAY, NONE, 3, MAX_REVIVE
 
-	; warp-to
-	warp_to 3, 6, CERULEAN_CAVE_B1F_WIDTH ; CERULEAN_CAVE_1F
+	def_warps_to CERULEAN_CAVE_B1F
--- a/data/maps/objects/CeruleanCity.asm
+++ b/data/maps/objects/CeruleanCity.asm
@@ -1,7 +1,7 @@
 CeruleanCity_Object:
 	db $f ; border block
 
-	db 10 ; warps
+	def_warps
 	warp 27, 11, 0, CERULEAN_TRASHED_HOUSE
 	warp 13, 15, 0, CERULEAN_TRADE_HOUSE
 	warp 19, 17, 0, CERULEAN_POKECENTER
@@ -13,7 +13,7 @@
 	warp 9, 11, 1, CERULEAN_BADGE_HOUSE
 	warp 9, 9, 0, CERULEAN_BADGE_HOUSE
 
-	db 6 ; signs
+	def_signs
 	sign 23, 19, 12 ; CeruleanCityText12
 	sign 17, 29, 13 ; CeruleanCityText13
 	sign 26, 25, 14 ; MartSignText
@@ -21,7 +21,7 @@
 	sign 11, 25, 16 ; CeruleanCityText16
 	sign 27, 21, 17 ; CeruleanCityText17
 
-	db 11 ; objects
+	def_objects
 	object SPRITE_BLUE, 20, 2, STAY, DOWN, 1 ; person
 	object SPRITE_ROCKET, 30, 8, STAY, NONE, 2, OPP_ROCKET, 5
 	object SPRITE_COOLTRAINER_M, 31, 20, STAY, DOWN, 3 ; person
@@ -34,14 +34,4 @@
 	object SPRITE_SUPER_NERD, 4, 12, STAY, DOWN, 10 ; person
 	object SPRITE_GUARD, 27, 12, STAY, DOWN, 11 ; person
 
-	; warp-to
-	warp_to 27, 11, CERULEAN_CITY_WIDTH ; CERULEAN_TRASHED_HOUSE
-	warp_to 13, 15, CERULEAN_CITY_WIDTH ; CERULEAN_TRADE_HOUSE
-	warp_to 19, 17, CERULEAN_CITY_WIDTH ; CERULEAN_POKECENTER
-	warp_to 30, 19, CERULEAN_CITY_WIDTH ; CERULEAN_GYM
-	warp_to 13, 25, CERULEAN_CITY_WIDTH ; BIKE_SHOP
-	warp_to 25, 25, CERULEAN_CITY_WIDTH ; CERULEAN_MART
-	warp_to 4, 11, CERULEAN_CITY_WIDTH ; CERULEAN_CAVE_1F
-	warp_to 27, 9, CERULEAN_CITY_WIDTH ; CERULEAN_TRASHED_HOUSE
-	warp_to 9, 11, CERULEAN_CITY_WIDTH ; CERULEAN_BADGE_HOUSE
-	warp_to 9, 9, CERULEAN_CITY_WIDTH ; CERULEAN_BADGE_HOUSE
+	def_warps_to CERULEAN_CITY
--- a/data/maps/objects/CeruleanGym.asm
+++ b/data/maps/objects/CeruleanGym.asm
@@ -1,18 +1,16 @@
 CeruleanGym_Object:
 	db $3 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 4, 13, 3, LAST_MAP
 	warp 5, 13, 3, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_BRUNETTE_GIRL, 4, 2, STAY, DOWN, 1, OPP_MISTY, 1
 	object SPRITE_COOLTRAINER_F, 2, 3, STAY, RIGHT, 2, OPP_JR_TRAINER_F, 1
 	object SPRITE_SWIMMER, 8, 7, STAY, LEFT, 3, OPP_SWIMMER, 1
 	object SPRITE_GYM_GUIDE, 7, 10, STAY, DOWN, 4 ; person
 
-	; warp-to
-	warp_to 4, 13, CERULEAN_GYM_WIDTH
-	warp_to 5, 13, CERULEAN_GYM_WIDTH
+	def_warps_to CERULEAN_GYM
--- a/data/maps/objects/CeruleanMart.asm
+++ b/data/maps/objects/CeruleanMart.asm
@@ -1,17 +1,15 @@
 CeruleanMart_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 5, LAST_MAP
 	warp 4, 7, 5, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_CLERK, 0, 5, STAY, RIGHT, 1 ; person
 	object SPRITE_COOLTRAINER_M, 3, 4, WALK, UP_DOWN, 2 ; person
 	object SPRITE_COOLTRAINER_F, 6, 2, WALK, LEFT_RIGHT, 3 ; person
 
-	; warp-to
-	warp_to 3, 7, CERULEAN_MART_WIDTH
-	warp_to 4, 7, CERULEAN_MART_WIDTH
+	def_warps_to CERULEAN_MART
--- a/data/maps/objects/CeruleanPokecenter.asm
+++ b/data/maps/objects/CeruleanPokecenter.asm
@@ -1,18 +1,16 @@
 CeruleanPokecenter_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 2, LAST_MAP
 	warp 4, 7, 2, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
 	object SPRITE_SUPER_NERD, 10, 5, WALK, ANY_DIR, 2 ; person
 	object SPRITE_GENTLEMAN, 4, 3, STAY, DOWN, 3 ; person
 	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
-	; warp-to
-	warp_to 3, 7, CERULEAN_POKECENTER_WIDTH
-	warp_to 4, 7, CERULEAN_POKECENTER_WIDTH
+	def_warps_to CERULEAN_POKECENTER
--- a/data/maps/objects/CeruleanTradeHouse.asm
+++ b/data/maps/objects/CeruleanTradeHouse.asm
@@ -1,16 +1,14 @@
 CeruleanTradeHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 1, LAST_MAP
 	warp 3, 7, 1, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_GRANNY, 5, 4, STAY, LEFT, 1 ; person
 	object SPRITE_GAMBLER, 1, 2, STAY, NONE, 2 ; person
 
-	; warp-to
-	warp_to 2, 7, CERULEAN_TRADE_HOUSE_WIDTH
-	warp_to 3, 7, CERULEAN_TRADE_HOUSE_WIDTH
+	def_warps_to CERULEAN_TRADE_HOUSE
--- a/data/maps/objects/CeruleanTrashedHouse.asm
+++ b/data/maps/objects/CeruleanTrashedHouse.asm
@@ -1,19 +1,16 @@
 CeruleanTrashedHouse_Object:
 	db $a ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 2, 7, 0, LAST_MAP
 	warp 3, 7, 0, LAST_MAP
 	warp 3, 0, 7, LAST_MAP
 
-	db 1 ; signs
+	def_signs
 	sign 3, 0, 3 ; CeruleanHouseTrashedText3
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_FISHING_GURU, 2, 1, STAY, DOWN, 1 ; person
 	object SPRITE_GIRL, 5, 6, WALK, LEFT_RIGHT, 2 ; person
 
-	; warp-to
-	warp_to 2, 7, CERULEAN_TRASHED_HOUSE_WIDTH
-	warp_to 3, 7, CERULEAN_TRASHED_HOUSE_WIDTH
-	warp_to 3, 0, CERULEAN_TRASHED_HOUSE_WIDTH
+	def_warps_to CERULEAN_TRASHED_HOUSE
--- a/data/maps/objects/ChampionsRoom.asm
+++ b/data/maps/objects/ChampionsRoom.asm
@@ -1,20 +1,16 @@
 ChampionsRoom_Object:
 	db $3 ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 3, 7, 1, LANCES_ROOM
 	warp 4, 7, 2, LANCES_ROOM
 	warp 3, 0, 0, HALL_OF_FAME
 	warp 4, 0, 0, HALL_OF_FAME
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_BLUE, 4, 2, STAY, DOWN, 1 ; person
 	object SPRITE_OAK, 3, 7, STAY, UP, 2 ; person
 
-	; warp-to
-	warp_to 3, 7, CHAMPIONS_ROOM_WIDTH ; LANCES_ROOM
-	warp_to 4, 7, CHAMPIONS_ROOM_WIDTH ; LANCES_ROOM
-	warp_to 3, 0, CHAMPIONS_ROOM_WIDTH ; HALL_OF_FAME
-	warp_to 4, 0, CHAMPIONS_ROOM_WIDTH ; HALL_OF_FAME
+	def_warps_to CHAMPIONS_ROOM
--- a/data/maps/objects/CinnabarGym.asm
+++ b/data/maps/objects/CinnabarGym.asm
@@ -1,13 +1,13 @@
 CinnabarGym_Object:
 	db $2e ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 16, 17, 1, LAST_MAP
 	warp 17, 17, 1, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 9 ; objects
+	def_objects
 	object SPRITE_MIDDLE_AGED_MAN, 3, 3, STAY, DOWN, 1, OPP_BLAINE, 1
 	object SPRITE_SUPER_NERD, 17, 2, STAY, DOWN, 2, OPP_SUPER_NERD, 9
 	object SPRITE_SUPER_NERD, 17, 8, STAY, DOWN, 3, OPP_BURGLAR, 4
@@ -18,6 +18,4 @@
 	object SPRITE_SUPER_NERD, 3, 8, STAY, DOWN, 8, OPP_SUPER_NERD, 12
 	object SPRITE_GYM_GUIDE, 16, 13, STAY, DOWN, 9 ; person
 
-	; warp-to
-	warp_to 16, 17, CINNABAR_GYM_WIDTH
-	warp_to 17, 17, CINNABAR_GYM_WIDTH
+	def_warps_to CINNABAR_GYM
--- a/data/maps/objects/CinnabarIsland.asm
+++ b/data/maps/objects/CinnabarIsland.asm
@@ -1,7 +1,7 @@
 CinnabarIsland_Object:
 	db $43 ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 6, 3, 1, POKEMON_MANSION_1F
 	warp 18, 3, 0, CINNABAR_GYM
 	warp 6, 9, 0, CINNABAR_LAB
@@ -8,7 +8,7 @@
 	warp 11, 11, 0, CINNABAR_POKECENTER
 	warp 15, 11, 0, CINNABAR_MART
 
-	db 5 ; signs
+	def_signs
 	sign 9, 5, 3 ; CinnabarIslandText3
 	sign 16, 11, 4 ; MartSignText
 	sign 12, 11, 5 ; PokeCenterSignText
@@ -15,13 +15,8 @@
 	sign 9, 11, 6 ; CinnabarIslandText6
 	sign 13, 3, 7 ; CinnabarIslandText7
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_GIRL, 12, 5, WALK, LEFT_RIGHT, 1 ; person
 	object SPRITE_GAMBLER, 14, 6, STAY, NONE, 2 ; person
 
-	; warp-to
-	warp_to 6, 3, CINNABAR_ISLAND_WIDTH ; POKEMON_MANSION_1F
-	warp_to 18, 3, CINNABAR_ISLAND_WIDTH ; CINNABAR_GYM
-	warp_to 6, 9, CINNABAR_ISLAND_WIDTH ; CINNABAR_LAB
-	warp_to 11, 11, CINNABAR_ISLAND_WIDTH ; CINNABAR_POKECENTER
-	warp_to 15, 11, CINNABAR_ISLAND_WIDTH ; CINNABAR_MART
+	def_warps_to CINNABAR_ISLAND
--- a/data/maps/objects/CinnabarLab.asm
+++ b/data/maps/objects/CinnabarLab.asm
@@ -1,7 +1,7 @@
 CinnabarLab_Object:
 	db $17 ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 2, 7, 2, LAST_MAP
 	warp 3, 7, 2, LAST_MAP
 	warp 8, 4, 0, CINNABAR_LAB_TRADE_ROOM
@@ -8,18 +8,13 @@
 	warp 12, 4, 0, CINNABAR_LAB_METRONOME_ROOM
 	warp 16, 4, 0, CINNABAR_LAB_FOSSIL_ROOM
 
-	db 4 ; signs
+	def_signs
 	sign 3, 2, 2 ; Lab1Text2
 	sign 9, 4, 3 ; Lab1Text3
 	sign 13, 4, 4 ; Lab1Text4
 	sign 17, 4, 5 ; Lab1Text5
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_FISHING_GURU, 1, 3, STAY, NONE, 1 ; person
 
-	; warp-to
-	warp_to 2, 7, CINNABAR_LAB_WIDTH
-	warp_to 3, 7, CINNABAR_LAB_WIDTH
-	warp_to 8, 4, CINNABAR_LAB_WIDTH ; CINNABAR_LAB_TRADE_ROOM
-	warp_to 12, 4, CINNABAR_LAB_WIDTH ; CINNABAR_LAB_METRONOME_ROOM
-	warp_to 16, 4, CINNABAR_LAB_WIDTH ; CINNABAR_LAB_FOSSIL_ROOM
+	def_warps_to CINNABAR_LAB
--- a/data/maps/objects/CinnabarLabFossilRoom.asm
+++ b/data/maps/objects/CinnabarLabFossilRoom.asm
@@ -1,16 +1,14 @@
 CinnabarLabFossilRoom_Object:
 	db $17 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 4, CINNABAR_LAB
 	warp 3, 7, 4, CINNABAR_LAB
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_SCIENTIST, 5, 2, WALK, LEFT_RIGHT, 1 ; person
 	object SPRITE_SCIENTIST, 7, 6, STAY, UP, 2 ; person
 
-	; warp-to
-	warp_to 2, 7, CINNABAR_LAB_FOSSIL_ROOM_WIDTH ; CINNABAR_LAB
-	warp_to 3, 7, CINNABAR_LAB_FOSSIL_ROOM_WIDTH ; CINNABAR_LAB
+	def_warps_to CINNABAR_LAB_FOSSIL_ROOM
--- a/data/maps/objects/CinnabarLabMetronomeRoom.asm
+++ b/data/maps/objects/CinnabarLabMetronomeRoom.asm
@@ -1,19 +1,17 @@
 CinnabarLabMetronomeRoom_Object:
 	db $17 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 3, CINNABAR_LAB
 	warp 3, 7, 3, CINNABAR_LAB
 
-	db 3 ; signs
+	def_signs
 	sign 0, 4, 3 ; Lab3Text3
 	sign 1, 4, 4 ; Lab3Text4
 	sign 2, 1, 5 ; Lab3Text5
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_SCIENTIST, 7, 2, STAY, DOWN, 1 ; person
 	object SPRITE_SCIENTIST, 2, 3, WALK, LEFT_RIGHT, 2 ; person
 
-	; warp-to
-	warp_to 2, 7, CINNABAR_LAB_METRONOME_ROOM_WIDTH ; CINNABAR_LAB
-	warp_to 3, 7, CINNABAR_LAB_METRONOME_ROOM_WIDTH ; CINNABAR_LAB
+	def_warps_to CINNABAR_LAB_METRONOME_ROOM
--- a/data/maps/objects/CinnabarLabTradeRoom.asm
+++ b/data/maps/objects/CinnabarLabTradeRoom.asm
@@ -1,17 +1,15 @@
 CinnabarLabTradeRoom_Object:
 	db $17 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 2, CINNABAR_LAB
 	warp 3, 7, 2, CINNABAR_LAB
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_SUPER_NERD, 3, 2, STAY, DOWN, 1 ; person
 	object SPRITE_GRAMPS, 1, 4, STAY, NONE, 2 ; person
 	object SPRITE_BEAUTY, 5, 5, STAY, UP, 3 ; person
 
-	; warp-to
-	warp_to 2, 7, CINNABAR_LAB_TRADE_ROOM_WIDTH ; CINNABAR_LAB
-	warp_to 3, 7, CINNABAR_LAB_TRADE_ROOM_WIDTH ; CINNABAR_LAB
+	def_warps_to CINNABAR_LAB_TRADE_ROOM
--- a/data/maps/objects/CinnabarMart.asm
+++ b/data/maps/objects/CinnabarMart.asm
@@ -1,17 +1,15 @@
 CinnabarMart_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 4, LAST_MAP
 	warp 4, 7, 4, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_CLERK, 0, 5, STAY, RIGHT, 1 ; person
 	object SPRITE_ERIKA, 6, 2, STAY, NONE, 2 ; person
 	object SPRITE_SCIENTIST, 3, 4, STAY, NONE, 3 ; person
 
-	; warp-to
-	warp_to 3, 7, CINNABAR_MART_WIDTH
-	warp_to 4, 7, CINNABAR_MART_WIDTH
+	def_warps_to CINNABAR_MART
--- a/data/maps/objects/CinnabarPokecenter.asm
+++ b/data/maps/objects/CinnabarPokecenter.asm
@@ -1,18 +1,16 @@
 CinnabarPokecenter_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 3, LAST_MAP
 	warp 4, 7, 3, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
 	object SPRITE_COOLTRAINER_F, 9, 4, WALK, ANY_DIR, 2 ; person
 	object SPRITE_GENTLEMAN, 2, 6, STAY, NONE, 3 ; person
 	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
-	; warp-to
-	warp_to 3, 7, CINNABAR_POKECENTER_WIDTH
-	warp_to 4, 7, CINNABAR_POKECENTER_WIDTH
+	def_warps_to CINNABAR_POKECENTER
--- a/data/maps/objects/Colosseum.asm
+++ b/data/maps/objects/Colosseum.asm
@@ -1,9 +1,11 @@
 Colosseum_Object:
 	db $e ; border block
 
-	db 0 ; warps
+	def_warps
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_RED, 2, 2, STAY, 0, 1 ; person
+
+	def_warps_to COLOSSEUM
--- a/data/maps/objects/CopycatsHouse1F.asm
+++ b/data/maps/objects/CopycatsHouse1F.asm
@@ -1,19 +1,16 @@
 CopycatsHouse1F_Object:
 	db $a ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 2, 7, 0, LAST_MAP
 	warp 3, 7, 0, LAST_MAP
 	warp 7, 1, 0, COPYCATS_HOUSE_2F
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_MIDDLE_AGED_WOMAN, 2, 2, STAY, DOWN, 1 ; person
 	object SPRITE_MIDDLE_AGED_MAN, 5, 4, STAY, LEFT, 2 ; person
 	object SPRITE_FAIRY, 1, 4, WALK, UP_DOWN, 3 ; person
 
-	; warp-to
-	warp_to 2, 7, COPYCATS_HOUSE_1F_WIDTH
-	warp_to 3, 7, COPYCATS_HOUSE_1F_WIDTH
-	warp_to 7, 1, COPYCATS_HOUSE_1F_WIDTH ; COPYCATS_HOUSE_2F
+	def_warps_to COPYCATS_HOUSE_1F
--- a/data/maps/objects/CopycatsHouse2F.asm
+++ b/data/maps/objects/CopycatsHouse2F.asm
@@ -1,14 +1,14 @@
 CopycatsHouse2F_Object:
 	db $a ; border block
 
-	db 1 ; warps
+	def_warps
 	warp 7, 1, 2, COPYCATS_HOUSE_1F
 
-	db 2 ; signs
+	def_signs
 	sign 3, 5, 6 ; CopycatsHouse2FText6
 	sign 0, 1, 7 ; CopycatsHouse2FText7
 
-	db 5 ; objects
+	def_objects
 	object SPRITE_BRUNETTE_GIRL, 4, 3, WALK, ANY_DIR, 1 ; person
 	object SPRITE_BIRD, 4, 6, WALK, LEFT_RIGHT, 2 ; person
 	object SPRITE_MONSTER, 5, 1, STAY, DOWN, 3 ; person
@@ -15,5 +15,4 @@
 	object SPRITE_BIRD, 2, 0, STAY, DOWN, 4 ; person
 	object SPRITE_FAIRY, 1, 6, STAY, RIGHT, 5 ; person
 
-	; warp-to
-	warp_to 7, 1, COPYCATS_HOUSE_2F_WIDTH ; COPYCATS_HOUSE_1F
+	def_warps_to COPYCATS_HOUSE_2F
--- a/data/maps/objects/Daycare.asm
+++ b/data/maps/objects/Daycare.asm
@@ -1,15 +1,13 @@
 Daycare_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 4, LAST_MAP
 	warp 3, 7, 4, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_GENTLEMAN, 2, 3, STAY, RIGHT, 1 ; person
 
-	; warp-to
-	warp_to 2, 7, DAYCARE_WIDTH
-	warp_to 3, 7, DAYCARE_WIDTH
+	def_warps_to DAYCARE
--- a/data/maps/objects/DiglettsCave.asm
+++ b/data/maps/objects/DiglettsCave.asm
@@ -1,14 +1,12 @@
 DiglettsCave_Object:
 	db $19 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 5, 5, 2, DIGLETTS_CAVE_ROUTE_2
 	warp 37, 31, 2, DIGLETTS_CAVE_ROUTE_11
 
-	db 0 ; signs
+	def_signs
 
-	db 0 ; objects
+	def_objects
 
-	; warp-to
-	warp_to 5, 5, DIGLETTS_CAVE_WIDTH ; DIGLETTS_CAVE_ROUTE_2
-	warp_to 37, 31, DIGLETTS_CAVE_WIDTH ; DIGLETTS_CAVE_ROUTE_11
+	def_warps_to DIGLETTS_CAVE
--- a/data/maps/objects/DiglettsCaveRoute11.asm
+++ b/data/maps/objects/DiglettsCaveRoute11.asm
@@ -1,17 +1,14 @@
 DiglettsCaveRoute11_Object:
 	db $7d ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 2, 7, 4, LAST_MAP
 	warp 3, 7, 4, LAST_MAP
 	warp 4, 4, 1, DIGLETTS_CAVE
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_GAMBLER, 2, 3, STAY, NONE, 1 ; person
 
-	; warp-to
-	warp_to 2, 7, DIGLETTS_CAVE_ROUTE_11_WIDTH
-	warp_to 3, 7, DIGLETTS_CAVE_ROUTE_11_WIDTH
-	warp_to 4, 4, DIGLETTS_CAVE_ROUTE_11_WIDTH ; DIGLETTS_CAVE
+	def_warps_to DIGLETTS_CAVE_ROUTE_11
--- a/data/maps/objects/DiglettsCaveRoute2.asm
+++ b/data/maps/objects/DiglettsCaveRoute2.asm
@@ -1,17 +1,14 @@
 DiglettsCaveRoute2_Object:
 	db $7d ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 2, 7, 0, LAST_MAP
 	warp 3, 7, 0, LAST_MAP
 	warp 4, 4, 0, DIGLETTS_CAVE
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_FISHING_GURU, 3, 3, STAY, NONE, 1 ; person
 
-	; warp-to
-	warp_to 2, 7, DIGLETTS_CAVE_ROUTE_2_WIDTH
-	warp_to 3, 7, DIGLETTS_CAVE_ROUTE_2_WIDTH
-	warp_to 4, 4, DIGLETTS_CAVE_ROUTE_2_WIDTH ; DIGLETTS_CAVE
+	def_warps_to DIGLETTS_CAVE_ROUTE_2
--- a/data/maps/objects/FightingDojo.asm
+++ b/data/maps/objects/FightingDojo.asm
@@ -1,13 +1,13 @@
 FightingDojo_Object:
 	db $3 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 4, 11, 1, LAST_MAP
 	warp 5, 11, 1, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 7 ; objects
+	def_objects
 	object SPRITE_HIKER, 5, 3, STAY, DOWN, 1, OPP_BLACKBELT, 1
 	object SPRITE_HIKER, 3, 4, STAY, RIGHT, 2, OPP_BLACKBELT, 2
 	object SPRITE_HIKER, 3, 6, STAY, RIGHT, 3, OPP_BLACKBELT, 3
@@ -16,6 +16,4 @@
 	object SPRITE_POKE_BALL, 4, 1, STAY, NONE, 6 ; person
 	object SPRITE_POKE_BALL, 5, 1, STAY, NONE, 7 ; person
 
-	; warp-to
-	warp_to 4, 11, FIGHTING_DOJO_WIDTH
-	warp_to 5, 11, FIGHTING_DOJO_WIDTH
+	def_warps_to FIGHTING_DOJO
--- a/data/maps/objects/FuchsiaBillsGrandpasHouse.asm
+++ b/data/maps/objects/FuchsiaBillsGrandpasHouse.asm
@@ -1,17 +1,15 @@
 FuchsiaBillsGrandpasHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 1, LAST_MAP
 	warp 3, 7, 1, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_MIDDLE_AGED_WOMAN, 2, 3, STAY, RIGHT, 1 ; person
 	object SPRITE_GAMBLER, 7, 2, STAY, UP, 2 ; person
 	object SPRITE_YOUNGSTER, 5, 5, STAY, NONE, 3 ; person
 
-	; warp-to
-	warp_to 2, 7, FUCHSIA_BILLS_GRANDPAS_HOUSE_WIDTH
-	warp_to 3, 7, FUCHSIA_BILLS_GRANDPAS_HOUSE_WIDTH
+	def_warps_to FUCHSIA_BILLS_GRANDPAS_HOUSE
--- a/data/maps/objects/FuchsiaCity.asm
+++ b/data/maps/objects/FuchsiaCity.asm
@@ -1,7 +1,7 @@
 FuchsiaCity_Object:
 	db $f ; border block
 
-	db 9 ; warps
+	def_warps
 	warp 5, 13, 0, FUCHSIA_MART
 	warp 11, 27, 0, FUCHSIA_BILLS_GRANDPAS_HOUSE
 	warp 19, 27, 0, FUCHSIA_POKECENTER
@@ -12,7 +12,7 @@
 	warp 31, 27, 1, FUCHSIA_GOOD_ROD_HOUSE
 	warp 31, 24, 0, FUCHSIA_GOOD_ROD_HOUSE
 
-	db 14 ; signs
+	def_signs
 	sign 15, 23, 11 ; FuchsiaCityText11
 	sign 25, 15, 12 ; FuchsiaCityText12
 	sign 17, 5, 13 ; FuchsiaCityText13
@@ -28,7 +28,7 @@
 	sign 13, 15, 23 ; FuchsiaCityText23
 	sign 7, 7, 24 ; FuchsiaCityText24
 
-	db 10 ; objects
+	def_objects
 	object SPRITE_YOUNGSTER, 10, 12, WALK, LEFT_RIGHT, 1 ; person
 	object SPRITE_GAMBLER, 28, 17, WALK, LEFT_RIGHT, 2 ; person
 	object SPRITE_FISHER, 30, 14, STAY, DOWN, 3 ; person
@@ -40,13 +40,4 @@
 	object SPRITE_SEEL, 8, 17, WALK, ANY_DIR, 9 ; person
 	object SPRITE_FOSSIL, 6, 5, STAY, NONE, 10 ; person
 
-	; warp-to
-	warp_to 5, 13, FUCHSIA_CITY_WIDTH ; FUCHSIA_MART
-	warp_to 11, 27, FUCHSIA_CITY_WIDTH ; FUCHSIA_BILLS_GRANDPAS_HOUSE
-	warp_to 19, 27, FUCHSIA_CITY_WIDTH ; FUCHSIA_POKECENTER
-	warp_to 27, 27, FUCHSIA_CITY_WIDTH ; WARDENS_HOUSE
-	warp_to 18, 3, FUCHSIA_CITY_WIDTH ; SAFARI_ZONE_GATE
-	warp_to 5, 27, FUCHSIA_CITY_WIDTH ; FUCHSIA_GYM
-	warp_to 22, 13, FUCHSIA_CITY_WIDTH ; FUCHSIA_MEETING_ROOM
-	warp_to 31, 27, FUCHSIA_CITY_WIDTH ; FUCHSIA_GOOD_ROD_HOUSE
-	warp_to 31, 24, FUCHSIA_CITY_WIDTH ; FUCHSIA_GOOD_ROD_HOUSE
+	def_warps_to FUCHSIA_CITY
--- a/data/maps/objects/FuchsiaGoodRodHouse.asm
+++ b/data/maps/objects/FuchsiaGoodRodHouse.asm
@@ -1,17 +1,14 @@
 FuchsiaGoodRodHouse_Object:
 	db $c ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 2, 0, 8, LAST_MAP
 	warp 2, 7, 7, LAST_MAP
 	warp 3, 7, 7, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_FISHING_GURU, 5, 3, STAY, RIGHT, 1 ; person
 
-	; warp-to
-	warp_to 2, 0, FUCHSIA_GOOD_ROD_HOUSE_WIDTH
-	warp_to 2, 7, FUCHSIA_GOOD_ROD_HOUSE_WIDTH
-	warp_to 3, 7, FUCHSIA_GOOD_ROD_HOUSE_WIDTH
+	def_warps_to FUCHSIA_GOOD_ROD_HOUSE
--- a/data/maps/objects/FuchsiaGym.asm
+++ b/data/maps/objects/FuchsiaGym.asm
@@ -1,13 +1,13 @@
 FuchsiaGym_Object:
 	db $3 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 4, 17, 5, LAST_MAP
 	warp 5, 17, 5, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 8 ; objects
+	def_objects
 	object SPRITE_KOGA, 4, 10, STAY, DOWN, 1, OPP_KOGA, 1
 	object SPRITE_ROCKER, 8, 13, STAY, DOWN, 2, OPP_JUGGLER, 7
 	object SPRITE_ROCKER, 7, 8, STAY, RIGHT, 3, OPP_JUGGLER, 3
@@ -17,6 +17,4 @@
 	object SPRITE_ROCKER, 2, 7, STAY, LEFT, 7, OPP_JUGGLER, 4
 	object SPRITE_GYM_GUIDE, 7, 15, STAY, DOWN, 8 ; person
 
-	; warp-to
-	warp_to 4, 17, FUCHSIA_GYM_WIDTH
-	warp_to 5, 17, FUCHSIA_GYM_WIDTH
+	def_warps_to FUCHSIA_GYM
--- a/data/maps/objects/FuchsiaMart.asm
+++ b/data/maps/objects/FuchsiaMart.asm
@@ -1,17 +1,15 @@
 FuchsiaMart_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 0, LAST_MAP
 	warp 4, 7, 0, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_CLERK, 0, 5, STAY, RIGHT, 1 ; person
 	object SPRITE_MIDDLE_AGED_MAN, 4, 2, STAY, NONE, 2 ; person
 	object SPRITE_COOLTRAINER_F, 6, 5, WALK, UP_DOWN, 3 ; person
 
-	; warp-to
-	warp_to 3, 7, FUCHSIA_MART_WIDTH
-	warp_to 4, 7, FUCHSIA_MART_WIDTH
+	def_warps_to FUCHSIA_MART
--- a/data/maps/objects/FuchsiaMeetingRoom.asm
+++ b/data/maps/objects/FuchsiaMeetingRoom.asm
@@ -1,17 +1,15 @@
 FuchsiaMeetingRoom_Object:
 	db $17 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 4, 7, 6, LAST_MAP
 	warp 5, 7, 6, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_SAFARI_ZONE_WORKER, 4, 1, STAY, DOWN, 1 ; person
 	object SPRITE_SAFARI_ZONE_WORKER, 0, 2, STAY, UP, 2 ; person
 	object SPRITE_SAFARI_ZONE_WORKER, 10, 1, STAY, DOWN, 3 ; person
 
-	; warp-to
-	warp_to 4, 7, FUCHSIA_MEETING_ROOM_WIDTH
-	warp_to 5, 7, FUCHSIA_MEETING_ROOM_WIDTH
+	def_warps_to FUCHSIA_MEETING_ROOM
--- a/data/maps/objects/FuchsiaPokecenter.asm
+++ b/data/maps/objects/FuchsiaPokecenter.asm
@@ -1,18 +1,16 @@
 FuchsiaPokecenter_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 2, LAST_MAP
 	warp 4, 7, 2, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
 	object SPRITE_ROCKER, 2, 3, STAY, NONE, 2 ; person
 	object SPRITE_COOLTRAINER_F, 6, 5, WALK, LEFT_RIGHT, 3 ; person
 	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
-	; warp-to
-	warp_to 3, 7, FUCHSIA_POKECENTER_WIDTH
-	warp_to 4, 7, FUCHSIA_POKECENTER_WIDTH
+	def_warps_to FUCHSIA_POKECENTER
--- a/data/maps/objects/GameCorner.asm
+++ b/data/maps/objects/GameCorner.asm
@@ -1,15 +1,15 @@
 GameCorner_Object:
 	db $f ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 15, 17, 7, LAST_MAP
 	warp 16, 17, 7, LAST_MAP
 	warp 17, 4, 1, ROCKET_HIDEOUT_B1F
 
-	db 1 ; signs
+	def_signs
 	sign 9, 4, 12 ; CeladonGameCornerText12
 
-	db 11 ; objects
+	def_objects
 	object SPRITE_BEAUTY, 2, 6, STAY, DOWN, 1 ; person
 	object SPRITE_CLERK, 5, 6, STAY, DOWN, 2 ; person
 	object SPRITE_MIDDLE_AGED_MAN, 2, 10, STAY, LEFT, 3 ; person
@@ -22,7 +22,4 @@
 	object SPRITE_GENTLEMAN, 17, 13, STAY, RIGHT, 10 ; person
 	object SPRITE_ROCKET, 9, 5, STAY, UP, 11, OPP_ROCKET, 7
 
-	; warp-to
-	warp_to 15, 17, GAME_CORNER_WIDTH
-	warp_to 16, 17, GAME_CORNER_WIDTH
-	warp_to 17, 4, GAME_CORNER_WIDTH ; ROCKET_HIDEOUT_B1F
+	def_warps_to GAME_CORNER
--- a/data/maps/objects/GameCornerPrizeRoom.asm
+++ b/data/maps/objects/GameCornerPrizeRoom.asm
@@ -1,19 +1,17 @@
 GameCornerPrizeRoom_Object:
 	db $f ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 4, 7, 9, LAST_MAP
 	warp 5, 7, 9, LAST_MAP
 
-	db 3 ; signs
+	def_signs
 	sign 2, 2, 3 ; CeladonPrizeRoomText3
 	sign 4, 2, 4 ; CeladonPrizeRoomText4
 	sign 6, 2, 5 ; CeladonPrizeRoomText5
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_BALDING_GUY, 1, 4, STAY, NONE, 1 ; person
 	object SPRITE_GAMBLER, 7, 3, WALK, LEFT_RIGHT, 2 ; person
 
-	; warp-to
-	warp_to 4, 7, GAME_CORNER_PRIZE_ROOM_WIDTH
-	warp_to 5, 7, GAME_CORNER_PRIZE_ROOM_WIDTH
+	def_warps_to GAME_CORNER_PRIZE_ROOM
--- a/data/maps/objects/HallOfFame.asm
+++ b/data/maps/objects/HallOfFame.asm
@@ -1,15 +1,13 @@
 HallOfFame_Object:
 	db $3 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 4, 7, 2, CHAMPIONS_ROOM
 	warp 5, 7, 3, CHAMPIONS_ROOM
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_OAK, 5, 2, STAY, DOWN, 1 ; person
 
-	; warp-to
-	warp_to 4, 7, HALL_OF_FAME_WIDTH ; CHAMPIONS_ROOM
-	warp_to 5, 7, HALL_OF_FAME_WIDTH ; CHAMPIONS_ROOM
+	def_warps_to HALL_OF_FAME
--- a/data/maps/objects/IndigoPlateau.asm
+++ b/data/maps/objects/IndigoPlateau.asm
@@ -1,14 +1,12 @@
 IndigoPlateau_Object:
 	db $e ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 9, 5, 0, INDIGO_PLATEAU_LOBBY
 	warp 10, 5, 0, INDIGO_PLATEAU_LOBBY
 
-	db 0 ; signs
+	def_signs
 
-	db 0 ; objects
+	def_objects
 
-	; warp-to
-	warp_to 9, 5, INDIGO_PLATEAU_WIDTH ; INDIGO_PLATEAU_LOBBY
-	warp_to 10, 5, INDIGO_PLATEAU_WIDTH ; INDIGO_PLATEAU_LOBBY
+	def_warps_to INDIGO_PLATEAU
--- a/data/maps/objects/IndigoPlateauLobby.asm
+++ b/data/maps/objects/IndigoPlateauLobby.asm
@@ -1,14 +1,14 @@
 IndigoPlateauLobby_Object:
 	db $0 ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 7, 11, 0, LAST_MAP
 	warp 8, 11, 1, LAST_MAP
 	warp 8, 0, 0, LORELEIS_ROOM
 
-	db 0 ; signs
+	def_signs
 
-	db 5 ; objects
+	def_objects
 	object SPRITE_NURSE, 7, 5, STAY, DOWN, 1 ; person
 	object SPRITE_GYM_GUIDE, 4, 9, STAY, RIGHT, 2 ; person
 	object SPRITE_COOLTRAINER_F, 5, 1, STAY, DOWN, 3 ; person
@@ -15,7 +15,4 @@
 	object SPRITE_CLERK, 0, 5, STAY, RIGHT, 4 ; person
 	object SPRITE_LINK_RECEPTIONIST, 13, 6, STAY, DOWN, 5 ; person
 
-	; warp-to
-	warp_to 7, 11, INDIGO_PLATEAU_LOBBY_WIDTH
-	warp_to 8, 11, INDIGO_PLATEAU_LOBBY_WIDTH
-	warp_to 8, 0, INDIGO_PLATEAU_LOBBY_WIDTH ; LORELEIS_ROOM
+	def_warps_to INDIGO_PLATEAU_LOBBY
--- a/data/maps/objects/LancesRoom.asm
+++ b/data/maps/objects/LancesRoom.asm
@@ -1,17 +1,14 @@
 LancesRoom_Object:
 	db $3 ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 24, 16, 2, AGATHAS_ROOM
 	warp 5, 0, 0, CHAMPIONS_ROOM
 	warp 6, 0, 0, CHAMPIONS_ROOM
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_LANCE, 6, 1, STAY, DOWN, 1, OPP_LANCE, 1
 
-	; warp-to
-	warp_to 24, 16, LANCES_ROOM_WIDTH ; AGATHAS_ROOM
-	warp_to 5, 0, LANCES_ROOM_WIDTH ; CHAMPIONS_ROOM
-	warp_to 6, 0, LANCES_ROOM_WIDTH ; CHAMPIONS_ROOM
+	def_warps_to LANCES_ROOM
--- a/data/maps/objects/LavenderCuboneHouse.asm
+++ b/data/maps/objects/LavenderCuboneHouse.asm
@@ -1,16 +1,14 @@
 LavenderCuboneHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 4, LAST_MAP
 	warp 3, 7, 4, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_MONSTER, 3, 5, STAY, UP, 1 ; person
 	object SPRITE_BRUNETTE_GIRL, 2, 4, STAY, RIGHT, 2 ; person
 
-	; warp-to
-	warp_to 2, 7, LAVENDER_CUBONE_HOUSE_WIDTH
-	warp_to 3, 7, LAVENDER_CUBONE_HOUSE_WIDTH
+	def_warps_to LAVENDER_CUBONE_HOUSE
--- a/data/maps/objects/LavenderMart.asm
+++ b/data/maps/objects/LavenderMart.asm
@@ -1,17 +1,15 @@
 LavenderMart_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 3, LAST_MAP
 	warp 4, 7, 3, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_CLERK, 0, 5, STAY, RIGHT, 1 ; person
 	object SPRITE_BALDING_GUY, 3, 4, STAY, NONE, 2 ; person
 	object SPRITE_COOLTRAINER_M, 7, 2, STAY, NONE, 3 ; person
 
-	; warp-to
-	warp_to 3, 7, LAVENDER_MART_WIDTH
-	warp_to 4, 7, LAVENDER_MART_WIDTH
+	def_warps_to LAVENDER_MART
--- a/data/maps/objects/LavenderPokecenter.asm
+++ b/data/maps/objects/LavenderPokecenter.asm
@@ -1,18 +1,16 @@
 LavenderPokecenter_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 0, LAST_MAP
 	warp 4, 7, 0, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
 	object SPRITE_GENTLEMAN, 5, 3, STAY, NONE, 2 ; person
 	object SPRITE_LITTLE_GIRL, 2, 6, WALK, UP_DOWN, 3 ; person
 	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
-	; warp-to
-	warp_to 3, 7, LAVENDER_POKECENTER_WIDTH
-	warp_to 4, 7, LAVENDER_POKECENTER_WIDTH
+	def_warps_to LAVENDER_POKECENTER
--- a/data/maps/objects/LavenderTown.asm
+++ b/data/maps/objects/LavenderTown.asm
@@ -1,7 +1,7 @@
 LavenderTown_Object:
 	db $2c ; border block
 
-	db 6 ; warps
+	def_warps
 	warp 3, 5, 0, LAVENDER_POKECENTER
 	warp 14, 5, 0, POKEMON_TOWER_1F
 	warp 7, 9, 0, MR_FUJIS_HOUSE
@@ -9,7 +9,7 @@
 	warp 3, 13, 0, LAVENDER_CUBONE_HOUSE
 	warp 7, 13, 0, NAME_RATERS_HOUSE
 
-	db 6 ; signs
+	def_signs
 	sign 11, 9, 4 ; LavenderTownText4
 	sign 9, 3, 5 ; LavenderTownText5
 	sign 16, 13, 6 ; MartSignText
@@ -17,15 +17,9 @@
 	sign 5, 9, 8 ; LavenderTownText8
 	sign 17, 7, 9 ; LavenderTownText9
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_LITTLE_GIRL, 15, 9, WALK, ANY_DIR, 1 ; person
 	object SPRITE_COOLTRAINER_M, 9, 10, STAY, NONE, 2 ; person
 	object SPRITE_SUPER_NERD, 8, 7, WALK, LEFT_RIGHT, 3 ; person
 
-	; warp-to
-	warp_to 3, 5, LAVENDER_TOWN_WIDTH ; LAVENDER_POKECENTER
-	warp_to 14, 5, LAVENDER_TOWN_WIDTH ; POKEMON_TOWER_1F
-	warp_to 7, 9, LAVENDER_TOWN_WIDTH ; MR_FUJIS_HOUSE
-	warp_to 15, 13, LAVENDER_TOWN_WIDTH ; LAVENDER_MART
-	warp_to 3, 13, LAVENDER_TOWN_WIDTH ; LAVENDER_CUBONE_HOUSE
-	warp_to 7, 13, LAVENDER_TOWN_WIDTH ; NAME_RATERS_HOUSE
+	def_warps_to LAVENDER_TOWN
--- a/data/maps/objects/LoreleisRoom.asm
+++ b/data/maps/objects/LoreleisRoom.asm
@@ -1,19 +1,15 @@
 LoreleisRoom_Object:
 	db $3 ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 4, 11, 2, INDIGO_PLATEAU_LOBBY
 	warp 5, 11, 2, INDIGO_PLATEAU_LOBBY
 	warp 4, 0, 0, BRUNOS_ROOM
 	warp 5, 0, 1, BRUNOS_ROOM
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_LORELEI, 5, 2, STAY, DOWN, 1, OPP_LORELEI, 1
 
-	; warp-to
-	warp_to 4, 11, LORELEIS_ROOM_WIDTH ; INDIGO_PLATEAU_LOBBY
-	warp_to 5, 11, LORELEIS_ROOM_WIDTH ; INDIGO_PLATEAU_LOBBY
-	warp_to 4, 0, LORELEIS_ROOM_WIDTH ; BRUNOS_ROOM
-	warp_to 5, 0, LORELEIS_ROOM_WIDTH ; BRUNOS_ROOM
+	def_warps_to LORELEIS_ROOM
--- a/data/maps/objects/MrFujisHouse.asm
+++ b/data/maps/objects/MrFujisHouse.asm
@@ -1,13 +1,13 @@
 MrFujisHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 2, LAST_MAP
 	warp 3, 7, 2, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 6 ; objects
+	def_objects
 	object SPRITE_SUPER_NERD, 3, 5, STAY, NONE, 1 ; person
 	object SPRITE_LITTLE_GIRL, 6, 3, STAY, DOWN, 2 ; person
 	object SPRITE_MONSTER, 6, 4, STAY, UP, 3 ; person
@@ -15,6 +15,4 @@
 	object SPRITE_MR_FUJI, 3, 1, STAY, NONE, 5 ; person
 	object SPRITE_POKEDEX, 3, 3, STAY, NONE, 6 ; person
 
-	; warp-to
-	warp_to 2, 7, MR_FUJIS_HOUSE_WIDTH
-	warp_to 3, 7, MR_FUJIS_HOUSE_WIDTH
+	def_warps_to MR_FUJIS_HOUSE
--- a/data/maps/objects/MrPsychicsHouse.asm
+++ b/data/maps/objects/MrPsychicsHouse.asm
@@ -1,15 +1,13 @@
 MrPsychicsHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 7, LAST_MAP
 	warp 3, 7, 7, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_FISHING_GURU, 5, 3, STAY, LEFT, 1 ; person
 
-	; warp-to
-	warp_to 2, 7, MR_PSYCHICS_HOUSE_WIDTH
-	warp_to 3, 7, MR_PSYCHICS_HOUSE_WIDTH
+	def_warps_to MR_PSYCHICS_HOUSE
--- a/data/maps/objects/MtMoon1F.asm
+++ b/data/maps/objects/MtMoon1F.asm
@@ -1,7 +1,7 @@
 MtMoon1F_Object:
 	db $3 ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 14, 35, 1, LAST_MAP
 	warp 15, 35, 1, LAST_MAP
 	warp 5, 5, 0, MT_MOON_B1F
@@ -8,10 +8,10 @@
 	warp 17, 11, 2, MT_MOON_B1F
 	warp 25, 15, 3, MT_MOON_B1F
 
-	db 1 ; signs
+	def_signs
 	sign 15, 23, 14 ; MtMoon1Text14
 
-	db 13 ; objects
+	def_objects
 	object SPRITE_HIKER, 5, 6, STAY, DOWN, 1, OPP_HIKER, 1
 	object SPRITE_YOUNGSTER, 12, 16, STAY, RIGHT, 2, OPP_YOUNGSTER, 3
 	object SPRITE_COOLTRAINER_F, 30, 4, STAY, DOWN, 3, OPP_LASS, 5
@@ -26,9 +26,4 @@
 	object SPRITE_POKE_BALL, 20, 33, STAY, NONE, 12, POTION
 	object SPRITE_POKE_BALL, 5, 32, STAY, NONE, 13, TM_WATER_GUN
 
-	; warp-to
-	warp_to 14, 35, MT_MOON_1F_WIDTH
-	warp_to 15, 35, MT_MOON_1F_WIDTH
-	warp_to 5, 5, MT_MOON_1F_WIDTH ; MT_MOON_B1F
-	warp_to 17, 11, MT_MOON_1F_WIDTH ; MT_MOON_B1F
-	warp_to 25, 15, MT_MOON_1F_WIDTH ; MT_MOON_B1F
+	def_warps_to MT_MOON_1F
--- a/data/maps/objects/MtMoonB1F.asm
+++ b/data/maps/objects/MtMoonB1F.asm
@@ -1,7 +1,7 @@
 MtMoonB1F_Object:
 	db $3 ; border block
 
-	db 8 ; warps
+	def_warps
 	warp 5, 5, 2, MT_MOON_1F
 	warp 17, 11, 0, MT_MOON_B2F
 	warp 25, 9, 3, MT_MOON_1F
@@ -11,16 +11,8 @@
 	warp 23, 3, 3, MT_MOON_B2F
 	warp 27, 3, 2, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 0 ; objects
+	def_objects
 
-	; warp-to
-	warp_to 5, 5, MT_MOON_B1F_WIDTH ; MT_MOON_1F
-	warp_to 17, 11, MT_MOON_B1F_WIDTH ; MT_MOON_B2F
-	warp_to 25, 9, MT_MOON_B1F_WIDTH ; MT_MOON_1F
-	warp_to 25, 15, MT_MOON_B1F_WIDTH ; MT_MOON_1F
-	warp_to 21, 17, MT_MOON_B1F_WIDTH ; MT_MOON_B2F
-	warp_to 13, 27, MT_MOON_B1F_WIDTH ; MT_MOON_B2F
-	warp_to 23, 3, MT_MOON_B1F_WIDTH ; MT_MOON_B2F
-	warp_to 27, 3, MT_MOON_B1F_WIDTH
+	def_warps_to MT_MOON_B1F
--- a/data/maps/objects/MtMoonB2F.asm
+++ b/data/maps/objects/MtMoonB2F.asm
@@ -1,15 +1,15 @@
 MtMoonB2F_Object:
 	db $3 ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 25, 9, 1, MT_MOON_B1F
 	warp 21, 17, 4, MT_MOON_B1F
 	warp 15, 27, 5, MT_MOON_B1F
 	warp 5, 7, 6, MT_MOON_B1F
 
-	db 0 ; signs
+	def_signs
 
-	db 9 ; objects
+	def_objects
 	object SPRITE_SUPER_NERD, 12, 8, STAY, RIGHT, 1, OPP_SUPER_NERD, 2
 	object SPRITE_ROCKET, 11, 16, STAY, DOWN, 2, OPP_ROCKET, 1
 	object SPRITE_ROCKET, 15, 22, STAY, DOWN, 3, OPP_ROCKET, 2
@@ -20,8 +20,4 @@
 	object SPRITE_POKE_BALL, 25, 21, STAY, NONE, 8, HP_UP
 	object SPRITE_POKE_BALL, 29, 5, STAY, NONE, 9, TM_MEGA_PUNCH
 
-	; warp-to
-	warp_to 25, 9, MT_MOON_B2F_WIDTH ; MT_MOON_B1F
-	warp_to 21, 17, MT_MOON_B2F_WIDTH ; MT_MOON_B1F
-	warp_to 15, 27, MT_MOON_B2F_WIDTH ; MT_MOON_B1F
-	warp_to 5, 7, MT_MOON_B2F_WIDTH ; MT_MOON_B1F
+	def_warps_to MT_MOON_B2F
--- a/data/maps/objects/MtMoonPokecenter.asm
+++ b/data/maps/objects/MtMoonPokecenter.asm
@@ -1,13 +1,13 @@
 MtMoonPokecenter_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 0, LAST_MAP
 	warp 4, 7, 0, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 6 ; objects
+	def_objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
 	object SPRITE_YOUNGSTER, 4, 3, STAY, UP, 2 ; person
 	object SPRITE_GENTLEMAN, 7, 3, STAY, UP, 3 ; person
@@ -15,6 +15,4 @@
 	object SPRITE_CLIPBOARD, 7, 2, STAY, NONE, 5 ; person
 	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 6 ; person
 
-	; warp-to
-	warp_to 3, 7, MT_MOON_POKECENTER_WIDTH
-	warp_to 4, 7, MT_MOON_POKECENTER_WIDTH
+	def_warps_to MT_MOON_POKECENTER
--- a/data/maps/objects/Museum1F.asm
+++ b/data/maps/objects/Museum1F.asm
@@ -1,7 +1,7 @@
 Museum1F_Object:
 	db $a ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 10, 7, 0, LAST_MAP
 	warp 11, 7, 0, LAST_MAP
 	warp 16, 7, 1, LAST_MAP
@@ -8,9 +8,9 @@
 	warp 17, 7, 1, LAST_MAP
 	warp 7, 7, 0, MUSEUM_2F
 
-	db 0 ; signs
+	def_signs
 
-	db 5 ; objects
+	def_objects
 	object SPRITE_SCIENTIST, 12, 4, STAY, LEFT, 1 ; person
 	object SPRITE_GAMBLER, 1, 4, STAY, NONE, 2 ; person
 	object SPRITE_SCIENTIST, 15, 2, STAY, DOWN, 3 ; person
@@ -17,9 +17,4 @@
 	object SPRITE_SCIENTIST, 17, 4, STAY, NONE, 4 ; person
 	object SPRITE_OLD_AMBER, 16, 2, STAY, NONE, 5 ; person
 
-	; warp-to
-	warp_to 10, 7, MUSEUM_1F_WIDTH
-	warp_to 11, 7, MUSEUM_1F_WIDTH
-	warp_to 16, 7, MUSEUM_1F_WIDTH
-	warp_to 17, 7, MUSEUM_1F_WIDTH
-	warp_to 7, 7, MUSEUM_1F_WIDTH ; MUSEUM_2F
+	def_warps_to MUSEUM_1F
--- a/data/maps/objects/Museum2F.asm
+++ b/data/maps/objects/Museum2F.asm
@@ -1,14 +1,14 @@
 Museum2F_Object:
 	db $a ; border block
 
-	db 1 ; warps
+	def_warps
 	warp 7, 7, 4, MUSEUM_1F
 
-	db 2 ; signs
+	def_signs
 	sign 11, 2, 6 ; Museum2FText6
 	sign 2, 5, 7 ; Museum2FText7
 
-	db 5 ; objects
+	def_objects
 	object SPRITE_YOUNGSTER, 1, 7, WALK, LEFT_RIGHT, 1 ; person
 	object SPRITE_GRAMPS, 0, 5, STAY, DOWN, 2 ; person
 	object SPRITE_SCIENTIST, 7, 5, STAY, DOWN, 3 ; person
@@ -15,5 +15,4 @@
 	object SPRITE_BRUNETTE_GIRL, 11, 5, STAY, NONE, 4 ; person
 	object SPRITE_HIKER, 12, 5, STAY, DOWN, 5 ; person
 
-	; warp-to
-	warp_to 7, 7, MUSEUM_2F_WIDTH ; MUSEUM_1F
+	def_warps_to MUSEUM_2F
--- a/data/maps/objects/NameRatersHouse.asm
+++ b/data/maps/objects/NameRatersHouse.asm
@@ -1,15 +1,13 @@
 NameRatersHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 5, LAST_MAP
 	warp 3, 7, 5, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_SILPH_PRESIDENT, 5, 3, STAY, LEFT, 1 ; person
 
-	; warp-to
-	warp_to 2, 7, NAME_RATERS_HOUSE_WIDTH
-	warp_to 3, 7, NAME_RATERS_HOUSE_WIDTH
+	def_warps_to NAME_RATERS_HOUSE
--- a/data/maps/objects/OaksLab.asm
+++ b/data/maps/objects/OaksLab.asm
@@ -1,13 +1,13 @@
 OaksLab_Object:
 	db $3 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 4, 11, 2, LAST_MAP
 	warp 5, 11, 2, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 11 ; objects
+	def_objects
 	object SPRITE_BLUE, 4, 3, STAY, NONE, 1, OPP_RIVAL1, 1
 	object SPRITE_POKE_BALL, 6, 3, STAY, NONE, 2 ; person
 	object SPRITE_POKE_BALL, 7, 3, STAY, NONE, 3 ; person
@@ -20,6 +20,4 @@
 	object SPRITE_SCIENTIST, 2, 10, STAY, NONE, 10 ; person
 	object SPRITE_SCIENTIST, 8, 10, STAY, NONE, 11 ; person
 
-	; warp-to
-	warp_to 4, 11, OAKS_LAB_WIDTH
-	warp_to 5, 11, OAKS_LAB_WIDTH
+	def_warps_to OAKS_LAB
--- a/data/maps/objects/PalletTown.asm
+++ b/data/maps/objects/PalletTown.asm
@@ -1,23 +1,20 @@
 PalletTown_Object:
 	db $b ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 5, 5, 0, REDS_HOUSE_1F
 	warp 13, 5, 0, BLUES_HOUSE
 	warp 12, 11, 1, OAKS_LAB
 
-	db 4 ; signs
+	def_signs
 	sign 13, 13, 4 ; PalletTownText4
 	sign 7, 9, 5 ; PalletTownText5
 	sign 3, 5, 6 ; PalletTownText6
 	sign 11, 5, 7 ; PalletTownText7
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_OAK, 8, 5, STAY, NONE, 1 ; person
 	object SPRITE_GIRL, 3, 8, WALK, ANY_DIR, 2 ; person
 	object SPRITE_FISHER, 11, 14, WALK, ANY_DIR, 3 ; person
 
-	; warp-to
-	warp_to 5, 5, PALLET_TOWN_WIDTH ; REDS_HOUSE_1F
-	warp_to 13, 5, PALLET_TOWN_WIDTH ; BLUES_HOUSE
-	warp_to 12, 11, PALLET_TOWN_WIDTH ; OAKS_LAB
+	def_warps_to PALLET_TOWN
--- a/data/maps/objects/PewterCity.asm
+++ b/data/maps/objects/PewterCity.asm
@@ -1,7 +1,7 @@
 PewterCity_Object:
 	db $a ; border block
 
-	db 7 ; warps
+	def_warps
 	warp 14, 7, 0, MUSEUM_1F
 	warp 19, 5, 2, MUSEUM_1F
 	warp 16, 17, 0, PEWTER_GYM
@@ -10,7 +10,7 @@
 	warp 7, 29, 0, PEWTER_SPEECH_HOUSE
 	warp 13, 25, 0, PEWTER_POKECENTER
 
-	db 7 ; signs
+	def_signs
 	sign 19, 29, 6 ; PewterCityText6
 	sign 33, 19, 7 ; PewterCityText7
 	sign 24, 17, 8 ; MartSignText
@@ -19,7 +19,7 @@
 	sign 11, 17, 11 ; PewterCityText11
 	sign 25, 23, 12 ; PewterCityText12
 
-	db 5 ; objects
+	def_objects
 	object SPRITE_COOLTRAINER_F, 8, 15, STAY, NONE, 1 ; person
 	object SPRITE_COOLTRAINER_M, 17, 25, STAY, NONE, 2 ; person
 	object SPRITE_SUPER_NERD, 27, 17, STAY, NONE, 3 ; person
@@ -26,11 +26,4 @@
 	object SPRITE_SUPER_NERD, 26, 25, WALK, LEFT_RIGHT, 4 ; person
 	object SPRITE_YOUNGSTER, 35, 16, STAY, DOWN, 5 ; person
 
-	; warp-to
-	warp_to 14, 7, PEWTER_CITY_WIDTH ; MUSEUM_1F
-	warp_to 19, 5, PEWTER_CITY_WIDTH ; MUSEUM_1F
-	warp_to 16, 17, PEWTER_CITY_WIDTH ; PEWTER_GYM
-	warp_to 29, 13, PEWTER_CITY_WIDTH ; PEWTER_NIDORAN_HOUSE
-	warp_to 23, 17, PEWTER_CITY_WIDTH ; PEWTER_MART
-	warp_to 7, 29, PEWTER_CITY_WIDTH ; PEWTER_SPEECH_HOUSE
-	warp_to 13, 25, PEWTER_CITY_WIDTH ; PEWTER_POKECENTER
+	def_warps_to PEWTER_CITY
--- a/data/maps/objects/PewterGym.asm
+++ b/data/maps/objects/PewterGym.asm
@@ -1,17 +1,15 @@
 PewterGym_Object:
 	db $3 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 4, 13, 2, LAST_MAP
 	warp 5, 13, 2, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_SUPER_NERD, 4, 1, STAY, DOWN, 1, OPP_BROCK, 1
 	object SPRITE_COOLTRAINER_M, 3, 6, STAY, RIGHT, 2, OPP_JR_TRAINER_M, 1
 	object SPRITE_GYM_GUIDE, 7, 10, STAY, DOWN, 3 ; person
 
-	; warp-to
-	warp_to 4, 13, PEWTER_GYM_WIDTH
-	warp_to 5, 13, PEWTER_GYM_WIDTH
+	def_warps_to PEWTER_GYM
--- a/data/maps/objects/PewterMart.asm
+++ b/data/maps/objects/PewterMart.asm
@@ -1,17 +1,15 @@
 PewterMart_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 4, LAST_MAP
 	warp 4, 7, 4, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_CLERK, 0, 5, STAY, RIGHT, 1 ; person
 	object SPRITE_YOUNGSTER, 3, 3, WALK, UP_DOWN, 2 ; person
 	object SPRITE_SUPER_NERD, 5, 5, STAY, NONE, 3 ; person
 
-	; warp-to
-	warp_to 3, 7, PEWTER_MART_WIDTH
-	warp_to 4, 7, PEWTER_MART_WIDTH
+	def_warps_to PEWTER_MART
--- a/data/maps/objects/PewterNidoranHouse.asm
+++ b/data/maps/objects/PewterNidoranHouse.asm
@@ -1,17 +1,15 @@
 PewterNidoranHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 3, LAST_MAP
 	warp 3, 7, 3, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_MONSTER, 4, 5, STAY, LEFT, 1 ; person
 	object SPRITE_LITTLE_BOY, 3, 5, STAY, RIGHT, 2 ; person
 	object SPRITE_MIDDLE_AGED_MAN, 1, 2, STAY, NONE, 3 ; person
 
-	; warp-to
-	warp_to 2, 7, PEWTER_NIDORAN_HOUSE_WIDTH
-	warp_to 3, 7, PEWTER_NIDORAN_HOUSE_WIDTH
+	def_warps_to PEWTER_NIDORAN_HOUSE
--- a/data/maps/objects/PewterPokecenter.asm
+++ b/data/maps/objects/PewterPokecenter.asm
@@ -1,18 +1,16 @@
 PewterPokecenter_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 6, LAST_MAP
 	warp 4, 7, 6, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
 	object SPRITE_GENTLEMAN, 11, 7, STAY, LEFT, 2 ; person
 	object SPRITE_FAIRY, 1, 3, STAY, DOWN, 3 ; person
 	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
-	; warp-to
-	warp_to 3, 7, PEWTER_POKECENTER_WIDTH
-	warp_to 4, 7, PEWTER_POKECENTER_WIDTH
+	def_warps_to PEWTER_POKECENTER
--- a/data/maps/objects/PewterSpeechHouse.asm
+++ b/data/maps/objects/PewterSpeechHouse.asm
@@ -1,16 +1,14 @@
 PewterSpeechHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 5, LAST_MAP
 	warp 3, 7, 5, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_GAMBLER, 2, 3, STAY, RIGHT, 1 ; person
 	object SPRITE_YOUNGSTER, 4, 5, STAY, NONE, 2 ; person
 
-	; warp-to
-	warp_to 2, 7, PEWTER_SPEECH_HOUSE_WIDTH
-	warp_to 3, 7, PEWTER_SPEECH_HOUSE_WIDTH
+	def_warps_to PEWTER_SPEECH_HOUSE
--- a/data/maps/objects/PokemonFanClub.asm
+++ b/data/maps/objects/PokemonFanClub.asm
@@ -1,15 +1,15 @@
 PokemonFanClub_Object:
 	db $d ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 1, LAST_MAP
 	warp 3, 7, 1, LAST_MAP
 
-	db 2 ; signs
+	def_signs
 	sign 1, 0, 7 ; FanClubText7
 	sign 6, 0, 8 ; FanClubText8
 
-	db 6 ; objects
+	def_objects
 	object SPRITE_FISHER, 6, 3, STAY, LEFT, 1 ; person
 	object SPRITE_GIRL, 1, 3, STAY, RIGHT, 2 ; person
 	object SPRITE_FAIRY, 6, 4, STAY, LEFT, 3 ; person
@@ -17,6 +17,4 @@
 	object SPRITE_GENTLEMAN, 3, 1, STAY, DOWN, 5 ; person
 	object SPRITE_LINK_RECEPTIONIST, 5, 1, STAY, DOWN, 6 ; person
 
-	; warp-to
-	warp_to 2, 7, POKEMON_FAN_CLUB_WIDTH
-	warp_to 3, 7, POKEMON_FAN_CLUB_WIDTH
+	def_warps_to POKEMON_FAN_CLUB
--- a/data/maps/objects/PokemonMansion1F.asm
+++ b/data/maps/objects/PokemonMansion1F.asm
@@ -1,7 +1,7 @@
 PokemonMansion1F_Object:
 	db $2e ; border block
 
-	db 8 ; warps
+	def_warps
 	warp 4, 27, 0, LAST_MAP
 	warp 5, 27, 0, LAST_MAP
 	warp 6, 27, 0, LAST_MAP
@@ -11,19 +11,11 @@
 	warp 26, 27, 0, LAST_MAP
 	warp 27, 27, 0, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_SCIENTIST, 17, 17, STAY, LEFT, 1, OPP_SCIENTIST, 4
 	object SPRITE_POKE_BALL, 14, 3, STAY, NONE, 2, ESCAPE_ROPE
 	object SPRITE_POKE_BALL, 18, 21, STAY, NONE, 3, CARBOS
 
-	; warp-to
-	warp_to 4, 27, POKEMON_MANSION_1F_WIDTH
-	warp_to 5, 27, POKEMON_MANSION_1F_WIDTH
-	warp_to 6, 27, POKEMON_MANSION_1F_WIDTH
-	warp_to 7, 27, POKEMON_MANSION_1F_WIDTH
-	warp_to 5, 10, POKEMON_MANSION_1F_WIDTH ; POKEMON_MANSION_2F
-	warp_to 21, 23, POKEMON_MANSION_1F_WIDTH ; POKEMON_MANSION_B1F
-	warp_to 26, 27, POKEMON_MANSION_1F_WIDTH
-	warp_to 27, 27, POKEMON_MANSION_1F_WIDTH
+	def_warps_to POKEMON_MANSION_1F
--- a/data/maps/objects/PokemonMansion2F.asm
+++ b/data/maps/objects/PokemonMansion2F.asm
@@ -1,22 +1,18 @@
 PokemonMansion2F_Object:
 	db $1 ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 5, 10, 4, POKEMON_MANSION_1F
 	warp 7, 10, 0, POKEMON_MANSION_3F
 	warp 25, 14, 2, POKEMON_MANSION_3F
 	warp 6, 1, 1, POKEMON_MANSION_3F
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_SUPER_NERD, 3, 17, WALK, LEFT_RIGHT, 1, OPP_BURGLAR, 7
 	object SPRITE_POKE_BALL, 28, 7, STAY, NONE, 2, CALCIUM
 	object SPRITE_POKEDEX, 18, 2, STAY, NONE, 3 ; person
 	object SPRITE_POKEDEX, 3, 22, STAY, NONE, 4 ; person
 
-	; warp-to
-	warp_to 5, 10, POKEMON_MANSION_2F_WIDTH ; POKEMON_MANSION_1F
-	warp_to 7, 10, POKEMON_MANSION_2F_WIDTH ; POKEMON_MANSION_3F
-	warp_to 25, 14, POKEMON_MANSION_2F_WIDTH ; POKEMON_MANSION_3F
-	warp_to 6, 1, POKEMON_MANSION_2F_WIDTH ; POKEMON_MANSION_3F
+	def_warps_to POKEMON_MANSION_2F
--- a/data/maps/objects/PokemonMansion3F.asm
+++ b/data/maps/objects/PokemonMansion3F.asm
@@ -1,14 +1,14 @@
 PokemonMansion3F_Object:
 	db $1 ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 7, 10, 1, POKEMON_MANSION_2F
 	warp 6, 1, 3, POKEMON_MANSION_2F
 	warp 25, 14, 2, POKEMON_MANSION_2F
 
-	db 0 ; signs
+	def_signs
 
-	db 5 ; objects
+	def_objects
 	object SPRITE_SUPER_NERD, 5, 11, WALK, LEFT_RIGHT, 1, OPP_BURGLAR, 8
 	object SPRITE_SCIENTIST, 20, 11, STAY, LEFT, 2, OPP_SCIENTIST, 12
 	object SPRITE_POKE_BALL, 1, 16, STAY, NONE, 3, MAX_POTION
@@ -15,7 +15,4 @@
 	object SPRITE_POKE_BALL, 25, 5, STAY, NONE, 4, IRON
 	object SPRITE_POKEDEX, 6, 12, STAY, NONE, 5 ; person
 
-	; warp-to
-	warp_to 7, 10, POKEMON_MANSION_3F_WIDTH ; POKEMON_MANSION_2F
-	warp_to 6, 1, POKEMON_MANSION_3F_WIDTH ; POKEMON_MANSION_2F
-	warp_to 25, 14, POKEMON_MANSION_3F_WIDTH ; POKEMON_MANSION_2F
+	def_warps_to POKEMON_MANSION_3F
--- a/data/maps/objects/PokemonMansionB1F.asm
+++ b/data/maps/objects/PokemonMansionB1F.asm
@@ -1,12 +1,12 @@
 PokemonMansionB1F_Object:
 	db $1 ; border block
 
-	db 1 ; warps
+	def_warps
 	warp 23, 22, 5, POKEMON_MANSION_1F
 
-	db 0 ; signs
+	def_signs
 
-	db 8 ; objects
+	def_objects
 	object SPRITE_SUPER_NERD, 16, 23, STAY, NONE, 1, OPP_BURGLAR, 9
 	object SPRITE_SCIENTIST, 27, 11, STAY, DOWN, 2, OPP_SCIENTIST, 13
 	object SPRITE_POKE_BALL, 10, 2, STAY, NONE, 3, RARE_CANDY
@@ -16,5 +16,4 @@
 	object SPRITE_POKEDEX, 16, 20, STAY, NONE, 7 ; person
 	object SPRITE_POKE_BALL, 5, 13, STAY, NONE, 8, SECRET_KEY
 
-	; warp-to
-	warp_to 23, 22, POKEMON_MANSION_B1F_WIDTH ; POKEMON_MANSION_1F
+	def_warps_to POKEMON_MANSION_B1F
--- a/data/maps/objects/PokemonTower1F.asm
+++ b/data/maps/objects/PokemonTower1F.asm
@@ -1,14 +1,14 @@
 PokemonTower1F_Object:
 	db $1 ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 10, 17, 1, LAST_MAP
 	warp 11, 17, 1, LAST_MAP
 	warp 18, 9, 1, POKEMON_TOWER_2F
 
-	db 0 ; signs
+	def_signs
 
-	db 5 ; objects
+	def_objects
 	object SPRITE_LINK_RECEPTIONIST, 15, 13, STAY, UP, 1 ; person
 	object SPRITE_MIDDLE_AGED_WOMAN, 6, 8, STAY, NONE, 2 ; person
 	object SPRITE_BALDING_GUY, 8, 12, STAY, NONE, 3 ; person
@@ -15,7 +15,4 @@
 	object SPRITE_GIRL, 13, 7, STAY, NONE, 4 ; person
 	object SPRITE_CHANNELER, 17, 7, STAY, LEFT, 5 ; person
 
-	; warp-to
-	warp_to 10, 17, POKEMON_TOWER_1F_WIDTH
-	warp_to 11, 17, POKEMON_TOWER_1F_WIDTH
-	warp_to 18, 9, POKEMON_TOWER_1F_WIDTH ; POKEMON_TOWER_2F
+	def_warps_to POKEMON_TOWER_1F
--- a/data/maps/objects/PokemonTower2F.asm
+++ b/data/maps/objects/PokemonTower2F.asm
@@ -1,16 +1,14 @@
 PokemonTower2F_Object:
 	db $1 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 9, 0, POKEMON_TOWER_3F
 	warp 18, 9, 2, POKEMON_TOWER_1F
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_BLUE, 14, 5, STAY, NONE, 1 ; person
 	object SPRITE_CHANNELER, 3, 7, STAY, RIGHT, 2 ; person
 
-	; warp-to
-	warp_to 3, 9, POKEMON_TOWER_2F_WIDTH ; POKEMON_TOWER_3F
-	warp_to 18, 9, POKEMON_TOWER_2F_WIDTH ; POKEMON_TOWER_1F
+	def_warps_to POKEMON_TOWER_2F
--- a/data/maps/objects/PokemonTower3F.asm
+++ b/data/maps/objects/PokemonTower3F.asm
@@ -1,18 +1,16 @@
 PokemonTower3F_Object:
 	db $1 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 9, 0, POKEMON_TOWER_2F
 	warp 18, 9, 1, POKEMON_TOWER_4F
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_CHANNELER, 12, 3, STAY, LEFT, 1, OPP_CHANNELER, 5
 	object SPRITE_CHANNELER, 9, 8, STAY, DOWN, 2, OPP_CHANNELER, 6
 	object SPRITE_CHANNELER, 10, 13, STAY, DOWN, 3, OPP_CHANNELER, 8
 	object SPRITE_POKE_BALL, 12, 1, STAY, NONE, 4, ESCAPE_ROPE
 
-	; warp-to
-	warp_to 3, 9, POKEMON_TOWER_3F_WIDTH ; POKEMON_TOWER_2F
-	warp_to 18, 9, POKEMON_TOWER_3F_WIDTH ; POKEMON_TOWER_4F
+	def_warps_to POKEMON_TOWER_3F
--- a/data/maps/objects/PokemonTower4F.asm
+++ b/data/maps/objects/PokemonTower4F.asm
@@ -1,13 +1,13 @@
 PokemonTower4F_Object:
 	db $1 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 9, 0, POKEMON_TOWER_5F
 	warp 18, 9, 1, POKEMON_TOWER_3F
 
-	db 0 ; signs
+	def_signs
 
-	db 6 ; objects
+	def_objects
 	object SPRITE_CHANNELER, 5, 10, STAY, RIGHT, 1, OPP_CHANNELER, 9
 	object SPRITE_CHANNELER, 15, 7, STAY, DOWN, 2, OPP_CHANNELER, 10
 	object SPRITE_CHANNELER, 14, 12, STAY, LEFT, 3, OPP_CHANNELER, 12
@@ -15,6 +15,4 @@
 	object SPRITE_POKE_BALL, 9, 10, STAY, NONE, 5, AWAKENING
 	object SPRITE_POKE_BALL, 12, 16, STAY, NONE, 6, HP_UP
 
-	; warp-to
-	warp_to 3, 9, POKEMON_TOWER_4F_WIDTH ; POKEMON_TOWER_5F
-	warp_to 18, 9, POKEMON_TOWER_4F_WIDTH ; POKEMON_TOWER_3F
+	def_warps_to POKEMON_TOWER_4F
--- a/data/maps/objects/PokemonTower5F.asm
+++ b/data/maps/objects/PokemonTower5F.asm
@@ -1,13 +1,13 @@
 PokemonTower5F_Object:
 	db $1 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 9, 0, POKEMON_TOWER_4F
 	warp 18, 9, 0, POKEMON_TOWER_6F
 
-	db 0 ; signs
+	def_signs
 
-	db 6 ; objects
+	def_objects
 	object SPRITE_CHANNELER, 12, 8, STAY, NONE, 1 ; person
 	object SPRITE_CHANNELER, 17, 7, STAY, LEFT, 2, OPP_CHANNELER, 14
 	object SPRITE_CHANNELER, 14, 3, STAY, LEFT, 3, OPP_CHANNELER, 16
@@ -15,6 +15,4 @@
 	object SPRITE_CHANNELER, 9, 16, STAY, RIGHT, 5, OPP_CHANNELER, 18
 	object SPRITE_POKE_BALL, 6, 14, STAY, NONE, 6, NUGGET
 
-	; warp-to
-	warp_to 3, 9, POKEMON_TOWER_5F_WIDTH ; POKEMON_TOWER_4F
-	warp_to 18, 9, POKEMON_TOWER_5F_WIDTH ; POKEMON_TOWER_6F
+	def_warps_to POKEMON_TOWER_5F
--- a/data/maps/objects/PokemonTower6F.asm
+++ b/data/maps/objects/PokemonTower6F.asm
@@ -1,13 +1,13 @@
 PokemonTower6F_Object:
 	db $1 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 18, 9, 1, POKEMON_TOWER_5F
 	warp 9, 16, 0, POKEMON_TOWER_7F
 
-	db 0 ; signs
+	def_signs
 
-	db 5 ; objects
+	def_objects
 	object SPRITE_CHANNELER, 12, 10, STAY, RIGHT, 1, OPP_CHANNELER, 19
 	object SPRITE_CHANNELER, 9, 5, STAY, DOWN, 2, OPP_CHANNELER, 20
 	object SPRITE_CHANNELER, 16, 5, STAY, LEFT, 3, OPP_CHANNELER, 21
@@ -14,6 +14,4 @@
 	object SPRITE_POKE_BALL, 6, 8, STAY, NONE, 4, RARE_CANDY
 	object SPRITE_POKE_BALL, 14, 14, STAY, NONE, 5, X_ACCURACY
 
-	; warp-to
-	warp_to 18, 9, POKEMON_TOWER_6F_WIDTH ; POKEMON_TOWER_5F
-	warp_to 9, 16, POKEMON_TOWER_6F_WIDTH ; POKEMON_TOWER_7F
+	def_warps_to POKEMON_TOWER_6F
--- a/data/maps/objects/PokemonTower7F.asm
+++ b/data/maps/objects/PokemonTower7F.asm
@@ -1,16 +1,15 @@
 PokemonTower7F_Object:
 	db $1 ; border block
 
-	db 1 ; warps
+	def_warps
 	warp 9, 16, 1, POKEMON_TOWER_6F
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_ROCKET, 9, 11, STAY, RIGHT, 1, OPP_ROCKET, 19
 	object SPRITE_ROCKET, 12, 9, STAY, LEFT, 2, OPP_ROCKET, 20
 	object SPRITE_ROCKET, 9, 7, STAY, RIGHT, 3, OPP_ROCKET, 21
 	object SPRITE_MR_FUJI, 10, 3, STAY, DOWN, 4 ; person
 
-	; warp-to
-	warp_to 9, 16, POKEMON_TOWER_7F_WIDTH ; POKEMON_TOWER_6F
+	def_warps_to POKEMON_TOWER_7F
--- a/data/maps/objects/PowerPlant.asm
+++ b/data/maps/objects/PowerPlant.asm
@@ -1,14 +1,14 @@
 PowerPlant_Object:
 	db $2e ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 4, 35, 3, LAST_MAP
 	warp 5, 35, 3, LAST_MAP
 	warp 0, 11, 3, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 14 ; objects
+	def_objects
 	object SPRITE_POKE_BALL, 9, 20, STAY, NONE, 1, VOLTORB, 40
 	object SPRITE_POKE_BALL, 32, 18, STAY, NONE, 2, VOLTORB, 40
 	object SPRITE_POKE_BALL, 21, 25, STAY, NONE, 3, VOLTORB, 40
@@ -24,7 +24,4 @@
 	object SPRITE_POKE_BALL, 26, 32, STAY, NONE, 13, TM_THUNDER
 	object SPRITE_POKE_BALL, 20, 32, STAY, NONE, 14, TM_REFLECT
 
-	; warp-to
-	warp_to 4, 35, POWER_PLANT_WIDTH
-	warp_to 5, 35, POWER_PLANT_WIDTH
-	warp_to 0, 11, POWER_PLANT_WIDTH
+	def_warps_to POWER_PLANT
--- a/data/maps/objects/RedsHouse1F.asm
+++ b/data/maps/objects/RedsHouse1F.asm
@@ -1,18 +1,15 @@
 RedsHouse1F_Object:
 	db $a ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 2, 7, 0, LAST_MAP ; exit1
 	warp 3, 7, 0, LAST_MAP ; exit2
 	warp 7, 1, 0, REDS_HOUSE_2F ; staircase
 
-	db 1 ; signs
+	def_signs
 	sign 3, 1, 2 ; TV
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_MOM, 5, 4, STAY, LEFT, 1 ; Mom
 
-	; warp-to
-	warp_to 2, 7, REDS_HOUSE_1F_WIDTH
-	warp_to 3, 7, REDS_HOUSE_1F_WIDTH
-	warp_to 7, 1, REDS_HOUSE_1F_WIDTH
+	def_warps_to REDS_HOUSE_1F
--- a/data/maps/objects/RedsHouse2F.asm
+++ b/data/maps/objects/RedsHouse2F.asm
@@ -1,12 +1,11 @@
 RedsHouse2F_Object:
 	db $a ; border block
 
-	db 1 ; warps
+	def_warps
 	warp 7, 1, 2, REDS_HOUSE_1F
 
-	db 0 ; signs
+	def_signs
 
-	db 0 ; objects
+	def_objects
 
-	; warp-to
-	warp_to 7, 1, REDS_HOUSE_2F_WIDTH
+	def_warps_to REDS_HOUSE_2F
--- a/data/maps/objects/RockTunnel1F.asm
+++ b/data/maps/objects/RockTunnel1F.asm
@@ -1,7 +1,7 @@
 RockTunnel1F_Object:
 	db $3 ; border block
 
-	db 8 ; warps
+	def_warps
 	warp 15, 3, 1, LAST_MAP
 	warp 15, 0, 1, LAST_MAP
 	warp 15, 33, 2, LAST_MAP
@@ -11,10 +11,10 @@
 	warp 17, 11, 2, ROCK_TUNNEL_B1F
 	warp 37, 17, 3, ROCK_TUNNEL_B1F
 
-	db 1 ; signs
+	def_signs
 	sign 11, 29, 8 ; RockTunnel1Text8
 
-	db 7 ; objects
+	def_objects
 	object SPRITE_HIKER, 7, 5, STAY, DOWN, 1, OPP_HIKER, 12
 	object SPRITE_HIKER, 5, 16, STAY, DOWN, 2, OPP_HIKER, 13
 	object SPRITE_HIKER, 17, 15, STAY, LEFT, 3, OPP_HIKER, 14
@@ -23,12 +23,4 @@
 	object SPRITE_COOLTRAINER_F, 22, 24, STAY, DOWN, 6, OPP_JR_TRAINER_F, 18
 	object SPRITE_COOLTRAINER_F, 32, 24, STAY, RIGHT, 7, OPP_JR_TRAINER_F, 19
 
-	; warp-to
-	warp_to 15, 3, ROCK_TUNNEL_1F_WIDTH
-	warp_to 15, 0, ROCK_TUNNEL_1F_WIDTH
-	warp_to 15, 33, ROCK_TUNNEL_1F_WIDTH
-	warp_to 15, 35, ROCK_TUNNEL_1F_WIDTH
-	warp_to 37, 3, ROCK_TUNNEL_1F_WIDTH ; ROCK_TUNNEL_B1F
-	warp_to 5, 3, ROCK_TUNNEL_1F_WIDTH ; ROCK_TUNNEL_B1F
-	warp_to 17, 11, ROCK_TUNNEL_1F_WIDTH ; ROCK_TUNNEL_B1F
-	warp_to 37, 17, ROCK_TUNNEL_1F_WIDTH ; ROCK_TUNNEL_B1F
+	def_warps_to ROCK_TUNNEL_1F
--- a/data/maps/objects/RockTunnelB1F.asm
+++ b/data/maps/objects/RockTunnelB1F.asm
@@ -1,15 +1,15 @@
 RockTunnelB1F_Object:
 	db $3 ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 33, 25, 4, ROCK_TUNNEL_1F
 	warp 27, 3, 5, ROCK_TUNNEL_1F
 	warp 23, 11, 6, ROCK_TUNNEL_1F
 	warp 3, 3, 7, ROCK_TUNNEL_1F
 
-	db 0 ; signs
+	def_signs
 
-	db 8 ; objects
+	def_objects
 	object SPRITE_COOLTRAINER_F, 11, 13, STAY, DOWN, 1, OPP_JR_TRAINER_F, 9
 	object SPRITE_HIKER, 6, 10, STAY, DOWN, 2, OPP_HIKER, 9
 	object SPRITE_SUPER_NERD, 3, 5, STAY, DOWN, 3, OPP_POKEMANIAC, 3
@@ -19,8 +19,4 @@
 	object SPRITE_HIKER, 33, 5, STAY, RIGHT, 7, OPP_HIKER, 11
 	object SPRITE_SUPER_NERD, 26, 30, STAY, DOWN, 8, OPP_POKEMANIAC, 5
 
-	; warp-to
-	warp_to 33, 25, ROCK_TUNNEL_B1F_WIDTH ; ROCK_TUNNEL_1F
-	warp_to 27, 3, ROCK_TUNNEL_B1F_WIDTH ; ROCK_TUNNEL_1F
-	warp_to 23, 11, ROCK_TUNNEL_B1F_WIDTH ; ROCK_TUNNEL_1F
-	warp_to 3, 3, ROCK_TUNNEL_B1F_WIDTH ; ROCK_TUNNEL_1F
+	def_warps_to ROCK_TUNNEL_B1F
--- a/data/maps/objects/RockTunnelPokecenter.asm
+++ b/data/maps/objects/RockTunnelPokecenter.asm
@@ -1,18 +1,16 @@
 RockTunnelPokecenter_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 0, LAST_MAP
 	warp 4, 7, 0, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
 	object SPRITE_GENTLEMAN, 7, 3, WALK, LEFT_RIGHT, 2 ; person
 	object SPRITE_FISHER, 2, 5, STAY, NONE, 3 ; person
 	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
-	; warp-to
-	warp_to 3, 7, ROCK_TUNNEL_POKECENTER_WIDTH
-	warp_to 4, 7, ROCK_TUNNEL_POKECENTER_WIDTH
+	def_warps_to ROCK_TUNNEL_POKECENTER
--- a/data/maps/objects/RocketHideoutB1F.asm
+++ b/data/maps/objects/RocketHideoutB1F.asm
@@ -1,7 +1,7 @@
 RocketHideoutB1F_Object:
 	db $2e ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 23, 2, 0, ROCKET_HIDEOUT_B2F
 	warp 21, 2, 2, GAME_CORNER
 	warp 24, 19, 0, ROCKET_HIDEOUT_ELEVATOR
@@ -8,9 +8,9 @@
 	warp 21, 24, 3, ROCKET_HIDEOUT_B2F
 	warp 25, 19, 1, ROCKET_HIDEOUT_ELEVATOR
 
-	db 0 ; signs
+	def_signs
 
-	db 7 ; objects
+	def_objects
 	object SPRITE_ROCKET, 26, 8, STAY, LEFT, 1, OPP_ROCKET, 8
 	object SPRITE_ROCKET, 12, 6, STAY, RIGHT, 2, OPP_ROCKET, 9
 	object SPRITE_ROCKET, 18, 17, STAY, DOWN, 3, OPP_ROCKET, 10
@@ -19,9 +19,4 @@
 	object SPRITE_POKE_BALL, 11, 14, STAY, NONE, 6, ESCAPE_ROPE
 	object SPRITE_POKE_BALL, 9, 17, STAY, NONE, 7, HYPER_POTION
 
-	; warp-to
-	warp_to 23, 2, ROCKET_HIDEOUT_B1F_WIDTH ; ROCKET_HIDEOUT_B2F
-	warp_to 21, 2, ROCKET_HIDEOUT_B1F_WIDTH ; GAME_CORNER
-	warp_to 24, 19, ROCKET_HIDEOUT_B1F_WIDTH ; ROCKET_HIDEOUT_ELEVATOR
-	warp_to 21, 24, ROCKET_HIDEOUT_B1F_WIDTH ; ROCKET_HIDEOUT_B2F
-	warp_to 25, 19, ROCKET_HIDEOUT_B1F_WIDTH ; ROCKET_HIDEOUT_ELEVATOR
+	def_warps_to ROCKET_HIDEOUT_B1F
--- a/data/maps/objects/RocketHideoutB2F.asm
+++ b/data/maps/objects/RocketHideoutB2F.asm
@@ -1,7 +1,7 @@
 RocketHideoutB2F_Object:
 	db $2e ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 27, 8, 0, ROCKET_HIDEOUT_B1F
 	warp 21, 8, 0, ROCKET_HIDEOUT_B3F
 	warp 24, 19, 0, ROCKET_HIDEOUT_ELEVATOR
@@ -8,9 +8,9 @@
 	warp 21, 22, 3, ROCKET_HIDEOUT_B1F
 	warp 25, 19, 1, ROCKET_HIDEOUT_ELEVATOR
 
-	db 0 ; signs
+	def_signs
 
-	db 5 ; objects
+	def_objects
 	object SPRITE_ROCKET, 20, 12, STAY, DOWN, 1, OPP_ROCKET, 13
 	object SPRITE_POKE_BALL, 1, 11, STAY, NONE, 2, MOON_STONE
 	object SPRITE_POKE_BALL, 16, 8, STAY, NONE, 3, NUGGET
@@ -17,9 +17,4 @@
 	object SPRITE_POKE_BALL, 6, 12, STAY, NONE, 4, TM_HORN_DRILL
 	object SPRITE_POKE_BALL, 3, 21, STAY, NONE, 5, SUPER_POTION
 
-	; warp-to
-	warp_to 27, 8, ROCKET_HIDEOUT_B2F_WIDTH ; ROCKET_HIDEOUT_B1F
-	warp_to 21, 8, ROCKET_HIDEOUT_B2F_WIDTH ; ROCKET_HIDEOUT_B3F
-	warp_to 24, 19, ROCKET_HIDEOUT_B2F_WIDTH ; ROCKET_HIDEOUT_ELEVATOR
-	warp_to 21, 22, ROCKET_HIDEOUT_B2F_WIDTH ; ROCKET_HIDEOUT_B1F
-	warp_to 25, 19, ROCKET_HIDEOUT_B2F_WIDTH ; ROCKET_HIDEOUT_ELEVATOR
+	def_warps_to ROCKET_HIDEOUT_B2F
--- a/data/maps/objects/RocketHideoutB3F.asm
+++ b/data/maps/objects/RocketHideoutB3F.asm
@@ -1,18 +1,16 @@
 RocketHideoutB3F_Object:
 	db $2e ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 25, 6, 1, ROCKET_HIDEOUT_B2F
 	warp 19, 18, 0, ROCKET_HIDEOUT_B4F
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_ROCKET, 10, 22, STAY, RIGHT, 1, OPP_ROCKET, 14
 	object SPRITE_ROCKET, 26, 12, STAY, UP, 2, OPP_ROCKET, 15
 	object SPRITE_POKE_BALL, 26, 17, STAY, NONE, 3, TM_DOUBLE_EDGE
 	object SPRITE_POKE_BALL, 20, 14, STAY, NONE, 4, RARE_CANDY
 
-	; warp-to
-	warp_to 25, 6, ROCKET_HIDEOUT_B3F_WIDTH ; ROCKET_HIDEOUT_B2F
-	warp_to 19, 18, ROCKET_HIDEOUT_B3F_WIDTH ; ROCKET_HIDEOUT_B4F
+	def_warps_to ROCKET_HIDEOUT_B3F
--- a/data/maps/objects/RocketHideoutB4F.asm
+++ b/data/maps/objects/RocketHideoutB4F.asm
@@ -1,14 +1,14 @@
 RocketHideoutB4F_Object:
 	db $2e ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 19, 10, 1, ROCKET_HIDEOUT_B3F
 	warp 24, 15, 0, ROCKET_HIDEOUT_ELEVATOR
 	warp 25, 15, 1, ROCKET_HIDEOUT_ELEVATOR
 
-	db 0 ; signs
+	def_signs
 
-	db 9 ; objects
+	def_objects
 	object SPRITE_GIOVANNI, 25, 3, STAY, DOWN, 1, OPP_GIOVANNI, 1
 	object SPRITE_ROCKET, 23, 12, STAY, DOWN, 2, OPP_ROCKET, 16
 	object SPRITE_ROCKET, 26, 12, STAY, DOWN, 3, OPP_ROCKET, 17
@@ -19,7 +19,4 @@
 	object SPRITE_POKE_BALL, 25, 2, STAY, NONE, 8, SILPH_SCOPE
 	object SPRITE_POKE_BALL, 10, 2, STAY, NONE, 9, LIFT_KEY
 
-	; warp-to
-	warp_to 19, 10, ROCKET_HIDEOUT_B4F_WIDTH ; ROCKET_HIDEOUT_B3F
-	warp_to 24, 15, ROCKET_HIDEOUT_B4F_WIDTH ; ROCKET_HIDEOUT_ELEVATOR
-	warp_to 25, 15, ROCKET_HIDEOUT_B4F_WIDTH ; ROCKET_HIDEOUT_ELEVATOR
+	def_warps_to ROCKET_HIDEOUT_B4F
--- a/data/maps/objects/RocketHideoutElevator.asm
+++ b/data/maps/objects/RocketHideoutElevator.asm
@@ -1,15 +1,13 @@
 RocketHideoutElevator_Object:
 	db $f ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 1, 2, ROCKET_HIDEOUT_B1F
 	warp 3, 1, 4, ROCKET_HIDEOUT_B1F
 
-	db 1 ; signs
+	def_signs
 	sign 1, 1, 1 ; RocketHideoutElevatorText1
 
-	db 0 ; objects
+	def_objects
 
-	; warp-to
-	warp_to 2, 1, ROCKET_HIDEOUT_ELEVATOR_WIDTH ; ROCKET_HIDEOUT_B1F
-	warp_to 3, 1, ROCKET_HIDEOUT_ELEVATOR_WIDTH ; ROCKET_HIDEOUT_B1F
+	def_warps_to ROCKET_HIDEOUT_ELEVATOR
--- a/data/maps/objects/Route1.asm
+++ b/data/maps/objects/Route1.asm
@@ -1,14 +1,16 @@
 Route1_Object:
 	db $b ; border block
 
-	db 0 ; warps
+	def_warps
 
-	db 1 ; signs
+	def_signs
 	sign 9, 27, 3 ; Route1Text3
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_YOUNGSTER, 5, 24, WALK, UP_DOWN, 1 ; person
 	object SPRITE_YOUNGSTER, 15, 13, WALK, LEFT_RIGHT, 2 ; person
 
-	; warp-to (unused)
+	def_warps_to ROUTE_1
+
+	; unused
 	warp_to 2, 7, 4
--- a/data/maps/objects/Route10.asm
+++ b/data/maps/objects/Route10.asm
@@ -1,19 +1,19 @@
 Route10_Object:
 	db $2c ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 11, 19, 0, ROCK_TUNNEL_POKECENTER
 	warp 8, 17, 0, ROCK_TUNNEL_1F
 	warp 8, 53, 2, ROCK_TUNNEL_1F
 	warp 6, 39, 0, POWER_PLANT
 
-	db 4 ; signs
+	def_signs
 	sign 7, 19, 7 ; Route10Text7
 	sign 12, 19, 8 ; PokeCenterSignText
 	sign 9, 55, 9 ; Route10Text9
 	sign 5, 41, 10 ; Route10Text10
 
-	db 6 ; objects
+	def_objects
 	object SPRITE_SUPER_NERD, 10, 44, STAY, LEFT, 1, OPP_POKEMANIAC, 1
 	object SPRITE_HIKER, 3, 57, STAY, UP, 2, OPP_HIKER, 7
 	object SPRITE_SUPER_NERD, 14, 64, STAY, LEFT, 3, OPP_POKEMANIAC, 2
@@ -21,8 +21,4 @@
 	object SPRITE_HIKER, 3, 61, STAY, DOWN, 5, OPP_HIKER, 8
 	object SPRITE_COOLTRAINER_F, 7, 54, STAY, DOWN, 6, OPP_JR_TRAINER_F, 8
 
-	; warp-to
-	warp_to 11, 19, ROUTE_10_WIDTH ; ROCK_TUNNEL_POKECENTER
-	warp_to 8, 17, ROUTE_10_WIDTH ; ROCK_TUNNEL_1F
-	warp_to 8, 53, ROUTE_10_WIDTH ; ROCK_TUNNEL_1F
-	warp_to 6, 39, ROUTE_10_WIDTH ; POWER_PLANT
+	def_warps_to ROUTE_10
--- a/data/maps/objects/Route11.asm
+++ b/data/maps/objects/Route11.asm
@@ -1,7 +1,7 @@
 Route11_Object:
 	db $f ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 49, 8, 0, ROUTE_11_GATE_1F
 	warp 49, 9, 1, ROUTE_11_GATE_1F
 	warp 58, 8, 2, ROUTE_11_GATE_1F
@@ -8,10 +8,10 @@
 	warp 58, 9, 3, ROUTE_11_GATE_1F
 	warp 4, 5, 0, DIGLETTS_CAVE_ROUTE_11
 
-	db 1 ; signs
+	def_signs
 	sign 1, 5, 11 ; Route11Text11
 
-	db 10 ; objects
+	def_objects
 	object SPRITE_GAMBLER, 10, 14, STAY, DOWN, 1, OPP_GAMBLER, 1
 	object SPRITE_GAMBLER, 26, 9, STAY, DOWN, 2, OPP_GAMBLER, 2
 	object SPRITE_YOUNGSTER, 13, 5, STAY, LEFT, 3, OPP_YOUNGSTER, 9
@@ -23,9 +23,4 @@
 	object SPRITE_SUPER_NERD, 45, 16, STAY, LEFT, 9, OPP_ENGINEER, 3
 	object SPRITE_YOUNGSTER, 22, 12, STAY, UP, 10, OPP_YOUNGSTER, 12
 
-	; warp-to
-	warp_to 49, 8, ROUTE_11_WIDTH ; ROUTE_11_GATE_1F
-	warp_to 49, 9, ROUTE_11_WIDTH ; ROUTE_11_GATE_1F
-	warp_to 58, 8, ROUTE_11_WIDTH ; ROUTE_11_GATE_1F
-	warp_to 58, 9, ROUTE_11_WIDTH ; ROUTE_11_GATE_1F
-	warp_to 4, 5, ROUTE_11_WIDTH ; DIGLETTS_CAVE_ROUTE_11
+	def_warps_to ROUTE_11
--- a/data/maps/objects/Route11Gate1F.asm
+++ b/data/maps/objects/Route11Gate1F.asm
@@ -1,7 +1,7 @@
 Route11Gate1F_Object:
 	db $a ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 0, 4, 0, LAST_MAP
 	warp 0, 5, 1, LAST_MAP
 	warp 7, 4, 2, LAST_MAP
@@ -8,14 +8,9 @@
 	warp 7, 5, 3, LAST_MAP
 	warp 6, 8, 0, ROUTE_11_GATE_2F
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_GUARD, 4, 1, STAY, NONE, 1 ; person
 
-	; warp-to
-	warp_to 0, 4, ROUTE_11_GATE_1F_WIDTH
-	warp_to 0, 5, ROUTE_11_GATE_1F_WIDTH
-	warp_to 7, 4, ROUTE_11_GATE_1F_WIDTH
-	warp_to 7, 5, ROUTE_11_GATE_1F_WIDTH
-	warp_to 6, 8, ROUTE_11_GATE_1F_WIDTH ; ROUTE_11_GATE_2F
+	def_warps_to ROUTE_11_GATE_1F
--- a/data/maps/objects/Route11Gate2F.asm
+++ b/data/maps/objects/Route11Gate2F.asm
@@ -1,16 +1,15 @@
 Route11Gate2F_Object:
 	db $a ; border block
 
-	db 1 ; warps
+	def_warps
 	warp 7, 7, 4, ROUTE_11_GATE_1F
 
-	db 2 ; signs
+	def_signs
 	sign 1, 2, 3 ; Route11GateUpstairsText3
 	sign 6, 2, 4 ; Route11GateUpstairsText4
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_YOUNGSTER, 4, 2, WALK, LEFT_RIGHT, 1 ; person
 	object SPRITE_SCIENTIST, 2, 6, STAY, NONE, 2 ; person
 
-	; warp-to
-	warp_to 7, 7, ROUTE_11_GATE_2F_WIDTH ; ROUTE_11_GATE_1F
+	def_warps_to ROUTE_11_GATE_2F
--- a/data/maps/objects/Route12.asm
+++ b/data/maps/objects/Route12.asm
@@ -1,17 +1,17 @@
 Route12_Object:
 	db $43 ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 10, 15, 0, ROUTE_12_GATE_1F
 	warp 11, 15, 1, ROUTE_12_GATE_1F
 	warp 10, 21, 2, ROUTE_12_GATE_1F
 	warp 11, 77, 0, ROUTE_12_SUPER_ROD_HOUSE
 
-	db 2 ; signs
+	def_signs
 	sign 13, 13, 11 ; Route12Text11
 	sign 11, 63, 12 ; Route12Text12
 
-	db 10 ; objects
+	def_objects
 	object SPRITE_SNORLAX, 10, 62, STAY, DOWN, 1 ; person
 	object SPRITE_FISHER, 14, 31, STAY, LEFT, 2, OPP_FISHER, 3
 	object SPRITE_FISHER, 5, 39, STAY, UP, 3, OPP_FISHER, 4
@@ -23,8 +23,4 @@
 	object SPRITE_POKE_BALL, 14, 35, STAY, NONE, 9, TM_PAY_DAY
 	object SPRITE_POKE_BALL, 5, 89, STAY, NONE, 10, IRON
 
-	; warp-to
-	warp_to 10, 15, ROUTE_12_WIDTH ; ROUTE_12_GATE_1F
-	warp_to 11, 15, ROUTE_12_WIDTH ; ROUTE_12_GATE_1F
-	warp_to 10, 21, ROUTE_12_WIDTH ; ROUTE_12_GATE_1F
-	warp_to 11, 77, ROUTE_12_WIDTH ; ROUTE_12_SUPER_ROD_HOUSE
+	def_warps_to ROUTE_12
--- a/data/maps/objects/Route12Gate1F.asm
+++ b/data/maps/objects/Route12Gate1F.asm
@@ -1,7 +1,7 @@
 Route12Gate1F_Object:
 	db $a ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 4, 0, 0, LAST_MAP
 	warp 5, 0, 1, LAST_MAP
 	warp 4, 7, 2, LAST_MAP
@@ -8,14 +8,9 @@
 	warp 5, 7, 2, LAST_MAP
 	warp 8, 6, 0, ROUTE_12_GATE_2F
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_GUARD, 1, 3, STAY, NONE, 1 ; person
 
-	; warp-to
-	warp_to 4, 0, ROUTE_12_GATE_1F_WIDTH
-	warp_to 5, 0, ROUTE_12_GATE_1F_WIDTH
-	warp_to 4, 7, ROUTE_12_GATE_1F_WIDTH
-	warp_to 5, 7, ROUTE_12_GATE_1F_WIDTH
-	warp_to 8, 6, ROUTE_12_GATE_1F_WIDTH ; ROUTE_12_GATE_2F
+	def_warps_to ROUTE_12_GATE_1F
--- a/data/maps/objects/Route12Gate2F.asm
+++ b/data/maps/objects/Route12Gate2F.asm
@@ -1,15 +1,14 @@
 Route12Gate2F_Object:
 	db $a ; border block
 
-	db 1 ; warps
+	def_warps
 	warp 7, 7, 4, ROUTE_12_GATE_1F
 
-	db 2 ; signs
+	def_signs
 	sign 1, 2, 2 ; Route12GateUpstairsText2
 	sign 6, 2, 3 ; Route12GateUpstairsText3
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_BRUNETTE_GIRL, 3, 4, WALK, UP_DOWN, 1 ; person
 
-	; warp-to
-	warp_to 7, 7, ROUTE_12_GATE_2F_WIDTH ; ROUTE_12_GATE_1F
+	def_warps_to ROUTE_12_GATE_2F
--- a/data/maps/objects/Route12SuperRodHouse.asm
+++ b/data/maps/objects/Route12SuperRodHouse.asm
@@ -1,15 +1,13 @@
 Route12SuperRodHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 3, LAST_MAP
 	warp 3, 7, 3, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_FISHING_GURU, 2, 4, STAY, RIGHT, 1 ; person
 
-	; warp-to
-	warp_to 2, 7, ROUTE_12_SUPER_ROD_HOUSE_WIDTH
-	warp_to 3, 7, ROUTE_12_SUPER_ROD_HOUSE_WIDTH
+	def_warps_to ROUTE_12_SUPER_ROD_HOUSE
--- a/data/maps/objects/Route13.asm
+++ b/data/maps/objects/Route13.asm
@@ -1,14 +1,14 @@
 Route13_Object:
 	db $43 ; border block
 
-	db 0 ; warps
+	def_warps
 
-	db 3 ; signs
+	def_signs
 	sign 15, 13, 11 ; Route13Text11
 	sign 33, 5, 12 ; Route13Text12
 	sign 31, 11, 13 ; Route13Text13
 
-	db 10 ; objects
+	def_objects
 	object SPRITE_COOLTRAINER_M, 49, 10, STAY, RIGHT, 1, OPP_BIRD_KEEPER, 1
 	object SPRITE_COOLTRAINER_F, 48, 10, STAY, DOWN, 2, OPP_JR_TRAINER_F, 12
 	object SPRITE_COOLTRAINER_F, 27, 9, STAY, DOWN, 3, OPP_JR_TRAINER_F, 13
@@ -19,3 +19,5 @@
 	object SPRITE_BEAUTY, 32, 6, STAY, DOWN, 8, OPP_BEAUTY, 5
 	object SPRITE_BIKER, 10, 7, STAY, UP, 9, OPP_BIKER, 1
 	object SPRITE_COOLTRAINER_M, 7, 13, STAY, UP, 10, OPP_BIRD_KEEPER, 3
+
+	def_warps_to ROUTE_13
--- a/data/maps/objects/Route14.asm
+++ b/data/maps/objects/Route14.asm
@@ -1,12 +1,12 @@
 Route14_Object:
 	db $43 ; border block
 
-	db 0 ; warps
+	def_warps
 
-	db 1 ; signs
+	def_signs
 	sign 17, 13, 11 ; Route14Text11
 
-	db 10 ; objects
+	def_objects
 	object SPRITE_COOLTRAINER_M, 4, 4, STAY, DOWN, 1, OPP_BIRD_KEEPER, 14
 	object SPRITE_COOLTRAINER_M, 15, 6, STAY, DOWN, 2, OPP_BIRD_KEEPER, 15
 	object SPRITE_COOLTRAINER_M, 12, 11, STAY, DOWN, 3, OPP_BIRD_KEEPER, 16
@@ -17,3 +17,5 @@
 	object SPRITE_BIKER, 4, 30, STAY, RIGHT, 8, OPP_BIKER, 14
 	object SPRITE_BIKER, 15, 30, STAY, LEFT, 9, OPP_BIKER, 15
 	object SPRITE_BIKER, 4, 31, STAY, RIGHT, 10, OPP_BIKER, 2
+
+	def_warps_to ROUTE_14
--- a/data/maps/objects/Route15.asm
+++ b/data/maps/objects/Route15.asm
@@ -1,16 +1,16 @@
 Route15_Object:
 	db $43 ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 7, 8, 0, ROUTE_15_GATE_1F
 	warp 7, 9, 1, ROUTE_15_GATE_1F
 	warp 14, 8, 2, ROUTE_15_GATE_1F
 	warp 14, 9, 3, ROUTE_15_GATE_1F
 
-	db 1 ; signs
+	def_signs
 	sign 39, 9, 12 ; Route15Text12
 
-	db 11 ; objects
+	def_objects
 	object SPRITE_COOLTRAINER_F, 41, 11, STAY, DOWN, 1, OPP_JR_TRAINER_F, 20
 	object SPRITE_COOLTRAINER_F, 53, 10, STAY, LEFT, 2, OPP_JR_TRAINER_F, 21
 	object SPRITE_COOLTRAINER_M, 31, 13, STAY, UP, 3, OPP_BIRD_KEEPER, 6
@@ -23,8 +23,4 @@
 	object SPRITE_COOLTRAINER_F, 18, 13, STAY, UP, 10, OPP_JR_TRAINER_F, 23
 	object SPRITE_POKE_BALL, 18, 5, STAY, NONE, 11, TM_RAGE
 
-	; warp-to
-	warp_to 7, 8, ROUTE_15_WIDTH ; ROUTE_15_GATE_1F
-	warp_to 7, 9, ROUTE_15_WIDTH ; ROUTE_15_GATE_1F
-	warp_to 14, 8, ROUTE_15_WIDTH ; ROUTE_15_GATE_1F
-	warp_to 14, 9, ROUTE_15_WIDTH ; ROUTE_15_GATE_1F
+	def_warps_to ROUTE_15
--- a/data/maps/objects/Route15Gate1F.asm
+++ b/data/maps/objects/Route15Gate1F.asm
@@ -1,7 +1,7 @@
 Route15Gate1F_Object:
 	db $a ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 0, 4, 0, LAST_MAP
 	warp 0, 5, 1, LAST_MAP
 	warp 7, 4, 2, LAST_MAP
@@ -8,14 +8,9 @@
 	warp 7, 5, 3, LAST_MAP
 	warp 6, 8, 0, ROUTE_15_GATE_2F
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_GUARD, 4, 1, STAY, NONE, 1 ; person
 
-	; warp-to
-	warp_to 0, 4, ROUTE_15_GATE_1F_WIDTH
-	warp_to 0, 5, ROUTE_15_GATE_1F_WIDTH
-	warp_to 7, 4, ROUTE_15_GATE_1F_WIDTH
-	warp_to 7, 5, ROUTE_15_GATE_1F_WIDTH
-	warp_to 6, 8, ROUTE_15_GATE_1F_WIDTH ; ROUTE_15_GATE_2F
+	def_warps_to ROUTE_15_GATE_1F
--- a/data/maps/objects/Route15Gate2F.asm
+++ b/data/maps/objects/Route15Gate2F.asm
@@ -1,14 +1,13 @@
 Route15Gate2F_Object:
 	db $a ; border block
 
-	db 1 ; warps
+	def_warps
 	warp 7, 7, 4, ROUTE_15_GATE_1F
 
-	db 1 ; signs
+	def_signs
 	sign 6, 2, 2 ; Route15GateUpstairsText2
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_SCIENTIST, 4, 2, STAY, DOWN, 1
 
-	; warp-to
-	warp_to 7, 7, ROUTE_15_GATE_2F_WIDTH ; ROUTE_15_GATE_1F
+	def_warps_to ROUTE_15_GATE_2F
--- a/data/maps/objects/Route16.asm
+++ b/data/maps/objects/Route16.asm
@@ -1,7 +1,7 @@
 Route16_Object:
 	db $f ; border block
 
-	db 9 ; warps
+	def_warps
 	warp 17, 10, 0, ROUTE_16_GATE_1F
 	warp 17, 11, 1, ROUTE_16_GATE_1F
 	warp 24, 10, 2, ROUTE_16_GATE_1F
@@ -12,11 +12,11 @@
 	warp 24, 5, 7, ROUTE_16_GATE_1F
 	warp 7, 5, 0, ROUTE_16_FLY_HOUSE
 
-	db 2 ; signs
+	def_signs
 	sign 27, 11, 8 ; Route16Text8
 	sign 5, 17, 9 ; Route16Text9
 
-	db 7 ; objects
+	def_objects
 	object SPRITE_BIKER, 17, 12, STAY, LEFT, 1, OPP_BIKER, 5
 	object SPRITE_BIKER, 14, 13, STAY, RIGHT, 2, OPP_CUE_BALL, 1
 	object SPRITE_BIKER, 11, 12, STAY, UP, 3, OPP_CUE_BALL, 2
@@ -25,13 +25,4 @@
 	object SPRITE_BIKER, 3, 12, STAY, RIGHT, 6, OPP_BIKER, 7
 	object SPRITE_SNORLAX, 26, 10, STAY, DOWN, 7 ; person
 
-	; warp-to
-	warp_to 17, 10, ROUTE_16_WIDTH ; ROUTE_16_GATE_1F
-	warp_to 17, 11, ROUTE_16_WIDTH ; ROUTE_16_GATE_1F
-	warp_to 24, 10, ROUTE_16_WIDTH ; ROUTE_16_GATE_1F
-	warp_to 24, 11, ROUTE_16_WIDTH ; ROUTE_16_GATE_1F
-	warp_to 17, 4, ROUTE_16_WIDTH ; ROUTE_16_GATE_1F
-	warp_to 17, 5, ROUTE_16_WIDTH ; ROUTE_16_GATE_1F
-	warp_to 24, 4, ROUTE_16_WIDTH ; ROUTE_16_GATE_1F
-	warp_to 24, 5, ROUTE_16_WIDTH ; ROUTE_16_GATE_1F
-	warp_to 7, 5, ROUTE_16_WIDTH ; ROUTE_16_FLY_HOUSE
+	def_warps_to ROUTE_16
--- a/data/maps/objects/Route16FlyHouse.asm
+++ b/data/maps/objects/Route16FlyHouse.asm
@@ -1,16 +1,14 @@
 Route16FlyHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 8, LAST_MAP
 	warp 3, 7, 8, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_BRUNETTE_GIRL, 2, 3, STAY, RIGHT, 1 ; person
 	object SPRITE_BIRD, 6, 4, WALK, ANY_DIR, 2 ; person
 
-	; warp-to
-	warp_to 2, 7, ROUTE_16_FLY_HOUSE_WIDTH
-	warp_to 3, 7, ROUTE_16_FLY_HOUSE_WIDTH
+	def_warps_to ROUTE_16_FLY_HOUSE
--- a/data/maps/objects/Route16Gate1F.asm
+++ b/data/maps/objects/Route16Gate1F.asm
@@ -1,7 +1,7 @@
 Route16Gate1F_Object:
 	db $a ; border block
 
-	db 9 ; warps
+	def_warps
 	warp 0, 8, 0, LAST_MAP
 	warp 0, 9, 1, LAST_MAP
 	warp 7, 8, 2, LAST_MAP
@@ -12,19 +12,10 @@
 	warp 7, 3, 7, LAST_MAP
 	warp 6, 12, 0, ROUTE_16_GATE_2F
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_GUARD, 4, 5, STAY, DOWN, 1 ; person
 	object SPRITE_GAMBLER, 4, 3, STAY, NONE, 2 ; person
 
-	; warp-to
-	warp_to 0, 8, ROUTE_16_GATE_1F_WIDTH
-	warp_to 0, 9, ROUTE_16_GATE_1F_WIDTH
-	warp_to 7, 8, ROUTE_16_GATE_1F_WIDTH
-	warp_to 7, 9, ROUTE_16_GATE_1F_WIDTH
-	warp_to 0, 2, ROUTE_16_GATE_1F_WIDTH
-	warp_to 0, 3, ROUTE_16_GATE_1F_WIDTH
-	warp_to 7, 2, ROUTE_16_GATE_1F_WIDTH
-	warp_to 7, 3, ROUTE_16_GATE_1F_WIDTH
-	warp_to 6, 12, ROUTE_16_GATE_1F_WIDTH ; ROUTE_16_GATE_2F
+	def_warps_to ROUTE_16_GATE_1F
--- a/data/maps/objects/Route16Gate2F.asm
+++ b/data/maps/objects/Route16Gate2F.asm
@@ -1,16 +1,15 @@
 Route16Gate2F_Object:
 	db $a ; border block
 
-	db 1 ; warps
+	def_warps
 	warp 7, 7, 8, ROUTE_16_GATE_1F
 
-	db 2 ; signs
+	def_signs
 	sign 1, 2, 3 ; Route16GateUpstairsText3
 	sign 6, 2, 4 ; Route16GateUpstairsText4
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_LITTLE_BOY, 4, 2, STAY, NONE, 1 ; person
 	object SPRITE_LITTLE_GIRL, 2, 5, WALK, LEFT_RIGHT, 2 ; person
 
-	; warp-to
-	warp_to 7, 7, ROUTE_16_GATE_2F_WIDTH ; ROUTE_16_GATE_1F
+	def_warps_to ROUTE_16_GATE_2F
--- a/data/maps/objects/Route17.asm
+++ b/data/maps/objects/Route17.asm
@@ -1,9 +1,9 @@
 Route17_Object:
 	db $43 ; border block
 
-	db 0 ; warps
+	def_warps
 
-	db 6 ; signs
+	def_signs
 	sign 9, 51, 11 ; Route17Text11
 	sign 9, 63, 12 ; Route17Text12
 	sign 9, 75, 13 ; Route17Text13
@@ -11,7 +11,7 @@
 	sign 9, 111, 15 ; Route17Text15
 	sign 9, 141, 16 ; Route17Text16
 
-	db 10 ; objects
+	def_objects
 	object SPRITE_BIKER, 12, 19, STAY, LEFT, 1, OPP_CUE_BALL, 4
 	object SPRITE_BIKER, 11, 16, STAY, RIGHT, 2, OPP_CUE_BALL, 5
 	object SPRITE_BIKER, 4, 18, STAY, UP, 3, OPP_BIKER, 8
@@ -22,3 +22,5 @@
 	object SPRITE_BIKER, 14, 98, STAY, RIGHT, 8, OPP_CUE_BALL, 8
 	object SPRITE_BIKER, 5, 98, STAY, LEFT, 9, OPP_BIKER, 11
 	object SPRITE_BIKER, 10, 118, STAY, DOWN, 10, OPP_BIKER, 12
+
+	def_warps_to ROUTE_17
--- a/data/maps/objects/Route18.asm
+++ b/data/maps/objects/Route18.asm
@@ -1,23 +1,19 @@
 Route18_Object:
 	db $43 ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 33, 8, 0, ROUTE_18_GATE_1F
 	warp 33, 9, 1, ROUTE_18_GATE_1F
 	warp 40, 8, 2, ROUTE_18_GATE_1F
 	warp 40, 9, 3, ROUTE_18_GATE_1F
 
-	db 2 ; signs
+	def_signs
 	sign 43, 7, 4 ; Route18Text4
 	sign 33, 5, 5 ; Route18Text5
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_COOLTRAINER_M, 36, 11, STAY, RIGHT, 1, OPP_BIRD_KEEPER, 8
 	object SPRITE_COOLTRAINER_M, 40, 15, STAY, LEFT, 2, OPP_BIRD_KEEPER, 9
 	object SPRITE_COOLTRAINER_M, 42, 13, STAY, LEFT, 3, OPP_BIRD_KEEPER, 10
 
-	; warp-to
-	warp_to 33, 8, ROUTE_18_WIDTH ; ROUTE_18_GATE_1F
-	warp_to 33, 9, ROUTE_18_WIDTH ; ROUTE_18_GATE_1F
-	warp_to 40, 8, ROUTE_18_WIDTH ; ROUTE_18_GATE_1F
-	warp_to 40, 9, ROUTE_18_WIDTH ; ROUTE_18_GATE_1F
+	def_warps_to ROUTE_18
--- a/data/maps/objects/Route18Gate1F.asm
+++ b/data/maps/objects/Route18Gate1F.asm
@@ -1,7 +1,7 @@
 Route18Gate1F_Object:
 	db $a ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 0, 4, 0, LAST_MAP
 	warp 0, 5, 1, LAST_MAP
 	warp 7, 4, 2, LAST_MAP
@@ -8,14 +8,9 @@
 	warp 7, 5, 3, LAST_MAP
 	warp 6, 8, 0, ROUTE_18_GATE_2F
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_GUARD, 4, 1, STAY, DOWN, 1 ; person
 
-	; warp-to
-	warp_to 0, 4, ROUTE_18_GATE_1F_WIDTH
-	warp_to 0, 5, ROUTE_18_GATE_1F_WIDTH
-	warp_to 7, 4, ROUTE_18_GATE_1F_WIDTH
-	warp_to 7, 5, ROUTE_18_GATE_1F_WIDTH
-	warp_to 6, 8, ROUTE_18_GATE_1F_WIDTH ; ROUTE_18_GATE_2F
+	def_warps_to ROUTE_18_GATE_1F
--- a/data/maps/objects/Route18Gate2F.asm
+++ b/data/maps/objects/Route18Gate2F.asm
@@ -1,15 +1,14 @@
 Route18Gate2F_Object:
 	db $a ; border block
 
-	db 1 ; warps
+	def_warps
 	warp 7, 7, 4, ROUTE_18_GATE_1F
 
-	db 2 ; signs
+	def_signs
 	sign 1, 2, 2 ; Route18GateUpstairsText2
 	sign 6, 2, 3 ; Route18GateUpstairsText3
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_YOUNGSTER, 4, 2, WALK, LEFT_RIGHT, 1 ; person
 
-	; warp-to
-	warp_to 7, 7, ROUTE_18_GATE_2F_WIDTH ; ROUTE_18_GATE_1F
+	def_warps_to ROUTE_18_GATE_2F
--- a/data/maps/objects/Route19.asm
+++ b/data/maps/objects/Route19.asm
@@ -1,12 +1,12 @@
 Route19_Object:
 	db $43 ; border block
 
-	db 0 ; warps
+	def_warps
 
-	db 1 ; signs
+	def_signs
 	sign 11, 9, 11 ; Route19Text11
 
-	db 10 ; objects
+	def_objects
 	object SPRITE_COOLTRAINER_M, 8, 7, STAY, LEFT, 1, OPP_SWIMMER, 2
 	object SPRITE_COOLTRAINER_M, 13, 7, STAY, LEFT, 2, OPP_SWIMMER, 3
 	object SPRITE_SWIMMER, 13, 25, STAY, LEFT, 3, OPP_SWIMMER, 4
@@ -18,4 +18,4 @@
 	object SPRITE_SWIMMER, 9, 42, STAY, UP, 9, OPP_SWIMMER, 8
 	object SPRITE_SWIMMER, 10, 44, STAY, DOWN, 10, OPP_BEAUTY, 14
 
-	; warp-to
+	def_warps_to ROUTE_19
--- a/data/maps/objects/Route2.asm
+++ b/data/maps/objects/Route2.asm
@@ -1,7 +1,7 @@
 Route2_Object:
 	db $f ; border block
 
-	db 6 ; warps
+	def_warps
 	warp 12, 9, 0, DIGLETTS_CAVE_ROUTE_2
 	warp 3, 11, 1, VIRIDIAN_FOREST_NORTH_GATE
 	warp 15, 19, 0, ROUTE_2_TRADE_HOUSE
@@ -9,21 +9,15 @@
 	warp 15, 39, 2, ROUTE_2_GATE
 	warp 3, 43, 2, VIRIDIAN_FOREST_SOUTH_GATE
 
-	db 2 ; signs
+	def_signs
 	sign 5, 65, 3 ; Route2Text3
 	sign 11, 11, 4 ; Route2Text4
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_POKE_BALL, 13, 54, STAY, NONE, 1, MOON_STONE
 	object SPRITE_POKE_BALL, 13, 45, STAY, NONE, 2, HP_UP
 
-	; warp-to
-	warp_to 12, 9, ROUTE_2_WIDTH ; DIGLETTS_CAVE_ROUTE_2
-	warp_to 3, 11, ROUTE_2_WIDTH ; VIRIDIAN_FOREST_NORTH_GATE
-	warp_to 15, 19, ROUTE_2_WIDTH ; ROUTE_2_TRADE_HOUSE
-	warp_to 16, 35, ROUTE_2_WIDTH ; ROUTE_2_GATE
-	warp_to 15, 39, ROUTE_2_WIDTH ; ROUTE_2_GATE
-	warp_to 3, 43, ROUTE_2_WIDTH ; VIRIDIAN_FOREST_SOUTH_GATE
+	def_warps_to ROUTE_2
 
 	; unused
 	warp_to 2, 7, 4
--- a/data/maps/objects/Route20.asm
+++ b/data/maps/objects/Route20.asm
@@ -1,15 +1,15 @@
 Route20_Object:
 	db $43 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 48, 5, 0, SEAFOAM_ISLANDS_1F
 	warp 58, 9, 2, SEAFOAM_ISLANDS_1F
 
-	db 2 ; signs
+	def_signs
 	sign 51, 7, 11 ; Route20Text11
 	sign 57, 11, 12 ; Route20Text12
 
-	db 10 ; objects
+	def_objects
 	object SPRITE_SWIMMER, 87, 8, STAY, UP, 1, OPP_SWIMMER, 9
 	object SPRITE_SWIMMER, 68, 11, STAY, UP, 2, OPP_BEAUTY, 15
 	object SPRITE_SWIMMER, 45, 10, STAY, DOWN, 3, OPP_BEAUTY, 6
@@ -21,6 +21,4 @@
 	object SPRITE_SWIMMER, 24, 12, STAY, DOWN, 9, OPP_JR_TRAINER_F, 16
 	object SPRITE_SWIMMER, 15, 8, STAY, UP, 10, OPP_BEAUTY, 8
 
-	; warp-to
-	warp_to 48, 5, ROUTE_20_WIDTH ; SEAFOAM_ISLANDS_1F
-	warp_to 58, 9, ROUTE_20_WIDTH ; SEAFOAM_ISLANDS_1F
+	def_warps_to ROUTE_20
--- a/data/maps/objects/Route21.asm
+++ b/data/maps/objects/Route21.asm
@@ -1,11 +1,11 @@
 Route21_Object:
 	db $43 ; border block
 
-	db 0 ; warps
+	def_warps
 
-	db 0 ; signs
+	def_signs
 
-	db 9 ; objects
+	def_objects
 	object SPRITE_FISHER, 4, 24, STAY, LEFT, 1, OPP_FISHER, 7
 	object SPRITE_FISHER, 6, 25, STAY, DOWN, 2, OPP_FISHER, 9
 	object SPRITE_SWIMMER, 10, 31, STAY, UP, 3, OPP_SWIMMER, 12
@@ -15,3 +15,5 @@
 	object SPRITE_SWIMMER, 15, 71, STAY, LEFT, 7, OPP_SWIMMER, 15
 	object SPRITE_FISHER, 14, 56, STAY, LEFT, 8, OPP_FISHER, 8
 	object SPRITE_FISHER, 17, 57, STAY, RIGHT, 9, OPP_FISHER, 10
+
+	def_warps_to ROUTE_21
--- a/data/maps/objects/Route22.asm
+++ b/data/maps/objects/Route22.asm
@@ -1,15 +1,14 @@
 Route22_Object:
 	db $2c ; border block
 
-	db 1 ; warps
+	def_warps
 	warp 8, 5, 0, ROUTE_22_GATE
 
-	db 1 ; signs
+	def_signs
 	sign 7, 11, 3 ; Route22FrontGateText
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_BLUE, 25, 5, STAY, NONE, 1 ; person
 	object SPRITE_BLUE, 25, 5, STAY, NONE, 2 ; person
 
-	; warp-to
-	warp_to 8, 5, ROUTE_22_WIDTH ; ROUTE_22_GATE
+	def_warps_to ROUTE_22
--- a/data/maps/objects/Route22Gate.asm
+++ b/data/maps/objects/Route22Gate.asm
@@ -1,19 +1,15 @@
 Route22Gate_Object:
 	db $a ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 4, 7, 0, LAST_MAP
 	warp 5, 7, 0, LAST_MAP
 	warp 4, 0, 0, LAST_MAP
 	warp 5, 0, 1, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_GUARD, 6, 2, STAY, LEFT, 1 ; person
 
-	; warp-to
-	warp_to 4, 7, ROUTE_22_GATE_WIDTH
-	warp_to 5, 7, ROUTE_22_GATE_WIDTH
-	warp_to 4, 0, ROUTE_22_GATE_WIDTH
-	warp_to 5, 0, ROUTE_22_GATE_WIDTH
+	def_warps_to ROUTE_22_GATE
--- a/data/maps/objects/Route23.asm
+++ b/data/maps/objects/Route23.asm
@@ -1,16 +1,16 @@
 Route23_Object:
 	db $f ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 7, 139, 2, ROUTE_22_GATE
 	warp 8, 139, 3, ROUTE_22_GATE
 	warp 4, 31, 0, VICTORY_ROAD_1F
 	warp 14, 31, 1, VICTORY_ROAD_2F
 
-	db 1 ; signs
+	def_signs
 	sign 3, 33, 8 ; Route23Text8
 
-	db 7 ; objects
+	def_objects
 	object SPRITE_GUARD, 4, 35, STAY, DOWN, 1 ; person
 	object SPRITE_GUARD, 10, 56, STAY, DOWN, 2 ; person
 	object SPRITE_SWIMMER, 8, 85, STAY, DOWN, 3 ; person
@@ -19,8 +19,4 @@
 	object SPRITE_GUARD, 8, 119, STAY, DOWN, 6 ; person
 	object SPRITE_GUARD, 8, 136, STAY, DOWN, 7 ; person
 
-	; warp-to
-	warp_to 7, 139, ROUTE_23_WIDTH ; ROUTE_22_GATE
-	warp_to 8, 139, ROUTE_23_WIDTH ; ROUTE_22_GATE
-	warp_to 4, 31, ROUTE_23_WIDTH ; VICTORY_ROAD_1F
-	warp_to 14, 31, ROUTE_23_WIDTH ; VICTORY_ROAD_2F
+	def_warps_to ROUTE_23
--- a/data/maps/objects/Route24.asm
+++ b/data/maps/objects/Route24.asm
@@ -1,11 +1,11 @@
 Route24_Object:
 	db $2c ; border block
 
-	db 0 ; warps
+	def_warps
 
-	db 0 ; signs
+	def_signs
 
-	db 8 ; objects
+	def_objects
 	object SPRITE_COOLTRAINER_M, 11, 15, STAY, LEFT, 1, OPP_ROCKET, 6
 	object SPRITE_COOLTRAINER_M, 5, 20, STAY, UP, 2, OPP_JR_TRAINER_M, 2
 	object SPRITE_COOLTRAINER_M, 11, 19, STAY, LEFT, 3, OPP_JR_TRAINER_M, 3
@@ -14,3 +14,5 @@
 	object SPRITE_COOLTRAINER_F, 10, 28, STAY, RIGHT, 6, OPP_LASS, 8
 	object SPRITE_YOUNGSTER, 11, 31, STAY, LEFT, 7, OPP_BUG_CATCHER, 9
 	object SPRITE_POKE_BALL, 10, 5, STAY, NONE, 8, TM_THUNDER_WAVE
+
+	def_warps_to ROUTE_24
--- a/data/maps/objects/Route25.asm
+++ b/data/maps/objects/Route25.asm
@@ -1,13 +1,13 @@
 Route25_Object:
 	db $2c ; border block
 
-	db 1 ; warps
+	def_warps
 	warp 45, 3, 0, BILLS_HOUSE
 
-	db 1 ; signs
+	def_signs
 	sign 43, 3, 11 ; Route25Text11
 
-	db 10 ; objects
+	def_objects
 	object SPRITE_YOUNGSTER, 14, 2, STAY, DOWN, 1, OPP_YOUNGSTER, 5
 	object SPRITE_YOUNGSTER, 18, 5, STAY, UP, 2, OPP_YOUNGSTER, 6
 	object SPRITE_COOLTRAINER_M, 24, 4, STAY, DOWN, 3, OPP_JR_TRAINER_M, 2
@@ -19,5 +19,4 @@
 	object SPRITE_HIKER, 13, 7, STAY, RIGHT, 9, OPP_HIKER, 4
 	object SPRITE_POKE_BALL, 22, 2, STAY, NONE, 10, TM_SEISMIC_TOSS
 
-	; warp-to
-	warp_to 45, 3, ROUTE_25_WIDTH ; BILLS_HOUSE
+	def_warps_to ROUTE_25
--- a/data/maps/objects/Route2Gate.asm
+++ b/data/maps/objects/Route2Gate.asm
@@ -1,20 +1,16 @@
 Route2Gate_Object:
 	db $a ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 4, 0, 3, LAST_MAP
 	warp 5, 0, 3, LAST_MAP
 	warp 4, 7, 4, LAST_MAP
 	warp 5, 7, 4, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_SCIENTIST, 1, 4, STAY, LEFT, 1 ; person
 	object SPRITE_YOUNGSTER, 5, 4, WALK, LEFT_RIGHT, 2 ; person
 
-	; warp-to
-	warp_to 4, 0, ROUTE_2_GATE_WIDTH
-	warp_to 5, 0, ROUTE_2_GATE_WIDTH
-	warp_to 4, 7, ROUTE_2_GATE_WIDTH
-	warp_to 5, 7, ROUTE_2_GATE_WIDTH
+	def_warps_to ROUTE_2_GATE
--- a/data/maps/objects/Route2TradeHouse.asm
+++ b/data/maps/objects/Route2TradeHouse.asm
@@ -1,16 +1,14 @@
 Route2TradeHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 2, LAST_MAP
 	warp 3, 7, 2, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_SCIENTIST, 2, 4, STAY, RIGHT, 1 ; person
 	object SPRITE_GAMEBOY_KID, 4, 1, STAY, DOWN, 2 ; person
 
-	; warp-to
-	warp_to 2, 7, ROUTE_2_TRADE_HOUSE_WIDTH
-	warp_to 3, 7, ROUTE_2_TRADE_HOUSE_WIDTH
+	def_warps_to ROUTE_2_TRADE_HOUSE
--- a/data/maps/objects/Route3.asm
+++ b/data/maps/objects/Route3.asm
@@ -1,12 +1,12 @@
 Route3_Object:
 	db $2c ; border block
 
-	db 0 ; warps
+	def_warps
 
-	db 1 ; signs
+	def_signs
 	sign 59, 9, 10 ; Route3Text10
 
-	db 9 ; objects
+	def_objects
 	object SPRITE_SUPER_NERD, 57, 11, STAY, NONE, 1 ; person
 	object SPRITE_YOUNGSTER, 10, 6, STAY, RIGHT, 2, OPP_BUG_CATCHER, 4
 	object SPRITE_YOUNGSTER, 14, 4, STAY, DOWN, 3, OPP_YOUNGSTER, 1
@@ -16,3 +16,5 @@
 	object SPRITE_YOUNGSTER, 22, 9, STAY, LEFT, 7, OPP_YOUNGSTER, 2
 	object SPRITE_YOUNGSTER, 24, 6, STAY, RIGHT, 8, OPP_BUG_CATCHER, 6
 	object SPRITE_COOLTRAINER_F, 33, 10, STAY, UP, 9, OPP_LASS, 3
+
+	def_warps_to ROUTE_3
--- a/data/maps/objects/Route4.asm
+++ b/data/maps/objects/Route4.asm
@@ -1,22 +1,19 @@
 Route4_Object:
 	db $2c ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 11, 5, 0, MT_MOON_POKECENTER
 	warp 18, 5, 0, MT_MOON_1F
 	warp 24, 5, 7, MT_MOON_B1F
 
-	db 3 ; signs
+	def_signs
 	sign 12, 5, 4 ; PokeCenterSignText
 	sign 17, 7, 5 ; Route4Text5
 	sign 27, 7, 6 ; Route4Text6
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_COOLTRAINER_F, 9, 8, WALK, ANY_DIR, 1 ; person
 	object SPRITE_COOLTRAINER_F, 63, 3, STAY, RIGHT, 2, OPP_LASS, 4
 	object SPRITE_POKE_BALL, 57, 3, STAY, NONE, 3, TM_WHIRLWIND
 
-	; warp-to
-	warp_to 11, 5, ROUTE_4_WIDTH ; MT_MOON_POKECENTER
-	warp_to 18, 5, ROUTE_4_WIDTH ; MT_MOON_1F
-	warp_to 24, 5, ROUTE_4_WIDTH ; MT_MOON_B1F
+	def_warps_to ROUTE_4
--- a/data/maps/objects/Route5.asm
+++ b/data/maps/objects/Route5.asm
@@ -1,7 +1,7 @@
 Route5_Object:
 	db $a ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 10, 29, 3, ROUTE_5_GATE
 	warp 9, 29, 2, ROUTE_5_GATE
 	warp 10, 33, 0, ROUTE_5_GATE
@@ -8,14 +8,9 @@
 	warp 17, 27, 0, UNDERGROUND_PATH_ROUTE_5
 	warp 10, 21, 0, DAYCARE
 
-	db 1 ; signs
+	def_signs
 	sign 17, 29, 1 ; Route5Text1
 
-	db 0 ; objects
+	def_objects
 
-	; warp-to
-	warp_to 10, 29, ROUTE_5_WIDTH ; ROUTE_5_GATE
-	warp_to 9, 29, ROUTE_5_WIDTH ; ROUTE_5_GATE
-	warp_to 10, 33, ROUTE_5_WIDTH ; ROUTE_5_GATE
-	warp_to 17, 27, ROUTE_5_WIDTH ; UNDERGROUND_PATH_ROUTE_5
-	warp_to 10, 21, ROUTE_5_WIDTH ; DAYCARE
+	def_warps_to ROUTE_5
--- a/data/maps/objects/Route5Gate.asm
+++ b/data/maps/objects/Route5Gate.asm
@@ -1,19 +1,15 @@
 Route5Gate_Object:
 	db $a ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 3, 5, 2, LAST_MAP
 	warp 4, 5, 2, LAST_MAP
 	warp 3, 0, 1, LAST_MAP
 	warp 4, 0, 0, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_GUARD, 1, 3, STAY, RIGHT, 1 ; person
 
-	; warp-to
-	warp_to 3, 5, ROUTE_5_GATE_WIDTH
-	warp_to 4, 5, ROUTE_5_GATE_WIDTH
-	warp_to 3, 0, ROUTE_5_GATE_WIDTH
-	warp_to 4, 0, ROUTE_5_GATE_WIDTH
+	def_warps_to ROUTE_5_GATE
--- a/data/maps/objects/Route6.asm
+++ b/data/maps/objects/Route6.asm
@@ -1,16 +1,16 @@
 Route6_Object:
 	db $f ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 9, 1, 2, ROUTE_6_GATE
 	warp 10, 1, 2, ROUTE_6_GATE
 	warp 10, 7, 0, ROUTE_6_GATE
 	warp 17, 13, 0, UNDERGROUND_PATH_ROUTE_6
 
-	db 1 ; signs
+	def_signs
 	sign 19, 15, 7 ; Route6Text7
 
-	db 6 ; objects
+	def_objects
 	object SPRITE_COOLTRAINER_M, 10, 21, STAY, RIGHT, 1, OPP_JR_TRAINER_M, 4
 	object SPRITE_COOLTRAINER_F, 11, 21, STAY, LEFT, 2, OPP_JR_TRAINER_F, 2
 	object SPRITE_YOUNGSTER, 0, 15, STAY, RIGHT, 3, OPP_BUG_CATCHER, 10
@@ -18,8 +18,4 @@
 	object SPRITE_COOLTRAINER_F, 11, 30, STAY, LEFT, 5, OPP_JR_TRAINER_F, 3
 	object SPRITE_YOUNGSTER, 19, 26, STAY, LEFT, 6, OPP_BUG_CATCHER, 11
 
-	; warp-to
-	warp_to 9, 1, ROUTE_6_WIDTH ; ROUTE_6_GATE
-	warp_to 10, 1, ROUTE_6_WIDTH ; ROUTE_6_GATE
-	warp_to 10, 7, ROUTE_6_WIDTH ; ROUTE_6_GATE
-	warp_to 17, 13, ROUTE_6_WIDTH ; UNDERGROUND_PATH_ROUTE_6
+	def_warps_to ROUTE_6
--- a/data/maps/objects/Route6Gate.asm
+++ b/data/maps/objects/Route6Gate.asm
@@ -1,19 +1,15 @@
 Route6Gate_Object:
 	db $a ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 3, 5, 2, LAST_MAP
 	warp 4, 5, 2, LAST_MAP
 	warp 3, 0, 1, LAST_MAP
 	warp 4, 0, 1, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_GUARD, 6, 2, STAY, LEFT, 1 ; person
 
-	; warp-to
-	warp_to 3, 5, ROUTE_6_GATE_WIDTH
-	warp_to 4, 5, ROUTE_6_GATE_WIDTH
-	warp_to 3, 0, ROUTE_6_GATE_WIDTH
-	warp_to 4, 0, ROUTE_6_GATE_WIDTH
+	def_warps_to ROUTE_6_GATE
--- a/data/maps/objects/Route7.asm
+++ b/data/maps/objects/Route7.asm
@@ -1,7 +1,7 @@
 Route7_Object:
 	db $f ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 18, 9, 2, ROUTE_7_GATE
 	warp 18, 10, 3, ROUTE_7_GATE
 	warp 11, 9, 0, ROUTE_7_GATE
@@ -8,14 +8,9 @@
 	warp 11, 10, 1, ROUTE_7_GATE
 	warp 5, 13, 0, UNDERGROUND_PATH_ROUTE_7
 
-	db 1 ; signs
+	def_signs
 	sign 3, 13, 1 ; Route7Text1
 
-	db 0 ; objects
+	def_objects
 
-	; warp-to
-	warp_to 18, 9, ROUTE_7_WIDTH ; ROUTE_7_GATE
-	warp_to 18, 10, ROUTE_7_WIDTH ; ROUTE_7_GATE
-	warp_to 11, 9, ROUTE_7_WIDTH ; ROUTE_7_GATE
-	warp_to 11, 10, ROUTE_7_WIDTH ; ROUTE_7_GATE
-	warp_to 5, 13, ROUTE_7_WIDTH ; UNDERGROUND_PATH_ROUTE_7
+	def_warps_to ROUTE_7
--- a/data/maps/objects/Route7Gate.asm
+++ b/data/maps/objects/Route7Gate.asm
@@ -1,19 +1,15 @@
 Route7Gate_Object:
 	db $a ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 0, 3, 3, LAST_MAP
 	warp 0, 4, 3, LAST_MAP
 	warp 5, 3, 0, LAST_MAP
 	warp 5, 4, 1, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_GUARD, 3, 1, STAY, DOWN, 1 ; person
 
-	; warp-to
-	warp_to 0, 3, ROUTE_7_GATE_WIDTH
-	warp_to 0, 4, ROUTE_7_GATE_WIDTH
-	warp_to 5, 3, ROUTE_7_GATE_WIDTH
-	warp_to 5, 4, ROUTE_7_GATE_WIDTH
+	def_warps_to ROUTE_7_GATE
--- a/data/maps/objects/Route8.asm
+++ b/data/maps/objects/Route8.asm
@@ -1,7 +1,7 @@
 Route8_Object:
 	db $2c ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 1, 9, 0, ROUTE_8_GATE
 	warp 1, 10, 1, ROUTE_8_GATE
 	warp 8, 9, 2, ROUTE_8_GATE
@@ -8,10 +8,10 @@
 	warp 8, 10, 3, ROUTE_8_GATE
 	warp 13, 3, 0, UNDERGROUND_PATH_ROUTE_8
 
-	db 1 ; signs
+	def_signs
 	sign 17, 3, 10 ; Route8Text10
 
-	db 9 ; objects
+	def_objects
 	object SPRITE_SUPER_NERD, 8, 5, STAY, RIGHT, 1, OPP_SUPER_NERD, 3
 	object SPRITE_GAMBLER, 13, 9, STAY, UP, 2, OPP_GAMBLER, 5
 	object SPRITE_SUPER_NERD, 42, 6, STAY, UP, 3, OPP_SUPER_NERD, 4
@@ -22,9 +22,4 @@
 	object SPRITE_GAMBLER, 46, 13, STAY, DOWN, 8, OPP_GAMBLER, 7
 	object SPRITE_COOLTRAINER_F, 51, 12, STAY, LEFT, 9, OPP_LASS, 16
 
-	; warp-to
-	warp_to 1, 9, ROUTE_8_WIDTH ; ROUTE_8_GATE
-	warp_to 1, 10, ROUTE_8_WIDTH ; ROUTE_8_GATE
-	warp_to 8, 9, ROUTE_8_WIDTH ; ROUTE_8_GATE
-	warp_to 8, 10, ROUTE_8_WIDTH ; ROUTE_8_GATE
-	warp_to 13, 3, ROUTE_8_WIDTH ; UNDERGROUND_PATH_ROUTE_8
+	def_warps_to ROUTE_8
--- a/data/maps/objects/Route8Gate.asm
+++ b/data/maps/objects/Route8Gate.asm
@@ -1,19 +1,15 @@
 Route8Gate_Object:
 	db $a ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 0, 3, 0, LAST_MAP
 	warp 0, 4, 1, LAST_MAP
 	warp 5, 3, 2, LAST_MAP
 	warp 5, 4, 3, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_GUARD, 2, 1, STAY, DOWN, 1 ; person
 
-	; warp-to
-	warp_to 0, 3, ROUTE_8_GATE_WIDTH
-	warp_to 0, 4, ROUTE_8_GATE_WIDTH
-	warp_to 5, 3, ROUTE_8_GATE_WIDTH
-	warp_to 5, 4, ROUTE_8_GATE_WIDTH
+	def_warps_to ROUTE_8_GATE
--- a/data/maps/objects/Route9.asm
+++ b/data/maps/objects/Route9.asm
@@ -1,12 +1,12 @@
 Route9_Object:
 	db $2c ; border block
 
-	db 0 ; warps
+	def_warps
 
-	db 1 ; signs
+	def_signs
 	sign 25, 7, 11 ; Route9Text11
 
-	db 10 ; objects
+	def_objects
 	object SPRITE_COOLTRAINER_F, 13, 10, STAY, LEFT, 1, OPP_JR_TRAINER_F, 5
 	object SPRITE_COOLTRAINER_M, 24, 7, STAY, LEFT, 2, OPP_JR_TRAINER_M, 7
 	object SPRITE_COOLTRAINER_M, 31, 7, STAY, RIGHT, 3, OPP_JR_TRAINER_M, 8
@@ -17,3 +17,5 @@
 	object SPRITE_HIKER, 45, 15, STAY, RIGHT, 8, OPP_HIKER, 5
 	object SPRITE_YOUNGSTER, 40, 8, STAY, RIGHT, 9, OPP_BUG_CATCHER, 14
 	object SPRITE_POKE_BALL, 10, 15, STAY, NONE, 10, TM_TELEPORT
+
+	def_warps_to ROUTE_9
--- a/data/maps/objects/SSAnne1F.asm
+++ b/data/maps/objects/SSAnne1F.asm
@@ -1,7 +1,7 @@
 SSAnne1F_Object:
 	db $c ; border block
 
-	db 11 ; warps
+	def_warps
 	warp 26, 0, 1, VERMILION_DOCK
 	warp 27, 0, 1, VERMILION_DOCK
 	warp 31, 8, 0, SS_ANNE_1F_ROOMS
@@ -14,21 +14,10 @@
 	warp 37, 15, 5, SS_ANNE_B1F
 	warp 3, 16, 0, SS_ANNE_KITCHEN
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_WAITER, 12, 6, WALK, LEFT_RIGHT, 1 ; person
 	object SPRITE_SAILOR, 27, 5, STAY, NONE, 2 ; person
 
-	; warp-to
-	warp_to 26, 0, SS_ANNE_1F_WIDTH ; VERMILION_DOCK
-	warp_to 27, 0, SS_ANNE_1F_WIDTH ; VERMILION_DOCK
-	warp_to 31, 8, SS_ANNE_1F_WIDTH ; SS_ANNE_1F_ROOMS
-	warp_to 23, 8, SS_ANNE_1F_WIDTH ; SS_ANNE_1F_ROOMS
-	warp_to 19, 8, SS_ANNE_1F_WIDTH ; SS_ANNE_1F_ROOMS
-	warp_to 15, 8, SS_ANNE_1F_WIDTH ; SS_ANNE_1F_ROOMS
-	warp_to 11, 8, SS_ANNE_1F_WIDTH ; SS_ANNE_1F_ROOMS
-	warp_to 7, 8, SS_ANNE_1F_WIDTH ; SS_ANNE_1F_ROOMS
-	warp_to 2, 6, SS_ANNE_1F_WIDTH ; SS_ANNE_2F
-	warp_to 37, 15, SS_ANNE_1F_WIDTH ; SS_ANNE_B1F
-	warp_to 3, 16, SS_ANNE_1F_WIDTH ; SS_ANNE_KITCHEN
+	def_warps_to SS_ANNE_1F
--- a/data/maps/objects/SSAnne1FRooms.asm
+++ b/data/maps/objects/SSAnne1FRooms.asm
@@ -1,7 +1,7 @@
 SSAnne1FRooms_Object:
 	db $c ; border block
 
-	db 6 ; warps
+	def_warps
 	warp 0, 0, 2, SS_ANNE_1F
 	warp 10, 0, 3, SS_ANNE_1F
 	warp 20, 0, 4, SS_ANNE_1F
@@ -9,9 +9,9 @@
 	warp 10, 10, 6, SS_ANNE_1F
 	warp 20, 10, 7, SS_ANNE_1F
 
-	db 0 ; signs
+	def_signs
 
-	db 11 ; objects
+	def_objects
 	object SPRITE_GENTLEMAN, 2, 3, STAY, LEFT, 1, OPP_GENTLEMAN, 1
 	object SPRITE_GENTLEMAN, 11, 4, STAY, UP, 2, OPP_GENTLEMAN, 2
 	object SPRITE_YOUNGSTER, 11, 14, STAY, UP, 3, OPP_YOUNGSTER, 8
@@ -24,10 +24,4 @@
 	object SPRITE_POKE_BALL, 12, 15, STAY, NONE, 10, TM_BODY_SLAM
 	object SPRITE_GENTLEMAN, 21, 13, WALK, LEFT_RIGHT, 11 ; person
 
-	; warp-to
-	warp_to 0, 0, SS_ANNE_1F_ROOMS_WIDTH ; SS_ANNE_1F
-	warp_to 10, 0, SS_ANNE_1F_ROOMS_WIDTH ; SS_ANNE_1F
-	warp_to 20, 0, SS_ANNE_1F_ROOMS_WIDTH ; SS_ANNE_1F
-	warp_to 0, 10, SS_ANNE_1F_ROOMS_WIDTH ; SS_ANNE_1F
-	warp_to 10, 10, SS_ANNE_1F_ROOMS_WIDTH ; SS_ANNE_1F
-	warp_to 20, 10, SS_ANNE_1F_ROOMS_WIDTH ; SS_ANNE_1F
+	def_warps_to SS_ANNE_1F_ROOMS
--- a/data/maps/objects/SSAnne2F.asm
+++ b/data/maps/objects/SSAnne2F.asm
@@ -1,7 +1,7 @@
 SSAnne2F_Object:
 	db $c ; border block
 
-	db 9 ; warps
+	def_warps
 	warp 9, 11, 0, SS_ANNE_2F_ROOMS
 	warp 13, 11, 2, SS_ANNE_2F_ROOMS
 	warp 17, 11, 4, SS_ANNE_2F_ROOMS
@@ -12,19 +12,10 @@
 	warp 2, 12, 1, SS_ANNE_3F
 	warp 36, 4, 0, SS_ANNE_CAPTAINS_ROOM
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_WAITER, 3, 7, WALK, UP_DOWN, 1 ; person
 	object SPRITE_BLUE, 36, 4, STAY, DOWN, 2, OPP_RIVAL1, 1
 
-	; warp-to
-	warp_to 9, 11, SS_ANNE_2F_WIDTH ; SS_ANNE_2F_ROOMS
-	warp_to 13, 11, SS_ANNE_2F_WIDTH ; SS_ANNE_2F_ROOMS
-	warp_to 17, 11, SS_ANNE_2F_WIDTH ; SS_ANNE_2F_ROOMS
-	warp_to 21, 11, SS_ANNE_2F_WIDTH ; SS_ANNE_2F_ROOMS
-	warp_to 25, 11, SS_ANNE_2F_WIDTH ; SS_ANNE_2F_ROOMS
-	warp_to 29, 11, SS_ANNE_2F_WIDTH ; SS_ANNE_2F_ROOMS
-	warp_to 2, 4, SS_ANNE_2F_WIDTH ; SS_ANNE_1F
-	warp_to 2, 12, SS_ANNE_2F_WIDTH ; SS_ANNE_3F
-	warp_to 36, 4, SS_ANNE_2F_WIDTH ; SS_ANNE_CAPTAINS_ROOM
+	def_warps_to SS_ANNE_2F
--- a/data/maps/objects/SSAnne2FRooms.asm
+++ b/data/maps/objects/SSAnne2FRooms.asm
@@ -1,7 +1,7 @@
 SSAnne2FRooms_Object:
 	db $c ; border block
 
-	db 12 ; warps
+	def_warps
 	warp 2, 5, 0, SS_ANNE_2F
 	warp 3, 5, 0, SS_ANNE_2F
 	warp 12, 5, 1, SS_ANNE_2F
@@ -15,9 +15,9 @@
 	warp 22, 15, 5, SS_ANNE_2F
 	warp 23, 15, 5, SS_ANNE_2F
 
-	db 0 ; signs
+	def_signs
 
-	db 13 ; objects
+	def_objects
 	object SPRITE_GENTLEMAN, 10, 2, STAY, RIGHT, 1, OPP_GENTLEMAN, 3
 	object SPRITE_FISHER, 13, 4, STAY, LEFT, 2, OPP_FISHER, 1
 	object SPRITE_GENTLEMAN, 0, 14, STAY, RIGHT, 3, OPP_GENTLEMAN, 5
@@ -32,16 +32,4 @@
 	object SPRITE_BRUNETTE_GIRL, 22, 12, STAY, LEFT, 12 ; person
 	object SPRITE_BEAUTY, 20, 12, STAY, RIGHT, 13 ; person
 
-	; warp-to
-	warp_to 2, 5, SS_ANNE_2F_ROOMS_WIDTH ; SS_ANNE_2F
-	warp_to 3, 5, SS_ANNE_2F_ROOMS_WIDTH ; SS_ANNE_2F
-	warp_to 12, 5, SS_ANNE_2F_ROOMS_WIDTH ; SS_ANNE_2F
-	warp_to 13, 5, SS_ANNE_2F_ROOMS_WIDTH ; SS_ANNE_2F
-	warp_to 22, 5, SS_ANNE_2F_ROOMS_WIDTH ; SS_ANNE_2F
-	warp_to 23, 5, SS_ANNE_2F_ROOMS_WIDTH ; SS_ANNE_2F
-	warp_to 2, 15, SS_ANNE_2F_ROOMS_WIDTH ; SS_ANNE_2F
-	warp_to 3, 15, SS_ANNE_2F_ROOMS_WIDTH ; SS_ANNE_2F
-	warp_to 12, 15, SS_ANNE_2F_ROOMS_WIDTH ; SS_ANNE_2F
-	warp_to 13, 15, SS_ANNE_2F_ROOMS_WIDTH ; SS_ANNE_2F
-	warp_to 22, 15, SS_ANNE_2F_ROOMS_WIDTH ; SS_ANNE_2F
-	warp_to 23, 15, SS_ANNE_2F_ROOMS_WIDTH ; SS_ANNE_2F
+	def_warps_to SS_ANNE_2F_ROOMS
--- a/data/maps/objects/SSAnne3F.asm
+++ b/data/maps/objects/SSAnne3F.asm
@@ -1,15 +1,13 @@
 SSAnne3F_Object:
 	db $c ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 0, 3, 0, SS_ANNE_BOW
 	warp 19, 3, 7, SS_ANNE_2F
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_SAILOR, 9, 3, WALK, LEFT_RIGHT, 1 ; person
 
-	; warp-to
-	warp_to 0, 3, SS_ANNE_3F_WIDTH ; SS_ANNE_BOW
-	warp_to 19, 3, SS_ANNE_3F_WIDTH ; SS_ANNE_2F
+	def_warps_to SS_ANNE_3F
--- a/data/maps/objects/SSAnneB1F.asm
+++ b/data/maps/objects/SSAnneB1F.asm
@@ -1,7 +1,7 @@
 SSAnneB1F_Object:
 	db $c ; border block
 
-	db 6 ; warps
+	def_warps
 	warp 23, 3, 8, SS_ANNE_B1F_ROOMS
 	warp 19, 3, 6, SS_ANNE_B1F_ROOMS
 	warp 15, 3, 4, SS_ANNE_B1F_ROOMS
@@ -9,14 +9,8 @@
 	warp 7, 3, 0, SS_ANNE_B1F_ROOMS
 	warp 27, 5, 9, SS_ANNE_1F
 
-	db 0 ; signs
+	def_signs
 
-	db 0 ; objects
+	def_objects
 
-	; warp-to
-	warp_to 23, 3, SS_ANNE_B1F_WIDTH ; SS_ANNE_B1F_ROOMS
-	warp_to 19, 3, SS_ANNE_B1F_WIDTH ; SS_ANNE_B1F_ROOMS
-	warp_to 15, 3, SS_ANNE_B1F_WIDTH ; SS_ANNE_B1F_ROOMS
-	warp_to 11, 3, SS_ANNE_B1F_WIDTH ; SS_ANNE_B1F_ROOMS
-	warp_to 7, 3, SS_ANNE_B1F_WIDTH ; SS_ANNE_B1F_ROOMS
-	warp_to 27, 5, SS_ANNE_B1F_WIDTH ; SS_ANNE_1F
+	def_warps_to SS_ANNE_B1F
--- a/data/maps/objects/SSAnneB1FRooms.asm
+++ b/data/maps/objects/SSAnneB1FRooms.asm
@@ -1,7 +1,7 @@
 SSAnneB1FRooms_Object:
 	db $c ; border block
 
-	db 10 ; warps
+	def_warps
 	warp 2, 5, 4, SS_ANNE_B1F
 	warp 3, 5, 4, SS_ANNE_B1F
 	warp 12, 5, 3, SS_ANNE_B1F
@@ -13,9 +13,9 @@
 	warp 12, 15, 0, SS_ANNE_B1F
 	warp 13, 15, 0, SS_ANNE_B1F
 
-	db 0 ; signs
+	def_signs
 
-	db 11 ; objects
+	def_objects
 	object SPRITE_SAILOR, 0, 13, STAY, DOWN, 1, OPP_SAILOR, 3
 	object SPRITE_SAILOR, 2, 11, STAY, DOWN, 2, OPP_SAILOR, 4
 	object SPRITE_SAILOR, 12, 3, STAY, LEFT, 3, OPP_SAILOR, 5
@@ -28,14 +28,4 @@
 	object SPRITE_POKE_BALL, 10, 2, STAY, NONE, 10, TM_REST
 	object SPRITE_POKE_BALL, 12, 11, STAY, NONE, 11, MAX_POTION
 
-	; warp-to
-	warp_to 2, 5, SS_ANNE_B1F_ROOMS_WIDTH ; SS_ANNE_B1F
-	warp_to 3, 5, SS_ANNE_B1F_ROOMS_WIDTH ; SS_ANNE_B1F
-	warp_to 12, 5, SS_ANNE_B1F_ROOMS_WIDTH ; SS_ANNE_B1F
-	warp_to 13, 5, SS_ANNE_B1F_ROOMS_WIDTH ; SS_ANNE_B1F
-	warp_to 22, 5, SS_ANNE_B1F_ROOMS_WIDTH ; SS_ANNE_B1F
-	warp_to 23, 5, SS_ANNE_B1F_ROOMS_WIDTH ; SS_ANNE_B1F
-	warp_to 2, 15, SS_ANNE_B1F_ROOMS_WIDTH ; SS_ANNE_B1F
-	warp_to 3, 15, SS_ANNE_B1F_ROOMS_WIDTH ; SS_ANNE_B1F
-	warp_to 12, 15, SS_ANNE_B1F_ROOMS_WIDTH ; SS_ANNE_B1F
-	warp_to 13, 15, SS_ANNE_B1F_ROOMS_WIDTH ; SS_ANNE_B1F
+	def_warps_to SS_ANNE_B1F_ROOMS
--- a/data/maps/objects/SSAnneBow.asm
+++ b/data/maps/objects/SSAnneBow.asm
@@ -1,13 +1,13 @@
 SSAnneBow_Object:
 	db $23 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 13, 6, 0, SS_ANNE_3F
 	warp 13, 7, 0, SS_ANNE_3F
 
-	db 0 ; signs
+	def_signs
 
-	db 5 ; objects
+	def_objects
 	object SPRITE_SUPER_NERD, 5, 2, STAY, UP, 1 ; person
 	object SPRITE_SAILOR, 4, 9, STAY, NONE, 2 ; person
 	object SPRITE_COOLTRAINER_M, 7, 11, STAY, NONE, 3 ; person
@@ -14,6 +14,4 @@
 	object SPRITE_SAILOR, 4, 4, STAY, DOWN, 4, OPP_SAILOR, 1
 	object SPRITE_SAILOR, 10, 8, STAY, UP, 5, OPP_SAILOR, 2
 
-	; warp-to
-	warp_to 13, 6, SS_ANNE_BOW_WIDTH ; SS_ANNE_3F
-	warp_to 13, 7, SS_ANNE_BOW_WIDTH ; SS_ANNE_3F
+	def_warps_to SS_ANNE_BOW
--- a/data/maps/objects/SSAnneCaptainsRoom.asm
+++ b/data/maps/objects/SSAnneCaptainsRoom.asm
@@ -1,15 +1,14 @@
 SSAnneCaptainsRoom_Object:
 	db $c ; border block
 
-	db 1 ; warps
+	def_warps
 	warp 0, 7, 8, SS_ANNE_2F
 
-	db 2 ; signs
+	def_signs
 	sign 4, 1, 2 ; SSAnne7Text2
 	sign 1, 2, 3 ; SSAnne7Text3
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_CAPTAIN, 4, 2, STAY, UP, 1 ; person
 
-	; warp-to
-	warp_to 0, 7, SS_ANNE_CAPTAINS_ROOM_WIDTH ; SS_ANNE_2F
+	def_warps_to SS_ANNE_CAPTAINS_ROOM
--- a/data/maps/objects/SSAnneKitchen.asm
+++ b/data/maps/objects/SSAnneKitchen.asm
@@ -1,12 +1,12 @@
 SSAnneKitchen_Object:
 	db $c ; border block
 
-	db 1 ; warps
+	def_warps
 	warp 6, 0, 10, SS_ANNE_1F
 
-	db 0 ; signs
+	def_signs
 
-	db 7 ; objects
+	def_objects
 	object SPRITE_COOK, 1, 8, WALK, UP_DOWN, 1 ; person
 	object SPRITE_COOK, 5, 8, WALK, UP_DOWN, 2 ; person
 	object SPRITE_COOK, 9, 7, WALK, UP_DOWN, 3 ; person
@@ -15,5 +15,4 @@
 	object SPRITE_COOK, 13, 10, STAY, NONE, 6 ; person
 	object SPRITE_COOK, 11, 13, STAY, UP, 7 ; person
 
-	; warp-to
-	warp_to 6, 0, SS_ANNE_KITCHEN_WIDTH ; SS_ANNE_1F
+	def_warps_to SS_ANNE_KITCHEN
--- a/data/maps/objects/SafariZoneCenter.asm
+++ b/data/maps/objects/SafariZoneCenter.asm
@@ -1,7 +1,7 @@
 SafariZoneCenter_Object:
 	db $0 ; border block
 
-	db 9 ; warps
+	def_warps
 	warp 14, 25, 2, SAFARI_ZONE_GATE
 	warp 15, 25, 3, SAFARI_ZONE_GATE
 	warp 0, 10, 4, SAFARI_ZONE_WEST
@@ -12,20 +12,11 @@
 	warp 29, 11, 3, SAFARI_ZONE_EAST
 	warp 17, 19, 0, SAFARI_ZONE_CENTER_REST_HOUSE
 
-	db 2 ; signs
+	def_signs
 	sign 18, 20, 2 ; SafariZoneCenterText2
 	sign 14, 22, 3 ; SafariZoneCenterText3
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_POKE_BALL, 14, 10, STAY, NONE, 1, NUGGET
 
-	; warp-to
-	warp_to 14, 25, SAFARI_ZONE_CENTER_WIDTH ; SAFARI_ZONE_GATE
-	warp_to 15, 25, SAFARI_ZONE_CENTER_WIDTH ; SAFARI_ZONE_GATE
-	warp_to 0, 10, SAFARI_ZONE_CENTER_WIDTH ; SAFARI_ZONE_WEST
-	warp_to 0, 11, SAFARI_ZONE_CENTER_WIDTH ; SAFARI_ZONE_WEST
-	warp_to 14, 0, SAFARI_ZONE_CENTER_WIDTH ; SAFARI_ZONE_NORTH
-	warp_to 15, 0, SAFARI_ZONE_CENTER_WIDTH ; SAFARI_ZONE_NORTH
-	warp_to 29, 10, SAFARI_ZONE_CENTER_WIDTH ; SAFARI_ZONE_EAST
-	warp_to 29, 11, SAFARI_ZONE_CENTER_WIDTH ; SAFARI_ZONE_EAST
-	warp_to 17, 19, SAFARI_ZONE_CENTER_WIDTH ; SAFARI_ZONE_CENTER_REST_HOUSE
+	def_warps_to SAFARI_ZONE_CENTER
--- a/data/maps/objects/SafariZoneCenterRestHouse.asm
+++ b/data/maps/objects/SafariZoneCenterRestHouse.asm
@@ -1,16 +1,14 @@
 SafariZoneCenterRestHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 8, SAFARI_ZONE_CENTER
 	warp 3, 7, 8, SAFARI_ZONE_CENTER
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_GIRL, 3, 2, STAY, DOWN, 1 ; person
 	object SPRITE_SCIENTIST, 1, 4, WALK, UP_DOWN, 2 ; person
 
-	; warp-to
-	warp_to 2, 7, SAFARI_ZONE_CENTER_REST_HOUSE_WIDTH ; SAFARI_ZONE_CENTER
-	warp_to 3, 7, SAFARI_ZONE_CENTER_REST_HOUSE_WIDTH ; SAFARI_ZONE_CENTER
+	def_warps_to SAFARI_ZONE_CENTER_REST_HOUSE
--- a/data/maps/objects/SafariZoneEast.asm
+++ b/data/maps/objects/SafariZoneEast.asm
@@ -1,7 +1,7 @@
 SafariZoneEast_Object:
 	db $0 ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 0, 4, 6, SAFARI_ZONE_NORTH
 	warp 0, 5, 7, SAFARI_ZONE_NORTH
 	warp 0, 22, 6, SAFARI_ZONE_CENTER
@@ -8,20 +8,15 @@
 	warp 0, 23, 6, SAFARI_ZONE_CENTER
 	warp 25, 9, 0, SAFARI_ZONE_EAST_REST_HOUSE
 
-	db 3 ; signs
+	def_signs
 	sign 26, 10, 5 ; SafariZoneEastText5
 	sign 6, 4, 6 ; SafariZoneEastText6
 	sign 5, 23, 7 ; SafariZoneEastText7
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_POKE_BALL, 21, 10, STAY, NONE, 1, FULL_RESTORE
 	object SPRITE_POKE_BALL, 3, 7, STAY, NONE, 2, MAX_POTION
 	object SPRITE_POKE_BALL, 20, 13, STAY, NONE, 3, CARBOS
 	object SPRITE_POKE_BALL, 15, 12, STAY, NONE, 4, TM_EGG_BOMB
 
-	; warp-to
-	warp_to 0, 4, SAFARI_ZONE_EAST_WIDTH ; SAFARI_ZONE_NORTH
-	warp_to 0, 5, SAFARI_ZONE_EAST_WIDTH ; SAFARI_ZONE_NORTH
-	warp_to 0, 22, SAFARI_ZONE_EAST_WIDTH ; SAFARI_ZONE_CENTER
-	warp_to 0, 23, SAFARI_ZONE_EAST_WIDTH ; SAFARI_ZONE_CENTER
-	warp_to 25, 9, SAFARI_ZONE_EAST_WIDTH ; SAFARI_ZONE_EAST_REST_HOUSE
+	def_warps_to SAFARI_ZONE_EAST
--- a/data/maps/objects/SafariZoneEastRestHouse.asm
+++ b/data/maps/objects/SafariZoneEastRestHouse.asm
@@ -1,17 +1,15 @@
 SafariZoneEastRestHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 4, SAFARI_ZONE_EAST
 	warp 3, 7, 4, SAFARI_ZONE_EAST
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_SCIENTIST, 1, 3, WALK, UP_DOWN, 1 ; person
 	object SPRITE_ROCKER, 4, 2, STAY, NONE, 2 ; person
 	object SPRITE_SILPH_WORKER, 5, 2, STAY, NONE, 3 ; person
 
-	; warp-to
-	warp_to 2, 7, SAFARI_ZONE_EAST_REST_HOUSE_WIDTH ; SAFARI_ZONE_EAST
-	warp_to 3, 7, SAFARI_ZONE_EAST_REST_HOUSE_WIDTH ; SAFARI_ZONE_EAST
+	def_warps_to SAFARI_ZONE_EAST_REST_HOUSE
--- a/data/maps/objects/SafariZoneGate.asm
+++ b/data/maps/objects/SafariZoneGate.asm
@@ -1,20 +1,16 @@
 SafariZoneGate_Object:
 	db $a ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 3, 5, 4, LAST_MAP
 	warp 4, 5, 4, LAST_MAP
 	warp 3, 0, 0, SAFARI_ZONE_CENTER
 	warp 4, 0, 1, SAFARI_ZONE_CENTER
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_SAFARI_ZONE_WORKER, 6, 2, STAY, LEFT, 1 ; person
 	object SPRITE_SAFARI_ZONE_WORKER, 1, 4, STAY, RIGHT, 2 ; person
 
-	; warp-to
-	warp_to 3, 5, SAFARI_ZONE_GATE_WIDTH
-	warp_to 4, 5, SAFARI_ZONE_GATE_WIDTH
-	warp_to 3, 0, SAFARI_ZONE_GATE_WIDTH ; SAFARI_ZONE_CENTER
-	warp_to 4, 0, SAFARI_ZONE_GATE_WIDTH ; SAFARI_ZONE_CENTER
+	def_warps_to SAFARI_ZONE_GATE
--- a/data/maps/objects/SafariZoneNorth.asm
+++ b/data/maps/objects/SafariZoneNorth.asm
@@ -1,7 +1,7 @@
 SafariZoneNorth_Object:
 	db $0 ; border block
 
-	db 9 ; warps
+	def_warps
 	warp 2, 35, 0, SAFARI_ZONE_WEST
 	warp 3, 35, 1, SAFARI_ZONE_WEST
 	warp 8, 35, 2, SAFARI_ZONE_WEST
@@ -12,7 +12,7 @@
 	warp 39, 31, 1, SAFARI_ZONE_EAST
 	warp 35, 3, 0, SAFARI_ZONE_NORTH_REST_HOUSE
 
-	db 5 ; signs
+	def_signs
 	sign 36, 4, 3 ; SafariZoneNorthText3
 	sign 4, 25, 4 ; SafariZoneNorthText4
 	sign 13, 31, 5 ; SafariZoneNorthText5
@@ -19,17 +19,8 @@
 	sign 19, 33, 6 ; SafariZoneNorthText6
 	sign 26, 28, 7 ; SafariZoneNorthText7
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_POKE_BALL, 25, 1, STAY, NONE, 1, PROTEIN
 	object SPRITE_POKE_BALL, 19, 7, STAY, NONE, 2, TM_SKULL_BASH
 
-	; warp-to
-	warp_to 2, 35, SAFARI_ZONE_NORTH_WIDTH ; SAFARI_ZONE_WEST
-	warp_to 3, 35, SAFARI_ZONE_NORTH_WIDTH ; SAFARI_ZONE_WEST
-	warp_to 8, 35, SAFARI_ZONE_NORTH_WIDTH ; SAFARI_ZONE_WEST
-	warp_to 9, 35, SAFARI_ZONE_NORTH_WIDTH ; SAFARI_ZONE_WEST
-	warp_to 20, 35, SAFARI_ZONE_NORTH_WIDTH ; SAFARI_ZONE_CENTER
-	warp_to 21, 35, SAFARI_ZONE_NORTH_WIDTH ; SAFARI_ZONE_CENTER
-	warp_to 39, 30, SAFARI_ZONE_NORTH_WIDTH ; SAFARI_ZONE_EAST
-	warp_to 39, 31, SAFARI_ZONE_NORTH_WIDTH ; SAFARI_ZONE_EAST
-	warp_to 35, 3, SAFARI_ZONE_NORTH_WIDTH ; SAFARI_ZONE_NORTH_REST_HOUSE
+	def_warps_to SAFARI_ZONE_NORTH
--- a/data/maps/objects/SafariZoneNorthRestHouse.asm
+++ b/data/maps/objects/SafariZoneNorthRestHouse.asm
@@ -1,17 +1,15 @@
 SafariZoneNorthRestHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 8, SAFARI_ZONE_NORTH
 	warp 3, 7, 8, SAFARI_ZONE_NORTH
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_SCIENTIST, 6, 3, WALK, LEFT_RIGHT, 1 ; person
 	object SPRITE_SAFARI_ZONE_WORKER, 3, 4, STAY, NONE, 2 ; person
 	object SPRITE_GENTLEMAN, 1, 5, WALK, UP_DOWN, 3 ; person
 
-	; warp-to
-	warp_to 2, 7, SAFARI_ZONE_NORTH_REST_HOUSE_WIDTH ; SAFARI_ZONE_NORTH
-	warp_to 3, 7, SAFARI_ZONE_NORTH_REST_HOUSE_WIDTH ; SAFARI_ZONE_NORTH
+	def_warps_to SAFARI_ZONE_NORTH_REST_HOUSE
--- a/data/maps/objects/SafariZoneSecretHouse.asm
+++ b/data/maps/objects/SafariZoneSecretHouse.asm
@@ -1,15 +1,13 @@
 SafariZoneSecretHouse_Object:
 	db $17 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 6, SAFARI_ZONE_WEST
 	warp 3, 7, 6, SAFARI_ZONE_WEST
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_FISHING_GURU, 3, 3, STAY, DOWN, 1 ; person
 
-	; warp-to
-	warp_to 2, 7, SAFARI_ZONE_SECRET_HOUSE_WIDTH ; SAFARI_ZONE_WEST
-	warp_to 3, 7, SAFARI_ZONE_SECRET_HOUSE_WIDTH ; SAFARI_ZONE_WEST
+	def_warps_to SAFARI_ZONE_SECRET_HOUSE
--- a/data/maps/objects/SafariZoneWest.asm
+++ b/data/maps/objects/SafariZoneWest.asm
@@ -1,7 +1,7 @@
 SafariZoneWest_Object:
 	db $0 ; border block
 
-	db 8 ; warps
+	def_warps
 	warp 20, 0, 0, SAFARI_ZONE_NORTH
 	warp 21, 0, 1, SAFARI_ZONE_NORTH
 	warp 26, 0, 2, SAFARI_ZONE_NORTH
@@ -11,24 +11,16 @@
 	warp 3, 3, 0, SAFARI_ZONE_SECRET_HOUSE
 	warp 11, 11, 0, SAFARI_ZONE_WEST_REST_HOUSE
 
-	db 4 ; signs
+	def_signs
 	sign 12, 12, 5 ; SafariZoneWestText5
 	sign 17, 3, 6 ; SafariZoneWestText6
 	sign 26, 4, 7 ; SafariZoneWestText7
 	sign 24, 22, 8 ; SafariZoneWestText8
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_POKE_BALL, 8, 20, STAY, NONE, 1, MAX_POTION
 	object SPRITE_POKE_BALL, 9, 7, STAY, NONE, 2, TM_DOUBLE_TEAM
 	object SPRITE_POKE_BALL, 18, 18, STAY, NONE, 3, MAX_REVIVE
 	object SPRITE_POKE_BALL, 19, 7, STAY, NONE, 4, GOLD_TEETH
 
-	; warp-to
-	warp_to 20, 0, SAFARI_ZONE_WEST_WIDTH ; SAFARI_ZONE_NORTH
-	warp_to 21, 0, SAFARI_ZONE_WEST_WIDTH ; SAFARI_ZONE_NORTH
-	warp_to 26, 0, SAFARI_ZONE_WEST_WIDTH ; SAFARI_ZONE_NORTH
-	warp_to 27, 0, SAFARI_ZONE_WEST_WIDTH ; SAFARI_ZONE_NORTH
-	warp_to 29, 22, SAFARI_ZONE_WEST_WIDTH ; SAFARI_ZONE_CENTER
-	warp_to 29, 23, SAFARI_ZONE_WEST_WIDTH ; SAFARI_ZONE_CENTER
-	warp_to 3, 3, SAFARI_ZONE_WEST_WIDTH ; SAFARI_ZONE_SECRET_HOUSE
-	warp_to 11, 11, SAFARI_ZONE_WEST_WIDTH ; SAFARI_ZONE_WEST_REST_HOUSE
+	def_warps_to SAFARI_ZONE_WEST
--- a/data/maps/objects/SafariZoneWestRestHouse.asm
+++ b/data/maps/objects/SafariZoneWestRestHouse.asm
@@ -1,17 +1,15 @@
 SafariZoneWestRestHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 7, SAFARI_ZONE_WEST
 	warp 3, 7, 7, SAFARI_ZONE_WEST
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_SCIENTIST, 4, 4, WALK, ANY_DIR, 1 ; person
 	object SPRITE_COOLTRAINER_M, 0, 2, STAY, RIGHT, 2 ; person
 	object SPRITE_ERIKA, 6, 2, STAY, DOWN, 3 ; person
 
-	; warp-to
-	warp_to 2, 7, SAFARI_ZONE_WEST_REST_HOUSE_WIDTH ; SAFARI_ZONE_WEST
-	warp_to 3, 7, SAFARI_ZONE_WEST_REST_HOUSE_WIDTH ; SAFARI_ZONE_WEST
+	def_warps_to SAFARI_ZONE_WEST_REST_HOUSE
--- a/data/maps/objects/SaffronCity.asm
+++ b/data/maps/objects/SaffronCity.asm
@@ -1,7 +1,7 @@
 SaffronCity_Object:
 	db $f ; border block
 
-	db 8 ; warps
+	def_warps
 	warp 7, 5, 0, COPYCATS_HOUSE_1F
 	warp 26, 3, 0, FIGHTING_DOJO
 	warp 34, 3, 0, SAFFRON_GYM
@@ -11,7 +11,7 @@
 	warp 9, 29, 0, SAFFRON_POKECENTER
 	warp 29, 29, 0, MR_PSYCHICS_HOUSE
 
-	db 10 ; signs
+	def_signs
 	sign 17, 5, 16 ; SaffronCityText16
 	sign 27, 5, 17 ; SaffronCityText17
 	sign 35, 5, 18 ; SaffronCityText18
@@ -23,7 +23,7 @@
 	sign 27, 29, 24 ; SaffronCityText24
 	sign 1, 19, 25 ; SaffronCityText25
 
-	db 15 ; objects
+	def_objects
 	object SPRITE_ROCKET, 7, 6, STAY, NONE, 1 ; person
 	object SPRITE_ROCKET, 20, 8, WALK, LEFT_RIGHT, 2 ; person
 	object SPRITE_ROCKET, 34, 4, STAY, NONE, 3 ; person
@@ -40,12 +40,4 @@
 	object SPRITE_ROCKET, 18, 22, STAY, DOWN, 14 ; person
 	object SPRITE_ROCKET, 19, 22, STAY, DOWN, 15 ; person
 
-	; warp-to
-	warp_to 7, 5, SAFFRON_CITY_WIDTH ; COPYCATS_HOUSE_1F
-	warp_to 26, 3, SAFFRON_CITY_WIDTH ; FIGHTING_DOJO
-	warp_to 34, 3, SAFFRON_CITY_WIDTH ; SAFFRON_GYM
-	warp_to 13, 11, SAFFRON_CITY_WIDTH ; SAFFRON_PIDGEY_HOUSE
-	warp_to 25, 11, SAFFRON_CITY_WIDTH ; SAFFRON_MART
-	warp_to 18, 21, SAFFRON_CITY_WIDTH ; SILPH_CO_1F
-	warp_to 9, 29, SAFFRON_CITY_WIDTH ; SAFFRON_POKECENTER
-	warp_to 29, 29, SAFFRON_CITY_WIDTH ; MR_PSYCHICS_HOUSE
+	def_warps_to SAFFRON_CITY
--- a/data/maps/objects/SaffronGym.asm
+++ b/data/maps/objects/SaffronGym.asm
@@ -1,7 +1,7 @@
 SaffronGym_Object:
 	db $2e ; border block
 
-	db 32 ; warps
+	def_warps
 	warp 8, 17, 2, LAST_MAP
 	warp 9, 17, 2, LAST_MAP
 	warp 1, 3, 22, SAFFRON_GYM
@@ -35,9 +35,9 @@
 	warp 15, 17, 11, SAFFRON_GYM
 	warp 19, 17, 19, SAFFRON_GYM
 
-	db 0 ; signs
+	def_signs
 
-	db 9 ; objects
+	def_objects
 	object SPRITE_GIRL, 9, 8, STAY, DOWN, 1, OPP_SABRINA, 1
 	object SPRITE_CHANNELER, 10, 1, STAY, DOWN, 2, OPP_CHANNELER, 22
 	object SPRITE_YOUNGSTER, 17, 1, STAY, DOWN, 3, OPP_PSYCHIC_TR, 1
@@ -48,36 +48,4 @@
 	object SPRITE_YOUNGSTER, 3, 1, STAY, DOWN, 8, OPP_PSYCHIC_TR, 4
 	object SPRITE_GYM_GUIDE, 10, 15, STAY, DOWN, 9 ; person
 
-	; warp-to
-	warp_to 8, 17, SAFFRON_GYM_WIDTH
-	warp_to 9, 17, SAFFRON_GYM_WIDTH
-	warp_to 1, 3, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 5, 3, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 1, 5, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 5, 5, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 1, 9, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 5, 9, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 1, 11, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 5, 11, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 1, 15, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 5, 15, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 1, 17, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 5, 17, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 9, 3, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 11, 3, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 9, 5, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 11, 5, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 11, 11, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 11, 15, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 15, 3, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 19, 3, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 15, 5, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 19, 5, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 15, 9, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 19, 9, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 15, 11, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 19, 11, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 15, 15, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 19, 15, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 15, 17, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
-	warp_to 19, 17, SAFFRON_GYM_WIDTH ; SAFFRON_GYM
+	def_warps_to SAFFRON_GYM
--- a/data/maps/objects/SaffronMart.asm
+++ b/data/maps/objects/SaffronMart.asm
@@ -1,17 +1,15 @@
 SaffronMart_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 4, LAST_MAP
 	warp 4, 7, 4, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_CLERK, 0, 5, STAY, RIGHT, 1 ; person
 	object SPRITE_SUPER_NERD, 4, 2, STAY, NONE, 2 ; person
 	object SPRITE_COOLTRAINER_F, 6, 5, WALK, ANY_DIR, 3 ; person
 
-	; warp-to
-	warp_to 3, 7, SAFFRON_MART_WIDTH
-	warp_to 4, 7, SAFFRON_MART_WIDTH
+	def_warps_to SAFFRON_MART
--- a/data/maps/objects/SaffronPidgeyHouse.asm
+++ b/data/maps/objects/SaffronPidgeyHouse.asm
@@ -1,18 +1,16 @@
 SaffronPidgeyHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 3, LAST_MAP
 	warp 3, 7, 3, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_BRUNETTE_GIRL, 2, 3, STAY, RIGHT, 1 ; person
 	object SPRITE_BIRD, 0, 4, WALK, UP_DOWN, 2 ; person
 	object SPRITE_YOUNGSTER, 4, 1, STAY, DOWN, 3 ; person
 	object SPRITE_PAPER, 3, 3, STAY, NONE, 4 ; person
 
-	; warp-to
-	warp_to 2, 7, SAFFRON_PIDGEY_HOUSE_WIDTH
-	warp_to 3, 7, SAFFRON_PIDGEY_HOUSE_WIDTH
+	def_warps_to SAFFRON_PIDGEY_HOUSE
--- a/data/maps/objects/SaffronPokecenter.asm
+++ b/data/maps/objects/SaffronPokecenter.asm
@@ -1,18 +1,16 @@
 SaffronPokecenter_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 6, LAST_MAP
 	warp 4, 7, 6, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
 	object SPRITE_BEAUTY, 5, 5, STAY, NONE, 2 ; person
 	object SPRITE_GENTLEMAN, 8, 3, STAY, DOWN, 3 ; person
 	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
-	; warp-to
-	warp_to 3, 7, SAFFRON_POKECENTER_WIDTH
-	warp_to 4, 7, SAFFRON_POKECENTER_WIDTH
+	def_warps_to SAFFRON_POKECENTER
--- a/data/maps/objects/SeafoamIslands1F.asm
+++ b/data/maps/objects/SeafoamIslands1F.asm
@@ -1,7 +1,7 @@
 SeafoamIslands1F_Object:
 	db $7d ; border block
 
-	db 7 ; warps
+	def_warps
 	warp 4, 17, 0, LAST_MAP
 	warp 5, 17, 0, LAST_MAP
 	warp 26, 17, 1, LAST_MAP
@@ -10,20 +10,13 @@
 	warp 25, 3, 6, SEAFOAM_ISLANDS_B1F
 	warp 23, 15, 4, SEAFOAM_ISLANDS_B1F
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_BOULDER, 18, 10, STAY, BOULDER_MOVEMENT_BYTE_2, 1 ; person
 	object SPRITE_BOULDER, 26, 7, STAY, BOULDER_MOVEMENT_BYTE_2, 2 ; person
 
-	; warp-to
-	warp_to 4, 17, SEAFOAM_ISLANDS_1F_WIDTH
-	warp_to 5, 17, SEAFOAM_ISLANDS_1F_WIDTH
-	warp_to 26, 17, SEAFOAM_ISLANDS_1F_WIDTH
-	warp_to 27, 17, SEAFOAM_ISLANDS_1F_WIDTH
-	warp_to 7, 5, SEAFOAM_ISLANDS_1F_WIDTH ; SEAFOAM_ISLANDS_B1F
-	warp_to 25, 3, SEAFOAM_ISLANDS_1F_WIDTH ; SEAFOAM_ISLANDS_B1F
-	warp_to 23, 15, SEAFOAM_ISLANDS_1F_WIDTH ; SEAFOAM_ISLANDS_B1F
+	def_warps_to SEAFOAM_ISLANDS_1F
 
 	; holes
 	warp_to 17, 6, SEAFOAM_ISLANDS_1F_WIDTH
--- a/data/maps/objects/SeafoamIslandsB1F.asm
+++ b/data/maps/objects/SeafoamIslandsB1F.asm
@@ -1,7 +1,7 @@
 SeafoamIslandsB1F_Object:
 	db $7d ; border block
 
-	db 7 ; warps
+	def_warps
 	warp 4, 2, 0, SEAFOAM_ISLANDS_B2F
 	warp 7, 5, 4, SEAFOAM_ISLANDS_1F
 	warp 13, 7, 2, SEAFOAM_ISLANDS_B2F
@@ -10,17 +10,10 @@
 	warp 25, 11, 5, SEAFOAM_ISLANDS_B2F
 	warp 25, 3, 5, SEAFOAM_ISLANDS_1F
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_BOULDER, 17, 6, STAY, BOULDER_MOVEMENT_BYTE_2, 1 ; person
 	object SPRITE_BOULDER, 22, 6, STAY, BOULDER_MOVEMENT_BYTE_2, 2 ; person
 
-	; warp-to
-	warp_to 4, 2, SEAFOAM_ISLANDS_B1F_WIDTH ; SEAFOAM_ISLANDS_B2F
-	warp_to 7, 5, SEAFOAM_ISLANDS_B1F_WIDTH ; SEAFOAM_ISLANDS_1F
-	warp_to 13, 7, SEAFOAM_ISLANDS_B1F_WIDTH ; SEAFOAM_ISLANDS_B2F
-	warp_to 19, 15, SEAFOAM_ISLANDS_B1F_WIDTH ; SEAFOAM_ISLANDS_B2F
-	warp_to 23, 15, SEAFOAM_ISLANDS_B1F_WIDTH ; SEAFOAM_ISLANDS_1F
-	warp_to 25, 11, SEAFOAM_ISLANDS_B1F_WIDTH ; SEAFOAM_ISLANDS_B2F
-	warp_to 25, 3, SEAFOAM_ISLANDS_B1F_WIDTH ; SEAFOAM_ISLANDS_1F
+	def_warps_to SEAFOAM_ISLANDS_B1F
--- a/data/maps/objects/SeafoamIslandsB2F.asm
+++ b/data/maps/objects/SeafoamIslandsB2F.asm
@@ -1,7 +1,7 @@
 SeafoamIslandsB2F_Object:
 	db $7d ; border block
 
-	db 7 ; warps
+	def_warps
 	warp 5, 3, 0, SEAFOAM_ISLANDS_B1F
 	warp 5, 13, 0, SEAFOAM_ISLANDS_B3F
 	warp 13, 7, 2, SEAFOAM_ISLANDS_B1F
@@ -10,17 +10,10 @@
 	warp 25, 11, 5, SEAFOAM_ISLANDS_B1F
 	warp 25, 14, 4, SEAFOAM_ISLANDS_B3F
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_BOULDER, 18, 6, STAY, BOULDER_MOVEMENT_BYTE_2, 1 ; person
 	object SPRITE_BOULDER, 23, 6, STAY, BOULDER_MOVEMENT_BYTE_2, 2 ; person
 
-	; warp-to
-	warp_to 5, 3, SEAFOAM_ISLANDS_B2F_WIDTH ; SEAFOAM_ISLANDS_B1F
-	warp_to 5, 13, SEAFOAM_ISLANDS_B2F_WIDTH ; SEAFOAM_ISLANDS_B3F
-	warp_to 13, 7, SEAFOAM_ISLANDS_B2F_WIDTH ; SEAFOAM_ISLANDS_B1F
-	warp_to 19, 15, SEAFOAM_ISLANDS_B2F_WIDTH ; SEAFOAM_ISLANDS_B1F
-	warp_to 25, 3, SEAFOAM_ISLANDS_B2F_WIDTH ; SEAFOAM_ISLANDS_B3F
-	warp_to 25, 11, SEAFOAM_ISLANDS_B2F_WIDTH ; SEAFOAM_ISLANDS_B1F
-	warp_to 25, 14, SEAFOAM_ISLANDS_B2F_WIDTH ; SEAFOAM_ISLANDS_B3F
+	def_warps_to SEAFOAM_ISLANDS_B2F
--- a/data/maps/objects/SeafoamIslandsB3F.asm
+++ b/data/maps/objects/SeafoamIslandsB3F.asm
@@ -1,7 +1,7 @@
 SeafoamIslandsB3F_Object:
 	db $7d ; border block
 
-	db 7 ; warps
+	def_warps
 	warp 5, 12, 1, SEAFOAM_ISLANDS_B2F
 	warp 8, 6, 2, SEAFOAM_ISLANDS_B4F
 	warp 25, 4, 3, SEAFOAM_ISLANDS_B4F
@@ -10,9 +10,9 @@
 	warp 20, 17, 0, SEAFOAM_ISLANDS_B4F
 	warp 21, 17, 1, SEAFOAM_ISLANDS_B4F
 
-	db 0 ; signs
+	def_signs
 
-	db 6 ; objects
+	def_objects
 	object SPRITE_BOULDER, 5, 14, STAY, BOULDER_MOVEMENT_BYTE_2, 1 ; person
 	object SPRITE_BOULDER, 3, 15, STAY, BOULDER_MOVEMENT_BYTE_2, 2 ; person
 	object SPRITE_BOULDER, 8, 14, STAY, BOULDER_MOVEMENT_BYTE_2, 3 ; person
@@ -20,11 +20,4 @@
 	object SPRITE_BOULDER, 18, 6, STAY, NONE, 5 ; person
 	object SPRITE_BOULDER, 19, 6, STAY, NONE, 6 ; person
 
-	; warp-to
-	warp_to 5, 12, SEAFOAM_ISLANDS_B3F_WIDTH ; SEAFOAM_ISLANDS_B2F
-	warp_to 8, 6, SEAFOAM_ISLANDS_B3F_WIDTH ; SEAFOAM_ISLANDS_B4F
-	warp_to 25, 4, SEAFOAM_ISLANDS_B3F_WIDTH ; SEAFOAM_ISLANDS_B4F
-	warp_to 25, 3, SEAFOAM_ISLANDS_B3F_WIDTH ; SEAFOAM_ISLANDS_B2F
-	warp_to 25, 14, SEAFOAM_ISLANDS_B3F_WIDTH ; SEAFOAM_ISLANDS_B2F
-	warp_to 20, 17, SEAFOAM_ISLANDS_B3F_WIDTH ; SEAFOAM_ISLANDS_B4F
-	warp_to 21, 17, SEAFOAM_ISLANDS_B3F_WIDTH ; SEAFOAM_ISLANDS_B4F
+	def_warps_to SEAFOAM_ISLANDS_B3F
--- a/data/maps/objects/SeafoamIslandsB4F.asm
+++ b/data/maps/objects/SeafoamIslandsB4F.asm
@@ -1,23 +1,19 @@
 SeafoamIslandsB4F_Object:
 	db $7d ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 20, 17, 5, SEAFOAM_ISLANDS_B3F
 	warp 21, 17, 6, SEAFOAM_ISLANDS_B3F
 	warp 11, 7, 1, SEAFOAM_ISLANDS_B3F
 	warp 25, 4, 2, SEAFOAM_ISLANDS_B3F
 
-	db 2 ; signs
+	def_signs
 	sign 9, 15, 4 ; SeafoamIslands5Text4
 	sign 23, 1, 5 ; SeafoamIslands5Text5
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_BOULDER, 4, 15, STAY, NONE, 1 ; person
 	object SPRITE_BOULDER, 5, 15, STAY, NONE, 2 ; person
 	object SPRITE_BIRD, 6, 1, STAY, DOWN, 3, ARTICUNO, 50
 
-	; warp-to
-	warp_to 20, 17, SEAFOAM_ISLANDS_B4F_WIDTH ; SEAFOAM_ISLANDS_B3F
-	warp_to 21, 17, SEAFOAM_ISLANDS_B4F_WIDTH ; SEAFOAM_ISLANDS_B3F
-	warp_to 11, 7, SEAFOAM_ISLANDS_B4F_WIDTH ; SEAFOAM_ISLANDS_B3F
-	warp_to 25, 4, SEAFOAM_ISLANDS_B4F_WIDTH ; SEAFOAM_ISLANDS_B3F
+	def_warps_to SEAFOAM_ISLANDS_B4F
--- a/data/maps/objects/SilphCo10F.asm
+++ b/data/maps/objects/SilphCo10F.asm
@@ -1,7 +1,7 @@
 SilphCo10F_Object:
 	db $2e ; border block
 
-	db 6 ; warps
+	def_warps
 	warp 8, 0, 0, SILPH_CO_9F
 	warp 10, 0, 0, SILPH_CO_11F
 	warp 12, 0, 0, SILPH_CO_ELEVATOR
@@ -9,9 +9,9 @@
 	warp 13, 15, 5, SILPH_CO_4F
 	warp 13, 7, 6, SILPH_CO_4F
 
-	db 0 ; signs
+	def_signs
 
-	db 6 ; objects
+	def_objects
 	object SPRITE_ROCKET, 1, 9, STAY, RIGHT, 1, OPP_ROCKET, 39
 	object SPRITE_SCIENTIST, 10, 2, STAY, LEFT, 2, OPP_SCIENTIST, 11
 	object SPRITE_ERIKA, 9, 15, WALK, ANY_DIR, 3 ; person
@@ -19,10 +19,4 @@
 	object SPRITE_POKE_BALL, 4, 14, STAY, NONE, 5, RARE_CANDY
 	object SPRITE_POKE_BALL, 5, 11, STAY, NONE, 6, CARBOS
 
-	; warp-to
-	warp_to 8, 0, SILPH_CO_10F_WIDTH ; SILPH_CO_9F
-	warp_to 10, 0, SILPH_CO_10F_WIDTH ; SILPH_CO_11F
-	warp_to 12, 0, SILPH_CO_10F_WIDTH ; SILPH_CO_ELEVATOR
-	warp_to 9, 11, SILPH_CO_10F_WIDTH ; SILPH_CO_4F
-	warp_to 13, 15, SILPH_CO_10F_WIDTH ; SILPH_CO_4F
-	warp_to 13, 7, SILPH_CO_10F_WIDTH ; SILPH_CO_4F
+	def_warps_to SILPH_CO_10F
--- a/data/maps/objects/SilphCo11F.asm
+++ b/data/maps/objects/SilphCo11F.asm
@@ -1,15 +1,15 @@
 SilphCo11F_Object:
 	db $d ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 9, 0, 1, SILPH_CO_10F
 	warp 13, 0, 0, SILPH_CO_ELEVATOR
 	warp 5, 5, 9, LAST_MAP
 	warp 3, 2, 3, SILPH_CO_7F
 
-	db 0 ; signs
+	def_signs
 
-	db 5 ; objects
+	def_objects
 	object SPRITE_SILPH_PRESIDENT, 7, 5, STAY, DOWN, 1 ; person
 	object SPRITE_BEAUTY, 10, 5, STAY, DOWN, 2 ; person
 	object SPRITE_GIOVANNI, 6, 9, STAY, DOWN, 3, OPP_GIOVANNI, 2
@@ -16,8 +16,4 @@
 	object SPRITE_ROCKET, 3, 16, STAY, UP, 4, OPP_ROCKET, 41
 	object SPRITE_ROCKET, 15, 9, STAY, UP, 5, OPP_ROCKET, 40
 
-	; warp-to
-	warp_to 9, 0, SILPH_CO_11F_WIDTH ; SILPH_CO_10F
-	warp_to 13, 0, SILPH_CO_11F_WIDTH ; SILPH_CO_ELEVATOR
-	warp_to 5, 5, SILPH_CO_11F_WIDTH
-	warp_to 3, 2, SILPH_CO_11F_WIDTH ; SILPH_CO_7F
+	def_warps_to SILPH_CO_11F
--- a/data/maps/objects/SilphCo1F.asm
+++ b/data/maps/objects/SilphCo1F.asm
@@ -1,7 +1,7 @@
 SilphCo1F_Object:
 	db $2e ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 10, 17, 5, LAST_MAP
 	warp 11, 17, 5, LAST_MAP
 	warp 26, 0, 0, SILPH_CO_2F
@@ -8,14 +8,9 @@
 	warp 20, 0, 0, SILPH_CO_ELEVATOR
 	warp 16, 10, 6, SILPH_CO_3F
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_LINK_RECEPTIONIST, 4, 2, STAY, DOWN, 1 ; person
 
-	; warp-to
-	warp_to 10, 17, SILPH_CO_1F_WIDTH
-	warp_to 11, 17, SILPH_CO_1F_WIDTH
-	warp_to 26, 0, SILPH_CO_1F_WIDTH ; SILPH_CO_2F
-	warp_to 20, 0, SILPH_CO_1F_WIDTH ; SILPH_CO_ELEVATOR
-	warp_to 16, 10, SILPH_CO_1F_WIDTH ; SILPH_CO_3F
+	def_warps_to SILPH_CO_1F
--- a/data/maps/objects/SilphCo2F.asm
+++ b/data/maps/objects/SilphCo2F.asm
@@ -1,7 +1,7 @@
 SilphCo2F_Object:
 	db $2e ; border block
 
-	db 7 ; warps
+	def_warps
 	warp 24, 0, 2, SILPH_CO_1F
 	warp 26, 0, 0, SILPH_CO_3F
 	warp 20, 0, 0, SILPH_CO_ELEVATOR
@@ -10,9 +10,9 @@
 	warp 27, 15, 5, SILPH_CO_8F
 	warp 9, 15, 4, SILPH_CO_6F
 
-	db 0 ; signs
+	def_signs
 
-	db 5 ; objects
+	def_objects
 	object SPRITE_ERIKA, 10, 1, STAY, UP, 1 ; person
 	object SPRITE_SCIENTIST, 5, 12, STAY, DOWN, 2, OPP_SCIENTIST, 2
 	object SPRITE_SCIENTIST, 24, 13, STAY, LEFT, 3, OPP_SCIENTIST, 3
@@ -19,11 +19,4 @@
 	object SPRITE_ROCKET, 16, 11, STAY, UP, 4, OPP_ROCKET, 23
 	object SPRITE_ROCKET, 24, 7, STAY, UP, 5, OPP_ROCKET, 24
 
-	; warp-to
-	warp_to 24, 0, SILPH_CO_2F_WIDTH ; SILPH_CO_1F
-	warp_to 26, 0, SILPH_CO_2F_WIDTH ; SILPH_CO_3F
-	warp_to 20, 0, SILPH_CO_2F_WIDTH ; SILPH_CO_ELEVATOR
-	warp_to 3, 3, SILPH_CO_2F_WIDTH ; SILPH_CO_3F
-	warp_to 13, 3, SILPH_CO_2F_WIDTH ; SILPH_CO_8F
-	warp_to 27, 15, SILPH_CO_2F_WIDTH ; SILPH_CO_8F
-	warp_to 9, 15, SILPH_CO_2F_WIDTH ; SILPH_CO_6F
+	def_warps_to SILPH_CO_2F
--- a/data/maps/objects/SilphCo3F.asm
+++ b/data/maps/objects/SilphCo3F.asm
@@ -1,7 +1,7 @@
 SilphCo3F_Object:
 	db $2e ; border block
 
-	db 10 ; warps
+	def_warps
 	warp 26, 0, 1, SILPH_CO_2F
 	warp 24, 0, 0, SILPH_CO_4F
 	warp 20, 0, 0, SILPH_CO_ELEVATOR
@@ -13,22 +13,12 @@
 	warp 11, 11, 4, SILPH_CO_7F
 	warp 27, 15, 3, SILPH_CO_3F
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_SILPH_WORKER, 24, 8, STAY, NONE, 1 ; person
 	object SPRITE_ROCKET, 20, 7, STAY, LEFT, 2, OPP_ROCKET, 25
 	object SPRITE_SCIENTIST, 7, 9, STAY, DOWN, 3, OPP_SCIENTIST, 4
 	object SPRITE_POKE_BALL, 8, 5, STAY, NONE, 4, HYPER_POTION
 
-	; warp-to
-	warp_to 26, 0, SILPH_CO_3F_WIDTH ; SILPH_CO_2F
-	warp_to 24, 0, SILPH_CO_3F_WIDTH ; SILPH_CO_4F
-	warp_to 20, 0, SILPH_CO_3F_WIDTH ; SILPH_CO_ELEVATOR
-	warp_to 23, 11, SILPH_CO_3F_WIDTH ; SILPH_CO_3F
-	warp_to 3, 3, SILPH_CO_3F_WIDTH ; SILPH_CO_5F
-	warp_to 3, 15, SILPH_CO_3F_WIDTH ; SILPH_CO_5F
-	warp_to 27, 3, SILPH_CO_3F_WIDTH ; SILPH_CO_2F
-	warp_to 3, 11, SILPH_CO_3F_WIDTH ; SILPH_CO_9F
-	warp_to 11, 11, SILPH_CO_3F_WIDTH ; SILPH_CO_7F
-	warp_to 27, 15, SILPH_CO_3F_WIDTH ; SILPH_CO_3F
+	def_warps_to SILPH_CO_3F
--- a/data/maps/objects/SilphCo4F.asm
+++ b/data/maps/objects/SilphCo4F.asm
@@ -1,7 +1,7 @@
 SilphCo4F_Object:
 	db $2e ; border block
 
-	db 7 ; warps
+	def_warps
 	warp 24, 0, 1, SILPH_CO_3F
 	warp 26, 0, 1, SILPH_CO_5F
 	warp 20, 0, 0, SILPH_CO_ELEVATOR
@@ -10,9 +10,9 @@
 	warp 3, 15, 4, SILPH_CO_10F
 	warp 17, 11, 5, SILPH_CO_10F
 
-	db 0 ; signs
+	def_signs
 
-	db 7 ; objects
+	def_objects
 	object SPRITE_SILPH_WORKER, 6, 2, STAY, NONE, 1 ; person
 	object SPRITE_ROCKET, 9, 14, STAY, RIGHT, 2, OPP_ROCKET, 26
 	object SPRITE_SCIENTIST, 14, 6, STAY, LEFT, 3, OPP_SCIENTIST, 5
@@ -21,11 +21,4 @@
 	object SPRITE_POKE_BALL, 4, 7, STAY, NONE, 6, MAX_REVIVE
 	object SPRITE_POKE_BALL, 5, 8, STAY, NONE, 7, ESCAPE_ROPE
 
-	; warp-to
-	warp_to 24, 0, SILPH_CO_4F_WIDTH ; SILPH_CO_3F
-	warp_to 26, 0, SILPH_CO_4F_WIDTH ; SILPH_CO_5F
-	warp_to 20, 0, SILPH_CO_4F_WIDTH ; SILPH_CO_ELEVATOR
-	warp_to 11, 7, SILPH_CO_4F_WIDTH ; SILPH_CO_10F
-	warp_to 17, 3, SILPH_CO_4F_WIDTH ; SILPH_CO_6F
-	warp_to 3, 15, SILPH_CO_4F_WIDTH ; SILPH_CO_10F
-	warp_to 17, 11, SILPH_CO_4F_WIDTH ; SILPH_CO_10F
+	def_warps_to SILPH_CO_4F
--- a/data/maps/objects/SilphCo5F.asm
+++ b/data/maps/objects/SilphCo5F.asm
@@ -1,7 +1,7 @@
 SilphCo5F_Object:
 	db $2e ; border block
 
-	db 7 ; warps
+	def_warps
 	warp 24, 0, 1, SILPH_CO_6F
 	warp 26, 0, 1, SILPH_CO_4F
 	warp 20, 0, 0, SILPH_CO_ELEVATOR
@@ -10,9 +10,9 @@
 	warp 11, 5, 4, SILPH_CO_3F
 	warp 3, 15, 5, SILPH_CO_3F
 
-	db 0 ; signs
+	def_signs
 
-	db 11 ; objects
+	def_objects
 	object SPRITE_SILPH_WORKER, 13, 9, STAY, NONE, 1 ; person
 	object SPRITE_ROCKET, 8, 16, STAY, RIGHT, 2, OPP_ROCKET, 28
 	object SPRITE_SCIENTIST, 8, 3, STAY, RIGHT, 3, OPP_SCIENTIST, 6
@@ -25,11 +25,4 @@
 	object SPRITE_CLIPBOARD, 25, 10, STAY, NONE, 10 ; person
 	object SPRITE_CLIPBOARD, 24, 6, STAY, NONE, 11 ; person
 
-	; warp-to
-	warp_to 24, 0, SILPH_CO_5F_WIDTH ; SILPH_CO_6F
-	warp_to 26, 0, SILPH_CO_5F_WIDTH ; SILPH_CO_4F
-	warp_to 20, 0, SILPH_CO_5F_WIDTH ; SILPH_CO_ELEVATOR
-	warp_to 27, 3, SILPH_CO_5F_WIDTH ; SILPH_CO_7F
-	warp_to 9, 15, SILPH_CO_5F_WIDTH ; SILPH_CO_9F
-	warp_to 11, 5, SILPH_CO_5F_WIDTH ; SILPH_CO_3F
-	warp_to 3, 15, SILPH_CO_5F_WIDTH ; SILPH_CO_3F
+	def_warps_to SILPH_CO_5F
--- a/data/maps/objects/SilphCo6F.asm
+++ b/data/maps/objects/SilphCo6F.asm
@@ -1,7 +1,7 @@
 SilphCo6F_Object:
 	db $2e ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 16, 0, 1, SILPH_CO_7F
 	warp 14, 0, 0, SILPH_CO_5F
 	warp 18, 0, 0, SILPH_CO_ELEVATOR
@@ -8,9 +8,9 @@
 	warp 3, 3, 4, SILPH_CO_4F
 	warp 23, 3, 6, SILPH_CO_2F
 
-	db 0 ; signs
+	def_signs
 
-	db 10 ; objects
+	def_objects
 	object SPRITE_SILPH_WORKER, 10, 6, STAY, NONE, 1 ; person
 	object SPRITE_SILPH_WORKER, 20, 6, STAY, NONE, 2 ; person
 	object SPRITE_ERIKA, 21, 6, STAY, DOWN, 3 ; person
@@ -22,9 +22,4 @@
 	object SPRITE_POKE_BALL, 3, 12, STAY, NONE, 9, HP_UP
 	object SPRITE_POKE_BALL, 2, 15, STAY, NONE, 10, X_ACCURACY
 
-	; warp-to
-	warp_to 16, 0, SILPH_CO_6F_WIDTH ; SILPH_CO_7F
-	warp_to 14, 0, SILPH_CO_6F_WIDTH ; SILPH_CO_5F
-	warp_to 18, 0, SILPH_CO_6F_WIDTH ; SILPH_CO_ELEVATOR
-	warp_to 3, 3, SILPH_CO_6F_WIDTH ; SILPH_CO_4F
-	warp_to 23, 3, SILPH_CO_6F_WIDTH ; SILPH_CO_2F
+	def_warps_to SILPH_CO_6F
--- a/data/maps/objects/SilphCo7F.asm
+++ b/data/maps/objects/SilphCo7F.asm
@@ -1,7 +1,7 @@
 SilphCo7F_Object:
 	db $2e ; border block
 
-	db 6 ; warps
+	def_warps
 	warp 16, 0, 1, SILPH_CO_8F
 	warp 22, 0, 0, SILPH_CO_6F
 	warp 18, 0, 0, SILPH_CO_ELEVATOR
@@ -9,9 +9,9 @@
 	warp 5, 3, 8, SILPH_CO_3F
 	warp 21, 15, 3, SILPH_CO_5F
 
-	db 0 ; signs
+	def_signs
 
-	db 11 ; objects
+	def_objects
 	object SPRITE_SILPH_WORKER, 1, 5, STAY, NONE, 1 ; person
 	object SPRITE_SILPH_WORKER, 13, 13, STAY, UP, 2 ; person
 	object SPRITE_SILPH_WORKER, 7, 10, STAY, NONE, 3 ; person
@@ -24,10 +24,4 @@
 	object SPRITE_POKE_BALL, 1, 9, STAY, NONE, 10, CALCIUM
 	object SPRITE_POKE_BALL, 24, 11, STAY, NONE, 11, TM_SWORDS_DANCE
 
-	; warp-to
-	warp_to 16, 0, SILPH_CO_7F_WIDTH ; SILPH_CO_8F
-	warp_to 22, 0, SILPH_CO_7F_WIDTH ; SILPH_CO_6F
-	warp_to 18, 0, SILPH_CO_7F_WIDTH ; SILPH_CO_ELEVATOR
-	warp_to 5, 7, SILPH_CO_7F_WIDTH ; SILPH_CO_11F
-	warp_to 5, 3, SILPH_CO_7F_WIDTH ; SILPH_CO_3F
-	warp_to 21, 15, SILPH_CO_7F_WIDTH ; SILPH_CO_5F
+	def_warps_to SILPH_CO_7F
--- a/data/maps/objects/SilphCo8F.asm
+++ b/data/maps/objects/SilphCo8F.asm
@@ -1,7 +1,7 @@
 SilphCo8F_Object:
 	db $2e ; border block
 
-	db 7 ; warps
+	def_warps
 	warp 16, 0, 1, SILPH_CO_9F
 	warp 14, 0, 0, SILPH_CO_7F
 	warp 18, 0, 0, SILPH_CO_ELEVATOR
@@ -10,19 +10,12 @@
 	warp 11, 5, 5, SILPH_CO_2F
 	warp 11, 9, 3, SILPH_CO_8F
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_SILPH_WORKER, 4, 2, STAY, NONE, 1 ; person
 	object SPRITE_ROCKET, 19, 2, STAY, LEFT, 2, OPP_ROCKET, 35
 	object SPRITE_SCIENTIST, 10, 2, STAY, DOWN, 3, OPP_SCIENTIST, 9
 	object SPRITE_ROCKET, 12, 15, STAY, RIGHT, 4, OPP_ROCKET, 36
 
-	; warp-to
-	warp_to 16, 0, SILPH_CO_8F_WIDTH ; SILPH_CO_9F
-	warp_to 14, 0, SILPH_CO_8F_WIDTH ; SILPH_CO_7F
-	warp_to 18, 0, SILPH_CO_8F_WIDTH ; SILPH_CO_ELEVATOR
-	warp_to 3, 11, SILPH_CO_8F_WIDTH ; SILPH_CO_8F
-	warp_to 3, 15, SILPH_CO_8F_WIDTH ; SILPH_CO_2F
-	warp_to 11, 5, SILPH_CO_8F_WIDTH ; SILPH_CO_2F
-	warp_to 11, 9, SILPH_CO_8F_WIDTH ; SILPH_CO_8F_WIDTH
+	def_warps_to SILPH_CO_8F
--- a/data/maps/objects/SilphCo9F.asm
+++ b/data/maps/objects/SilphCo9F.asm
@@ -1,7 +1,7 @@
 SilphCo9F_Object:
 	db $2e ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 14, 0, 0, SILPH_CO_10F
 	warp 16, 0, 0, SILPH_CO_8F
 	warp 18, 0, 0, SILPH_CO_ELEVATOR
@@ -8,17 +8,12 @@
 	warp 9, 3, 7, SILPH_CO_3F
 	warp 17, 15, 4, SILPH_CO_5F
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_NURSE, 3, 14, STAY, DOWN, 1 ; person
 	object SPRITE_ROCKET, 2, 4, STAY, UP, 2, OPP_ROCKET, 37
 	object SPRITE_SCIENTIST, 21, 13, STAY, DOWN, 3, OPP_SCIENTIST, 10
 	object SPRITE_ROCKET, 13, 16, STAY, UP, 4, OPP_ROCKET, 38
 
-	; warp-to
-	warp_to 14, 0, SILPH_CO_9F_WIDTH ; SILPH_CO_10F
-	warp_to 16, 0, SILPH_CO_9F_WIDTH ; SILPH_CO_8F
-	warp_to 18, 0, SILPH_CO_9F_WIDTH ; SILPH_CO_ELEVATOR
-	warp_to 9, 3, SILPH_CO_9F_WIDTH ; SILPH_CO_3F
-	warp_to 17, 15, SILPH_CO_9F_WIDTH ; SILPH_CO_5F
+	def_warps_to SILPH_CO_9F
--- a/data/maps/objects/SilphCoElevator.asm
+++ b/data/maps/objects/SilphCoElevator.asm
@@ -1,15 +1,13 @@
 SilphCoElevator_Object:
 	db $f ; border block
 
-	db 2 ; warps
-	warp 1, 3, 0, 237
-	warp 2, 3, 0, 237
+	def_warps
+	warp 1, 3, 0, UNUSED_MAP_ED
+	warp 2, 3, 0, UNUSED_MAP_ED
 
-	db 1 ; signs
+	def_signs
 	sign 3, 0, 1 ; SilphCoElevatorText1
 
-	db 0 ; objects
+	def_objects
 
-	; warp-to
-	warp_to 1, 3, SILPH_CO_ELEVATOR_WIDTH
-	warp_to 2, 3, SILPH_CO_ELEVATOR_WIDTH
+	def_warps_to SILPH_CO_ELEVATOR
--- a/data/maps/objects/TradeCenter.asm
+++ b/data/maps/objects/TradeCenter.asm
@@ -1,9 +1,11 @@
 TradeCenter_Object:
 	db $e ; border block
 
-	db 0 ; warps
+	def_warps
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_RED, 2, 2, STAY, 0, 1 ; person
+
+	def_warps_to TRADE_CENTER
--- a/data/maps/objects/UndergroundPathNorthSouth.asm
+++ b/data/maps/objects/UndergroundPathNorthSouth.asm
@@ -1,14 +1,12 @@
 UndergroundPathNorthSouth_Object:
 	db $1 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 5, 4, 2, UNDERGROUND_PATH_ROUTE_5
 	warp 2, 41, 2, UNDERGROUND_PATH_ROUTE_6
 
-	db 0 ; signs
+	def_signs
 
-	db 0 ; objects
+	def_objects
 
-	; warp-to
-	warp_to 5, 4, UNDERGROUND_PATH_NORTH_SOUTH_WIDTH ; UNDERGROUND_PATH_ROUTE_5
-	warp_to 2, 41, UNDERGROUND_PATH_NORTH_SOUTH_WIDTH ; UNDERGROUND_PATH_ROUTE_6
+	def_warps_to UNDERGROUND_PATH_NORTH_SOUTH
--- a/data/maps/objects/UndergroundPathRoute5.asm
+++ b/data/maps/objects/UndergroundPathRoute5.asm
@@ -1,17 +1,14 @@
 UndergroundPathRoute5_Object:
 	db $a ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 3, 7, 3, LAST_MAP
 	warp 4, 7, 3, LAST_MAP
 	warp 4, 4, 0, UNDERGROUND_PATH_NORTH_SOUTH
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_LITTLE_GIRL, 2, 3, STAY, NONE, 1 ; person
 
-	; warp-to
-	warp_to 3, 7, UNDERGROUND_PATH_ROUTE_5_WIDTH
-	warp_to 4, 7, UNDERGROUND_PATH_ROUTE_5_WIDTH
-	warp_to 4, 4, UNDERGROUND_PATH_ROUTE_5_WIDTH ; UNDERGROUND_PATH_NORTH_SOUTH
+	def_warps_to UNDERGROUND_PATH_ROUTE_5
--- a/data/maps/objects/UndergroundPathRoute6.asm
+++ b/data/maps/objects/UndergroundPathRoute6.asm
@@ -1,17 +1,14 @@
 UndergroundPathRoute6_Object:
 	db $a ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 3, 7, 3, LAST_MAP
 	warp 4, 7, 3, LAST_MAP
 	warp 4, 4, 1, UNDERGROUND_PATH_NORTH_SOUTH
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_GIRL, 2, 3, STAY, NONE, 1 ; person
 
-	; warp-to
-	warp_to 3, 7, UNDERGROUND_PATH_ROUTE_6_WIDTH
-	warp_to 4, 7, UNDERGROUND_PATH_ROUTE_6_WIDTH
-	warp_to 4, 4, UNDERGROUND_PATH_ROUTE_6_WIDTH ; UNDERGROUND_PATH_NORTH_SOUTH
+	def_warps_to UNDERGROUND_PATH_ROUTE_6
--- a/data/maps/objects/UndergroundPathRoute7.asm
+++ b/data/maps/objects/UndergroundPathRoute7.asm
@@ -1,17 +1,14 @@
 UndergroundPathRoute7_Object:
 	db $a ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 3, 7, 4, LAST_MAP
 	warp 4, 7, 4, LAST_MAP
 	warp 4, 4, 0, UNDERGROUND_PATH_WEST_EAST
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_MIDDLE_AGED_MAN, 2, 4, STAY, NONE, 1 ; person
 
-	; warp-to
-	warp_to 3, 7, UNDERGROUND_PATH_ROUTE_7_WIDTH
-	warp_to 4, 7, UNDERGROUND_PATH_ROUTE_7_WIDTH
-	warp_to 4, 4, UNDERGROUND_PATH_ROUTE_7_WIDTH ; UNDERGROUND_PATH_WEST_EAST
+	def_warps_to UNDERGROUND_PATH_ROUTE_7
--- a/data/maps/objects/UndergroundPathRoute7Copy.asm
+++ b/data/maps/objects/UndergroundPathRoute7Copy.asm
@@ -1,18 +1,15 @@
 UndergroundPathRoute7Copy_Object:
 	db $a ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 3, 7, 5, LAST_MAP
 	warp 4, 7, 5, LAST_MAP
 	warp 4, 4, 0, UNDERGROUND_PATH_WEST_EAST
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_GIRL, 3, 2, STAY, NONE, 1 ; person
 	object SPRITE_MIDDLE_AGED_MAN, 2, 4, STAY, NONE, 2 ; person
 
-	; warp-to
-	warp_to 3, 7, UNDERGROUND_PATH_ROUTE_7_COPY_WIDTH
-	warp_to 4, 7, UNDERGROUND_PATH_ROUTE_7_COPY_WIDTH
-	warp_to 4, 4, UNDERGROUND_PATH_ROUTE_7_COPY_WIDTH ; UNDERGROUND_PATH_WEST_EAST
+	def_warps_to UNDERGROUND_PATH_ROUTE_7_COPY
--- a/data/maps/objects/UndergroundPathRoute8.asm
+++ b/data/maps/objects/UndergroundPathRoute8.asm
@@ -1,17 +1,14 @@
 UndergroundPathRoute8_Object:
 	db $a ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 3, 7, 4, LAST_MAP
 	warp 4, 7, 4, LAST_MAP
 	warp 4, 4, 1, UNDERGROUND_PATH_WEST_EAST
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_GIRL, 3, 4, STAY, NONE, 1 ; person
 
-	; warp-to
-	warp_to 3, 7, UNDERGROUND_PATH_ROUTE_8_WIDTH
-	warp_to 4, 7, UNDERGROUND_PATH_ROUTE_8_WIDTH
-	warp_to 4, 4, UNDERGROUND_PATH_ROUTE_8_WIDTH ; UNDERGROUND_PATH_WEST_EAST
+	def_warps_to UNDERGROUND_PATH_ROUTE_8
--- a/data/maps/objects/UndergroundPathWestEast.asm
+++ b/data/maps/objects/UndergroundPathWestEast.asm
@@ -1,14 +1,12 @@
 UndergroundPathWestEast_Object:
 	db $1 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 5, 2, UNDERGROUND_PATH_ROUTE_7
 	warp 47, 2, 2, UNDERGROUND_PATH_ROUTE_8
 
-	db 0 ; signs
+	def_signs
 
-	db 0 ; objects
+	def_objects
 
-	; warp-to
-	warp_to 2, 5, UNDERGROUND_PATH_WEST_EAST_WIDTH ; UNDERGROUND_PATH_ROUTE_7
-	warp_to 47, 2, UNDERGROUND_PATH_WEST_EAST_WIDTH ; UNDERGROUND_PATH_ROUTE_8
+	def_warps_to UNDERGROUND_PATH_WEST_EAST
--- a/data/maps/objects/VermilionCity.asm
+++ b/data/maps/objects/VermilionCity.asm
@@ -1,7 +1,7 @@
 VermilionCity_Object:
 	db $43 ; border block
 
-	db 9 ; warps
+	def_warps
 	warp 11, 3, 0, VERMILION_POKECENTER
 	warp 9, 13, 0, POKEMON_FAN_CLUB
 	warp 23, 13, 0, VERMILION_MART
@@ -12,7 +12,7 @@
 	warp 15, 13, 0, VERMILION_TRADE_HOUSE
 	warp 7, 3, 0, VERMILION_OLD_ROD_HOUSE
 
-	db 7 ; signs
+	def_signs
 	sign 27, 3, 7 ; VermilionCityText7
 	sign 37, 13, 8 ; VermilionCityText8
 	sign 24, 13, 9 ; MartSignText
@@ -21,7 +21,7 @@
 	sign 7, 19, 12 ; VermilionCityText12
 	sign 29, 15, 13 ; VermilionCityText13
 
-	db 6 ; objects
+	def_objects
 	object SPRITE_BEAUTY, 19, 7, WALK, LEFT_RIGHT, 1 ; person
 	object SPRITE_GAMBLER, 14, 6, STAY, NONE, 2 ; person
 	object SPRITE_SAILOR, 19, 30, STAY, UP, 3 ; person
@@ -29,13 +29,4 @@
 	object SPRITE_MONSTER, 29, 9, WALK, UP_DOWN, 5 ; person
 	object SPRITE_SAILOR, 25, 27, WALK, LEFT_RIGHT, 6 ; person
 
-	; warp-to
-	warp_to 11, 3, VERMILION_CITY_WIDTH ; VERMILION_POKECENTER
-	warp_to 9, 13, VERMILION_CITY_WIDTH ; POKEMON_FAN_CLUB
-	warp_to 23, 13, VERMILION_CITY_WIDTH ; VERMILION_MART
-	warp_to 12, 19, VERMILION_CITY_WIDTH ; VERMILION_GYM
-	warp_to 23, 19, VERMILION_CITY_WIDTH ; VERMILION_PIDGEY_HOUSE
-	warp_to 18, 31, VERMILION_CITY_WIDTH ; VERMILION_DOCK
-	warp_to 19, 31, VERMILION_CITY_WIDTH ; VERMILION_DOCK
-	warp_to 15, 13, VERMILION_CITY_WIDTH ; VERMILION_TRADE_HOUSE
-	warp_to 7, 3, VERMILION_CITY_WIDTH ; VERMILION_OLD_ROD_HOUSE
+	def_warps_to VERMILION_CITY
--- a/data/maps/objects/VermilionDock.asm
+++ b/data/maps/objects/VermilionDock.asm
@@ -1,14 +1,12 @@
 VermilionDock_Object:
 	db $f ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 14, 0, 5, LAST_MAP
 	warp 14, 2, 1, SS_ANNE_1F
 
-	db 0 ; signs
+	def_signs
 
-	db 0 ; objects
+	def_objects
 
-	; warp-to
-	warp_to 14, 0, VERMILION_DOCK_WIDTH
-	warp_to 14, 2, VERMILION_DOCK_WIDTH ; SS_ANNE_1F
+	def_warps_to VERMILION_DOCK
--- a/data/maps/objects/VermilionGym.asm
+++ b/data/maps/objects/VermilionGym.asm
@@ -1,13 +1,13 @@
 VermilionGym_Object:
 	db $3 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 4, 17, 3, LAST_MAP
 	warp 5, 17, 3, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 5 ; objects
+	def_objects
 	object SPRITE_ROCKER, 5, 1, STAY, DOWN, 1, OPP_LT_SURGE, 1
 	object SPRITE_GENTLEMAN, 9, 6, STAY, LEFT, 2, OPP_GENTLEMAN, 3
 	object SPRITE_SUPER_NERD, 3, 8, STAY, LEFT, 3, OPP_ROCKER, 1
@@ -14,6 +14,4 @@
 	object SPRITE_SAILOR, 0, 10, STAY, RIGHT, 4, OPP_SAILOR, 8
 	object SPRITE_GYM_GUIDE, 4, 14, STAY, DOWN, 5 ; person
 
-	; warp-to
-	warp_to 4, 17, VERMILION_GYM_WIDTH
-	warp_to 5, 17, VERMILION_GYM_WIDTH
+	def_warps_to VERMILION_GYM
--- a/data/maps/objects/VermilionMart.asm
+++ b/data/maps/objects/VermilionMart.asm
@@ -1,17 +1,15 @@
 VermilionMart_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 2, LAST_MAP
 	warp 4, 7, 2, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_CLERK, 0, 5, STAY, RIGHT, 1 ; person
 	object SPRITE_COOLTRAINER_M, 5, 6, STAY, NONE, 2 ; person
 	object SPRITE_COOLTRAINER_F, 3, 3, WALK, LEFT_RIGHT, 3 ; person
 
-	; warp-to
-	warp_to 3, 7, VERMILION_MART_WIDTH
-	warp_to 4, 7, VERMILION_MART_WIDTH
+	def_warps_to VERMILION_MART
--- a/data/maps/objects/VermilionOldRodHouse.asm
+++ b/data/maps/objects/VermilionOldRodHouse.asm
@@ -1,15 +1,13 @@
 VermilionOldRodHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 8, LAST_MAP
 	warp 3, 7, 8, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_FISHING_GURU, 2, 4, STAY, RIGHT, 1 ; person
 
-	; warp-to
-	warp_to 2, 7, VERMILION_OLD_ROD_HOUSE_WIDTH
-	warp_to 3, 7, VERMILION_OLD_ROD_HOUSE_WIDTH
+	def_warps_to VERMILION_OLD_ROD_HOUSE
--- a/data/maps/objects/VermilionPidgeyHouse.asm
+++ b/data/maps/objects/VermilionPidgeyHouse.asm
@@ -1,17 +1,15 @@
 VermilionPidgeyHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 4, LAST_MAP
 	warp 3, 7, 4, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_YOUNGSTER, 5, 3, STAY, LEFT, 1 ; person
 	object SPRITE_BIRD, 3, 5, WALK, LEFT_RIGHT, 2 ; person
 	object SPRITE_PAPER, 4, 3, STAY, NONE, 3 ; person
 
-	; warp-to
-	warp_to 2, 7, VERMILION_PIDGEY_HOUSE_WIDTH
-	warp_to 3, 7, VERMILION_PIDGEY_HOUSE_WIDTH
+	def_warps_to VERMILION_PIDGEY_HOUSE
--- a/data/maps/objects/VermilionPokecenter.asm
+++ b/data/maps/objects/VermilionPokecenter.asm
@@ -1,18 +1,16 @@
 VermilionPokecenter_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 0, LAST_MAP
 	warp 4, 7, 0, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
 	object SPRITE_FISHING_GURU, 10, 5, STAY, NONE, 2 ; person
 	object SPRITE_SAILOR, 5, 4, STAY, NONE, 3 ; person
 	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
-	; warp-to
-	warp_to 3, 7, VERMILION_POKECENTER_WIDTH
-	warp_to 4, 7, VERMILION_POKECENTER_WIDTH
+	def_warps_to VERMILION_POKECENTER
--- a/data/maps/objects/VermilionTradeHouse.asm
+++ b/data/maps/objects/VermilionTradeHouse.asm
@@ -1,15 +1,13 @@
 VermilionTradeHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 7, LAST_MAP
 	warp 3, 7, 7, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 1 ; objects
+	def_objects
 	object SPRITE_LITTLE_GIRL, 3, 5, STAY, UP, 1 ; person
 
-	; warp-to
-	warp_to 2, 7, VERMILION_TRADE_HOUSE_WIDTH
-	warp_to 3, 7, VERMILION_TRADE_HOUSE_WIDTH
+	def_warps_to VERMILION_TRADE_HOUSE
--- a/data/maps/objects/VictoryRoad1F.asm
+++ b/data/maps/objects/VictoryRoad1F.asm
@@ -1,14 +1,14 @@
 VictoryRoad1F_Object:
 	db $7d ; border block
 
-	db 3 ; warps
+	def_warps
 	warp 8, 17, 2, LAST_MAP
 	warp 9, 17, 2, LAST_MAP
 	warp 1, 1, 0, VICTORY_ROAD_2F
 
-	db 0 ; signs
+	def_signs
 
-	db 7 ; objects
+	def_objects
 	object SPRITE_COOLTRAINER_F, 7, 5, STAY, RIGHT, 1, OPP_COOLTRAINER_F, 5
 	object SPRITE_COOLTRAINER_M, 3, 2, STAY, DOWN, 2, OPP_COOLTRAINER_M, 5
 	object SPRITE_POKE_BALL, 11, 0, STAY, NONE, 3, TM_SKY_ATTACK
@@ -17,7 +17,4 @@
 	object SPRITE_BOULDER, 14, 2, STAY, BOULDER_MOVEMENT_BYTE_2, 6 ; person
 	object SPRITE_BOULDER, 2, 10, STAY, BOULDER_MOVEMENT_BYTE_2, 7 ; person
 
-	; warp-to
-	warp_to 8, 17, VICTORY_ROAD_1F_WIDTH
-	warp_to 9, 17, VICTORY_ROAD_1F_WIDTH
-	warp_to 1, 1, VICTORY_ROAD_1F_WIDTH ; VICTORY_ROAD_2F
+	def_warps_to VICTORY_ROAD_1F
--- a/data/maps/objects/VictoryRoad2F.asm
+++ b/data/maps/objects/VictoryRoad2F.asm
@@ -1,7 +1,7 @@
 VictoryRoad2F_Object:
 	db $7d ; border block
 
-	db 7 ; warps
+	def_warps
 	warp 0, 8, 2, VICTORY_ROAD_1F
 	warp 29, 7, 3, LAST_MAP
 	warp 29, 8, 3, LAST_MAP
@@ -10,9 +10,9 @@
 	warp 27, 7, 1, VICTORY_ROAD_3F
 	warp 1, 1, 3, VICTORY_ROAD_3F
 
-	db 0 ; signs
+	def_signs
 
-	db 13 ; objects
+	def_objects
 	object SPRITE_HIKER, 12, 9, STAY, LEFT, 1, OPP_BLACKBELT, 9
 	object SPRITE_SUPER_NERD, 21, 13, STAY, LEFT, 2, OPP_JUGGLER, 2
 	object SPRITE_COOLTRAINER_M, 19, 8, STAY, DOWN, 3, OPP_TAMER, 5
@@ -27,11 +27,4 @@
 	object SPRITE_BOULDER, 5, 5, STAY, BOULDER_MOVEMENT_BYTE_2, 12 ; person
 	object SPRITE_BOULDER, 23, 16, STAY, BOULDER_MOVEMENT_BYTE_2, 13 ; person
 
-	; warp-to
-	warp_to 0, 8, VICTORY_ROAD_2F_WIDTH ; VICTORY_ROAD_1F
-	warp_to 29, 7, VICTORY_ROAD_2F_WIDTH
-	warp_to 29, 8, VICTORY_ROAD_2F_WIDTH
-	warp_to 23, 7, VICTORY_ROAD_2F_WIDTH ; VICTORY_ROAD_3F
-	warp_to 25, 14, VICTORY_ROAD_2F_WIDTH ; VICTORY_ROAD_3F
-	warp_to 27, 7, VICTORY_ROAD_2F_WIDTH ; VICTORY_ROAD_3F
-	warp_to 1, 1, VICTORY_ROAD_2F_WIDTH ; VICTORY_ROAD_3F
+	def_warps_to VICTORY_ROAD_2F
--- a/data/maps/objects/VictoryRoad3F.asm
+++ b/data/maps/objects/VictoryRoad3F.asm
@@ -1,15 +1,15 @@
 VictoryRoad3F_Object:
 	db $7d ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 23, 7, 3, VICTORY_ROAD_2F
 	warp 26, 8, 5, VICTORY_ROAD_2F
 	warp 27, 15, 4, VICTORY_ROAD_2F
 	warp 2, 0, 6, VICTORY_ROAD_2F
 
-	db 0 ; signs
+	def_signs
 
-	db 10 ; objects
+	def_objects
 	object SPRITE_COOLTRAINER_M, 28, 5, STAY, LEFT, 1, OPP_COOLTRAINER_M, 2
 	object SPRITE_COOLTRAINER_F, 7, 13, STAY, RIGHT, 2, OPP_COOLTRAINER_F, 2
 	object SPRITE_COOLTRAINER_M, 6, 14, STAY, LEFT, 3, OPP_COOLTRAINER_M, 3
@@ -21,8 +21,4 @@
 	object SPRITE_BOULDER, 24, 10, STAY, BOULDER_MOVEMENT_BYTE_2, 9 ; person
 	object SPRITE_BOULDER, 22, 15, STAY, BOULDER_MOVEMENT_BYTE_2, 10 ; person
 
-	; warp-to
-	warp_to 23, 7, VICTORY_ROAD_3F_WIDTH ; VICTORY_ROAD_2F
-	warp_to 26, 8, VICTORY_ROAD_3F_WIDTH ; VICTORY_ROAD_2F
-	warp_to 27, 15, VICTORY_ROAD_3F_WIDTH ; VICTORY_ROAD_2F
-	warp_to 2, 0, VICTORY_ROAD_3F_WIDTH ; VICTORY_ROAD_2F
+	def_warps_to VICTORY_ROAD_3F
--- a/data/maps/objects/ViridianCity.asm
+++ b/data/maps/objects/ViridianCity.asm
@@ -1,7 +1,7 @@
 ViridianCity_Object:
 	db $f ; border block
 
-	db 5 ; warps
+	def_warps
 	warp 23, 25, 0, VIRIDIAN_POKECENTER
 	warp 29, 19, 0, VIRIDIAN_MART
 	warp 21, 15, 0, VIRIDIAN_SCHOOL_HOUSE
@@ -8,7 +8,7 @@
 	warp 21, 9, 0, VIRIDIAN_NICKNAME_HOUSE
 	warp 32, 7, 0, VIRIDIAN_GYM
 
-	db 6 ; signs
+	def_signs
 	sign 17, 17, 8 ; ViridianCityText8
 	sign 19, 1, 9 ; ViridianCityText9
 	sign 21, 29, 10 ; ViridianCityText10
@@ -16,7 +16,7 @@
 	sign 24, 25, 12 ; PokeCenterSignText
 	sign 27, 7, 13 ; ViridianCityText13
 
-	db 7 ; objects
+	def_objects
 	object SPRITE_YOUNGSTER, 13, 20, WALK, ANY_DIR, 1 ; person
 	object SPRITE_GAMBLER, 30, 8, STAY, NONE, 2 ; person
 	object SPRITE_YOUNGSTER, 30, 25, WALK, ANY_DIR, 3 ; person
@@ -25,9 +25,4 @@
 	object SPRITE_FISHER, 6, 23, STAY, DOWN, 6 ; person
 	object SPRITE_GAMBLER, 17, 5, WALK, LEFT_RIGHT, 7 ; person
 
-	; warp-to
-	warp_to 23, 25, VIRIDIAN_CITY_WIDTH ; VIRIDIAN_POKECENTER
-	warp_to 29, 19, VIRIDIAN_CITY_WIDTH ; VIRIDIAN_MART
-	warp_to 21, 15, VIRIDIAN_CITY_WIDTH ; VIRIDIAN_SCHOOL_HOUSE
-	warp_to 21, 9, VIRIDIAN_CITY_WIDTH ; VIRIDIAN_NICKNAME_HOUSE
-	warp_to 32, 7, VIRIDIAN_CITY_WIDTH ; VIRIDIAN_GYM
+	def_warps_to VIRIDIAN_CITY
--- a/data/maps/objects/ViridianForest.asm
+++ b/data/maps/objects/ViridianForest.asm
@@ -1,7 +1,7 @@
 ViridianForest_Object:
 	db $3 ; border block
 
-	db 6 ; warps
+	def_warps
 	warp 1, 0, 2, VIRIDIAN_FOREST_NORTH_GATE
 	warp 2, 0, 3, VIRIDIAN_FOREST_NORTH_GATE
 	warp 15, 47, 1, VIRIDIAN_FOREST_SOUTH_GATE
@@ -9,7 +9,7 @@
 	warp 17, 47, 1, VIRIDIAN_FOREST_SOUTH_GATE
 	warp 18, 47, 1, VIRIDIAN_FOREST_SOUTH_GATE
 
-	db 6 ; signs
+	def_signs
 	sign 24, 40, 9 ; ViridianForestText9
 	sign 16, 32, 10 ; ViridianForestText10
 	sign 26, 17, 11 ; ViridianForestText11
@@ -17,7 +17,7 @@
 	sign 18, 45, 13 ; ViridianForestText13
 	sign 2, 1, 14 ; ViridianForestText14
 
-	db 8 ; objects
+	def_objects
 	object SPRITE_YOUNGSTER, 16, 43, STAY, NONE, 1 ; person
 	object SPRITE_YOUNGSTER, 30, 33, STAY, LEFT, 2, OPP_BUG_CATCHER, 1
 	object SPRITE_YOUNGSTER, 30, 19, STAY, LEFT, 3, OPP_BUG_CATCHER, 2
@@ -27,10 +27,4 @@
 	object SPRITE_POKE_BALL, 1, 31, STAY, NONE, 7, POKE_BALL
 	object SPRITE_YOUNGSTER, 27, 40, STAY, NONE, 8 ; person
 
-	; warp-to
-	warp_to 1, 0, VIRIDIAN_FOREST_WIDTH ; VIRIDIAN_FOREST_NORTH_GATE
-	warp_to 2, 0, VIRIDIAN_FOREST_WIDTH ; VIRIDIAN_FOREST_NORTH_GATE
-	warp_to 15, 47, VIRIDIAN_FOREST_WIDTH ; VIRIDIAN_FOREST_SOUTH_GATE
-	warp_to 16, 47, VIRIDIAN_FOREST_WIDTH ; VIRIDIAN_FOREST_SOUTH_GATE
-	warp_to 17, 47, VIRIDIAN_FOREST_WIDTH ; VIRIDIAN_FOREST_SOUTH_GATE
-	warp_to 18, 47, VIRIDIAN_FOREST_WIDTH ; VIRIDIAN_FOREST_SOUTH_GATE
+	def_warps_to VIRIDIAN_FOREST
--- a/data/maps/objects/ViridianForestNorthGate.asm
+++ b/data/maps/objects/ViridianForestNorthGate.asm
@@ -1,20 +1,16 @@
 ViridianForestNorthGate_Object:
 	db $a ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 4, 0, 1, LAST_MAP
 	warp 5, 0, 1, LAST_MAP
 	warp 4, 7, 0, VIRIDIAN_FOREST
 	warp 5, 7, 0, VIRIDIAN_FOREST
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_SUPER_NERD, 3, 2, STAY, NONE, 1 ; person
 	object SPRITE_GRAMPS, 2, 5, STAY, NONE, 2 ; person
 
-	; warp-to
-	warp_to 4, 0, VIRIDIAN_FOREST_NORTH_GATE_WIDTH
-	warp_to 5, 0, VIRIDIAN_FOREST_NORTH_GATE_WIDTH
-	warp_to 4, 7, VIRIDIAN_FOREST_NORTH_GATE_WIDTH ; VIRIDIAN_FOREST
-	warp_to 5, 7, VIRIDIAN_FOREST_NORTH_GATE_WIDTH ; VIRIDIAN_FOREST
+	def_warps_to VIRIDIAN_FOREST_NORTH_GATE
--- a/data/maps/objects/ViridianForestSouthGate.asm
+++ b/data/maps/objects/ViridianForestSouthGate.asm
@@ -1,20 +1,16 @@
 ViridianForestSouthGate_Object:
 	db $a ; border block
 
-	db 4 ; warps
+	def_warps
 	warp 4, 0, 3, VIRIDIAN_FOREST
 	warp 5, 0, 4, VIRIDIAN_FOREST
 	warp 4, 7, 5, LAST_MAP
 	warp 5, 7, 5, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_GIRL, 8, 4, STAY, LEFT, 1 ; person
 	object SPRITE_LITTLE_GIRL, 2, 4, WALK, UP_DOWN, 2 ; person
 
-	; warp-to
-	warp_to 4, 0, VIRIDIAN_FOREST_SOUTH_GATE_WIDTH ; VIRIDIAN_FOREST
-	warp_to 5, 0, VIRIDIAN_FOREST_SOUTH_GATE_WIDTH ; VIRIDIAN_FOREST
-	warp_to 4, 7, VIRIDIAN_FOREST_SOUTH_GATE_WIDTH
-	warp_to 5, 7, VIRIDIAN_FOREST_SOUTH_GATE_WIDTH
+	def_warps_to VIRIDIAN_FOREST_SOUTH_GATE
--- a/data/maps/objects/ViridianGym.asm
+++ b/data/maps/objects/ViridianGym.asm
@@ -1,13 +1,13 @@
 ViridianGym_Object:
 	db $3 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 16, 17, 4, LAST_MAP
 	warp 17, 17, 4, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 11 ; objects
+	def_objects
 	object SPRITE_GIOVANNI, 2, 1, STAY, DOWN, 1, OPP_GIOVANNI, 3
 	object SPRITE_COOLTRAINER_M, 12, 7, STAY, DOWN, 2, OPP_COOLTRAINER_M, 9
 	object SPRITE_HIKER, 11, 11, STAY, UP, 3, OPP_BLACKBELT, 6
@@ -20,6 +20,4 @@
 	object SPRITE_GYM_GUIDE, 16, 15, STAY, DOWN, 10 ; person
 	object SPRITE_POKE_BALL, 16, 9, STAY, NONE, 11, REVIVE
 
-	; warp-to
-	warp_to 16, 17, VIRIDIAN_GYM_WIDTH
-	warp_to 17, 17, VIRIDIAN_GYM_WIDTH
+	def_warps_to VIRIDIAN_GYM
--- a/data/maps/objects/ViridianMart.asm
+++ b/data/maps/objects/ViridianMart.asm
@@ -1,17 +1,15 @@
 ViridianMart_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 1, LAST_MAP
 	warp 4, 7, 1, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_CLERK, 0, 5, STAY, RIGHT, 1 ; person
 	object SPRITE_YOUNGSTER, 5, 5, WALK, UP_DOWN, 2 ; person
 	object SPRITE_COOLTRAINER_M, 3, 3, STAY, NONE, 3 ; person
 
-	; warp-to
-	warp_to 3, 7, VIRIDIAN_MART_WIDTH
-	warp_to 4, 7, VIRIDIAN_MART_WIDTH
+	def_warps_to VIRIDIAN_MART
--- a/data/maps/objects/ViridianNicknameHouse.asm
+++ b/data/maps/objects/ViridianNicknameHouse.asm
@@ -1,18 +1,16 @@
 ViridianNicknameHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 3, LAST_MAP
 	warp 3, 7, 3, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_BALDING_GUY, 5, 3, STAY, NONE, 1 ; person
 	object SPRITE_LITTLE_GIRL, 1, 4, WALK, UP_DOWN, 2 ; person
 	object SPRITE_BIRD, 5, 5, WALK, LEFT_RIGHT, 3 ; person
 	object SPRITE_CLIPBOARD, 4, 0, STAY, NONE, 4 ; person
 
-	; warp-to
-	warp_to 2, 7, VIRIDIAN_NICKNAME_HOUSE_WIDTH
-	warp_to 3, 7, VIRIDIAN_NICKNAME_HOUSE_WIDTH
+	def_warps_to VIRIDIAN_NICKNAME_HOUSE
--- a/data/maps/objects/ViridianPokecenter.asm
+++ b/data/maps/objects/ViridianPokecenter.asm
@@ -1,18 +1,16 @@
 ViridianPokecenter_Object:
 	db $0 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 3, 7, 0, LAST_MAP
 	warp 4, 7, 0, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 4 ; objects
+	def_objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
 	object SPRITE_GENTLEMAN, 10, 5, WALK, UP_DOWN, 2 ; person
 	object SPRITE_COOLTRAINER_M, 4, 3, STAY, NONE, 3 ; person
 	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
-	; warp-to
-	warp_to 3, 7, VIRIDIAN_POKECENTER_WIDTH
-	warp_to 4, 7, VIRIDIAN_POKECENTER_WIDTH
+	def_warps_to VIRIDIAN_POKECENTER
--- a/data/maps/objects/ViridianSchoolHouse.asm
+++ b/data/maps/objects/ViridianSchoolHouse.asm
@@ -1,16 +1,14 @@
 ViridianSchoolHouse_Object:
 	db $a ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 2, 7, 2, LAST_MAP
 	warp 3, 7, 2, LAST_MAP
 
-	db 0 ; signs
+	def_signs
 
-	db 2 ; objects
+	def_objects
 	object SPRITE_BRUNETTE_GIRL, 3, 5, STAY, UP, 1 ; person
 	object SPRITE_COOLTRAINER_F, 4, 1, STAY, DOWN, 2 ; person
 
-	; warp-to
-	warp_to 2, 7, VIRIDIAN_SCHOOL_HOUSE_WIDTH
-	warp_to 3, 7, VIRIDIAN_SCHOOL_HOUSE_WIDTH
+	def_warps_to VIRIDIAN_SCHOOL_HOUSE
--- a/data/maps/objects/WardensHouse.asm
+++ b/data/maps/objects/WardensHouse.asm
@@ -1,19 +1,17 @@
 WardensHouse_Object:
 	db $17 ; border block
 
-	db 2 ; warps
+	def_warps
 	warp 4, 7, 3, LAST_MAP
 	warp 5, 7, 3, LAST_MAP
 
-	db 2 ; signs
+	def_signs
 	sign 4, 3, 4 ; FuchsiaHouse2Text4
 	sign 5, 3, 5 ; FuchsiaHouse2Text5
 
-	db 3 ; objects
+	def_objects
 	object SPRITE_WARDEN, 2, 3, STAY, NONE, 1 ; person
 	object SPRITE_POKE_BALL, 8, 3, STAY, NONE, 2, RARE_CANDY
 	object SPRITE_BOULDER, 8, 4, STAY, BOULDER_MOVEMENT_BYTE_2, 3 ; person
 
-	; warp-to
-	warp_to 4, 7, WARDENS_HOUSE_WIDTH
-	warp_to 5, 7, WARDENS_HOUSE_WIDTH
+	def_warps_to WARDENS_HOUSE
--- a/macros/scripts/maps.asm
+++ b/macros/scripts/maps.asm
@@ -1,3 +1,12 @@
+def_objects: MACRO
+	IF DEF(_NUM_OBJECTS)
+		PURGE _NUM_OBJECTS
+	ENDC
+_NUM_OBJECTS EQUS "_NUM_OBJECTS_\@"
+	db _NUM_OBJECTS
+_NUM_OBJECTS = 0
+ENDM
+
 ;\1 sprite id
 ;\2 x position
 ;\3 y position
@@ -23,8 +32,18 @@
 	ELSE
 		db \6
 	ENDC
+_NUM_OBJECTS = _NUM_OBJECTS + 1
 ENDM
 
+def_warps: MACRO
+	IF DEF(_NUM_WARPS)
+		PURGE _NUM_WARPS
+	ENDC
+_NUM_WARPS EQUS "_NUM_WARPS_\@"
+	db _NUM_WARPS
+_NUM_WARPS = 0
+ENDM
+
 ;\1 x position
 ;\2 y position
 ;\3 destination warp id
@@ -31,15 +50,46 @@
 ;\4 destination map (-1 = wLastMap)
 warp: MACRO
 	db \2, \1, \3, \4
+_NUM_WARPS = _NUM_WARPS + 1
+; the Nth warp defines a corresponding Nth warp_to, stored in _WARP_TO_NUM_<N>
+_WARP_TO_NAME EQUS "_WARP_TO_NUM_{d:{_NUM_WARPS}}"
+_WARP_TO_NAME EQUS "warp_to \1, \2, _WARP_TO_WIDTH"
+	PURGE _WARP_TO_NAME
 ENDM
 
+def_signs: MACRO
+	IF DEF(_NUM_SIGNS)
+		PURGE _NUM_SIGNS
+	ENDC
+_NUM_SIGNS EQUS "_NUM_SIGNS_\@"
+	db _NUM_SIGNS
+_NUM_SIGNS = 0
+ENDM
+
 ;\1 x position
 ;\2 y position
 ;\3 sign id
 sign: MACRO
 	db \2, \1, \3
+_NUM_SIGNS = _NUM_SIGNS + 1
 ENDM
 
+;\1 source map
+def_warps_to: MACRO
+; output and purge each _WARP_TO_NUM_<N> warp_to, from N=1 to _NUM_WARPS
+_WARP_TO_WIDTH = \1_WIDTH
+_WARP_TO_N = 1
+	REPT _NUM_WARPS
+_WARP_TO_NAME EQUS "_WARP_TO_NUM_{d:_WARP_TO_N}"
+		_WARP_TO_NAME
+_WARP_TO_N = _WARP_TO_N + 1
+_PURGE_WARP_TO_NUM EQUS "PURGE {_WARP_TO_NAME}"
+		_PURGE_WARP_TO_NUM
+		PURGE _PURGE_WARP_TO_NUM
+		PURGE _WARP_TO_NAME
+	ENDR
+ENDM
+
 ;\1 x position
 ;\2 y position
 ;\3 map width
@@ -96,9 +146,9 @@
 ; Comes after map_header and connection macros
 end_map_header: MACRO
 	dw CURRENT_MAP_OBJECT
-PURGE CURRENT_MAP_WIDTH
-PURGE CURRENT_MAP_HEIGHT
-PURGE CURRENT_MAP_OBJECT
+	PURGE CURRENT_MAP_WIDTH
+	PURGE CURRENT_MAP_HEIGHT
+	PURGE CURRENT_MAP_OBJECT
 ENDM
 
 ; Connections go in order: north, south, west, east