Exemplo n.º 1
0
        /// <summary>
        ///     Gets the spell.
        /// </summary>
        /// <param name="entry">The entry.</param>
        /// <returns></returns>
        public static Spell GetSpell(this SpellDatabaseEntry entry)
        {
            var spell = new Spell(entry.Slot);

            spell.SetSkillshot(spell.Delay / 1000, spell.Width, spell.Speed, spell.Collision, spell.Type);

            return(spell);
        }
Exemplo n.º 2
0
 /// <summary>
 ///     Gets the prediction.
 /// </summary>
 /// <param name="target">The target.</param>
 /// <param name="spell">The spell.</param>
 /// <param name="source">The source.</param>
 /// <returns>
 ///     <see cref="BakedCupcake" />
 /// </returns>
 public BakedCupcake GetPrediction(Obj_AI_Base target, SpellDatabaseEntry spell, Obj_AI_Hero source = null)
 {
     return(this.GetPrediction(
                target,
                spell.Range,
                spell.Delay / 1000f,
                spell.MissileSpeed,
                spell.SpellType == SpellType.SkillshotCircle ? spell.Radius : spell.Width,
                spell.CollisionObjects.Any(
                    x => x != CollisionableObjects.YasuoWall || x != CollisionableObjects.BraumShield),
                source));
 }
Exemplo n.º 3
0
        public static Spell CreateSpell(this SpellDatabaseEntry entry)
        {
            try
            {
                var s         = new Spell(entry.Slot, entry.Range);
                var collision = entry.CollisionObjects.Length > 1;
                var type      = entry.SpellType.GetSkillshotType();

                s.SetSkillshot(entry.Delay, entry.Width, entry.MissileSpeed, collision, type);
                return(s);
            }
            catch
            {
                return(new Spell(SpellSlot.Unknown));
            }
        }
Exemplo n.º 4
0
        public static bool IsCurrentSpell(this SpellDatabaseEntry entry)
        {
            var spell = ObjectManager.Player.Spellbook.GetSpell(entry.Slot);

            return(string.Equals(spell.Name, entry.SpellName, StringComparison.CurrentCultureIgnoreCase));
        }
Exemplo n.º 5
0
        /// <summary>
        /// Uses the spell.
        /// </summary>
        /// <param name="entry">The entry.</param>
        /// <param name="mode">The mode.</param>
        /// <exception cref="System.ArgumentOutOfRangeException"></exception>
        public void UseSpell(SpellDatabaseEntry entry, Orbwalking.OrbwalkingMode mode)
        {
            var spell    = entry.GetSpell();
            var castType = entry.CastType.First();

            // Disable activated abilites
            if (mode == Orbwalking.OrbwalkingMode.None)
            {
                if (castType == CastType.Activate || castType == CastType.Toggle)
                {
                    entry.GetSpell().Cast();
                }

                return;
            }

            switch (castType)
            {
            case CastType.EnemyChampions:
                if (mode == Orbwalking.OrbwalkingMode.Combo)
                {
                    spell.Cast(TargetSelector.GetTarget(spell.Range, TargetSelector.DamageType.True));
                }

                break;

            case CastType.EnemyMinions:
                if (mode == Orbwalking.OrbwalkingMode.LaneClear)
                {
                    var position =
                        MinionManager.GetBestLineFarmLocation(
                            MinionManager.GetMinions(spell.Range).Select(x => x.ServerPosition.To2D()).ToList(),
                            spell.Width,
                            spell.Range);

                    if (position.MinionsHit > 2)
                    {
                        spell.Cast(position.Position);
                    }
                }
                break;

            case CastType.EnemyTurrets:
                spell.Cast(
                    ObjectManager.Get <Obj_AI_Turret>()
                    .Where(x => x.IsEnemy && !x.IsDead && x.IsValid)
                    .OrderBy(x => x.Distance(ObjectManager.Player))
                    .FirstOrDefault());
                break;

            case CastType.AllyChampions:
                spell.Cast(
                    HeroManager.Allies.Where(x => x.IsValidTarget(spell.Range, false))
                    .OrderBy(x => x.Distance(ObjectManager.Player))
                    .FirstOrDefault());
                break;

            case CastType.AllyMinions:
                spell.Cast(MinionManager.GetMinions(spell.Range, MinionTypes.All, MinionTeam.Ally).FirstOrDefault());
                break;

            case CastType.AllyTurrets:
                spell.Cast(
                    ObjectManager.Get <Obj_AI_Turret>()
                    .Where(x => x.IsAlly && !x.IsDead && x.IsValid)
                    .OrderBy(x => x.Distance(ObjectManager.Player))
                    .FirstOrDefault());
                break;

            case CastType.HeroPets:
                // todo REKSAI
                break;

            case CastType.Position:
                spell.Cast(TargetSelector.GetTarget(spell.Range, TargetSelector.DamageType.True));
                break;

            case CastType.Direction:
                spell.Cast(TargetSelector.GetTarget(spell.Range, TargetSelector.DamageType.True));
                break;

            case CastType.Self:
                spell.Cast();
                break;

            case CastType.Charging:
                spell.Cast();
                break;

            case CastType.Toggle:
                spell.Cast();
                break;

            case CastType.Activate:
                spell.Cast();
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }