public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); m_Resource = (CraftResource)reader.ReadEncodedInt(); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 2: { m_Resource = (CraftResource)reader.ReadInt(); break; } /** Below is for deserialization of old logs that orignally inherited from Log or Item **/ case 1: // For all logs { m_Resource = (CraftResource)reader.ReadInt(); goto case 0; } case 0: // For old standard logs { m_InheritsItem = true; m_OldVersion = version; break; } } }
public RunicFletchersTools( CraftResource resource, int uses ) : base( resource, uses, 0x1022 ) { Weight = 2.0; Hue = CraftResources.GetHue( resource ); }
public void AddTinker( CraftResource cr, BaseRunicTool brt, Mobile from) { if ( ht_Tinker == null ) ht_Tinker = new Hashtable(); int i_Have = 0; if ( ht_Tinker[cr] != null ) i_Have = (int)ht_Tinker[cr]; if ( i_Have < 60000 ) { if ( i_Have + brt.UsesRemaining > 60000 ) { brt.UsesRemaining = i_Have + brt.UsesRemaining - 60000; i_Have = 60000; } else { i_Have += brt.UsesRemaining; brt.Delete(); } if ( ht_Tinker.ContainsKey(cr) ) ht_Tinker[cr] = i_Have; else ht_Tinker.Add(cr, i_Have); BeginCombine( from ); from.SendGump( new RunicHouseGump( from, this ) ); from.SendMessage(88, "You added the runic charges."); return; } from.SendGump( new RunicHouseGump( from, this ) ); from.SendMessage(33, "You can't add more charges, the limit is 60,000."); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch ( version ) { case 2: // Reset from Resource System this.m_Resource = this.DefaultResource; reader.ReadString(); break; case 1: { this.m_Resource = (CraftResource)reader.ReadInt(); break; } case 0: { OreInfo info; switch ( reader.ReadInt() ) { case 0: info = OreInfo.Iron; break; case 1: info = OreInfo.DullCopper; break; case 2: info = OreInfo.ShadowIron; break; case 3: info = OreInfo.Copper; break; case 4: info = OreInfo.Bronze; break; case 5: info = OreInfo.Gold; break; case 6: info = OreInfo.Agapite; break; case 7: info = OreInfo.Verite; break; case 8: info = OreInfo.Valorite; break; default: info = null; break; } this.m_Resource = CraftResources.GetFromOreInfo(info); break; } } }
public Masterwork( GenericReader reader ) { int version = reader.ReadInt(); m_WeaponPointsLeft = reader.ReadInt(); m_ArmourPointsLeft = reader.ReadInt(); m_BluntResist = reader.ReadInt(); m_SlashingResist = reader.ReadInt(); m_PiercingResist = reader.ReadInt(); m_WeaponDamage = reader.ReadInt(); m_WeaponSpeed = reader.ReadInt(); m_WeaponAccuracy = reader.ReadInt(); if( version > 1 ) { m_WeaponResource = (CraftResource)reader.ReadInt(); m_MasterworkWeapon = reader.ReadBool(); m_HasWeaponPieces = reader.ReadBool(); m_ArmourResource = (CraftResource)reader.ReadInt(); m_MasterworkArmour = reader.ReadBool(); m_HasArmourPieces = reader.ReadBool(); m_ClothingResource = (CraftResource)reader.ReadInt(); m_MasterworkClothing = reader.ReadBool(); m_HasClothingPieces = reader.ReadBool(); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch ( version ) { case 2: // Reset from Resource System this.m_Resource = this.DefaultResource; reader.ReadString(); break; case 1: { this.m_Resource = (CraftResource)reader.ReadInt(); break; } case 0: { OreInfo info = new OreInfo(reader.ReadInt(), reader.ReadInt(), reader.ReadString()); this.m_Resource = CraftResources.GetFromOreInfo(info); break; } } }
protected virtual int GetProgress(ConquestState state, Item item, CraftResource res, HarvestSystem harvest) { if (item == null || harvest == null) { return 0; } if (state.User == null) return 0; if (ItemType.IsNotNull && !item.TypeEquals(ItemType, ItemChildren)) { if (ItemChangeReset) { return -state.Progress; } return 0; } if (Resource != CraftResource.None && res != Resource) { return 0; } if (HarvestSystem.IsNotNull && !harvest.TypeEquals(HarvestSystem, false)) { return 0; } return item.Amount; }
public BaseGranite( CraftResource resource ) : base( 0x1779 ) { Weight = 10.0; Hue = CraftResources.GetHue( resource ); m_Resource = resource; }
private static bool CheckResourceSkill( CraftResource resource, double skill ) { double reqSkill = 0; switch ( resource ) { case CraftResource.DullCopper: reqSkill = 65.0; break; case CraftResource.ShadowIron: reqSkill = 70.0; break; case CraftResource.Copper: reqSkill = 75.0; break; case CraftResource.Bronze: reqSkill = 80.0; break; case CraftResource.Gold: reqSkill = 85.0; break; case CraftResource.Agapite: reqSkill = 90.0; break; case CraftResource.Verite: reqSkill = 95.0; break; case CraftResource.Valorite: reqSkill = 99.0; break; } return ( skill >= reqSkill ); }
public RunicHammer(CraftResource resource) : base(resource, 0x13E3) { this.Weight = 8.0; this.Layer = Layer.OneHanded; this.Hue = CraftResources.GetHue(resource); }
public RunicHammer( CraftResource resource, int uses ) : base(resource, uses, 0x13E4) { Weight = 8.0; Layer = Layer.OneHanded; Hue = CraftResources.GetHue( resource ); }
public BaseGranite( CraftResource resource ) : base( 0x1779 ) { Hue = CraftResources.GetHue( resource ); Stackable = Core.ML; m_Resource = resource; }
public RunicSaw( CraftResource resource, int uses ) : base( resource, uses, 0x1034 ) { Weight = 2.0; Hue = CraftResources.GetHue( resource ); }
private SmeltResult Resmelt( Mobile from, Item item, CraftResource resource ) { try { if ( CraftResources.GetType( resource ) != CraftResourceType.Metal ) return SmeltResult.Invalid; CraftResourceInfo info = CraftResources.GetInfo( resource ); if ( info == null || info.ResourceTypes.Length == 0 ) return SmeltResult.Invalid; CraftItem craftItem = m_CraftSystem.CraftItems.SearchFor( item.GetType() ); if ( craftItem == null || craftItem.Resources.Count == 0 ) return SmeltResult.Invalid; CraftRes craftResource = craftItem.Resources.GetAt( 0 ); if ( craftResource.Amount < 2 ) return SmeltResult.Invalid; // Not enough metal to resmelt double difficulty = 0.0; switch ( resource ) { case CraftResource.DullCopper: difficulty = 65.0; break; case CraftResource.ShadowIron: difficulty = 70.0; break; case CraftResource.Copper: difficulty = 75.0; break; case CraftResource.Bronze: difficulty = 80.0; break; case CraftResource.Gold: difficulty = 85.0; break; case CraftResource.Agapite: difficulty = 90.0; break; case CraftResource.Verite: difficulty = 95.0; break; case CraftResource.Valorite: difficulty = 99.0; break; } if ( difficulty > from.Skills[ SkillName.Mining ].Value ) return SmeltResult.NoSkill; Type resourceType = info.ResourceTypes[0]; Item ingot = (Item)Activator.CreateInstance( resourceType ); if ( item is DragonBardingDeed || (item is BaseArmor && ((BaseArmor)item).PlayerConstructed) || (item is BaseWeapon && ((BaseWeapon)item).PlayerConstructed) || (item is BaseClothing && ((BaseClothing)item).PlayerConstructed) ) ingot.Amount = craftResource.Amount / 2; else ingot.Amount = 1; item.Delete(); from.AddToBackpack( ingot ); from.PlaySound( 0x2A ); from.PlaySound( 0x240 ); return SmeltResult.Success; } catch { } return SmeltResult.Invalid; }
public BaseLog( CraftResource resource, int amount ) : base( 0x1BDD ) { Stackable = true; Weight = 3.0; Amount = amount; Hue = CraftResources.GetHue( resource ); m_Resource = resource; }
public BaseScales( CraftResource resource, int amount ) : base( 0x26B4 ) { Stackable = true; Amount = amount; Hue = CraftResources.GetHue( resource ); m_Resource = resource; }
public BaseOre( CraftResource resource, int amount ) : base( 6585 ) { Stackable = true; Amount = amount; Hue = CraftResources.GetHue( resource ); m_Resource = resource; }
public RunicSaw( CraftResource resource ) : base( resource, 0x1022 ) { Name = "Runic Saw"; Weight = 2.0; Hue = CraftResources.GetHue( resource ); }
public BaseBoards( CraftResource resource, int amount ) : base( 0x1BD7 ) { Stackable = true; Amount = amount; Hue = CraftResources.GetHue( resource ); m_Resource = resource; }
public BaseLeather( CraftResource resource, int amount ) : base( 0x1081 ) { Stackable = true; Weight = 1.0; Amount = amount; Hue = CraftResources.GetHue( resource ); m_Resource = resource; }
public BaseOre(CraftResource resource, int amount) : base(RandomSize()) { this.Stackable = true; this.Amount = amount; this.Hue = CraftResources.GetHue(resource); this.m_Resource = resource; }
public Board(CraftResource resource, int amount) : base(0x1BD7) { this.Stackable = true; this.Amount = amount; this.m_Resource = resource; this.Hue = CraftResources.GetHue(resource); }
public BaseScales(CraftResource resource, int amount) : base(0x26B4) { this.Stackable = true; this.Amount = amount; this.Hue = CraftResources.GetHue(resource); this.m_Resource = resource; }
public BaseIngot(CraftResource resource, int amount) : base(0x1BF2) { this.Stackable = true; this.Amount = amount; this.Hue = CraftResources.GetHue(resource); this.m_Resource = resource; }
public BaseIngot( CraftResource resource, int amount ) : base(0x1BF2) { Stackable = true; Amount = amount; Hue = CraftResources.GetHue( resource ); Tag = "mining"; m_Resource = resource; }
//Modded from - public BaseGranite( CraftResource resource ) : base( 0x1779 ) - to what it is below public BaseGranite( CraftResource resource, int amount ) : base( 0x1779 ) { Stackable = true;//I ADDED Amount = amount;//I ADDED Hue = CraftResources.GetHue( resource ); Stackable = Core.ML; m_Resource = resource; }
public BaseIngot( CraftResource resource, int amount ) : base( 0x1BF2 ) { Stackable = true; Weight = 0.1; Amount = amount; Hue = CraftResources.GetHue( resource ); m_Resource = resource; }
public BaseHides( CraftResource resource, int amount ) : base( 0x1079 ) { Stackable = true; Weight = 5.0; Amount = amount; Hue = CraftResources.GetHue( resource ); m_Resource = resource; }
public BaseOre( CraftResource resource, int amount ) : base( 0x19B9 ) { Stackable = true; Weight = 12.0; Amount = amount; Hue = CraftResources.GetHue( resource ); m_Resource = resource; }
/// <summary> /// Returns the <see cref="CraftResourceInfo.Number"/> property of '<paramref name="resource"/>' -or- 0 if an invalid resource was specified. /// </summary> public static int GetLocalizationNumber(CraftResource resource) { CraftResourceInfo info = GetInfo(resource); return(info == null ? 0 : info.Number); }
public void CompleteCraft( int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CustomCraft customCraft) { int badCraft = craftSystem.CanCraft(from, tool, m_Type); if (badCraft > 0) { if (tool != null && !tool.Deleted && tool.UsesRemaining > 0) { from.SendGump(new CraftGump(from, craftSystem, tool, badCraft)); } else { from.SendLocalizedMessage(badCraft); } AutoCraftTimer.EndTimer(from); return; } int checkResHue = 0, checkMaxAmount = 0; object checkMessage = null; // Not enough resource to craft it if (!ConsumeRes(from, typeRes, craftSystem, ref checkResHue, ref checkMaxAmount, ConsumeType.None, ref checkMessage)) { if (tool != null && !tool.Deleted && tool.UsesRemaining > 0) { from.SendGump(new CraftGump(from, craftSystem, tool, checkMessage)); } else if (checkMessage is int && (int)checkMessage > 0) { from.SendLocalizedMessage((int)checkMessage); } else if (checkMessage is string) { from.SendMessage((string)checkMessage); } AutoCraftTimer.EndTimer(from); return; } else if (!ConsumeAttributes(from, ref checkMessage, false)) { if (tool != null && !tool.Deleted && tool.UsesRemaining > 0) { from.SendGump(new CraftGump(from, craftSystem, tool, checkMessage)); } else if (checkMessage is int && (int)checkMessage > 0) { from.SendLocalizedMessage((int)checkMessage); } else if (checkMessage is string) { from.SendMessage((string)checkMessage); } AutoCraftTimer.EndTimer(from); return; } bool toolBroken = false; int ignored = 1; int endquality = 1; bool allRequiredSkills = true; if (CheckSkills(from, typeRes, craftSystem, ref ignored, ref allRequiredSkills)) { // Resource int resHue = 0; int maxAmount = 0; object message = null; // Not enough resource to craft it if (!ConsumeRes(from, typeRes, craftSystem, ref resHue, ref maxAmount, ConsumeType.All, ref message)) { if (tool != null && !tool.Deleted && tool.UsesRemaining > 0) { from.SendGump(new CraftGump(from, craftSystem, tool, message)); } else if (message is int && (int)message > 0) { from.SendLocalizedMessage((int)message); } else if (message is string) { from.SendMessage((string)message); } AutoCraftTimer.EndTimer(from); return; } else if (!ConsumeAttributes(from, ref message, true)) { if (tool != null && !tool.Deleted && tool.UsesRemaining > 0) { from.SendGump(new CraftGump(from, craftSystem, tool, message)); } else if (message is int && (int)message > 0) { from.SendLocalizedMessage((int)message); } else if (message is string) { from.SendMessage((string)message); } AutoCraftTimer.EndTimer(from); return; } tool.UsesRemaining--; if (craftSystem is DefBlacksmithy) { AncientSmithyHammer hammer = from.FindItemOnLayer(Layer.OneHanded) as AncientSmithyHammer; if (hammer != null && hammer != tool) { #region Mondain's Legacy if (hammer is HammerOfHephaestus) { if (hammer.UsesRemaining > 0) { hammer.UsesRemaining--; } if (hammer.UsesRemaining < 1) { from.PlaceInBackpack(hammer); } } else { hammer.UsesRemaining--; if (hammer.UsesRemaining < 1) { hammer.Delete(); } } #endregion } } #region Mondain's Legacy if (tool is HammerOfHephaestus) { if (tool.UsesRemaining < 1) { tool.UsesRemaining = 0; } } else { if (tool.UsesRemaining < 1) { toolBroken = true; } if (toolBroken) { tool.Delete(); } } #endregion int num = 0; Item item; if (customCraft != null) { item = customCraft.CompleteCraft(out num); } else if (typeof(MapItem).IsAssignableFrom(ItemType) && from.Map != Map.Trammel && from.Map != Map.Felucca) { item = new IndecipherableMap(); from.SendLocalizedMessage(1070800); // The map you create becomes mysteriously indecipherable. } else { item = Activator.CreateInstance(ItemType) as Item; } if (item != null) { #region Mondain's Legacy if (item is Board) { Type resourceType = typeRes; if (resourceType == null) { resourceType = Resources.GetAt(0).ItemType; } CraftResource thisResource = CraftResources.GetFromType(resourceType); switch (thisResource) { case CraftResource.OakWood: item = new OakBoard(); break; case CraftResource.AshWood: item = new AshBoard(); break; case CraftResource.YewWood: item = new YewBoard(); break; case CraftResource.Heartwood: item = new HeartwoodBoard(); break; case CraftResource.Bloodwood: item = new BloodwoodBoard(); break; case CraftResource.Frostwood: item = new FrostwoodBoard(); break; default: item = new Board(); break; } } #endregion if (item is ICraftable) { endquality = ((ICraftable)item).OnCraft(quality, makersMark, from, craftSystem, typeRes, tool, this, resHue); } else if (item is Food) { ((Food)item).PlayerConstructed = true; } else if (item.Hue == 0) { item.Hue = resHue; } if (maxAmount > 0) { if (!item.Stackable && item is IUsesRemaining) { ((IUsesRemaining)item).UsesRemaining *= maxAmount; } else { item.Amount = maxAmount; } } #region Plant Pigments if (item is PlantPigment && (craftSystem is DefAlchemy || craftSystem is DefCooking)) { ((PlantPigment)item).PigmentHue = PlantPigmentHueInfo.HueFromPlantHue(m_PlantHue); } if (item is NaturalDye && (craftSystem is DefAlchemy || craftSystem is DefCooking)) { ((NaturalDye)item).PigmentHue = PlantPigmentHueInfo.GetInfo(m_PlantPigmentHue).PlantPigmentHue; } if (item is SoftenedReeds && (craftSystem is DefAlchemy || craftSystem is DefCooking)) { ((SoftenedReeds)item).PlantHue = PlantHueInfo.GetInfo(m_PlantHue).PlantHue; } if (item is BaseContainer && (craftSystem is DefBasketweaving)) { (item).Hue = PlantHueInfo.GetInfo(m_PlantHue).Hue; } CraftContext context = craftSystem.GetContext(from); if (context.QuestOption == CraftQuestOption.QuestItem) { PlayerMobile px = from as PlayerMobile; if (!QuestHelper.CheckItem(px, item)) from.SendLocalizedMessage(1072355, null, 0x23); // That item does not match any of your quest criteria } #endregion if (tool.Parent is Container) { Container cntnr = (Container) tool.Parent; cntnr.TryDropItem(from, item, false); } else { from.AddToBackpack(item); } EventSink.InvokeCraftSuccess(new CraftSuccessEventArgs(from, item, tool)); if (from.IsStaff()) { CommandLogging.WriteLine( from, "Crafting {0} with craft system {1}", CommandLogging.Format(item), craftSystem.GetType().Name); } AutoCraftTimer.OnSuccessfulCraft(from); //from.PlaySound( 0x57 ); } if (num == 0) { num = craftSystem.PlayEndingEffect(from, false, true, toolBroken, endquality, makersMark, this); } bool queryFactionImbue = false; int availableSilver = 0; FactionItemDefinition def = null; Faction faction = null; if (item is IFactionItem) { def = FactionItemDefinition.Identify(item); if (def != null) { faction = Faction.Find(from); if (faction != null) { Town town = Town.FromRegion(from.Region); if (town != null && town.Owner == faction) { Container pack = from.Backpack; if (pack != null) { availableSilver = pack.GetAmount(typeof(Silver)); if (availableSilver >= def.SilverCost) { queryFactionImbue = Faction.IsNearType(from, def.VendorType, 12); } } } } } } // TODO: Scroll imbuing if (queryFactionImbue) { from.SendGump(new FactionImbueGump(quality, item, from, craftSystem, tool, num, availableSilver, faction, def)); } else if (tool != null && !tool.Deleted && tool.UsesRemaining > 0) { from.SendGump(new CraftGump(from, craftSystem, tool, num)); } else if (num > 0) { from.SendLocalizedMessage(num); } } else if (!allRequiredSkills) { if (tool != null && !tool.Deleted && tool.UsesRemaining > 0) { from.SendGump(new CraftGump(from, craftSystem, tool, 1044153)); } else { from.SendLocalizedMessage(1044153); // You don't have the required skills to attempt this item. } AutoCraftTimer.EndTimer(from); } else { ConsumeType consumeType = (UseAllRes ? ConsumeType.Half : ConsumeType.All); int resHue = 0; int maxAmount = 0; object message = null; // Not enough resource to craft it if (!ConsumeRes(from, typeRes, craftSystem, ref resHue, ref maxAmount, consumeType, ref message, true)) { if (tool != null && !tool.Deleted && tool.UsesRemaining > 0) { from.SendGump(new CraftGump(from, craftSystem, tool, message)); } else if (message is int && (int)message > 0) { from.SendLocalizedMessage((int)message); } else if (message is string) { from.SendMessage((string)message); } AutoCraftTimer.EndTimer(from); return; } tool.UsesRemaining--; if (tool.UsesRemaining < 1) { toolBroken = true; } if (toolBroken) { tool.Delete(); } // SkillCheck failed. int num = craftSystem.PlayEndingEffect(from, true, true, toolBroken, endquality, false, this); if (tool != null && !tool.Deleted && tool.UsesRemaining > 0) { from.SendGump(new CraftGump(from, craftSystem, tool, num)); } else if (num > 0) { from.SendLocalizedMessage(num); } } }
//[Constructable] public BaseLog(CraftResource resource) : this(resource, 1) { }
private bool Resmelt(Mobile from, Item item, CraftResource resource) { try { if (CraftResources.GetType(resource) != CraftResourceType.Metal) { return(false); } CraftResourceInfo info = CraftResources.GetInfo(resource); if (info == null || info.ResourceTypes.Length == 0) { return(false); } CraftItem craftItem = DefBlacksmithy.CraftSystem.CraftItems.SearchFor(item.GetType()); if (craftItem == null || craftItem.Resources.Count == 0) { return(false); } CraftRes craftResource = craftItem.Resources.GetAt(0); if (craftResource.Amount < 2) { return(false); // Not enough metal to resmelt } double difficulty = 0.0; switch (resource) { case CraftResource.DullCopper: difficulty = 65.0; break; case CraftResource.ShadowIron: difficulty = 70.0; break; case CraftResource.Copper: difficulty = 75.0; break; case CraftResource.Bronze: difficulty = 80.0; break; case CraftResource.Gold: difficulty = 85.0; break; case CraftResource.Agapite: difficulty = 90.0; break; case CraftResource.Verite: difficulty = 95.0; break; case CraftResource.Valorite: difficulty = 99.0; break; } Type resourceType = info.ResourceTypes[0]; Item ingot = (Item)Activator.CreateInstance(resourceType); double skill = Math.Max(from.Skills[SkillName.Mining].Value, from.Skills[SkillName.Blacksmith].Value); if (item is DragonBardingDeed || (item is BaseArmor && ((BaseArmor)item).PlayerConstructed) || (item is BaseWeapon && ((BaseWeapon)item).PlayerConstructed) || (item is BaseClothing && ((BaseClothing)item).PlayerConstructed)) { if (skill > 100.0) { skill = 100.0; } double amount = (((4 + skill) * craftResource.Amount - 4) * 0.0068); if (amount < 2) { ingot.Amount = 2; } else { ingot.Amount = (int)amount; } } else { ingot.Amount = 2; } if (difficulty > skill) { m_Failure = true; ingot.Delete(); } else { item.Delete(); } from.AddToBackpack(ingot); from.PlaySound(0x2A); from.PlaySound(0x240); return(true); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } return(false); }
/// <summary> /// Returns the <see cref="CraftResourceInfo.Name"/> property of '<paramref name="resource"/>' -or- an empty string if the resource specified was invalid. /// </summary> public static string GetName(CraftResource resource) { CraftResourceInfo info = GetInfo(resource); return(info == null ? String.Empty : info.Name); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 3: { m_MaxHitPoints = reader.ReadEncodedInt(); m_HitPoints = reader.ReadEncodedInt(); goto case 2; } case 2: { m_Resource = (CraftResource)reader.ReadEncodedInt(); m_GemType = (GemType)reader.ReadEncodedInt(); goto case 1; } case 1: { m_AosAttributes = new AosAttributes(this, reader); m_AosResistances = new AosElementAttributes(this, reader); m_AosSkillBonuses = new AosSkillBonuses(this, reader); if (Core.AOS && Parent is Mobile) { m_AosSkillBonuses.AddTo((Mobile)Parent); } int strBonus = m_AosAttributes.BonusStr; int dexBonus = m_AosAttributes.BonusDex; int intBonus = m_AosAttributes.BonusInt; if (Parent is Mobile && (strBonus != 0 || dexBonus != 0 || intBonus != 0)) { Mobile m = (Mobile)Parent; string modName = Serial.ToString(); if (strBonus != 0) { m.AddStatMod(new StatMod(StatType.Str, modName + "Str", strBonus, TimeSpan.Zero)); } if (dexBonus != 0) { m.AddStatMod(new StatMod(StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero)); } if (intBonus != 0) { m.AddStatMod(new StatMod(StatType.Int, modName + "Int", intBonus, TimeSpan.Zero)); } } if (Parent is Mobile) { ((Mobile)Parent).CheckStatTimers(); } break; } case 0: { m_AosAttributes = new AosAttributes(this); m_AosResistances = new AosElementAttributes(this); m_AosSkillBonuses = new AosSkillBonuses(this); break; } } if (version < 2) { m_Resource = CraftResource.Iron; m_GemType = GemType.None; } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 7: { this.m_IsImbued = reader.ReadBool(); goto case 6; } case 6: { m_NegativeAttributes = new NegativeAttributes(this, reader); goto case 5; } case 5: { #region Runic Reforging m_ReforgedPrefix = (ReforgedPrefix)reader.ReadInt(); m_ReforgedSuffix = (ReforgedSuffix)reader.ReadInt(); m_ItemPower = (ItemPower)reader.ReadInt(); m_BlockRepair = reader.ReadBool(); #endregion #region Stygian Abyss m_GorgonLenseCharges = reader.ReadInt(); m_GorgonLenseType = (LenseType)reader.ReadInt(); goto case 4; } case 4: { this.m_TimesImbued = reader.ReadEncodedInt(); this.m_SAAbsorptionAttributes = new SAAbsorptionAttributes(this, reader); #endregion this.m_BlessedBy = reader.ReadMobile(); this.m_LastEquipped = reader.ReadBool(); this.m_SetEquipped = reader.ReadBool(); this.m_SetHue = reader.ReadEncodedInt(); this.m_SetAttributes = new AosAttributes(this, reader); this.m_SetSkillBonuses = new AosSkillBonuses(this, reader); this.m_Crafter = reader.ReadMobile(); this.m_Quality = (ArmorQuality)reader.ReadInt(); goto case 3; } case 3: { this.m_MaxHitPoints = reader.ReadEncodedInt(); this.m_HitPoints = reader.ReadEncodedInt(); goto case 2; } case 2: { this.m_Resource = (CraftResource)reader.ReadEncodedInt(); this.m_GemType = (GemType)reader.ReadEncodedInt(); goto case 1; } case 1: { this.m_AosAttributes = new AosAttributes(this, reader); this.m_AosResistances = new AosElementAttributes(this, reader); this.m_AosSkillBonuses = new AosSkillBonuses(this, reader); if (Core.AOS && this.Parent is Mobile) { this.m_AosSkillBonuses.AddTo((Mobile)this.Parent); } int strBonus = this.m_AosAttributes.BonusStr; int dexBonus = this.m_AosAttributes.BonusDex; int intBonus = this.m_AosAttributes.BonusInt; if (this.Parent is Mobile && (strBonus != 0 || dexBonus != 0 || intBonus != 0)) { Mobile m = (Mobile)this.Parent; string modName = this.Serial.ToString(); if (strBonus != 0) { m.AddStatMod(new StatMod(StatType.Str, modName + "Str", strBonus, TimeSpan.Zero)); } if (dexBonus != 0) { m.AddStatMod(new StatMod(StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero)); } if (intBonus != 0) { m.AddStatMod(new StatMod(StatType.Int, modName + "Int", intBonus, TimeSpan.Zero)); } } if (this.Parent is Mobile) { ((Mobile)this.Parent).CheckStatTimers(); } break; } case 0: { this.m_AosAttributes = new AosAttributes(this); this.m_AosResistances = new AosElementAttributes(this); this.m_AosSkillBonuses = new AosSkillBonuses(this); break; } } if (m_NegativeAttributes == null) { m_NegativeAttributes = new NegativeAttributes(this); } #region Mondain's Legacy Sets if (this.m_SetAttributes == null) { this.m_SetAttributes = new AosAttributes(this); } if (this.m_SetSkillBonuses == null) { this.m_SetSkillBonuses = new AosSkillBonuses(this); } #endregion if (version < 2) { this.m_Resource = CraftResource.Iron; this.m_GemType = GemType.None; } }
public BaseScales(CraftResource resource) : this(resource, 1) { }
public ChaosDragoonElite() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.15, 0.4) { Name = "Chaos Dragoon Elite"; Body = 0x190; Hue = Utility.RandomSkinHue(); SetStr(296, 360); SetDex(66, 90); SetInt(126, 150); SetHits(276, 350); SetDamage(29, 34); SetDamageType(ResistanceType.Physical, 100); /*SetResistance(ResistanceType.Physical, 45, 55); * SetResistance(ResistanceType.Fire, 15, 25); * SetResistance(ResistanceType.Cold, 50); * SetResistance(ResistanceType.Poison, 25, 35); * SetResistance(ResistanceType.Energy, 25, 35);*/ SetSkill(SkillName.Tactics, 80.1, 100.0); SetSkill(SkillName.MagicResist, 100.1, 110.0); SetSkill(SkillName.Anatomy, 80.1, 100.0); SetSkill(SkillName.Magery, 85.1, 100.0); SetSkill(SkillName.EvalInt, 85.1, 100.0); SetSkill(SkillName.Swords, 72.5, 95.0); SetSkill(SkillName.Fencing, 85.1, 100); SetSkill(SkillName.Macing, 85.1, 100); Fame = 8500; Karma = -8000; CraftResource res = CraftResource.None;; switch (Utility.Random(6)) { case 0: res = CraftResource.BlackScales; break; case 1: res = CraftResource.RedScales; break; case 2: res = CraftResource.BlueScales; break; case 3: res = CraftResource.YellowScales; break; case 4: res = CraftResource.GreenScales; break; case 5: res = CraftResource.WhiteScales; break; } BaseWeapon melee = null; switch (Utility.Random(3)) { case 0: melee = new Kryss(); break; case 1: melee = new Broadsword(); break; case 2: melee = new Katana(); break; } melee.Movable = false; AddItem(melee); DragonChest Tunic = new DragonChest(); Tunic.Resource = res; Tunic.Movable = false; AddItem(Tunic); DragonLegs Legs = new DragonLegs(); Legs.Resource = res; Legs.Movable = false; AddItem(Legs); DragonArms Arms = new DragonArms(); Arms.Resource = res; Arms.Movable = false; AddItem(Arms); DragonGloves Gloves = new DragonGloves(); Gloves.Resource = res; Gloves.Movable = false; AddItem(Gloves); DragonHelm Helm = new DragonHelm(); Helm.Resource = res; Helm.Movable = false; AddItem(Helm); ChaosShield shield = new ChaosShield(); shield.Movable = false; AddItem(shield); AddItem(new Boots(0x455)); AddItem(new Shirt(Utility.RandomMetalHue())); /*int amount = Utility.RandomMinMax(1, 3); * * switch (res) * { * case CraftResource.BlackScales: AddItem(new BlackScales(amount)); break; * case CraftResource.RedScales: AddItem(new RedScales(amount)); break; * case CraftResource.BlueScales: AddItem(new BlueScales(amount)); break; * case CraftResource.YellowScales: AddItem(new YellowScales(amount)); break; * case CraftResource.GreenScales: AddItem(new GreenScales(amount)); break; * case CraftResource.WhiteScales: AddItem(new WhiteScales(amount)); break; * } * switch (Utility.Random(9)) * { * case 0: res = CraftResource.DullCopper; break; * case 1: res = CraftResource.ShadowIron; break; * case 2: res = CraftResource.Copper; break; * case 3: res = CraftResource.Bronze; break; * case 4: res = CraftResource.Gold; break; * case 5: res = CraftResource.Agapite; break; * case 6: res = CraftResource.Verite; break; * case 7: res = CraftResource.Valorite; break; * case 8: res = CraftResource.Iron; break; * }*/ SwampDragon mt = new SwampDragon(); mt.HasBarding = true; mt.BardingResource = res; mt.BardingHP = mt.BardingMaxHP; mt.Rider = this; }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 1: { m_Resource = (CraftResource)reader.ReadInt(); break; } case 0: { OreInfo info; switch (reader.ReadInt()) { case 0: info = OreInfo.MIron; break; case 1: info = OreInfo.MBronze; break; case 2: info = OreInfo.MGold; break; case 3: info = OreInfo.MCopper; break; case 4: info = OreInfo.MOldcopper; break; case 5: info = OreInfo.MDullcopper; break; case 6: info = OreInfo.MSilver; break; case 7: info = OreInfo.MShadow; break; case 8: info = OreInfo.MBloodrock; break; case 9: info = OreInfo.MBlackrock; break; case 10: info = OreInfo.MMytheril; break; case 11: info = OreInfo.MRose; break; case 12: info = OreInfo.MVerite; break; case 13: info = OreInfo.MAgapite; break; case 14: info = OreInfo.MRusty; break; case 15: info = OreInfo.MValorite; break; case 16: info = OreInfo.MDragon; break; case 17: info = OreInfo.MTitan; break; case 18: info = OreInfo.MCrystaline; break; case 19: info = OreInfo.MKrynite; break; case 20: info = OreInfo.MVulcan; break; case 21: info = OreInfo.MBloodcrest; break; case 22: info = OreInfo.MElvin; break; case 23: info = OreInfo.MAcid; break; case 24: info = OreInfo.MAqua; break; case 25: info = OreInfo.MEldar; break; case 26: info = OreInfo.MGlowing; break; case 27: info = OreInfo.MGorgan; break; case 28: info = OreInfo.MSandrock; break; case 29: info = OreInfo.MSteel; break; default: info = null; break; } m_Resource = CraftResources.GetFromOreInfo(info); break; } } }
public BaseIngot(CraftResource resource) : this(resource, 1) { }
public BaseRunicTool(CraftResource resource, int uses, int itemID) : base(uses, itemID) { m_Resource = resource; }
public RunicSewingKit(CraftResource resource, int uses) : base(resource, uses, 0xF9D) { Weight = 2.0; Hue = CraftResources.GetHue(resource); }
/// <summary> /// Returns the <see cref="CraftResourceInfo.Hue"/> property of '<paramref name="resource"/>' -or- 0 if an invalid resource was specified. /// </summary> public static int GetHue(CraftResource resource) { CraftResourceInfo info = GetInfo(resource); return(info == null ? 0 : info.Hue); }
public BaseHides(CraftResource resource) : this(resource, 1) { }
public static int[] GetEffectHues(ref CraftResource res) { LimitResource(ref res); int hue; switch (res) { case CraftResource.Iron: hue = 48; // Gold break; case CraftResource.DullCopper: hue = 98; // Dark Blue break; case CraftResource.ShadowIron: hue = 43; // Orange break; case CraftResource.Copper: hue = 88; // Blue break; case CraftResource.Bronze: hue = 38; // Red break; case CraftResource.Gold: hue = 63; // Green break; case CraftResource.Agapite: hue = 53; // Yellow break; case CraftResource.Verite: hue = 13; // Purple break; case CraftResource.Valorite: hue = 183; // Aqua break; default: hue = 48; break; } var hues = new int[9]; hues.SetAll( i => { if (i > 0 && i % 3 == 0) { hue += 100; } return(hue++); }); return(hues); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 2: // Reset from Resource System this.m_Resource = this.DefaultResource; reader.ReadString(); break; case 1: { this.m_Resource = (CraftResource)reader.ReadInt(); break; } case 0: { OreInfo info; switch (reader.ReadInt()) { case 0: info = OreInfo.Iron; break; case 1: info = OreInfo.DullCopper; break; case 2: info = OreInfo.ShadowIron; break; case 3: info = OreInfo.Copper; break; case 4: info = OreInfo.Bronze; break; case 5: info = OreInfo.Gold; break; case 6: info = OreInfo.Agapite; break; case 7: info = OreInfo.Verite; break; case 8: info = OreInfo.Valorite; break; default: info = null; break; } this.m_Resource = CraftResources.GetFromOreInfo(info); break; } } }
public BaseRunicTool(CraftResource resource, int itemID) : base(itemID) => m_Resource = resource;
public RunicTinkerTools(CraftResource resource, int uses) : base(resource, uses, 7864) { Weight = 8.0; Name = "runic tinker tools"; Hue = CraftResources.GetHue(resource); }
protected override void ApplyResourceResistances(CraftResource oldResource) { }
public ChaosDragoonElite() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.15, 0.4) { Name = "a chaos dragoon elite"; Body = 0x190; Hue = Utility.RandomSkinHue(); SetStr(276, 350); SetDex(66, 90); SetInt(126, 150); SetHits(276, 350); SetDamage(29, 34); SetDamageType(ResistanceType.Physical, 100); /*SetResistance(ResistanceType.Physical, 45, 55); * SetResistance(ResistanceType.Fire, 15, 25); * SetResistance(ResistanceType.Cold, 50); * SetResistance(ResistanceType.Poison, 25, 35); * SetResistance(ResistanceType.Energy, 25, 35);*/ SetSkill(SkillName.Tactics, 80.1, 100.0); SetSkill(SkillName.MagicResist, 100.1, 110.0); SetSkill(SkillName.Anatomy, 80.1, 100.0); SetSkill(SkillName.Magery, 85.1, 100.0); SetSkill(SkillName.EvalInt, 85.1, 100.0); SetSkill(SkillName.Swords, 72.5, 95.0); SetSkill(SkillName.Fencing, 85.1, 100); SetSkill(SkillName.Macing, 85.1, 100); Fame = 8000; Karma = -8000; CraftResource res = CraftResource.None; switch (Utility.Random(6)) { case 0: res = CraftResource.BlackScales; break; case 1: res = CraftResource.RedScales; break; case 2: res = CraftResource.BlueScales; break; case 3: res = CraftResource.YellowScales; break; case 4: res = CraftResource.GreenScales; break; case 5: res = CraftResource.WhiteScales; break; } BaseWeapon melee = null; switch (Utility.Random(3)) { case 0: melee = new Kryss(); break; case 1: melee = new Broadsword(); break; case 2: melee = new Katana(); break; } if (melee != null) { melee.Movable = false; AddItem(melee); } DragonChest tunic = new DragonChest { Resource = res, Movable = false }; AddItem(tunic); DragonLegs legs = new DragonLegs { Resource = res, Movable = false }; AddItem(legs); DragonArms arms = new DragonArms { Resource = res, Movable = false }; AddItem(arms); DragonGloves gloves = new DragonGloves { Resource = res, Movable = false }; AddItem(gloves); DragonHelm helm = new DragonHelm { Resource = res, Movable = false }; AddItem(helm); ChaosShield shield = new ChaosShield { Movable = false }; AddItem(shield); AddItem(new Boots(0x455)); AddItem(new Shirt(Utility.RandomMetalHue())); int amount = Utility.RandomMinMax(1, 3); switch (res) { case CraftResource.BlackScales: AddItem(new BlackScales(amount)); break; case CraftResource.RedScales: AddItem(new RedScales(amount)); break; case CraftResource.BlueScales: AddItem(new BlueScales(amount)); break; case CraftResource.YellowScales: AddItem(new YellowScales(amount)); break; case CraftResource.GreenScales: AddItem(new GreenScales(amount)); break; case CraftResource.WhiteScales: AddItem(new WhiteScales(amount)); break; } switch (Utility.Random(9)) { case 0: res = CraftResource.DullCopper; break; case 1: res = CraftResource.ShadowIron; break; case 2: res = CraftResource.Copper; break; case 3: res = CraftResource.Bronze; break; case 4: res = CraftResource.Gold; break; case 5: res = CraftResource.Agapite; break; case 6: res = CraftResource.Verite; break; case 7: res = CraftResource.Valorite; break; case 8: res = CraftResource.Iron; break; } SwampDragon mt = new SwampDragon { HasBarding = true, BardingResource = res }; mt.BardingHP = mt.BardingMaxHP; mt.Rider = this; SetSpecialAbility(SpecialAbility.DragonBreath); }
public CraftResourceInfo(int hue, int number, string name, CraftAttributeInfo attributeInfo, CraftResource resource, params Type[] resourceTypes) { m_Hue = hue; m_Number = number; m_Name = name; m_AttributeInfo = attributeInfo; m_Resource = resource; m_ResourceTypes = resourceTypes; for (int i = 0; i < resourceTypes.Length; ++i) { CraftResources.RegisterType(resourceTypes[i], resource); } }
private SmeltResult Resmelt(Mobile from, Item item, CraftResource resource) { try { if (Ethics.Ethic.IsImbued(item)) { return(SmeltResult.Invalid); } if (CraftResources.GetType(resource) != CraftResourceType.Metal) { return(SmeltResult.Invalid); } CraftResourceInfo info = CraftResources.GetInfo(resource); if (info == null || info.ResourceTypes.Length == 0) { return(SmeltResult.Invalid); } CraftItem craftItem = this.m_CraftSystem.CraftItems.SearchFor(item.GetType()); if (craftItem == null || craftItem.Resources.Count == 0) { return(SmeltResult.Invalid); } CraftRes craftResource = craftItem.Resources.GetAt(0); if (craftResource.Amount < 2) { return(SmeltResult.Invalid); // Not enough metal to resmelt } double difficulty = 0.0; switch (resource) { case CraftResource.DullCopper: difficulty = 65.0; break; case CraftResource.ShadowIron: difficulty = 70.0; break; case CraftResource.Copper: difficulty = 75.0; break; case CraftResource.Bronze: difficulty = 80.0; break; case CraftResource.Gold: difficulty = 85.0; break; case CraftResource.Agapite: difficulty = 90.0; break; case CraftResource.Verite: difficulty = 95.0; break; case CraftResource.Valorite: difficulty = 99.0; break; } if (difficulty > from.Skills[SkillName.Mining].Value) { return(SmeltResult.NoSkill); } Type resourceType = info.ResourceTypes[0]; Item ingot = (Item)Activator.CreateInstance(resourceType); if (item is DragonBardingDeed || (item is BaseArmor && ((BaseArmor)item).PlayerConstructed) || (item is BaseWeapon && ((BaseWeapon)item).PlayerConstructed) || (item is BaseClothing && ((BaseClothing)item).PlayerConstructed)) { ingot.Amount = craftResource.Amount / 2; } else { ingot.Amount = 1; } item.Delete(); from.AddToBackpack(ingot); from.PlaySound(0x2A); from.PlaySound(0x240); return(SmeltResult.Success); } catch { } return(SmeltResult.Invalid); }
public ChaosDragoon() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.15, 0.4) { Name = "a chaos dragoon"; Body = 0x190; Hue = Utility.RandomSkinHue(); SetStr(176, 225); SetDex(81, 95); SetInt(61, 85); SetHits(176, 225); SetDamage(24, 26); SetDamageType(ResistanceType.Physical, 100); //SetDamageType( ResistanceType.Fire, 25 ); //SetDamageType( ResistanceType.Cold, 25 ); //SetDamageType( ResistanceType.Energy, 25 ); //SetResistance( ResistanceType.Physical, 25, 38 ); //SetResistance( ResistanceType.Fire, 25, 38 ); //SetResistance( ResistanceType.Cold, 25, 38 ); //SetResistance( ResistanceType.Poison, 25, 38 ); //SetResistance( ResistanceType.Energy, 25, 38 ); SetSkill(SkillName.Fencing, 77.6, 92.5); SetSkill(SkillName.Healing, 60.3, 90.0); SetSkill(SkillName.Macing, 77.6, 92.5); SetSkill(SkillName.Anatomy, 77.6, 87.5); SetSkill(SkillName.MagicResist, 77.6, 97.5); SetSkill(SkillName.Swords, 77.6, 92.5); SetSkill(SkillName.Tactics, 77.6, 87.5); Fame = 5000; Karma = -5000; CraftResource res = CraftResource.None; switch (Utility.Random(6)) { case 0: res = CraftResource.BlackScales; break; case 1: res = CraftResource.RedScales; break; case 2: res = CraftResource.BlueScales; break; case 3: res = CraftResource.YellowScales; break; case 4: res = CraftResource.GreenScales; break; case 5: res = CraftResource.WhiteScales; break; } BaseWeapon melee = null; switch (Utility.Random(3)) { case 0: melee = new Kryss(); break; case 1: melee = new Broadsword(); break; case 2: melee = new Katana(); break; } melee.Movable = false; AddItem(melee); DragonHelm helm = new DragonHelm(); helm.Resource = res; helm.Movable = false; AddItem(helm); DragonChest chest = new DragonChest(); chest.Resource = res; chest.Movable = false; AddItem(chest); DragonArms arms = new DragonArms(); arms.Resource = res; arms.Movable = false; AddItem(arms); DragonGloves gloves = new DragonGloves(); gloves.Resource = res; gloves.Movable = false; AddItem(gloves); DragonLegs legs = new DragonLegs(); legs.Resource = res; legs.Movable = false; AddItem(legs); ChaosShield shield = new ChaosShield(); shield.Movable = false; AddItem(shield); AddItem(new Shirt()); AddItem(new Boots()); int amount = Utility.RandomMinMax(1, 3); switch (res) { case CraftResource.BlackScales: AddItem(new BlackScales(amount)); break; case CraftResource.RedScales: AddItem(new RedScales(amount)); break; case CraftResource.BlueScales: AddItem(new BlueScales(amount)); break; case CraftResource.YellowScales: AddItem(new YellowScales(amount)); break; case CraftResource.GreenScales: AddItem(new GreenScales(amount)); break; case CraftResource.WhiteScales: AddItem(new WhiteScales(amount)); break; } new SwampDragon().Rider = this; }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 8: { m_PlayerConstructed = reader.ReadBool(); m_Resource = (CraftResource)reader.ReadInt(); m_Quality = (ItemQuality)reader.ReadInt(); goto case 7; } case 7: { m_Crafter = reader.ReadMobile(); goto case 6; } case 6: { m_IsShipwreckedItem = reader.ReadBool(); goto case 5; } case 5: { m_TrapOnLockpick = reader.ReadBool(); goto case 4; } case 4: { m_RequiredSkill = reader.ReadInt(); goto case 3; } case 3: { m_MaxLockLevel = reader.ReadInt(); goto case 2; } case 2: { m_KeyValue = reader.ReadUInt(); goto case 1; } case 1: { m_LockLevel = reader.ReadInt(); goto case 0; } case 0: { if (version < 3) { m_MaxLockLevel = 100; } if (version < 4) { if ((m_MaxLockLevel - m_LockLevel) == 40) { m_RequiredSkill = m_LockLevel + 6; m_LockLevel = m_RequiredSkill - 10; m_MaxLockLevel = m_RequiredSkill + 39; } else { m_RequiredSkill = m_LockLevel; } } m_Locked = reader.ReadBool(); break; } } }
/// <summary> /// Returns true if '<paramref name="resource"/>' is None, Iron, RegularLeather or RegularWood. False if otherwise. /// </summary> public static bool IsStandard(CraftResource resource) { return(resource == CraftResource.None || resource == CraftResource.Iron || resource == CraftResource.RegularLeather || resource == CraftResource.RegularWood); }
public BaseLeather(CraftResource resource) : this(resource, 1) { }
public FireworkStarCustom(CraftResource res, int amount) : base(res, amount) { }
public InternalTarget(CraftSystem craftSystem, BaseTool tool, Type resourceType, CraftResource resource) : base( 2, false, TargetFlags.None ) { m_CraftSystem = craftSystem; m_Tool = tool; m_ResourceType = resourceType; m_Resource = resource; }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 4: { m_MaxHitPoints = reader.ReadEncodedInt(); m_HitPoints = reader.ReadEncodedInt(); m_Resource = (CraftResource)reader.ReadEncodedInt(); m_GemType = (GemType)reader.ReadEncodedInt(); // DO NOT GO ON TO CASE 3! break; } case 3: { m_MaxHitPoints = reader.ReadEncodedInt(); m_HitPoints = reader.ReadEncodedInt(); goto case 2; } case 2: { m_Resource = (CraftResource)reader.ReadEncodedInt(); m_GemType = (GemType)reader.ReadEncodedInt(); goto case 1; } case 1: { new AosAttributes(this, reader); new AosElementAttributes(this, reader); new AosSkillBonuses(this, reader); if (Parent is Mobile) { ((Mobile)Parent).CheckStatTimers(); } break; } case 0: { new AosAttributes(this); new AosElementAttributes(this); new AosSkillBonuses(this); break; } } if (version < 2) { m_Resource = CraftResource.Iron; m_GemType = GemType.None; } }