예제 #1
0
        public Item Reconstruct()
        {
            LargeBOD bod = null;

            switch (m_DeedType)
            {
            case BODType.Smith: bod = new LargeSmithBOD(m_AmountMax, m_RequireExceptional, m_Material, ReconstructEntries()); break;

            case BODType.Tailor: bod = new LargeTailorBOD(m_AmountMax, m_RequireExceptional, m_Material, ReconstructEntries()); break;

            case BODType.Inscription: bod = new LargeInscriptionBOD(m_AmountMax, m_RequireExceptional, m_Material, ReconstructEntries()); break;

            case BODType.Alchemy: bod = new LargeAlchemyBOD(m_AmountMax, m_RequireExceptional, m_Material, ReconstructEntries()); break;

            case BODType.Carpentry: bod = new LargeCarpentryBOD(m_AmountMax, m_RequireExceptional, m_Material, ReconstructEntries()); break;

            case BODType.Fletching: bod = new LargeFletchingBOD(m_AmountMax, m_RequireExceptional, m_Material, ReconstructEntries()); break;

            case BODType.Tinkering: bod = new LargeTinkerBOD(m_AmountMax, m_RequireExceptional, m_Material, ReconstructEntries(), m_GemType); break;

            case BODType.Cooking: bod = new LargeCookingBOD(m_AmountMax, m_RequireExceptional, m_Material, ReconstructEntries()); break;
            }

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

            return(bod);
        }
예제 #2
0
        public Item Reconstruct()
        {
            LargeBOD bod = null;

            if (this.m_DeedType == BODType.Smith)
            {
                bod = new LargeSmithBOD(this.m_AmountMax, this.m_RequireExceptional, this.m_Material, this.ReconstructEntries());
            }
            else if (this.m_DeedType == BODType.Tailor)
            {
                bod = new LargeTailorBOD(this.m_AmountMax, this.m_RequireExceptional, this.m_Material, this.ReconstructEntries());
            }
            //--<< Custom BODs Edit>>-------------------------------[Start 1 of 2]
            else if (m_DeedType == BODType.Carpenter)
            {
                bod = new LargeFletcherBOD(m_AmountMax, m_RequireExceptional, m_Material, ReconstructEntries());
            }
            else if (m_DeedType == BODType.Fletcher)
            {
                bod = new LargeCarpenterBOD(m_AmountMax, m_RequireExceptional, m_Material, ReconstructEntries());
            }
            //--<< Custom BODs Edit>>-------------------------------[End 1 of 2]

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

            return(bod);
        }
예제 #3
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());
            }
            // ***
            else if (m_DeedType == BODType.Hunter)
            {
                bod = new LargeHuntBOD(m_AmountMax, m_RequireExceptional, (int)m_Material, ReconstructEntries());
            }
            // ***

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

            return(bod);
        }
예제 #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;
		}
예제 #5
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());
            }
            else if (m_DeedType == BODType.Inscription)
            {
                bod = new LargeInscriptionBOD(m_AmountMax, m_RequireExceptional, m_Material, ReconstructEntries());
            }
            else if (m_DeedType == BODType.Alchemy)
            {
                bod = new LargeAlchemyBOD(m_AmountMax, m_RequireExceptional, m_Material, ReconstructEntries());
            }
            else if (m_DeedType == BODType.Carpentry)
            {
                bod = new LargeCarpentryBOD(m_AmountMax, m_RequireExceptional, m_Material, ReconstructEntries());
            }
            else if (m_DeedType == BODType.Fletching)
            {
                bod = new LargeFletchingBOD(m_AmountMax, m_RequireExceptional, m_Material, ReconstructEntries());
            }
            else if (m_DeedType == BODType.Cooking)
            {
                bod = new LargeCookingBOD(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);
        }
        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 = 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
                    ConsumeAll();
                    
                    // add the new powerscroll
                    DropItem(newps);

                    break;
                }
                case Recipes.SmallBODChange:
                {
                    // get the target value from one of the powerscrolls
                    Item [] slist = 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
                    ConsumeAll();
                    
                    // add the new powerscroll
                    DropItem(newbod);

                    break;
                }
                case Recipes.LargeBODChange:
                {
                    // get the target value from one of the powerscrolls
                    Item [] slist = 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
                    ConsumeAll();
                    
                    // add the new powerscroll
                    DropItem(newbod);

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

                    if(augment == null) return;

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

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

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

                    if(augment == null) return;

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

                    // take the ingredients
                    ConsumeAll();

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

                    break;
                }
                case Recipes.UpgradeCrystalAugment:
                {
                    // check what type of augment is being upgraded
                    BaseSocketAugmentation augment = null;
                    if(Items.Count > 0)
                    {
                        augment = Items[0] as BaseSocketAugmentation;
                    }
                    
                    if(augment == null) return;
                    
                    // make sure they are all the same
                    foreach(Item i in Items)
                    {
                        if(augment.GetType() != i.GetType()) return;
                    }

                    // take the ingredients
                    ConsumeAll();

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

                    break;

                }
                case Recipes.RecoverAugmentation:
                {
                    // does item have any sockets on it?
                    Item b = FindItemByType(typeof(BaseArmor), true);
                    if(b == null)
                        b = FindItemByType(typeof(BaseWeapon), true);
                    if(b == null)
                        b = 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
                        ConsumeTotal(typeof(AncientRuby), 1, true);

                        // put the recovered augment in the container
                        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
                    ConsumeAll();
                    
                    // add the hammer
                    DropItem(new HammerOfRecovery(1));

                    break;
                }
                
                case Recipes.ExceptionalSocketHammer:
                {
                    // consume ingredients
                    ConsumeAll();
                    
                    // add the hammer
                    DropItem(new ExceptionalSocketHammer(1));

                    break;
                }
                
                case Recipes.SocketWeapon:
                {
                    // does the weapon already have any sockets on it?
                    Item b = 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
                    ConsumeTotal(typeof(RadiantRhoCrystal), 1, true);
                    break;
                }
                case Recipes.SocketArmor:
                {
                    // does the armor already have any sockets on it?
                    Item b = 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
                    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);
        }
예제 #7
0
        private static void WriteSmithLBOD( StreamWriter html, string name, SmallBulkEntry[] entries )
        {
            LargeBOD lbod = new LargeSmithBOD();

            lbod.Entries = LargeBulkEntry.ConvertEntries( lbod, entries );

            WriteSmithBODHeader( html, String.Format( "(Large) {0}: Normal", name ) );

            lbod.RequireExceptional = false;
            for ( BulkMaterialType mat = BulkMaterialType.None; mat <= BulkMaterialType.Valorite; ++mat )
            {
                lbod.Material = mat;
                lbod.AmountMax = 10;
                DocumentSmithBOD( html, lbod.ComputeRewards( true ), "10, 15, 20", lbod.Material );
            }

            WriteSmithBODFooter( html );

            html.WriteLine( "      <br><br>" );

            WriteSmithBODHeader( html, String.Format( "(Large) {0}: Exceptional", name ) );

            lbod.RequireExceptional = true;
            for ( BulkMaterialType mat = BulkMaterialType.None; mat <= BulkMaterialType.Valorite; ++mat )
            {
                lbod.Material = mat;

                for ( int amt = 15; amt <= 20; amt += 5 )
                {
                    lbod.AmountMax = amt;
                    DocumentSmithBOD( html, lbod.ComputeRewards( true ), amt == 20 ? "20" : "10, 15", lbod.Material );
                }
            }

            WriteSmithBODFooter( html );

            html.WriteLine( "      <br><br>" );
            html.WriteLine( "      <br><br>" );
        }