Go Back   RunUO - Ultima Online Emulation > RunUO > Server Support on Windows

Server Support on Windows Get (and give) support on general questions related to the RunUO server itself.

Reply
 
Thread Tools Display Modes
Old 09-23-2006, 03:20 AM   #1 (permalink)
Forum Novice
 
InOverMyHead's Avatar
 
Join Date: Oct 2003
Location: In a state of total and constant confusion
Age: 52
Posts: 446
Default Server crashes when crafting logs into boards

My server keeps crashing when anyone tries to craft logs into boards.

I've looked at the crash report and the scripts that the report mentions and I don't see anything wrong.

Maybe I'm not reading the report right and I'm inovermyhead on this one...(snickers)....I couldn't resist.

I'll post the crash report and maybe someone can tell me what I'm missing.

Code:
Exception:
System.DivideByZeroException: Attempted to divide by zero.
   at Server.Engines.Craft.CraftItem.ConsumeRes(Mobile from, Type typeRes, CraftSystem craftSystem, Int32& resHue, Int32& maxAmount, ConsumeType consumeType, Object& message, Boolean isFailure)
   at Server.Engines.Craft.CraftItem.Craft(Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool)
   at Server.Engines.Craft.CraftGump.CraftItem(CraftItem item)
   at Server.Engines.Craft.CraftGump.OnResponse(NetState sender, RelayInfo info)
   at Server.Network.PacketHandlers.DisplayGumpResponse(NetState state, PacketReader pvSrc)
   at Server.Network.MessagePump.HandleReceive(NetState ns)
   at Server.Network.MessagePump.Slice()
   at Server.Core.Main(String[] args)

Thank you in advance
__________________
Untitled-12 copy.jpg
InOverMyHead is offline   Reply With Quote
Old 09-23-2006, 09:35 AM   #2 (permalink)
Forum Newbie
 
Join Date: Mar 2004
Age: 30
Posts: 76
Default

Go to this function
Code:
 at Server.Engines.Craft.CraftItem.ConsumeRes(Mobile from, Type typeRes, CraftSystem craftSystem, Int32& resHue, Int32& maxAmount, ConsumeType consumeType, Object& message, Boolean isFailure)
and look for any division that might have a divisor that is zero.
Code:
System.DivideByZeroException: Attempted to divide by zero.
Its all there... you just have to read it.
[IceAge]Scrat is offline   Reply With Quote
Old 09-24-2006, 03:00 AM   #3 (permalink)
Forum Novice
 
InOverMyHead's Avatar
 
Join Date: Oct 2003
Location: In a state of total and constant confusion
Age: 52
Posts: 446
Default

I looked and I didn't see anything that might have a divisor of zero.

I guess I don't know enough about scripts to know what I'm looking for.
__________________
Untitled-12 copy.jpg
InOverMyHead is offline   Reply With Quote
Old 09-24-2006, 03:19 AM   #4 (permalink)
Forum Expert
 
Thistle's Avatar
 
Join Date: Mar 2005
Posts: 1,155
Default

Post your carpentry script then (in code tags of course). Hopefully someone will find the error in it.
__________________
Thistle is offline   Reply With Quote
Old 09-24-2006, 02:51 PM   #5 (permalink)
Forum Master
 
Lord_Greywolf's Avatar
 
Join Date: Dec 2005
Posts: 6,633
Send a message via Yahoo to Lord_Greywolf
Default

are you using a custom log system?

of so what it might be doing is defaulting to resource 0 instead of the log resource number (depending on system, 300 i believe)

but your defcarp.cs file and your oreinfo.cs (if you have a modified log system) would need to be seen then
__________________
http://www.AoAUO.com

:) ..... Come for the Customs, Play for the Fun. Return to see your new Friends ..... :)
Lord_Greywolf is offline   Reply With Quote
Old 09-25-2006, 12:27 AM   #6 (permalink)
Forum Novice
 
InOverMyHead's Avatar
 
Join Date: Oct 2003
Location: In a state of total and constant confusion
Age: 52
Posts: 446
Default

I fixed the problem with the server crashing... I think... Now when I craft the logs into boards it only crafts one board at a time and it doesn't consume any of the logs and it says that I failed and some of my materials were lost, but, nothing has been lost. And I am using a custom owl system.

Here's my defcarpentry script

Code:
using System;
using Server.Items;
namespace Server.Engines.Craft
{
 public class DefCarpentry : CraftSystem
 {
  public override SkillName MainSkill
  {
   get { return SkillName.Carpentry; }
  }
  public override int GumpTitleNumber
  {
   get { return 1044004; } // <CENTER>CARPENTRY MENU</CENTER>
  }
  private static CraftSystem m_CraftSystem;
  public static CraftSystem CraftSystem
  {
   get
   {
    if ( m_CraftSystem == null )
     m_CraftSystem = new DefCarpentry();
    return m_CraftSystem;
   }
  }
  public override double GetChanceAtMin( CraftItem item )
  {
   return 0.5; // 50%
  }
  private DefCarpentry() : base( 1, 1, 1.25 )// base( 1, 1, 3.0 )
  {
  }
        public override bool RetainsColorFrom( CraftItem item, Type type ) // public virtual bool 
  {
   return true;
  }
  public override int CanCraft( Mobile from, BaseTool tool, Type itemType )
  {
   if( tool == null || tool.Deleted || tool.UsesRemaining < 0 )
    return 1044038; // You have worn out your tool!
   else if ( !BaseTool.CheckAccessible( tool, from ) )
    return 1044263; // The tool must be on your person to use.
   return 0;
  }
  public override void PlayCraftEffect( Mobile from )
  {
   // no animation
   if ( from.Body.Type == BodyType.Human && !from.Mounted )
    from.Animate( 9, 5, 1, true, false, 0 );
   from.PlaySound( 0x23D );
  }
  public override int PlayEndingEffect( Mobile from, bool failed, bool lostMaterial, bool toolBroken, int quality, bool makersMark, CraftItem item )
  {
   if ( toolBroken )
    from.SendLocalizedMessage( 1044038 ); // You have worn out your tool
   if ( failed )
   {
    if ( lostMaterial )
     return 1044043; // You failed to create the item, and some of your materials are lost.
    else
     return 1044157; // You failed to create the item, but no materials were lost.
   }
   else
   {
    if ( quality == 0 )
     return 502785; // You were barely able to make this item.  It's quality is below average.
    else if ( makersMark && quality == 2 )
     return 1044156; // You create an exceptional quality item and affix your maker's mark.
    else if ( quality == 2 )
     return 1044155; // You create an exceptional quality item.
    else    
     return 1044154; // You create the item.
   }
  }
  public override void InitCraftList()
  {
   int index = -1;
   // Other Items
   index = AddCraft( typeof( Board ),1044294, ( string.Format( "Logs To Boards" ) ), 0.0, 0.0, typeof( Log ), 1044466,  100, 1044465 );
            index = AddCraft( typeof( PeachwoodBoard ),1044294, ( string.Format( "Peachwood Logs To Boards" ) ), 10.0, 120.0, typeof( PeachwoodLog ), 1044466,  100, 1044465 );
            index = AddCraft( typeof( HeartwoodBoard ),1044294, ( string.Format( "Heartwood Logs To Boards" ) ), 20.0, 120.0, typeof( HeartwoodLog ), 1044466,  100, 1044465 );
            index = AddCraft( typeof( AlderBoard ),1044294, ( string.Format( "Alder Logs To Boards" ) ), 30.0, 120.0, typeof( AlderLog ), 1044466,  100, 1044465 );
            index = AddCraft( typeof( AshBoard ),1044294, ( string.Format( "Ash Logs To Boards" ) ), 35.0, 120.0, typeof( AshLog ), 1044466,  100, 1044465 );
            index = AddCraft( typeof( MapleBoard ),1044294, ( string.Format( "Maple Logs To Boards" ) ), 40.0, 120.0, typeof( MapleLog ), 1044466,  100, 1044465 );
            index = AddCraft( typeof( OakBoard ),1044294, ( string.Format( "Oak Logs To Boards" ) ), 45.0, 120.0, typeof( OakLog ), 1044466,  100, 1044465 );
            index = AddCraft( typeof( TeakBoard ),1044294, ( string.Format( "Teak Logs To Boards" ) ), 50.0, 120.0, typeof( TeakLog ), 1044466,  100, 1044465 );
            index = AddCraft( typeof( OrangewoodBoard ),1044294, ( string.Format( "Orangewood Logs To Boards" ) ), 55.0, 120.0, typeof( OrangewoodLog ), 1044466,  100, 1044465 );
            index = AddCraft( typeof( BurlBoard ),1044294, ( string.Format( "Burl Logs To Boards" ) ), 60.0, 120.0, typeof( BurlLog ), 1044466,  100, 1044465 );
            index = AddCraft( typeof( ElmwoodBoard ),1044294, ( string.Format( "Elmwood Logs To Boards" ) ), 65.0, 120.0, typeof( ElmwoodLog ), 1044466,  100, 1044465 );
            index = AddCraft( typeof( ButtonwoodBoard ),1044294, ( string.Format( "Buttonwood Logs To Boards" ) ), 70.0, 120.0, typeof( ButtonwoodLog ), 1044466,  100, 1044465 );
            index = AddCraft( typeof( YewBoard ),1044294, ( string.Format( "Yew Logs To Boards" ) ), 75.0, 120.0, typeof( YewLog ), 1044466,  100, 1044465 );
            index = AddCraft( typeof( PecanBoard ),1044294, ( string.Format( "Pecan Logs To Boards" ) ), 80.0, 120.0, typeof( PecanLog ), 1044466,  100, 1044465 );
            index = AddCraft( typeof( BloodwoodBoard ),1044294, ( string.Format( "BloodwoodLogs To Boards" ) ), 85.0, 120.0, typeof( BloodwoodLog ), 1044466,  100, 1044465 );
            index = AddCraft( typeof( FrostwoodBoard ),1044294, ( string.Format( "Frostwood Logs To Boards" ) ), 90.0, 120.0, typeof( FrostwoodLog ), 1044466,  100, 1044465 );
            index = AddCraft( typeof( RosewoodBoard ),1044294, ( string.Format( "Rosewood Logs To Boards" ) ), 95.0, 120.0, typeof( RosewoodLog ), 1044466,  100, 1044465 ); 
            index = AddCraft( typeof( IronwoodBoard ),1044294, ( string.Format( "Ironwood Logs To Boards" ) ), 99.0, 120.0, typeof( IronwoodLog ), 1044466,  100, 1044465 );
   SetUseAllRes( index, true );
   AddCraft( typeof( BarrelStaves ),    1044294, 1027857, 00.0,  25.0, typeof( Log ), 1044041,  5, 1044351 );        
   AddCraft( typeof( BarrelLid ),     1044294, 1027608, 11.0,  36.0, typeof( Log ), 1044041,  4, 1044351 );
   AddCraft( typeof( ShortMusicStand ),   1044294, 1044313, 78.9, 103.9, typeof( Log ), 1044041, 15, 1044351 );
   AddCraft( typeof( TallMusicStand ),    1044294, 1044315, 81.5, 106.5, typeof( Log ), 1044041, 20, 1044351 );
   AddCraft( typeof( Easle ),      1044294, 1044317, 86.8, 111.8, typeof( Log ), 1044041, 20, 1044351 );
   SetUseAllRes( index, true );
   if( Core.SE )
   {
    index = AddCraft( typeof( RedHangingLantern ), 1044294, 1029412, 65.0, 90.0, typeof( Log ), 1044041, 5, 1044351 );
    AddRes( index, typeof( BlankScroll ), 1044377, 10, 1044378 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
    index = AddCraft( typeof( WhiteHangingLantern ), 1044294, 1029416, 65.0, 90.0, typeof( Log ), 1044041, 5, 1044351 );
    AddRes( index, typeof( BlankScroll ), 1044377, 10, 1044378 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
    index = AddCraft( typeof( ShojiScreen ), 1044294, 1029423, 80.0, 105.0, typeof( Log ), 1044041, 75, 1044351 );
    AddSkill( index, SkillName.Tailoring, 50.0, 55.0 );
    AddRes( index, typeof( Cloth ), 1044286, 60, 1044287 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
    index = AddCraft( typeof( BambooScreen ), 1044294, 1029428, 80.0, 105.0, typeof( Log ), 1044041, 75, 1044351 );
    AddSkill( index, SkillName.Tailoring, 50.0, 55.0 );
    AddRes( index, typeof( Cloth ), 1044286, 60, 1044287 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
   }
            index = AddCraft(typeof(ArcanistStatueSouthDeed), 1044294, 1072885, 94.7, 113.1, typeof(Log), 1044041, 250, 1044351);
            index = AddCraft(typeof(ArcanistStatueEastDeed), 1044294, 1072886, 94.7, 113.1, typeof(Log), 1044041, 250, 1044351);
            index = AddCraft(typeof(WarriorStatueSouthDeed), 1044294, 1072887, 94.7, 113.1, typeof(Log), 1044041, 250, 1044351);
            index = AddCraft(typeof(WarriorStatueEastDeed), 1044294, 1072888, 94.7, 113.1, typeof(Log), 1044041, 250, 1044351);
            index = AddCraft(typeof(SquirrelStatueSouthDeed), 1044294, 1072884, 94.7, 113.1, typeof(Log), 1044041, 250, 1044351);
            index = AddCraft(typeof(SquirrelStatueEastDeed), 1044294, 1073398, 94.7, 113.1, typeof(Log), 1044041, 250, 1044351);
   // Furniture
   AddCraft( typeof( FootStool ),     1044291, 1022910, 11.0,  36.0, typeof( Log ), 1044041,  9, 1044351 );
   AddCraft( typeof( Stool ),      1044291, 1022602, 11.0,  36.0, typeof( Log ), 1044041,  9, 1044351 );
   AddCraft( typeof( BambooChair ),    1044291, 1044300, 21.0,  46.0, typeof( Log ), 1044041, 13, 1044351 );
   AddCraft( typeof( WoodenChair ),    1044291, 1044301, 21.0,  46.0, typeof( Log ), 1044041, 13, 1044351 );
   AddCraft( typeof( FancyWoodenChairCushion ), 1044291, 1044302, 42.1,  67.1, typeof( Log ), 1044041, 15, 1044351 );
   AddCraft( typeof( WoodenChairCushion ),   1044291, 1044303, 42.1,  67.1, typeof( Log ), 1044041, 13, 1044351 );
   AddCraft( typeof( WoodenBench ),    1044291, 1022860, 52.6,  77.6, typeof( Log ), 1044041, 17, 1044351 );
   AddCraft( typeof( WoodenThrone ),    1044291, 1044304, 52.6,  77.6, typeof( Log ), 1044041, 17, 1044351 );
   AddCraft( typeof( Throne ),      1044291, 1044305, 73.6,  98.6, typeof( Log ), 1044041, 19, 1044351 );
   AddCraft( typeof( Nightstand ),     1044291, 1044306, 42.1,  67.1, typeof( Log ), 1044041, 17, 1044351 );
   AddCraft( typeof( WritingTable ),    1044291, 1022890, 63.1,  88.1, typeof( Log ), 1044041, 17, 1044351 );
   AddCraft( typeof( YewWoodTable ),    1044291, 1044307, 63.1,  88.1, typeof( Log ), 1044041, 23, 1044351 );
   AddCraft( typeof( LargeTable ),     1044291, 1044308, 84.2, 109.2, typeof( Log ), 1044041, 27, 1044351 );
   SetUseAllRes( index, true );
   if( Core.SE )
   {
    index = AddCraft( typeof( ElegantLowTable ), 1044291, 1030265, 80.0, 105.0, typeof( Log ), 1044041, 35, 1044351 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
    index = AddCraft( typeof( PlainLowTable ),  1044291, 1030266, 80.0, 105.0, typeof( Log ), 1044041, 35, 1044351 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
   }
   // Containers
   AddCraft( typeof( WoodenBox ),     1044292, 1023709, 21.0,  46.0, typeof( Log ), 1044041, 10, 1044351 );
   AddCraft( typeof( SmallCrate ),     1044292, 1044309, 10.0,  35.0, typeof( Log ), 1044041, 8 , 1044351 );
   AddCraft( typeof( MediumCrate ),    1044292, 1044310, 31.0,  56.0, typeof( Log ), 1044041, 15, 1044351 );
   AddCraft( typeof( LargeCrate ),     1044292, 1044311, 47.3,  72.3, typeof( Log ), 1044041, 18, 1044351 );
   AddCraft( typeof( WoodenChest ),    1044292, 1023650, 73.6,  98.6, typeof( Log ), 1044041, 20, 1044351 );
   AddCraft( typeof( EmptyBookcase ),    1044292, 1022718, 31.5,  56.5, typeof( Log ), 1044041, 25, 1044351 );
   AddCraft( typeof( FancyArmoire ),    1044292, 1044312, 84.2, 109.2, typeof( Log ), 1044041, 35, 1044351 );
   AddCraft( typeof( Armoire ),     1044292, 1022643, 84.2, 109.2, typeof( Log ), 1044041, 35, 1044351 );
   SetUseAllRes( index, true ); 
   if( Core.SE )
   {
    index = AddCraft( typeof( PlainWoodenChest ), 1044292, 1030251, 90.0, 115.0, typeof( Log ), 1044041, 30, 1044351 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
    index = AddCraft( typeof( OrnateWoodenChest ), 1044292, 1030253, 90.0, 115.0, typeof( Log ), 1044041, 30, 1044351 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
    index = AddCraft( typeof( GildedWoodenChest ), 1044292, 1030255, 90.0, 115.0, typeof( Log ), 1044041, 30, 1044351 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
    index = AddCraft( typeof( WoodenFootLocker ), 1044292, 1030257, 90.0, 115.0, typeof( Log ), 1044041, 30, 1044351 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
    index = AddCraft( typeof( FinishedWoodenChest ),1044292, 1030259, 90.0, 115.0, typeof( Log ), 1044041, 30, 1044351 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
    index = AddCraft( typeof( TallCabinet ), 1044292, 1030261, 90.0, 115.0, typeof( Log ), 1044041, 35, 1044351 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
    index = AddCraft( typeof( ShortCabinet ), 1044292, 1030263, 90.0, 115.0, typeof( Log ), 1044041, 35, 1044351 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
    index = AddCraft( typeof( RedArmoire ), 1044292, 1030328, 90.0, 115.0, typeof( Log ), 1044041, 40, 1044351 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
    
    index = AddCraft( typeof( ElegantArmoire ), 1044292, 1030330, 90.0, 115.0, typeof( Log ), 1044041, 40, 1044351 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
    
    index = AddCraft( typeof( MapleArmoire ), 1044292, 1030328, 90.0, 115.0, typeof( Log ), 1044041, 40, 1044351 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
    
    index = AddCraft( typeof( CherryArmoire ), 1044292, 1030328, 90.0, 115.0, typeof( Log ), 1044041, 40, 1044351 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
   }
   index = AddCraft( typeof( Keg ), 1044292, 1023711, 57.8, 82.8, typeof( BarrelStaves ), 1044288, 3, 1044253 );
   AddRes( index, typeof( BarrelHoops ), 1044289, 1, 1044253 );
   AddRes( index, typeof( BarrelLid ), 1044251, 1, 1044253 );
   SetUseAllRes( index, true );
   // Staves and Shields
   AddCraft( typeof( ShepherdsCrook ), 1044295, 1023713, 78.9, 103.9, typeof( Log ), 1044041, 7, 1044351 );
   AddCraft( typeof( QuarterStaff ), 1044295, 1023721, 73.6, 98.6, typeof( Log ), 1044041, 6, 1044351 );
   AddCraft( typeof( GnarledStaff ), 1044295, 1025112, 78.9, 103.9, typeof( Log ), 1044041, 7, 1044351 );
   AddCraft( typeof( WoodenShield ), 1044295, 1027034, 52.6, 77.6, typeof( Log ), 1044041, 9, 1044351 );
   SetUseAllRes( index, true );
   
   index = AddCraft( typeof( FishingPole ), Core.AOS ? 1044294 : 1044295, 1023519, 68.4, 93.4, typeof( Log ), 1044041, 5, 1044351 ); //This is in the categor of Other during AoS
   AddSkill( index, SkillName.Tailoring, 40.0, 45.0 );
   AddRes( index, typeof( Cloth ), 1044286, 5, 1044287 );
   SetUseAllRes( index, true );
   if( Core.SE )
   {
    index = AddCraft( typeof( Bokuto ), 1044295, 1030227, 70.0, 95.0, typeof( Log ), 1044041, 6, 1044351 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
    index = AddCraft( typeof( Fukiya ), 1044295, 1030229, 60.0, 85.0, typeof( Log ), 1044041, 6, 1044351 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
    index = AddCraft( typeof( Tetsubo ), 1044295, 1030225, 85.0, 110.0, typeof( Log ), 1044041, 8, 1044351 );
    AddSkill( index, SkillName.Tinkering, 40.0, 45.0 );
    AddRes( index, typeof( IronIngot ), 1044036, 5, 1044037 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
   }
   // Instruments
   index = AddCraft( typeof( LapHarp ), 1044293, 1023762, 63.1, 88.1, typeof( Log ), 1044041, 20, 1044351 );
   AddSkill( index, SkillName.Musicianship, 45.0, 50.0 );
   AddRes( index, typeof( Cloth ), 1044286, 10, 1044287 );
   SetUseAllRes( index, true );
   index = AddCraft( typeof( Harp ), 1044293, 1023761, 78.9, 103.9, typeof( Log ), 1044041, 35, 1044351 );
   AddSkill( index, SkillName.Musicianship, 45.0, 50.0 );
   AddRes( index, typeof( Cloth ), 1044286, 15, 1044287 );
   SetUseAllRes( index, true );
   
   index = AddCraft( typeof( Drums ), 1044293, 1023740, 57.8, 82.8, typeof( Log ), 1044041, 20, 1044351 );
   AddSkill( index, SkillName.Musicianship, 45.0, 50.0 );
   AddRes( index, typeof( Cloth ), 1044286, 10, 1044287 );
   SetUseAllRes( index, true );
   
   index = AddCraft( typeof( Lute ), 1044293, 1023763, 68.4, 93.4, typeof( Log ), 1044041, 25, 1044351 );
   AddSkill( index, SkillName.Musicianship, 45.0, 50.0 );
   AddRes( index, typeof( Cloth ), 1044286, 10, 1044287 );
   SetUseAllRes( index, true );
   
   index = AddCraft( typeof( Tambourine ), 1044293, 1023741, 57.8, 82.8, typeof( Log ), 1044041, 15, 1044351 );
   AddSkill( index, SkillName.Musicianship, 45.0, 50.0 );
   AddRes( index, typeof( Cloth ), 1044286, 10, 1044287 );
   SetUseAllRes( index, true );
   index = AddCraft( typeof( TambourineTassel ), 1044293, 1044320, 57.8, 82.8, typeof( Log ), 1044041, 15, 1044351 );
   AddSkill( index, SkillName.Musicianship, 45.0, 50.0 );
   AddRes( index, typeof( Cloth ), 1044286, 15, 1044287 );
   SetUseAllRes( index, true ); 
   if( Core.SE )
   {
    index = AddCraft( typeof( BambooFlute ), 1044293, 1030247, 80.0, 105.0, typeof( Log ), 1044041, 15, 1044351 );
    AddSkill( index, SkillName.Musicianship, 45.0, 50.0 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.SE );
   }
   // Misc
   index = AddCraft( typeof( SmallBedSouthDeed ), 1044290, 1044321, 94.7, 113.1, typeof( Log ), 1044041, 100, 1044351 );
   AddSkill( index, SkillName.Tailoring, 75.0, 80.0 );
   AddRes( index, typeof( Cloth ), 1044286, 100, 1044287 );
   index = AddCraft( typeof( SmallBedEastDeed ), 1044290, 1044322, 94.7, 113.1, typeof( Log ), 1044041, 100, 1044351 );
   AddSkill( index, SkillName.Tailoring, 75.0, 80.0 );
   AddRes( index, typeof( Cloth ), 1044286, 100, 1044287 );
   index = AddCraft( typeof( LargeBedSouthDeed ), 1044290,1044323, 94.7, 113.1, typeof( Log ), 1044041, 150, 1044351 );
   AddSkill( index, SkillName.Tailoring, 75.0, 80.0 );
   AddRes( index, typeof( Cloth ), 1044286, 150, 1044287 );
   index = AddCraft( typeof( LargeBedEastDeed ), 1044290, 1044324, 94.7, 113.1, typeof( Log ), 1044041, 150, 1044351 );
   AddSkill( index, SkillName.Tailoring, 75.0, 80.0 );
   AddRes( index, typeof( Cloth ), 1044286, 150, 1044287 );
   AddCraft( typeof( DartBoardSouthDeed ), 1044290, 1044325, 15.7, 40.7, typeof( Log ), 1044041, 5, 1044351 );
   AddCraft( typeof( DartBoardEastDeed ), 1044290, 1044326, 15.7, 40.7, typeof( Log ), 1044041, 5, 1044351 );
   AddCraft( typeof( BallotBoxDeed ), 1044290, 1044327, 47.3, 72.3, typeof( Log ), 1044041, 5, 1044351 );
   index = AddCraft( typeof( PentagramDeed ), 1044290, 1044328, 100.0, 125.0, typeof( Log ), 1044041, 100, 1044351 );
   AddSkill( index, SkillName.Magery, 75.0, 80.0 );
   AddRes( index, typeof( IronIngot ), 1044036, 40, 1044037 );
   index = AddCraft( typeof( AbbatoirDeed ), 1044290, 1044329, 100.0, 125.0, typeof( Log ), 1044041, 100, 1044351 );
   AddSkill( index, SkillName.Magery, 50.0, 55.0 );
   AddRes( index, typeof( IronIngot ), 1044036, 40, 1044037 );
   SetUseAllRes( index, true );
   if ( Core.AOS )
   {
    AddCraft( typeof( PlayerBBEast ), 1044290, 1062420, 85.0, 110.0, typeof( Log ), 1044041, 50, 1044351 );
    AddCraft( typeof( PlayerBBSouth ), 1044290, 1062421, 85.0, 110.0, typeof( Log ), 1044041, 50, 1044351 );
    SetUseAllRes( index, true );
   }
           /*if( Core.ML )
   {
    index = AddCraft( typeof( TallElfinBedEastDeed), 1044293, 1030247, 80.0, 100.0, typeof( Log ), 1044041, 200, 1044351 );
    AddSkill( index, SkillName.Tailoring, 45.0, 50.0 );
                AddRes( index, typeof( Cloth ), 1044286, 100, 1044287 );
    SetUseAllRes( index, true );
    SetNeededExpansion( index, Expansion.ML );
   }*/
   // Blacksmithy
   index = AddCraft( typeof( SmallForgeDeed ), 1044296, 1044330, 73.6, 98.6, typeof( Log ), 1044041, 5, 1044351 );
   AddSkill( index, SkillName.Blacksmith, 75.0, 80.0 );
   AddRes( index, typeof( IronIngot ), 1044036, 75, 1044037 );
   index = AddCraft( typeof( LargeForgeEastDeed ), 1044296, 1044331, 78.9, 103.9, typeof( Log ), 1044041, 5, 1044351 );
   AddSkill( index, SkillName.Blacksmith, 80.0, 85.0 );
   AddRes( index, typeof( IronIngot ), 1044036, 100, 1044037 );
   index = AddCraft( typeof( LargeForgeSouthDeed ), 1044296, 1044332, 78.9, 103.9, typeof( Log ), 1044041, 5, 1044351 );
   AddSkill( index, SkillName.Blacksmith, 80.0, 85.0 );
   AddRes( index, typeof( IronIngot ), 1044036, 100, 1044037 );
   index = AddCraft( typeof( AnvilEastDeed ), 1044296, 1044333, 73.6, 98.6, typeof( Log ), 1044041, 5, 1044351 );
   AddSkill( index, SkillName.Blacksmith, 75.0, 80.0 );
   AddRes( index, typeof( IronIngot ), 1044036, 150, 1044037 );
   index = AddCraft( typeof( AnvilSouthDeed ), 1044296, 1044334, 73.6, 98.6, typeof( Log ), 1044041, 5, 1044351 );
   AddSkill( index, SkillName.Blacksmith, 75.0, 80.0 );
   AddRes( index, typeof( IronIngot ), 1044036, 150, 1044037 );
   SetUseAllRes( index, true );
   // Training
   index = AddCraft( typeof( TrainingDummyEastDeed ), 1044297, 1044335, 68.4, 93.4, typeof( Log ), 1044041, 55, 1044351 );
   AddSkill( index, SkillName.Tailoring, 50.0, 55.0 );
   AddRes( index, typeof( Cloth ), 1044286, 60, 1044287 );
   index = AddCraft( typeof( TrainingDummySouthDeed ), 1044297, 1044336, 68.4, 93.4, typeof( Log ), 1044041, 55, 1044351 );
   AddSkill( index, SkillName.Tailoring, 50.0, 55.0 );
   AddRes( index, typeof( Cloth ), 1044286, 60, 1044287 );
   index = AddCraft( typeof( PickpocketDipEastDeed ), 1044297, 1044337, 73.6, 98.6, typeof( Log ), 1044041, 65, 1044351 );
   AddSkill( index, SkillName.Tailoring, 50.0, 55.0 );
   AddRes( index, typeof( Cloth ), 1044286, 60, 1044287 );
   index = AddCraft( typeof( PickpocketDipSouthDeed ), 1044297, 1044338, 73.6, 98.6, typeof( Log ), 1044041, 65, 1044351 );
   AddSkill( index, SkillName.Tailoring, 50.0, 55.0 );
   AddRes( index, typeof( Cloth ), 1044286, 60, 1044287 );
   SetUseAllRes( index, true );
   // Tailoring
   index = AddCraft( typeof( Dressform ), 1044298, 1044339, 63.1, 88.1, typeof( Log ), 1044041, 25, 1044351 );
   AddSkill( index, SkillName.Tailoring, 65.0, 70.0 );
   AddRes( index, typeof( Cloth ), 1044286, 10, 1044287 );
   index = AddCraft( typeof( SpinningwheelEastDeed ), 1044298, 1044341, 73.6, 98.6, typeof( Log ), 1044041, 75, 1044351 );
   AddSkill( index, SkillName.Tailoring, 65.0, 70.0 );
   AddRes( index, typeof( Cloth ), 1044286, 25, 1044287 );
   index = AddCraft( typeof( SpinningwheelSouthDeed ), 1044298, 1044342, 73.6, 98.6, typeof( Log ), 1044041, 75, 1044351 );
   AddSkill( index, SkillName.Tailoring, 65.0, 70.0 );
   AddRes( index, typeof( Cloth ), 1044286, 25, 1044287 );
   index = AddCraft( typeof( LoomEastDeed ), 1044298, 1044343, 84.2, 109.2, typeof( Log ), 1044041, 85, 1044351 );
   AddSkill( index, SkillName.Tailoring, 65.0, 70.0 );
   AddRes( index, typeof( Cloth ), 1044286, 25, 1044287 );
   index = AddCraft( typeof( LoomSouthDeed ), 1044298, 1044344, 84.2, 109.2, typeof( Log ), 1044041, 85, 1044351 );
   AddSkill( index, SkillName.Tailoring, 65.0, 70.0 );
   AddRes( index, typeof( Cloth ), 1044286, 25, 1044287 );
   SetUseAllRes( index, true );
   // Cooking
   index = AddCraft( typeof( StoneOvenEastDeed ), 1044299, 1044345, 68.4, 93.4, typeof( Log ), 1044041, 85, 1044351 );
   AddSkill( index, SkillName.Tinkering, 50.0, 55.0 );
   AddRes( index, typeof( IronIngot ), 1044036, 125, 1044037 );
   index = AddCraft( typeof( StoneOvenSouthDeed ), 1044299, 1044346, 68.4, 93.4, typeof( Log ), 1044041, 85, 1044351 );
   AddSkill( index, SkillName.Tinkering, 50.0, 55.0 );
   AddRes( index, typeof( IronIngot ), 1044036, 125, 1044037 );
   index = AddCraft( typeof( FlourMillEastDeed ), 1044299, 1044347, 94.7, 119.7, typeof( Log ), 1044041, 100, 1044351 );
   AddSkill( index, SkillName.Tinkering, 50.0, 55.0 );
   AddRes( index, typeof( IronIngot ), 1044036, 50, 1044037 );
   index = AddCraft( typeof( FlourMillSouthDeed ), 1044299, 1044348, 94.7, 119.7, typeof( Log ), 1044041, 100, 1044351 );
   AddSkill( index, SkillName.Tinkering, 50.0, 55.0 );
   AddRes( index, typeof( IronIngot ), 1044036, 50, 1044037 );
   AddCraft( typeof( WaterTroughEastDeed ), 1044299, 1044349, 94.7, 119.7, typeof( Log ), 1044041, 150, 1044351 );
   AddCraft( typeof( WaterTroughSouthDeed ), 1044299, 1044350, 94.7, 119.7, typeof( Log ), 1044041, 150, 1044351 );
   SetUseAllRes( index, true );
            SetSubRes( typeof( Log ), 1044041 );
            AddSubRes( typeof( Log ), ( string.Format( "Regular" ) ), 00.0, 0 );
   AddSubRes( typeof( PeachwoodLog ), ( string.Format( "Peachwood" ) ), 10.0, 1044351 );
            AddSubRes( typeof( HeartwoodLog ), ( string.Format( "Heartwood" ) ), 20.0, 1044351 );
   AddSubRes( typeof( AlderLog ), ( string.Format( "Alder" ) ), 30.0, 1044351 );
            AddSubRes( typeof( AshLog ), ( string.Format( "Ash" ) ), 35.0, 1044351 );
   AddSubRes( typeof( MapleLog ), ( string.Format( "Maple" ) ), 40.0, 1044351 );
            AddSubRes( typeof( OakLog ), (  string.Format( "Oak" ) ), 45.0, 1044351 );
   AddSubRes( typeof( TeakLog ), ( string.Format( "Teak" ) ), 50.0, 1044351 );   
   AddSubRes( typeof( OrangewoodLog ), ( string.Format( "Orangewood" ) ), 55.0, 1044351 );
   AddSubRes( typeof( BurlLog ), ( string.Format ( "Burl" ) ), 60.0, 1044351 );
   AddSubRes( typeof( ElmwoodLog ), ( string.Format ( "Elmwood" ) ), 65.0, 1044351 );
   AddSubRes( typeof( ButtonwoodLog ), ( string.Format ( "Buttonwood" ) ), 70.0, 1044351);
            AddSubRes( typeof( YewLog ), ( string.Format( "Yew" ) ), 75.0, 1044351 );
   AddSubRes( typeof( PecanLog ), ( string.Format( "Pecan" ) ), 80.0, 1044351 );
            AddSubRes(typeof( BloodwoodLog ), ( string.Format( "Bloodwood") ), 85.0, 1044351);
            AddSubRes(typeof( FrostwoodLog ), ( string.Format( "Frostwood") ), 90.0, 1044351);
   AddSubRes( typeof( RosewoodLog ), ( string.Format( "Rosewood" ) ), 95.0, 1044351 );
   AddSubRes( typeof( IronwoodLog ), ( string.Format( "Ironwood" ) ), 99.0, 1044351);
   MarkOption = true;
   Repair = Core.AOS;
            CanEnhance = Core.AOS;
  }
 }
}


Here's my oreinfo script.


Code:
using System;
using System.Collections;
namespace Server.Items
{
 public enum CraftResource
 {
  None = 0,
  Iron = 1,
  DullCopper,
  ShadowIron,
  Copper,
  Bronze,
  Gold,
  Agapite,
  Verite,
  Valorite,
  Solarite,
  Crystalite,
  Limonite,
  Cobalt,
  Chromium,
  RegularLeather = 101,
  SpinedLeather,
  HornedLeather,
  BarbedLeather,
  PolarLeather,
  SuedeLeather,
  BlazeLeather,
  MephistusLeather,
  ShadowLeather,
  FrostLeather,
  EtherealLeather,
  RedScales = 201,
  YellowScales,
  BlackScales,
  GreenScales,
  WhiteScales,
  BlueScales,
  CopperScales,
  SilverScales,
  GoldScales,
  Log = 300,
  Peachwood,
        Heartwood,
  Alder,
        Ash,
  Maple,
        Oak,
  Teak,
  Orangewood,
  Burl,
  Elmwood,
  Buttonwood,
        Yew,
  Pecan,
        Bloodwood,
        Frostwood,
  Rosewood,
  Ironwood
 }
 public enum CraftResourceType
 {
  None,
  Metal,
  Leather,
  Scales,
  Wood
 }
 public class CraftAttributeInfo
 {
  private int m_WeaponFireDamage;
  private int m_WeaponColdDamage;
  private int m_WeaponPoisonDamage;
  private int m_WeaponEnergyDamage;
  private int m_WeaponDurability;
  private int m_WeaponLuck;
  private int m_WeaponGoldIncrease;
  private int m_WeaponLowerRequirements;
  private int m_ArmorPhysicalResist;
  private int m_ArmorFireResist;
  private int m_ArmorColdResist;
  private int m_ArmorPoisonResist;
  private int m_ArmorEnergyResist;
  private int m_ArmorDurability;
  private int m_ArmorLuck;
  private int m_ArmorGoldIncrease;
  private int m_ArmorLowerRequirements;
  private int m_RunicMinAttributes;
  private int m_RunicMaxAttributes;
  private int m_RunicMinIntensity;
  private int m_RunicMaxIntensity;
  public int WeaponFireDamage{ get{ return m_WeaponFireDamage; } set{ m_WeaponFireDamage = value; } }
  public int WeaponColdDamage{ get{ return m_WeaponColdDamage; } set{ m_WeaponColdDamage = value; } }
  public int WeaponPoisonDamage{ get{ return m_WeaponPoisonDamage; } set{ m_WeaponPoisonDamage = value; } }
  public int WeaponEnergyDamage{ get{ return m_WeaponEnergyDamage; } set{ m_WeaponEnergyDamage = value; } }
  public int WeaponDurability{ get{ return m_WeaponDurability; } set{ m_WeaponDurability = value; } }
  public int WeaponLuck{ get{ return m_WeaponLuck; } set{ m_WeaponLuck = value; } }
  public int WeaponGoldIncrease{ get{ return m_WeaponGoldIncrease; } set{ m_WeaponGoldIncrease = value; } }
  public int WeaponLowerRequirements{ get{ return m_WeaponLowerRequirements; } set{ m_WeaponLowerRequirements = value; } }
  public int ArmorPhysicalResist{ get{ return m_ArmorPhysicalResist; } set{ m_ArmorPhysicalResist = value; } }
  public int ArmorFireResist{ get{ return m_ArmorFireResist; } set{ m_ArmorFireResist = value; } }
  public int ArmorColdResist{ get{ return m_ArmorColdResist; } set{ m_ArmorColdResist = value; } }
  public int ArmorPoisonResist{ get{ return m_ArmorPoisonResist; } set{ m_ArmorPoisonResist = value; } }
  public int ArmorEnergyResist{ get{ return m_ArmorEnergyResist; } set{ m_ArmorEnergyResist = value; } }
  public int ArmorDurability{ get{ return m_ArmorDurability; } set{ m_ArmorDurability = value; } }
  public int ArmorLuck{ get{ return m_ArmorLuck; } set{ m_ArmorLuck = value; } }
  public int ArmorGoldIncrease{ get{ return m_ArmorGoldIncrease; } set{ m_ArmorGoldIncrease = value; } }
  public int ArmorLowerRequirements{ get{ return m_ArmorLowerRequirements; } set{ m_ArmorLowerRequirements = value; } }
  public int RunicMinAttributes{ get{ return m_RunicMinAttributes; } set{ m_RunicMinAttributes = value; } }
  public int RunicMaxAttributes{ get{ return m_RunicMaxAttributes; } set{ m_RunicMaxAttributes = value; } }
  public int RunicMinIntensity{ get{ return m_RunicMinIntensity; } set{ m_RunicMinIntensity = value; } }
  public int RunicMaxIntensity{ get{ return m_RunicMaxIntensity; } set{ m_RunicMaxIntensity = value; } }
  public CraftAttributeInfo()
  {
  }
  public static readonly CraftAttributeInfo Blank;
  public static readonly CraftAttributeInfo DullCopper, ShadowIron, Copper, Bronze, Golden, Agapite, Verite, Valorite, Solarite, Crystalite, Limonite, Cobalt, Chromium;
  public static readonly CraftAttributeInfo Spined, Horned, Barbed, Polar, Suede, Blaze, Mephistus, Shadow, Frost, Ethereal;
  public static readonly CraftAttributeInfo RedScales, YellowScales, BlackScales, GreenScales, WhiteScales, BlueScales, CopperScales, SilverScales, GoldScales;
  public static readonly CraftAttributeInfo Peachwood, Heartwood, Alder, Ash, Maple, Oak, Teak, Orangewood, Burl, Elmwood, Buttonwood, Yew, Pecan, Bloodwood, Frostwood, Rosewood, Ironwood;
  static CraftAttributeInfo()
  {
   Blank = new CraftAttributeInfo();
   CraftAttributeInfo dullCopper = DullCopper = new CraftAttributeInfo();
   dullCopper.ArmorPhysicalResist = 1;
   dullCopper.ArmorFireResist = 1;
   dullCopper.ArmorColdResist = 1;
   dullCopper.ArmorPoisonResist = 1;
   dullCopper.ArmorEnergyResist = 1;
   dullCopper.ArmorDurability = 100;
   dullCopper.WeaponDurability = 100;
   dullCopper.ArmorLowerRequirements = 20;
   dullCopper.WeaponLowerRequirements = 50;
   dullCopper.RunicMinAttributes = 1;
   dullCopper.RunicMaxAttributes = 2;
   dullCopper.RunicMinIntensity = 10;
   dullCopper.RunicMaxIntensity = 35;
   CraftAttributeInfo shadowIron = ShadowIron = new CraftAttributeInfo();
   shadowIron.ArmorPhysicalResist = 2;
   shadowIron.ArmorFireResist = 1;
   shadowIron.ArmorColdResist = 1;
   shadowIron.ArmorPoisonResist = 1;
   shadowIron.ArmorEnergyResist = 5;
   shadowIron.ArmorDurability = 100;
   shadowIron.WeaponDurability = 100;
   shadowIron.ArmorLowerRequirements = 10;
   shadowIron.WeaponLowerRequirements = 10;
   shadowIron.WeaponColdDamage = 20;
   shadowIron.RunicMinAttributes = 2;
   shadowIron.RunicMaxAttributes = 2;
   shadowIron.RunicMinIntensity = 20;
   shadowIron.RunicMaxIntensity = 45;
   CraftAttributeInfo copper = Copper = new CraftAttributeInfo();
   copper.ArmorPhysicalResist = 2;
   copper.ArmorFireResist = 2;
   copper.ArmorColdResist = 2;
   copper.ArmorPoisonResist = 2;
   copper.ArmorEnergyResist = 2;
   copper.ArmorDurability = 100;
   copper.WeaponDurability = 100;
   copper.ArmorLowerRequirements = 15;
   copper.WeaponLowerRequirements = 15;
   copper.WeaponPoisonDamage = 10;
   copper.WeaponEnergyDamage = 20;
   copper.RunicMinAttributes = 2;
   copper.RunicMaxAttributes = 3;
   copper.RunicMinIntensity = 25;
   copper.RunicMaxIntensity = 50;
   CraftAttributeInfo bronze = Bronze = new CraftAttributeInfo();
   bronze.ArmorPhysicalResist = 2;
   bronze.ArmorFireResist = 3;
   bronze.ArmorColdResist = 2;
   bronze.ArmorPoisonResist = 2;
   bronze.ArmorEnergyResist = 2;
   bronze.ArmorDurability = 100;
   bronze.WeaponDurability = 100;
   bronze.ArmorLowerRequirements = 20;
   bronze.WeaponLowerRequirements = 20;
   bronze.WeaponFireDamage = 40;
   bronze.RunicMinAttributes = 3;
   bronze.RunicMaxAttributes = 3;
   bronze.RunicMinIntensity = 30;
   bronze.RunicMaxIntensity = 65;
   CraftAttributeInfo golden = Golden = new CraftAttributeInfo();
   golden.ArmorPhysicalResist = 3;
   golden.ArmorFireResist = 3;
   golden.ArmorColdResist = 3;
   golden.ArmorPoisonResist = 3;
   golden.ArmorEnergyResist = 3;
   golden.ArmorDurability = 100;
   golden.WeaponDurability = 100;
   golden.ArmorLowerRequirements = 25;
   golden.WeaponLowerRequirements = 25;
   golden.ArmorLuck = 40;
   golden.WeaponLuck = 40;
   golden.RunicMinAttributes = 2;
   golden.RunicMaxAttributes = 3;
   golden.RunicMinIntensity = 50;
   golden.RunicMaxIntensity = 75;
   CraftAttributeInfo agapite = Agapite = new CraftAttributeInfo();
   agapite.ArmorPhysicalResist = 3;
   agapite.ArmorFireResist = 3;
   agapite.ArmorColdResist = 4;
   agapite.ArmorPoisonResist = 3;
   agapite.ArmorEnergyResist = 3;
   agapite.ArmorDurability = 100;
   agapite.WeaponDurability = 100;
   agapite.ArmorLowerRequirements = 30;
   agapite.WeaponLowerRequirements = 30;
   agapite.WeaponColdDamage = 30;
   agapite.WeaponEnergyDamage = 20;
   agapite.RunicMinAttributes = 3;
   agapite.RunicMaxAttributes = 5;
   agapite.RunicMinIntensity = 55;
   agapite.RunicMaxIntensity = 80;
   CraftAttributeInfo verite = Verite = new CraftAttributeInfo();
   verite.ArmorPhysicalResist = 4;
   verite.ArmorFireResist = 4;
   verite.ArmorColdResist = 4;
   verite.ArmorPoisonResist = 4;
   verite.ArmorEnergyResist = 4;
   verite.ArmorDurability = 100;
   verite.WeaponDurability = 100;
   verite.ArmorLowerRequirements = 40;
   verite.WeaponLowerRequirements = 40;
   verite.WeaponPoisonDamage = 40;
   verite.WeaponEnergyDamage = 20;
   verite.RunicMinAttributes = 2;
   verite.RunicMaxAttributes = 5;
   verite.RunicMinIntensity = 60;
   verite.RunicMaxIntensity = 85;
   CraftAttributeInfo valorite = Valorite = new CraftAttributeInfo();
   valorite.ArmorPhysicalResist = 4;
   valorite.ArmorFireResist = 4;
   valorite.ArmorColdResist = 4;
   valorite.ArmorPoisonResist = 5;
   valorite.ArmorEnergyResist = 4;
   valorite.ArmorDurability = 100;
   valorite.WeaponDurability = 100;
   valorite.ArmorLowerRequirements = 50;
   valorite.WeaponLowerRequirements = 50;
   valorite.WeaponFireDamage = 10;
   valorite.WeaponColdDamage = 20;
   valorite.WeaponPoisonDamage = 10;
   valorite.WeaponEnergyDamage = 20;
   valorite.RunicMinAttributes = 3;
   valorite.RunicMaxAttributes = 4;
   valorite.RunicMinIntensity = 65;
   valorite.RunicMaxIntensity = 90;
   CraftAttributeInfo solarite = Solarite = new CraftAttributeInfo();
   solarite.ArmorPhysicalResist = 5;
   solarite.ArmorFireResist = 5;
   solarite.ArmorColdResist = 5;
   solarite.ArmorPoisonResist = 5;
   solarite.ArmorEnergyResist = 5;
   solarite.ArmorDurability = 125;
   solarite.WeaponDurability = 125;
   solarite.ArmorLowerRequirements = 60;
   solarite.WeaponLowerRequirements = 60;
   solarite.WeaponFireDamage = 100;
   solarite.RunicMinAttributes = 4;
   solarite.RunicMaxAttributes = 6;
   solarite.RunicMinIntensity = 70;
   solarite.RunicMaxIntensity = 95;
   CraftAttributeInfo crystalite = Crystalite = new CraftAttributeInfo();
   crystalite.ArmorPhysicalResist = 5;
   crystalite.ArmorFireResist = 5;
   crystalite.ArmorColdResist = 5;
   crystalite.ArmorPoisonResist = 5;
   crystalite.ArmorEnergyResist = 6;
   crystalite.ArmorDurability = 130;
   crystalite.WeaponDurability = 130;
   crystalite.ArmorLowerRequirements = 70;
   crystalite.WeaponLowerRequirements = 70;
   crystalite.WeaponColdDamage = 100;
   crystalite.RunicMinAttributes = 5;
   crystalite.RunicMaxAttributes = 7;
   crystalite.RunicMinIntensity = 75;
   crystalite.RunicMaxIntensity = 100;
  
   CraftAttributeInfo limonite = Limonite = new CraftAttributeInfo();
   limonite.ArmorPhysicalResist = 6;
   limonite.ArmorFireResist = 6;
   limonite.ArmorColdResist = 6;
   limonite.ArmorPoisonResist = 6;
   limonite.ArmorEnergyResist = 6;
   limonite.ArmorDurability = 175;
   limonite.WeaponDurability = 175;
   limonite.ArmorLowerRequirements = 80;
   limonite.WeaponLowerRequirements = 80;
   limonite.WeaponPoisonDamage = 100;
   limonite.RunicMinAttributes = 6;
   limonite.RunicMaxAttributes = 8;
   limonite.RunicMinIntensity = 80;
   limonite.RunicMaxIntensity = 105;
   CraftAttributeInfo cobalt = Cobalt = new CraftAttributeInfo();
   cobalt.ArmorPhysicalResist = 7;
   cobalt.ArmorFireResist = 7;
   cobalt.ArmorColdResist = 7;
   cobalt.ArmorPoisonResist = 7;
   cobalt.ArmorEnergyResist = 7;
   cobalt.ArmorDurability = 180;
   cobalt.WeaponDurability = 180;
   cobalt.ArmorLowerRequirements = 90;
   cobalt.WeaponLowerRequirements = 90;
   cobalt.WeaponEnergyDamage = 100;
   cobalt.RunicMinAttributes = 7;
   cobalt.RunicMaxAttributes = 9;
   cobalt.RunicMinIntensity = 85;
   cobalt.RunicMaxIntensity = 110;
   CraftAttributeInfo chromium = Chromium = new CraftAttributeInfo();
   chromium.ArmorPhysicalResist = 8;
   chromium.ArmorFireResist = 8;
   chromium.ArmorColdResist = 8;
   chromium.ArmorPoisonResist = 8;
   chromium.ArmorEnergyResist = 8;
   chromium.ArmorDurability = 190;
   chromium.WeaponDurability = 190;
   chromium.ArmorLowerRequirements = 100;
   chromium.WeaponLowerRequirements = 100;
   chromium.RunicMinAttributes = 7;
   chromium.RunicMaxAttributes = 9;
   chromium.RunicMinIntensity = 90;
   chromium.RunicMaxIntensity = 115;
   CraftAttributeInfo spined = Spined = new CraftAttributeInfo();
   spined.ArmorPhysicalResist = 1;
   spined.ArmorFireResist = 1;
   spined.ArmorColdResist = 1;
   spined.ArmorPoisonResist = 1;
   spined.ArmorEnergyResist = 1;
   spined.ArmorDurability = 25;
   spined.ArmorLowerRequirements = 20;
   spined.ArmorLuck = 40;
   spined.RunicMinAttributes = 1;
   spined.RunicMaxAttributes = 2;
   spined.RunicMinIntensity = 10;
   spined.RunicMaxIntensity = 35;
   CraftAttributeInfo horned = Horned = new CraftAttributeInfo();
   horned.ArmorPhysicalResist = 2;
   horned.ArmorFireResist = 2;
   horned.ArmorColdResist = 2;
   horned.ArmorPoisonResist = 2;
   horned.ArmorEnergyResist = 2;
   horned.ArmorDurability = 50;
   horned.ArmorLowerRequirements = 30;
   horned.RunicMinAttributes = 2;
   horned.RunicMaxAttributes = 3;
   horned.RunicMinIntensity = 15;
   horned.RunicMaxIntensity = 40;
   CraftAttributeInfo barbed = Barbed = new CraftAttributeInfo();
   barbed.ArmorPhysicalResist = 3;
   barbed.ArmorFireResist = 3;
   barbed.ArmorColdResist = 3;
   barbed.ArmorPoisonResist = 3;
   barbed.ArmorEnergyResist = 3;
   barbed.ArmorDurability = 75;
   barbed.ArmorLowerRequirements = 40;
   barbed.RunicMinAttributes = 2;
   barbed.RunicMaxAttributes = 4;
   barbed.RunicMinIntensity = 20;
   barbed.RunicMaxIntensity = 45;
   CraftAttributeInfo polar = Polar = new CraftAttributeInfo();
   polar.ArmorPhysicalResist = 4;
   polar.ArmorFireResist = 4;
   polar.ArmorColdResist = 4;
   polar.ArmorPoisonResist = 4;
   polar.ArmorEnergyResist = 4;
   polar.ArmorDurability = 100;
   polar.ArmorLowerRequirements = 50;
   polar.RunicMinAttributes = 3;
   polar.RunicMaxAttributes = 5;
   polar.RunicMinIntensity = 25;
   polar.RunicMaxIntensity = 50;
   CraftAttributeInfo suede = Suede = new CraftAttributeInfo();
   suede.ArmorPhysicalResist = 5;
   suede.ArmorFireResist = 5;
   suede.ArmorColdResist = 5;
   suede.ArmorPoisonResist = 5;
   suede.ArmorEnergyResist = 5;
   suede.ArmorLowerRequirements = 60;
   suede.ArmorDurability = 125;
   suede.RunicMinAttributes = 4;
   suede.RunicMaxAttributes = 6;
   suede.RunicMinIntensity = 30;
   suede.RunicMaxIntensity = 55;
   
   CraftAttributeInfo blaze = Blaze = new CraftAttributeInfo();
   blaze.ArmorPhysicalResist = 6;
   blaze.ArmorFireResist = 6;
   blaze.ArmorColdResist = 6;
   blaze.ArmorPoisonResist = 6;
   blaze.ArmorEnergyResist = 6;
   blaze.ArmorLowerRequirements = 60;
   blaze.ArmorDurability = 125;
   blaze.RunicMinAttributes = 5;
   blaze.RunicMaxAttributes = 7;
   blaze.RunicMinIntensity = 35;
   blaze.RunicMaxIntensity = 60;
   CraftAttributeInfo mephistus = Mephistus = new CraftAttributeInfo();
   mephistus.ArmorPhysicalResist = 6;
   mephistus.ArmorFireResist = 6;
   mephistus.ArmorColdResist = 6;
   mephistus.ArmorPoisonResist = 6;
   mephistus.ArmorEnergyResist = 6;
   mephistus.ArmorDurability = 150;
   mephistus.ArmorLowerRequirements = 70;
   mephistus.RunicMinAttributes = 6;
   mephistus.RunicMaxAttributes = 8;
   mephistus.RunicMinIntensity = 40;
   mephistus.RunicMaxIntensity = 65;
   
   CraftAttributeInfo shadow = Shadow = new CraftAttributeInfo();
   shadow.ArmorPhysicalResist = 7;
   shadow.ArmorFireResist = 7;
   shadow.ArmorColdResist = 7;
   shadow.ArmorPoisonResist = 7;
   shadow.ArmorEnergyResist = 7;
   shadow.ArmorDurability = 175;
   shadow.ArmorLowerRequirements = 80;
   shadow.RunicMinAttributes = 7;
   shadow.RunicMaxAttributes = 9;
   shadow.RunicMinIntensity = 45;
   shadow.RunicMaxIntensity = 70;
   
   CraftAttributeInfo frost = Frost = new CraftAttributeInfo();
   frost.ArmorPhysicalResist = 7;
   frost.ArmorFireResist = 7;
   frost.ArmorColdResist = 7;
   frost.ArmorPoisonResist = 7;
   frost.ArmorEnergyResist = 7;
   frost.ArmorDurability = 200;
   frost.ArmorLowerRequirements = 90;
   frost.RunicMinAttributes = 8;
   frost.RunicMaxAttributes = 9;
   frost.RunicMinIntensity = 55;
   frost.RunicMaxIntensity = 80;
   
   CraftAttributeInfo ethereal = Ethereal = new CraftAttributeInfo();
   ethereal.ArmorPhysicalResist = 8;
   ethereal.ArmorFireResist = 8;
   ethereal.ArmorColdResist = 8;
   ethereal.ArmorPoisonResist = 8;
   ethereal.ArmorEnergyResist = 8;
   ethereal.ArmorDurability = 250;
   ethereal.ArmorLowerRequirements = 100;
   ethereal.RunicMinAttributes = 9;
   ethereal.RunicMaxAttributes = 9;
   ethereal.RunicMinIntensity = 60;
   ethereal.RunicMaxIntensity = 90;
   
   CraftAttributeInfo red = RedScales = new CraftAttributeInfo();
   red.ArmorFireResist = 10;
   red.ArmorColdResist = 3;
   CraftAttributeInfo yellow = YellowScales = new CraftAttributeInfo();
   yellow.ArmorPhysicalResist = 3;
   yellow.ArmorLuck = 20;
   CraftAttributeInfo black = BlackScales = new CraftAttributeInfo();
   black.ArmorPhysicalResist = 10;
   black.ArmorEnergyResist = 3;
   CraftAttributeInfo green = GreenScales = new CraftAttributeInfo();
   green.ArmorFireResist = 3;
   green.ArmorPoisonResist = 10;
   CraftAttributeInfo white = WhiteScales = new CraftAttributeInfo();
   white.ArmorPhysicalResist = 3;
   white.ArmorColdResist = 10;
   CraftAttributeInfo blue = BlueScales = new CraftAttributeInfo();
   blue.ArmorPoisonResist = 3;
   blue.ArmorEnergyResist = 10;
   CraftAttributeInfo copperScales = CopperScales = new CraftAttributeInfo();
   copper.ArmorPoisonResist = 6;
   copper.ArmorPhysicalResist = 6;
   copper.ArmorEnergyResist = 6;
   CraftAttributeInfo silver = SilverScales = new CraftAttributeInfo();
   silver.ArmorColdResist = 7;
   silver.ArmorEnergyResist = 7;
   silver.ArmorPhysicalResist = 7;
   CraftAttributeInfo gold = GoldScales = new CraftAttributeInfo();
   gold.ArmorPoisonResist = 8;
   gold.ArmorColdResist = 8;
   gold.ArmorPhysicalResist = 8;
   gold.ArmorEnergyResist = 8;
   gold.ArmorFireResist = 8;
   
   CraftAttributeInfo peachwood = Peachwood = new CraftAttributeInfo();
   peachwood.WeaponColdDamage = 20;
   peachwood.WeaponDurability = 10;
   peachwood.WeaponLowerRequirements = 5;
   peachwood.RunicMinAttributes = 1;
   peachwood.RunicMaxAttributes = 2;
   peachwood.RunicMinIntensity = 25;
   peachwood.RunicMaxIntensity = 50;
            CraftAttributeInfo heartwood = Heartwood = new CraftAttributeInfo();
   heartwood.WeaponColdDamage = 30;
   heartwood.WeaponDurability = 15;
   heartwood.WeaponLowerRequirements = 5;
   heartwood.RunicMinAttributes = 1;
   heartwood.RunicMaxAttributes = 2;
   heartwood.RunicMinIntensity = 25;
   heartwood.RunicMaxIntensity = 50;
   
   CraftAttributeInfo alder = Alder = new CraftAttributeInfo();
   alder.WeaponFireDamage = 40;
   alder.WeaponDurability = 25;
   alder.WeaponLowerRequirements = 10;
   alder.RunicMinAttributes = 2;
   alder.RunicMaxAttributes = 3;
   alder.RunicMinIntensity = 30;
   alder.RunicMaxIntensity = 55;
            CraftAttributeInfo ash = Ash = new CraftAttributeInfo();
   ash.WeaponColdDamage = 30;
   ash.WeaponEnergyDamage = 20;
   ash.WeaponDurability = 75;
   ash.WeaponLowerRequirements = 30;
   ash.RunicMinAttributes = 3;
   ash.RunicMaxAttributes = 4;
   ash.RunicMinIntensity = 40;
   ash.RunicMaxIntensity = 65;
   
   CraftAttributeInfo maple = Maple = new CraftAttributeInfo();
   maple.WeaponPoisonDamage = 40;
   maple.WeaponEnergyDamage = 20;
   maple.WeaponDurability = 50;
   maple.WeaponLowerRequirements = 20;
   maple.RunicMinAttributes = 3;
   maple.RunicMaxAttributes = 4;
   maple.RunicMinIntensity = 35;
   maple.RunicMaxIntensity = 60;
            CraftAttributeInfo oak = Oak = new CraftAttributeInfo();
   oak.WeaponColdDamage = 30;
   oak.WeaponEnergyDamage = 20;
   oak.WeaponDurability = 75;
   oak.WeaponLowerRequirements = 30;
   oak.RunicMinAttributes = 3;
   oak.RunicMaxAttributes = 4;
   oak.RunicMinIntensity = 40;
   oak.RunicMaxIntensity = 65;
   CraftAttributeInfo teak = Teak = new CraftAttributeInfo();
   teak.WeaponColdDamage = 30;
   teak.WeaponEnergyDamage = 20;
   teak.WeaponDurability = 75;
   teak.WeaponLowerRequirements = 30;
   teak.RunicMinAttributes = 3;
   teak.RunicMaxAttributes = 4;
   teak.RunicMinIntensity = 40;
   teak.RunicMaxIntensity = 65;
   CraftAttributeInfo orangewood = Orangewood = new CraftAttributeInfo();
   orangewood.WeaponPoisonDamage = 40;
   orangewood.WeaponEnergyDamage = 20;
   orangewood.WeaponDurability = 100;
   orangewood.WeaponLowerRequirements = 40;
   orangewood.RunicMinAttributes = 4;
   orangewood.RunicMaxAttributes = 5;
   orangewood.RunicMinIntensity = 45;
   orangewood.RunicMaxIntensity = 70;
   CraftAttributeInfo burl = Burl = new CraftAttributeInfo();
   burl.WeaponDurability = 125;
   burl.WeaponLowerRequirements = 50;
   burl.WeaponFireDamage = 25;
   burl.WeaponColdDamage = 25;
   burl.WeaponPoisonDamage = 25;
   burl.WeaponEnergyDamage = 25;
   burl.RunicMinAttributes = 5;
   burl.RunicMaxAttributes = 6;
   burl.RunicMinIntensity = 50;
   burl.RunicMaxIntensity = 100;
   CraftAttributeInfo elmwood = Elmwood = new CraftAttributeInfo();
   elmwood.WeaponDurability = 150;
   elmwood.WeaponLowerRequirements = 60;
   elmwood.WeaponColdDamage = 100;
   elmwood.RunicMinAttributes = 6;
   elmwood.RunicMaxAttributes = 7;
   elmwood.RunicMinIntensity = 55;
   elmwood.RunicMaxIntensity = 80;
   
   CraftAttributeInfo buttonwood = Buttonwood = new CraftAttributeInfo();
   buttonwood.WeaponDurability = 175;
   buttonwood.WeaponLowerRequirements = 70;
   buttonwood.WeaponEnergyDamage = 100;
   buttonwood.RunicMinAttributes = 7;
   buttonwood.RunicMaxAttributes = 8;
   buttonwood.RunicMinIntensity = 60;
   buttonwood.RunicMaxIntensity = 85;
            CraftAttributeInfo yew = Yew = new CraftAttributeInfo();
   yew.WeaponDurability = 185;
   yew.WeaponLowerRequirements = 80;
   yew.WeaponFireDamage = 100;
   yew.RunicMinAttributes = 7;
   yew.RunicMaxAttributes = 8;
   yew.RunicMinIntensity = 65;
   yew.RunicMaxIntensity = 90;
   CraftAttributeInfo pecan = Pecan = new CraftAttributeInfo();
   pecan.WeaponDurability = 200;
   pecan.WeaponLowerRequirements = 80;
   pecan.WeaponFireDamage = 100;
   pecan.RunicMinAttributes = 8;
   pecan.RunicMaxAttributes = 9;
   pecan.RunicMinIntensity = 65;
   pecan.RunicMaxIntensity = 90;
            CraftAttributeInfo bloodwood = Bloodwood = new CraftAttributeInfo();
   bloodwood.WeaponColdDamage = 100;
   bloodwood.WeaponDurability = 220;
   bloodwood.WeaponLowerRequirements = 85;
   bloodwood.RunicMinAttributes = 8;
   bloodwood.RunicMaxAttributes = 9;
   bloodwood.RunicMinIntensity = 65;
   bloodwood.RunicMaxIntensity = 85;
            CraftAttributeInfo frostwood = Frostwood = new CraftAttributeInfo();
   frostwood.WeaponColdDamage = 100;
   frostwood.WeaponDurability = 220;
   frostwood.WeaponLowerRequirements = 85;
   frostwood.RunicMinAttributes = 8;
   frostwood.RunicMaxAttributes = 9;
   frostwood.RunicMinIntensity = 65;
   frostwood.RunicMaxIntensity = 85;
   CraftAttributeInfo rosewood = Rosewood = new CraftAttributeInfo();
   rosewood.WeaponDurability = 225;
   rosewood.WeaponLowerRequirements = 90;
   rosewood.WeaponPoisonDamage = 100;
   rosewood.RunicMinAttributes = 8;
   rosewood.RunicMaxAttributes = 9;
   rosewood.RunicMinIntensity = 70;
   rosewood.RunicMaxIntensity = 95;
   CraftAttributeInfo ironwood = Ironwood = new CraftAttributeInfo();
   ironwood.WeaponDurability = 250;
   ironwood.WeaponLowerRequirements = 100;
   ironwood.RunicMinAttributes = 9;
   ironwood.RunicMaxAttributes = 9;
   ironwood.RunicMinIntensity = 75;
   ironwood.RunicMaxIntensity = 100;
  }
 }
 public class CraftResourceInfo
 {
  private int m_Hue;
  private int m_Number;
  private string m_Name;
  private CraftAttributeInfo m_AttributeInfo;
  private CraftResource m_Resource;
  private Type[] m_ResourceTypes;
  public int Hue{ get{ return m_Hue; } }
  public int Number{ get{ return m_Number; } }
  public string Name{ get{ return m_Name; } }
  public CraftAttributeInfo AttributeInfo{ get{ return m_AttributeInfo; } }
  public CraftResource Resource{ get{ return m_Resource; } }
  public Type[] ResourceTypes{ get{ return m_ResourceTypes; } }
  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 );
  }
 }
 public class CraftResources
 {
  private static CraftResourceInfo[] m_MetalInfo = new CraftResourceInfo[]
   {
    new CraftResourceInfo( 0x000, 1053109, "Iron",   CraftAttributeInfo.Blank,  CraftResource.Iron,    typeof( IronIngot ),  typeof( IronOre ),   typeof( Granite ) ),
/*1876*/ new CraftResourceInfo( 0x754, 1053108, "Dull Copper", CraftAttributeInfo.DullCopper, CraftResource.DullCopper,  typeof( DullCopperIngot ), typeof( DullCopperOre ), typeof( DullCopperGranite ) ),
/*1175*/ new CraftResourceInfo( 0x497, 1053107, "Shadow Iron", CraftAttributeInfo.ShadowIron, CraftResource.ShadowIron,  typeof( ShadowIronIngot ), typeof( ShadowIronOre ), typeof( ShadowIronGranite ) ),
/*1858*/ new CraftResourceInfo( 0x742, 1053106, "Copper",  CraftAttributeInfo.Copper,  CraftResource.Copper,   typeof( CopperIngot ),  typeof( CopperOre ),  typeof( CopperGranite ) ),
/*2012*/ new CraftResourceInfo( 0x7DC, 1053105, "Bronze",  CraftAttributeInfo.Bronze,      CraftResource.Bronze,   typeof( BronzeIngot ),  typeof( BronzeOre ),  typeof( BronzeGranite ) ),
/*1281*/ new CraftResourceInfo( 0x501, 1053104, "Gold",   CraftAttributeInfo.Golden,  CraftResource.Gold,    typeof( GoldIngot ),      typeof( GoldOre ),   typeof( GoldGranite ) ),
/*1206*/ new CraftResourceInfo( 0x4B6, 1053103, "Agapite",  CraftAttributeInfo.Agapite,  CraftResource.Agapite,   typeof( AgapiteIngot ),  typeof( AgapiteOre ),  typeof( AgapiteGranite ) ),
/*2128*/ new CraftResourceInfo( 0x850, 1053102, "Verite",  CraftAttributeInfo.Verite,      CraftResource.Verite,   typeof( VeriteIngot ),  typeof( VeriteOre ),    typeof( VeriteGranite ) ),
/*1265*/ new CraftResourceInfo( 0x4F1, 1053101, "Valorite",  CraftAttributeInfo.Valorite,     CraftResource.Valorite,  typeof( ValoriteIngot ),     typeof( ValoriteOre ),   typeof( ValoriteGranite ) ),
/*1161*/ new CraftResourceInfo( 0x489,    0,      "Solarite",  CraftAttributeInfo.Solarite,  CraftResource.Solarite,   typeof( SolariteIngot ),  typeof( SolariteOre ),   typeof( SolariteGranite ) ),
/*1152*/ new CraftResourceInfo( 0x480,    0,      "Crystalite", CraftAttributeInfo.Crystalite,  CraftResource.Crystalite,  typeof( CrystaliteIngot ), typeof( CrystaliteOre ),   typeof( CrystaliteGranite ) ),
/*1272*/ new CraftResourceInfo( 0x4F8,    0,      "Limonite", CraftAttributeInfo.Limonite,  CraftResource.Limonite,  typeof( LimoniteIngot ),  typeof( LimoniteOre ),   typeof( LimoniteGranite ) ),
/*1366*/ new CraftResourceInfo( 0x556,    0,      "Cobalt",  CraftAttributeInfo.Cobalt,         CraftResource.Cobalt,   typeof( CobaltIngot ),     typeof( CobaltOre ),    typeof( CobaltGranite ) ),
/*1150*/ new CraftResourceInfo( 0x47E,    0,      "Chromium", CraftAttributeInfo.Chromium, CraftResource.Chromium,  typeof( ChromiumIngot ), typeof( ChromiumOre ), typeof( ChromiumGranite ) ),
   };
  private static CraftResourceInfo[] m_ScaleInfo = new CraftResourceInfo[]
   {
/*2117*/  new CraftResourceInfo( 0x845, 1053129, "Red Scales",  CraftAttributeInfo.RedScales,  CraftResource.RedScales,  typeof( RedScales ) ),
/*1360*/ new CraftResourceInfo( 0x550,    1053130, "Yellow Scales", CraftAttributeInfo.YellowScales, CraftResource.YellowScales, typeof( YellowScales ) ),
/*1175*/ new CraftResourceInfo( 0x497, 1053131, "Black Scales",  CraftAttributeInfo.BlackScales,  CraftResource.BlackScales,  typeof( BlackScales ) ),
/*1267*/ new CraftResourceInfo( 0x4F3, 1053132, "Green Scales",  CraftAttributeInfo.GreenScales, CraftResource.GreenScales,  typeof( GreenScales ) ),
/*1150*/ new CraftResourceInfo( 0x47E,  1053133, "White Scales",  CraftAttributeInfo.WhiteScales,  CraftResource.WhiteScales,  typeof( WhiteScales ) ),
/*2124*/ new CraftResourceInfo( 0x84C, 1053134, "Blue Scales",  CraftAttributeInfo.BlueScales,  CraftResource.BlueScales,  typeof( BlueScales ) ),
/*1858*/ new CraftResourceInfo( 0x742, 0,          "Copper Scales", CraftAttributeInfo.CopperScales, CraftResource.CopperScales, typeof( CopperScales ) ),
/*1072*/ new CraftResourceInfo( 0x430, 0,          "Silver Scales",     CraftAttributeInfo.SilverScales,     CraftResource.SilverScales,  typeof( SilverScales ) ),
/*1281*/ new CraftResourceInfo( 0x501,   0,          "Gold Scales",  CraftAttributeInfo.GoldScales,  CraftResource.GoldScales,  typeof( GoldScales ) ),
   };
  private static CraftResourceInfo[] m_LeatherInfo = new CraftResourceInfo[]
   {
    new CraftResourceInfo( 0x000, 1049353,  "Normal",  CraftAttributeInfo.Blank,       CraftResource.RegularLeather,     typeof( Leather ),       typeof( Hides ) ),
/*1282*/ new CraftResourceInfo( 0x502, 1049354,  "Spined",  CraftAttributeInfo.Spined,       CraftResource.SpinedLeather,     typeof( SpinedLeather ), typeof( SpinedHides ) ),
/*2117*/ new CraftResourceInfo( 0x845, 1049355,  "Horned",  CraftAttributeInfo.Horned,   CraftResource.HornedLeather,     typeof( HornedLeather ), typeof( HornedHides ) ),
/*1267*/ new CraftResourceInfo( 0x4F3, 1049356,  "Barbed",  CraftAttributeInfo.Barbed,   CraftResource.BarbedLeather,     typeof( BarbedLeather ), typeof( BarbedHides ) ),
/*1150*/ new CraftResourceInfo( 0x47E, 0,           "Polar",      CraftAttributeInfo.Polar,       CraftResource.PolarLeather,      typeof( PolarLeather ),  typeof( PolarHides ) ),
/*1553*/ new CraftResourceInfo( 0x611, 0,          "Suede",     CraftAttributeInfo.Suede,          CraftResource.SuedeLeather,     typeof( SuedeLeather ), typeof( SuedeHides ) ),
/*1161*/ new CraftResourceInfo( 0x489, 0,          "Blaze",      CraftAttributeInfo.Blaze,       CraftResource.BlazeLeather,      typeof( BlazeLeather ),  typeof( BlazeHides ) ),
/*37*/  new CraftResourceInfo( 0x25,  0,          "Mephistus", CraftAttributeInfo.Mephistus,  CraftResource.MephistusLeather, typeof( MephistusLeather ), typeof( MephistusHides ) ),
/*1175*/ new CraftResourceInfo( 0x497, 0,          "Shadow",  CraftAttributeInfo.Shadow,   CraftResource.ShadowLeather, typeof( ShadowLeather ), typeof( ShadowHides ) ),
/*2101*/ new CraftResourceInfo( 0x835, 0,          "Frost",      CraftAttributeInfo.Frost,       CraftResource.FrostLeather,      typeof( FrostLeather ),  typeof( FrostHides ) ),
/*1283*/ new CraftResourceInfo( 0x503, 0,          "Ethereal",  CraftAttributeInfo.Ethereal,      CraftResource.EtherealLeather,     typeof( EtherealLeather ), typeof( EtherealHides ) ),
  };
  private static CraftResourceInfo[] m_AOSLeatherInfo = new CraftResourceInfo[]
   {
    new CraftResourceInfo( 0x000, 1049353,  "Normal",  CraftAttributeInfo.Blank,       CraftResource.RegularLeather,     typeof( Leather ),       typeof( Hides ) ),
/*1282*/ new CraftResourceInfo( 0x502, 1049354,  "Spined",  CraftAttributeInfo.Spined,       CraftResource.SpinedLeather,     typeof( SpinedLeather ), typeof( SpinedHides ) ),
/*2117*/ new CraftResourceInfo( 0x845, 1049355,  "Horned",  CraftAttributeInfo.Horned,   CraftResource.HornedLeather,     typeof( HornedLeather ), typeof( HornedHides ) ),
/*1267*/ new CraftResourceInfo( 0x4F3, 1049356,  "Barbed",  CraftAttributeInfo.Barbed,   CraftResource.BarbedLeather,     typeof( BarbedLeather ), typeof( BarbedHides ) ),
/*1150*/ new CraftResourceInfo( 0x47E, 0,           "Polar",      CraftAttributeInfo.Polar,       CraftResource.PolarLeather,      typeof( PolarLeather ),  typeof( PolarHides ) ),
/*1553*/ new CraftResourceInfo( 0x611, 0,          "Suede",     CraftAttributeInfo.Suede,          CraftResource.SuedeLeather,     typeof( SuedeLeather ), typeof( SuedeHides ) ),
/*1161*/ new CraftResourceInfo( 0x489, 0,          "Blaze",      CraftAttributeInfo.Blaze,       CraftResource.BlazeLeather,      typeof( BlazeLeather ),  typeof( BlazeHides ) ),
/*37*/  new CraftResourceInfo( 0x25,  0,          "Mephistus", CraftAttributeInfo.Mephistus,  CraftResource.MephistusLeather, typeof( MephistusLeather ), typeof( MephistusHides ) ),
/*1175*/ new CraftResourceInfo( 0x497, 0,          "Shadow",  CraftAttributeInfo.Shadow,   CraftResource.ShadowLeather, typeof( ShadowLeather ), typeof( ShadowHides ) ),
/*2101*/ new CraftResourceInfo( 0x835, 0,          "Frost",      CraftAttributeInfo.Frost,       CraftResource.FrostLeather,      typeof( FrostLeather ),  typeof( FrostHides ) ),
/*1283*/ new CraftResourceInfo( 0x503, 0,          "Ethereal",  CraftAttributeInfo.Ethereal,      CraftResource.EtherealLeather,     typeof( EtherealLeather ), typeof( EtherealHides ) ),
  };
  private static CraftResourceInfo[] m_WoodInfo = new CraftResourceInfo[]
   {
                new CraftResourceInfo( 0, 0,         "Log",       CraftAttributeInfo.Blank,          CraftResource.Log,        typeof( Board ), typeof( Log ) ),
/*2206*/ new CraftResourceInfo( 0x89E, 0, "Peachwood", CraftAttributeInfo.Peachwood,  CraftResource.Peachwood,  typeof( PeachwoodBoard ), typeof( PeachwoodLog ) ),
/*1267*/ new CraftResourceInfo( 0x4F3, 0, "Heartwood", CraftAttributeInfo.Heartwood,  CraftResource.Heartwood,  typeof( HeartwoodBoard ), typeof( HeartwoodLog ) ),
/*2121*/ new CraftResourceInfo( 0x849,  0, "Alder",   CraftAttributeInfo.Alder,       CraftResource.Alder,    typeof( AlderBoard ), typeof( AlderLog ) ),
/*2302*/ new CraftResourceInfo( 0x8FE, 0, "Ash",             CraftAttributeInfo.Ash,              CraftResource.Ash,              typeof( AshBoard ), typeof( AshLog ) ),
/*1606*/ new CraftResourceInfo( 0x646,  0, "Maple",      CraftAttributeInfo.Maple,             CraftResource.Maple,       typeof( MapleBoard ), typeof( MapleLog ) ),
/*1544*/ new CraftResourceInfo( 0x608, 0, "Oak",             CraftAttributeInfo.Oak,              CraftResource.Oak,              typeof( OakBoard ), typeof( OakLog ) ),
/*2006*/ new CraftResourceInfo( 0x7D6, 0,   "Teak",       CraftAttributeInfo.Teak,       CraftResource.Teak,        typeof( TeakBoard ), typeof( TeakLog ) ),
/*1258*/ new CraftResourceInfo( 0x4EA,  0,  "Orangewood", CraftAttributeInfo.Orangewood, CraftResource.Orangewood, typeof( OrangewoodBoard ), typeof( OrangewoodLog ) ),
/*1554*/ new CraftResourceInfo( 0x612, 0,    "Burl",          CraftAttributeInfo.Burl,              CraftResource.Burl,           typeof( BurlBoard ), typeof( BurlLog ) ),
/*1863*/ new CraftResourceInfo( 0x747,   0,  "Elmwood",  CraftAttributeInfo.Elmwood,      CraftResource.Elmwood,   typeof( ElmwoodBoard ), typeof( ElmwoodLog ) ),
/*1282*/ new CraftResourceInfo( 0x502, 0, "Buttonwood",  CraftAttributeInfo.Buttonwood, CraftResource.Buttonwood,  typeof( ButtonwoodBoard ), typeof( ButtonwoodLog ) ),
/*2318*/ new CraftResourceInfo( 0x90E, 0, "Yew",             CraftAttributeInfo.Yew,          CraftResource.Yew,              typeof( YewBoard ), typeof( YewLog ) ),
/*2101*/ new CraftResourceInfo( 0x835,  0,   "Pecan",         CraftAttributeInfo.Pecan,             CraftResource.Pecan,          typeof( PecanBoard ), typeof( PecanLog ) ),
/*37*/     new CraftResourceInfo( 0x25, 0,     "Bloodwood", CraftAttributeInfo.Bloodwood,  CraftResource.Bloodwood,  typeof( BloodwoodBoard ), typeof( BloodwoodLog ) ),
/*1151*/ new CraftResourceInfo( 0x47F, 0, "Frostwood", CraftAttributeInfo.Frostwood,  CraftResource.Frostwood,  typeof( FrostwoodBoard ), typeof( FrostwoodLog ) ),
/*1172*/ new CraftResourceInfo( 0x494,   0, "Rosewood",    CraftAttributeInfo.Rosewood,  CraftResource.Rosewood,  typeof( RosewoodBoard ), typeof( RosewoodLog) ),
/*1109*/ new CraftResourceInfo( 0x455, 0,    "Ironwood",     CraftAttributeInfo.Ironwood,     CraftResource.Ironwood,      typeof( IronwoodBoard ), typeof( IronwoodLog ) ),
  };
  /// <summary>
  /// Returns true if '<paramref name="resource"/>' is None, Iron, or RegularLeather. False if otherwise.
  /// </summary>
  public static bool IsStandard( CraftResource resource )
  {
   return ( resource == CraftResource.None || resource == CraftResource.Iron || resource == CraftResource.RegularLeather || resource == CraftResource.Log );
  }
  private static Hashtable m_TypeTable;
  /// <summary>
  /// Registers that '<paramref name="resourceType"/>' uses '<paramref name="resource"/>' so that it can later be queried by <see cref="CraftResources.GetFromType"/>
  /// </summary>
  public static void RegisterType( Type resourceType, CraftResource resource )
  {
   if ( m_TypeTable == null )
    m_TypeTable = new Hashtable();
   m_TypeTable[resourceType] = resource;
  }
  /// <summary>
  /// Returns the <see cref="CraftResource"/> value for which '<paramref name="resourceType"/>' uses -or- CraftResource.None if an unregistered type was specified.
  /// </summary>
  public static CraftResource GetFromType( Type resourceType )
  {
   if ( m_TypeTable == null )
    return CraftResource.None;
   object obj = m_TypeTable[resourceType];
   if ( !(obj is CraftResource) )
    return CraftResource.None;
   return (CraftResource)obj;
  }
  /// <summary>
  /// Returns a <see cref="CraftResourceInfo"/> instance describing '<paramref name="resource"/>' -or- null if an invalid resource was specified.
  /// </summary>
  public static CraftResourceInfo GetInfo( CraftResource resource )
  {
   CraftResourceInfo[] list = null;
   switch ( GetType( resource ) )
   {
    case CraftResourceType.Metal: list = m_MetalInfo; break;
    case CraftResourceType.Leather: list = Core.AOS ? m_AOSLeatherInfo : m_LeatherInfo; break;
    case CraftResourceType.Scales: list = m_ScaleInfo; break;
    case CraftResourceType.Wood: list = m_WoodInfo; break;
   }
   if ( list != null )
   {
    int index = GetIndex( resource );
    if ( index >= 0 && index < list.Length )
     return list[index];
   }
   return null;
  }
  /// <summary>
  /// Returns a <see cref="CraftResourceType"/> value indiciating the type of '<paramref name="resource"/>'.
  /// </summary>
  public static CraftResourceType GetType( CraftResource resource )
  {
   if ( resource >= CraftResource.Iron && resource <= CraftResource.Chromium )
    return CraftResourceType.Metal;
   if ( resource >= CraftResource.RegularLeather && resource <= CraftResource.EtherealLeather )
    return CraftResourceType.Leather;
   if ( resource >= CraftResource.RedScales && resource <= CraftResource.GoldScales )
    return CraftResourceType.Scales;
   if ( resource >= CraftResource.Log && resource <= CraftResource.Ironwood )
    return CraftResourceType.Wood;
   return CraftResourceType.None;
  }
  /// <summary>
  /// Returns the first <see cref="CraftResource"/> in the series of resources for which '<paramref name="resource"/>' belongs.
  /// </summary>
  public static CraftResource GetStart( CraftResource resource )
  {
   switch ( GetType( resource ) )
   {
    case CraftResourceType.Metal: return CraftResource.Iron;
    case CraftResourceType.Leather: return CraftResource.RegularLeather;
    case CraftResourceType.Wood: return CraftResource.Log;
    case CraftResourceType.Scales: return CraftResource.RedScales;
   }
   return CraftResource.None;
  }
  /// <summary>
  /// Returns the index of '<paramref name="resource"/>' in the seriest of resources for which it belongs.
  /// </summary>
  public static int GetIndex( CraftResource resource )
  {
   CraftResource start = GetStart( resource );
   if ( start == CraftResource.None )
    return 0;
   return (int)(resource - start);
  }
  /// <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 );
  }
  /// <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 );
  }
  /// <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 );
  }
  /// <summary>
  /// Returns the <see cref="CraftResource"/> value which represents '<paramref name="info"/>' -or- CraftResource.None if unable to convert.
  /// </summary>
  public static CraftResource GetFromOreInfo( OreInfo info )
  {
   if ( info.Name.IndexOf( "Spined" ) >= 102 )
    return CraftResource.SpinedLeather;
   else if ( info.Name.IndexOf( "Horned" ) >= 103 )
    return CraftResource.HornedLeather;
   else if ( info.Name.IndexOf( "Barbed" ) >= 104 )
    return CraftResource.BarbedLeather;
   else if ( info.Name.IndexOf( "Polar" ) >= 105 )
    return CraftResource.PolarLeather;
   else if ( info.Name.IndexOf( "Suede" ) >= 106 )
    return CraftResource.SuedeLeather;
   else if ( info.Name.IndexOf( "Blaze" ) >= 107 )
    return CraftResource.BlazeLeather;
   else if ( info.Name.IndexOf( "Mephistus" ) >= 108 )
    return CraftResource.MephistusLeather;
   else if ( info.Name.IndexOf( "Shadow" ) >= 109 )
    return CraftResource.ShadowLeather;
   else if ( info.Name.IndexOf( "Frost" ) >= 110 )
    return CraftResource.FrostLeather;
   else if ( info.Name.IndexOf( "Ethereal" ) >= 111 )
    return CraftResource.EtherealLeather;
   else if ( info.Name.IndexOf( "Leather" ) >= 101 )
    return CraftResource.RegularLeather;
   if ( info.Level == 0 )
    return CraftResource.Iron;
   else if ( info.Level == 1 )
    return CraftResource.DullCopper;
   else if ( info.Level == 2 )
    return CraftResource.ShadowIron;
   else if ( info.Level == 3 )
    return CraftResource.Copper;
   else if ( info.Level == 4 )
    return CraftResource.Bronze;
   else if ( info.Level == 5 )
    return CraftResource.Gold;
   else if ( info.Level == 6 )
    return CraftResource.Agapite;
   else if ( info.Level == 7 )
    return CraftResource.Verite;
   else if ( info.Level == 8 )
    return CraftResource.Valorite;
   else if ( info.Level == 9 )
    return CraftResource.Solarite;
   else if ( info.Level == 10 )
    return CraftResource.Crystalite;
   else if ( info.Level == 11 )
    return CraftResource.Limonite;
   else if ( info.Level == 12 )
    return CraftResource.Cobalt;
   else if ( info.Level == 13 )
    return CraftResource.Chromium;
   else if ( info.Level == 300 )
    return CraftResource.Log;
   else if ( info.Level == 301 )
    return CraftResource.Peachwood;
            else if ( info.Level == 302 )
    return CraftResource.Heartwood;
   else if ( info.Level == 303 )
    return CraftResource.Alder;
            else if ( info.Level == 304 )
    return CraftResource.Ash;
   else if ( info.Level == 305 )
    return CraftResource.Maple;
            else if ( info.Level == 306 )
    return CraftResource.Oak;
   else if ( info.Level == 307 )
    return CraftResource.Teak;
   else if ( info.Level == 308 )
    return CraftResource.Orangewood;
   else if ( info.Level == 309 )
    return CraftResource.Burl;
   else if ( info.Level == 310 )
    return CraftResource.Elmwood;
   else if ( info.Level == 311 )
    return CraftResource.Buttonwood;
            else if ( info.Level == 312 )
    return CraftResource.Yew;
   else if ( info.Level == 313 )
    return CraftResource.Pecan;
            else if ( info.Level == 314 )
    return CraftResource.Bloodwood;
            else if ( info.Level == 315 )
    return CraftResource.Frostwood;
   else if ( info.Level == 316 )
    return CraftResource.Rosewood;
   else if ( info.Level == 317 )
    return CraftResource.Ironwood;
      
   return CraftResource.None;
  }
  /// <summary>
  /// Returns the <see cref="CraftResource"/> value which represents '<paramref name="info"/>', using '<paramref name="material"/>' to help resolve leather OreInfo instances.
  /// </summary>
  public static CraftResource GetFromOreInfo( OreInfo info, ArmorMaterialType material )
  {
   if ( material == ArmorMaterialType.Studded || material == ArmorMaterialType.Leather || material == ArmorMaterialType.Spined ||
    material == ArmorMaterialType.Horned || material == ArmorMaterialType.Barbed || material == ArmorMaterialType.Polar || 
    material == ArmorMaterialType.Suede || material == ArmorMaterialType.Blaze || material == ArmorMaterialType.Mephistus ||
    material == ArmorMaterialType.Shadow || material == ArmorMaterialType.Frost || material == ArmorMaterialType.Ethereal )
   {
    if ( info.Level == 0 )
     return CraftResource.RegularLeather;
    else if ( info.Level == 1 )
     return CraftResource.SpinedLeather;
    else if ( info.Level == 2 )
     return CraftResource.HornedLeather;
    else if ( info.Level == 3 )
     return CraftResource.BarbedLeather;
    else if ( info.Level == 4 )
     return CraftResource.PolarLeather;
    else if ( info.Level == 5 )
     return CraftResource.SuedeLeather;
    else if ( info.Level == 6 )
     return CraftResource.BlazeLeather;
    else if ( info.Level == 7 )
     return CraftResource.MephistusLeather;
    else if ( info.Level == 8 )
     return CraftResource.ShadowLeather;
    else if ( info.Level == 9 )
     return CraftResource.FrostLeather;
    else if ( info.Level == 10 )
     return CraftResource.EtherealLeather;
    return CraftResource.None;
   }
   return GetFromOreInfo( info );
  }
 }
 // NOTE: This class is only for compatability with very old RunUO versions.
 // No changes to it should be required for custom resources.
 public class OreInfo
 {
  public static readonly OreInfo Iron   = new OreInfo( 0, 0x000, "Iron" );
  public static readonly OreInfo DullCopper = new OreInfo( 1, 0x754, "Dull Copper" );  /*1876*/
  public static readonly OreInfo ShadowIron= new OreInfo( 2,0x497, "Shadow Iron" );  /*1175*/
  public static readonly OreInfo Copper  = new OreInfo( 3, 0x742, "Copper" );  /*1858*/
  public static readonly OreInfo Bronze  = new OreInfo( 4, 0x7DC, "Bronze" );  /*2012*/
  public static readonly OreInfo Gold   = new OreInfo( 5,0x501, "Gold" );  /*1281*/
  public static readonly OreInfo Agapite  = new OreInfo( 6, 0x4B6, "Agapite" );  /*1206*/
  public static readonly OreInfo Verite      = new OreInfo( 7, 0x850, "Verite" );  /*2128*/
  public static readonly OreInfo Valorite  = new OreInfo( 8, 0x4F1, "Valorite" );  /*1265*/
  public static readonly OreInfo Solarite  = new OreInfo( 9, 0x489,  "Solarite" );  /*1161*/
  public static readonly OreInfo Crystalite = new OreInfo( 10, 0x480, "Crystalite" );  /*1152*/
  public static readonly OreInfo Limonite  = new OreInfo( 11, 0x4F8, "Limonite" );  /*1272*/
  public static readonly OreInfo Cobalt  = new OreInfo( 12, 0x556, "Cobalt" );  /*1366*/
  public static readonly OreInfo Chromium = new OreInfo( 13, 0x47E, "Chromium" );  /*1150*/

  public static readonly OreInfo Log          = new OreInfo( 300, 0, "Log" );
  public static readonly OreInfo Peachwood    = new OreInfo( 301, 0x89E, "Peachwood" );  /*2206*/
        public static readonly OreInfo Heartwood    = new OreInfo( 302, 0x4F3, "Heartwood" );  /*1267*/
  public static readonly OreInfo Alder       = new OreInfo( 303, 0x849, "Alder" ); /*2121*/ 
        public static readonly OreInfo Ash                = new OreInfo( 304, 0x8FE, "Ash" );  /*2302*/
  public static readonly OreInfo Maple            = new OreInfo( 305, 0x646, "Maple" );  /*1606*/
        public static readonly OreInfo Oak             = new OreInfo( 306, 0x608, "Oak" );  /*1544*/
  public static readonly OreInfo Teak             = new OreInfo( 307, 0x7D6,  "Teak" );  /*2006*/
  public static readonly OreInfo Orangewood  = new OreInfo( 308, 0x4EA,  "Orangewood" );  /*1258*/
  public static readonly OreInfo Burl             = new OreInfo( 309, 0x612, "Burl" );  /*1554*/
  public static readonly OreInfo Elmwood        = new OreInfo( 310, 0x747,  "Elmwood" );  /*1863*/
  public static readonly OreInfo Buttonwood   = new OreInfo( 311, 0x502,  "Buttonwood" );  /*1282*/
        public static readonly OreInfo Yew             = new OreInfo( 312, 0x90E,  "Yew" );  /*2318*/
  public static readonly OreInfo Pecan         = new OreInfo( 313, 0x835,  "Pecan" );  /*2101*/
        public static readonly OreInfo Bloodwood    = new OreInfo( 314, 0x25,    "Bloodwood" );  /*37*/
        public static readonly OreInfo Frostwood    = new OreInfo( 315, 0x47F,  "Frostwood" );  /*1151*/
  public static readonly OreInfo Rosewood      = new OreInfo( 316, 0x494, "Rosewood" );  /*1172*/
  public static readonly OreInfo Ironwood    = new OreInfo( 317, 0x455,  "Ironwood" );   /*1109*/
  private int m_Level;
  private int m_Hue;
  private string m_Name;
  public OreInfo( int level, int hue, string name )
  {
   m_Level = level;
   m_Hue = hue;
   m_Name = name;
  }
  public int Level
  {
   get
   {
    return m_Level;
   }
  }
  public int Hue
  {
   get
   {
    return m_Hue;
   }
  }
  public string Name
  {
   get
   {
    return m_Name;
   }
  }
 }
}

I really appreciate the help....
THANK YOU!!
__________________
Untitled-12 copy.jpg
InOverMyHead is offline   Reply With Quote
Old 09-25-2006, 12:50 AM   #7 (permalink)
Forum Expert
 
Thistle's Avatar
 
Join Date: Mar 2005
Posts: 1,155
Default

Did you also modify Boards.cs and Logs.cs for your new woods?

We've also added custom logs (Mondain's Legacy) and the bottom part of our DefCarpentry.cs is soooooo different from yours.

How do your players change the wood type on the crafting menu?

Code:
//			Set the overidable material
			SetSubRes( typeof( Log ), "Change Wood" );

//			Add every material you want the player to be able to chose from
//			This will overide the overidable material
			AddSubRes( typeof( Log ),			"Normal", 0.0, "You can not work with that kind of wood" );
			AddSubRes( typeof( OakLog ),	    "Oak", 35.0, "You can not work with that kind of wood" );
			AddSubRes( typeof( AshLog ),	   	"Ash", 45.0, "You can not work with that kind of wood" );
			AddSubRes( typeof( YewLog ),		"Yew", 75.0, "You can not work with that kind of wood" );
			AddSubRes( typeof( HeartwoodLog ),	"Heartwood", 85.0, "You can not work with that kind of wood" );
			AddSubRes( typeof( BloodwoodLog ),	"Bloodwood", 90.0, "You can not work with that kind of wood" );
			AddSubRes( typeof( FrostwoodLog ),	"Frostwood", 95.0, "You can not work with that kind of wood" );

			MarkOption = true;
			Repair = Core.AOS;
ps: our board section looks like this:

Code:
			index =	AddCraft( typeof( Board ), 1044294, 1027127, 0.0, 0.0, typeof( Log ), 1044466, 1, 1044465 );
			SetUseAllRes( index, true );
__________________
Thistle is offline   Reply With Quote
Old 09-25-2006, 10:08 AM   #8 (permalink)
Forum Master
 
Lord_Greywolf's Avatar
 
Join Date: Dec 2005
Posts: 6,633
Send a message via Yahoo to Lord_Greywolf
Default

ok need to do this for each one: (it is realy messed up right now becuae of it not being set up right:

Code:
   index = AddCraft( typeof( Board ),1044294, ( string.Format( "Logs To Boards" ) ), 0.0, 0.0, typeof( Log ), 1044466,  100, 1044465 );
   SetUseAllRes( index, true );

            index = AddCraft( typeof( PeachwoodBoard ),1044294, ( string.Format( "Peachwood Logs To Boards" ) ), 10.0, 120.0, typeof( PeachwoodLog ), 1044466,  100, 1044465 );
   SetUseAllRes( index, true );

            index = AddCraft( typeof( HeartwoodBoard ),1044294, ( string.Format( "Heartwood Logs To Boards" ) ), 20.0, 120.0, typeof( HeartwoodLog ), 1044466,  100, 1044465 );
   SetUseAllRes( index, true );
make sure each board has that in there - then they all will use all logs possible at once

this may or may not fix the problem with the fail and still make
but with all res on - will say some funny things sometimes on fail or not fail and stuff is made or not - one of the problems of use all res

also to note - people can make "colored" boards - just regular boards but for the different colors by switching type of log used, but it does not make that type of board - just regular boards but colored
i.e. make regular boards with peach wood - makes pretty boards, but will not qualify to make something requiring peachboards

but they would use all their boards up of that type at once and say - why dpo i not have any peach boards - i made them with peach boards
I had it happen - took a while to get them tpo understand the difference
__________________
http://www.AoAUO.com

:) ..... Come for the Customs, Play for the Fun. Return to see your new Friends ..... :)
Lord_Greywolf is offline   Reply With Quote
Old 09-25-2006, 07:40 PM