public override void Drink(Mobile from) { if (from.Hidden) { from.SendLocalizedMessage(1073185); // You are already unseen. return; } PlayDrinkEffect(from); this.Consume(); Point3D loc = from.Location; Timer.DelayCall(ComputeDelay(from), () => { if (loc != from.Location) { from.SendLocalizedMessage(1073187); // The invisibility effect is interrupted. } else { Effects.SendLocationParticles(EffectItem.Create(new Point3D(from.X, from.Y, from.Z + 16), from.Map, EffectItem.DefaultDuration), 0x376A, 10, 15, 5045); from.PlaySound(0x3C4); from.Hidden = true; from.Warmode = false; InvisibilitySpell.RemoveTimer(from); InvisibilitySpell.AddTimer(from, ComputeDuration(from)); } }); }