shithub: pokered

Download patch

ref: 4373aafac152f64621bf3d8c6b8d037cd9c76f7b
parent: f4514ff53ce74d13013c994cfd321aa711fc95c2
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Mon Aug 17 13:47:28 EDT 2020

Use def_warps_to macro for automatic warp_to entries

--- a/data/maps/objects/AgathasRoom.asm
+++ b/data/maps/objects/AgathasRoom.asm
@@ -12,8 +12,4 @@
 	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
@@ -12,6 +12,4 @@
 	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
@@ -12,6 +12,4 @@
 	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
@@ -12,6 +12,4 @@
 	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
@@ -12,8 +12,4 @@
 	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
@@ -12,6 +12,4 @@
 	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
@@ -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
@@ -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
@@ -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
@@ -12,6 +12,4 @@
 	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
@@ -17,9 +17,4 @@
 	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
@@ -12,8 +12,4 @@
 
 	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
@@ -19,8 +19,4 @@
 	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
@@ -11,7 +11,4 @@
 
 	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
@@ -11,6 +11,4 @@
 	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
@@ -16,10 +16,4 @@
 	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
@@ -15,7 +15,4 @@
 	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
@@ -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
@@ -14,7 +14,4 @@
 	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
@@ -15,7 +15,4 @@
 	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
@@ -10,6 +10,4 @@
 
 	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
@@ -14,5 +14,4 @@
 	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
@@ -13,6 +13,4 @@
 	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
@@ -11,7 +11,4 @@
 	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
@@ -19,13 +19,4 @@
 	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
@@ -16,10 +16,4 @@
 	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
@@ -11,5 +11,4 @@
 	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
@@ -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
@@ -13,6 +13,4 @@
 	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
@@ -12,6 +12,4 @@
 	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
@@ -13,6 +13,4 @@
 	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
@@ -11,6 +11,4 @@
 	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
@@ -13,7 +13,4 @@
 	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
@@ -13,8 +13,4 @@
 	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
@@ -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
@@ -19,9 +19,4 @@
 	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
@@ -17,9 +17,4 @@
 	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
@@ -11,6 +11,4 @@
 	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
@@ -14,6 +14,4 @@
 	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
@@ -12,6 +12,4 @@
 	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
@@ -12,6 +12,4 @@
 	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
@@ -13,6 +13,4 @@
 	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
@@ -7,3 +7,5 @@
 
 	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
@@ -13,7 +13,4 @@
 	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
@@ -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
@@ -10,6 +10,4 @@
 	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
@@ -9,6 +9,4 @@
 
 	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
@@ -11,7 +11,4 @@
 	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
@@ -11,7 +11,4 @@
 	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
@@ -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
@@ -12,6 +12,4 @@
 	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
@@ -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
@@ -11,7 +11,4 @@
 	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
@@ -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
@@ -12,6 +12,4 @@
 	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
@@ -12,6 +12,4 @@
 	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
@@ -13,6 +13,4 @@
 	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
@@ -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
@@ -14,6 +14,4 @@
 	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
@@ -10,6 +10,4 @@
 	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
@@ -9,6 +9,4 @@
 
 	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
@@ -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
@@ -11,7 +11,4 @@
 	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
@@ -11,6 +11,4 @@
 	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
@@ -12,6 +12,4 @@
 	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
@@ -13,6 +13,4 @@
 	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
@@ -22,10 +22,4 @@
 	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
@@ -12,8 +12,4 @@
 	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
@@ -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
@@ -10,6 +10,4 @@
 	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
@@ -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
@@ -15,12 +15,4 @@
 
 	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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -10,6 +10,4 @@
 	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
@@ -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
@@ -17,7 +17,4 @@
 	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
@@ -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
@@ -12,6 +12,4 @@
 	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
@@ -12,6 +12,4 @@
 	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
@@ -12,6 +12,4 @@
 	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
@@ -13,6 +13,4 @@
 	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
@@ -11,6 +11,4 @@
 	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
@@ -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
@@ -18,12 +18,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
@@ -15,8 +15,4 @@
 	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
@@ -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
@@ -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
@@ -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
@@ -11,6 +11,4 @@
 	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
@@ -13,6 +13,4 @@
 	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
@@ -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
@@ -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
@@ -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
@@ -12,5 +12,4 @@
 	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
@@ -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
@@ -12,7 +12,4 @@
 	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
@@ -8,5 +8,4 @@
 
 	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
@@ -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
@@ -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
@@ -13,6 +13,4 @@
 	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
@@ -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
@@ -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
@@ -13,6 +13,4 @@
 	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
@@ -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
@@ -10,6 +10,4 @@
 
 	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
@@ -10,5 +10,7 @@
 	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
@@ -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
@@ -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
@@ -13,9 +13,4 @@
 	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
@@ -12,5 +12,4 @@
 	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
@@ -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
@@ -13,9 +13,4 @@
 	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
@@ -11,5 +11,4 @@
 	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
@@ -10,6 +10,4 @@
 	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
@@ -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
@@ -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
@@ -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
@@ -13,9 +13,4 @@
 	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
@@ -10,5 +10,4 @@
 	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
@@ -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
@@ -11,6 +11,4 @@
 	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
@@ -18,13 +18,4 @@
 	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
@@ -12,5 +12,4 @@
 	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
@@ -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
@@ -16,8 +16,4 @@
 	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
@@ -13,9 +13,4 @@
 	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
@@ -11,5 +11,4 @@
 	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
@@ -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
@@ -17,13 +17,7 @@
 	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
@@ -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
@@ -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
@@ -11,5 +11,4 @@
 	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
@@ -12,8 +12,4 @@
 	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
@@ -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
@@ -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
@@ -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
@@ -13,8 +13,4 @@
 	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
@@ -11,6 +11,4 @@
 	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
@@ -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
@@ -16,7 +16,4 @@
 	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
@@ -13,9 +13,4 @@
 
 	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
@@ -12,8 +12,4 @@
 	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
@@ -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
@@ -12,8 +12,4 @@
 	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
@@ -13,9 +13,4 @@
 
 	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
@@ -12,8 +12,4 @@
 	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
@@ -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
@@ -12,8 +12,4 @@
 	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
@@ -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
@@ -20,15 +20,4 @@
 	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
@@ -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
@@ -18,13 +18,4 @@
 	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
@@ -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
@@ -10,6 +10,4 @@
 	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
@@ -13,10 +13,4 @@
 
 	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
@@ -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
@@ -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
@@ -11,5 +11,4 @@
 	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
@@ -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
@@ -19,13 +19,4 @@
 	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
@@ -11,6 +11,4 @@
 	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
@@ -19,9 +19,4 @@
 	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
@@ -12,6 +12,4 @@
 	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
@@ -13,8 +13,4 @@
 	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
@@ -23,13 +23,4 @@
 	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
@@ -12,6 +12,4 @@
 	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
@@ -10,6 +10,4 @@
 	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
@@ -23,12 +23,4 @@
 	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
@@ -12,6 +12,4 @@
 	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
@@ -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
@@ -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
@@ -12,6 +12,4 @@
 	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
@@ -13,6 +13,4 @@
 	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
@@ -13,6 +13,4 @@
 	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
@@ -16,14 +16,7 @@
 	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
@@ -16,11 +16,4 @@
 	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
@@ -16,11 +16,4 @@
 	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
@@ -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
@@ -16,8 +16,4 @@
 	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
@@ -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
@@ -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
@@ -13,9 +13,4 @@
 	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
@@ -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
@@ -21,14 +21,4 @@
 	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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -18,11 +18,4 @@
 	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
@@ -16,9 +16,4 @@
 	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
@@ -10,6 +10,4 @@
 
 	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
@@ -7,3 +7,5 @@
 
 	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
@@ -9,6 +9,4 @@
 
 	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
@@ -11,7 +11,4 @@
 	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
@@ -11,7 +11,4 @@
 	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
@@ -11,7 +11,4 @@
 	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
@@ -12,7 +12,4 @@
 	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
@@ -11,7 +11,4 @@
 	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
@@ -9,6 +9,4 @@
 
 	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
@@ -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
@@ -9,6 +9,4 @@
 
 	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
@@ -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
@@ -12,6 +12,4 @@
 	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
@@ -10,6 +10,4 @@
 	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
@@ -12,6 +12,4 @@
 	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
@@ -13,6 +13,4 @@
 	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
@@ -10,6 +10,4 @@
 	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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -13,8 +13,4 @@
 	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
@@ -13,8 +13,4 @@
 	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
@@ -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
@@ -12,6 +12,4 @@
 	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
@@ -13,6 +13,4 @@
 	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
@@ -13,6 +13,4 @@
 	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
@@ -11,6 +11,4 @@
 	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
@@ -14,6 +14,4 @@
 	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
@@ -42,6 +42,10 @@
 _NUM_WARPS EQUS "_NUM_WARPS_\@"
 	db _NUM_WARPS
 _NUM_WARPS = 0
+	IF DEF(_WARP_TO_BUFFER)
+		PURGE _WARP_TO_BUFFER
+	ENDC
+_WARP_TO_BUFFER EQUS ""
 ENDM
 
 ;\1 x position
@@ -51,6 +55,10 @@
 warp: MACRO
 	db \2, \1, \3, \4
 _NUM_WARPS = _NUM_WARPS + 1
+_TMP EQUS "{_WARP_TO_BUFFER}\1,\2; "
+	PURGE _WARP_TO_BUFFER
+_WARP_TO_BUFFER EQUS "{_TMP}"
+	PURGE _TMP
 ENDM
 
 def_signs: MACRO
@@ -68,6 +76,21 @@
 sign: MACRO
 	db \2, \1, \3
 _NUM_SIGNS = _NUM_SIGNS + 1
+ENDM
+
+def_warps_to: MACRO
+_WARP_TO_WIDTH EQU \1_WIDTH
+	REPT _NUM_WARPS
+_SEP = STRIN("{_WARP_TO_BUFFER}", ";")
+_WARP_TO_NTH EQUS STRCAT(STRCAT("warp_to ", STRSUB("{_WARP_TO_BUFFER}", 1, _SEP - 1)), ", _WARP_TO_WIDTH")
+_TMP EQUS STRSUB("{_WARP_TO_BUFFER}", _SEP + 1, STRLEN("{_WARP_TO_BUFFER}") - _SEP)
+	PURGE _WARP_TO_BUFFER
+_WARP_TO_BUFFER EQUS "{_TMP}"
+	PURGE _TMP
+	_WARP_TO_NTH
+PURGE _WARP_TO_NTH
+	ENDR
+PURGE _WARP_TO_WIDTH
 ENDM
 
 ;\1 x position