public static bool UseSkill(Mobile from, int skillID) { if (!from.CheckAlive()) { return(false); } else if (!from.Region.OnSkillUse(from, skillID)) { return(false); } else if (!from.AllowSkillUse((SkillName)skillID)) { return(false); } if (skillID >= 0 && skillID < SkillInfo.Table.Length) { SkillInfo info = SkillInfo.Table[skillID]; if (info.Callback != null) { if (Core.TickCount - from.NextSkillTime >= 0 && from.Spell == null) { from.DisruptiveAction(); from.NextSkillTime = Core.TickCount + (int)(info.Callback(from)).TotalMilliseconds; return(true); } else { from.SendSkillMessage(); } } else { from.SendLocalizedMessage(500014); // That skill cannot be used directly. } } return(false); }