Beispiel #1
1
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();
            m_Resource = (CraftResource)reader.ReadEncodedInt();
        }
Beispiel #2
0
		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.");
		}
Beispiel #5
0
        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;
                    }
            }
        }
Beispiel #6
0
        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();
            }
        }
Beispiel #7
0
        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;
		}
Beispiel #10
0
        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 );
        }
Beispiel #11
0
 public RunicHammer(CraftResource resource)
     : base(resource, 0x13E3)
 {
     this.Weight = 8.0;
     this.Layer = Layer.OneHanded;
     this.Hue = CraftResources.GetHue(resource);
 }
Beispiel #12
0
 public RunicHammer( CraftResource resource, int uses )
     : base(resource, uses, 0x13E4)
 {
     Weight = 8.0;
     Layer = Layer.OneHanded;
     Hue = CraftResources.GetHue( resource );
 }
Beispiel #13
0
		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 );
                                         
  
 } 
Beispiel #15
0
			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;
			}
Beispiel #16
0
		public BaseLog( CraftResource resource, int amount ) : base( 0x1BDD )
		{
			Stackable = true;
			Weight = 3.0;
			Amount = amount;
			Hue = CraftResources.GetHue( resource );			
			m_Resource = resource;
		}
Beispiel #17
0
		public BaseScales( CraftResource resource, int amount ) : base( 0x26B4 )
		{
			Stackable = true;
			Amount = amount;
			Hue = CraftResources.GetHue( resource );

			m_Resource = resource;
		}
Beispiel #18
0
		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 );
                              
  
 } 
Beispiel #20
0
		public BaseBoards( CraftResource resource, int amount ) : base( 0x1BD7 )
		{
			Stackable = true;
			Amount = amount;
			Hue = CraftResources.GetHue( resource );

			m_Resource = resource;
		}
Beispiel #21
0
		public BaseLeather( CraftResource resource, int amount ) : base( 0x1081 )
		{
			Stackable = true;
			Weight = 1.0;
			Amount = amount;
			Hue = CraftResources.GetHue( resource );
			m_Resource = resource;
		}
Beispiel #22
0
        public BaseOre(CraftResource resource, int amount)
            : base(RandomSize())
        {
            this.Stackable = true;
            this.Amount = amount;
            this.Hue = CraftResources.GetHue(resource);

            this.m_Resource = resource;
        }
Beispiel #23
0
        public Board(CraftResource resource, int amount)
            : base(0x1BD7)
        {
            this.Stackable = true;
            this.Amount = amount;

            this.m_Resource = resource;
            this.Hue = CraftResources.GetHue(resource);
        }
Beispiel #24
0
        public BaseScales(CraftResource resource, int amount)
            : base(0x26B4)
        {
            this.Stackable = true;
            this.Amount = amount;
            this.Hue = CraftResources.GetHue(resource);

            this.m_Resource = resource;
        }
Beispiel #25
0
        public BaseIngot(CraftResource resource, int amount)
            : base(0x1BF2)
        {
            this.Stackable = true;
            this.Amount = amount;
            this.Hue = CraftResources.GetHue(resource);

            this.m_Resource = resource;
        }
Beispiel #26
0
 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;
		}
Beispiel #29
0
		public BaseHides( CraftResource resource, int amount ) : base( 0x1079 )
		{
			Stackable = true;
			Weight = 5.0;
			Amount = amount;
			Hue = CraftResources.GetHue( resource );

			m_Resource = resource;
		}
Beispiel #30
0
		public BaseOre( CraftResource resource, int amount ) : base( 0x19B9 )
		{
			Stackable = true;
			Weight = 12.0;
			Amount = amount;
			Hue = CraftResources.GetHue( resource );

			m_Resource = resource;
		}
Beispiel #31
0
        /// <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);
        }
Beispiel #32
0
		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);
				}
			}
		}
Beispiel #33
0
 //[Constructable]
 public BaseLog(CraftResource resource)
     : this(resource, 1)
 {
 }
Beispiel #34
0
        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);
        }
Beispiel #35
0
        /// <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);
        }
Beispiel #36
0
        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;
            }
        }
Beispiel #37
0
        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;
            }
        }
Beispiel #38
0
 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;
        }
Beispiel #40
0
        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;
            }
            }
        }
Beispiel #41
0
 public BaseIngot(CraftResource resource) : this(resource, 1)
 {
 }
Beispiel #42
0
 public BaseRunicTool(CraftResource resource, int uses, int itemID) : base(uses, itemID)
 {
     m_Resource = resource;
 }
Beispiel #43
0
 public RunicSewingKit(CraftResource resource, int uses) : base(resource, uses, 0xF9D)
 {
     Weight = 2.0;
     Hue    = CraftResources.GetHue(resource);
 }
Beispiel #44
0
        /// <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);
        }
Beispiel #45
0
 public BaseHides(CraftResource resource) : this(resource, 1)
 {
 }
Beispiel #46
0
        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);
        }
Beispiel #47
0
        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;
            }
            }
        }
Beispiel #48
0
 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);
 }
Beispiel #50
0
 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);
        }
Beispiel #52
0
        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);
            }
        }
Beispiel #53
0
            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;
        }
Beispiel #55
0
        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;
            }
            }
        }
Beispiel #56
0
 /// <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);
 }
Beispiel #57
0
 public BaseLeather(CraftResource resource) : this(resource, 1)
 {
 }
Beispiel #58
0
 public FireworkStarCustom(CraftResource res, int amount)
     : base(res, amount)
 {
 }
Beispiel #59
0
 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;
 }
Beispiel #60
0
        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;
            }
        }