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); }