Server.Items.SalvageBag.Resmelt C# (CSharp) Méthode

Resmelt() private méthode

private Resmelt ( Server.Mobile from, Item item, CraftResource resource ) : bool
from Server.Mobile
item Item
resource CraftResource
Résultat bool
        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 );

                if( ( item is BaseArmor && ( (BaseArmor)item ).PlayerConstructed ) || ( item is BaseWeapon && ( (BaseWeapon)item ).PlayerConstructed ) || ( item is BaseClothing && ( (BaseClothing)item ).PlayerConstructed ) )
					{
						double mining = from.Skills[ SkillName.Mining ].Value;
						if( mining > 100.0 )
							mining = 100.0;
						double amount = ( ( ( 4 + mining ) * craftResource.Amount - 4 ) * 0.0068 );
						if( amount < 2 )
							ingot.Amount = 2;
						else
						ingot.Amount = (int)amount;
					}
                else
				{
                    ingot.Amount = 2;
				}
				
				if ( difficulty > from.Skills[ SkillName.Mining ].Value )
				{
					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;
        }
		#endregion