Ejemplo n.º 1
0
        public void PassiveBonusToAllWeaponSpells()
        {
            var setting = new Settings
            {
                PrimaryWeapon   = WeaponType.Hammer,
                SecondaryWeapon = WeaponType.Fist,
                FightLength     = 1,
                TargetType      = TargetType.Champion,
                Apl             = "",
            };

            var passive = new Passive2();
            var spell   = new Spell1();
            var spell2  = new Spell2();
            var spell3  = new Spell3();

            var player = new Player(setting);

            player.Passives.Add(passive);
            player.Spells.Add(spell);
            player.Spells.Add(spell2);
            player.Spells.Add(spell3);

            player.NewRound(0, 0);

            Assert.IsTrue(player.HasPassive("Passive2"));
            Assert.IsTrue(player.Spells.Where(s => s.WeaponType == WeaponType.Hammer).All(sp => sp.PrimaryGimmickGain > 0));
            Assert.IsTrue(player.Spells.First(s => s.WeaponType != WeaponType.Hammer).PrimaryGimmickGain == 0);
        }
Ejemplo n.º 2
0
        public void PassiveBonusSpellOnlyCrit2()
        {
            var setting = new Settings
            {
                PrimaryWeapon   = WeaponType.Hammer,
                SecondaryWeapon = WeaponType.Fist,
                FightLength     = 1,
                TargetType      = TargetType.Champion,
                Apl             = "",
            };

            var passive = new PassiveBonusSpell2();
            var spell   = new Spell2 {
                BonusCritChance = -100
            };

            var player = new Player(setting);

            player.Passives.Add(passive);
            player.Spells.Add(spell);

            var engine = new Engine(setting);
            var fight  = engine.StartFight(player);

            var spells = fight.RoundResults
                         .SelectMany(r => r.Attacks.Where(a => a.Spell is Spell2)).Count();
            var bonusSpells = fight.RoundResults
                              .SelectMany(r => r.Attacks.Where(a => a.Spell is PassiveBonusSpell2)).Count();

            Assert.IsTrue(spells > 0);
            Assert.IsTrue(bonusSpells == 0);
        }
 void PatternClear()
 {
     level++;
     Spell.SendMessage("PatternFinish");
     Spell2.SendMessage("PatternFinish");
     gameObject.GetComponent <BoxCollider2D>().enabled = false;
     Invoke("PatternRelpace", 2.0f);
 }
Ejemplo n.º 4
0
 private static bool UseHeal()
 {
     if (Spell2 == null || !Spell2.CanBeCasted() || !Utils.SleepCheck(Spell2.StoredName()) || MyHero.Mana - Spell4.ManaCost <= Spell2.ManaCost)
     {
         return(false);
     }
     Spell2.UseAbility(MyHero);
     Utils.Sleep(500 + Game.Ping, Spell2.StoredName());
     return(true);
 }
Ejemplo n.º 5
0
 void SpellRun(bool runFirst)
 {
     Debug.Log("Pattern Start");
     started = true;
     if (runFirst)
     {
         Spell.SendMessage("PatternStart", Launchers);
         Spell2.SendMessage("PatternStart", Launchers);
     }
     else
     {
         Spell3.SendMessage("PatternStart", Launchers);
         Spell4.SendMessage("PatternStart", Launchers);
     }
 }
    void SpellShot()
    {
        int[] rand = new int[2];
        gameObject.GetComponent <BoxCollider2D>().enabled = true;
        rand[0] = Random.Range(0, SpellLev.Length);
        rand[1] = Random.Range(0, SpellLev.Length);
        while (rand[0] == rand[1])
        {
            rand[1] = Random.Range(0, 7);
        }

        Spell  = SpellLev[rand[0]];
        Spell2 = SpellLev[rand[1]];
        Spell.SendMessage("PatternStart", Launchers);
        Spell2.SendMessage("PatternStart", Launchers);
    }
Ejemplo n.º 7
0
    IEnumerator SpellClear()
    {
        if (!Level)
        {
            Spell.SendMessage("PatternFinish");
            Spell2.SendMessage("PatternFinish");
            Level = true;
        }
        else
        {
            Spell3.SendMessage("PatternFinish");
            Spell4.SendMessage("PatternFinish");
        }
        gameObject.GetComponent <BoxCollider2D>().enabled = false;
        yield return(new WaitForSeconds(2));

        gameObject.GetComponent <BoxCollider2D>().enabled = true;
        Debug.Log("Pattern Cleared");
        started = false;
    }
Ejemplo n.º 8
0
        private static void ComboInAction(Hero target)
        {
            if (!Spell4.CanBeCasted() || Spell4.Level == 0 || !Utils.SleepCheck(Spell2.StoredName()))
            {
                return;
            }

            var neededMana = MyHero.Mana - Spell4.ManaCost;

            var allitems = MyHero.Inventory.Items.Where(x => x.CanBeCasted() && x.ManaCost <= neededMana);

            var isInvise = MyHero.IsInvisible();

            var inventory =
                allitems.Where(x => Utils.SleepCheck(x.Name + MyHero.Handle)).ToList();
            var underLink = target.IsLinkensProtected();
            var distance  = MyHero.Distance2D(target) - MyHero.HullRadius - target.HullRadius;

            if (underLink)
            {
                var linkerItems = inventory.Where(x => x.CanHit(target) && ItemsLinker.Keys.Contains(x.Name)).OrderByDescending(y => ItemsLinker[y.StoredName()]);
                foreach (var item in linkerItems)
                {
                    item.UseAbility(target);
                    Utils.Sleep(250, item.Name + MyHero.Handle);
                }
                if (linkerItems.Any(x => Utils.SleepCheck(x.Name + MyHero.Handle)))
                {
                    return;
                }
            }
            var items =
                inventory.Where(
                    x =>
                    Items.Keys.Contains(x.Name) &&
                    ((x.CastRange == 0 && distance <= 800) ||
                     x.CastRange >= distance)).OrderByDescending(y => Items[y.StoredName()]);

            if (Dagger != null && Dagger.CanBeCasted() && !isInvise && Utils.SleepCheck("dagger") && distance <= 1200 && distance > 150)
            {
                if (UseHeal())
                {
                    return;
                }
                var point = new Vector3(
                    (float)(target.Position.X - 20 * Math.Cos(MyHero.FindAngleBetween(target.Position, true))),
                    (float)(target.Position.Y - 20 * Math.Sin(MyHero.FindAngleBetween(target.Position, true))),
                    0);
                Dagger.UseAbility(point);
                Utils.Sleep(500, "dagger");
            }
            else if (Utils.SleepCheck("attack_cd"))
            {
                Utils.Sleep(500, "attack_cd");
                MyHero.Attack(target);
            }
            if (Bkb != null && Menu.Item("enabledAbilities").GetValue <AbilityToggler>().IsEnabled(Bkb.StoredName()) &&
                Bkb.CanBeCasted() && Utils.SleepCheck(Bkb.StoredName()) && Spell4.CanHit(target))
            {
                Bkb.UseAbility();
                Utils.Sleep(500, Bkb.StoredName());
            }
            foreach (var item in items)
            {
                if (item.StoredName() == "item_armlet")
                {
                    if (!MyHero.HasModifier("modifier_item_armlet_unholy_strength"))
                    {
                        item.ToggleAbility();
                        Utils.Sleep(500, item.Name + MyHero.Handle);
                    }
                    continue;
                }
                if (item.IsAbilityBehavior(AbilityBehavior.NoTarget))
                {
                    item.UseAbility();
                }
                if (item.IsAbilityBehavior(AbilityBehavior.UnitTarget))
                {
                    if (item.TargetTeamType == TargetTeamType.Enemy || item.TargetTeamType == TargetTeamType.All)
                    {
                        item.UseAbility(target);
                    }
                    else
                    {
                        item.UseAbility(MyHero);
                    }
                }
                Utils.Sleep(500, item.Name + MyHero.Handle);
            }
            if (isInvise && Utils.SleepCheck("attack_cd_2"))
            {
                MyHero.Attack(target);
                Utils.Sleep(500 + Game.Ping, "attack_cd_2");
            }
            else if (Utils.SleepCheck("ult"))
            {
                if (distance <= 200 /*Spell4.CanHit(target)*/)
                {
                    UseHeal();
                    //if (items.Any(x => Utils.SleepCheck(x.Name + MyHero.Handle))) return;
                    Utils.Sleep(100 + Game.Ping, "ult");
                    Spell4.UseAbility(target);
                }
            }
        }
Ejemplo n.º 9
0
        public static void Loading_OnLoadingComplete(EventArgs args)
        {
            if (myHero.Hero != Champion.Vayne)
            {
                return;
            }
            Chat.Print("<font color=\"#F20000\"><b>Doctor Vayne:</b></font> Loaded!");
            Chat.Print("Good Luck!");

            Q = new Spell2(SpellSlot.Q);
            W = new Spell2(SpellSlot.W);
            E = new Spell2(SpellSlot.E, 590f);
            E.SetTargetted(0.25f, 2200f);
            R = new Spell2(SpellSlot.R);

            var slot = myHero.GetSpellSlotFromName("summonerheal");

            if (slot != SpellSlot.Unknown)
            {
                Heal = new Spell.Active(slot, 600);
            }

            menu = MainMenu.AddMenu(AddonName, AddonName + " by " + Author + " v1.0");
            menu.AddLabel(AddonName + " Doctor Vayne " + Author);
            menu.AddLabel("Good Luck!");

            SubMenu["Combo"] = menu.AddSubMenu("连招", "Combo");
            SubMenu["Combo"].AddGroupLabel("Q 设置");
            SubMenu["Combo"].Add("Q", new CheckBox("使用 Q", true));
            SubMenu["Combo"].Add("Qult", new CheckBox("大招智能 Q", true));
            var Q1 = SubMenu["Combo"].Add("Qmode", new Slider("Q 模式", 0, 0, 1));
            var Q2 = new[] { "智能", "鼠标位置" };

            Q1.DisplayName = Q2[Q1.CurrentValue];

            Q1.OnValueChange +=
                delegate(ValueBase <int> sender, ValueBase <int> .ValueChangeArgs changeArgs)
            {
                sender.DisplayName = Q2[changeArgs.NewValue];
            };
            SubMenu["Combo"].AddSeparator(10);
            SubMenu["Combo"].Add("E", new CheckBox("使用 E", true));
            SubMenu["Combo"].Add("ELast", new CheckBox("使用 E 击杀敌人", false));
            SubMenu["Combo"].Add("PushDistance", new Slider("E 推距离", 380, 300, 425));
            SubMenu["Combo"].Add("R", new CheckBox("使用 R", true));
            SubMenu["Combo"].Add("R2", new Slider("范围内敌人数量 X 时", 2, 0, 5));
            SubMenu["Combo"].Add("noaastealth", new CheckBox("隐身时不普攻", true));
            SubMenu["Combo"].Add("noaastealth2", new Slider("范围内敌人数量 X 时", 2, 0, 5));
            SubMenu["Combo"].AddSeparator(10);
            SubMenu["Combo"].AddGroupLabel("物品设置");
            SubMenu["Combo"].Add("useItems", new CheckBox("使用物品", true));
            SubMenu["Combo"].Add("myhp", new Slider("玩家生命低于X %时使用破败", 55, 0, 100));

            SubMenu["Harass"] = menu.AddSubMenu("骚扰", "Harass");
            SubMenu["Harass"].Add("Q", new CheckBox("使用 Q", true));
            SubMenu["Harass"].Add("E", new CheckBox("使用 E", true));

            SubMenu["LastHit"] = menu.AddSubMenu("尾兵", "LastHit");
            SubMenu["LastHit"].Add("Q", new CheckBox("使用 Q", true));
            SubMenu["LastHit"].Add("LastHitMana", new Slider("蓝量大于", 80, 0, 100));

            SubMenu["LaneClear"] = menu.AddSubMenu("清线", "LaneClear");
            SubMenu["LaneClear"].Add("Q", new CheckBox("使用 Q", true));
            SubMenu["LaneClear"].Add("LaneClearMana", new Slider("蓝量大于", 85, 0, 100));

            SubMenu["JungleClear"] = menu.AddSubMenu("清野", "JungleClear");
            SubMenu["JungleClear"].Add("E", new CheckBox("使用 E", true));
            SubMenu["JungleClear"].Add("JungleClearMana", new Slider("蓝量大于", 50, 0, 100));


            SubMenu["Misc"] = menu.AddSubMenu("杂项", "Misc");
            SubMenu["Misc"].AddGroupLabel("防突进/技能打断设置");
            SubMenu["Misc"].Add("UseEInterrupt", new CheckBox("使用E防突进/技能打断", true));
            SubMenu["Misc"].Add("AntiGapQ", new CheckBox("使用Q造成间距", true));
            SubMenu["Misc"].AddSeparator(10);
            foreach (var hero in EntityManager.Heroes.Enemies.Where(x => x.IsEnemy))
            {
                SubMenu["Misc"].Add(hero.ChampionName, new CheckBox("对英雄防突进/技能打断 " + hero.ChampionName, true));
            }
            SubMenu["Misc"].AddSeparator(10);
            foreach (var enemy in EntityManager.Heroes.Enemies.Where(x => x.IsEnemy))
            {
                SubMenu["Misc"].Add(enemy.ChampionName + "E", new CheckBox("对英雄使用E " + enemy.ChampionName, true));
            }
            SubMenu["Misc"].AddSeparator(10);
            SubMenu["Misc"].AddGroupLabel("优先攻击W目标");
            SubMenu["Misc"].Add("focusW", new CheckBox("优先攻击W目标触发3W", true));

            SubMenu["Misc"].Add("waypoint", new CheckBox("显示目标行径", true));

            SubMenu["Misc"].AddSeparator(10);
            SubMenu["Misc"].AddGroupLabel("治疗设置");
            SubMenu["Misc"].Add("heal", new CheckBox("使用治疗", true));
            SubMenu["Misc"].Add("hp", new Slider("生命低于", 25, 0, 100));

            SubMenu["QSS"] = menu.AddSubMenu("自动解控", "QSS");
            SubMenu["QSS"].AddGroupLabel("自动水银/米凯尔");
            SubMenu["QSS"].Add("use", new KeyBind("使用水银/米凯尔", false, KeyBind.BindTypes.PressToggle, 'K'));
            SubMenu["QSS"].Add("delay", new Slider("延迟施放设置", 1000, 0, 2000));

            buffs = new[]
            {
                BuffType.Blind, BuffType.Charm, BuffType.CombatDehancer, BuffType.Fear, BuffType.Flee, BuffType.Knockback,
                BuffType.Knockup, BuffType.Polymorph, BuffType.Silence, BuffType.Sleep, BuffType.Snare, BuffType.Stun,
                BuffType.Suppression, BuffType.Taunt, BuffType.Poison
            };

            for (int i = 0; i < buffs.Length; i++)
            {
                SubMenu["QSS"].Add(buffs[i].ToString(), new CheckBox(buffs[i].ToString(), true));
            }

            orbwalker = new Orbwalking.Orbwalker(menu);
            TargetSelector2.Initialize();
            Spell2.Initialize();
            Prediction2.Initialize();

            _traps = new List <GameObject>();

            Obj_AI_Base.OnProcessSpellCast += Obj_AI_Base_OnProcessSpellCast;
            Game.OnUpdate                      += Game_OnUpdate;
            Obj_AI_Base.OnSpellCast            += Obj_AI_Base_OnSpellCast;
            Obj_AI_Base.OnCreate               += Obj_AI_Base_OnCreate;
            Obj_AI_Base.OnDelete               += Obj_AI_Base_OnDelete;
            Orbwalking.AfterAttack             += Orbwalking_AfterAttack;
            Interrupter2.OnInterruptableTarget += Interrupter2_OnInterruptableTarget;
            AntiGapcloser.OnEnemyGapcloser     += AntiGapcloser_OnEnemyGapcloser;
            Drawing.OnDraw                     += Drawing_OnDraw;
            Player.OnIssueOrder                += Player_OnIssueOrder;
        }