map_warp={["start"]=0,data= function ()return { 
low_level = { 64 , 61 , get_player_map3_index ( ) , 63 } , 
high_level = { 66 , 67 , 68 , 62 } , 
outside_city = { get_player_map1_index ( ) , get_player_map2_index ( ) } , 
} 
end ,get_teleport_list= function (page)local available_teleports = map_warp . data ( ) 
local is_in_any_city = is_player_in_any_m1 ( ) or is_player_in_any_m2 ( ) 
local map_list ; 
if is_in_any_city then 
if page == 1 then 
map_list = available_teleports . low_level else 
map_list = available_teleports . high_level end 
else 
map_list = available_teleports . outside_city end 
local options = { } 
for i , map_index in pairs ( map_list ) begin 
table . insert ( options , translate . general . map_names [ map_index ] ) 
end 
if is_in_any_city and pc . get_level ( ) >= 60 and page == 1 then 
table . insert ( options , translate . map_warp . next ) 
elseif page == 2 then 
table . insert ( options , translate . map_warp . previous ) 
end 
table . insert ( options , translate . general . cancel ) 
local cancel_index = table . getn ( options ) 
return options , map_list , cancel_index 
end ,process_teleport_list= function (current_page,page_count,base_price)local price = base_price * ( current_page == 1 and 1 or 3 ) 
npc_name ( ) 
say_split ( translate . map_warp . talk2 ) 
say_reward ( string . format ( translate . map_warp . price , parse_number ( price ) ) ) 
local select_list , map_list , cancel_index = map_warp . get_teleport_list ( current_page ) 
local x = select_table ( select_list ) 
if x == cancel_index then 
return - 1 
end 
if page_count > 1 and x == cancel_index - 1 then 
local next_page ; 
if current_page == 2 then 
next_page = 1 
else 
next_page = 2 
end 
return map_warp . process_teleport_list ( next_page , page_count , base_price ) 
end 
return map_list [ x ] , price 
end ,check= function (price,player_level)if not pc . can_warp ( ) then 
npc_name ( ) 
say_split ( translate . general . wait_after_exchange ) 
say ( ) 
return false 
end 
if player_level < 11 then 
npc_name ( ) 
say_split ( translate . map_warp . low_level ) 
say ( ) 
return false 
end 
if pc . get_gold ( ) < price then 
npc_name ( ) 
say_split ( translate . map_warp . no_money ) 
say_reward ( string . format ( translate . map_warp . price , parse_number ( price ) ) ) 
say ( ) 
return false 
end 
return true 
end }