Esempio n. 1
0
		public Item Reconstruct()
		{
			LargeBOD bod = null;

			if ( m_DeedType == BODType.Smith )
				bod = new LargeSmithBOD( m_AmountMax, m_RequireExceptional, m_Material, ReconstructEntries() );
			else if ( m_DeedType == BODType.Tailor )
				bod = new LargeTailorBOD( m_AmountMax, m_RequireExceptional, m_Material, ReconstructEntries() );

			for ( int i = 0; bod != null && i < bod.Entries.Length; ++i )
				bod.Entries[i].Owner = bod;

			return bod;
		}
Esempio n. 2
0
        public override void OnDoubleClick(Mobile from)
        {
            if (!from.InRange(GetWorldLocation(), 2))
            {
                from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045);                   // I can't reach that.
            }

            else if (m_Deed > 0)
            {
                Item Deed = null;

                switch (Utility.Random(6))
                {
                case 0: Deed = new LargeSmithBOD(); break;

                case 1: Deed = new SmallSmithBOD(); break;

                case 2: Deed = new LargeTailorBOD(); break;

                case 3: Deed = new SmallTailorBOD(); break;

                case 4: Deed = new SmallTamingBOD(); break;

                case 5: Deed = new LargeTamingBOD(); break;
                }

                int amount = Math.Min(1, m_Deed);
                Deed.Amount = amount;

                if (!from.PlaceInBackpack(Deed))
                {
                    Deed.Delete();
                    from.SendLocalizedMessage(1078837);                       // Your backpack is full! Please make room and try again.
                }
                else
                {
                    m_Deed -= amount;
                    PublicOverheadMessage(MessageType.Regular, 0x3B2, 503201);                       // You take the item.
                }
            }
            else
            {
                from.SendMessage("There are no more BOD's available.");                   // There are no more BOD's available.
            }
        }
Esempio n. 3
0
        public Item Reconstruct()
        {
            LargeBOD bod = null;

            if (DeedType == BODType.Smith)
            {
                bod = new LargeSmithBOD(AmountMax, RequireExceptional, Material, ReconstructEntries());
            }
            else if (DeedType == BODType.Tailor)
            {
                bod = new LargeTailorBOD(AmountMax, RequireExceptional, Material, ReconstructEntries());
            }

            for (var i = 0; bod?.Entries.Length >= i; ++i)
            {
                bod.Entries[i].Owner = bod;
            }

            return(bod);
        }
Esempio n. 4
0
        public Item Reconstruct()
        {
            LargeBOD bod = null;

            if (m_DeedType == BODType.Smith)
            {
                bod = new LargeSmithBOD(m_AmountMax, m_RequireExceptional, m_Material, ReconstructEntries());
            }
            else if (m_DeedType == BODType.Tailor)
            {
                bod = new LargeTailorBOD(m_AmountMax, m_RequireExceptional, m_Material, ReconstructEntries());
            }

            for (int i = 0; bod != null && i < bod.Entries.Length; ++i)
            {
                bod.Entries[i].Owner = bod;
            }

            return(bod);
        }
Esempio n. 5
0
        public override void DoTransmute(Mobile from, Recipe r)
        {
            if (r == null || from == null)
            {
                return;
            }

            Recipes rid = (Recipes)r.RecipeID;

            switch (rid)
            {
            case Recipes.PowerScrollSkillChange:
            {
                // get the target value from one of the powerscrolls
                Item[] slist = this.FindItemsByType(typeof(PowerScroll), true);

                double value = 0;
                // make sure they are all of the same value
                foreach (Item s in slist)
                {
                    if (value == 0)
                    {
                        value = ((PowerScroll)s).Value;
                    }
                    else
                    {
                        if (value != ((PowerScroll)s).Value)
                        {
                            from.SendMessage("All powerscrolls must be of the same level");
                            return;
                        }
                    }
                }

                PowerScroll newps = PowerScroll.CreateRandom((int)(value - 100), (int)(value - 100));

                // consume ingredients
                this.ConsumeAll();

                // add the new powerscroll
                this.DropItem(newps);

                break;
            }

            case Recipes.SmallBODChange:
            {
                // get the target value from one of the powerscrolls
                Item[] slist = this.FindItemsByType(typeof(SmallBOD), true);

                Type t = null;
                // make sure they are all of the same type
                foreach (Item s in slist)
                {
                    if (t == null)
                    {
                        t = ((SmallBOD)s).GetType();
                    }
                    else
                    {
                        if (t != ((SmallBOD)s).GetType())
                        {
                            from.SendMessage("All BODs must be of the same type");
                            return;
                        }
                    }
                }

                SmallBOD newbod = null;

                if (t == typeof(SmallTailorBOD))
                {
                    newbod = new SmallTailorBOD();
                }
                else if (t == typeof(SmallSmithBOD))
                {
                    newbod = new SmallSmithBOD();
                }
                else
                {
                    from.SendMessage("Cannot transmute those BODs");
                    return;
                }

                if (newbod == null)
                {
                    return;
                }

                // consume ingredients
                this.ConsumeAll();

                // add the new powerscroll
                this.DropItem(newbod);

                break;
            }

            case Recipes.LargeBODChange:
            {
                // get the target value from one of the powerscrolls
                Item[] slist = this.FindItemsByType(typeof(LargeBOD), true);

                Type t = null;
                // make sure they are all of the same type
                foreach (Item s in slist)
                {
                    if (t == null)
                    {
                        t = ((LargeBOD)s).GetType();
                    }
                    else
                    {
                        if (t != ((LargeBOD)s).GetType())
                        {
                            from.SendMessage("All BODs must be of the same type");
                            return;
                        }
                    }
                }

                LargeBOD newbod = null;

                if (t == typeof(LargeTailorBOD))
                {
                    newbod = new LargeTailorBOD();
                }
                else if (t == typeof(LargeSmithBOD))
                {
                    newbod = new LargeSmithBOD();
                }
                else
                {
                    from.SendMessage("Cannot transmute those BODs");
                    return;
                }

                if (newbod == null)
                {
                    return;
                }

                // consume ingredients
                this.ConsumeAll();

                // add the new powerscroll
                this.DropItem(newbod);

                break;
            }

            case Recipes.UpgradeAncientAugment:
            {
                // check what type of augment is being upgraded
                BaseSocketAugmentation augment = null;
                if (this.Items.Count > 0)
                {
                    augment = this.Items[0] as BaseSocketAugmentation;
                }

                if (augment == null)
                {
                    return;
                }

                // make sure they are all the same
                foreach (Item i in this.Items)
                {
                    if (augment.GetType() != i.GetType())
                    {
                        return;
                    }
                }

                // take the ingredients
                this.ConsumeAll();
                // and add the result
                if (augment is AncientDiamond)
                {
                    this.DropItem(new LegendaryDiamond());
                }
                else if (augment is AncientSapphire)
                {
                    this.DropItem(new LegendarySapphire());
                }
                else if (augment is AncientSkull)
                {
                    this.DropItem(new LegendarySkull());
                }
                else if (augment is AncientTourmaline)
                {
                    this.DropItem(new LegendaryTourmaline());
                }
                else if (augment is AncientWood)
                {
                    this.DropItem(new LegendaryWood());
                }
                else if (augment is AncientRuby)
                {
                    this.DropItem(new LegendaryRuby());
                }
                else if (augment is AncientEmerald)
                {
                    this.DropItem(new LegendaryEmerald());
                }
                else if (augment is AncientAmethyst)
                {
                    this.DropItem(new LegendaryAmethyst());
                }

                break;
            }

            case Recipes.UpgradeLegendaryAugment:
            {
                // check what type of augment is being upgraded
                BaseSocketAugmentation augment = null;
                if (this.Items.Count > 0)
                {
                    augment = this.Items[0] as BaseSocketAugmentation;
                }

                if (augment == null)
                {
                    return;
                }

                // make sure they are all the same
                foreach (Item i in this.Items)
                {
                    if (augment.GetType() != i.GetType())
                    {
                        return;
                    }
                }

                // take the ingredients
                this.ConsumeAll();

                // and add the result
                if (augment is LegendaryDiamond)
                {
                    this.DropItem(new MythicDiamond());
                }
                else if (augment is LegendarySapphire)
                {
                    this.DropItem(new MythicSapphire());
                }
                else if (augment is LegendarySkull)
                {
                    this.DropItem(new MythicSkull());
                }
                else if (augment is LegendaryTourmaline)
                {
                    this.DropItem(new MythicTourmaline());
                }
                else if (augment is LegendaryWood)
                {
                    this.DropItem(new MythicWood());
                }
                else if (augment is LegendaryRuby)
                {
                    this.DropItem(new MythicRuby());
                }
                else if (augment is LegendaryEmerald)
                {
                    this.DropItem(new MythicEmerald());
                }
                else if (augment is LegendaryAmethyst)
                {
                    this.DropItem(new MythicAmethyst());
                }

                break;
            }

            case Recipes.UpgradeCrystalAugment:
            {
                // check what type of augment is being upgraded
                BaseSocketAugmentation augment = null;
                if (this.Items.Count > 0)
                {
                    augment = this.Items[0] as BaseSocketAugmentation;
                }

                if (augment == null)
                {
                    return;
                }

                // make sure they are all the same
                foreach (Item i in this.Items)
                {
                    if (augment.GetType() != i.GetType())
                    {
                        return;
                    }
                }

                // take the ingredients
                this.ConsumeAll();

                // and add the result
                if (augment is RhoCrystal)
                {
                    this.DropItem(new RadiantRhoCrystal());
                }
                else if (augment is RysCrystal)
                {
                    this.DropItem(new RadiantRysCrystal());
                }
                else if (augment is WyrCrystal)
                {
                    this.DropItem(new RadiantWyrCrystal());
                }
                else if (augment is FreCrystal)
                {
                    this.DropItem(new RadiantFreCrystal());
                }
                else if (augment is TorCrystal)
                {
                    this.DropItem(new RadiantTorCrystal());
                }
                else if (augment is VelCrystal)
                {
                    this.DropItem(new RadiantVelCrystal());
                }
                else if (augment is XenCrystal)
                {
                    this.DropItem(new RadiantXenCrystal());
                }
                else if (augment is PolCrystal)
                {
                    this.DropItem(new RadiantPolCrystal());
                }
                else if (augment is WolCrystal)
                {
                    this.DropItem(new RadiantWolCrystal());
                }
                else if (augment is BalCrystal)
                {
                    this.DropItem(new RadiantBalCrystal());
                }
                else if (augment is TalCrystal)
                {
                    this.DropItem(new RadiantTalCrystal());
                }
                else if (augment is JalCrystal)
                {
                    this.DropItem(new RadiantJalCrystal());
                }
                else if (augment is RalCrystal)
                {
                    this.DropItem(new RadiantRalCrystal());
                }
                else if (augment is KalCrystal)
                {
                    this.DropItem(new RadiantKalCrystal());
                }

                break;
            }

            case Recipes.RecoverAugmentation:
            {
                // does item have any sockets on it?
                Item b = this.FindItemByType(typeof(BaseArmor), true);
                if (b == null)
                {
                    b = this.FindItemByType(typeof(BaseWeapon), true);
                }
                if (b == null)
                {
                    b = this.FindItemByType(typeof(BaseJewel), true);
                }

                XmlSockets a = XmlAttach.FindAttachment(b, typeof(XmlSockets)) as XmlSockets;
                if (a == null)
                {
                    // if so then forget it
                    from.SendMessage("This item is not socketed.");
                    return;
                }

                if (a.NSockets == 0)
                {
                    from.SendMessage("This item is has no sockets.");
                    return;
                }

                BaseSocketAugmentation augment = a.RecoverRandomAugmentation(from, b);

                if (augment != null)
                {
                    // consume the crystal
                    this.ConsumeTotal(typeof(AncientRuby), 1, true);

                    // put the recovered augment in the container
                    this.DropItem(augment);

                    from.SendMessage("Recovered a {0} augmentation.", augment.Name);

                    // update the sockets gump
                    a.OnIdentify(from);
                }
                else
                {
                    from.SendMessage("Failed to recover augmentation.");
                }

                break;
            }

            case Recipes.HammerOfRecovery:
            {
                // consume ingredients
                this.ConsumeAll();

                // add the hammer
                this.DropItem(new HammerOfRecovery(1));

                break;
            }

            case Recipes.ExceptionalSocketHammer:
            {
                // consume ingredients
                this.ConsumeAll();

                // add the hammer
                this.DropItem(new ExceptionalSocketHammer(1));

                break;
            }

            case Recipes.SocketWeapon:
            {
                // does the weapon already have any sockets on it?
                Item          b = this.FindItemByType(typeof(BaseWeapon), true);
                XmlAttachment a = XmlAttach.FindAttachment(b, typeof(XmlSockets));
                if (a != null)
                {
                    // if so then forget it
                    from.SendMessage("Weapon already socketed.");
                    return;
                }
                // otherwise add the socket
                XmlAttach.AttachTo(b, new XmlSockets(1));
                // consume the crystal
                this.ConsumeTotal(typeof(RadiantRhoCrystal), 1, true);
                break;
            }

            case Recipes.SocketArmor:
            {
                // does the armor already have any sockets on it?
                Item          b = this.FindItemByType(typeof(BaseArmor), true);
                XmlAttachment a = XmlAttach.FindAttachment(b, typeof(XmlSockets));
                if (a != null)
                {
                    // if so then forget it
                    from.SendMessage("Armor already socketed.");
                    return;
                }
                // otherwise add the socket
                XmlAttach.AttachTo(b, new XmlSockets(1));
                // consume the crystal
                this.ConsumeTotal(typeof(RadiantRhoCrystal), 1, true);
                break;
            }

                // Uncomment the follow recipes if you have XmlMobFactions installed and you would like to allow faction gain through these recipes
            #if (XMLMOBFACTIONS)
            case Recipes.UndeadFaction:
            {
                // how much gold is being offered
                Item b     = FindItemByType(typeof(Gold), true);
                int  value = 0;
                if (b != null)
                {
                    value = b.Amount / 10;
                }
                // take the ingredients
                ConsumeAll();
                // add the faction
                XmlAttach.AttachTo(from, new XmlAddFaction("Undead", value));
                break;
            }

            case Recipes.AbyssFaction:
            {
                // how much gold is being offered
                Item b     = FindItemByType(typeof(Gold), true);
                int  value = 0;
                if (b != null)
                {
                    value = b.Amount / 10;
                }
                // take the ingredients
                ConsumeAll();
                // add the faction
                XmlAttach.AttachTo(from, new XmlAddFaction("Abyss", value));
                break;
            }

            case Recipes.HumanoidFaction:
            {
                // how much gold is being offered
                Item b     = FindItemByType(typeof(Gold), true);
                int  value = 0;
                if (b != null)
                {
                    value = b.Amount / 10;
                }
                // take the ingredients
                ConsumeAll();
                // add the faction
                XmlAttach.AttachTo(from, new XmlAddFaction("Humanoid", value));
                break;
            }

            case Recipes.ReptilianFaction:
            {
                // how much gold is being offered
                Item b     = FindItemByType(typeof(Gold), true);
                int  value = 0;
                if (b != null)
                {
                    value = b.Amount / 10;
                }
                // take the ingredients
                ConsumeAll();
                // add the faction
                XmlAttach.AttachTo(from, new XmlAddFaction("Reptilian", value));
                break;
            }

            case Recipes.ArachnidFaction:
            {
                // how much gold is being offered
                Item b     = FindItemByType(typeof(Gold), true);
                int  value = 0;
                if (b != null)
                {
                    value = b.Amount / 10;
                }
                // take the ingredients
                ConsumeAll();
                // add the faction
                XmlAttach.AttachTo(from, new XmlAddFaction("Arachnid", value));
                break;
            }

            case Recipes.ElementalFaction:
            {
                // how much gold is being offered
                Item b     = FindItemByType(typeof(Gold), true);
                int  value = 0;
                if (b != null)
                {
                    value = b.Amount / 10;
                }
                // take the ingredients
                ConsumeAll();
                // add the faction
                XmlAttach.AttachTo(from, new XmlAddFaction("Elemental", value));
                break;
            }

            case Recipes.UnderworldFaction:
            {
                // how much gold is being offered
                Item b     = FindItemByType(typeof(Gold), true);
                int  value = 0;
                if (b != null)
                {
                    value = b.Amount / 10;
                }
                // take the ingredients
                ConsumeAll();
                // add the faction
                XmlAttach.AttachTo(from, new XmlAddFaction("Underworld", value));
                break;
            }
// end of commented-out XmlMobFactions recipes
            #endif
            }

            // give effects for successful transmutation
            from.PlaySound(503);

            base.DoTransmute(from, r);
        }