Пример #1
0
 public void castIgnite(AIHeroClient target)
 {
     if (ignite != SpellSlot.Unknown && sumBook.CanUseSpell(ignite) == SpellState.Ready)
     {
         sumBook.CastSpell(ignite, target);
     }
 }
Пример #2
0
        public void castIgnite(AIHeroClient target)
        {
//            SmoothMouse.addMouseEvent(target.Position);
            if (ignite != SpellSlot.Unknown && sumBook.CanUseSpell(ignite) == SpellState.Ready)
            {
                sumBook.CastSpell(ignite, target);
            }
        }
Пример #3
0
        void Spellbook_OnCastSpell(Spellbook sender, SpellbookCastSpellEventArgs args)
        {
            if (!IsActive())
            {
                return;
            }


            if (_latestSpellSlot != SpellSlot.Unknown && sender.Owner.IsMe && IsWard(sender, args))
            {
                _drawSpots = false;
                foreach (WardSpot wardSpot in WardSpots)
                {
                    if (!wardSpot.SafeWard &&
                        Vector3.Distance(wardSpot.Pos,
                                         new Vector3(args.StartPosition.X, args.StartPosition.Y, args.StartPosition.Z)) <= 250 &&
                        !_wardAlreadyCorrected)
                    {
                        args.Process          = false;
                        _wardAlreadyCorrected = true;
                        //SendPacket
                        //var sCastPacket = new byte[28];
                        //var writer = new BinaryWriter(new MemoryStream(sCastPacket));
                        //writer.Write((byte)0x9A);
                        //writer.Write(mNetworkId);
                        //writer.Write(spellId);
                        //writer.Write(unknown);
                        //writer.Write(wardSpot.Pos.X);
                        //writer.Write(wardSpot.Pos.Y);
                        //writer.Write(wardSpot.Pos.X);
                        //writer.Write(wardSpot.Pos.Y);
                        //writer.Write(tNetworkId);
                        //Game.SendPacket(sCastPacket, PacketChannel.C2S, PacketProtocolFlags.Reliable);
                        sender.CastSpell(
                            args.Slot,
                            new Vector3(
                                wardSpot.Pos.X, wardSpot.Pos.Y,
                                NavMesh.GetHeightForPosition(wardSpot.Pos.X, wardSpot.Pos.Y)));
                        //Packet.C2S.Cast.Encoded(new Packet.C2S.Cast.Struct(decoded.TargetNetworkId, decoded.Slot, decoded.SourceNetworkId,
                        //    wardSpot.Pos.X, wardSpot.Pos.Y, wardSpot.Pos.X, wardSpot.Pos.Y, decoded.SpellFlag)).Send();
                        //TODO: Check if its correct
                        _wardAlreadyCorrected = false;
                        return;
                    }
                    if (wardSpot.SafeWard &&
                        Vector3.Distance(wardSpot.MagneticPos,
                                         new Vector3(args.StartPosition.X, args.StartPosition.Y, args.StartPosition.Z)) <=
                        250 &&
                        !_wardAlreadyCorrected)
                    {
                        args.Process = false;
                        ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo,
                                                        new Vector3(wardSpot.MovePos.X, wardSpot.MovePos.Y, wardSpot.MovePos.Z));
                        _latestWardSpot = wardSpot;
                        return;
                    }
                }
            }
        }
Пример #4
0
        private void OnSpellbookCastSpell(Spellbook sender, SpellbookCastSpellEventArgs args)
        {
            try
            {
                if (sender == null || args == null || !sender.Owner.IsMe || !IsWardSlot(args.Slot))
                {
                    return;
                }

                var spot = GetNearestWardSpot(Game.CursorPos);
                if (spot.Equals(default(WardSpot)) || args.EndPosition.Equals(spot.ClickPosition))
                {
                    return;
                }

                if (!Menu.Item(Name + "Hotkey").IsActive() && !Menu.Item(Name + "PermaShow").GetValue <bool>() &&
                    args.EndPosition.Distance(spot.MagneticPosition) <=
                    Menu.Item(Name + "DrawingRadius").GetValue <Slider>().Value)
                {
                    args.Process  = false;
                    _lastWardSpot = default(WardSpot);
                }

                if (!Menu.Item(Name + "Hotkey").IsActive() && !Menu.Item(Name + "PermaShow").GetValue <bool>())
                {
                    return;
                }

                if (spot.SafeSpot)
                {
                    if (Game.CursorPos.Distance(spot.MagneticPosition) <=
                        Menu.Item(Name + "DrawingRadius").GetValue <Slider>().Value)
                    {
                        args.Process = false;
                        if (_lastWardSpot.Equals(default(WardSpot)))
                        {
                            _lastWardSpot = spot;
                            _lastWardSlot = args.Slot;
                            ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, spot.MovePosition);
                        }
                    }
                }
                else
                {
                    if (Game.CursorPos.Distance(spot.MagneticPosition) <=
                        Menu.Item(Name + "DrawingRadius").GetValue <Slider>().Value)
                    {
                        args.Process = false;
                        sender.CastSpell(args.Slot, spot.ClickPosition);
                    }
                }
            }
            catch (Exception ex)
            {
                Global.Logger.AddItem(new LogItem(ex));
            }
        }
Пример #5
0
    private IEnumerator Attack(int spellIndex) //called in CastSpell()
    {
        yield return(null);

        Spell   newSpell      = spellBook.CastSpell(spellIndex); //newSpell stores the chosen spell based on spellIndex
        float   saveSpeed     = speed;                           //Player Speed saved for casting animation slow down
        Vector2 currentTarget = MyTarget;                        //so changing myTarget wouldnt effect the Attack()



        // ----- ATTACK LOGIC ------
        if (!isAttacking)       //conditions for attacking
        {
            isAttacking = true; //for attack layer to be activated

            PlayerLookAtTarget();
            if (newSpell.MyStartAttackAnimation)           // ANIMATION CASE
            {
                speed = 2.5f;                              //Player Speed slowed
                myAnimator.SetBool("attack", isAttacking); //set attack to true
                if (newSpell.MyInstantInstantiate)         //if for Instantiate Before cooldown
                {
                    Instantiate(newSpell.MySpellPrefab, transform.position, Quaternion.identity);
                }
                yield return(new WaitForSeconds(newSpell.MyCastTime)); //do animation for the time of the spell

                speed = saveSpeed;                                     //speed back to normal after spell cast
            }



            AttackLogic(spellIndex, newSpell, currentTarget);

            StopAttack();
        }
    }
Пример #6
0
        void Spellbook_OnCastSpell(Spellbook sender, SpellbookCastSpellEventArgs args)
        {
            if (!IsActive())
                return;

            if (_latestSpellSlot != SpellSlot.Unknown && sender.Owner.IsMe && IsWard(sender, args))
            {
                _drawSpots = false;
                foreach (WardSpot wardSpot in WardSpots)
                {
                    if (!wardSpot.SafeWard &&
                        Vector3.Distance(wardSpot.Pos,
                            new Vector3(args.StartPosition.X, args.StartPosition.Y, args.StartPosition.Z)) <= 250 &&
                        !_wardAlreadyCorrected)
                    {
                        args.Process = false;
                        _wardAlreadyCorrected = true;
                        //SendPacket
                        //var sCastPacket = new byte[28];
                        //var writer = new BinaryWriter(new MemoryStream(sCastPacket));
                        //writer.Write((byte)0x9A);
                        //writer.Write(mNetworkId);
                        //writer.Write(spellId);
                        //writer.Write(unknown);
                        //writer.Write(wardSpot.Pos.X);
                        //writer.Write(wardSpot.Pos.Y);
                        //writer.Write(wardSpot.Pos.X);
                        //writer.Write(wardSpot.Pos.Y);
                        //writer.Write(tNetworkId);
                        //Game.SendPacket(sCastPacket, PacketChannel.C2S, PacketProtocolFlags.Reliable);
                        sender.CastSpell(
                            args.Slot,
                            new Vector3(
                                wardSpot.Pos.X, wardSpot.Pos.Y,
                                NavMesh.GetHeightForPosition(wardSpot.Pos.X, wardSpot.Pos.Y)));
                        //Packet.C2S.Cast.Encoded(new Packet.C2S.Cast.Struct(decoded.TargetNetworkId, decoded.Slot, decoded.SourceNetworkId,
                        //    wardSpot.Pos.X, wardSpot.Pos.Y, wardSpot.Pos.X, wardSpot.Pos.Y, decoded.SpellFlag)).Send();
                        //TODO: Check if its correct
                        _wardAlreadyCorrected = false;
                        return;
                    }
                    if (wardSpot.SafeWard &&
                        Vector3.Distance(wardSpot.MagneticPos,
                            new Vector3(args.StartPosition.X, args.StartPosition.Y, args.StartPosition.Z)) <=
                        250 &&
                        !_wardAlreadyCorrected)
                    {
                        args.Process = false;
                        ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo,
                            new Vector3(wardSpot.MovePos.X, wardSpot.MovePos.Y, wardSpot.MovePos.Z));
                        _latestWardSpot = wardSpot;
                        return;
                    }
                }
            }
        }
Пример #7
0
        /// <summary>
        ///     Called on postattack.
        /// </summary>
        /// <param name="args">The <see cref="OnPostAttackEventArgs" /> instance containing the event data.</param>
        private static void OnPostAttack(OnPostAttackEventArgs args)
        {
            if (!UtilityClass.Player.IsMelee || args.Target.IsStructure())
            {
                return;
            }

            var hydraItems = new[] { ItemID.TitanicHydra, ItemID.RavenousHydra, ItemID.Tiamat };

            if (MenuClass.Hydra != null)
            {
                var getFirstHydraItem =
                    LocalPlayer.Instance.InventorySlots.FirstOrDefault(i => hydraItems.Contains((ItemID)i.ItemID));
                if (getFirstHydraItem == null)
                {
                    return;
                }

                var hydra = LocalPlayer.Instance.GetItem((ItemID)getFirstHydraItem.ItemID);
                if (hydra != null)
                {
                    switch (Orbwalker.Mode)
                    {
                    case OrbwalkingMode.Combo:
                        if (!MenuClass.Hydra["combo"].Enabled)
                        {
                            return;
                        }

                        break;

                    case OrbwalkingMode.Harass:
                        if (!MenuClass.Hydra["mixed"].Enabled)
                        {
                            return;
                        }

                        break;

                    case OrbwalkingMode.LaneClear:
                        if (!MenuClass.Hydra["laneclear"].Enabled)
                        {
                            return;
                        }

                        break;

                    case OrbwalkingMode.LastHit:
                        if (!MenuClass.Hydra["lasthit"].Enabled)
                        {
                            return;
                        }

                        break;

                    default:
                        if (!MenuClass.Hydra["manual"].Enabled)
                        {
                            return;
                        }

                        break;
                    }

                    var hydraSpellSlot = hydra.Slot;
                    if (hydraSpellSlot != SpellSlot.Unknown &&
                        UtilityClass.Player.Spellbook.GetSpellState(hydraSpellSlot).HasFlag(SpellState.Ready))
                    {
                        Spellbook.CastSpell(hydraSpellSlot);
                    }
                }
            }
        }