Ejemplo n.º 1
0
        internal static void DrawImGuiSettings()
        {
            System.Numerics.Vector4 green = new System.Numerics.Vector4(0.102f, 0.388f, 0.106f, 1.000f);
            System.Numerics.Vector4 red   = new System.Numerics.Vector4(0.388f, 0.102f, 0.102f, 1.000f);

            ImGuiTreeNodeFlags collapsingHeaderFlags = ImGuiTreeNodeFlags.CollapsingHeader;

            ImGui.Text("Plugin by Totalschaden. https://github.com/totalschaden/copilot");

            try
            {
                // Input Keys
                ImGui.PushStyleColor(ImGuiCol.Header, green);
                ImGui.PushID(1000);
                if (ImGui.TreeNodeEx("Input Keys", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.InputKey1.Value  = ImGuiExtension.HotkeySelector("Use bound skill 2 Key: " + CoPilot.instance.Settings.InputKey1.Value, CoPilot.instance.Settings.InputKey1.Value);
                    CoPilot.instance.Settings.InputKey3.Value  = ImGuiExtension.HotkeySelector("Use bound skill 4 Key: " + CoPilot.instance.Settings.InputKey3.Value, CoPilot.instance.Settings.InputKey3.Value);
                    CoPilot.instance.Settings.InputKey4.Value  = ImGuiExtension.HotkeySelector("Use bound skill 5 Key: " + CoPilot.instance.Settings.InputKey4.Value, CoPilot.instance.Settings.InputKey4.Value);
                    CoPilot.instance.Settings.InputKey5.Value  = ImGuiExtension.HotkeySelector("Use bound skill 6 Key: " + CoPilot.instance.Settings.InputKey5.Value, CoPilot.instance.Settings.InputKey5.Value);
                    CoPilot.instance.Settings.InputKey6.Value  = ImGuiExtension.HotkeySelector("Use bound skill 7 Key: " + CoPilot.instance.Settings.InputKey6.Value, CoPilot.instance.Settings.InputKey6.Value);
                    CoPilot.instance.Settings.InputKey7.Value  = ImGuiExtension.HotkeySelector("Use bound skill 8 Key: " + CoPilot.instance.Settings.InputKey7.Value, CoPilot.instance.Settings.InputKey7.Value);
                    CoPilot.instance.Settings.InputKey8.Value  = ImGuiExtension.HotkeySelector("Use bound skill 9 Key: " + CoPilot.instance.Settings.InputKey8.Value, CoPilot.instance.Settings.InputKey8.Value);
                    CoPilot.instance.Settings.InputKey9.Value  = ImGuiExtension.HotkeySelector("Use bound skill 10 Key: " + CoPilot.instance.Settings.InputKey9.Value, CoPilot.instance.Settings.InputKey9.Value);
                    CoPilot.instance.Settings.InputKey10.Value = ImGuiExtension.HotkeySelector("Use bound skill 11 Key: " + CoPilot.instance.Settings.InputKey10.Value, CoPilot.instance.Settings.InputKey10.Value);
                    CoPilot.instance.Settings.InputKey11.Value = ImGuiExtension.HotkeySelector("Use bound skill 12 Key: " + CoPilot.instance.Settings.InputKey11.Value, CoPilot.instance.Settings.InputKey11.Value);
                    CoPilot.instance.Settings.InputKey12.Value = ImGuiExtension.HotkeySelector("Use bound skill 13 Key: " + CoPilot.instance.Settings.InputKey12.Value, CoPilot.instance.Settings.InputKey12.Value);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }
            try
            {
                if (CoPilot.instance.Settings.confirm5)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(1001);
                if (ImGui.TreeNodeEx("Importand Informations", collapsingHeaderFlags))
                {
                    ImGui.Text("Go to Input Keys Tab, and set them According to your Ingame Settings -> Settings -> Input -> Use bound skill X");
                    ImGui.NewLine();
                    ImGui.Text("If your a noob dont make changes to -> Input Keys <- and change your Ingame Settings to the Keys that are predefined in the Plugin!");
                    ImGui.NewLine();
                    ImGui.Text("DO NOT ASSIGN MOUSE KEYS TO -> Input Keys <- in the Plugin !!!");
                    ImGui.NewLine();
                    ImGui.Text("The Top Left and Top Right Skill Slots are EXCLUDED!!! (Ingame bound skill 1 and 3) I recommend you use these for your Mouse.");
                    ImGui.NewLine();
                    ImGui.Text("The Plugin is currently forced to use Timers for Cooldowns as there is no Proper Skill Api for Ready/Cooldown.");
                    ImGui.NewLine();
                    ImGui.Text("I STRONGLY recommend that you add 80-100ms extra delay to your Skill Settings, so a Skill wont be skipped sometimes.");
                    ImGui.NewLine();


                    CoPilot.instance.Settings.confirm1.Value = ImGuiExtension.Checkbox("I did READ the text above.", CoPilot.instance.Settings.confirm1.Value);
                    if (!CoPilot.instance.Settings.confirm1)
                    {
                        return;
                    }
                    CoPilot.instance.Settings.confirm2.Value = ImGuiExtension.Checkbox("I did READ and UNDERSTAND the text above.", CoPilot.instance.Settings.confirm2.Value);
                    if (!CoPilot.instance.Settings.confirm2)
                    {
                        return;
                    }
                    CoPilot.instance.Settings.confirm3.Value = ImGuiExtension.Checkbox("I just READ it again and understood it.", CoPilot.instance.Settings.confirm3.Value);
                    if (!CoPilot.instance.Settings.confirm3)
                    {
                        return;
                    }
                    CoPilot.instance.Settings.confirm4.Value = ImGuiExtension.Checkbox("I did everything stated above and im ready to go.", CoPilot.instance.Settings.confirm4.Value);
                    if (!CoPilot.instance.Settings.confirm4)
                    {
                        return;
                    }
                    CoPilot.instance.Settings.confirm5.Value = ImGuiExtension.Checkbox("Let me use the Plugin already !!!", CoPilot.instance.Settings.confirm5.Value);
                    if (!CoPilot.instance.Settings.confirm5)
                    {
                        return;
                    }
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }
            if (!CoPilot.instance.Settings.confirm5)
            {
                return;
            }

            try
            {
                // Donation
                ImGui.PushStyleColor(ImGuiCol.Header, new System.Numerics.Vector4(0.454f, 0.031f, 0.768f, 1.000f));
                ImGui.PushID(99999);
                if (ImGui.TreeNodeEx("Donation", collapsingHeaderFlags))
                {
                    ImGui.Text("I was asked to add a way to donate, as im not using any online payment services the only way would be Amazon.de Wishlist.");
                    ImGui.NewLine();
                    ImGui.Text("Thanks to anyone who is considering this.");
                    if (ImGui.Button("Open Wishlist"))
                    {
                        System.Diagnostics.Process.Start("https://www.amazon.de/hz/wishlist/ls/MZ543BDBC6PJ?ref_=wl_share");
                    }
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }

            try
            {
                // Auto Attack
                if (CoPilot.instance.Settings.autoAttackEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(1);
                if (ImGui.TreeNodeEx("Auto Attack with Cyclone / Nova / ...", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.autoAttackEnabled.Value        = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.autoAttackEnabled.Value);
                    CoPilot.instance.Settings.autoAttackLeftMouseCheck.Value = ImGuiExtension.Checkbox("Pause on Left Mouse Pressed", CoPilot.instance.Settings.autoAttackLeftMouseCheck.Value);
                    CoPilot.instance.Settings.autoAttackPickItKey.Value      = ImGuiExtension.HotkeySelector("PickIt Key: " + CoPilot.instance.Settings.autoAttackPickItKey.Value, CoPilot.instance.Settings.autoAttackPickItKey.Value);
                    CoPilot.instance.Settings.autoAttackRange.Value          = ImGuiExtension.IntSlider("Range", CoPilot.instance.Settings.autoAttackRange);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                // Auto Golem
                if (CoPilot.instance.Settings.autoSummonEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(2);
                if (ImGui.TreeNodeEx("Auto Summon", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.autoSummonEnabled.Value     = ImGuiExtension.Checkbox("Auto Summons", CoPilot.instance.Settings.autoSummonEnabled.Value);
                    CoPilot.instance.Settings.autoGolemEnabled.Value      = ImGuiExtension.Checkbox("Auto Golem", CoPilot.instance.Settings.autoGolemEnabled.Value);
                    CoPilot.instance.Settings.autoGolemChaosMax.Value     = ImGuiExtension.IntSlider("Chaos Golems max.", CoPilot.instance.Settings.autoGolemChaosMax);
                    CoPilot.instance.Settings.autoGolemFireMax.Value      = ImGuiExtension.IntSlider("Flame Golems max.", CoPilot.instance.Settings.autoGolemFireMax);
                    CoPilot.instance.Settings.autoGolemIceMax.Value       = ImGuiExtension.IntSlider("Ice Golems max.", CoPilot.instance.Settings.autoGolemIceMax);
                    CoPilot.instance.Settings.autoGolemLightningMax.Value = ImGuiExtension.IntSlider("Lightning Golems max.", CoPilot.instance.Settings.autoGolemLightningMax);
                    CoPilot.instance.Settings.autoGolemRockMax.Value      = ImGuiExtension.IntSlider("Stone Golems max.", CoPilot.instance.Settings.autoGolemRockMax);
                    CoPilot.instance.Settings.autoBoneMax.Value           = ImGuiExtension.IntSlider("Carrion Golems max.", CoPilot.instance.Settings.autoBoneMax);
                    CoPilot.instance.Settings.autoGolemDropBearMax.Value  = ImGuiExtension.IntSlider("Beastial Ursa Max.", CoPilot.instance.Settings.autoGolemDropBearMax);
                    CoPilot.instance.Settings.autoZombieEnabled.Value     = ImGuiExtension.Checkbox("Auto Zombies", CoPilot.instance.Settings.autoZombieEnabled.Value);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                // Auto Quit
                if (CoPilot.instance.Settings.autoQuitEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(3);
                if (ImGui.TreeNodeEx("Auto Quit", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.autoQuitEnabled.Value = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.autoQuitEnabled.Value);
                    CoPilot.instance.Settings.hpPctQuit.Value       = ImGuiExtension.FloatSlider("HP%", CoPilot.instance.Settings.hpPctQuit);
                    CoPilot.instance.Settings.esPctQuit.Value       = ImGuiExtension.FloatSlider("ES%", CoPilot.instance.Settings.esPctQuit);
                    CoPilot.instance.Settings.forcedAutoQuit.Value  = ImGuiExtension.HotkeySelector("Force Quit Key: " + CoPilot.instance.Settings.forcedAutoQuit.Value, CoPilot.instance.Settings.forcedAutoQuit.Value);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                // Blood Rage
                if (CoPilot.instance.Settings.bloodRageEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(4);
                if (ImGui.TreeNodeEx("Blood Rage", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.bloodRageEnabled.Value = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.bloodRageEnabled.Value);
                    CoPilot.instance.Settings.bloodRageDelay.Value   = ImGuiExtension.IntSlider("Delay", CoPilot.instance.Settings.bloodRageDelay);
                    CoPilot.instance.Settings.bloodRageRange.Value   = ImGuiExtension.IntSlider("Range", CoPilot.instance.Settings.bloodRageRange);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                if (CoPilot.instance.Settings.delveFlareEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(5);
                if (ImGui.TreeNodeEx("Delve Flare", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.delveFlareEnabled.Value      = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.delveFlareEnabled);
                    CoPilot.instance.Settings.delveFlareKey.Value          = ImGuiExtension.HotkeySelector("Key: " + CoPilot.instance.Settings.delveFlareKey.Value, CoPilot.instance.Settings.delveFlareKey.Value);
                    CoPilot.instance.Settings.delveFlareDebuffStacks.Value = ImGuiExtension.IntSlider("min. Debuff Stacks", CoPilot.instance.Settings.delveFlareDebuffStacks);
                    CoPilot.instance.Settings.delveFlareHpBelow.Value      = ImGuiExtension.FloatSlider("HP%", CoPilot.instance.Settings.delveFlareHpBelow);
                    CoPilot.instance.Settings.delveFlareEsBelow.Value      = ImGuiExtension.FloatSlider("ES%", CoPilot.instance.Settings.delveFlareEsBelow);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                // Doedre Effigy
                if (CoPilot.instance.Settings.doedreEffigyEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(6);
                if (ImGui.TreeNodeEx("Doedre Effigy", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.doedreEffigyEnabled.Value = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.doedreEffigyEnabled.Value);
                    CoPilot.instance.Settings.doedreEffigyDelay.Value   = ImGuiExtension.IntSlider("min. Debuff Stacks", CoPilot.instance.Settings.doedreEffigyDelay);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                if (CoPilot.instance.Settings.divineIreEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(7);
                if (ImGui.TreeNodeEx("Divine Ire / Blade Flurry / Scourge Arrow", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.divineIreEnabled.Value        = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.divineIreEnabled.Value);
                    CoPilot.instance.Settings.divineIreStacks.Value         = ImGuiExtension.IntSlider("Stacks", CoPilot.instance.Settings.divineIreStacks);
                    CoPilot.instance.Settings.divineIreWaitForInfused.Value = ImGuiExtension.Checkbox("Wait for Infused Channeling Support", CoPilot.instance.Settings.divineIreWaitForInfused.Value);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                // Warcrys
                if (CoPilot.instance.Settings.enduringCryEnabled || CoPilot.instance.Settings.rallyingCryEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(8);
                if (ImGui.TreeNodeEx("Enduring Cry / Rallying Cry", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.warCryCooldown.Value     = ImGuiExtension.IntSlider("Cooldown", CoPilot.instance.Settings.warCryCooldown);
                    CoPilot.instance.Settings.warCryKeepRage.Value     = ImGuiExtension.Checkbox("Keep Rage Up", CoPilot.instance.Settings.warCryKeepRage.Value);
                    CoPilot.instance.Settings.enduringCryEnabled.Value = ImGuiExtension.Checkbox("Enduring Cry Enabled", CoPilot.instance.Settings.enduringCryEnabled.Value);
                    CoPilot.instance.Settings.warCryTriggerRange.Value = ImGuiExtension.IntSlider("Range", CoPilot.instance.Settings.warCryTriggerRange);
                    CoPilot.instance.Settings.rallyingCryEnabled.Value = ImGuiExtension.Checkbox("Rallying Cry Enabled", CoPilot.instance.Settings.rallyingCryEnabled.Value);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                // Molten Shell / Steelskin / Bone Armour / Arcane Cloak
                if (CoPilot.instance.Settings.moltenShellEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(9);
                if (ImGui.TreeNodeEx("Molten Shell / Steelskin / Bone Armour / Arcane Cloak", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.moltenShellEnabled.Value = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.moltenShellEnabled.Value);
                    CoPilot.instance.Settings.moltenShellDelay.Value   = ImGuiExtension.IntSlider("Cooldown", CoPilot.instance.Settings.moltenShellDelay);
                    CoPilot.instance.Settings.moltenShellRange.Value   = ImGuiExtension.IntSlider("Range", CoPilot.instance.Settings.moltenShellRange);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                // Offerings
                if (CoPilot.instance.Settings.offeringsEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(10);
                if (ImGui.TreeNodeEx("Offerings (This will get you stuck in Animation for your Casttime !)", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.offeringsEnabled.Value         = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.offeringsEnabled.Value);
                    CoPilot.instance.Settings.offeringsUseWhileCasting.Value = ImGuiExtension.Checkbox("Use while Casting/Attacking", CoPilot.instance.Settings.offeringsUseWhileCasting.Value);
                    CoPilot.instance.Settings.offeringsMinEnemys.Value       = ImGuiExtension.IntSlider("min. Enemys", CoPilot.instance.Settings.offeringsMinEnemys);
                    CoPilot.instance.Settings.offeringsTriggerRange.Value    = ImGuiExtension.IntSlider("Trigger Range", CoPilot.instance.Settings.offeringsTriggerRange);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                // Phaserun
                if (CoPilot.instance.Settings.phaserunEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(11);
                if (ImGui.TreeNodeEx("Phaserun", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.phaserunEnabled.Value = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.phaserunEnabled.Value);
                    CoPilot.instance.Settings.phaserunDelay.Value   = ImGuiExtension.IntSlider("Cooldown", CoPilot.instance.Settings.phaserunDelay);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }



            try
            {
                // Speed Flasks
                if (CoPilot.instance.Settings.useSpeed4 || CoPilot.instance.Settings.useSpeed5)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(12);
                if (ImGui.TreeNodeEx("Speed Flask", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.useSpeed4.Value      = ImGuiExtension.Checkbox("Flask 4 Enabled", CoPilot.instance.Settings.useSpeed4.Value);
                    CoPilot.instance.Settings.useSpeed5.Value      = ImGuiExtension.Checkbox("Flask 5 Enabled", CoPilot.instance.Settings.useSpeed5.Value);
                    CoPilot.instance.Settings.useSpeedMoving.Value = ImGuiExtension.Checkbox("Use when Moving", CoPilot.instance.Settings.useSpeedMoving.Value);
                    CoPilot.instance.Settings.useSpeedAttack.Value = ImGuiExtension.Checkbox("Use when Attacking", CoPilot.instance.Settings.useSpeedAttack.Value);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                // Vortex
                if (CoPilot.instance.Settings.vortexEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(13);
                if (ImGui.TreeNodeEx("Vortex", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.vortexEnabled.Value = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.vortexEnabled.Value);
                    CoPilot.instance.Settings.vortexDelay.Value   = ImGuiExtension.IntSlider("Cooldown", CoPilot.instance.Settings.vortexDelay);
                    CoPilot.instance.Settings.vortexRange.Value   = ImGuiExtension.IntSlider("Range", CoPilot.instance.Settings.vortexRange);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }

            try
            {
                if (CoPilot.instance.Settings.anyVaalEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(14);
                if (ImGui.TreeNodeEx("Any Vaal Skill", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.anyVaalEnabled.Value      = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.anyVaalEnabled.Value);
                    CoPilot.instance.Settings.anyVaalMinEnemys.Value    = ImGuiExtension.IntSlider("min. Enemys in Trigger Range", CoPilot.instance.Settings.anyVaalMinEnemys);
                    CoPilot.instance.Settings.anyVaalTriggerRange.Value = ImGuiExtension.IntSlider("Trigger Range", CoPilot.instance.Settings.anyVaalTriggerRange);
                    CoPilot.instance.Settings.anyVaalHpPct.Value        = ImGuiExtension.FloatSlider("HP%", CoPilot.instance.Settings.anyVaalHpPct);
                    CoPilot.instance.Settings.anyVaalEsPct.Value        = ImGuiExtension.FloatSlider("ES%", CoPilot.instance.Settings.anyVaalEsPct);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }

            try
            {
                if (CoPilot.instance.Settings.customEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(15);
                if (ImGui.TreeNodeEx("Custom Skill (Use any Skill not Supported here.)", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.customEnabled.Value      = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.customEnabled.Value);
                    CoPilot.instance.Settings.customKey.Value          = ImGuiExtension.HotkeySelector("Key: " + CoPilot.instance.Settings.customKey.Value, CoPilot.instance.Settings.customKey);
                    CoPilot.instance.Settings.customCooldown.Value     = ImGuiExtension.IntSlider("Cooldown", CoPilot.instance.Settings.customCooldown);
                    CoPilot.instance.Settings.customMinEnemys.Value    = ImGuiExtension.IntSlider("min. Enemys in Trigger Range", CoPilot.instance.Settings.customMinEnemys);
                    CoPilot.instance.Settings.customTriggerRange.Value = ImGuiExtension.IntSlider("Trigger Range", CoPilot.instance.Settings.customTriggerRange);
                    CoPilot.instance.Settings.customHpPct.Value        = ImGuiExtension.FloatSlider("HP%", CoPilot.instance.Settings.customHpPct);
                    CoPilot.instance.Settings.customEsPct.Value        = ImGuiExtension.FloatSlider("ES%", CoPilot.instance.Settings.customEsPct);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }

            try
            {
                if (CoPilot.instance.Settings.brandRecallEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(16);
                if (ImGui.TreeNodeEx("Brand Recall", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.brandRecallEnabled.Value      = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.brandRecallEnabled.Value);
                    CoPilot.instance.Settings.brandRecallCooldown.Value     = ImGuiExtension.IntSlider("Cooldown", CoPilot.instance.Settings.brandRecallCooldown);
                    CoPilot.instance.Settings.brandRecallMinEnemys.Value    = ImGuiExtension.IntSlider("min. Enemys in Trigger Range", CoPilot.instance.Settings.brandRecallMinEnemys);
                    CoPilot.instance.Settings.brandRecallTriggerRange.Value = ImGuiExtension.IntSlider("Trigger Range", CoPilot.instance.Settings.brandRecallTriggerRange);
                    CoPilot.instance.Settings.brandRecallMinBrands.Value    = ImGuiExtension.IntSlider("min. Brands Summoned", CoPilot.instance.Settings.brandRecallMinBrands);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }

            try
            {
                if (CoPilot.instance.Settings.tempestShieldEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(17);
                if (ImGui.TreeNodeEx("Tempest Shield", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.tempestShieldEnabled.Value         = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.tempestShieldEnabled.Value);
                    CoPilot.instance.Settings.tempestShieldUseWhileCasting.Value = ImGuiExtension.Checkbox("Use while Casting/Attacking", CoPilot.instance.Settings.tempestShieldUseWhileCasting.Value);
                    CoPilot.instance.Settings.tempestShieldMinEnemys.Value       = ImGuiExtension.IntSlider("min. Enemys in Trigger Range", CoPilot.instance.Settings.tempestShieldMinEnemys);
                    CoPilot.instance.Settings.tempestShieldTriggerRange.Value    = ImGuiExtension.IntSlider("Trigger Range", CoPilot.instance.Settings.tempestShieldTriggerRange);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }



            try
            {
                if (CoPilot.instance.Settings.minesEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(99999);
                if (ImGui.TreeNodeEx("Mines (Not Implemented)", collapsingHeaderFlags))
                {
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }



            ImGui.End();
        }
Ejemplo n.º 2
0
        internal static void DrawImGuiSettings()
        {
            System.Numerics.Vector4 green = new System.Numerics.Vector4(0.102f, 0.388f, 0.106f, 1.000f);
            System.Numerics.Vector4 red   = new System.Numerics.Vector4(0.388f, 0.102f, 0.102f, 1.000f);

            ImGuiTreeNodeFlags collapsingHeaderFlags = ImGuiTreeNodeFlags.CollapsingHeader;

            ImGui.Text("Plugin by Totalschaden. https://github.com/totalschaden/copilot");

            try
            {
                // Input Keys
                ImGui.PushStyleColor(ImGuiCol.Header, green);
                ImGui.PushID(1000);
                if (ImGui.TreeNodeEx("Input Keys", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.InputKey1.Value  = ImGuiExtension.HotkeySelector("Use bound skill 2 Key: " + CoPilot.instance.Settings.InputKey1.Value, CoPilot.instance.Settings.InputKey1.Value);
                    CoPilot.instance.Settings.InputKey3.Value  = ImGuiExtension.HotkeySelector("Use bound skill 4 Key: " + CoPilot.instance.Settings.InputKey3.Value, CoPilot.instance.Settings.InputKey3.Value);
                    CoPilot.instance.Settings.InputKey4.Value  = ImGuiExtension.HotkeySelector("Use bound skill 5 Key: " + CoPilot.instance.Settings.InputKey4.Value, CoPilot.instance.Settings.InputKey4.Value);
                    CoPilot.instance.Settings.InputKey5.Value  = ImGuiExtension.HotkeySelector("Use bound skill 6 Key: " + CoPilot.instance.Settings.InputKey5.Value, CoPilot.instance.Settings.InputKey5.Value);
                    CoPilot.instance.Settings.InputKey6.Value  = ImGuiExtension.HotkeySelector("Use bound skill 7 Key: " + CoPilot.instance.Settings.InputKey6.Value, CoPilot.instance.Settings.InputKey6.Value);
                    CoPilot.instance.Settings.InputKey7.Value  = ImGuiExtension.HotkeySelector("Use bound skill 8 Key: " + CoPilot.instance.Settings.InputKey7.Value, CoPilot.instance.Settings.InputKey7.Value);
                    CoPilot.instance.Settings.InputKey8.Value  = ImGuiExtension.HotkeySelector("Use bound skill 9 Key: " + CoPilot.instance.Settings.InputKey8.Value, CoPilot.instance.Settings.InputKey8.Value);
                    CoPilot.instance.Settings.InputKey9.Value  = ImGuiExtension.HotkeySelector("Use bound skill 10 Key: " + CoPilot.instance.Settings.InputKey9.Value, CoPilot.instance.Settings.InputKey9.Value);
                    CoPilot.instance.Settings.InputKey10.Value = ImGuiExtension.HotkeySelector("Use bound skill 11 Key: " + CoPilot.instance.Settings.InputKey10.Value, CoPilot.instance.Settings.InputKey10.Value);
                    CoPilot.instance.Settings.InputKey11.Value = ImGuiExtension.HotkeySelector("Use bound skill 12 Key: " + CoPilot.instance.Settings.InputKey11.Value, CoPilot.instance.Settings.InputKey11.Value);
                    CoPilot.instance.Settings.InputKey12.Value = ImGuiExtension.HotkeySelector("Use bound skill 13 Key: " + CoPilot.instance.Settings.InputKey12.Value, CoPilot.instance.Settings.InputKey12.Value);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }
            try
            {
                if (CoPilot.instance.Settings.confirm5)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(1001);
                if (ImGui.TreeNodeEx("Importand Informations", collapsingHeaderFlags))
                {
                    ImGui.Text("Go to Input Keys Tab, and set them According to your Ingame Settings -> Settings -> Input -> Use bound skill X");
                    ImGui.NewLine();
                    ImGui.Text("If your a noob dont make changes to -> Input Keys <- and change your Ingame Settings to the Keys that are predefined in the Plugin!");
                    ImGui.NewLine();
                    ImGui.Text("DO NOT ASSIGN MOUSE KEYS TO -> Input Keys <- in the Plugin !!!");
                    ImGui.NewLine();
                    ImGui.Text("The Top Left and Top Right Skill Slots are EXCLUDED!!! (Ingame bound skill 1 and 3) I recommend you use these for your Mouse.");
                    ImGui.NewLine();
                    ImGui.Text("The Plugin is currently forced to use Timers for Cooldowns as there is no Proper Skill Api for Ready/Cooldown.");
                    ImGui.NewLine();
                    ImGui.Text("I STRONGLY recommend that you add 80-100ms extra delay to your Skill Settings, so a Skill wont be skipped sometimes.");
                    ImGui.NewLine();
                    ImGui.Text("Unhappy with Cooldown Slider ? Set your own Value with STRG/CTRL + Mouseclick");
                    ImGui.NewLine();
                    ImGui.Text("Using Auto Attack and Cyclone for example? If you want to Cyclone yourself, put it on Right Mouse Slot, and have Cyclone in the Slot before that one.");
                    ImGui.NewLine();


                    CoPilot.instance.Settings.confirm1.Value = ImGuiExtension.Checkbox("I did READ the text above.", CoPilot.instance.Settings.confirm1.Value);
                    if (!CoPilot.instance.Settings.confirm1)
                    {
                        return;
                    }
                    CoPilot.instance.Settings.confirm2.Value = ImGuiExtension.Checkbox("I did READ and UNDERSTAND the text above.", CoPilot.instance.Settings.confirm2.Value);
                    if (!CoPilot.instance.Settings.confirm2)
                    {
                        return;
                    }
                    CoPilot.instance.Settings.confirm3.Value = ImGuiExtension.Checkbox("I just READ it again and understood it.", CoPilot.instance.Settings.confirm3.Value);
                    if (!CoPilot.instance.Settings.confirm3)
                    {
                        return;
                    }
                    CoPilot.instance.Settings.confirm4.Value = ImGuiExtension.Checkbox("I did everything stated above and im ready to go.", CoPilot.instance.Settings.confirm4.Value);
                    if (!CoPilot.instance.Settings.confirm4)
                    {
                        return;
                    }
                    CoPilot.instance.Settings.confirm5.Value = ImGuiExtension.Checkbox("Let me use the Plugin already !!!", CoPilot.instance.Settings.confirm5.Value);
                    if (!CoPilot.instance.Settings.confirm5)
                    {
                        return;
                    }
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }
            if (!CoPilot.instance.Settings.confirm5)
            {
                return;
            }

            try
            {
                // Donation
                ImGui.PushStyleColor(ImGuiCol.Header, new System.Numerics.Vector4(0.454f, 0.031f, 0.768f, 1.000f));
                ImGui.PushID(99999);
                if (ImGui.TreeNodeEx("Donation", collapsingHeaderFlags))
                {
                    ImGui.Text("Thanks to anyone who is considering this.");
                    if (ImGui.Button("Open Amazon.de Wishlist"))
                    {
                        System.Diagnostics.Process.Start("https://www.amazon.de/hz/wishlist/ls/MZ543BDBC6PJ?ref_=wl_share");
                    }
                    if (ImGui.Button("Copy BTC Adress"))
                    {
                        SetText("bc1qwjpdf9q3n94e88m3z398udjagach5u56txwpkh");
                    }
                    if (ImGui.Button("Copy ETH Adress"))
                    {
                        SetText("0x78Af12D08B32f816dB9788C5Cf3122693143ed78");
                    }
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }

            try
            {
                // Auto Attack
                if (CoPilot.instance.Settings.autoAttackEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(1);
                if (ImGui.TreeNodeEx("Auto Attack with Cyclone / Nova / Flicker", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.autoAttackEnabled.Value        = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.autoAttackEnabled.Value);
                    CoPilot.instance.Settings.autoAttackLeftMouseCheck.Value = ImGuiExtension.Checkbox("Pause on Left Mouse Pressed", CoPilot.instance.Settings.autoAttackLeftMouseCheck.Value);
                    CoPilot.instance.Settings.autoAttackPickItKey.Value      = ImGuiExtension.HotkeySelector("PickIt Key: " + CoPilot.instance.Settings.autoAttackPickItKey.Value, CoPilot.instance.Settings.autoAttackPickItKey.Value);
                    CoPilot.instance.Settings.autoAttackRange.Value          = ImGuiExtension.IntSlider("Range", CoPilot.instance.Settings.autoAttackRange);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                // Auto Golem
                if (CoPilot.instance.Settings.autoSummonEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(2);
                if (ImGui.TreeNodeEx("Auto Summon", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.autoSummonEnabled.Value     = ImGuiExtension.Checkbox("Auto Summons", CoPilot.instance.Settings.autoSummonEnabled.Value);
                    CoPilot.instance.Settings.autoGolemEnabled.Value      = ImGuiExtension.Checkbox("Auto Golem", CoPilot.instance.Settings.autoGolemEnabled.Value);
                    CoPilot.instance.Settings.autoZombieEnabled.Value     = ImGuiExtension.Checkbox("Auto Zombies", CoPilot.instance.Settings.autoZombieEnabled.Value);
                    CoPilot.instance.Settings.autoGolemAvoidRange.Value   = ImGuiExtension.IntSlider("Do not use when Enemys within", CoPilot.instance.Settings.autoGolemAvoidRange);
                    CoPilot.instance.Settings.autoGolemChaosMax.Value     = ImGuiExtension.IntSlider("Chaos Golems max.", CoPilot.instance.Settings.autoGolemChaosMax);
                    CoPilot.instance.Settings.autoGolemFireMax.Value      = ImGuiExtension.IntSlider("Flame Golems max.", CoPilot.instance.Settings.autoGolemFireMax);
                    CoPilot.instance.Settings.autoGolemIceMax.Value       = ImGuiExtension.IntSlider("Ice Golems max.", CoPilot.instance.Settings.autoGolemIceMax);
                    CoPilot.instance.Settings.autoGolemLightningMax.Value = ImGuiExtension.IntSlider("Lightning Golems max.", CoPilot.instance.Settings.autoGolemLightningMax);
                    CoPilot.instance.Settings.autoGolemRockMax.Value      = ImGuiExtension.IntSlider("Stone Golems max.", CoPilot.instance.Settings.autoGolemRockMax);
                    CoPilot.instance.Settings.autoBoneMax.Value           = ImGuiExtension.IntSlider("Carrion Golems max.", CoPilot.instance.Settings.autoBoneMax);
                    CoPilot.instance.Settings.autoGolemDropBearMax.Value  = ImGuiExtension.IntSlider("Beastial Ursa Max.", CoPilot.instance.Settings.autoGolemDropBearMax);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                // Auto Quit
                if (CoPilot.instance.Settings.autoQuitEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(3);
                if (ImGui.TreeNodeEx("Auto Quit", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.autoQuitEnabled.Value       = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.autoQuitEnabled.Value);
                    CoPilot.instance.Settings.hpPctQuit.Value             = ImGuiExtension.FloatSlider("HP%", CoPilot.instance.Settings.hpPctQuit);
                    CoPilot.instance.Settings.esPctQuit.Value             = ImGuiExtension.FloatSlider("ES%", CoPilot.instance.Settings.esPctQuit);
                    CoPilot.instance.Settings.autoQuitGuardian.Value      = ImGuiExtension.Checkbox("Guardian Auto Quit", CoPilot.instance.Settings.autoQuitGuardian.Value);
                    CoPilot.instance.Settings.guardianHpPct.Value         = ImGuiExtension.FloatSlider("Guardian HP%", CoPilot.instance.Settings.guardianHpPct);
                    CoPilot.instance.Settings.autoQuitHotkeyEnabled.Value = ImGuiExtension.Checkbox("Hotkey Enabled", CoPilot.instance.Settings.autoQuitHotkeyEnabled.Value);
                    CoPilot.instance.Settings.forcedAutoQuit.Value        = ImGuiExtension.HotkeySelector("Force Quit Hotkey: " + CoPilot.instance.Settings.forcedAutoQuit.Value, CoPilot.instance.Settings.forcedAutoQuit.Value);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                // Blood Rage
                if (CoPilot.instance.Settings.bloodRageEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(4);
                if (ImGui.TreeNodeEx("Blood Rage", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.bloodRageEnabled.Value = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.bloodRageEnabled.Value);
                    CoPilot.instance.Settings.bloodRageDelay.Value   = ImGuiExtension.IntSlider("Delay", CoPilot.instance.Settings.bloodRageDelay);
                    CoPilot.instance.Settings.bloodRageRange.Value   = ImGuiExtension.IntSlider("Range", CoPilot.instance.Settings.bloodRageRange);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                if (CoPilot.instance.Settings.delveFlareEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(5);
                if (ImGui.TreeNodeEx("Delve Flare", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.delveFlareEnabled.Value      = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.delveFlareEnabled);
                    CoPilot.instance.Settings.delveFlareKey.Value          = ImGuiExtension.HotkeySelector("Key: " + CoPilot.instance.Settings.delveFlareKey.Value, CoPilot.instance.Settings.delveFlareKey.Value);
                    CoPilot.instance.Settings.delveFlareDebuffStacks.Value = ImGuiExtension.IntSlider("min. Debuff Stacks", CoPilot.instance.Settings.delveFlareDebuffStacks);
                    CoPilot.instance.Settings.delveFlareHpBelow.Value      = ImGuiExtension.FloatSlider("HP%", CoPilot.instance.Settings.delveFlareHpBelow);
                    CoPilot.instance.Settings.delveFlareEsBelow.Value      = ImGuiExtension.FloatSlider("ES%", CoPilot.instance.Settings.delveFlareEsBelow);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                // Doedre Effigy
                if (CoPilot.instance.Settings.doedreEffigyEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(6);
                if (ImGui.TreeNodeEx("Doedre Effigy", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.doedreEffigyEnabled.Value = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.doedreEffigyEnabled.Value);
                    CoPilot.instance.Settings.doedreEffigyDelay.Value   = ImGuiExtension.IntSlider("min. Debuff Stacks", CoPilot.instance.Settings.doedreEffigyDelay);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                if (CoPilot.instance.Settings.divineIreEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(7);
                if (ImGui.TreeNodeEx("Divine Ire / Blade Flurry / Scourge Arrow (Do NOT bind on Mousekeys!!!)", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.divineIreEnabled.Value        = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.divineIreEnabled.Value);
                    CoPilot.instance.Settings.divineIreStacks.Value         = ImGuiExtension.IntSlider("Stacks", CoPilot.instance.Settings.divineIreStacks);
                    CoPilot.instance.Settings.divineIreWaitForInfused.Value = ImGuiExtension.Checkbox("Wait for Infused Channeling Support", CoPilot.instance.Settings.divineIreWaitForInfused.Value);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                // Warcrys
                if (CoPilot.instance.Settings.enduringCryEnabled || CoPilot.instance.Settings.rallyingCryEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(8);
                if (ImGui.TreeNodeEx("Enduring Cry / Rallying Cry", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.warCryCooldown.Value     = ImGuiExtension.IntSlider("Cooldown", CoPilot.instance.Settings.warCryCooldown);
                    CoPilot.instance.Settings.warCryKeepRage.Value     = ImGuiExtension.Checkbox("Keep Rage Up", CoPilot.instance.Settings.warCryKeepRage.Value);
                    CoPilot.instance.Settings.enduringCryEnabled.Value = ImGuiExtension.Checkbox("Enduring Cry Enabled", CoPilot.instance.Settings.enduringCryEnabled.Value);
                    CoPilot.instance.Settings.warCryTriggerRange.Value = ImGuiExtension.IntSlider("Range", CoPilot.instance.Settings.warCryTriggerRange);
                    CoPilot.instance.Settings.rallyingCryEnabled.Value = ImGuiExtension.Checkbox("Rallying Cry Enabled", CoPilot.instance.Settings.rallyingCryEnabled.Value);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                // Molten Shell / Steelskin / Bone Armour / Arcane Cloak
                if (CoPilot.instance.Settings.moltenShellEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(9);
                if (ImGui.TreeNodeEx("Molten Shell / Steelskin / Bone Armour / Arcane Cloak", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.moltenShellEnabled.Value = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.moltenShellEnabled.Value);
                    CoPilot.instance.Settings.moltenShellDelay.Value   = ImGuiExtension.IntSlider("Cooldown", CoPilot.instance.Settings.moltenShellDelay);
                    CoPilot.instance.Settings.moltenShellRange.Value   = ImGuiExtension.IntSlider("Range", CoPilot.instance.Settings.moltenShellRange);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                // Offerings
                if (CoPilot.instance.Settings.offeringsEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(10);
                if (ImGui.TreeNodeEx("Offerings (This will get you stuck in Animation for your Casttime !)", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.offeringsEnabled.Value         = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.offeringsEnabled.Value);
                    CoPilot.instance.Settings.offeringsUseWhileCasting.Value = ImGuiExtension.Checkbox("Use while Casting/Attacking", CoPilot.instance.Settings.offeringsUseWhileCasting.Value);
                    CoPilot.instance.Settings.offeringsMinEnemys.Value       = ImGuiExtension.IntSlider("min. Enemys", CoPilot.instance.Settings.offeringsMinEnemys);
                    CoPilot.instance.Settings.offeringsTriggerRange.Value    = ImGuiExtension.IntSlider("Trigger Range", CoPilot.instance.Settings.offeringsTriggerRange);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }


            try
            {
                // Phaserun
                if (CoPilot.instance.Settings.phaserunEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(11);
                if (ImGui.TreeNodeEx("Phaserun", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.phaserunEnabled.Value = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.phaserunEnabled.Value);
                    CoPilot.instance.Settings.phaserunDelay.Value   = ImGuiExtension.IntSlider("Cooldown", CoPilot.instance.Settings.phaserunDelay);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }

            try
            {
                // Vortex
                if (CoPilot.instance.Settings.vortexEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(13);
                if (ImGui.TreeNodeEx("Vortex", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.vortexEnabled.Value   = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.vortexEnabled.Value);
                    CoPilot.instance.Settings.vortexFrostbolt.Value = ImGuiExtension.Checkbox("When Frostbolt's flying", CoPilot.instance.Settings.vortexFrostbolt.Value);
                    CoPilot.instance.Settings.vortexDelay.Value     = ImGuiExtension.IntSlider("Cooldown", CoPilot.instance.Settings.vortexDelay);
                    CoPilot.instance.Settings.vortexRange.Value     = ImGuiExtension.IntSlider("Range", CoPilot.instance.Settings.vortexRange);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }

            try
            {
                if (CoPilot.instance.Settings.anyVaalEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(14);
                if (ImGui.TreeNodeEx("Any Vaal Skill", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.anyVaalEnabled.Value      = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.anyVaalEnabled.Value);
                    CoPilot.instance.Settings.anyVaalMinEnemys.Value    = ImGuiExtension.IntSlider("min. Enemys in Trigger Range", CoPilot.instance.Settings.anyVaalMinEnemys);
                    CoPilot.instance.Settings.anyVaalTriggerRange.Value = ImGuiExtension.IntSlider("Trigger Range", CoPilot.instance.Settings.anyVaalTriggerRange);
                    CoPilot.instance.Settings.anyVaalHpPct.Value        = ImGuiExtension.FloatSlider("HP%", CoPilot.instance.Settings.anyVaalHpPct);
                    CoPilot.instance.Settings.anyVaalEsPct.Value        = ImGuiExtension.FloatSlider("ES%", CoPilot.instance.Settings.anyVaalEsPct);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }

            try
            {
                if (CoPilot.instance.Settings.customEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(15);
                if (ImGui.TreeNodeEx("Custom Skill (Use any Skill not Supported here.)", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.customEnabled.Value      = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.customEnabled.Value);
                    CoPilot.instance.Settings.customKey.Value          = ImGuiExtension.HotkeySelector("Key: " + CoPilot.instance.Settings.customKey.Value, CoPilot.instance.Settings.customKey);
                    CoPilot.instance.Settings.customCooldown.Value     = ImGuiExtension.IntSlider("Cooldown", CoPilot.instance.Settings.customCooldown);
                    CoPilot.instance.Settings.customMinEnemys.Value    = ImGuiExtension.IntSlider("min. Enemys in Trigger Range", CoPilot.instance.Settings.customMinEnemys);
                    CoPilot.instance.Settings.customTriggerRange.Value = ImGuiExtension.IntSlider("Trigger Range", CoPilot.instance.Settings.customTriggerRange);
                    CoPilot.instance.Settings.customHpPct.Value        = ImGuiExtension.FloatSlider("HP%", CoPilot.instance.Settings.customHpPct);
                    CoPilot.instance.Settings.customEsPct.Value        = ImGuiExtension.FloatSlider("ES%", CoPilot.instance.Settings.customEsPct);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }

            try
            {
                if (CoPilot.instance.Settings.customTwoEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(15);
                if (ImGui.TreeNodeEx("Custom Skill 2 (Use any Skill not Supported here.)", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.customTwoEnabled.Value      = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.customTwoEnabled.Value);
                    CoPilot.instance.Settings.customTwoKey.Value          = ImGuiExtension.HotkeySelector("Key: " + CoPilot.instance.Settings.customTwoKey.Value, CoPilot.instance.Settings.customTwoKey);
                    CoPilot.instance.Settings.customTwoCooldown.Value     = ImGuiExtension.IntSlider("Cooldown", CoPilot.instance.Settings.customTwoCooldown);
                    CoPilot.instance.Settings.customTwoMinEnemys.Value    = ImGuiExtension.IntSlider("min. Enemys in Trigger Range", CoPilot.instance.Settings.customTwoMinEnemys);
                    CoPilot.instance.Settings.customTwoTriggerRange.Value = ImGuiExtension.IntSlider("Trigger Range", CoPilot.instance.Settings.customTwoTriggerRange);
                    CoPilot.instance.Settings.customTwoHpPct.Value        = ImGuiExtension.FloatSlider("HP%", CoPilot.instance.Settings.customTwoHpPct);
                    CoPilot.instance.Settings.customTwoEsPct.Value        = ImGuiExtension.FloatSlider("ES%", CoPilot.instance.Settings.customTwoEsPct);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }

            try
            {
                if (CoPilot.instance.Settings.brandRecallEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(16);
                if (ImGui.TreeNodeEx("Brand Recall", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.brandRecallEnabled.Value      = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.brandRecallEnabled.Value);
                    CoPilot.instance.Settings.brandRecallCooldown.Value     = ImGuiExtension.IntSlider("Cooldown", CoPilot.instance.Settings.brandRecallCooldown);
                    CoPilot.instance.Settings.brandRecallMinEnemys.Value    = ImGuiExtension.IntSlider("min. Enemys in Trigger Range", CoPilot.instance.Settings.brandRecallMinEnemys);
                    CoPilot.instance.Settings.brandRecallTriggerRange.Value = ImGuiExtension.IntSlider("Trigger Range", CoPilot.instance.Settings.brandRecallTriggerRange);
                    CoPilot.instance.Settings.brandRecallMinBrands.Value    = ImGuiExtension.IntSlider("min. Brands Summoned", CoPilot.instance.Settings.brandRecallMinBrands);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }

            try
            {
                if (CoPilot.instance.Settings.tempestShieldEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(17);
                if (ImGui.TreeNodeEx("Tempest Shield", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.tempestShieldEnabled.Value         = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.tempestShieldEnabled.Value);
                    CoPilot.instance.Settings.tempestShieldUseWhileCasting.Value = ImGuiExtension.Checkbox("Use while Casting/Attacking", CoPilot.instance.Settings.tempestShieldUseWhileCasting.Value);
                    CoPilot.instance.Settings.tempestShieldMinEnemys.Value       = ImGuiExtension.IntSlider("min. Enemys in Trigger Range", CoPilot.instance.Settings.tempestShieldMinEnemys);
                    CoPilot.instance.Settings.tempestShieldTriggerRange.Value    = ImGuiExtension.IntSlider("Trigger Range", CoPilot.instance.Settings.tempestShieldTriggerRange);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }

            try
            {
                if (CoPilot.instance.Settings.convocationEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(18);
                if (ImGui.TreeNodeEx("Convocation", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.convocationEnabled.Value          = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.convocationEnabled.Value);
                    CoPilot.instance.Settings.convocationAvoidUniqueRange.Value = ImGuiExtension.IntSlider("Do not use when Unique Enemy within", CoPilot.instance.Settings.convocationAvoidUniqueRange);
                    CoPilot.instance.Settings.convocationCooldown.Value         = ImGuiExtension.IntSlider("Cooldown", CoPilot.instance.Settings.convocationCooldown);
                    CoPilot.instance.Settings.guardianHpPct.Value           = ImGuiExtension.FloatSlider("Summon HP% below", CoPilot.instance.Settings.guardianHpPct);
                    CoPilot.instance.Settings.convocationMobRange.Value     = ImGuiExtension.IntSlider("Mob Trigger Range", CoPilot.instance.Settings.convocationMobRange);
                    CoPilot.instance.Settings.convocationMinnionRange.Value = ImGuiExtension.IntSlider("Minnion Range", CoPilot.instance.Settings.convocationMinnionRange);
                    CoPilot.instance.Settings.convocationMinnionPct.Value   = ImGuiExtension.IntSlider("min. % Minnions in Range", CoPilot.instance.Settings.convocationMinnionPct);

                    ImGui.Text("This will Summon your Minnions when min% minnions are not within Minnion Range, and there is an enemys within Mob Trigger Range.");
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }

            try
            {
                if (CoPilot.instance.Settings.mirageEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(19);
                if (ImGui.TreeNodeEx("Mirage Archer", collapsingHeaderFlags))
                {
                    ImGui.Text("Currently only check if an enemy is near mouse, recommend < 75 range when only firing 1 arrow.");
                    ImGui.Text("Works alot better with Volley/GMP, Increase Range by try&error");
                    CoPilot.instance.Settings.mirageEnabled.Value = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.mirageEnabled.Value);
                    CoPilot.instance.Settings.mirageRange.Value   = ImGuiExtension.IntSlider("Enemy Range near Mouse", CoPilot.instance.Settings.mirageRange);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }

            try
            {
                if (CoPilot.instance.Settings.autoCurseEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(20);
                if (ImGui.TreeNodeEx("Auto Curse (Testing: Only Punishment atm)", collapsingHeaderFlags))
                {
                    CoPilot.instance.Settings.autoCurseEnabled.Value   = ImGuiExtension.Checkbox("Enabled", CoPilot.instance.Settings.autoCurseEnabled.Value);
                    CoPilot.instance.Settings.autoCurseCooldown.Value  = ImGuiExtension.IntSlider("Cooldown", CoPilot.instance.Settings.autoCurseCooldown);
                    CoPilot.instance.Settings.autoCurseRange.Value     = ImGuiExtension.IntSlider("Enemy Range near Mouse", CoPilot.instance.Settings.autoCurseRange);
                    CoPilot.instance.Settings.autoCurseMinEnemys.Value = ImGuiExtension.IntSlider("min. Enemys not Cursed", CoPilot.instance.Settings.autoCurseMinEnemys);
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }

            try
            {
                if (CoPilot.instance.Settings.minesEnabled)
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, green);
                }
                else
                {
                    ImGui.PushStyleColor(ImGuiCol.Header, red);
                }
                ImGui.PushID(99999);
                if (ImGui.TreeNodeEx("Mines (Not Implemented)", collapsingHeaderFlags))
                {
                }
            }
            catch (Exception e)
            {
                CoPilot.instance.LogError(e.ToString());
            }



            ImGui.End();
        }