private IEnumerable<int> GetRemovedEntities()
{
foreach (Entity i in clientEntities.Where(i => i is Player))
{
if ((i as Player).isNotVisible && i != this && !PvP)
{
yield return i.Id;
}
if (i is Player && i.Owner != null) continue;
if (MathsUtils.DistSqr(i.X, i.Y, X, Y) > SIGHTRADIUS * SIGHTRADIUS &&
!(i is StaticObject && (i as StaticObject).Static) &&
i != Quest)
{
if (i is Pet) continue;
yield return i.Id;
}
else if (i.Owner == null)
yield return i.Id;
if ((i as Player).isNotVisible && i != this && !PvP)
yield return i.Id;
}
}

internal class VanishCommand : Command
{
public VanishCommand()
: base("vanish", 1)
{
}
protected override bool Process(Player player, RealmTime time, string[] args)
{
if (!player.isNotVisible)
{
player.isNotVisible = true;
player.Owner.PlayersCollision.Remove(player);
if (player.Pet != null)
player.Owner.LeaveWorld(player.Pet);
player.ApplyConditionEffect(new ConditionEffect
{
Effect = ConditionEffectIndex.Invincible,
DurationMS = -1
});
player.ApplyConditionEffect(new ConditionEffect
{
Effect = ConditionEffectIndex.Invisible,
DurationMS = -1
});
player.SendInfo("You're now hidden from all players!");
return true;
}
player.isNotVisible = false;
player.ApplyConditionEffect(new ConditionEffect
{
Effect = ConditionEffectIndex.Invincible,
DurationMS = 0
});
player.ApplyConditionEffect(new ConditionEffect
{
Effect = ConditionEffectIndex.Invisible,
DurationMS = 0
});
player.SendInfo("You're now visible to all players!");
return true;
}
}