public static void DiscoverDefaultNodes()
 {
     if (Main.isHorde)
     {
         if (ObjectManager.Me.PlayerRace == PlayerFactions.Orc || ObjectManager.Me.PlayerRace == PlayerFactions.Troll)
         {
             FlightMasterDB.SetFlightMasterToKnown(3310);
         }
         if (ObjectManager.Me.PlayerRace == PlayerFactions.Tauren)
         {
             FlightMasterDB.SetFlightMasterToKnown(2995);
         }
         if (ObjectManager.Me.PlayerRace == PlayerFactions.Undead)
         {
             FlightMasterDB.SetFlightMasterToKnown(4551);
         }
         if (ObjectManager.Me.PlayerRace == PlayerFactions.BloodElf)
         {
             FlightMasterDB.SetFlightMasterToKnown(16192);
         }
     }
     else
     {
         if (ObjectManager.Me.PlayerRace == PlayerFactions.Gnome || ObjectManager.Me.PlayerRace == PlayerFactions.Dwarf)
         {
             FlightMasterDB.SetFlightMasterToKnown(1573);
         }
         if (ObjectManager.Me.PlayerRace == PlayerFactions.Human)
         {
             FlightMasterDB.SetFlightMasterToKnown(352);
         }
     }
 }
Esempio n. 2
0
    public override void Run()
    {
        MovementManager.StopMoveNewThread();
        MovementManager.StopMoveToNewThread();

        FlightMaster flightmasterFrom = Main.from;
        FlightMaster flightmasterTo   = Main.to;

        if (WFMMoveInteract.GoInteractwithFM(flightmasterFrom, true))
        {
            if (FlightMasterDB.UpdateKnownFMs(flightmasterFrom))
            {
                Logger.Log("Flightmaster list has changed. Trying to find a new path.");
                Main.to = null;
                Main.shouldTakeFlight = false;
                return;
            }

            List <string> reachableTaxis = new List <string>();
            // Look for current To and record reachables in case we can't find it
            for (int i = 0; i < 120; i++)
            {
                string nodeStatus = Lua.LuaDoString <string>($"return TaxiNodeGetType({i})");
                string nodeName   = Lua.LuaDoString <string>($"return TaxiNodeName({i})");

                if (nodeStatus == "REACHABLE")
                {
                    if (nodeName == flightmasterTo.Name)
                    {
                        TakeTaxi(flightmasterFrom, nodeName);
                        return;
                    }
                    reachableTaxis.Add(nodeName);
                }
            }

            // Find an alternative
            Logger.Log($"{flightmasterTo.Name} is unreachable, trying to find an alternative");
            FlightMaster alternativeFm = Main.GetBestAlternativeTo(reachableTaxis);
            if (alternativeFm != null)
            {
                Logger.Log($"Found an alternative flight : {alternativeFm.Name}");
                TakeTaxi(flightmasterFrom, alternativeFm.Name);
                return;
            }
            else
            {
                Main.shouldTakeFlight = false;
                ToolBox.PausePlugin("Couldn't find an alternative flight");
            }
        }
    }
    public static FlightMasterDB getClosestFlightMasterTo()
    {
        List <FlightMasterDB> FMLgcfmt = fillDB();
        float          tempDistance    = 99999;
        FlightMasterDB returnObject    = new FlightMasterDB("null", 0, new Vector3(0, 0, 0), false, false);

        foreach (var a in FMLgcfmt)
        {
            if (a.alreadyDiscovered && a.position.DistanceTo(destinationVector) < tempDistance && (a.continent == checkContinent()))
            {
                tempDistance = a.position.DistanceTo(destinationVector);
                returnObject = a;
            }
        }
        return(returnObject);
    }
Esempio n. 4
0
    // Token: 0x06000012 RID: 18
    public static FlightMasterDB getClosestFlightMasterTo()
    {
        List <FlightMasterDB> list = Main.fillDB();
        float          num         = 99999f;
        FlightMasterDB result      = new FlightMasterDB("null", 0, new Vector3(0f, 0f, 0f, "None"), 0, false);

        foreach (FlightMasterDB flightMasterDB in list)
        {
            if (flightMasterDB.alreadyDiscovered && flightMasterDB.position.DistanceTo(Main.destinationVector) < num && flightMasterDB.continent == Main.checkContinent())
            {
                num    = flightMasterDB.position.DistanceTo(Main.destinationVector);
                result = flightMasterDB;
            }
        }
        return(result);
    }
    private static void discoverTaxi(FlightMasterDB flightMasterToDiscover)
    {
        FNVFlightMasterSettings.Load();
        List <FlightMasterDB> FMLdt = fillDB();

        if (wManager.Wow.Bot.Tasks.GoToTask.ToPosition(flightMasterToDiscover.position, 3.5f, false, context => Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !Conditions.IsAttackedAndCannotIgnore))
        {
            wManager.Wow.Bot.Tasks.GoToTask.ToPosition(flightMasterToDiscover.position, 3.5f, false, context => Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !Conditions.IsAttackedAndCannotIgnore);

            if (wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(flightMasterToDiscover.position, flightMasterToDiscover.NPCId, -1, false, context => Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !Conditions.IsAttackedAndCannotIgnore, false))
            {
                wManager.wManagerSetting.ClearBlacklistOfCurrentProductSession();
                wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(flightMasterToDiscover.position, flightMasterToDiscover.NPCId, -1, false, context => Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !Conditions.IsAttackedAndCannotIgnore, false);

                if (ObjectManager.Me.IsMounted)
                {
                    wManager.Wow.Bot.Tasks.MountTask.DismountMount(false, false, 100);
                }

                Usefuls.SelectGossipOption(GossipOptionsType.taxi);
                Thread.Sleep(Usefuls.Latency + 1500);

                while (_updateNodes)
                {
                    Logging.Write("[VanillaFLightMaster]: Taxi node update in progress...");
                    Thread.Sleep(10000);
                }

                Logging.Write("[VanillaFlightMaster]: Flight Master " + flightMasterToDiscover.name + " discovered");
                flightMasterToDiscover.alreadyDiscovered = true;
                FNVFlightMasterSettings.flightMasterSaveChanges(flightMasterToDiscover, true);

                Thread.Sleep(Usefuls.Latency * 5);

                timer = 0;
                //_timer = true;
                discoverTaxiNode     = (FlightMasterDB)null;
                _taxiToDiscover      = false;
                _discoverInProessing = false;
                _discoverTaxiTimer   = true;
                Reenable();
                return;
            }
        }
        _discoverInProessing = false;
        return;
    }
    private static void resetTaxi()
    {
        while (ObjectManager.Me.IsOnTaxi)
        {
            Thread.Sleep(5000);
        }

        Thread.Sleep(Usefuls.Latency * 3 + 1500);

        Logging.Write("[VanillaFlightMaster]: Reset taxi");
        _takenTaxi        = false;
        from              = (FlightMasterDB)null;
        to                = (FlightMasterDB)null;
        _timer            = false;
        checkPath         = true;
        checkPathActive   = false;
        checkPathActiveFM = (FlightMasterDB)null;
    }
Esempio n. 7
0
    public void Initialize()
    {
        if (!Products.ProductName.Equals("Quester") &&
            !Products.ProductName.Equals("Grinder") &&
            !Products.ProductName.Equals("Wholesome Professions WotLK"))
        {
            return;
        }

        isLaunched = true;

        isHorde = ToolBox.GetIsHorde();

        WFMSettings.Load();
        WFMDeepSettings.Load();

        if (AutoUpdater.CheckUpdate(version))
        {
            Logger.LogWarning("New version downloaded, restarting plugin, please wait");
            ToolBox.Restart();
            return;
        }

        Logger.Log($"Launching version {version} on client {ToolBox.GetWoWVersion()}");
        MovementManager.StopMoveNewThread();
        MovementManager.StopMoveToNewThread();

        FlightMasterDB.Initialize();
        WFMSetup.SetBlacklistedZonesAndOffMeshConnections();
        WFMSetup.DiscoverDefaultNodes();

        detectionPulse.DoWork += BackGroundPulse;
        detectionPulse.RunWorkerAsync();

        FiniteStateMachineEvents.OnRunState         += StateEventHandler;
        MovementEvents.OnMovementPulse              += MovementEventsOnMovementPulse;
        MovementEvents.OnSeemStuck                  += SeemStuckHandler;
        EventsLuaWithArgs.OnEventsLuaStringWithArgs += ToolBox.MessageHandler;

        EventsLua.AttachEventLua("TAXIMAP_OPENED", (e) => isFMMapOpen = true);
        EventsLua.AttachEventLua("TAXIMAP_CLOSED", (e) => isFMMapOpen = false);
        EventsLua.AttachEventLua("GOSSIP_SHOW", (e) => isGossipOpen   = true);
        EventsLua.AttachEventLua("GOSSIP_CLOSED", (e) => isGossipOpen = false);
    }
    private static void takeTaxi(FlightMasterDB from, FlightMasterDB to)
    {
        if (wManager.Wow.Bot.Tasks.GoToTask.ToPosition(from.position, 3.5f, false, context => Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !Conditions.IsAttackedAndCannotIgnore))
        {
            if (wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(from.position, from.NPCId, -1, false, context => Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !Conditions.IsAttackedAndCannotIgnore, false))
            {
                while (!ObjectManager.Me.IsOnTaxi)
                {
                    if (ObjectManager.Me.IsMounted)
                    {
                        wManager.Wow.Bot.Tasks.MountTask.DismountMount(false, false, 100);
                    }


                    Usefuls.SelectGossipOption(GossipOptionsType.taxi);

                    Thread.Sleep(Usefuls.Latency + 1500);

                    while (_updateNodes)
                    {
                        Logging.Write("[VanillaFlightMaster]: Taxi node update in progress, waiting...");
                        Thread.Sleep(10000);
                    }

                    int node = Lua.LuaDoString <int>("for i=0,30 do if string.find(TaxiNodeName(i),'" + to.name + "') then return i end end");
                    Lua.LuaDoString("TakeTaxiNode(" + node + ")");
                    Logging.Write("[VanillaFlightMaster]: Taking Taxi from " + from.name + " to " + to.name);
                    Thread.Sleep(Usefuls.Latency + 500);
                    robotManager.Helpful.Keyboard.DownKey(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, System.Windows.Forms.Keys.Escape);
                    Thread.Sleep(Usefuls.Latency + 2500);
                    if (!ObjectManager.Me.IsOnTaxi)
                    {
                        wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(from.position, from.NPCId, -1, false, context => Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !Conditions.IsAttackedAndCannotIgnore, false);
                    }
                }

                if (ObjectManager.Me.IsOnTaxi)
                {
                    waitFlying(to.name);
                }
            }
        }
    }
    public override void Run()
    {
        MovementManager.StopMoveNewThread();
        MovementManager.StopMoveToNewThread();
        FlightMaster fmToDiscover = Main.flightMasterToDiscover;

        Logger.Log($"Discovering flight master {fmToDiscover.Name}");

        // We go to the position
        if (WFMMoveInteract.GoInteractwithFM(fmToDiscover))
        {
            FlightMasterDB.SetFlightMasterToKnown(fmToDiscover.NPCId);
            Main.flightMasterToDiscover = null;
            ToolBox.UnPausePlugin();
            Main.shouldTakeFlight = false;

            FlightMasterDB.UpdateKnownFMs(fmToDiscover);
            MovementManager.StopMove(); // reset path
        }
    }
Esempio n. 10
0
 // Token: 0x06000016 RID: 22
 private static void takeTaxi(FlightMasterDB from, FlightMasterDB to)
 {
     if (GoToTask.ToPosition(from.position, 3.5f, false, (object context) => Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !Conditions.IsAttackedAndCannotIgnore))
     {
         if (GoToTask.ToPositionAndIntecractWithNpc(from.position, from.NPCId, -1, false, (object context) => Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !Conditions.IsAttackedAndCannotIgnore, false))
         {
             while (!ObjectManager.Me.IsOnTaxi)
             {
                 if (ObjectManager.Me.IsMounted)
                 {
                     MountTask.DismountMount(false, false, 100);
                 }
                 Usefuls.SelectGossipOption(GossipOptionsType.taxi);
                 Thread.Sleep(Usefuls.Latency + 1500);
                 while (Main._updateNodes)
                 {
                     Logging.Write("[tbcFlightMaster]: Taxi node update in progress, waiting...");
                     Thread.Sleep(10000);
                 }
                 int num = Lua.LuaDoString <int>("for i=0,30 do if string.find(TaxiNodeName(i),\'" + to.name.Replace("'", "\\'") + "\') then return i end end", "");
                 Lua.LuaDoString("TakeTaxiNode(" + num + ")", false);
                 Logging.Write("[tbcFlightMaster]: Taking Taxi from " + from.name + " to " + to.name);
                 Thread.Sleep(Usefuls.Latency + 500);
                 Keyboard.DownKey(Memory.WowMemory.Memory.WindowHandle, Keys.Escape);
                 Thread.Sleep(Usefuls.Latency + 2500);
                 if (!ObjectManager.Me.IsOnTaxi)
                 {
                     GoToTask.ToPositionAndIntecractWithNpc(from.position, from.NPCId, -1, false, (object context) => Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !Conditions.IsAttackedAndCannotIgnore, false);
                 }
             }
             if (ObjectManager.Me.IsOnTaxi)
             {
                 Main.waitFlying(to.name);
             }
         }
     }
 }
    public static void flightMasterSaveChanges(FlightMasterDB needToChange, bool value)
    {
        if (needToChange.name.Contains("Arathi"))
        {
            CurrentSettings.ArathiHighlands = value;
        }

        if (needToChange.name.Contains("Wetlands"))
        {
            CurrentSettings.Wetlands = value;
        }

        if (needToChange.name.Contains("Chillwind"))
        {
            CurrentSettings.WesternPlaguelands = value;
        }

        if (needToChange.name.Contains("Chapel"))
        {
            CurrentSettings.EasternPlaguelands = value;
        }

        if (needToChange.name.Contains("Hillsbrad"))
        {
            CurrentSettings.HillsbradFoothills = value;
        }

        if (needToChange.name.Contains("Hinterlands"))
        {
            CurrentSettings.TheHinterlands = value;
        }

        if (needToChange.name.Contains("Thelsamar"))
        {
            CurrentSettings.LochModan = value;
        }

        if (needToChange.name.Contains("Ironforge"))
        {
            CurrentSettings.Ironforge = value;
        }

        if (needToChange.name.Contains("Searing"))
        {
            CurrentSettings.SearingGorge = value;
        }

        if (needToChange.name.Contains("Steppes"))
        {
            CurrentSettings.BurningSteppes = value;
        }

        if (needToChange.name.Contains("Redridge"))
        {
            CurrentSettings.RedridgeMountains = value;
        }

        if (needToChange.name.Contains("Stormwind"))
        {
            CurrentSettings.Stormwind = value;
        }

        if (needToChange.name.Contains("Westfall"))
        {
            CurrentSettings.Westfall = value;
        }

        if (needToChange.name.Contains("Duskwood"))
        {
            CurrentSettings.Duskwood = value;
        }

        if (needToChange.name.Contains("Stranglethorn"))
        {
            CurrentSettings.StranglethornValley = value;
        }

        if (needToChange.name.Contains("Blasted"))
        {
            CurrentSettings.BlastedLands = value;
        }

        if (needToChange.name.Contains("Teldrassil"))
        {
            CurrentSettings.Teldrassil = value;
        }

        if (needToChange.name.Contains("Darkshore"))
        {
            CurrentSettings.Darkshore = value;
        }

        if (needToChange.name.Contains("Winterspring"))
        {
            CurrentSettings.Winterspring = value;
        }

        if (needToChange.name.Contains("Azshara"))
        {
            CurrentSettings.Azshara = value;
        }

        if (needToChange.name.Contains("Ashenvale"))
        {
            CurrentSettings.Ashenvale = value;
        }

        if (needToChange.name.Contains("Stonetalon"))
        {
            CurrentSettings.StonetalonMountains = value;
        }

        if (needToChange.name.Contains("Desolace"))
        {
            CurrentSettings.Desolace = value;
        }

        if (needToChange.name.Contains("Tanaris"))
        {
            CurrentSettings.Tanaris = value;
        }

        if (needToChange.name.Contains("Barrens"))
        {
            CurrentSettings.TheBarrens = value;
        }

        if (needToChange.name.Contains("Feathermoon"))
        {
            CurrentSettings.FeralasFeathermoon = value;
        }

        if (needToChange.name.Contains("Thalanaar"))
        {
            CurrentSettings.FeralasThalanaar = value;
        }

        if (needToChange.name.Contains("Crater"))
        {
            CurrentSettings.UngoroCrater = value;
        }

        if (needToChange.name.Contains("Dustwallow"))
        {
            CurrentSettings.DustwallowMarsh = value;
        }

        if (needToChange.name.Contains("Silithus"))
        {
            CurrentSettings.Silithus = value;
        }

        if (needToChange.name.Contains("Felwood"))
        {
            CurrentSettings.Felwood = value;
        }

        FNVFlightMasterSettings.CurrentSettings.Save();
        Thread.Sleep(2500);

        try
        {
            FNVFlightMasterSettings.CurrentSettings = Load <FNVFlightMasterSettings>(AdviserFilePathAndName("VanillaFlightMaster_DB", ObjectManager.Me.Name + "." + Usefuls.RealmName));
        }
        catch (Exception e)
        {
            Logging.Write("[VanillaFlightMaster]: Error when trying to reload DB file -> " + e);
        }

        Logging.Write("[VanillaFlightMaster]: Settings saved of Flight Master " + needToChange.name);
        return;
    }
    public static List <FlightMasterDB> fillDB()
    {
        //True = Kalimdor ; False = Eastern Kingdoms
        List <FlightMasterDB> FMListe   = new List <FlightMasterDB>();
        FlightMasterDB        Stormwind = new FlightMasterDB("Stormwind", 352, new Vector3(-8835.76f, 490.084f, 109.6157f), false, FNVFlightMasterSettings.CurrentSettings.Stormwind);

        FMListe.Add(Stormwind);
        FlightMasterDB ArathiHighlands = new FlightMasterDB("Arathi", 2835, new Vector3(-1240.03f, -2513.96f, 21.92969f), false, FNVFlightMasterSettings.CurrentSettings.ArathiHighlands);

        FMListe.Add(ArathiHighlands);
        FlightMasterDB Ashenvale = new FlightMasterDB("Ashenvale", 4267, new Vector3(2828.4f, -284.3f, 106.7f), true, FNVFlightMasterSettings.CurrentSettings.Ashenvale);

        FMListe.Add(Ashenvale);
        FlightMasterDB Darkshore = new FlightMasterDB("Darkshore", 3841, new Vector3(6343.2f, 561.651f, 15.79876f), true, FNVFlightMasterSettings.CurrentSettings.Darkshore);

        FMListe.Add(Darkshore);
        FlightMasterDB Stranglethorn = new FlightMasterDB("Stranglethorn", 2859, new Vector3(-14477.9f, 464.101f, 36.38163f), false, FNVFlightMasterSettings.CurrentSettings.StranglethornValley);

        FMListe.Add(Stranglethorn);
        FlightMasterDB Duskwood = new FlightMasterDB("Duskwood", 2409, new Vector3(-10513.8f, -1258.79f, 41.43174f), false, FNVFlightMasterSettings.CurrentSettings.Duskwood);

        FMListe.Add(Duskwood);
        FlightMasterDB FeralasFeathermoon = new FlightMasterDB("Feathermoon", 8019, new Vector3(-4370.5f, 3340f, 12f), true, FNVFlightMasterSettings.CurrentSettings.FeralasFeathermoon);

        FMListe.Add(FeralasFeathermoon);
        FlightMasterDB FeralasThalanaar = new FlightMasterDB("Thalanaar", 4319, new Vector3(-4491f, -781f, -40f), true, FNVFlightMasterSettings.CurrentSettings.FeralasThalanaar);

        FMListe.Add(FeralasThalanaar);
        FlightMasterDB Tanaris = new FlightMasterDB("Tanaris", 7823, new Vector3(-7224.9f, -3738.2f, 8.4f), true, FNVFlightMasterSettings.CurrentSettings.Tanaris);

        FMListe.Add(Tanaris);
        FlightMasterDB Hinterlands = new FlightMasterDB("Hinterlands", 8018, new Vector3(282.1f, -2001.3f, 194.1f), false, FNVFlightMasterSettings.CurrentSettings.TheHinterlands);

        FMListe.Add(Hinterlands);
        FlightMasterDB Ironforge = new FlightMasterDB("Ironforge", 1573, new Vector3(-4821.13f, -1152.4f, 502.2116f), false, FNVFlightMasterSettings.CurrentSettings.Ironforge);

        FMListe.Add(Ironforge);
        FlightMasterDB Menethil = new FlightMasterDB("Wetlands", 1571, new Vector3(-3793.2f, -782.052f, 9.014864f), false, FNVFlightMasterSettings.CurrentSettings.Wetlands);

        FMListe.Add(Menethil);
        FlightMasterDB TheBarrens = new FlightMasterDB("Barrens", 16227, new Vector3(-898.246f, -3769.65f, 11.71021f), true, FNVFlightMasterSettings.CurrentSettings.TheBarrens);

        FMListe.Add(TheBarrens);
        FlightMasterDB Redridge = new FlightMasterDB("Redridge", 931, new Vector3(-9435.8f, -2234.79f, 69.43174f), false, FNVFlightMasterSettings.CurrentSettings.RedridgeMountains);

        FMListe.Add(Redridge);
        FlightMasterDB Teldrassil = new FlightMasterDB("Teldrassil", 3838, new Vector3(8640.58f, 841.118f, 23.26363f), true, FNVFlightMasterSettings.CurrentSettings.Teldrassil);

        FMListe.Add(Teldrassil);
        FlightMasterDB Southshore = new FlightMasterDB("Hillsbrad", 2432, new Vector3(-715.146f, -512.134f, 26.54455f), false, FNVFlightMasterSettings.CurrentSettings.HillsbradFoothills);

        FMListe.Add(Southshore);
        FlightMasterDB Stonetalon = new FlightMasterDB("Stonetalon", 4407, new Vector3(2682.83f, 1466.45f, 233.6483f), true, FNVFlightMasterSettings.CurrentSettings.StonetalonMountains);

        FMListe.Add(Stonetalon);
        FlightMasterDB Thelsamar = new FlightMasterDB("Thelsamar", 1572, new Vector3(-5424.85f, -2929.87f, 347.5623f), false, FNVFlightMasterSettings.CurrentSettings.LochModan);

        FMListe.Add(Thelsamar);
        FlightMasterDB Theramore = new FlightMasterDB("Dustwallow", 4321, new Vector3(-3828.88f, -4517.51f, 10.66067f), true, FNVFlightMasterSettings.CurrentSettings.DustwallowMarsh);

        FMListe.Add(Theramore);
        FlightMasterDB WesternP = new FlightMasterDB("Chillwind", 12596, new Vector3(928.3f, -1429.1f, 64.8f), false, FNVFlightMasterSettings.CurrentSettings.WesternPlaguelands);

        FMListe.Add(WesternP);
        FlightMasterDB Westfall = new FlightMasterDB("Westfall", 523, new Vector3(-10628.8f, 1037.79f, 34.43174f), false, FNVFlightMasterSettings.CurrentSettings.Westfall);

        FMListe.Add(Westfall);
        FlightMasterDB EasternP = new FlightMasterDB("Chapel", 12617, new Vector3(2269.9f, -5345.4f, 86.9f), false, FNVFlightMasterSettings.CurrentSettings.EasternPlaguelands);

        FMListe.Add(EasternP);
        FlightMasterDB SearingGorge = new FlightMasterDB("Searing", 2941, new Vector3(-6559.1f, -1169.4f, 309.8f), false, FNVFlightMasterSettings.CurrentSettings.SearingGorge);

        FMListe.Add(SearingGorge);
        FlightMasterDB BurningSteppes = new FlightMasterDB("Steppes", 2299, new Vector3(-8365.1f, -2758.5f, 185.6f), false, FNVFlightMasterSettings.CurrentSettings.BurningSteppes);

        FMListe.Add(BurningSteppes);
        FlightMasterDB BlastedLands = new FlightMasterDB("Blasted", 8609, new Vector3(-11110.2f, -3437.1f, 79.2f), false, FNVFlightMasterSettings.CurrentSettings.BlastedLands);

        FMListe.Add(BlastedLands);
        FlightMasterDB Azshara = new FlightMasterDB("Azshara", 12577, new Vector3(2718.2f, -3880.8f, 101.4f), true, FNVFlightMasterSettings.CurrentSettings.Azshara);

        FMListe.Add(Azshara);
        FlightMasterDB Felwood = new FlightMasterDB("Felwood", 12578, new Vector3(6204.2f, -1951.4f, 571.3f), true, FNVFlightMasterSettings.CurrentSettings.Felwood);

        FMListe.Add(Felwood);
        FlightMasterDB Winterspring = new FlightMasterDB("Winterspring", 11138, new Vector3(6800.5f, -4742.4f, 701.5f), true, FNVFlightMasterSettings.CurrentSettings.Winterspring);

        FMListe.Add(Winterspring);
        FlightMasterDB UngoroCreater = new FlightMasterDB("Crater", 10583, new Vector3(-6110.5f, -1140.4f, -186.9f), true, FNVFlightMasterSettings.CurrentSettings.UngoroCrater);

        FMListe.Add(UngoroCreater);
        FlightMasterDB Silithus = new FlightMasterDB("Silithus", 15177, new Vector3(-6758.6f, 775.6f, 89f), true, FNVFlightMasterSettings.CurrentSettings.Silithus);

        FMListe.Add(Silithus);
        FlightMasterDB Desolace = new FlightMasterDB("Desolace", 6706, new Vector3(136f, 1326f, 193f), true, FNVFlightMasterSettings.CurrentSettings.Desolace);

        FMListe.Add(Desolace);
        return(FMListe);
    }
    private static void MovementEventsOnOnMovementPulse(List <Vector3> points, CancelEventArgs cancelable)
    {
        statusDiscover = Logging.Status;
        if (_taxiToDiscover && !discoverTaxiNode.Equals((FlightMasterDB)null) && !_discoverInProessing && !_updateNodes && !statusDiscover.Contains("Boat") && !statusDiscover.Contains("Ship"))
        {
            _discoverInProessing = true;
            Thread.Sleep(Usefuls.Latency + 500);
            cancelable.Cancel = true;
            checkPathActive   = true;
            checkPathActiveFM = discoverTaxiNode;

            discoverTaxi(discoverTaxiNode);

            Thread.Sleep(Usefuls.Latency * 3);
            cancelable.Cancel = false;
            checkPathActive   = false;
        }

        if (changer && !_updateNodes && !inProcessing && ObjectManager.Me.IsAlive)
        {
            changer = false;
            if (!_taxiToDiscover && !_timer && !_takenTaxi && ObjectManager.Me.Position.DistanceTo(points.Last <Vector3>()) > FNVFlightMasterSettings.CurrentSettings.taxiTriggerDistance)
            {
                status = Logging.Status;
                if (FNVFlightMasterSettings.CurrentSettings.skipIfFollowPath && status.Contains("Follow Path") && !status.Contains("Resurrect") && calculateRealDistance(ObjectManager.Me.Position, points.Last <Vector3>()) < FNVFlightMasterSettings.CurrentSettings.skipIfFollowPathDistance)
                {
                    Logging.Write("[VanillaFlightMaster]: Currently following path or distance to start (" + calculateRealDistance(ObjectManager.Me.Position, points.Last <Vector3>()) + " yards) is smaller than setting value (" + FNVFlightMasterSettings.CurrentSettings.skipIfFollowPathDistance + " yards)");
                    Thread.Sleep(1000);
                    cancelable.Cancel = false;
                    inProcessing      = false;
                    checkPathActive   = true;
                    changer           = true;
                    _timer            = true;
                    return;
                }

                destinationVector = points.Last <Vector3>();
                saveDistance      = calculateRealDistance(ObjectManager.Me.Position, points.Last <Vector3>());

                Thread.Sleep(Usefuls.Latency + 500);
                cancelable.Cancel = true;

                if (!inProcessing)
                {
                    from = getClosestFlightMasterFrom();
                    to   = getClosestFlightMasterTo();
                }

                Thread.Sleep(1000);

                if (!from.name.Contains(to.name) && !to.name.Contains("null") && !to.name.Contains("FlightMaster") && !from.name.Contains("null") && !from.Equals(to) && calculateRealDistance(ObjectManager.Me.Position, from.position) + calculateRealDistance(to.position, destinationVector) + FNVFlightMasterSettings.CurrentSettings.shorterMinDistance <= saveDistance)
                {
                    Logging.Write("[VanillaFlightMaster]: Shorter path detected, taking Taxi from " + from.name + " to " + to.name);
                    inProcessing      = true;
                    checkPathActive   = true;
                    checkPathActiveFM = from;
                    takeTaxi(from, to);

                    Thread.Sleep(1000);
                    cancelable.Cancel = false;
                    inProcessing      = false;
                    checkPathActive   = true;
                }
                else
                {
                    Logging.Write("[VanillaFlightMaster]: No shorter path available, skip flying");
                    cancelable.Cancel = false;
                    _timer            = true;
                    inProcessing      = false;
                }
            }
            changer = true;
        }
    }
    // Token: 0x06000026 RID: 38 RVA: 0x00003DE8 File Offset: 0x00001FE8
    public static void flightMasterSaveChanges(FlightMasterDB needToChange, bool value)
    {
        if (needToChange.name.Contains("Base"))
        {
            FNVFlightMasterSettings.CurrentSettings.StranglethornGromgol = value;
        }
        if (needToChange.name.Contains("Booty"))
        {
            FNVFlightMasterSettings.CurrentSettings.StranglethornBootyBay = value;
        }
        if (needToChange.name.Contains("Silverpine"))
        {
            FNVFlightMasterSettings.CurrentSettings.SilverpineForest = value;
        }
        if (needToChange.name.Contains("Hillsbrad"))
        {
            FNVFlightMasterSettings.CurrentSettings.HillsbradFoothills = value;
        }
        if (needToChange.name.Contains("Arathi"))
        {
            FNVFlightMasterSettings.CurrentSettings.ArathiHighlands = value;
        }
        if (needToChange.name.Contains("Badlands"))
        {
            FNVFlightMasterSettings.CurrentSettings.Badlands = value;
        }
        if (needToChange.name.Contains("Mulgore"))
        {
            FNVFlightMasterSettings.CurrentSettings.Mulgore = value;
        }
        if (needToChange.name.Contains("Searing"))
        {
            FNVFlightMasterSettings.CurrentSettings.SearingGorge = value;
        }
        if (needToChange.name.Contains("Orgrimmar"))
        {
            FNVFlightMasterSettings.CurrentSettings.Orgrimmar = value;
        }
        if (needToChange.name.Contains("Crossroads"))
        {
            FNVFlightMasterSettings.CurrentSettings.BarrensCrossroads = value;
        }
        if (needToChange.name.Contains("Ratchet"))
        {
            FNVFlightMasterSettings.CurrentSettings.BarrensRatchet = value;
        }
        if (needToChange.name.Contains("Taurajo"))
        {
            FNVFlightMasterSettings.CurrentSettings.BarrensTaurajo = value;
        }
        if (needToChange.name.Contains("Retreat"))
        {
            FNVFlightMasterSettings.CurrentSettings.StonetalonSunRockRetreat = value;
        }
        if (needToChange.name.Contains("Hinterlands"))
        {
            FNVFlightMasterSettings.CurrentSettings.TheHinterlands = value;
        }
        if (needToChange.name.Contains("Thousand"))
        {
            FNVFlightMasterSettings.CurrentSettings.ThousandNeedles = value;
        }
        if (needToChange.name.Contains("Undercity"))
        {
            FNVFlightMasterSettings.CurrentSettings.Undercity = value;
        }
        if (needToChange.name.Contains("Swamp"))
        {
            FNVFlightMasterSettings.CurrentSettings.SwampofSorrows = value;
        }
        if (needToChange.name.Contains("Desolace"))
        {
            FNVFlightMasterSettings.CurrentSettings.Desolace = value;
        }
        if (needToChange.name.Contains("Tanaris"))
        {
            FNVFlightMasterSettings.CurrentSettings.Tanaris = value;
        }
        if (needToChange.name.Contains("Feralas"))
        {
            FNVFlightMasterSettings.CurrentSettings.Feralas = value;
        }
        if (needToChange.name.Contains("Azshara"))
        {
            FNVFlightMasterSettings.CurrentSettings.Azshara = value;
        }
        if (needToChange.name.Contains("Winterspring"))
        {
            FNVFlightMasterSettings.CurrentSettings.Winterspring = value;
        }
        if (needToChange.name.Contains("Dustwallow"))
        {
            FNVFlightMasterSettings.CurrentSettings.DustwallowMarsh = value;
        }
        if (needToChange.name.Contains("Felwood"))
        {
            FNVFlightMasterSettings.CurrentSettings.Felwood = value;
        }
        if (needToChange.name.Contains("Outpost"))
        {
            FNVFlightMasterSettings.CurrentSettings.AshenvaleZoramgar = value;
        }
        if (needToChange.name.Contains("Splintertree"))
        {
            FNVFlightMasterSettings.CurrentSettings.AshenvaleSplintertree = value;
        }
        if (needToChange.name.Contains("Moonglade"))
        {
            FNVFlightMasterSettings.CurrentSettings.Moonglade = value;
        }
        if (needToChange.name.Contains("Burning"))
        {
            FNVFlightMasterSettings.CurrentSettings.BurningSteppes = value;
        }
        if (needToChange.name.Contains("Silithus"))
        {
            FNVFlightMasterSettings.CurrentSettings.Silithus = value;
        }
        if (needToChange.name.Contains("Crater"))
        {
            FNVFlightMasterSettings.CurrentSettings.UngoroCrater = value;
        }

        if (needToChange.name.Contains("Thrallmar"))
        {
            FNVFlightMasterSettings.CurrentSettings.Thrallmar = value;
        }
        if (needToChange.name.Contains("Falcon"))
        {
            FNVFlightMasterSettings.CurrentSettings.FalconWatch = value;
        }
        if (needToChange.name.Contains("Zabra'jin"))
        {
            FNVFlightMasterSettings.CurrentSettings.Zabrajin = value;
        }
        if (needToChange.name.Contains("Garadar"))
        {
            FNVFlightMasterSettings.CurrentSettings.Garadar = value;
        }
        if (needToChange.name.Contains("Area"))
        {
            FNVFlightMasterSettings.CurrentSettings.Area52 = value;
        }
        if (needToChange.name.Contains("Shadowmoon"))
        {
            FNVFlightMasterSettings.CurrentSettings.ShadowmoonVillage = value;
        }
        if (needToChange.name.Contains("Stonebreaker"))
        {
            FNVFlightMasterSettings.CurrentSettings.StonebreakerHold = value;
        }
        if (needToChange.name.Contains("Thunderlord"))
        {
            FNVFlightMasterSettings.CurrentSettings.ThunderlordStronghold = value;
        }
        if (needToChange.name.Contains("Shattrath"))
        {
            FNVFlightMasterSettings.CurrentSettings.Shattrath = value;
        }
        if (needToChange.name.Contains("Stormspire"))
        {
            FNVFlightMasterSettings.CurrentSettings.TheStormspire = value;
        }
        if (needToChange.name.Contains("Altar"))
        {
            FNVFlightMasterSettings.CurrentSettings.AltarofShatar = value;
        }
        if (needToChange.name.Contains("Cosmowrench"))
        {
            FNVFlightMasterSettings.CurrentSettings.Cosmowrench = value;
        }
        if (needToChange.name.Contains("Sanctum"))
        {
            FNVFlightMasterSettings.CurrentSettings.SanctumOfTheStars = value;
        }
        if (needToChange.name.Contains("Spinebreaker"))
        {
            FNVFlightMasterSettings.CurrentSettings.SpinebreakerPost = value;
        }
        if (needToChange.name.Contains("Mok'Nathal"))
        {
            FNVFlightMasterSettings.CurrentSettings.MokNathalVillage = value;
        }
        if (needToChange.name.Contains("Evergrove"))
        {
            FNVFlightMasterSettings.CurrentSettings.Evergrove = value;
        }
        if (needToChange.name.Contains("Swamprat"))
        {
            FNVFlightMasterSettings.CurrentSettings.SwampratPost = value;
        }
        if (needToChange.name.Contains("Portal"))
        {
            FNVFlightMasterSettings.CurrentSettings.TheDarkPortal = value;
        }


        FNVFlightMasterSettings.CurrentSettings.Save();
        Thread.Sleep(2500);

        try
        {
            FNVFlightMasterSettings.CurrentSettings = Settings.Load <FNVFlightMasterSettings>(Settings.AdviserFilePathAndName("tbcFlightMaster_DB", ObjectManager.Me.Name + "." + Usefuls.RealmName));
        }
        catch (Exception arg)
        {
            Logging.Write("[tbcFlightMaster]: Error when trying to reload DB file -> " + arg);
        }
        Logging.Write("[tbcFlightMaster]: Settings saved of Flight Master " + needToChange.name);
    }