objectdef ByteFlightPaths { Property string SourceRegion="" Property string SourceFlightPath="" function IterateFlightpaths(string Callback, int MapID) { variable int Index = 1 variable float X = 0 variable float Y = 0 variable float Z = 0 variable string FlightPath variable lnavregionref Region variable int FMMapID do { if ${WoWDB[118].GetFloat[${Index},2](exists)} { FMMapID:Set[${WoWDB[118].GetInt[${Index},1]}] X:Set[${WoWDB[118].GetFloat[${Index},2]}] Y:Set[${WoWDB[118].GetFloat[${Index},3]}] Z:Set[${WoWDB[118].GetFloat[${Index},4]}] FlightPath:Set["${WoWDB[118].GetString[${Index},5]}"] Region:SetRegion[${LNavRegionGroup["Flight master"].NearestRegion[${X},${Y},${Z}].ID}] if ${Region.ID} { if ${Math.Distance[${X},${Y},${Z},${Region.CenterPoint}]}<10 && ${FMMapID} == ${MapID} { This:Debug[">>> ${Region.Name}"] call ${Callback} "${Region.Name}" "${FlightPath}" } } } } while ${Index:Inc} <= 200 } function ConnectFlightPathsCB(string Region, string FlightPath) { declare Connection lnavconnectionref if ${Region.NotEqual["${This.SourceRegion}"]} { Connection:SetConnection[${LNavRegion[${This.SourceRegion}].Connect["${Region}"]}] Connection:SetCustom["FlightPath","${FlightPath}"] Connection:SetCustom["Method","Fly"] Connection:SetDistance[${Math.Calc[${Connection.ActualDistance}/2]}] Connection:SetConnection[${LNavRegion[${Region}].Connect["${This.SourceRegion}"]}] Connection:SetCustom["FlightPath","${This.SourceFlightPath}"] Connection:SetDistance[${Math.Calc[${Connection.ActualDistance}/2]}] Connection:SetCustom["Method","Fly"] } } function ListFlightPathsCB(string Region, string FlightPath) { This.SourceRegion:Set["${Region}"] This.SourceFlightPath:Set["${FlightPath}"] call IterateFlightpaths "This.ConnectFlightPathsCB" ${Map.ID} } function ConnectFlightPaths() { if ${LNavRegionGroup["Flight master"].Size} == 0 { This:Debug["No flight masters found, not connecting paths."] return } call This.IterateFlightpaths "This.ListFlightPathsCB" ${Map.ID} } }