public void DoKnockback(MapObject target, UserMagic magic)//ElementalShot - knockback { Cell cell = CurrentMap.GetCell(target.CurrentLocation); if (!cell.Valid || cell.Objects == null) return; if (target.CurrentLocation.Y < 0 || target.CurrentLocation.Y >= CurrentMap.Height || target.CurrentLocation.X < 0 || target.CurrentLocation.X >= CurrentMap.Height) return; if (target.Race != ObjectType.Monster && target.Race != ObjectType.Player) return; if (!target.IsAttackTarget(this) || target.Level >= Level) return; if (Envir.Random.Next(20) >= 6 + magic.Level * 3 + ElementsLevel + Level - target.Level) return; int distance = 1 + Math.Max(0, magic.Level - 1) + Envir.Random.Next(2); MirDirection dir = Functions.DirectionFromPoint(CurrentLocation, target.CurrentLocation); target.Pushed(this, dir, distance); }