Exemplo n.º 1
0
        public bool AddRunebook(Mobile m, Runebook book, bool message)
        {
            if (m == null || m.Deleted || book == null || book.Deleted)
            {
                return(false);
            }

            bool mrb = Insensitive.Equals(book.GetType().Name, "InternalRunebook");

            if (book.Entries.Count == 0)
            {
                if (!mrb && message)
                {
                    m.SendMessage("That rune book is empty.");
                }

                return(false);
            }

            if (Entries.Count >= Entries.Capacity)
            {
                if (!mrb && message)
                {
                    m.SendMessage("The category \"{0}\" can't hold more runes.", _Name);
                }

                return(false);
            }

            if (Entries.Count + book.Entries.Count > Entries.Capacity)
            {
                if (!mrb && message)
                {
                    m.SendMessage("That rune book won't fit in the category \"{0}\".", _Name);
                }

                return(false);
            }

            var bEntries = new Queue <RunebookEntry>(book.Entries);

            Entries.ForEach(
                (x, y, e) =>
            {
                if (e != null || bEntries.Count <= 0)
                {
                    return;
                }

                var be = bEntries.Dequeue();

                Entries.SetContent(x, y, new RuneCodexEntry(book.Name, be.Description, be.Location.ToMapPoint(be.Map)));
            });

            if (mrb)
            {
                book.Entries.Clear();
                return(true);
            }

            book.Delete();

            if (message)
            {
                m.SendMessage("You add the rune book to the category \"{0}\".", _Name);
            }

            return(true);
        }