Inheritance: Item, ISecurable, ICraftable
Exemple #1
0
            protected override void OnTarget(Mobile from, object targ)
            {
                if (targ is Runebook)
                {
                    Runebook book = targ as Runebook;

                    if (!book.IsChildOf(from.Backpack))
                    {
                        from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
                    }
                    else if (book == m_SourceBook)
                    {
                        from.SendLocalizedMessage(1115360); // You can't select the same runebook!
                    }
                    else if (book.Openers.Count != 0)
                    {
                        from.SendLocalizedMessage(1115361); // Someone else is using this runebook.
                    }
                    else
                    {
                        if (!from.HasGump(typeof(PenOfWisdomGump)))
                        {
                            from.SendGump(new PenOfWisdomGump(from, m_Pen, m_SourceBook, book, null));
                        }
                    }
                }
                else
                {
                    from.SendLocalizedMessage(1115333); // This item only works on runebooks or runic atlas.
                }
            }
Exemple #2
0
            protected override void OnTarget(Mobile from, object targ)
            {
                if (targ is Runebook || targ is RunicAtlas)
                {
                    Runebook book = targ as Runebook;

                    if (!book.IsChildOf(from.Backpack) && book.Movable)
                    {
                        from.SendLocalizedMessage(1115329); // Runebooks you wish to copy must be in your backpack.
                    }
                    else if (!Pen.CheckAccess(from, book) && !book.Movable)
                    {
                        from.SendLocalizedMessage(1115332); // Only the house owner and co-owners can copy the lockdowned runebook with the Pen.
                    }
                    else if (book.Entries.Count == 0)
                    {
                        from.SendLocalizedMessage(1115362); // Can't copy an empty runebook.
                    }
                    else if (book.Openers.Count != 0)
                    {
                        from.SendLocalizedMessage(1115361); // Someone else is using this runebook.
                    }
                    else
                    {
                        from.SendLocalizedMessage(1115363); // Please select the destination runebook.
                        from.Target = new CopyTarget(Pen, book);
                    }
                }
                else
                {
                    from.SendLocalizedMessage(1115333); // This item only works on runebooks or runic atlas.
                }
            }
 public GateTravelSpell(Mobile caster, Item scroll, RunebookEntry entry, Runebook book)
     : base(caster, scroll, m_Info)
 {
     m_Entry = entry;
     m_Book = book;
     m_Scroll = scroll;
 }
Exemple #4
0
        private static Item CreateStarterRunebook()
        {
            Runebook book = new Runebook();

            book.CurCharges = book.MaxCharges = 20;

            book.AddEntry(CreateRunebookEntry("New Haven Bank", new Point3D(3487, 2572, 21), Map.Trammel));
            book.AddEntry(CreateRunebookEntry("Britain Bank", new Point3D(1428, 1693, 0), Map.Trammel));
            book.AddEntry(CreateRunebookEntry("Luna Bank", new Point3D(983, 515, -50), Map.Malas));
            book.AddEntry(CreateRunebookEntry("Umbra Bank", new Point3D(2045, 1342, -85), Map.Malas));
            book.AddEntry(CreateRunebookEntry("Change Tokuno Arties", new Point3D(678, 1275, 48), Map.Tokuno));
            book.AddEntry(CreateRunebookEntry("Taming: Trinsic Area", new Point3D(2103, 2794, 5), Map.Trammel));
            book.AddEntry(CreateRunebookEntry("Taming: Bulls Delucia", new Point3D(5208, 3952, 37), Map.Trammel));
            book.AddEntry(CreateRunebookEntry("Minoc Mines", new Point3D(2558, 503, 0), Map.Trammel));
            book.AddEntry(CreateRunebookEntry("Easy: Old Haven", new Point3D(3637, 2499, 0), Map.Trammel));
            book.AddEntry(CreateRunebookEntry("Easy: New Haven Mine", new Point3D(3511, 2778, 27), Map.Trammel));
            book.AddEntry(CreateRunebookEntry("Medium: Red Solen Hive", new Point3D(2611, 762, 0), Map.Trammel));
            book.AddEntry(CreateRunebookEntry("Medium: Black Solen Hive", new Point3D(1458, 988, 0), Map.Trammel));
            book.AddEntry(CreateRunebookEntry("Medium: Covetous", new Point3D(2499, 918, 0), Map.Trammel));
            book.AddEntry(CreateRunebookEntry("Medium: Britain Graveyard", new Point3D(1385, 1496, 10), Map.Trammel));
            book.AddEntry(CreateRunebookEntry("Hard: Hythloth", new Point3D(4722, 3823, 0), Map.Trammel));
            book.AddEntry(CreateRunebookEntry("Stygian Abyss: Underworld", new Point3D(4194, 3268, 0), Map.Trammel));

            return(book);
        }
Exemple #5
0
        public bool CheckAccess(Mobile m, Runebook book)
        {
            if (!book.IsLockedDown || m.AccessLevel >= AccessLevel.GameMaster)
            {
                return(true);
            }

            BaseHouse house = BaseHouse.FindHouseAt(book);

            return(house != null && house.IsCoOwner(m));
        }
Exemple #6
0
        public override void OnAfterDuped(Item newItem)
        {
            Runebook book = newItem as Runebook;

            if (book == null)
                return;

            book.m_Entries = new List<RunebookEntry>();

            for (int i = 0; i < this.m_Entries.Count; i++)
            {
                RunebookEntry entry = this.m_Entries[i];

                book.m_Entries.Add(new RunebookEntry(entry.Location, entry.Map, entry.Description, entry.House));
            }
        }
Exemple #7
0
        public override void OnAfterDuped(Item newItem)
        {
            Runebook book = newItem as Runebook;

            if (book == null)
            {
                return;
            }

            book.m_Entries = new List <RunebookEntry>();            //Currently, when duping, it just copies over the ref over the already made blank ArrayList

            for (int i = 0; i < m_Entries.Count; i++)
            {
                RunebookEntry entry = m_Entries[i];

                book.m_Entries.Add(new RunebookEntry(entry.Location, entry.Map, entry.Description, entry.House));
            }
        }
        public RunebookSellingGump(Runebook book)
            : base(0, 0)
        {
            this.Dragable = false;
            this.Closable = true;

            if (book == null) return;

            AddPage(0);
            this.AddBackground(0, 0,520, 420, 5170); 
            int penY = 25;
            int penX = 125;
            int textHeight = 20;
            AddLabel(penX, penY, 38, "Runes in this Runebook");
            penY += textHeight + 5;
            penX = 30;

            if (book.Entries == null || book.Entries.Count == 0)
            {
                AddLabel(penX, penY, 0, "This is an empty runebook...");
                return;
            }

            AddLabel(penX, penY, 38, "  Map      Region        Coordinates            Description");
            penY += textHeight;
            foreach (RunebookEntry entry in book.Entries)
            {
                if (entry.Map == null) continue;

                Region region = Region.Find(entry.Location, entry.Map);
                AddLabel(penX, penY, 0, entry.Map.Name);
                penX = 95;
                if (region != null)  AddLabel(penX, penY, 0,  region.Name);
                penX = 200;
                AddLabel(penX, penY, 0, UberScriptFunctions.Methods.SEXTANTCOORDS(null, entry.Location, entry.Map));
                penX = 340;
                AddLabel(penX, penY, 0, entry.Description);

                penY += textHeight;
                penX = 30;
            }
        }
Exemple #9
0
        public override Item Dupe(int amount)
        {
            Runebook book = new Runebook();

            book.m_Level        = m_Level;
            book.m_CurCharges   = m_CurCharges;
            book.m_MaxCharges   = m_MaxCharges;
            book.m_DefaultIndex = m_DefaultIndex;
            book.m_Description  = m_Description;
            book.m_Level        = m_Level;
            book.LootType       = this.LootType;

            for (int i = 0; i < m_Entries.Count; i++)
            {
                RunebookEntry entry = m_Entries[i] as RunebookEntry;

                book.m_Entries.Add(new RunebookEntry(entry.Location, entry.Map, entry.Description, entry.House));
            }

            return(base.Dupe(book, amount));
        }
Exemple #10
0
        public RunebookGump( Mobile from, Runebook book )
            : base(150, 200)
        {
            m_Book = book;

            AddBackground();
            AddIndex();

            for ( int page = 0; page < 8; ++page )
            {
                AddPage( 2 + page );

                AddButton( 125, 14, 2205, 2205, 0, GumpButtonType.Page, 1 + page );

                if ( page < 7 )
                    AddButton( 393, 14, 2206, 2206, 0, GumpButtonType.Page, 3 + page );

                for ( int half = 0; half < 2; ++half )
                    AddDetails( (page * 2) + half, half );
            }
        }
        protected override void OnTarget(Mobile from, object target)           // Override the protected OnTarget() for our feature
        {
            if (m_Deed.Deleted || m_Deed.RootParent != from)
            {
                return;
            }

            if (target is Runebook)
            {
                Runebook item = (Runebook)target;

                if (item.LootType == LootType.Blessed || item.BlessedFor == from || (Mobile.InsuranceEnabled && item.Insured)) // Check if its already newbied (blessed)
                {
                    from.SendLocalizedMessage(1045113);                                                                        // That item is already blessed
                }
                else if (item.LootType != LootType.Regular)
                {
                    from.SendLocalizedMessage(1045114);                       // You can not bless that item
                }
                else if (item.RootParent != from)
                {
                    from.SendLocalizedMessage(500509);                       // You cannot bless that object
                }
                else
                {
                    item.LootType = LootType.Blessed;
                    from.SendLocalizedMessage(1010026);  // You bless the item....

                    m_Deed.Delete();                     // Delete the bless deed
                }
            }
            else
            {
                from.SendLocalizedMessage(500509);                   // You cannot bless that object
            }
        }
Exemple #12
0
        public PenOfWisdomGump(Mobile from, PenOfWisdom pen, Runebook sourcebook, Runebook copybook, List <RunebookEntry> list) : base(50, 50)
        {
            Container bp = from.Backpack;

            m_Pen              = pen;
            m_SourceBook       = sourcebook;
            m_CopyBook         = copybook;
            m_MarkScrollAmount = bp.GetAmount(typeof(MarkScroll), true);
            m_RuneAmount       = bp.GetAmount(typeof(RecallRune), true);
            m_Blank            = copybook.MaxEntries - copybook.Entries.Count;

            if (list == null)
            {
                m_Checked = new List <RunebookEntry>();
            }
            else
            {
                m_Checked = list;
            }

            Closable   = false;
            Disposable = true;
            Dragable   = true;

            AddPage(0);
            AddBackground(4, 39, 391, 313, 9200);
            AddImageTiled(8, 45, 380, 53, 2624);
            AddHtmlLocalized(7, 50, 380, 53, 1115428, String.Format("{0}\t{1}\t{2}\t{3}", m_MarkScrollAmount.ToString(), m_RuneAmount.ToString(), m_Checked.Count, m_Blank.ToString()), 0xFFFFFF, false, false); // <CENTER>Pen of Wisdom<br>(Mark Scrolls: ~1_VAL~, Runes: ~2_VAL~ | Selected: ~3_VAL~, Blank: ~4_VAL~)</CENTER>

            AddImageTiled(8, 101, 188, 220, 2624);
            AddImageTiled(199, 101, 188, 220, 2624);
            AddButton(12, 325, 4017, 4018, 20, GumpButtonType.Reply, 0);
            AddLabel(48, 325, 2100, @"Cancel");
            AddButton(153, 325, 4011, 4012, 21, GumpButtonType.Reply, 0);
            AddHtmlLocalized(189, 325, 78, 22, 1115427, 0xFFFFFF, false, false); // Select All
            AddButton(309, 325, 4023, 4024, 22, GumpButtonType.Reply, 0);
            AddLabel(344, 325, 2100, @"Okay");

            string description;

            for (int i = 0; i < sourcebook.Entries.Count; i++)
            {
                description = sourcebook.Entries[i].Description;

                if (description == null)
                {
                    if (i + 1 < 10)
                    {
                        description = "0" + (i + 1).ToString();
                    }
                    else
                    {
                        description = (i + 1).ToString();
                    }
                }

                if (i < 8)
                {
                    AddButton(15, 110 + i * 25, m_Checked.Contains(sourcebook.Entries[i]) ? 211 : 210, m_Checked.Contains(sourcebook.Entries[i]) ? 210 : 211, i, GumpButtonType.Reply, 0);
                    AddLabel(45, 110 + i * 25, RunebookGump.GetMapHue(sourcebook.Entries[i].Map), String.Format("{0}", description));
                }
                else
                {
                    AddButton(205, 110 + ((i - 8) * 25), m_Checked.Contains(sourcebook.Entries[i]) ? 211 : 210, m_Checked.Contains(sourcebook.Entries[i]) ? 210 : 211, i, GumpButtonType.Reply, 0);
                    AddLabel(235, 110 + ((i - 8) * 25), RunebookGump.GetMapHue(sourcebook.Entries[i].Map), String.Format("{0}", description));
                }
            }
        }
Exemple #13
0
            public InternalTimer(Spell spell, Mobile caster, Point3D location, Runebook book)
                : base(TimeSpan.FromSeconds(0.75))
            {
                m_Spell = spell;
                m_Caster = caster;
                m_Location = location;
                m_Book = book;

                Priority = TimerPriority.FiftyMS;
            }
Exemple #14
0
        public override Item Dupe( int amount )
        {
            Runebook book = new Runebook();

            book.m_Level = m_Level;
            book.m_CurCharges = m_CurCharges;
            book.m_MaxCharges = m_MaxCharges;
            book.m_DefaultIndex = m_DefaultIndex;
            book.m_Description = m_Description;
            book.m_Level = m_Level;
            book.LootType = this.LootType;

            for( int i = 0; i < m_Entries.Count; i++ )
            {
                RunebookEntry entry = m_Entries[i] as RunebookEntry;

                book.m_Entries.Add( new RunebookEntry( entry.Location, entry.Map, entry.Description, entry.House ) );
            }

            return base.Dupe( book, amount );
        }
Exemple #15
0
		public RecallSpell( Mobile caster, Item scroll, RunebookEntry entry, Runebook book ) : base( caster, scroll, m_Info )
		{
			m_Entry = entry;
			m_Book = book;
		}
		private void DisplayBookLocations(Runebook runebook)
		{

			if (runebook == null)
				return;

			for (int i = 0; i < runebook.Entries.Count; i++)
			{
				RunebookEntry entry = runebook.Entries[i] as RunebookEntry;
				string locationtext = entry.Description;
				if (locationtext == null || locationtext.Length < 1)
					locationtext = String.Format("({0}, {1}, {2})", entry.Location.X, entry.Location.Y, entry.Location.Z);
				string[] keywordargs = ParseString(locationtext, 15, ":");
				//Console.WriteLine("Args={0}", keywordargs.Length);
				string runesecurity = null;
				if (keywordargs != null && keywordargs.Length > 1)
				{
					locationtext = keywordargs[0];
					runesecurity = keywordargs[1];
				}
				if (locationtext.Length > 25)
					locationtext = locationtext.Substring(0, 25);
				if (AccessAllowed(runesecurity, m_Mobile))
				{
					AddRadio(210, 35 + (i * 25), 210, 211, false, m_selected * 1000 + i);
					AddLabel(235, 35 + (i * 25), MapHues[entry.Map.MapIndex], locationtext);
				}
				else
					AddLabel(235, 35 + (i * 25), 0, "--Not Accessable--");
			}
		}
 public RangerPhoenixFlightSpell( Mobile caster, Item scroll, RunebookEntry entry, Runebook book )
     : base(caster, scroll, m_Info)
 {
     m_Entry = entry;
     m_Book = book;
 }
        public StarterBagMageGargoyle()
        {
            Container cont;
            this.Name = "Starter Bag - Mage";

            cont = new Bag();
            cont.Name = "PowerScrolls Bag";
            // Power Scrolls
            PlaceItemIn(cont, 30, 35, new PowerScroll(SkillName.Meditation, 105));
            PlaceItemIn(cont, 60, 35, new PowerScroll(SkillName.Magery, 105));
            PlaceItemIn(cont, 90, 35, new PowerScroll(SkillName.EvalInt, 105));
            PlaceItemIn(cont, 30, 68, new PowerScroll(SkillName.Necromancy, 105));
            PlaceItemIn(cont, 45, 68, new PowerScroll(SkillName.SpiritSpeak, 105));
            PlaceItemIn(this, 0, 0, cont);
            for (int i = 0; i < cont.Items.Count; i++)
            {
                cont.Items[i].LootType = LootType.Blessed;
            }

            cont = new Bag();
            cont.Name = "Gear Bag";
            // Armor
            PlaceItemIn(cont, 30, 35, new GargishLeatherArms());
            PlaceItemIn(cont, 30, 68, new GargishLeatherChest());
            PlaceItemIn(cont, 45, 68, new GargishLeatherKilt());
            PlaceItemIn(cont, 45, 68, new GargishPlateWingArmor());
            PlaceItemIn(cont, 45, 68, new GargishRobe());
            // Jewelry
            PlaceItemIn(cont, 90, 68, new GargishNecklace());
            PlaceItemIn(cont, 30, 118, new GargishEarrings());
            PlaceItemIn(cont, 60, 118, new GargishRing());
            PlaceItemIn(cont, 90, 100, new GargishBracelet());
            PlaceItemIn(this, 50, 0, cont);
            for (int i = 0; i < cont.Items.Count; i++)
            {
                BaseArmor armor = cont.Items[i] as BaseArmor;
                BaseJewel jewel = cont.Items[i] as BaseJewel;
                BaseClothing clothes = cont.Items[i] as BaseClothing;
                if (armor != null)
                {
                    armor.Attributes.LowerRegCost = 12;
                    armor.Hue = 1154;
                    armor.Insured = false;
                    armor.TimesImbued = 50;
                    armor.LootType = LootType.Blessed;
                    armor.Weight = 0;             
                }
                else if (jewel != null)
                {
                    jewel.Attributes.LowerRegCost = 12;
                    jewel.Attributes.RegenMana = 1;
                    jewel.Hue = 1152;
                    jewel.Insured = false;
                    jewel.TimesImbued = 50;
                    jewel.LootType = LootType.Blessed;
                }
                else if (clothes != null)
                {
                    clothes.Attributes.LowerRegCost = 12;
                    clothes.LootType = LootType.Blessed;
                    clothes.TimesImbued = 50;
                }
            }

            cont = new Bag();
            cont.Name = "Book Bag";
            PlaceItemIn(cont, 30, 35, new Spellbook());
            PlaceItemIn(cont, 60, 35, new NecromancerSpellbook());
            Runebook runebook = new Runebook(5);
            runebook.CurCharges = runebook.MaxCharges;
            PlaceItemIn(cont, 90, 35, runebook);
            for (int i = 0; i < 3; ++i)
                PlaceItemIn(cont, 45 + (i * 10), 75, new RecallRune());
            PlaceItemIn(this, 100, 0, cont);
            for (int i = 0; i < cont.Items.Count; i++)
            {
                Spellbook spellBook = cont.Items[i] as Spellbook;

                if (spellBook != null)
                {
                    spellBook.SkillBonuses.SetValues(0, SkillName.Meditation, 100);
                    spellBook.Attributes.CastSpeed = 1;
                    spellBook.Hue = 1152;
                }
            }
        }
Exemple #19
0
        public static void GetListOfItems(Mobile from)
        {
            //List of Item Locations Message
            //***Put item into Backpack
            #region Backpack
            from.SendMessage("You will find new items in your Backpack.");
            from.Backpack.AddItem(new KillBook());                          //http://www.runuo.com/forums/custom-script-releases/80034-book-kills.html
            from.Backpack.AddItem(new AnNoxGuideBook());
            #endregion

            //***Drop item on the Ground
            #region Ground
            //put item under player on the ground
            from.SendMessage("You will find new items on the ground near by.");
            new SewingKit().MoveToWorld(from.Location, from.Map);
            new Bible().MoveToWorld(from.Location, from.Map);               //http://www.runuo.com/forums/custom-script-releases/71826-runuo-2-0-rc1-lokais-xml-bible-system.html
            new BeltranGuideBook().MoveToWorld(from.Location, from.Map);    //http://www.runuo.com/forums/runuo-post-archive/34074-osi-library-books.html
            new PrimerArmsBook().MoveToWorld(from.Location, from.Map);      //http://www.runuo.com/forums/runuo-post-archive/34074-osi-library-books.html

            //put item near player on the ground
            new BagOfDresses().MoveToWorld(new Point3D(from.X + Utility.RandomMinMax(-5, 5), from.Y + Utility.RandomMinMax(-5, 5), from.Z), from.Map);
            new BagOfJewlery().MoveToWorld(new Point3D(from.X + Utility.RandomMinMax(-5, 5), from.Y + Utility.RandomMinMax(-5, 5), from.Z), from.Map);
            new BagOfShirts().MoveToWorld(new Point3D(from.X + Utility.RandomMinMax(-5, 5), from.Y + Utility.RandomMinMax(-5, 5), from.Z), from.Map);
            new BagOfPants().MoveToWorld(new Point3D(from.X + Utility.RandomMinMax(-5, 5), from.Y + Utility.RandomMinMax(-5, 5), from.Z), from.Map);
            new BagOfShoes().MoveToWorld(new Point3D(from.X + Utility.RandomMinMax(-5, 5), from.Y + Utility.RandomMinMax(-5, 5), from.Z), from.Map);
            new BagOfCloaks().MoveToWorld(new Point3D(from.X + Utility.RandomMinMax(-5, 5), from.Y + Utility.RandomMinMax(-5, 5), from.Z), from.Map);
            new BagOfHats().MoveToWorld(new Point3D(from.X + Utility.RandomMinMax(-5, 5), from.Y + Utility.RandomMinMax(-5, 5), from.Z), from.Map);
            #endregion

            //***Put item into Bank
            #region Bank
            from.SendMessage("You will find new items in your Bank.");
            BankBox   bank = from.BankBox;
            Container cont;

            // Begin box of money
            cont        = new WoodenBox();
            cont.Name   = "Money Box";
            cont.ItemID = 0xE7D;
            cont.Hue    = 0x489;

            PlaceItemIn(cont, 64, 51, new BankCheck(5000));
            PlaceItemIn(cont, 16, 115, new Factions.Silver(1000));
            PlaceItemIn(cont, 34, 115, new Gold(1000));

            PlaceItemIn(bank, 18, 169, cont);

            // Begin bag of archery ammo
            cont      = new Bag();
            cont.Name = "Bag Of Archery Ammo";

            PlaceItemIn(cont, 48, 76, new Arrow(50));
            PlaceItemIn(cont, 72, 76, new Bolt(50));

            PlaceItemIn(bank, 118, 124, cont);

            // Begin bag of raw materials
            cont      = new Bag();
            cont.Hue  = 0x835;
            cont.Name = "Raw Materials Bag";

            PlaceItemIn(cont, 92, 84, new Leather(50));
            PlaceItemIn(cont, 30, 118, new Cloth(50));
            PlaceItemIn(cont, 30, 84, new Board(50));
            PlaceItemIn(cont, 57, 80, new BlankScroll(50));

            PlaceItemIn(bank, 98, 169, cont);

            // Begin bag of spell casting stuff
            cont      = new Backpack();
            cont.Hue  = 0x480;
            cont.Name = "Spell Casting Stuff";

            PlaceItemIn(cont, 45, 105, new Spellbook(UInt64.MaxValue));
            PlaceItemIn(cont, 65, 105, new NecromancerSpellbook((UInt64)0xFFFF));
            PlaceItemIn(cont, 85, 105, new BookOfChivalry((UInt64)0x3FF));
            PlaceItemIn(cont, 105, 105, new BookOfBushido());  //Default ctor = full
            PlaceItemIn(cont, 125, 105, new BookOfNinjitsu()); //Default ctor = full

            Runebook runebook = new Runebook(10);
            runebook.CurCharges = runebook.MaxCharges;
            PlaceItemIn(cont, 145, 105, runebook);

            Item toHue = new BagOfReagents(50);
            toHue.Hue  = 0x2D;
            toHue.Name = "Bag of Basic Reagents";
            PlaceItemIn(cont, 45, 150, toHue);

            toHue      = new BagOfNecroReagents(50);
            toHue.Hue  = 0x488;
            toHue.Name = "Bag of Necro Reagents";
            PlaceItemIn(cont, 65, 150, toHue);

            toHue      = new BagOfAllReagents(50);
            toHue.Hue  = 0x2D;
            toHue.Name = "Bag of All Reagents";
            PlaceItemIn(cont, 140, 150, toHue);

            for (int i = 0; i < 9; ++i)
            {
                PlaceItemIn(cont, 45 + (i * 10), 75, new RecallRune());
            }

            PlaceItemIn(cont, 141, 74, new FireHorn());

            PlaceItemIn(bank, 78, 169, cont);
            #endregion
        }
		public NaturesPassageSpell( Mobile caster, Item scroll, RunebookEntry entry, Runebook book ) : base( caster, scroll, m_Info )
		{
			m_Entry = entry;
			m_Book = book;
		}
		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(
				(e, x, y) =>
				{
					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;
		}
		// adam: not called for production servers
		private static void FillBankbox( Mobile m ) 
		{
			BankBox bank = m.BankBox;

			if ( bank == null )
				return;

			Container cont;

			// Begin box of money
			cont = new WoodenBox();
			cont.ItemID = 0xE7D;
			cont.Hue = 0x489;

			PlaceItemIn( cont, 16, 51, new BankCheck( 1000000 ) ); //edited by sam
			PlaceItemIn( cont, 28, 51, new BankCheck( 250000 ) ); //edited by sam
			PlaceItemIn( cont, 40, 51, new BankCheck( 125000 ) ); //edited by sam
			PlaceItemIn( cont, 52, 51, new BankCheck( 75000 ) ); //edited by sam
			PlaceItemIn( cont, 64, 51, new BankCheck( 32500 ) ); //edited by sam

			PlaceItemIn( cont, 34, 115, MakeNewbie( new Gold( 60000 ) ) );

			PlaceItemIn( bank, 18, 169, cont );
			// End box of money


			// Begin bag of potion kegs
			cont = new Backpack();
			cont.Name = "Various Potion Kegs";

			PlaceItemIn( cont,  45, 149, MakePotionKeg( PotionEffect.CureGreater, 0x2D ) );
			PlaceItemIn( cont,  69, 149, MakePotionKeg( PotionEffect.HealGreater, 0x499 ) );
			PlaceItemIn( cont,  93, 149, MakePotionKeg( PotionEffect.PoisonDeadly, 0x46 ) );
			PlaceItemIn( cont, 117, 149, MakePotionKeg( PotionEffect.RefreshTotal, 0x21 ) );
			PlaceItemIn( cont, 141, 149, MakePotionKeg( PotionEffect.ExplosionGreater, 0x74 ) );

			PlaceItemIn( cont, 93, 82, MakeNewbie( new Bottle( 1000 ) ) );

			PlaceItemIn( bank, 53, 169, cont );
			// End bag of potion kegs


			// Begin bag of tools
			cont = new Bag();
			cont.Name = "Tool Bag";

			PlaceItemIn( cont, 30,  35, MakeNewbie( new TinkerTools( 60000 ) ) );
			PlaceItemIn( cont, 90,  35, MakeNewbie( new DovetailSaw( 60000 ) ) );
			PlaceItemIn( cont, 30,  68, MakeNewbie( new Scissors() ) );
			PlaceItemIn( cont, 45,  68, MakeNewbie( new MortarPestle( 60000 ) ) );
			PlaceItemIn( cont, 75,  68, MakeNewbie( new ScribesPen( 60000 ) ) );
			PlaceItemIn( cont, 90,  68, MakeNewbie( new SmithHammer( 60000 ) ) );
			PlaceItemIn( cont, 30, 118, MakeNewbie( new TwoHandedAxe() ) );
			PlaceItemIn( cont, 90, 118, MakeNewbie( new SewingKit( 60000 ) ) );

			PlaceItemIn( bank, 118, 169, cont );
			// End bag of tools


			// Begin bag of archery ammo
			cont = new Bag();
			cont.Name = "Bag Of Archery Ammo";

			PlaceItemIn( cont, 48, 76, MakeNewbie( new Arrow( 60000 ) ) );
			PlaceItemIn( cont, 72, 76, MakeNewbie( new Bolt( 60000 ) ) );

			PlaceItemIn( bank, 118, 124, cont );
			// End bag of archery ammo


			// Begin bag of treasure maps
			cont = new Bag();
			cont.Name = "Bag Of Treasure Maps";

			PlaceItemIn( cont, 30, 35, MakeNewbie( new TreasureMap( 1, Map.Felucca ) ) );
			PlaceItemIn( cont, 45, 35, MakeNewbie( new TreasureMap( 2, Map.Felucca ) ) );
			PlaceItemIn( cont, 60, 35, MakeNewbie( new TreasureMap( 3, Map.Felucca ) ) );
			PlaceItemIn( cont, 75, 35, MakeNewbie( new TreasureMap( 4, Map.Felucca ) ) );
			PlaceItemIn( cont, 90, 35, MakeNewbie( new TreasureMap( 5, Map.Felucca ) ) );

			PlaceItemIn( cont, 30, 50, MakeNewbie( new TreasureMap( 1, Map.Felucca ) ) );
			PlaceItemIn( cont, 45, 50, MakeNewbie( new TreasureMap( 2, Map.Felucca ) ) );
			PlaceItemIn( cont, 60, 50, MakeNewbie( new TreasureMap( 3, Map.Felucca ) ) );
			PlaceItemIn( cont, 75, 50, MakeNewbie( new TreasureMap( 4, Map.Felucca ) ) );
			PlaceItemIn( cont, 90, 50, MakeNewbie( new TreasureMap( 5, Map.Felucca ) ) );

			PlaceItemIn( cont, 55, 100, MakeNewbie( new Lockpick( 60000 ) ) );
			PlaceItemIn( cont, 60, 100, MakeNewbie( new Pickaxe() ) );

			PlaceItemIn( bank, 98, 124, cont );
			// End bag of treasure maps


			// Begin bag of raw materials
			cont = new Bag();
			cont.Hue = 0x835;
			cont.Name = "Raw Materials Bag";

			PlaceItemIn( cont, 30,  35, MakeNewbie( new DullCopperIngot( 60000 ) ) );
			PlaceItemIn( cont, 37,  35, MakeNewbie( new ShadowIronIngot( 60000 ) ) );
			PlaceItemIn( cont, 44,  35, MakeNewbie( new CopperIngot( 60000 ) ) );
			PlaceItemIn( cont, 51,  35, MakeNewbie( new BronzeIngot( 60000 ) ) );
			PlaceItemIn( cont, 58,  35, MakeNewbie( new GoldIngot( 60000 ) ) );
			PlaceItemIn( cont, 65,  35, MakeNewbie( new AgapiteIngot( 60000 ) ) );
			PlaceItemIn( cont, 72,  35, MakeNewbie( new VeriteIngot( 60000 ) ) );
			PlaceItemIn( cont, 79,  35, MakeNewbie( new ValoriteIngot( 60000 ) ) );
			PlaceItemIn( cont, 86,  35, MakeNewbie( new IronIngot( 60000 ) ) );
			
			PlaceItemIn( cont, 29, 55, MakeNewbie( new Leather( 60000 ) ) );
			PlaceItemIn( cont, 44, 55, MakeNewbie( new SpinedLeather( 60000 ) ) );
			PlaceItemIn( cont, 59, 55, MakeNewbie( new HornedLeather( 60000 ) ) );
			PlaceItemIn( cont, 74, 55, MakeNewbie( new BarbedLeather( 60000 ) ) );
			PlaceItemIn( cont, 35, 100, MakeNewbie( new Cloth( 60000 ) ) );
			PlaceItemIn( cont, 67,  89, MakeNewbie( new Board( 60000 ) ) );
			PlaceItemIn( cont, 88,  91, MakeNewbie( new BlankScroll( 60000 ) ) );

			PlaceItemIn( bank, 98, 169, cont );
			// End bag of raw materials


			// Begin bag of spell casting stuff
			cont = new Backpack();
			cont.Hue = 0x480;
			cont.Name = "Spell Casting Stuff";

			PlaceItemIn( cont, 45, 105, new Spellbook( UInt64.MaxValue ) );
			
			Runebook runebook = new Runebook( 10 );
			runebook.CurCharges = runebook.MaxCharges;
			PlaceItemIn( cont, 105, 105, runebook );

			Item toHue = new BagOfReagents( 65000 );
			toHue.Hue = 0x2D;
			PlaceItemIn( cont, 45, 150, toHue );

			for ( int i = 0; i < 9; ++i )
				PlaceItemIn( cont, 45 + (i * 10), 75, MakeNewbie( new RecallRune() ) );

			PlaceItemIn( bank, 78, 169, cont );
			// End bag of spell casting stuff
		}
Exemple #23
0
		public bool Drop(Mobile m, RuneCodexCategory cat, bool message)
		{
			if (m == null || m.Deleted || cat == null)
			{
				return false;
			}

			if (cat.Entries == null || cat.Entries.Count == 0)
			{
				if (message)
				{
					m.SendMessage("The category \"{0}\" is empty.", cat.Name);
				}

				return false;
			}

			int cost = CloneEntryChargeCost * cat.Entries.Count;

			if (!ConsumeCharges(cost))
			{
				if (message)
				{
					m.SendMessage("This action requires {0:#,0} charge{1}.", cost, cost != 1 ? "s" : String.Empty);
				}

				return false;
			}

			var entries = new Queue<RuneCodexEntry>(cat.Entries.Not(e => e == null));
			Runebook book = new Runebook();
			int count = 1;

			while (entries.Count > 0)
			{
				var entry = entries.Dequeue();

				if (entry == null)
				{
					continue;
				}

				book.Entries.Add(
					new RunebookEntry(
						entry.Location, entry.Location, entry.Name, BaseHouse.FindHouseAt(entry.Location, entry.Location, 16)));

				if (book.Entries.Count < 16 && entries.Count > 0)
				{
					continue;
				}

				m.AddToBackpack(book);

				if (entries.Count == 0)
				{
					continue;
				}

				book = new Runebook();
				++count;
			}

			if (message)
			{
				m.SendMessage(
					"You created {0:#,0} rune book{1} and consumed {2:#,0} charge{3} from the codex.",
					count,
					count != 1 ? "s" : String.Empty,
					cost,
					cost != 1 ? "s" : String.Empty);
			}

			return true;
		}
Exemple #24
0
		public virtual bool AddRunebook(Mobile m, Runebook book, RuneCodexCategory cat, bool message)
		{
			if (m == null || m.Deleted || book == null || book.Deleted || !book.IsAccessibleTo(m))
			{
				return false;
			}

			if (cat == null)
			{
				PlayerMobile pm = m as PlayerMobile;

				cat = pm != null && Users.ContainsKey(pm)
						  ? (Users[pm].Category ?? Categories[Users[pm].CategoryPoint.X, Users[pm].CategoryPoint.Y])
						  : Categories[0, 0];
			}

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

				return false;
			}

			if (Categories.Count >= Categories.Capacity)
			{
				if (message)
				{
					m.SendMessage("This rune codex can't hold more categories.");
				}

				return false;
			}

			if (cat != null && cat.AddRunebook(m, book, message))
			{
				InvalidateProperties();
				return true;
			}

			return false;
		}
        public RuneLibraryDungeons(Mobile from)
        {
            library = new ArrayList();

            readLine();
            Runebook rb        = new Runebook(0);
            int      nameStart = 1;
            int      nameEnd   = 1;

            for (int i = 0; i < size; i++)
            {
                if (rb.Entries.Count == 16)
                {
                    rb.Name = "Dungeons " + nameStart + " - " + (nameEnd - 1);
                    library.Add(rb);
                    rb        = new Runebook(0);
                    nameStart = nameEnd;
                }
                int        x    = int.Parse(xs[i]);
                int        y    = int.Parse(ys[i]);
                int        z    = int.Parse(zs[i]);
                Point3D    targ = new Point3D(x, y, z);
                RecallRune rr   = new RecallRune();
                rr.Target      = targ;
                rr.TargetMap   = Map.Felucca;
                rr.Description = mapNames[i] + " " + mapLastnames[i];
                rr.House       = null;
                rr.Marked      = true;
                rb.OnDragDrop(from, rr);
                nameEnd++;
            }
            rb.Name = "Dungeons " + nameStart + " - " + (nameEnd - 1);
            library.Add(rb);

            int height = 6;
            int offx;
            int offy;
            int offz;

            for (int p = 0; p < library.Count; p++)
            {
                Runebook librarybook = (Runebook)library[p];
                librarybook.Movable    = true;
                librarybook.MaxCharges = 10;
                librarybook.CurCharges = 10;
                if (p < 4)
                {
                    offx = from.Location.X - 1;
                    offy = from.Location.Y - 1;
                    offz = from.Location.Z + height;
                }
                else if (p >= 4 && p < 5)
                {
                    offx    = from.Location.X;
                    offy    = from.Location.Y - 1;
                    offz    = from.Location.Z + height + 2;
                    height += 2;
                }
                else if (p >= 5 && p < 9)
                {
                    offx = from.Location.X;
                    offy = from.Location.Y - 1;
                    offz = from.Location.Z + height;
                }
                else
                {
                    offx = from.Location.X + 1;
                    offy = from.Location.Y - 1;
                    offz = from.Location.Z + height;
                }
                Point3D loc = new Point3D(offx, offy, offz);
                librarybook.MoveToWorld(loc, from.Map);
                if (height == 0)
                {
                    height = 8;
                }
                height -= 2;
            }
        }
        public static void RemoveRunebook_Callback(Mobile from, bool okay, MasterRunebook master, InternalRunebook book, int id)
        {
            if (okay)
            {
                Container pack = from.Backpack;
                if (pack == null || pack.Deleted)
                {
                    from.SendMessage("Unable to find a backpack in which to place a new Runebook.");
                    return;
                }
                int count = book.Entries.Count;
                if (count > 0)
                {
                    if (from.AccessLevel < AccessLevel.GameMaster)
                    {
                        if (from.Backpack.ConsumeTotal(new Type[] { typeof(BlankScroll), typeof(RecallScroll), typeof(GateTravelScroll) },
                            new int[] { 10, 1, 1 }) >= 0)
                        {
                            from.SendMessage("You do not have the materials needed to create the runebook.");
                            return;
                        }
                        if (from.CheckSkill(SkillName.Inscribe, 100, 120))
                        {
                            from.SendMessage("You failed to extract the book. Some materials were lost.");
                            return;
                        }
                    }

                    Runebook runebook = new Runebook(book.MaxCharges);
                    for (int x = 0; x < count; x++)
                    {
                        RunebookEntry rbe = new RunebookEntry(
                            ((RunebookEntry)book.Entries[0]).Location, ((RunebookEntry)book.Entries[0]).Map,
                            ((RunebookEntry)book.Entries[0]).Description, ((RunebookEntry)book.Entries[0]).House);
                        runebook.Entries.Add(rbe);
                        book.Entries.RemoveAt(0);
                    }
                    runebook.CurCharges = book.CurCharges;
                    runebook.Name = book.Name;
                    book.Name = string.Format("Book #{0}", ((int)(id + 1)).ToString());
                    pack.DropItem(runebook);
                    from.SendMessage("Runebook extracted. Some materials were used.");
                }
                else
                {
                    from.SendMessage("You cannot remove an empty Runebook.");
                }
                from.CloseGump(typeof(InternalRunebookGump));
                from.SendGump(new InternalRunebookGump(from, book, master, id));
            }
            else
            {
                from.CloseGump(typeof(InternalRunebookGump));
                from.SendGump(new InternalRunebookGump(from, book, master, id));
            }
        }
Exemple #27
0
 public CopyTarget(PenOfWisdom pen, Runebook book) : base(12, false, TargetFlags.None)
 {
     Pen        = pen;
     SourceBook = book;
 }
Exemple #28
0
 public UndeadTravelByPoisonSpell( Mobile caster, Item scroll, RunebookEntry entry, Runebook book )
     : base(caster, scroll, m_Info)
 {
     m_Entry = entry;
     m_Book = book;
 }
Exemple #29
0
        public StarterBagMage()
        {
            Container cont;

            this.Name = "Starter Bag - Mage";

            cont      = new Bag();
            cont.Name = "PowerScrolls Bag";
            // Power Scrolls
            PlaceItemIn(cont, 30, 35, new PowerScroll(SkillName.Meditation, 105));
            PlaceItemIn(cont, 60, 35, new PowerScroll(SkillName.Magery, 105));
            PlaceItemIn(cont, 90, 35, new PowerScroll(SkillName.EvalInt, 105));
            PlaceItemIn(cont, 30, 68, new PowerScroll(SkillName.Necromancy, 105));
            PlaceItemIn(cont, 45, 68, new PowerScroll(SkillName.SpiritSpeak, 105));
            PlaceItemIn(this, 0, 0, cont);
            for (int i = 0; i < cont.Items.Count; i++)
            {
                cont.Items[i].LootType = LootType.Blessed;
            }

            cont      = new Bag();
            cont.Name = "Gear Bag";
            // Armor
            PlaceItemIn(cont, 30, 35, new LeatherArms());
            PlaceItemIn(cont, 60, 35, new LeatherGloves());
            PlaceItemIn(cont, 90, 35, new LeatherCap());
            PlaceItemIn(cont, 30, 68, new LeatherChest());
            PlaceItemIn(cont, 45, 68, new LeatherLegs());
            // Jewelry
            PlaceItemIn(cont, 75, 68, new GoldNecklace());
            PlaceItemIn(cont, 90, 68, new GoldEarrings());
            PlaceItemIn(cont, 30, 118, new GoldBracelet());
            PlaceItemIn(cont, 60, 118, new GoldRing());
            PlaceItemIn(this, 50, 0, cont);
            for (int i = 0; i < cont.Items.Count; i++)
            {
                BaseArmor armor = cont.Items[i] as BaseArmor;
                BaseJewel jewel = cont.Items[i] as BaseJewel;
                if (armor != null)
                {
                    armor.Attributes.LowerRegCost = 12;
                    armor.LootType    = LootType.Newbied;
                    armor.Hue         = 1154;
                    armor.Insured     = false;
                    armor.TimesImbued = 50;
                    armor.LootType    = LootType.Blessed;
                    armor.Weight      = 0;
                }
                else if (jewel != null)
                {
                    jewel.Attributes.LowerRegCost = 12;
                    jewel.Attributes.RegenMana    = 1;
                    jewel.LootType    = LootType.Newbied;
                    jewel.Hue         = 1152;
                    jewel.Insured     = false;
                    jewel.TimesImbued = 50;
                    jewel.LootType    = LootType.Blessed;
                }
            }

            cont      = new Bag();
            cont.Name = "Book Bag";
            PlaceItemIn(cont, 30, 35, new Spellbook());
            PlaceItemIn(cont, 60, 35, new NecromancerSpellbook());
            Runebook runebook = new Runebook(5);

            runebook.CurCharges = runebook.MaxCharges;
            PlaceItemIn(cont, 90, 35, runebook);
            for (int i = 0; i < 3; ++i)
            {
                PlaceItemIn(cont, 45 + (i * 10), 75, new RecallRune());
            }
            PlaceItemIn(this, 100, 0, cont);
            for (int i = 0; i < cont.Items.Count; i++)
            {
                Spellbook spellBook = cont.Items[i] as Spellbook;

                if (spellBook != null)
                {
                    spellBook.SkillBonuses.SetValues(0, SkillName.Meditation, 100);
                    spellBook.Attributes.CastSpeed = 1;
                    spellBook.Hue = 1152;
                }
            }
        }
Exemple #30
0
        private static Item CreateStarterRunebook()
        {
            Runebook book = new Runebook();
            book.CurCharges = book.MaxCharges = 20;

            book.AddEntry( CreateRunebookEntry( "New Haven Bank", new Point3D( 3487, 2572, 21 ), Map.Trammel ) );
            book.AddEntry( CreateRunebookEntry( "Britain Bank", new Point3D( 1428, 1693, 0 ), Map.Trammel ) );
            book.AddEntry( CreateRunebookEntry( "Luna Bank", new Point3D( 983, 515, -50 ), Map.Malas ) );
            book.AddEntry( CreateRunebookEntry( "Umbra Bank", new Point3D( 2045, 1342, -85 ), Map.Malas ) );
            book.AddEntry( CreateRunebookEntry( "Change Tokuno Arties", new Point3D( 678, 1275, 48 ), Map.Tokuno ) );
            book.AddEntry( CreateRunebookEntry( "Taming: Trinsic Area", new Point3D( 2103, 2794, 5 ), Map.Trammel ) );
            book.AddEntry( CreateRunebookEntry( "Taming: Bulls Delucia", new Point3D( 5208, 3952, 37 ), Map.Trammel ) );
            book.AddEntry( CreateRunebookEntry( "Minoc Mines", new Point3D( 2558, 503, 0 ), Map.Trammel ) );
            book.AddEntry( CreateRunebookEntry( "Easy: Old Haven", new Point3D( 3637, 2499, 0 ), Map.Trammel ) );
            book.AddEntry( CreateRunebookEntry( "Easy: New Haven Mine", new Point3D( 3511, 2778, 27 ), Map.Trammel ) );
            book.AddEntry( CreateRunebookEntry( "Medium: Red Solen Hive", new Point3D( 2611, 762, 0 ), Map.Trammel ) );
            book.AddEntry( CreateRunebookEntry( "Medium: Black Solen Hive", new Point3D( 1458, 988, 0 ), Map.Trammel ) );
            book.AddEntry( CreateRunebookEntry( "Medium: Covetous", new Point3D( 2499, 918, 0 ), Map.Trammel ) );
            book.AddEntry( CreateRunebookEntry( "Medium: Britain Graveyard", new Point3D( 1385, 1496, 10 ), Map.Trammel ) );
            book.AddEntry( CreateRunebookEntry( "Hard: Hythloth", new Point3D( 4722, 3823, 0 ), Map.Trammel ) );
            book.AddEntry( CreateRunebookEntry( "Stygian Abyss: Underworld", new Point3D( 4194, 3268, 0 ), Map.Trammel ) );

            return book;
        }
Exemple #31
0
		public override void InitOutfit()
		{
			AddItem( new LongPants( 0x322 ) );
			AddItem( new Shoes(GetRandomHue()) );
			AddItem( new FancyShirt( 0x47E ) );
			AddItem( new GoldRing() );
			AddItem( new FloppyHat(GetRandomHue()) );
			Runebook runebook = new Runebook();
			runebook.Hue = 0x47E;
			runebook.Name = "Fight Book";
			AddItem( runebook );
		}
Exemple #32
0
        private static void FillBankbox( Mobile m )
        {
            BankBox bank = m.BankBox;

            if ( bank == null )
                return;

            bank.MaxItems = int.MaxValue;

            // The new AOS bankboxes don't have powerscrolls, they are automatically 'applied':

            for ( int i = 0; i < PowerScroll.Skills.Length; ++i )
                m.Skills[PowerScroll.Skills[i]].Cap = 120.0;

            m.StatCap = 250;

            Container cont;
            Container cont2;

            // Begin box of money
            cont = new WoodenBox();
            cont.ItemID = 0xE7D;
            cont.Hue = 0x489;

            PlaceItemIn( cont, 17, 52, new BankCheck( 1000000 ) );
            PlaceItemIn( cont, 28, 52, new BankCheck( 1000000 ) );

            PlaceItemIn( cont, 17, 91, new Factions.Silver( 9000 ) );
            PlaceItemIn( cont, 34, 91, new Gold( 60000 ) );

            PlaceItemIn( bank, 38, 142, cont );
            // End box of money

            // Begin box of Magery Items
            cont = new WoodenBox();
            cont.ItemID = 0xE7D;
            cont.Name = "Magery Items";
            cont.Hue = 1195;

            // Begin bag of spell casting stuff
            cont2 = new Backpack();
            cont2.Hue = 0x480;
            cont2.Name = "Spell Casting Stuff";

            PlaceItemIn( cont2, 45, 107, new Spellbook( UInt64.MaxValue ) );
            PlaceItemIn( cont2, 64, 107, new NecromancerSpellbook( (UInt64) 0xFFFF ) );
            PlaceItemIn( cont2, 83, 107, new BookOfChivalry( (UInt64) 0x3FF ) );
            PlaceItemIn( cont2, 102, 107, new BookOfBushido() ); //Default ctor = full
            PlaceItemIn( cont2, 121, 107, new BookOfNinjitsu() ); //Default ctor = full
            PlaceItemIn( cont2, 102, 149, new SpellweavingSpellbook( (UInt64) 0xFFFF ) );
            PlaceItemIn( cont2, 121, 149, new MysticismSpellbook( (UInt64) 0xFFFF ) );

            Runebook runebook = new Runebook( 20 );
            runebook.CurCharges = runebook.MaxCharges;
            PlaceItemIn( cont2, 141, 107, runebook );

            Item toHue = new BagOfReagents( 5000 );
            toHue.Hue = 0x2D;
            PlaceItemIn( cont2, 45, 128, toHue );

            toHue = new BagOfNecroReagents( 3000 );
            toHue.Hue = 0x488;
            PlaceItemIn( cont2, 64, 128, toHue );

            toHue = new BagOfMysticReagents( 3000 );
            toHue.Hue = 0x48F;
            PlaceItemIn( cont2, 141, 128, toHue );

            for ( int i = 0; i < 6; ++i )
                PlaceItemIn( cont2, 45 + ( i * 10 ), 74, new RecallRune() );

            PlaceItemIn( cont, 47, 91, cont2 );
            // End bag of spell casting stuff

            // Begin bag of potion kegs
            cont2 = new Backpack();
            cont2.Name = "Various Potion Kegs";

            PlaceItemIn( cont2, 45, 149, MakePotionKeg( PotionEffect.CureGreater, 0x2D ) );
            PlaceItemIn( cont2, 69, 149, MakePotionKeg( PotionEffect.HealGreater, 0x499 ) );
            PlaceItemIn( cont2, 93, 149, MakePotionKeg( PotionEffect.PoisonDeadly, 0x46 ) );
            PlaceItemIn( cont2, 117, 149, MakePotionKeg( PotionEffect.RefreshGreater, 0x21 ) );
            PlaceItemIn( cont2, 141, 149, MakePotionKeg( PotionEffect.ExplosionGreater, 0x74 ) );

            PlaceItemIn( cont2, 93, 82, new Bottle( 1000 ) );

            PlaceItemIn( cont, 78, 91, cont2 );
            // End bag of potion kegs

            GoldRing ring = new GoldRing();
            ring.Name = "Ring Of Arcane Tactics";
            ring.Attributes.CastRecovery = 3;
            ring.Attributes.CastSpeed = 1;
            PlaceItemIn( cont, 109, 90, ring );

            GoldBracelet bracelet = new GoldBracelet();
            bracelet.Name = "Farmer's Band Of Mastery";
            bracelet.Attributes.CastRecovery = 3;
            bracelet.Attributes.CastSpeed = 1;
            PlaceItemIn( cont, 139, 95, bracelet );

            PlaceItemIn( bank, 63, 142, cont );
            // End box of Magery Items

            // Begin bag of ethereals
            cont = new Backpack();
            cont.Hue = 0x490;
            cont.Name = "Bag Of Ethy's!";

            cont.DropItem( new EtherealHorse() );
            cont.DropItem( new EtherealOstard() );
            cont.DropItem( new EtherealLlama() );
            cont.DropItem( new EtherealKirin() );
            cont.DropItem( new EtherealUnicorn() );
            cont.DropItem( new EtherealRidgeback() );
            cont.DropItem( new EtherealSwampDragon() );
            cont.DropItem( new EtherealBeetle() );

            PlaceItemIn( bank, 43, 124, cont );
            // End bag of ethereals

            // Begin box of Artifacts
            cont = new WoodenBox();
            cont.ItemID = 0xE7D;
            cont.Hue = 1170;
            cont.Name = "Artifacts";

            // Begin bag of minor artifacts
            cont2 = new Bag();
            cont2.Hue = 1167;
            cont2.Name = "Minor Artifacts";

            cont2.DropItem( new LunaLance() );
            cont2.DropItem( new VioletCourage() );
            cont2.DropItem( new CavortingClub() );
            cont2.DropItem( new CaptainQuacklebushsCutlass() );
            cont2.DropItem( new NightsKiss() );
            cont2.DropItem( new ShipModelOfTheHMSCape() );
            cont2.DropItem( new AdmiralsHeartyRum() );
            cont2.DropItem( new CandelabraOfSouls() );
            cont2.DropItem( new IolosLute() );
            cont2.DropItem( new GwennosHarp() );
            cont2.DropItem( new ArcticDeathDealer() );
            cont2.DropItem( new EnchantedTitanLegBone() );
            cont2.DropItem( new NoxRangersHeavyCrossbow() );
            cont2.DropItem( new BlazeOfDeath() );
            cont2.DropItem( new DreadPirateHat() );
            cont2.DropItem( new BurglarsBandana() );
            cont2.DropItem( new GoldBricks() );
            cont2.DropItem( new AlchemistsBauble() );
            cont2.DropItem( new PhillipsWoodenSteed() );
            cont2.DropItem( new PolarBearMask() );
            cont2.DropItem( new BowOfTheJukaKing() );
            cont2.DropItem( new GlovesOfThePugilist() );
            cont2.DropItem( new OrcishVisage() );
            cont2.DropItem( new StaffOfPower() );
            cont2.DropItem( new ShieldOfInvulnerability() );
            cont2.DropItem( new HeartOfTheLion() );
            cont2.DropItem( new ColdBlood() );
            cont2.DropItem( new GhostShipAnchor() );
            cont2.DropItem( new SeahorseStatuette() );
            cont2.DropItem( new WrathOfTheDryad() );
            cont2.DropItem( new PixieSwatter() );

            PlaceItemIn( cont, 17, 83, cont2 );
            // End bag of minor artifacts

            // Begin Bag of Major Artifacts
            cont2 = new Bag();
            cont2.Hue = 1266;
            cont2.Name = "Major Artifacts";

            cont2.DropItem( new GauntletsOfNobility() );
            cont2.DropItem( new MidnightBracers() );
            cont2.DropItem( new VoiceOfTheFallenKing() );
            cont2.DropItem( new OrnateCrownOfTheHarrower() );
            cont2.DropItem( new HelmOfInsight() );
            cont2.DropItem( new HolyKnightsBreastplate() );
            cont2.DropItem( new ArmorOfFortune() );
            cont2.DropItem( new TunicOfFire() );
            cont2.DropItem( new LeggingsOfBane() );
            cont2.DropItem( new ArcaneShield() );
            cont2.DropItem( new Aegis() );
            cont2.DropItem( new RingOfTheVile() );
            cont2.DropItem( new BraceletOfHealth() );
            cont2.DropItem( new RingOfTheElements() );
            cont2.DropItem( new OrnamentOfTheMagician() );
            cont2.DropItem( new DivineCountenance() );
            cont2.DropItem( new JackalsCollar() );
            cont2.DropItem( new HuntersHeaddress() );
            cont2.DropItem( new HatOfTheMagi() );
            cont2.DropItem( new ShadowDancerLeggings() );
            cont2.DropItem( new SpiritOfTheTotem() );
            cont2.DropItem( new BladeOfInsanity() );
            cont2.DropItem( new AxeOfTheHeavens() );
            cont2.DropItem( new TheBeserkersMaul() );
            cont2.DropItem( new Frostbringer() );
            cont2.DropItem( new BreathOfTheDead() );
            cont2.DropItem( new TheDragonSlayer() );
            cont2.DropItem( new BoneCrusher() );
            cont2.DropItem( new StaffOfTheMagi() );
            cont2.DropItem( new SerpentsFang() );
            cont2.DropItem( new LegacyOfTheDreadLord() );
            cont2.DropItem( new TheTaskmaster() );
            cont2.DropItem( new TheDryadBow() );
            cont2.DropItem( new TitansHammer() );
            cont2.DropItem( new InquisitorsResolution() );
            cont2.DropItem( new BladeOfTheRighteous() );
            cont2.DropItem( new ZyronicClaw() );

            PlaceItemIn( cont, 90, 83, cont2 );
            // End Bag of Major Artifacts

            // Begin bag of Tokuno minor artifacts
            cont2 = new Bag();
            cont2.Hue = 1281;
            cont2.Name = "Tokuno Minor Artifacts";

            cont2.DropItem( new PeasantsBokuto() );
            cont2.DropItem( new DragonNunchaku() );
            cont2.DropItem( new TheDestroyer() );
            cont2.DropItem( new HanzosBow() );
            cont2.DropItem( new Exiler() );
            cont2.DropItem( new PilferedDancerFans() );
            cont2.DropItem( new DemonForks() );
            cont2.DropItem( new BlackLotusHood() );
            cont2.DropItem( new DaimyosHelm() );
            cont2.DropItem( new ArmsOfTacticalExcellence() );
            cont2.DropItem( new AncientFarmersKasa() );
            cont2.DropItem( new GlovesOfTheSun() );
            cont2.DropItem( new LegsOfStability() );
            cont2.DropItem( new AncientSamuraiDo() );
            cont2.DropItem( new PigmentsOfTokuno() );
            cont2.DropItem( new FluteOfRenewal() );
            cont2.DropItem( new AncientUrn() );
            cont2.DropItem( new HonorableSwords() );
            cont2.DropItem( new ChestOfHeirlooms() );
            cont2.DropItem( new TomeOfEnlightenment() );

            PlaceItemIn( cont, 53, 83, cont2 );
            // End bag of Tokuno minor artifacts

            // Begin bag of Tokuno major artifacts
            cont2 = new Bag();
            cont2.Hue = 1281;
            cont2.Name = "Tokuno Major Artifacts";

            cont2.DropItem( new DarkenedSky() );
            cont2.DropItem( new KasaOfRajin() );
            cont2.DropItem( new RuneBeetleCarapace() );
            cont2.DropItem( new Stormgrip() );
            cont2.DropItem( new SwordOfStampede() );
            cont2.DropItem( new SwordsOfProsperity() );
            cont2.DropItem( new TheHorselord() );
            cont2.DropItem( new TomeOfLostKnowledge() );
            cont2.DropItem( new WindsEdge() );
            cont2.DropItem( new PigmentsOfTokunoMajor( PigmentsType.ParagonGold, 50 ) );
            cont2.DropItem( new PigmentsOfTokunoMajor( PigmentsType.VioletCouragePurple, 50 ) );
            cont2.DropItem( new PigmentsOfTokunoMajor( PigmentsType.InvulnerabilityBlue, 50 ) );
            cont2.DropItem( new PigmentsOfTokunoMajor( PigmentsType.LunaWhite, 50 ) );
            cont2.DropItem( new PigmentsOfTokunoMajor( PigmentsType.DryadGreen, 50 ) );
            cont2.DropItem( new PigmentsOfTokunoMajor( PigmentsType.ShadowDancerBlack, 50 ) );
            cont2.DropItem( new PigmentsOfTokunoMajor( PigmentsType.BerserkerRed, 50 ) );
            cont2.DropItem( new PigmentsOfTokunoMajor( PigmentsType.NoxGreen, 50 ) );
            cont2.DropItem( new PigmentsOfTokunoMajor( PigmentsType.RumRed, 50 ) );
            cont2.DropItem( new PigmentsOfTokunoMajor( PigmentsType.FireOrange, 50 ) );

            PlaceItemIn( cont, 127, 83, cont2 );
            // End bag of Tokuno major artifacts

            // Begin bag of ML Minor artifacts
            cont2 = new Bag();
            cont2.Hue = 1167;
            cont2.Name = "Minor Artifacts";

            cont2.DropItem( new AegisOfGrace() );
            cont2.DropItem( new BladeDance() );
            cont2.DropItem( new BloodwoodSpirit() );
            cont2.DropItem( new Bonesmasher() );
            cont2.DropItem( new Boomstick() );
            cont2.DropItem( new BrightsightLenses() );
            cont2.DropItem( new FeyLeggings() );
            cont2.DropItem( new FleshRipper() );
            cont2.DropItem( new HelmOfSwiftness() );
            cont2.DropItem( new PadsOfTheCuSidhe() );
            cont2.DropItem( new QuiverOfRage() );
            cont2.DropItem( new QuiverOfTheElements() );
            cont2.DropItem( new RaedsGlory() );
            cont2.DropItem( new RighteousAnger() );
            cont2.DropItem( new RobeOfTheEclipse() );
            cont2.DropItem( new RobeOfTheEquinox() );
            cont2.DropItem( new SoulSeeker() );
            cont2.DropItem( new TalonBite() );
            cont2.DropItem( new TotemOfTheVoid() );
            cont2.DropItem( new WildfireBow() );
            cont2.DropItem( new Windsong() );

            PlaceItemIn( cont, 140, 83, cont2 );
            // End bag of ML Minor artifacts

            PlaceItemIn( bank, 63, 106, cont );
            // End box of Artifacts

            // Begin box of General Resources
            cont = new WoodenBox();
            cont.ItemID = 0xE7D;
            cont.Hue = 1193;
            cont.Name = "Genereal Resources";

            // Begin bag of raw materials
            cont2 = new Bag();
            cont2.Name = "Raw Materials Bag";

            PlaceItemIn( cont2, 92, 60, new BarbedLeather( 5000 ) );
            PlaceItemIn( cont2, 92, 68, new HornedLeather( 5000 ) );
            PlaceItemIn( cont2, 92, 76, new SpinedLeather( 5000 ) );
            PlaceItemIn( cont2, 92, 84, new Leather( 5000 ) );

            PlaceItemIn( cont2, 30, 118, new Cloth( 5000 ) );
            PlaceItemIn( cont2, 30, 84, new Board( 5000 ) );
            PlaceItemIn( cont2, 57, 80, new BlankScroll( 500 ) );
            PlaceItemIn( cont2, 57, 80, new Bone( 100 ) );

            PlaceItemIn( cont2, 30, 35, new DullCopperIngot( 5000 ) );
            PlaceItemIn( cont2, 37, 35, new ShadowIronIngot( 5000 ) );
            PlaceItemIn( cont2, 44, 35, new CopperIngot( 5000 ) );
            PlaceItemIn( cont2, 51, 35, new BronzeIngot( 5000 ) );
            PlaceItemIn( cont2, 58, 35, new GoldIngot( 5000 ) );
            PlaceItemIn( cont2, 65, 35, new AgapiteIngot( 5000 ) );
            PlaceItemIn( cont2, 72, 35, new VeriteIngot( 5000 ) );
            PlaceItemIn( cont2, 79, 35, new ValoriteIngot( 5000 ) );
            PlaceItemIn( cont2, 86, 35, new IronIngot( 5000 ) );

            PlaceItemIn( cont2, 30, 59, new RedScales( 5000 ) );
            PlaceItemIn( cont2, 36, 59, new YellowScales( 5000 ) );
            PlaceItemIn( cont2, 42, 59, new BlackScales( 5000 ) );
            PlaceItemIn( cont2, 48, 59, new GreenScales( 5000 ) );
            PlaceItemIn( cont2, 54, 59, new WhiteScales( 5000 ) );
            PlaceItemIn( cont2, 60, 59, new BlueScales( 5000 ) );

            PlaceItemIn( cont, 40, 93, cont2 );
            // End bag of raw materials

            // Begin bag of tools
            cont2 = new Bag();
            cont2.Name = "Tool Bag";

            cont2.DropItem( new TinkerTools( 30000 ) );
            cont2.DropItem( new HousePlacementTool() );
            cont2.DropItem( new DovetailSaw( 30000 ) );
            cont2.DropItem( new Scissors() );
            cont2.DropItem( new MortarPestle( 30000 ) );
            cont2.DropItem( new ScribesPen( 30000 ) );
            cont2.DropItem( new SmithHammer( 30000 ) );
            cont2.DropItem( new TwoHandedAxe() );
            cont2.DropItem( new FletcherTools( 30000 ) );
            cont2.DropItem( new SewingKit( 30000 ) );
            cont2.DropItem( new Clippers( 30000 ) );

            PlaceItemIn( cont, 90, 93, cont2 );
            // End bag of tools

            // Begin bag of runic tools
            cont2 = new Backpack();
            cont2.Name = "Runic Tool Bag";

            PlaceItemIn( cont2, 54, 74, new RunicHammer( CraftResource.DullCopper, 30000 ) );
            PlaceItemIn( cont2, 64, 74, new RunicHammer( CraftResource.ShadowIron, 30000 ) );
            PlaceItemIn( cont2, 74, 74, new RunicHammer( CraftResource.Copper, 30000 ) );
            PlaceItemIn( cont2, 84, 74, new RunicHammer( CraftResource.Bronze, 30000 ) );
            PlaceItemIn( cont2, 94, 74, new RunicHammer( CraftResource.Gold, 30000 ) );
            PlaceItemIn( cont2, 104, 74, new RunicHammer( CraftResource.Agapite, 30000 ) );
            PlaceItemIn( cont2, 114, 74, new RunicHammer( CraftResource.Verite, 30000 ) );
            PlaceItemIn( cont2, 124, 74, new RunicHammer( CraftResource.Valorite, 30000 ) );

            PlaceItemIn( cont2, 54, 90, new RunicSewingKit( CraftResource.SpinedLeather, 30000 ) );
            PlaceItemIn( cont2, 64, 90, new RunicSewingKit( CraftResource.HornedLeather, 30000 ) );
            PlaceItemIn( cont2, 74, 90, new RunicSewingKit( CraftResource.BarbedLeather, 30000 ) );

            PlaceItemIn( cont2, 54, 107, new RunicFletchersTools( CraftResource.Oak, 30000 ) );
            PlaceItemIn( cont2, 69, 107, new RunicFletchersTools( CraftResource.Ash, 30000 ) );
            PlaceItemIn( cont2, 83, 107, new RunicFletchersTools( CraftResource.Yew, 30000 ) );
            PlaceItemIn( cont2, 97, 107, new RunicFletchersTools( CraftResource.Heartwood, 30000 ) );

            PlaceItemIn( cont2, 93, 90, new RunicDovetailSaw( CraftResource.Oak, 30000 ) );
            PlaceItemIn( cont2, 102, 90, new RunicDovetailSaw( CraftResource.Ash, 30000 ) );
            PlaceItemIn( cont2, 112, 90, new RunicDovetailSaw( CraftResource.Yew, 30000 ) );
            PlaceItemIn( cont2, 122, 90, new RunicDovetailSaw( CraftResource.Heartwood, 30000 ) );

            PlaceItemIn( cont, 65, 67, cont2 );
            // End bag of runic tools

            // Begin bag of recipes
            cont2 = new Bag();
            cont2.Name = "Bag of Recipes";
            cont2.Hue = 2301;

            for ( int i = 0; i <= 92; i++ )
                cont2.DropItem( new RecipeScroll( i ) );

            PlaceItemIn( cont, 115, 93, cont2 );
            // End bag of recipes

            // Begin bag of archery ammo
            cont2 = new Bag();
            cont2.Name = "Bag Of Archery Ammo";

            PlaceItemIn( cont2, 48, 76, new Arrow( 5000 ) );
            PlaceItemIn( cont2, 72, 76, new Bolt( 5000 ) );

            PlaceItemIn( cont, 65, 93, cont2 );
            // End bag of archery ammo

            // Begin bag of Wood
            cont2 = new Bag();
            cont2.Hue = 1321;
            cont2.Name = "Bag of Wood";

            cont2.DropItem( new AshBoard( 500 ) );
            cont2.DropItem( new YewBoard( 500 ) );
            cont2.DropItem( new OakBoard( 500 ) );
            cont2.DropItem( new HeartwoodBoard( 500 ) );
            cont2.DropItem( new BloodwoodBoard( 500 ) );
            cont2.DropItem( new FrostwoodBoard( 500 ) );

            PlaceItemIn( cont, 139, 93, cont2 );
            // End bag of Wood

            // Begin Bag of Imbuing Materials
            cont2 = new Bag();
            cont2.Hue = 0x4B;
            cont2.Name = "Bag of Imbuing Materials";

            foreach ( ImbuingResource resource in Enum.GetValues( typeof( ImbuingResource ) ) )
            {
                try
                {
                    Type type = ScriptCompiler.FindTypeByFullName( String.Format( "Server.Items.{0}", resource.ToString() ) );

                    Item item = (Item) Activator.CreateInstance( type );
                    item.Amount = 1000;

                    cont2.DropItem( item );
                }
                catch
                {
                }
            }

            PlaceItemIn( cont, 16, 67, cont2 );
            // End Bag of Imbuing Materials

            // Begin Bag of Elven Materials
            cont2 = new Bag();
            cont2.Hue = 1195;
            cont2.Name = "Bag of Elven Materials";

            cont2.DropItem( new BarkFragment( 200 ) );
            cont2.DropItem( new Blight( 200 ) );
            cont2.DropItem( new BlueDiamond( 200 ) );
            cont2.DropItem( new BrilliantAmber( 200 ) );
            cont2.DropItem( new CapturedEssence( 200 ) );
            cont2.DropItem( new Corruption( 200 ) );
            cont2.DropItem( new DarkSapphire( 200 ) );
            cont2.DropItem( new DiseasedBark( 200 ) );
            cont2.DropItem( new DreadHornMane( 200 ) );
            cont2.DropItem( new EcruCitrine( 200 ) );
            cont2.DropItem( new EnchantedSwitch( 200 ) );
            cont2.DropItem( new EyeOfTheTravesty( 200 ) );
            cont2.DropItem( new FireRuby( 200 ) );
            cont2.DropItem( new GrizzledBones( 200 ) );
            cont2.DropItem( new HollowPrism( 200 ) );
            cont2.DropItem( new JeweledFiligree( 200 ) );
            cont2.DropItem( new LardOfParoxysmus( 200 ) );
            cont2.DropItem( new LuminescentFungi( 200 ) );
            cont2.DropItem( new Muculent( 200 ) );
            cont2.DropItem( new ParasiticPlant( 200 ) );
            cont2.DropItem( new PerfectEmerald( 200 ) );
            cont2.DropItem( new PristineDreadHorn( 200 ) );
            cont2.DropItem( new Putrefaction( 200 ) );
            cont2.DropItem( new RunedPrism( 200 ) );
            cont2.DropItem( new Scourge( 200 ) );
            cont2.DropItem( new SwitchItem( 200 ) );
            cont2.DropItem( new Taint( 200 ) );
            cont2.DropItem( new Turquoise( 200 ) );
            cont2.DropItem( new WhitePearl( 200 ) );

            PlaceItemIn( cont, 40, 67, cont2 );
            // End Bag of Elven Materials

            PlaceItemIn( bank, 88, 142, cont );
            // End box of General Resources

            // Begin box of Armor Set Pieces
            cont = new WoodenBox();
            cont.ItemID = 0xE7D;
            cont.Hue = 1194;
            cont.Name = "Armor Set Pieces";

            // Begin Bag of Juggernaut Set
            cont2 = new Bag();
            cont2.Hue = 1177;
            cont2.Name = "Juggernaut Set";

            cont2.DropItem( new MalekisHonor() );
            cont2.DropItem( new Evocaricus() );

            PlaceItemIn( cont, 17, 63, cont2 );
            // End Bag of Juggernaut Set

            // Begin Bag of Hunter Set Armor
            cont2 = new Bag();
            cont2.Hue = 1177;
            cont2.Name = "Hunter Set Armor";

            cont2.DropItem( new HunterGloves() );
            cont2.DropItem( new HunterLeggings() );
            cont2.DropItem( new HunterSleeves() );
            cont2.DropItem( new HunterTunic() );

            PlaceItemIn( cont, 40, 63, cont2 );
            // End Bag of Hunter Set Armor

            // Begin Bag of Paladin Set Armor
            cont2 = new Bag();
            cont2.Hue = 1177;
            cont2.Name = "Paladin Set Armor";

            cont2.DropItem( new PlateOfHonorArms() );
            cont2.DropItem( new PlateOfHonorChest() );
            cont2.DropItem( new PlateOfHonorGloves() );
            cont2.DropItem( new PlateOfHonorGorget() );
            cont2.DropItem( new PlateOfHonorHelm() );
            cont2.DropItem( new PlateOfHonorLegs() );

            PlaceItemIn( cont, 65, 63, cont2 );
            // End Bag of Paladin Set Armor

            // Begin Bag of Necromancer Set Armor
            cont2 = new Bag();
            cont2.Hue = 1177;
            cont2.Name = "Necromancer Set Armor";

            cont2.DropItem( new DeathsEssenceGloves() );
            cont2.DropItem( new DeathsEssenceHelm() );
            cont2.DropItem( new DeathsEssenceLeggings() );
            cont2.DropItem( new DeathsEssenceSleeves() );
            cont2.DropItem( new DeathsEssenceTunic() );

            PlaceItemIn( cont, 90, 63, cont2 );
            // End Bag of Necromancer Set Armor

            // Begin Bag of Acolyte Set Armor
            cont2 = new Bag();
            cont2.Hue = 1177;
            cont2.Name = "Acolyte Set Armor";

            cont2.DropItem( new AcolyteGloves() );
            cont2.DropItem( new AcolyteLeggings() );
            cont2.DropItem( new AcolyteSleeves() );
            cont2.DropItem( new AcolyteTunic() );

            PlaceItemIn( cont, 115, 63, cont2 );
            // End Bag of Acolyte Set Armor

            // Begin Bag of Marksman Set
            cont2 = new Bag();
            cont2.Hue = 1177;
            cont2.Name = "Marksman Set";

            cont2.DropItem( new Feathernock() );
            cont2.DropItem( new Swiftflight() );

            PlaceItemIn( cont, 139, 63, cont2 );
            // End Bag of Marksman Set

            // Begin Bag of Monstrous Interred Grizzle Set Armor
            cont2 = new Bag();
            cont2.Hue = 1177;
            cont2.Name = "Monstrous Interred Grizzle Set Armor";

            cont2.DropItem( new GauntletsOfTheGrizzle() );
            cont2.DropItem( new GreavesOfTheGrizzle() );
            cont2.DropItem( new SkullHelmOfTheGrizzle() );
            cont2.DropItem( new TunicOfTheGrizzle() );
            cont2.DropItem( new VambracesOfTheGrizzle() );

            PlaceItemIn( cont, 17, 89, cont2 );
            // End Bag of Monstrous Interred Grizzle Set Armor

            // Begin Bag of Warrior Set Armor
            cont2 = new Bag();
            cont2.Hue = 1177;
            cont2.Name = "Warrior Set Armor";

            cont2.DropItem( new DarkwoodChest() );
            cont2.DropItem( new DarkwoodCrown() );
            cont2.DropItem( new DarkwoodGauntlets() );
            cont2.DropItem( new DarkwoodGorget() );
            cont2.DropItem( new DarkwoodPauldrons() );
            cont2.DropItem( new DarkwoodLeggings() );

            PlaceItemIn( cont, 40, 89, cont2 );
            // End Bag of Warrior Set Armor

            // Begin Bag of Mage Set Armor
            cont2 = new Bag();
            cont2.Hue = 1177;
            cont2.Name = "Mage Set Armor";

            cont2.DropItem( new LeafweaveGloves() );
            cont2.DropItem( new LeafweaveLeggings() );
            cont2.DropItem( new LeafweaveSleeves() );
            cont2.DropItem( new LeafweaveTunic() );

            PlaceItemIn( cont, 65, 89, cont2 );
            // End Bag of Mage Set Armor

            // Begin Bag of Assassin Set Armor
            cont2 = new Bag();
            cont2.Hue = 1177;
            cont2.Name = "Assassin Set Armor";

            cont2.DropItem( new AssassinGloves() );
            cont2.DropItem( new AssassinLeggings() );
            cont2.DropItem( new AssassinSleeves() );
            cont2.DropItem( new AssassinTunic() );

            PlaceItemIn( cont, 90, 89, cont2 );
            // End Bag of Assassin Set Armor

            // Begin Bag of Myrmidon Set Armor
            cont2 = new Bag();
            cont2.Hue = 1177;
            cont2.Name = "Myrmidon Set Armor";

            cont2.DropItem( new MyrmidonArms() );
            cont2.DropItem( new MyrmidonChest() );
            cont2.DropItem( new MyrmidonGloves() );
            cont2.DropItem( new MyrmidonGorget() );
            cont2.DropItem( new MyrmidonHelm() );
            cont2.DropItem( new MyrmidonLegs() );

            PlaceItemIn( cont, 115, 89, cont2 );
            // End Bag of Myrmidon Set Armor

            PlaceItemIn( bank, 113, 142, cont );
            // End box of Armor Set Pieces

            PlaceItemIn( bank, 118, 111, new ChargerOfTheFallen() );
        }
Exemple #33
0
                public SallosRunebook(Runebook book)
                    : base(0x02, ((book.Entries.Count-2) * 6) + 13)
                {
                    m_Stream.Write((int)book.Serial);
                    m_Stream.Write(false);
                    m_Stream.Write((byte)0);
                    m_Stream.Write((byte)0);
                    m_Stream.Write((byte)0);
                    m_Stream.Write((byte)book.Entries.Count);
                    foreach (var entry in book.Entries)
                    {
                        m_Stream.Write(false);
                        m_Stream.Write((Int16)entry.Location.X);
                        m_Stream.Write((Int16)entry.Location.Y);
                        m_Stream.Write((byte)entry.Map.MapIndex);
                    }
                    

                    m_Stream.Write((int)0);
                }
        public override bool OnDragDrop(Mobile from, Item dropped)
        {
            if (dropped is RecallScroll)
            {
                Item scrolls = dropped as Item;
                int  amount  = scrolls.Amount;

                if (amount <= 0)
                {
                    return(false); //amount should not be zero, but better safe than sorry.
                }
                int count = 0;     //this keeps track of the count of scrolls added to each runebook
                int total = 0;     //this keeps track of the total added to all runebooks
                for (int x = 0; x < 51; x++)
                {
                    if (Books[x].Entries.Count < 16)                   //check each runebook
                    {
                        if (Books[x].CurCharges < Books[x].MaxCharges) //if there is space for more charges...
                        {
                            from.Send(new PlaySound(0x249, from.Location));

                            if (amount > (Books[x].MaxCharges - Books[x].CurCharges))  //if the amount of scrolls is > than space free
                            {
                                count = Books[x].MaxCharges - Books[x].CurCharges;
                                scrolls.Consume(count);
                                Books[x].CurCharges = Books[x].MaxCharges;
                                total  += count;
                                amount -= count;
                            }
                            else  //otherwise we just add/delete whatever scrolls are left
                            {
                                Books[x].CurCharges += amount;
                                scrolls.Delete();
                                total += amount;
                                amount = 0;
                            }
                        }
                    }
                    if (amount <= 0)
                    {
                        from.SendMessage("{0} Recall Scrolls were added.", total.ToString());
                        return(true);
                    }
                }
            }
            else
            if (dropped is RecallRune)
            {
                for (int x = 0; x < 51; x++)
                {
                    if (Books[x].Entries.Count < 16)
                    {
                        RecallRune rune = (RecallRune)dropped;

                        if (rune.Marked && rune.TargetMap != null)
                        {
                            Books[x].Entries.Add(new RunebookEntry(rune.Target, rune.TargetMap, rune.Description, rune.House));

                            dropped.Delete();

                            from.Send(new PlaySound(0x42, GetWorldLocation()));

                            string desc = rune.Description;

                            if (desc == null || (desc = desc.Trim()).Length == 0)
                            {
                                desc = "(indescript)";
                            }

                            from.SendMessage(desc);

                            return(true);
                        }
                        else
                        {
                            from.SendLocalizedMessage(502409);     // This rune does not have a marked location.
                        }
                    }
                }
                from.SendLocalizedMessage(502401);     // This runebook is full.
            }
            else
            if (dropped is Runebook)
            {
                if (((Runebook)dropped).Entries.Count > 0)
                {
                    for (int x = 0; x < 51; x++)
                    {
                        if (Books[x].Entries.Count == 0)
                        {
                            Runebook rb = dropped as Runebook;
                            for (int y = 0; y < rb.Entries.Count; y++)
                            {
                                RunebookEntry rune = rb.Entries[y] as RunebookEntry;
                                Books[x].Entries.Add(new RunebookEntry(rune.Location, rune.Map, rune.Description, rune.House));
                            }
                            Books[x].Name = rb.Name;
                            dropped.Delete();
                            return(true);
                        }
                    }
                    from.SendLocalizedMessage(502401);         // This runebook is full.
                }
                else
                {
                    from.SendMessage("Unable to add a blank runebook.");
                }
            }

            return(false);
        }
			public static bool ADDRUNEBOOKENTRY(
				TriggerObject trigObject, Runebook book, string description, Map map, Point3D location)
			{
				if (book == null || map == null || map == Map.Internal || location == Point3D.Zero || book.Entries.Count >= 16)
				{
					return false;
				}

				if (description == null)
				{
					description = String.Empty;
				}

				book.Entries.Add(new RunebookEntry(location, map, description, null, 0));
				return true;
			}
 public SacredJourneySpell(Mobile caster, Item scroll, RunebookEntry entry, Runebook book)
     : base(caster, scroll, m_Info)
 {
     this.m_Entry = entry;
     this.m_Book = book;
 }
			public static bool REMOVERUNEBOOKENTRY(TriggerObject trigObject, Runebook book, RunebookEntry entry)
			{
				return book != null && entry != null && book.Entries.Remove(entry);
			}
Exemple #38
0
        public PenOfWisdomGump(Mobile from, PenOfWisdom pen, Runebook sourcebook, Runebook copybook, List <RunebookEntry> list)
            : base(50, 50)
        {
            Container bp = from.Backpack;

            Pen              = pen;
            SourceBook       = sourcebook;
            CopyBook         = copybook;
            MarkScrollAmount = bp.GetAmount(typeof(MarkScroll), true);
            RuneAmount       = bp.GetAmount(typeof(RecallRune), true);
            Blank            = copybook.MaxEntries - copybook.Entries.Count;

            if (list == null)
            {
                Checked = new List <RunebookEntry>();
            }
            else
            {
                Checked = list;
            }

            Closable   = false;
            Disposable = true;
            Dragable   = true;

            int entrycount = SourceBook.Entries.Count;

            int y = entrycount <= 16 ? 0 : 25;

            AddPage(0);

            AddBackground(4, 39, 391, 313 + y, 9200);
            AddImageTiled(8, 45, 380, 53, 2624);

            AddHtmlLocalized(7, 50, 380, 53, 1115428, string.Format("@{0}@{1}@{2}@{3}", MarkScrollAmount.ToString(), RuneAmount.ToString(), Checked.Count, Blank.ToString()), EntryColor, false, false); // <CENTER>Pen of Wisdom<br>(Mark Scrolls: ~1_VAL~, Runes: ~2_VAL~ | Selected: ~3_VAL~, Blank: ~4_VAL~)</CENTER>

            AddImageTiled(8, 101, 188, 220, 2624);
            AddImageTiled(199, 101, 188, 220, 2624);

            AddButton(12, 325 + y, 4017, 4018, 20, GumpButtonType.Reply, 0);
            AddHtmlLocalized(48, 326 + y, 78, 20, 1006045, EntryColor, false, false); // Cancel

            AddButton(153, 325 + y, 4011, 4012, 21, GumpButtonType.Reply, 0);
            AddHtmlLocalized(189, 326 + y, 78, 20, 1115427, EntryColor, false, false); // Select All

            AddButton(309, 325 + y, 4023, 4024, 22, GumpButtonType.Reply, 0);
            AddHtmlLocalized(344, 326 + y, 78, 20, 1156596, EntryColor, false, false); // Okay

            string description;

            int page = 1;
            int yy   = 0;

            AddPage(page);

            for (int i = 0; i < entrycount; i++)
            {
                if (page > 1)
                {
                    AddButton(50, 325, 4014, 4015, 0, GumpButtonType.Page, page - 1);
                    AddHtmlLocalized(85, 326, 150, 20, 1011067, EntryColor, false, false); // Previous page
                }

                description = SourceBook.Entries[i].Description;

                if (description == null)
                {
                    if (i + 1 < 10)
                    {
                        description = "0" + (i + 1).ToString();
                    }
                    else
                    {
                        description = (i + 1).ToString();
                    }
                }

                if (yy < 8)
                {
                    AddButton(15, 110 + (yy * 25), Checked.Contains(SourceBook.Entries[i]) ? 211 : 210, Checked.Contains(SourceBook.Entries[i]) ? 210 : 211, i, GumpButtonType.Reply, 0);
                    AddLabelCropped(45, 110 + (yy * 25), 115, 17, RunebookGump.GetMapHue(SourceBook.Entries[i].Map), string.Format("{0}", description));
                }
                else
                {
                    AddButton(205, 110 + ((yy - 8) * 25), Checked.Contains(SourceBook.Entries[i]) ? 211 : 210, Checked.Contains(SourceBook.Entries[i]) ? 210 : 211, i, GumpButtonType.Reply, 0);
                    AddLabelCropped(235, 110 + ((yy - 8) * 25), 115, 17, RunebookGump.GetMapHue(SourceBook.Entries[i].Map), string.Format("{0}", description));
                }

                yy++;

                bool pages = (i + 1) % 16 == 0;

                if (pages && entrycount - 1 != i)
                {
                    AddButton(200, 325, 4005, 4006, 0, GumpButtonType.Page, page + 1);
                    AddHtmlLocalized(235, 326, 150, 20, 1011066, EntryColor, false, false); // Next page
                    page++;
                    AddPage(page);
                    yy = 0;
                }
            }
        }
			public static ArrayList GETRUNEBOOKENTRIES(TriggerObject trigObject, Runebook book)
			{
				return book != null ? new ArrayList(book.Entries) : new ArrayList();
			}
			private bool validateRunebook(Mobile from, Runebook runebook)
			{
				for (int i = 0; i < m_RuneBooks.Count; i++)
				{
					if (((Item)m_RuneBooks[i]) == runebook)
					{
						from.SendMessage("That runebook is already in this library.");
						return false;
					}
				}
				return true;
			}
		public RuneLibraryDungeonsTrammel (Mobile from)
		{
			library = new ArrayList();

			readLine();
			Runebook rb = new Runebook(0);
			int nameStart = 1;
			int nameEnd = 1;
			for( int i=0; i<size; i++ )
			{
				if( rb.Entries.Count == 16 )
				{
					rb.Name = "Dungeons Trammel " + nameStart + " - " + (nameEnd-1);
					library.Add(rb);
					rb = new Runebook(0);
					nameStart = nameEnd;
				}
				int x = int.Parse(xs[i]);
				int y = int.Parse(ys[i]);
				int z = int.Parse(zs[i]);
				Point3D targ = new Point3D(x, y, z);
				RecallRune rr = new RecallRune();
				rr.Target = targ;
				rr.TargetMap = Map.Trammel;
				rr.Description = mapNums[i] + " " + mapNames[i];
				rr.House = null;
				rr.Marked = true;		
				rb.OnDragDrop(from, rr );
				nameEnd++;
			}
			rb.Name = "Dungeons Trammel " + nameStart + " - " + (nameEnd-1);
			library.Add(rb);

			int height = 6;
			int offx;
			int offy;
			int offz;
			for(int p=0; p<library.Count; p++)
			{
				Runebook librarybook = (Runebook)library[p];
				librarybook.Movable = false;
				librarybook.MaxCharges = 12;
				librarybook.CurCharges = 12;
				if(p < 4)
				{
					offx = from.Location.X-1;
					offy = from.Location.Y-1;
					offz = from.Location.Z+height;
				}
				else if(p >= 4 && p < 5)
				{
					offx = from.Location.X;
					offy = from.Location.Y-1;
					offz = from.Location.Z+height+2;
					height += 2;
				}
				else if(p >= 5 && p < 9)
				{
					offx = from.Location.X;
					offy = from.Location.Y-1;
					offz = from.Location.Z+height;
				}
				else
				{
					offx = from.Location.X+1;
					offy = from.Location.Y-1;
					offz = from.Location.Z+height;
				}
				Point3D loc = new Point3D(offx, offy, offz);
				librarybook.MoveToWorld(loc, from.Map);
				if( height == 0 )
					height = 8;
				height -= 2;
			}
		}
Exemple #42
0
        private static void FillBankAOS( Mobile m )
        {
            BankBox bank = m.BankBox;

            // The new AOS bankboxes don't have powerscrolls, they are automatically 'applied':

            for ( int i = 0; i < PowerScroll.Skills.Count; ++i )
                m.Skills[PowerScroll.Skills[ i ]].Cap = 120.0;

            m.StatCap = 250;

            Container cont;

            // Begin box of money
            cont = new WoodenBox();
            cont.ItemID = 0xE7D;
            cont.Hue = 0x489;

            PlaceItemIn( cont, 16, 51, new BankCheck( 500000 ) );
            PlaceItemIn( cont, 28, 51, new BankCheck( 250000 ) );
            PlaceItemIn( cont, 40, 51, new BankCheck( 100000 ) );
            PlaceItemIn( cont, 52, 51, new BankCheck( 100000 ) );
            PlaceItemIn( cont, 64, 51, new BankCheck(  50000 ) );

            PlaceItemIn( cont, 16, 115, new Factions.Silver( 9000 ) );
            PlaceItemIn( cont, 34, 115, new Gold( 60000 ) );

            PlaceItemIn( bank, 18, 169, cont );
            // End box of money

            // Begin bag of potion kegs
            cont = new Backpack();
            cont.Name = "Various Potion Kegs";

            PlaceItemIn( cont,  45, 149, MakePotionKeg( PotionEffect.CureGreater, 0x2D ) );
            PlaceItemIn( cont,  69, 149, MakePotionKeg( PotionEffect.HealGreater, 0x499 ) );
            PlaceItemIn( cont,  93, 149, MakePotionKeg( PotionEffect.PoisonDeadly, 0x46 ) );
            PlaceItemIn( cont, 117, 149, MakePotionKeg( PotionEffect.RefreshTotal, 0x21 ) );
            PlaceItemIn( cont, 141, 149, MakePotionKeg( PotionEffect.ExplosionGreater, 0x74 ) );

            PlaceItemIn( cont, 93, 82, new Bottle( 1000 ) );

            PlaceItemIn( bank, 53, 169, cont );
            // End bag of potion kegs

            // Begin bag of tools
            cont = new Bag();
            cont.Name = "Tool Bag";

            PlaceItemIn( cont, 30,  35, new TinkerTools( 1000 ) );
            PlaceItemIn( cont, 60,  35, new HousePlacementTool() );
            PlaceItemIn( cont, 90,  35, new DovetailSaw( 1000 ) );
            PlaceItemIn( cont, 30,  68, new Scissors() );
            PlaceItemIn( cont, 45,  68, new MortarPestle( 1000 ) );
            PlaceItemIn( cont, 75,  68, new ScribesPen( 1000 ) );
            PlaceItemIn( cont, 90,  68, new SmithHammer( 1000 ) );
            PlaceItemIn( cont, 30, 118, new TwoHandedAxe() );
            PlaceItemIn( cont, 60, 118, new FletcherTools( 1000 ) );
            PlaceItemIn( cont, 90, 118, new SewingKit( 1000 ) );

            PlaceItemIn( cont, 36, 51, new RunicHammer( CraftResource.DullCopper, 1000 ) );
            PlaceItemIn( cont, 42, 51, new RunicHammer( CraftResource.ShadowIron, 1000 ) );
            PlaceItemIn( cont, 48, 51, new RunicHammer( CraftResource.Copper, 1000 ) );
            PlaceItemIn( cont, 54, 51, new RunicHammer( CraftResource.Bronze, 1000 ) );
            PlaceItemIn( cont, 61, 51, new RunicHammer( CraftResource.Gold, 1000 ) );
            PlaceItemIn( cont, 67, 51, new RunicHammer( CraftResource.Agapite, 1000 ) );
            PlaceItemIn( cont, 73, 51, new RunicHammer( CraftResource.Verite, 1000 ) );
            PlaceItemIn( cont, 79, 51, new RunicHammer( CraftResource.Valorite, 1000 ) );

            PlaceItemIn( cont, 36, 55, new RunicSewingKit( CraftResource.SpinedLeather, 1000 ) );
            PlaceItemIn( cont, 42, 55, new RunicSewingKit( CraftResource.HornedLeather, 1000 ) );
            PlaceItemIn( cont, 48, 55, new RunicSewingKit( CraftResource.BarbedLeather, 1000 ) );

            PlaceItemIn( bank, 118, 169, cont );
            // End bag of tools

            // Begin bag of archery ammo
            cont = new Bag();
            cont.Name = "Bag Of Archery Ammo";

            PlaceItemIn( cont, 48, 76, new Arrow( 5000 ) );
            PlaceItemIn( cont, 72, 76, new Bolt( 5000 ) );

            PlaceItemIn( bank, 118, 124, cont );
            // End bag of archery ammo

            // Begin bag of treasure maps
            cont = new Bag();
            cont.Name = "Bag Of Treasure Maps";

            PlaceItemIn( cont, 30, 35, new TreasureMap( 1, Map.Trammel ) );
            PlaceItemIn( cont, 45, 35, new TreasureMap( 2, Map.Trammel ) );
            PlaceItemIn( cont, 60, 35, new TreasureMap( 3, Map.Trammel ) );
            PlaceItemIn( cont, 75, 35, new TreasureMap( 4, Map.Trammel ) );
            PlaceItemIn( cont, 90, 35, new TreasureMap( 5, Map.Trammel ) );
            PlaceItemIn( cont, 90, 35, new TreasureMap( 6, Map.Trammel ) );

            PlaceItemIn( cont, 30, 50, new TreasureMap( 1, Map.Trammel ) );
            PlaceItemIn( cont, 45, 50, new TreasureMap( 2, Map.Trammel ) );
            PlaceItemIn( cont, 60, 50, new TreasureMap( 3, Map.Trammel ) );
            PlaceItemIn( cont, 75, 50, new TreasureMap( 4, Map.Trammel ) );
            PlaceItemIn( cont, 90, 50, new TreasureMap( 5, Map.Trammel ) );
            PlaceItemIn( cont, 90, 50, new TreasureMap( 6, Map.Trammel ) );

            PlaceItemIn( cont, 55, 100, new Lockpick( 30 ) );
            PlaceItemIn( cont, 60, 100, new Pickaxe() );

            PlaceItemIn( bank, 98, 124, cont );
            // End bag of treasure maps

            // Begin bag of raw materials
            cont = new Bag();
            cont.Hue = 0x835;
            cont.Name = "Raw Materials Bag";

            PlaceItemIn( cont, 92, 60, new BarbedLeather( 5000 ) );
            PlaceItemIn( cont, 92, 68, new HornedLeather( 5000 ) );
            PlaceItemIn( cont, 92, 76, new SpinedLeather( 5000 ) );
            PlaceItemIn( cont, 92, 84, new Leather( 5000 ) );

            PlaceItemIn( cont, 30, 118, new Cloth( 5000 ) );
            PlaceItemIn( cont, 30,  84, new Board( 5000 ) );
            PlaceItemIn( cont, 57,  80, new BlankScroll( 500 ) );

            PlaceItemIn( cont, 30,  35, new DullCopperIngot( 5000 ) );
            PlaceItemIn( cont, 37,  35, new ShadowIronIngot( 5000 ) );
            PlaceItemIn( cont, 44,  35, new CopperIngot( 5000 ) );
            PlaceItemIn( cont, 51,  35, new BronzeIngot( 5000 ) );
            PlaceItemIn( cont, 58,  35, new GoldIngot( 5000 ) );
            PlaceItemIn( cont, 65,  35, new AgapiteIngot( 5000 ) );
            PlaceItemIn( cont, 72,  35, new VeriteIngot( 5000 ) );
            PlaceItemIn( cont, 79,  35, new ValoriteIngot( 5000 ) );
            PlaceItemIn( cont, 86,  35, new IronIngot( 5000 ) );

            PlaceItemIn( cont, 30,  59, new RedScales( 5000 ) );
            PlaceItemIn( cont, 36,  59, new YellowScales( 5000 ) );
            PlaceItemIn( cont, 42,  59, new BlackScales( 5000 ) );
            PlaceItemIn( cont, 48,  59, new GreenScales( 5000 ) );
            PlaceItemIn( cont, 54,  59, new WhiteScales( 5000 ) );
            PlaceItemIn( cont, 60,  59, new BlueScales( 5000 ) );

            PlaceItemIn( bank, 98, 169, cont );
            // End bag of raw materials

            // Begin bag of spell casting stuff
            cont = new Backpack();
            cont.Hue = 0x480;
            cont.Name = "Spell Casting Stuff";

            PlaceItemIn( cont, 45, 105, new Spellbook( UInt64.MaxValue ) );
            PlaceItemIn( cont, 65, 105, new NecromancerSpellbook( (UInt64)0xFFFF ) );
            PlaceItemIn( cont, 85, 105, new BookOfChivalry( (UInt64)0x3FF ) );
            PlaceItemIn( cont, 105, 105, new BookOfBushido() );	//Default ctor = full
            PlaceItemIn( cont, 125, 105, new BookOfNinjitsu() ); //Default ctor = full

            Runebook runebook = new Runebook( 10 );
            runebook.CurCharges = runebook.MaxCharges;
            PlaceItemIn( cont, 145, 105, runebook );

            Item toHue = new BagOfReagents( 150 );
            toHue.Hue = 0x2D;
            PlaceItemIn( cont, 45, 150, toHue );

            toHue = new BagOfNecroReagents( 150 );
            toHue.Hue = 0x488;
            PlaceItemIn( cont, 65, 150, toHue );

            PlaceItemIn( cont, 140, 150, new BagOfAllReagents( 500 ) );

            for ( int i = 0; i < 9; ++i )
                PlaceItemIn( cont, 45 + (i * 10), 75, new RecallRune() );

            PlaceItemIn( cont, 141, 74, new FireHorn() );

            PlaceItemIn( bank, 78, 169, cont );
            // End bag of spell casting stuff

            // Begin bag of ethereals
            cont = new Backpack();
            cont.Hue = 0x490;
            cont.Name = "Bag Of Ethy's!";

            PlaceItemIn( cont, 45, 66, new EtherealHorse() );
            PlaceItemIn( cont, 69, 82, new EtherealOstard() );
            PlaceItemIn( cont, 93, 99, new EtherealLlama() );
            PlaceItemIn( cont, 117, 115, new EtherealKirin() );
            PlaceItemIn( cont, 45, 132, new EtherealUnicorn() );
            PlaceItemIn( cont, 69, 66, new EtherealRidgeback() );
            PlaceItemIn( cont, 93, 82, new EtherealSwampDragon() );
            PlaceItemIn( cont, 117, 99, new EtherealBeetle() );

            PlaceItemIn( bank, 38, 124, cont );
            // End bag of ethereals

            // Begin first bag of artifacts
            cont = new Backpack();
            cont.Hue = 0x48F;
            cont.Name = "Bag of Artifacts";

            PlaceItemIn( cont, 45, 66, new TitansHammer() );
            PlaceItemIn( cont, 69, 82, new InquisitorsResolution() );
            PlaceItemIn( cont, 93, 99, new BladeOfTheRighteous() );
            PlaceItemIn( cont, 117, 115, new ZyronicClaw() );

            PlaceItemIn( bank, 58, 124, cont );
            // End first bag of artifacts

            // Begin second bag of artifacts
            cont = new Backpack();
            cont.Hue = 0x48F;
            cont.Name = "Bag of Artifacts";

            PlaceItemIn( cont, 45, 66, new GauntletsOfNobility() );
            PlaceItemIn( cont, 69, 82, new MidnightBracers() );
            PlaceItemIn( cont, 93, 99, new VoiceOfTheFallenKing() );
            PlaceItemIn( cont, 117, 115, new OrnateCrownOfTheHarrower() );
            PlaceItemIn( cont, 45, 132, new HelmOfInsight() );
            PlaceItemIn( cont, 69, 66, new HolyKnightsBreastplate() );
            PlaceItemIn( cont, 93, 82, new ArmorOfFortune() );
            PlaceItemIn( cont, 117, 99, new TunicOfFire() );
            PlaceItemIn( cont, 45, 115, new LeggingsOfBane() );
            PlaceItemIn( cont, 69, 132, new ArcaneShield() );
            PlaceItemIn( cont, 93, 66, new Aegis() );
            PlaceItemIn( cont, 117, 82, new RingOfTheVile() );
            PlaceItemIn( cont, 45, 99, new BraceletOfHealth() );
            PlaceItemIn( cont, 69, 115, new RingOfTheElements() );
            PlaceItemIn( cont, 93, 132, new OrnamentOfTheMagician() );
            PlaceItemIn( cont, 117, 66, new DivineCountenance() );
            PlaceItemIn( cont, 45, 82, new JackalsCollar() );
            PlaceItemIn( cont, 69, 99, new HuntersHeaddress() );
            PlaceItemIn( cont, 93, 115, new HatOfTheMagi() );
            PlaceItemIn( cont, 117, 132, new ShadowDancerLeggings() );
            PlaceItemIn( cont, 45, 66, new SpiritOfTheTotem() );
            PlaceItemIn( cont, 69, 82, new BladeOfInsanity() );
            PlaceItemIn( cont, 93, 99, new AxeOfTheHeavens() );
            PlaceItemIn( cont, 117, 115, new TheBeserkersMaul() );
            PlaceItemIn( cont, 45, 132, new Frostbringer() );
            PlaceItemIn( cont, 69, 66, new BreathOfTheDead() );
            PlaceItemIn( cont, 93, 82, new TheDragonSlayer() );
            PlaceItemIn( cont, 117, 99, new BoneCrusher() );
            PlaceItemIn( cont, 45, 115, new StaffOfTheMagi() );
            PlaceItemIn( cont, 69, 132, new SerpentsFang() );
            PlaceItemIn( cont, 93, 66, new LegacyOfTheDreadLord() );
            PlaceItemIn( cont, 117, 82, new TheTaskmaster() );
            PlaceItemIn( cont, 45, 99, new TheDryadBow() );

            PlaceItemIn( bank, 78, 124, cont );
            // End second bag of artifacts

            // Begin bag of minor artifacts
            cont = new Backpack();
            cont.Hue = 0x48F;
            cont.Name = "Bag of Minor Artifacts";

            PlaceItemIn( cont, 45, 66, new LunaLance() );
            PlaceItemIn( cont, 69, 82, new VioletCourage() );
            PlaceItemIn( cont, 93, 99, new CavortingClub() );
            PlaceItemIn( cont, 117, 115, new CaptainQuacklebushsCutlass() );
            PlaceItemIn( cont, 45, 132, new NightsKiss() );
            PlaceItemIn( cont, 69, 66, new ShipModelOfTheHMSCape() );
            PlaceItemIn( cont, 93, 82, new AdmiralsHeartyRum() );
            PlaceItemIn( cont, 117, 99, new CandelabraOfSouls() );
            PlaceItemIn( cont, 45, 115, new IolosLute() );
            PlaceItemIn( cont, 69, 132, new GwennosHarp() );
            PlaceItemIn( cont, 93, 66, new ArcticDeathDealer() );
            PlaceItemIn( cont, 117, 82, new EnchantedTitanLegBone() );
            PlaceItemIn( cont, 45, 99, new NoxRangersHeavyCrossbow() );
            PlaceItemIn( cont, 69, 115, new BlazeOfDeath() );
            PlaceItemIn( cont, 93, 132, new DreadPirateHat() );
            PlaceItemIn( cont, 117, 66, new BurglarsBandana() );
            PlaceItemIn( cont, 45, 82, new GoldBricks() );
            PlaceItemIn( cont, 69, 99, new AlchemistsBauble() );
            PlaceItemIn( cont, 93, 115, new PhillipsWoodenSteed() );
            PlaceItemIn( cont, 117, 132, new PolarBearMask() );
            PlaceItemIn( cont, 45, 66, new BowOfTheJukaKing() );
            PlaceItemIn( cont, 69, 82, new GlovesOfThePugilist() );
            PlaceItemIn( cont, 93, 99, new OrcishVisage() );
            PlaceItemIn( cont, 117, 115, new StaffOfPower() );
            PlaceItemIn( cont, 45, 132, new ShieldOfInvulnerability() );
            PlaceItemIn( cont, 69, 66, new HeartOfTheLion() );
            PlaceItemIn( cont, 93, 82, new ColdBlood() );
            PlaceItemIn( cont, 117, 99, new GhostShipAnchor() );
            PlaceItemIn( cont, 45, 115, new SeahorseStatuette() );
            PlaceItemIn( cont, 69, 132, new WrathOfTheDryad() );
            PlaceItemIn( cont, 93, 66, new PixieSwatter() );

            for( int i = 0; i < 10; i++ )
                PlaceItemIn( cont, 117, 128, new MessageInABottle( Utility.RandomBool() ? Map.Trammel : Map.Felucca, 4 ) );

            PlaceItemIn( bank, 18, 124, cont );

            if( Core.SE )
            {
                cont = new Bag();
                cont.Hue = 0x501;
                cont.Name = "Tokuno Minor Artifacts";

                PlaceItemIn( cont, 42, 70, new Exiler() );
                PlaceItemIn( cont, 38, 53, new HanzosBow() );
                PlaceItemIn( cont, 45, 40, new TheDestroyer() );
                PlaceItemIn( cont, 92, 80, new DragonNunchaku() );
                PlaceItemIn( cont, 42, 56, new PeasantsBokuto() );
                PlaceItemIn( cont, 44, 71, new TomeOfEnlightenment() );
                PlaceItemIn( cont, 35, 35, new ChestOfHeirlooms() );
                PlaceItemIn( cont, 29,  0, new HonorableSwords() );
                PlaceItemIn( cont, 49, 85, new AncientUrn() );
                PlaceItemIn( cont, 51, 58, new FluteOfRenewal() );
                PlaceItemIn( cont, 70, 51, new PigmentsOfTokuno() );
                PlaceItemIn( cont, 40, 79, new AncientSamuraiDo() );
                PlaceItemIn( cont, 51, 61, new LegsOfStability() );
                PlaceItemIn( cont, 88, 78, new GlovesOfTheSun() );
                PlaceItemIn( cont, 55, 62, new AncientFarmersKasa() );
                PlaceItemIn( cont, 55, 83, new ArmsOfTacticalExcellence() );
                PlaceItemIn( cont, 50, 85, new DaimyosHelm() );
                PlaceItemIn( cont, 52, 78, new BlackLotusHood() );
                PlaceItemIn( cont, 52, 79, new DemonForks() );
                PlaceItemIn( cont, 33, 49, new PilferedDancerFans() );

                PlaceItemIn( bank, 58, 124, cont );
            }

            if( Core.SE )	//This bag came only after SE.
            {
                cont = new Bag();
                cont.Name = "Bag of Bows";

                PlaceItemIn( cont, 31, 84, new Bow() );
                PlaceItemIn( cont, 78, 74, new CompositeBow() );
                PlaceItemIn( cont, 53, 71, new Crossbow() );
                PlaceItemIn( cont, 56, 39, new HeavyCrossbow() );
                PlaceItemIn( cont, 82, 72, new RepeatingCrossbow() );
                PlaceItemIn( cont, 49, 45, new Yumi() );

                for( int i = 0; i < cont.Items.Count; i++ )
                {
                    BaseRanged bow = cont.Items[i] as BaseRanged;

                    if( bow != null )
                    {
                        bow.Attributes.WeaponSpeed = 35;
                        bow.Attributes.WeaponDamage = 35;
                    }
                }

                PlaceItemIn( bank, 108, 135, cont );
            }
        }
        private static void FillBankAOS(Mobile m)
        {
            BankBox bank = m.BankBox;

            // The new AOS bankboxes don't have powerscrolls, they are automatically 'applied':

            //for ( int i = 0; i < PowerScroll.Skills.Length; ++i )
            //m.Skills[PowerScroll.Skills[ i ]].Cap = 120.0;

            m.StatCap = 325;


            Container cont;

            //Here is where you can add new stuff to bank box, but need to follow the numbers...
            // Begin box of money
            cont = new WoodenBox();
            cont.ItemID = 0xE7D;
            cont.Hue = 0x489;
            //Example...PlaceItemIn(cont, 16, 51, new VikingSword() );See how first number is
            //always 12 away...
            PlaceItemIn(cont, 28, 51, new Scissors());
            PlaceItemIn(cont, 40, 51, new EtherealUnicorn());
            PlaceItemIn(cont, 52, 51, new EtherealHorse());
            PlaceItemIn(cont, 64, 51, new BankCheck(100000));
            //PlaceItemIn(cont, 76, 51, new NewCharStartupArmorBag());           
            ///PlaceItemIn(cont, 88, 51, new LargeMarbleDeed());
         
            

            PlaceItemIn(bank, 18, 169, cont);
            // End box of money


            // Begin bag of potion kegs
            /*cont = new Backpack();
            cont.Name = "Various Potion Kegs";

            PlaceItemIn( cont,  45, 149, MakePotionKeg( PotionEffect.CureGreater, 0x2D ) );
            PlaceItemIn( cont,  69, 149, MakePotionKeg( PotionEffect.HealGreater, 0x499 ) );
            PlaceItemIn( cont,  93, 149, MakePotionKeg( PotionEffect.PoisonDeadly, 0x46 ) );
            PlaceItemIn( cont, 117, 149, MakePotionKeg( PotionEffect.RefreshTotal, 0x21 ) );
            PlaceItemIn( cont, 141, 149, MakePotionKeg( PotionEffect.ExplosionGreater, 0x74 ) );

            PlaceItemIn( cont, 93, 82, new Bottle( 1000 ) );

            PlaceItemIn( bank, 53, 169, cont );
            // End bag of potion kegs


            // Begin bag of tools
            cont = new Bag();
            cont.Name = "Tool Bag";

            PlaceItemIn( cont, 30,  35, new TinkerTools( 1000 ) );
            PlaceItemIn( cont, 60,  35, new HousePlacementTool() );
            PlaceItemIn( cont, 90,  35, new DovetailSaw( 1000 ) );
            PlaceItemIn( cont, 30,  68, new Scissors() );
            PlaceItemIn( cont, 45,  68, new MortarPestle( 1000 ) );
            PlaceItemIn( cont, 75,  68, new ScribesPen( 1000 ) );
            PlaceItemIn( cont, 90,  68, new SmithHammer( 1000 ) );
            PlaceItemIn( cont, 30, 118, new TwoHandedAxe() );
            PlaceItemIn( cont, 60, 118, new FletcherTools( 1000 ) );
            PlaceItemIn( cont, 90, 118, new SewingKit( 1000 ) );

            PlaceItemIn( cont, 36, 51, new RunicHammer( CraftResource.DullCopper, 1000 ) );
            PlaceItemIn( cont, 42, 51, new RunicHammer( CraftResource.ShadowIron, 1000 ) );
            PlaceItemIn( cont, 48, 51, new RunicHammer( CraftResource.Copper, 1000 ) );
            PlaceItemIn( cont, 54, 51, new RunicHammer( CraftResource.Bronze, 1000 ) );
            PlaceItemIn( cont, 61, 51, new RunicHammer( CraftResource.Gold, 1000 ) );
            PlaceItemIn( cont, 67, 51, new RunicHammer( CraftResource.Agapite, 1000 ) );
            PlaceItemIn( cont, 73, 51, new RunicHammer( CraftResource.Verite, 1000 ) );
            PlaceItemIn( cont, 79, 51, new RunicHammer( CraftResource.Valorite, 1000 ) );

            PlaceItemIn( cont, 36, 55, new RunicSewingKit( CraftResource.SpinedLeather, 1000 ) );
            PlaceItemIn( cont, 42, 55, new RunicSewingKit( CraftResource.HornedLeather, 1000 ) );
            PlaceItemIn( cont, 48, 55, new RunicSewingKit( CraftResource.BarbedLeather, 1000 ) );

            PlaceItemIn( bank, 118, 169, cont );
            // End bag of tools


            // Begin bag of archery ammo
            cont = new Bag();
            cont.Name = "Bag Of Archery Ammo";

            PlaceItemIn( cont, 48, 76, new Arrow( 5000 ) );
            PlaceItemIn( cont, 72, 76, new Bolt( 5000 ) );

            PlaceItemIn( bank, 118, 124, cont );
            // End bag of archery ammo


            // Begin bag of treasure maps
            cont = new Bag();
            cont.Name = "Bag Of Treasure Maps";

            PlaceItemIn( cont, 30, 35, new TreasureMap( 1, Map.Trammel ) );
            PlaceItemIn( cont, 45, 35, new TreasureMap( 2, Map.Trammel ) );
            PlaceItemIn( cont, 60, 35, new TreasureMap( 3, Map.Trammel ) );
            PlaceItemIn( cont, 75, 35, new TreasureMap( 4, Map.Trammel ) );
            PlaceItemIn( cont, 90, 35, new TreasureMap( 5, Map.Trammel ) );
            PlaceItemIn( cont, 90, 35, new TreasureMap( 6, Map.Trammel ) );

            PlaceItemIn( cont, 30, 50, new TreasureMap( 1, Map.Trammel ) );
            PlaceItemIn( cont, 45, 50, new TreasureMap( 2, Map.Trammel ) );
            PlaceItemIn( cont, 60, 50, new TreasureMap( 3, Map.Trammel ) );
            PlaceItemIn( cont, 75, 50, new TreasureMap( 4, Map.Trammel ) );
            PlaceItemIn( cont, 90, 50, new TreasureMap( 5, Map.Trammel ) );
            PlaceItemIn( cont, 90, 50, new TreasureMap( 6, Map.Trammel ) );

            PlaceItemIn( cont, 55, 100, new Lockpick( 30 ) );
            PlaceItemIn( cont, 60, 100, new Pickaxe() );

            PlaceItemIn( bank, 98, 124, cont );
            // End bag of treasure maps


            // Begin bag of raw materials
            cont = new Bag();
            cont.Hue = 0x835;
            cont.Name = "Raw Materials Bag";

            PlaceItemIn( cont, 92, 60, new BarbedLeather( 5000 ) );
            PlaceItemIn( cont, 92, 68, new HornedLeather( 5000 ) );
            PlaceItemIn( cont, 92, 76, new SpinedLeather( 5000 ) );
            PlaceItemIn( cont, 92, 84, new Leather( 5000 ) );

            PlaceItemIn( cont, 30, 118, new Cloth( 5000 ) );
            PlaceItemIn( cont, 30,  84, new Board( 5000 ) );
            PlaceItemIn( cont, 57,  80, new BlankScroll( 500 ) );

            PlaceItemIn( cont, 30,  35, new DullCopperIngot( 5000 ) );
            PlaceItemIn( cont, 37,  35, new ShadowIronIngot( 5000 ) );
            PlaceItemIn( cont, 44,  35, new CopperIngot( 5000 ) );
            PlaceItemIn( cont, 51,  35, new BronzeIngot( 5000 ) );
            PlaceItemIn( cont, 58,  35, new GoldIngot( 5000 ) );
            PlaceItemIn( cont, 65,  35, new AgapiteIngot( 5000 ) );
            PlaceItemIn( cont, 72,  35, new VeriteIngot( 5000 ) );
            PlaceItemIn( cont, 79,  35, new ValoriteIngot( 5000 ) );
            PlaceItemIn( cont, 86,  35, new IronIngot( 5000 ) );

            PlaceItemIn( cont, 30,  59, new RedScales( 5000 ) );
            PlaceItemIn( cont, 36,  59, new YellowScales( 5000 ) );
            PlaceItemIn( cont, 42,  59, new BlackScales( 5000 ) );
            PlaceItemIn( cont, 48,  59, new GreenScales( 5000 ) );
            PlaceItemIn( cont, 54,  59, new WhiteScales( 5000 ) );
            PlaceItemIn( cont, 60,  59, new BlueScales( 5000 ) );

            PlaceItemIn( bank, 98, 169, cont );*/
            // End bag of raw materials


            // Begin bag of spell casting stuff
            cont = new Backpack();
            cont.Hue = 0x480;
            cont.Name = "Spell Casting Stuff";

            //PlaceItemIn(cont, 45, 105, new Spellbook(UInt64.MaxValue));
            //PlaceItemIn(cont, 65, 105, new NecromancerSpellbook((UInt64)0xFFFF));
            PlaceItemIn( cont, 85, 105, new RecallRune(10) );
            //PlaceItemIn( cont, 105, 105, new BookOfBushido() );	//Default ctor = full
            //PlaceItemIn( cont, 125, 105, new BookOfNinjitsu() ); //Default ctor = full

            Runebook runebook = new Runebook(10);
            runebook.CurCharges = runebook.MaxCharges;
            PlaceItemIn(cont, 145, 105, runebook);

            Item toHue = new BagOfReagents(50);
            toHue.Hue = 0x2D;
            PlaceItemIn(cont, 45, 150, toHue);

            toHue = new BagOfNecroReagents(50);
            toHue.Hue = 0x488;
            PlaceItemIn(cont, 65, 150, toHue);

            //PlaceItemIn( cont, 140, 150, new BagOfAllReagents( 500 ) );

            //for (int i = 0; i < 9; ++i)
                //PlaceItemIn( cont, 45 + (i * 10), 75, new RecallRune() );

                //PlaceItemIn( cont, 141, 74, new FireHorn() );

                PlaceItemIn(bank, 78, 169, cont);

        }
			public InternalPrompt( Runebook book )
			{
				m_Book = book;
			}
Exemple #45
0
        public static void GetListOfItems(Mobile from)
        {
            //List of Item Locations Message
            //***Put item into Backpack
            #region Backpack
            from.SendMessage("You will find new items in your Backpack.");
            from.Backpack.AddItem(new KillBook());                          //http://www.runuo.com/forums/custom-script-releases/80034-book-kills.html
            from.Backpack.AddItem(new AnNoxGuideBook());
            #endregion

            //***Drop item on the Ground
            #region Ground
            //put item under player on the ground
            from.SendMessage("You will find new items on the ground near by.");
            new SewingKit().MoveToWorld(from.Location, from.Map);
            new Bible().MoveToWorld(from.Location, from.Map);               //http://www.runuo.com/forums/custom-script-releases/71826-runuo-2-0-rc1-lokais-xml-bible-system.html
            new BeltranGuideBook().MoveToWorld(from.Location, from.Map);    //http://www.runuo.com/forums/runuo-post-archive/34074-osi-library-books.html
            new PrimerArmsBook().MoveToWorld(from.Location, from.Map);      //http://www.runuo.com/forums/runuo-post-archive/34074-osi-library-books.html

            //put item near player on the ground
            new BagOfDresses().MoveToWorld(new Point3D(from.X + Utility.RandomMinMax(-5, 5), from.Y + Utility.RandomMinMax(-5, 5), from.Z), from.Map);
            new BagOfJewlery().MoveToWorld(new Point3D(from.X + Utility.RandomMinMax(-5, 5), from.Y + Utility.RandomMinMax(-5, 5), from.Z), from.Map);
            new BagOfShirts().MoveToWorld(new Point3D(from.X + Utility.RandomMinMax(-5, 5), from.Y + Utility.RandomMinMax(-5, 5), from.Z), from.Map);
            new BagOfPants().MoveToWorld(new Point3D(from.X + Utility.RandomMinMax(-5, 5), from.Y + Utility.RandomMinMax(-5, 5), from.Z), from.Map);
            new BagOfShoes().MoveToWorld(new Point3D(from.X + Utility.RandomMinMax(-5, 5), from.Y + Utility.RandomMinMax(-5, 5), from.Z), from.Map);
            new BagOfCloaks().MoveToWorld(new Point3D(from.X + Utility.RandomMinMax(-5, 5), from.Y + Utility.RandomMinMax(-5, 5), from.Z), from.Map);
            new BagOfHats().MoveToWorld(new Point3D(from.X + Utility.RandomMinMax(-5, 5), from.Y + Utility.RandomMinMax(-5, 5), from.Z), from.Map);
            #endregion

            //***Put item into Bank
            #region Bank
            from.SendMessage("You will find new items in your Bank.");
            BankBox bank = from.BankBox;
            Container cont;

            // Begin box of money
            cont = new WoodenBox();
            cont.Name = "Money Box";
            cont.ItemID = 0xE7D;
            cont.Hue = 0x489;

            PlaceItemIn(cont, 64, 51, new BankCheck(5000));
            PlaceItemIn(cont, 16, 115, new Factions.Silver(1000));
            PlaceItemIn(cont, 34, 115, new Gold(1000));

            PlaceItemIn(bank, 18, 169, cont);

            // Begin bag of archery ammo
            cont = new Bag();
            cont.Name = "Bag Of Archery Ammo";

            PlaceItemIn(cont, 48, 76, new Arrow(50));
            PlaceItemIn(cont, 72, 76, new Bolt(50));

            PlaceItemIn(bank, 118, 124, cont);

            // Begin bag of raw materials
            cont = new Bag();
            cont.Hue = 0x835;
            cont.Name = "Raw Materials Bag";

            PlaceItemIn(cont, 92, 84, new Leather(50));
            PlaceItemIn(cont, 30, 118, new Cloth(50));
            PlaceItemIn(cont, 30, 84, new Board(50));
            PlaceItemIn(cont, 57, 80, new BlankScroll(50));

            PlaceItemIn(bank, 98, 169, cont);

            // Begin bag of spell casting stuff
            cont = new Backpack();
            cont.Hue = 0x480;
            cont.Name = "Spell Casting Stuff";

            PlaceItemIn(cont, 45, 105, new Spellbook(UInt64.MaxValue));
            PlaceItemIn(cont, 65, 105, new NecromancerSpellbook((UInt64)0xFFFF));
            PlaceItemIn(cont, 85, 105, new BookOfChivalry((UInt64)0x3FF));
            PlaceItemIn(cont, 105, 105, new BookOfBushido());	//Default ctor = full
            PlaceItemIn(cont, 125, 105, new BookOfNinjitsu()); //Default ctor = full

            Runebook runebook = new Runebook(10);
            runebook.CurCharges = runebook.MaxCharges;
            PlaceItemIn(cont, 145, 105, runebook);

            Item toHue = new BagOfReagents(50);
            toHue.Hue = 0x2D;
            toHue.Name = "Bag of Basic Reagents";
            PlaceItemIn(cont, 45, 150, toHue);

            toHue = new BagOfNecroReagents(50);
            toHue.Hue = 0x488;
            toHue.Name = "Bag of Necro Reagents";
            PlaceItemIn(cont, 65, 150, toHue);

            toHue = new BagOfAllReagents(50);
            toHue.Hue = 0x2D;
            toHue.Name = "Bag of All Reagents";
            PlaceItemIn(cont, 140, 150, toHue);

            for (int i = 0; i < 9; ++i)
                PlaceItemIn(cont, 45 + (i * 10), 75, new RecallRune());

            PlaceItemIn(cont, 141, 74, new FireHorn());

            PlaceItemIn(bank, 78, 169, cont);
            #endregion
        }