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(); }
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(); }
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(); }