Beispiel #1
0
        public bool Enabled(string abilityName, AbilityType abilityType)
        {
            switch (abilityType)
            {
            case AbilityType.Counter:
                return(counterAbilityToggler.IsEnabled(abilityName));

            case AbilityType.Blink:
                return(blinkAbilityToggler.IsEnabled(abilityName));

            case AbilityType.Disable:
                return(disableAbilityToggler.IsEnabled(abilityName));
            }

            return(false);
        }
Beispiel #2
0
        public void AddAbility(string abilityName, AbilityType abilityType, bool enabled = true)
        {
            switch (abilityType)
            {
            case AbilityType.Counter:
                if (addedCounterAbilities.Contains(abilityName))
                {
                    return;
                }

                counterAbilityToggler.Add(abilityName, enabled);
                addedCounterAbilities.Add(abilityName);
                break;

            case AbilityType.Blink:
                if (addedBlinkAbilities.Contains(abilityName))
                {
                    return;
                }
                blinkAbilityToggler.Add(abilityName, enabled);
                addedBlinkAbilities.Add(abilityName);
                break;

            case AbilityType.Disable:
                if (addedDisableAbilities.Contains(abilityName))
                {
                    return;
                }
                disableAbilityToggler.Add(abilityName, enabled);
                addedDisableAbilities.Add(abilityName);
                break;
            }

            switch (abilityName)
            {
            case "item_bloodstone":
                InitializeSpecialsMenu();

                var bloodstoneMenu = new Menu(string.Empty, "bloodstoneMenu", textureName: abilityName);

                var autoSuicide = new MenuItem("bsAutoSuicide", "Auto suicide").SetValue(false);
                bloodstoneMenu.AddItem(autoSuicide);
                autoSuicide.ValueChanged += (sender, args) => BloodstoneAutoSuicide = args.GetNewValue <bool>();
                BloodstoneAutoSuicide     = autoSuicide.IsActive();

                var hpCheck = new MenuItem("bsHpCheck", "Use when HP% lower than").SetValue(new Slider(15, 1, 50));
                bloodstoneMenu.AddItem(hpCheck);
                hpCheck.ValueChanged += (sender, args) => BloodstoneHpThreshold = args.GetNewValue <Slider>().Value;
                BloodstoneHpThreshold = hpCheck.GetValue <Slider>().Value;

                var enemyCheck =
                    new MenuItem("bsEnemyCheck", "Use only when enemy in range of").SetValue(
                        new Slider(750, 0, 2000));
                bloodstoneMenu.AddItem(enemyCheck);
                enemyCheck.ValueChanged +=
                    (sender, args) => BloodstoneEnemyRange = args.GetNewValue <Slider>().Value;
                BloodstoneEnemyRange = enemyCheck.GetValue <Slider>().Value;

                specials.AddSubMenu(bloodstoneMenu);
                Game.PrintMessage(
                    "<font color='#ff7700'>[Evader]</font> Bloodstone has special settings in the menu");
                break;

            case "item_armlet":
                InitializeSpecialsMenu();

                var armletMenu = new Menu(string.Empty, "armletMenu", textureName: abilityName);

                var autoToggle = new MenuItem("armletAutoToggle", "Auto toggle").SetValue(true);
                armletMenu.AddItem(autoToggle);
                autoToggle.ValueChanged += (sender, args) => ArmletAutoToggle = args.GetNewValue <bool>();
                ArmletAutoToggle         = autoToggle.IsActive();

                var armletHpThreshold =
                    new MenuItem("armletHpThreshold", "Minimum hp").SetValue(new Slider(222, 100, 300));
                armletMenu.AddItem(armletHpThreshold);
                armletHpThreshold.ValueChanged         +=
                    (sender, args) => ArmletHpThreshold = args.GetNewValue <Slider>().Value;
                ArmletHpThreshold = armletHpThreshold.GetValue <Slider>().Value;

                var checkDelay = new MenuItem("armletCheckDelay", "Check delay").SetValue(new Slider(75, 0, 300));
                checkDelay.SetTooltip("Lower delay => better calculations, but requires more resources");
                armletMenu.AddItem(checkDelay);
                checkDelay.ValueChanged += (sender, args) => ArmletCheckDelay = args.GetNewValue <Slider>().Value;
                ArmletCheckDelay         = checkDelay.GetValue <Slider>().Value;

                var fountainDisable = new MenuItem("armletAutoDisable", "Auto disable at fountain").SetValue(true);
                armletMenu.AddItem(fountainDisable);
                fountainDisable.ValueChanged += (sender, args) => AutoDisableAtFountain = args.GetNewValue <bool>();
                AutoDisableAtFountain         = fountainDisable.IsActive();

                var enemyNearOnly = new MenuItem("armletOnlyNearEnemies", "Only near enemies").SetValue(true);
                enemyNearOnly.SetTooltip("If enabled, will toggle only when enemies are near");
                armletMenu.AddItem(enemyNearOnly);
                enemyNearOnly.ValueChanged += (sender, args) => ArmletEnemiesCheck = args.GetNewValue <bool>();
                ArmletEnemiesCheck          = enemyNearOnly.IsActive();

                specials.AddSubMenu(armletMenu);
                Game.PrintMessage("<font color='#ff7700'>[Evader]</font> Armlet has special settings in the menu");
                break;

            case "puck_phase_shift":
                InitializeSpecialsMenu();

                var phaseShiftMenu = new Menu(string.Empty, "phaseShiftMenu", textureName: abilityName);

                var phaseShiftBlock = new MenuItem("phaseShiftBlock", "Action block").SetValue(true);
                phaseShiftBlock.SetTooltip("Block player movement/attack actions when evader used phase shift");
                phaseShiftMenu.AddItem(phaseShiftBlock);
                phaseShiftBlock.ValueChanged += (sender, args) => PhaseShiftBlock = args.GetNewValue <bool>();
                PhaseShiftBlock = phaseShiftBlock.IsActive();

                var phaseShiftBlockTime =
                    new MenuItem("phaseShiftBlockTime", "Block for (ms)").SetValue(new Slider(500, 100, 3000));
                phaseShiftBlockTime.SetTooltip("Action won't be blocked longer than phase shift duration");
                phaseShiftMenu.AddItem(phaseShiftBlockTime);
                phaseShiftBlockTime.ValueChanged += (sender, args) =>
                                                    PhaseShiftBlockTime = args.GetNewValue <Slider>().Value;
                PhaseShiftBlockTime = phaseShiftBlockTime.GetValue <Slider>().Value;

                specials.AddSubMenu(phaseShiftMenu);
                Game.PrintMessage(
                    "<font color='#ff7700'>[Evader]</font> Phase Shift has special settings in the menu");
                break;

            case "templar_assassin_meld":
                InitializeSpecialsMenu();

                var meldMenu = new Menu(string.Empty, "meldMenu", textureName: abilityName);

                var meldBlock = new MenuItem("meldBlock", "Action block").SetValue(true);
                meldBlock.SetTooltip("Block player movement/attack actions when evader used meld");
                meldMenu.AddItem(meldBlock);
                meldBlock.ValueChanged += (sender, args) => MeldBlock = args.GetNewValue <bool>();
                MeldBlock = meldBlock.IsActive();

                var meldBlockTime =
                    new MenuItem("meldBlockTime", "Block for (ms)").SetValue(new Slider(500, 100, 3000));
                meldMenu.AddItem(meldBlockTime);
                meldBlockTime.ValueChanged += (sender, args) => MeldBlockTime = args.GetNewValue <Slider>().Value;
                MeldBlockTime = meldBlockTime.GetValue <Slider>().Value;

                specials.AddSubMenu(meldMenu);
                Game.PrintMessage("<font color='#ff7700'>[Evader]</font> Meld has special settings in the menu");
                break;
            }
        }