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