public override bool OnMoveOver(Mobile m)
        {
            if (m.AccessLevel > AccessLevel.Player)
            {
                return(true);
            }

            // If the mobile is to the north of the barrier, allow him to pass
            if (this.Y >= m.Y)
            {
                return(true);
            }

            if (m is BaseCreature)
            {
                Mobile master = ((BaseCreature)m).GetMaster();

                // Allow creatures to cross from the south to the north only if their master is near to the north
                if (master != null && this.Y >= master.Y && master.InRange(this, 4))
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }

            PlayerMobile pm = m as PlayerMobile;

            if (pm != null)
            {
                EminosUndertakingQuest qs = pm.Quest as EminosUndertakingQuest;

                if (qs != null)
                {
                    SneakPastGuardiansObjective obj = qs.FindObjective(typeof(SneakPastGuardiansObjective)) as SneakPastGuardiansObjective;

                    if (obj != null)
                    {
                        if (m.Hidden)
                        {
                            return(true);                            // Hidden ninjas can pass
                        }
                        if (!obj.TaughtHowToUseSkills)
                        {
                            obj.TaughtHowToUseSkills = true;
                            qs.AddConversation(new NeedToHideConversation());
                        }
                    }
                }
            }

            return(false);
        }