Ejemplo n.º 1
0
        void TryCastPush(JToken parsed)
        {
            if (Entity.SpellCooldowns.ContainsKey(SpellFactory.PUSH_INDEX))
            {
                return;
            }

            var currWorld = Program.State.World;
            var currEnt   = currWorld.GetByID(Entity.ID);

            if (!ManaCheck(currEnt, SpellFactory.PUSH_MANA))
            {
                return;
            }
            Entity targetEnt;

            if (!TryGetTargetFromPosition(parsed[2], currWorld, out targetEnt))
            {
                return;
            }
            if (targetEnt.Team == currEnt.Team)
            {
                return;
            }
            if (!SpellFactory.CheckRange(currEnt, targetEnt, SpellFactory.PUSH_RANGE))
            {
                return;
            }

            var mut = new EntityCastSpellMutation(Entity.ID, SpellFactory.CreatePush(targetEnt.ID));

            Program.QueuedMutations[mut.Time].Enqueue(mut);
            _CastingSpell = true;
            UpdateVelocity();
        }
Ejemplo n.º 2
0
        void TryCastHealingStrike(JToken parsed)
        {
            if (Entity.SpellCooldowns.ContainsKey(SpellFactory.HEALING_STRIKE_INDEX))
            {
                return;
            }

            var currWorld = Program.State.World;
            var currEnt   = currWorld.GetByID(Entity.ID);

            if (!ManaCheck(currEnt, SpellFactory.HEALING_STRIKE_MANA))
            {
                return;
            }
            Vector2 target = new Vector2((float)parsed[2]["x"], (float)parsed[2]["y"]);
            var     mind   = Polygon2.MinDistance(currEnt.Attributes.Bounds, currEnt.Location, target);

            if (mind != null && mind.Item2 > SpellFactory.HEALING_STRIKE_RANGE)
            {
                return;
            }

            var mut = new EntityCastSpellMutation(Entity.ID, SpellFactory.CreateHealingStrike(target));

            Program.QueuedMutations[mut.Time].Enqueue(mut);
            _CastingSpell = true;
            UpdateVelocity();
        }
Ejemplo n.º 3
0
        void TryCastBlock(JToken parsed)
        {
            if (Entity.SpellCooldowns.ContainsKey(SpellFactory.BLOCK_INDEX))
            {
                return;
            }

            var currWorld = Program.State.World;
            var currEnt   = currWorld.GetByID(Entity.ID);

            if (!ManaCheck(currEnt, SpellFactory.BLOCK_MANA))
            {
                return;
            }

            var mut = new EntityCastSpellMutation(Entity.ID, SpellFactory.CreateBlock());

            Program.QueuedMutations[mut.Time].Enqueue(mut);
            _CastingSpell = true;
            UpdateVelocity();
        }