RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

[RunUO 2.0 RC1] Resources (Ore/Granite/Leather/Wood/Boards/Crystals/Powders)

jklamm1980

Wanderer
k i found the docs.cs file and replaced it now i just have to get the resourceinfo.cs thing fixed which i have no idea how to do
 

FingersMcSteal

Sorceror
If you have the OreInfo.cs file in your scripts folders then you are probably using an older version of the server files, with the release of SVN 300 at least the OreInfo file was replaced with ResourceInfo.cs.

Basically these are much the same files, maybe a couple of slight variations to each, the first post has instructions about what to do if your using the Resource v12 files, the 'YaksResources.rar' was for a clean install of it on SVN 300 type shards.

The v12 file would be the better version to use if your servers got that OreInfo.cs in it's scripts. If i remember you need to use one or the other but not both, thats the error you had prior to this... duplicated definitions (1 from ResourceInfo and the other from OreInfo.cs).

From 1st post...

IMPORTANT CHANGE... If you have the ResourceInfo.cs file in your script files (the newer version of OreInfo.cs) you should be able to remove the ResourceInfo.cs and just use the OreInfo.cs with this release, i've gone over the new file and it looks pretty much the same file with only a name change.

Just pick through the whole post (a pain i know) but there were a couple of fixes for the Docs.cs file, i just can't remember if they made it to the v12 ZIP file or not, if not try the attached Docs.cs file i've added.

The Docs.cs with the v12 version was to allow the server to create the BOD tables when the Generate Documents command was issued, it had to be done for the older version because the BOD system was changed to allow the custom resources, before the changes it made the server crash if you tried to generate documentation.

The SVN 300 release i've added does not have any changes to any of the BOD system, which shouldn't need the Docs.cs file to be replaced.

Hopefully that should resolve it.
 

Attachments

  • Docs.cs
    95.3 KB · Views: 19

Denjiki

Sorceror
I thought I deletd all the old files and replaced everything correctly but i'm getting this error..
 

Attachments

  • myerror.JPG
    myerror.JPG
    139.7 KB · Views: 33

FingersMcSteal

Sorceror
The errors you have showing there that refer to the regents will have nothing to do with this resource release, this is only for things like the ore/leathers/woods etc... nothing to do with reg's.

Looking at the errors tho i 'think' you may have replaced slightly older server files than the version of the SVN you have there. Around SVN 300 runuo made a couple of changes to the Icommodity format for a few things.

I'm guessing you might be using files from just before these new changes were added to the SVN of the server you have. It will not work with mixed file versions.

The only suggestion i can make would be replace your Regent scripts back to see if that fix's those errors (which this release had nothing to do with) and the same with the Board.cs and see if that resolves some of the errors your getting, basically try one set of files then the other and see what happens but this will not work if theres a mixture of older scripts and newer. Looks like the servers new and trying to work with older versions of the files that are throwing the errors up.
 

Denjiki

Sorceror
Thanks! I got it working with your help and some tweaking of my own as well but nonetheless it's working now. I appreciate the help even though the problem wasn't related to this script release! (even though i thought it was lol)
 

Hammerhand

Knight
Not 2 scripts, 2 instances of the same entry IN the script. You have 2 CraftResource listed along with 2 of each of the other errors listed... in the same script. If you need to, post the script.
 

mohapx

Sorceror
using System;
using System.Collections;

namespace Server.Items
{
public enum CraftResource
{
None = 0,
Iron = 1,
DullCopper,
ShadowIron,
Copper,
Bronze,
Gold,
Silver,
Agapite,
Verite,
Valorite,
Uridium,
Trillium,
Titanium,
Platinum,
Zenite,
Naquinite,
Galvinite,
Trilamide,
Veramide,
Zenlamide,


RegularLeather = 101,
SpinedLeather,
HornedLeather,
BarbedLeather,
RibbedLeather,
DreadLeather,
EtheralLeather,

RedScales = 201,
YellowScales,
BlackScales,
GreenScales,
WhiteScales,
BlueScales,

RegularLog = 301,
Oak,
Ash,
Yew,
HeartWood,
BloodWood,
FrostWood,

RegularCrystal = 401,
Amazonite,
Amber,
Amethyst,
Aragonite,
Bixbite,
BloodStone,
Calcite,
GoldStone,
Labradorite,
Moldavite,
Morganite,
Quartz,
Rhodonite,
Ruby,
Sapphire,
Sugilite,
Tanzanite,
Turquoise,
Varisite,

RegularPowder = 501,
IronPowder,
DullCopperPowder,
ShadowIronPowder,
CopperPowder,
BronzePowder,
GoldPowder,
SilverPowder,
AgapitePowder,
VeritePowder,
ValoritePowder,
UridiumPowder,
TrilliumPowder,
TitaniumPowder,
PlatinumPowder,
ZenitePowder,
NaquinitePowder,
GalvinitePowder,
TrilamidePowder,
VeramidePowder,
ZenlamidePowder,
EtheralPowder

}

public enum CraftResourceType
{
None,
Metal,
Leather,
Scales,
Logs,
Crystals,
Powders
}

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, Silver, Agapite, Verite, Valorite, Uridium, Trillium, Titanium, Platinum, Zenite, Naquinite, Galvinite, Trilamide, Veramide, Zenlamide;
public static readonly CraftAttributeInfo Spined, Horned, Barbed, Ribbed, Dread, Etheral;
public static readonly CraftAttributeInfo RedScales, YellowScales, BlackScales, GreenScales, WhiteScales, BlueScales;
public static readonly CraftAttributeInfo RegularLog, Oak, Ash, Yew, HeartWood, BloodWood, FrostWood;
public static readonly CraftAttributeInfo RegularCrystal, Amazonite, Amber, Amethyst, Aragonite, Bixbite, BloodStone, Calcite, GoldStone, Labradorite, Moldavite, Morganite, Quartz, Rhodonite, Ruby, Sapphire, Sugilite, Tanzanite, Turquoise, Varisite;
public static readonly CraftAttributeInfo RegularPowder, IronPowder, DullCopperPowder, ShadowIronPowder, CopperPowder, BronzePowder, GoldPowder, SilverPowder, AgapitePowder, VeritePowder, ValoritePowder, UridiumPowder, TrilliumPowder, TitaniumPowder, PlatinumPowder, ZenitePowder, NaquinitePowder, GalvinitePowder, TrilamidePowder, VeramidePowder, ZenlamidePowder, EtheralPowder;

static CraftAttributeInfo()
{
Blank = new CraftAttributeInfo();

CraftAttributeInfo dullCopper = DullCopper = new CraftAttributeInfo();

dullCopper.ArmorPhysicalResist = 1;
dullCopper.ArmorDurability = 50;
dullCopper.ArmorLowerRequirements = 20;
dullCopper.WeaponDurability = 100;
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.ArmorEnergyResist = 5;
shadowIron.ArmorDurability = 100;
shadowIron.WeaponColdDamage = 20;
shadowIron.WeaponDurability = 80;
shadowIron.RunicMinAttributes = 2;
shadowIron.RunicMaxAttributes = 2;
shadowIron.RunicMinIntensity = 20;
shadowIron.RunicMaxIntensity = 45;

CraftAttributeInfo copper = Copper = new CraftAttributeInfo();

copper.ArmorPhysicalResist = 2;
copper.ArmorFireResist = 1;
copper.ArmorPoisonResist = 5;
copper.ArmorEnergyResist = 2;
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 = 3;
bronze.ArmorColdResist = 5;
bronze.ArmorPoisonResist = 1;
bronze.ArmorEnergyResist = 1;
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 = 1;
golden.ArmorColdResist = 2;
golden.ArmorEnergyResist = 2;
golden.ArmorLuck = 40;
golden.ArmorLowerRequirements = 30;
golden.WeaponLuck = 40;
golden.WeaponLowerRequirements = 50;
golden.RunicMinAttributes = 3;
golden.RunicMaxAttributes = 4;
golden.RunicMinIntensity = 35;
golden.RunicMaxIntensity = 75;

CraftAttributeInfo silver = Silver = new CraftAttributeInfo();

silver.ArmorPhysicalResist = 4;
silver.ArmorFireResist = 1;
silver.ArmorColdResist = 2;
silver.ArmorEnergyResist = 2;
silver.ArmorLuck = 40;
silver.ArmorLowerRequirements = 30;
silver.WeaponLuck = 40;
silver.WeaponLowerRequirements = 50;
silver.RunicMinAttributes = 3;
silver.RunicMaxAttributes = 4;
silver.RunicMinIntensity = 35;
silver.RunicMaxIntensity = 75;

CraftAttributeInfo agapite = Agapite = new CraftAttributeInfo();

agapite.ArmorPhysicalResist = 4;
agapite.ArmorFireResist = 3;
agapite.ArmorColdResist = 2;
agapite.ArmorPoisonResist = 2;
agapite.ArmorEnergyResist = 2;
agapite.WeaponColdDamage = 30;
agapite.WeaponEnergyDamage = 20;
agapite.RunicMinAttributes = 4;
agapite.RunicMaxAttributes = 4;
agapite.RunicMinIntensity = 40;
agapite.RunicMaxIntensity = 80;

CraftAttributeInfo verite = Verite = new CraftAttributeInfo();

verite.ArmorPhysicalResist = 5;
verite.ArmorFireResist = 3;
verite.ArmorColdResist = 2;
verite.ArmorPoisonResist = 3;
verite.ArmorEnergyResist = 1;
verite.WeaponPoisonDamage = 50;
verite.WeaponEnergyDamage = 20;
verite.RunicMinAttributes = 4;
verite.RunicMaxAttributes = 5;
verite.RunicMinIntensity = 45;
verite.RunicMaxIntensity = 90;
verite.ArmorLuck = 50;
verite.WeaponLuck = 50;

CraftAttributeInfo valorite = Valorite = new CraftAttributeInfo();

valorite.ArmorPhysicalResist = 5;
valorite.ArmorColdResist = 3;
valorite.ArmorPoisonResist = 3;
valorite.ArmorEnergyResist = 3;
valorite.ArmorDurability = 50;
valorite.WeaponFireDamage = 10;
valorite.WeaponColdDamage = 20;
valorite.WeaponPoisonDamage = 10;
valorite.WeaponEnergyDamage = 20;
valorite.RunicMinAttributes = 5;
valorite.RunicMaxAttributes = 5;
valorite.RunicMinIntensity = 50;
valorite.RunicMaxIntensity = 100;

CraftAttributeInfo uridium = Uridium = new CraftAttributeInfo();

uridium.ArmorPhysicalResist = 6;
uridium.ArmorFireResist = 3;
uridium.ArmorColdResist = 7;
uridium.ArmorPoisonResist = 4;
uridium.ArmorEnergyResist = 7;
uridium.ArmorDurability = 60;
uridium.WeaponFireDamage = 0;
uridium.WeaponColdDamage = 70;
uridium.WeaponPoisonDamage = 0;
uridium.WeaponEnergyDamage = 30;
uridium.RunicMinAttributes = 5;
uridium.RunicMaxAttributes = 5;
uridium.RunicMinIntensity = 50;
uridium.RunicMaxIntensity = 100;

CraftAttributeInfo trillium = Trillium = new CraftAttributeInfo();

trillium.ArmorPhysicalResist = 6;
trillium.ArmorFireResist = 6;
trillium.ArmorColdResist = 3;
trillium.ArmorPoisonResist = 3;
trillium.ArmorEnergyResist = 6;
trillium.ArmorDurability = 30;
trillium.WeaponFireDamage = 50;
trillium.WeaponColdDamage = 0;
trillium.WeaponPoisonDamage = 0;
trillium.WeaponEnergyDamage = 50;
trillium.RunicMinAttributes = 5;
trillium.RunicMaxAttributes = 6;
trillium.RunicMinIntensity = 60;
trillium.RunicMaxIntensity = 100;
trillium.ArmorLuck = 25;
trillium.WeaponLuck = 25;

CraftAttributeInfo titanium = Titanium = new CraftAttributeInfo();

titanium.ArmorPhysicalResist = 8;
titanium.ArmorFireResist = 5;
titanium.ArmorColdResist = 9;
titanium.ArmorPoisonResist = 5;
titanium.ArmorEnergyResist = 6;
titanium.ArmorDurability = 70;
titanium.WeaponFireDamage = 30;
titanium.WeaponColdDamage = 30;
titanium.WeaponPoisonDamage = 10;
titanium.WeaponEnergyDamage = 30;
titanium.RunicMinAttributes = 5;
titanium.RunicMaxAttributes = 6;
titanium.RunicMinIntensity = 60;
titanium.RunicMaxIntensity = 100;

CraftAttributeInfo platinum = Platinum = new CraftAttributeInfo();

platinum.ArmorPhysicalResist = 7;
platinum.ArmorFireResist = 6;
platinum.ArmorColdResist = 8;
platinum.ArmorPoisonResist = 6;
platinum.ArmorEnergyResist = 8;
platinum.ArmorDurability = 70;
platinum.WeaponFireDamage = 0;
platinum.WeaponColdDamage = 50;
platinum.WeaponPoisonDamage = 50;
platinum.WeaponEnergyDamage = 0;
platinum.RunicMinAttributes = 6;
platinum.RunicMaxAttributes = 6;
platinum.RunicMinIntensity = 60;
platinum.RunicMaxIntensity = 60;

CraftAttributeInfo zenite = Zenite = new CraftAttributeInfo();

zenite.ArmorPhysicalResist = 7;
zenite.ArmorFireResist = 5;
zenite.ArmorColdResist = 5;
zenite.ArmorPoisonResist = 10;
zenite.ArmorEnergyResist = 8;
zenite.ArmorDurability = 80;
zenite.WeaponFireDamage = 0;
zenite.WeaponColdDamage = 0;
zenite.WeaponPoisonDamage = 100;
zenite.WeaponEnergyDamage = 0;
zenite.RunicMinAttributes = 6;
zenite.RunicMaxAttributes = 6;
zenite.RunicMinIntensity = 65;
zenite.RunicMaxIntensity = 100;

CraftAttributeInfo naquinite = Naquinite = new CraftAttributeInfo();

naquinite.ArmorPhysicalResist = 8;
naquinite.ArmorFireResist = 10;
naquinite.ArmorColdResist = 7;
naquinite.ArmorPoisonResist = 10;
naquinite.ArmorEnergyResist = 7;
naquinite.ArmorDurability = 80;
naquinite.WeaponFireDamage = 0;
naquinite.WeaponColdDamage = 0;
naquinite.WeaponPoisonDamage = 0;
naquinite.WeaponEnergyDamage = 100;
naquinite.RunicMinAttributes = 6;
naquinite.RunicMaxAttributes = 7;
naquinite.RunicMinIntensity = 65;
naquinite.RunicMaxIntensity = 100;
naquinite.ArmorLuck = 80;
naquinite.WeaponLuck = 80;

CraftAttributeInfo galvinite = Galvinite = new CraftAttributeInfo();

galvinite.ArmorPhysicalResist = 10;
galvinite.ArmorFireResist = 8;
galvinite.ArmorColdResist = 8;
galvinite.ArmorPoisonResist = 8;
galvinite.ArmorEnergyResist = 9;
galvinite.ArmorDurability = 100;
galvinite.WeaponFireDamage = 0;
galvinite.WeaponColdDamage = 20;
galvinite.WeaponPoisonDamage = 0;
galvinite.WeaponEnergyDamage = 80;
galvinite.RunicMinAttributes = 7;
galvinite.RunicMaxAttributes = 7;
galvinite.RunicMinIntensity = 70;
galvinite.RunicMaxIntensity = 100;
galvinite.ArmorLuck = 0;
galvinite.WeaponLuck = 0;

CraftAttributeInfo trilamide = Trilamide = new CraftAttributeInfo();

trilamide.ArmorPhysicalResist = 9;
trilamide.ArmorFireResist = 10;
trilamide.ArmorColdResist = 6;
trilamide.ArmorPoisonResist = 8;
trilamide.ArmorEnergyResist = 8;
trilamide.ArmorDurability = 90;
trilamide.WeaponFireDamage = 100;
trilamide.WeaponColdDamage = 0;
trilamide.WeaponPoisonDamage = 0;
trilamide.WeaponEnergyDamage = 0;
trilamide.RunicMinAttributes = 7;
trilamide.RunicMaxAttributes = 8;
trilamide.RunicMinIntensity = 70;
trilamide.RunicMaxIntensity = 100;
trilamide.ArmorLuck = 25;
trilamide.WeaponLuck = 25;

CraftAttributeInfo veramide = Veramide = new CraftAttributeInfo();

veramide.ArmorPhysicalResist = 10;
veramide.ArmorFireResist = 7;
veramide.ArmorColdResist = 7;
veramide.ArmorPoisonResist = 10;
veramide.ArmorEnergyResist = 7;
veramide.ArmorDurability = 100;
veramide.WeaponFireDamage = 0;
veramide.WeaponColdDamage = 0;
veramide.WeaponPoisonDamage = 100;
veramide.WeaponEnergyDamage = 0;
veramide.RunicMinAttributes = 8;
veramide.RunicMaxAttributes = 8;
veramide.RunicMinIntensity = 75;
veramide.RunicMaxIntensity = 100;
veramide.ArmorLuck = 100;
veramide.WeaponLuck = 100;

CraftAttributeInfo zenlamide = Zenlamide = new CraftAttributeInfo();

zenlamide.ArmorPhysicalResist = 10;
zenlamide.ArmorFireResist = 9;
zenlamide.ArmorColdResist = 8;
zenlamide.ArmorPoisonResist = 9;
zenlamide.ArmorEnergyResist = 10;
zenlamide.ArmorDurability = 100;
zenlamide.WeaponFireDamage = 0;
zenlamide.WeaponColdDamage = 0;
zenlamide.WeaponPoisonDamage = 0;
zenlamide.WeaponEnergyDamage = 100;
zenlamide.RunicMinAttributes = 8;
zenlamide.RunicMaxAttributes = 8;
zenlamide.RunicMinIntensity = 80;
zenlamide.RunicMaxIntensity = 100;
zenlamide.ArmorLuck = 250;
zenlamide.WeaponLuck = 250;

CraftAttributeInfo spined = Spined = new CraftAttributeInfo();

spined.ArmorPhysicalResist = 5;
spined.ArmorLuck = 40;
spined.RunicMinAttributes = 1;
spined.RunicMaxAttributes = 3;
spined.RunicMinIntensity = 20;
spined.RunicMaxIntensity = 40;

CraftAttributeInfo horned = Horned = new CraftAttributeInfo();

horned.ArmorPhysicalResist = 2;
horned.ArmorFireResist = 3;
horned.ArmorColdResist = 2;
horned.ArmorPoisonResist = 2;
horned.ArmorEnergyResist = 2;
horned.RunicMinAttributes = 3;
horned.RunicMaxAttributes = 4;
horned.RunicMinIntensity = 30;
horned.RunicMaxIntensity = 70;

CraftAttributeInfo barbed = Barbed = new CraftAttributeInfo();

barbed.ArmorPhysicalResist = 2;
barbed.ArmorFireResist = 1;
barbed.ArmorColdResist = 2;
barbed.ArmorPoisonResist = 3;
barbed.ArmorEnergyResist = 4;
barbed.RunicMinAttributes = 4;
barbed.RunicMaxAttributes = 5;
barbed.RunicMinIntensity = 40;
barbed.RunicMaxIntensity = 100;

CraftAttributeInfo ribbed = Ribbed = new CraftAttributeInfo();

ribbed.ArmorPhysicalResist = 4;
ribbed.ArmorFireResist = 5;
ribbed.ArmorColdResist = 4;
ribbed.ArmorPoisonResist = 4;
ribbed.ArmorEnergyResist = 5;
ribbed.RunicMinAttributes = 5;
ribbed.RunicMaxAttributes = 5;
ribbed.RunicMinIntensity = 50;
ribbed.RunicMaxIntensity = 100;

CraftAttributeInfo dread = Dread = new CraftAttributeInfo();

dread.ArmorPhysicalResist = 5;
dread.ArmorFireResist = 3;
dread.ArmorColdResist = 6;
dread.ArmorPoisonResist = 5;
dread.ArmorEnergyResist = 5;
dread.RunicMinAttributes = 5;
dread.RunicMaxAttributes = 6;
dread.RunicMinIntensity = 75;
dread.RunicMaxIntensity = 100;

CraftAttributeInfo etheral = Etheral = new CraftAttributeInfo();

etheral.ArmorPhysicalResist = 6;
etheral.ArmorFireResist = 5;
etheral.ArmorColdResist = 4;
etheral.ArmorPoisonResist = 5;
etheral.ArmorEnergyResist = 6;
etheral.RunicMinAttributes = 6;
etheral.RunicMaxAttributes = 6;
etheral.RunicMinIntensity = 80;
etheral.RunicMaxIntensity = 100;

CraftAttributeInfo red = RedScales = new CraftAttributeInfo();

red.ArmorPhysicalResist = 7;
red.ArmorFireResist = 12;
red.ArmorColdResist = 2;
red.ArmorPoisonResist = 1;
red.ArmorEnergyResist = 3;
red.RunicMinAttributes = 1;
red.RunicMaxAttributes = 5;
red.RunicMinIntensity = 25;
red.RunicMaxIntensity = 75;
red.ArmorLuck = 50;

CraftAttributeInfo yellow = YellowScales = new CraftAttributeInfo();

yellow.ArmorPhysicalResist = 2;
yellow.ArmorFireResist = 3;
yellow.ArmorColdResist = 2;
yellow.ArmorPoisonResist = 2;
yellow.ArmorEnergyResist = 4;
yellow.RunicMinAttributes = 2;
yellow.RunicMaxAttributes = 5;
yellow.RunicMinIntensity = 25;
yellow.RunicMaxIntensity = 75;
yellow.ArmorLuck = 50;

CraftAttributeInfo black = BlackScales = new CraftAttributeInfo();

black.ArmorPhysicalResist = 17;
black.ArmorFireResist = 2;
black.ArmorColdResist = 2;
black.ArmorPoisonResist = 4;
black.ArmorEnergyResist = 12;
black.RunicMinAttributes = 3;
black.RunicMaxAttributes = 5;
black.RunicMinIntensity = 25;
black.RunicMaxIntensity = 75;
black.ArmorLuck = 70;

CraftAttributeInfo green = GreenScales = new CraftAttributeInfo();

green.ArmorPhysicalResist = 9;
green.ArmorFireResist = 2;
green.ArmorColdResist = 5;
green.ArmorPoisonResist = 17;
green.ArmorEnergyResist = 2;
green.RunicMinAttributes = 4;
green.RunicMaxAttributes = 5;
green.RunicMinIntensity = 25;
green.RunicMaxIntensity = 75;
green.ArmorLuck = 60;

CraftAttributeInfo white = WhiteScales = new CraftAttributeInfo();

white.ArmorPhysicalResist = 7;
white.ArmorFireResist = 7;
white.ArmorColdResist = 7;
white.ArmorPoisonResist = 7;
white.ArmorEnergyResist = 17;
white.RunicMinAttributes = 5;
white.RunicMaxAttributes = 5;
white.RunicMinIntensity = 25;
white.RunicMaxIntensity = 75;
white.ArmorLuck = 80;

CraftAttributeInfo blue = BlueScales = new CraftAttributeInfo();

blue.ArmorPhysicalResist = 12;
blue.ArmorFireResist = 2;
blue.ArmorColdResist = 17;
blue.ArmorPoisonResist = 7;
blue.ArmorEnergyResist = 5;
blue.RunicMinAttributes = 5;
blue.RunicMaxAttributes = 5;
blue.RunicMinIntensity = 25;
blue.RunicMaxIntensity = 100;
blue.ArmorLuck = 80;

CraftAttributeInfo regularlog = RegularLog = new CraftAttributeInfo();

regularlog.ArmorPhysicalResist = 0;
regularlog.ArmorFireResist = 0;
regularlog.ArmorColdResist = 0;
regularlog.ArmorPoisonResist = 0;
regularlog.ArmorEnergyResist = 0;
regularlog.ArmorDurability = 0;
regularlog.WeaponFireDamage = 25;
regularlog.WeaponColdDamage = 25;
regularlog.WeaponPoisonDamage = 25;
regularlog.WeaponEnergyDamage = 25;
regularlog.RunicMinAttributes = 1;
regularlog.RunicMaxAttributes = 7;
regularlog.RunicMinIntensity = 10;
regularlog.RunicMaxIntensity = 40;
regularlog.ArmorLuck = 0;
regularlog.WeaponLuck = 100;

CraftAttributeInfo oak = Oak = new CraftAttributeInfo();

oak.ArmorPhysicalResist = 0;
oak.ArmorFireResist = 0;
oak.ArmorColdResist = 0;
oak.ArmorPoisonResist = 0;
oak.ArmorEnergyResist = 0;
oak.ArmorDurability = 0;
oak.WeaponFireDamage = 0;
oak.WeaponColdDamage = 0;
oak.WeaponPoisonDamage = 50;
oak.WeaponEnergyDamage = 50;
oak.RunicMinAttributes = 2;
oak.RunicMaxAttributes = 7;
oak.RunicMinIntensity = 30;
oak.RunicMaxIntensity = 50;
oak.ArmorLuck = 0;
oak.WeaponLuck = 50;

CraftAttributeInfo ash = Ash = new CraftAttributeInfo();

ash.ArmorPhysicalResist = 0;
ash.ArmorFireResist = 0;
ash.ArmorColdResist = 0;
ash.ArmorPoisonResist = 0;
ash.ArmorEnergyResist = 0;
ash.ArmorDurability = 0;
ash.WeaponFireDamage = 50;
ash.WeaponColdDamage = 50;
ash.WeaponPoisonDamage = 0;
ash.WeaponEnergyDamage = 0;
ash.RunicMinAttributes = 3;
ash.RunicMaxAttributes = 7;
ash.RunicMinIntensity = 40;
ash.RunicMaxIntensity = 60;
ash.ArmorLuck = 0;
ash.WeaponLuck = 50;

CraftAttributeInfo yew = Yew = new CraftAttributeInfo();

yew.ArmorPhysicalResist = 0;
yew.ArmorFireResist = 0;
yew.ArmorColdResist = 0;
yew.ArmorPoisonResist = 0;
yew.ArmorEnergyResist = 0;
yew.ArmorDurability = 0;
yew.WeaponFireDamage = 0;
yew.WeaponColdDamage = 0;
yew.WeaponPoisonDamage = 0;
yew.WeaponEnergyDamage = 100;
yew.RunicMinAttributes = 4;
yew.RunicMaxAttributes = 7;
yew.RunicMinIntensity = 50;
yew.RunicMaxIntensity = 70;
yew.ArmorLuck = 0;
yew.WeaponLuck = 100;

CraftAttributeInfo heartwood = HeartWood = new CraftAttributeInfo();

heartwood.ArmorPhysicalResist = 0;
heartwood.ArmorFireResist = 0;
heartwood.ArmorColdResist = 0;
heartwood.ArmorPoisonResist = 0;
heartwood.ArmorEnergyResist = 0;
heartwood.ArmorDurability = 0;
heartwood.WeaponFireDamage = 0;
heartwood.WeaponColdDamage = 0;
heartwood.WeaponPoisonDamage = 100;
heartwood.WeaponEnergyDamage = 0;
heartwood.RunicMinAttributes = 5;
heartwood.RunicMaxAttributes = 7;
heartwood.RunicMinIntensity = 60;
heartwood.RunicMaxIntensity = 80;
heartwood.ArmorLuck = 0;
heartwood.WeaponLuck = 100;

CraftAttributeInfo bloodwood = BloodWood = new CraftAttributeInfo();

bloodwood.ArmorPhysicalResist = 0;
bloodwood.ArmorFireResist = 0;
bloodwood.ArmorColdResist = 0;
bloodwood.ArmorPoisonResist = 0;
bloodwood.ArmorEnergyResist = 0;
bloodwood.ArmorDurability = 0;
bloodwood.WeaponFireDamage = 100;
bloodwood.WeaponColdDamage = 0;
bloodwood.WeaponPoisonDamage = 0;
bloodwood.WeaponEnergyDamage = 0;
bloodwood.RunicMinAttributes = 6;
bloodwood.RunicMaxAttributes = 7;
bloodwood.RunicMinIntensity = 70;
bloodwood.RunicMaxIntensity = 90;
bloodwood.ArmorLuck = 0;
bloodwood.WeaponLuck = 50;

CraftAttributeInfo frostwood = FrostWood = new CraftAttributeInfo();

frostwood.ArmorPhysicalResist = 0;
frostwood.ArmorFireResist = 0;
frostwood.ArmorColdResist = 0;
frostwood.ArmorPoisonResist = 0;
frostwood.ArmorEnergyResist = 0;
frostwood.ArmorDurability = 0;
frostwood.WeaponFireDamage = 0;
frostwood.WeaponColdDamage = 100;
frostwood.WeaponPoisonDamage = 0;
frostwood.WeaponEnergyDamage = 0;
frostwood.RunicMinAttributes = 7;
frostwood.RunicMaxAttributes = 7;
frostwood.RunicMinIntensity = 80;
frostwood.RunicMaxIntensity = 100;
frostwood.ArmorLuck = 0;
frostwood.WeaponLuck = 250;

CraftAttributeInfo regularcrystal = RegularCrystal = new CraftAttributeInfo();

regularcrystal.ArmorPhysicalResist = 1;
regularcrystal.ArmorFireResist = 2;
regularcrystal.ArmorColdResist = 2;
regularcrystal.ArmorPoisonResist = 2;
regularcrystal.ArmorEnergyResist = 2;
regularcrystal.ArmorDurability = 0;
regularcrystal.WeaponFireDamage = 0;
regularcrystal.WeaponColdDamage = 0;
regularcrystal.WeaponPoisonDamage = 0;
regularcrystal.WeaponEnergyDamage = 0;
regularcrystal.RunicMinAttributes = 1;
regularcrystal.RunicMaxAttributes = 1;
regularcrystal.RunicMinIntensity = 10;
regularcrystal.RunicMaxIntensity = 30;
regularcrystal.ArmorLuck = 10;
regularcrystal.WeaponLuck = 10;

CraftAttributeInfo amazonite = Amazonite = new CraftAttributeInfo();

amazonite.ArmorPhysicalResist = 1;
amazonite.ArmorFireResist = 2;
amazonite.ArmorColdResist = 10;
amazonite.ArmorPoisonResist = 2;
amazonite.ArmorEnergyResist = 2;
amazonite.ArmorDurability = 0;
amazonite.WeaponFireDamage = 0;
amazonite.WeaponColdDamage = 100;
amazonite.WeaponPoisonDamage = 0;
amazonite.WeaponEnergyDamage = 0;
amazonite.RunicMinAttributes = 1;
amazonite.RunicMaxAttributes = 1;
amazonite.RunicMinIntensity = 20;
amazonite.RunicMaxIntensity = 40;
amazonite.ArmorLuck = 10;
amazonite.WeaponLuck = 10;

CraftAttributeInfo amber = Amber = new CraftAttributeInfo();

amber.ArmorPhysicalResist = 2;
amber.ArmorFireResist = 5;
amber.ArmorColdResist = 3;
amber.ArmorPoisonResist = 3;
amber.ArmorEnergyResist = 3;
amber.ArmorDurability = 0;
amber.WeaponFireDamage = 50;
amber.WeaponColdDamage = 10;
amber.WeaponPoisonDamage = 10;
amber.WeaponEnergyDamage = 30;
amber.RunicMinAttributes = 2;
amber.RunicMaxAttributes = 2;
amber.RunicMinIntensity = 20;
amber.RunicMaxIntensity = 40;
amber.ArmorLuck = 10;
amber.WeaponLuck = 20;

CraftAttributeInfo amethyst = Amethyst = new CraftAttributeInfo();

amethyst.ArmorPhysicalResist = 2;
amethyst.ArmorFireResist = 3;
amethyst.ArmorColdResist = 3;
amethyst.ArmorPoisonResist = 3;
amethyst.ArmorEnergyResist = 5;
amethyst.ArmorDurability = 0;
amethyst.WeaponFireDamage = 20;
amethyst.WeaponColdDamage = 20;
amethyst.WeaponPoisonDamage = 10;
amethyst.WeaponEnergyDamage = 50;
amethyst.RunicMinAttributes = 2;
amethyst.RunicMaxAttributes = 2;
amethyst.RunicMinIntensity = 30;
amethyst.RunicMaxIntensity = 50;
amethyst.ArmorLuck = 20;
amethyst.WeaponLuck = 20;

CraftAttributeInfo aragonite = Aragonite = new CraftAttributeInfo();

aragonite.ArmorPhysicalResist = 3;
aragonite.ArmorFireResist = 4;
aragonite.ArmorColdResist = 4;
aragonite.ArmorPoisonResist = 4;
aragonite.ArmorEnergyResist = 4;
aragonite.ArmorDurability = 0;
aragonite.WeaponFireDamage = 25;
aragonite.WeaponColdDamage = 25;
aragonite.WeaponPoisonDamage = 25;
aragonite.WeaponEnergyDamage = 25;
aragonite.RunicMinAttributes = 2;
aragonite.RunicMaxAttributes = 2;
aragonite.RunicMinIntensity = 30;
aragonite.RunicMaxIntensity = 50;
aragonite.ArmorLuck = 30;
aragonite.WeaponLuck = 20;

CraftAttributeInfo bixbite = Bixbite = new CraftAttributeInfo();

bixbite.ArmorPhysicalResist = 4;
bixbite.ArmorFireResist = 10;
bixbite.ArmorColdResist = 4;
bixbite.ArmorPoisonResist = 5;
bixbite.ArmorEnergyResist = 5;
bixbite.ArmorDurability = 0;
bixbite.WeaponFireDamage = 100;
bixbite.WeaponColdDamage = 0;
bixbite.WeaponPoisonDamage = 0;
bixbite.WeaponEnergyDamage = 0;
bixbite.RunicMinAttributes = 3;
bixbite.RunicMaxAttributes = 3;
bixbite.RunicMinIntensity = 30;
bixbite.RunicMaxIntensity = 50;
bixbite.ArmorLuck = 30;
bixbite.WeaponLuck = 30;

CraftAttributeInfo bloodstone = BloodStone = new CraftAttributeInfo();

bloodstone.ArmorPhysicalResist = 4;
bloodstone.ArmorFireResist = 5;
bloodstone.ArmorColdResist = 4;
bloodstone.ArmorPoisonResist = 5;
bloodstone.ArmorEnergyResist = 10;
bloodstone.ArmorDurability = 0;
bloodstone.WeaponFireDamage = 0;
bloodstone.WeaponColdDamage = 0;
bloodstone.WeaponPoisonDamage = 0;
bloodstone.WeaponEnergyDamage = 100;
bloodstone.RunicMinAttributes = 3;
bloodstone.RunicMaxAttributes = 3;
bloodstone.RunicMinIntensity = 30;
bloodstone.RunicMaxIntensity = 50;
bloodstone.ArmorLuck = 30;
bloodstone.WeaponLuck = 30;

CraftAttributeInfo calcite = Calcite = new CraftAttributeInfo();

calcite.ArmorPhysicalResist = 4;
calcite.ArmorFireResist = 5;
calcite.ArmorColdResist = 5;
calcite.ArmorPoisonResist = 6;
calcite.ArmorEnergyResist = 5;
calcite.ArmorDurability = 0;
calcite.WeaponFireDamage = 20;
calcite.WeaponColdDamage = 20;
calcite.WeaponPoisonDamage = 30;
calcite.WeaponEnergyDamage = 30;
calcite.RunicMinAttributes = 4;
calcite.RunicMaxAttributes = 4;
calcite.RunicMinIntensity = 40;
calcite.RunicMaxIntensity = 60;
calcite.ArmorLuck = 40;
calcite.WeaponLuck = 40;

CraftAttributeInfo goldstone = GoldStone = new CraftAttributeInfo();

goldstone.ArmorPhysicalResist = 5;
goldstone.ArmorFireResist = 6;
goldstone.ArmorColdResist = 6;
goldstone.ArmorPoisonResist = 5;
goldstone.ArmorEnergyResist = 5;
goldstone.ArmorDurability = 0;
goldstone.WeaponFireDamage = 30;
goldstone.WeaponColdDamage = 30;
goldstone.WeaponPoisonDamage = 20;
goldstone.WeaponEnergyDamage = 20;
goldstone.RunicMinAttributes = 5;
goldstone.RunicMaxAttributes = 5;
goldstone.RunicMinIntensity = 40;
goldstone.RunicMaxIntensity = 60;
goldstone.ArmorLuck = 45;
goldstone.WeaponLuck = 45;

CraftAttributeInfo labradorite = Labradorite = new CraftAttributeInfo();

labradorite.ArmorPhysicalResist = 5;
labradorite.ArmorFireResist = 6;
labradorite.ArmorColdResist = 10;
labradorite.ArmorPoisonResist = 6;
labradorite.ArmorEnergyResist = 6;
labradorite.ArmorDurability = 0;
labradorite.WeaponFireDamage = 0;
labradorite.WeaponColdDamage = 100;
labradorite.WeaponPoisonDamage = 0;
labradorite.WeaponEnergyDamage = 0;
labradorite.RunicMinAttributes = 5;
labradorite.RunicMaxAttributes = 5;
labradorite.RunicMinIntensity = 40;
labradorite.RunicMaxIntensity = 60;
labradorite.ArmorLuck = 50;
labradorite.WeaponLuck = 50;

CraftAttributeInfo moldavite = Moldavite = new CraftAttributeInfo();

moldavite.ArmorPhysicalResist = 6;
moldavite.ArmorFireResist = 4;
moldavite.ArmorColdResist = 3;
moldavite.ArmorPoisonResist = 6;
moldavite.ArmorEnergyResist = 10;
moldavite.ArmorDurability = 0;
moldavite.WeaponFireDamage = 20;
moldavite.WeaponColdDamage = 0;
moldavite.WeaponPoisonDamage = 0;
moldavite.WeaponEnergyDamage = 80;
moldavite.RunicMinAttributes = 6;
moldavite.RunicMaxAttributes = 6;
moldavite.RunicMinIntensity = 40;
moldavite.RunicMaxIntensity = 70;
moldavite.ArmorLuck = 50;
moldavite.WeaponLuck = 50;

CraftAttributeInfo morganite = Morganite = new CraftAttributeInfo();

morganite.ArmorPhysicalResist = 6;
morganite.ArmorFireResist = 6;
morganite.ArmorColdResist = 7;
morganite.ArmorPoisonResist = 10;
morganite.ArmorEnergyResist = 4;
morganite.ArmorDurability = 0;
morganite.WeaponFireDamage = 0;
morganite.WeaponColdDamage = 0;
morganite.WeaponPoisonDamage = 100;
morganite.WeaponEnergyDamage = 0;
morganite.RunicMinAttributes = 6;
morganite.RunicMaxAttributes = 6;
morganite.RunicMinIntensity = 40;
morganite.RunicMaxIntensity = 70;
morganite.ArmorLuck = 50;
morganite.WeaponLuck = 50;

CraftAttributeInfo quartz = Quartz = new CraftAttributeInfo();

quartz.ArmorPhysicalResist = 7;
quartz.ArmorFireResist = 7;
quartz.ArmorColdResist = 4;
quartz.ArmorPoisonResist = 2;
quartz.ArmorEnergyResist = 10;
quartz.ArmorDurability = 0;
quartz.WeaponFireDamage = 0;
quartz.WeaponColdDamage = 0;
quartz.WeaponPoisonDamage = 0;
quartz.WeaponEnergyDamage = 100;
quartz.RunicMinAttributes = 7;
quartz.RunicMaxAttributes = 7;
quartz.RunicMinIntensity = 50;
quartz.RunicMaxIntensity = 80;
quartz.ArmorLuck = 60;
quartz.WeaponLuck = 60;

CraftAttributeInfo rhodonite = Rhodonite = new CraftAttributeInfo();

rhodonite.ArmorPhysicalResist = 7;
rhodonite.ArmorFireResist = 7;
rhodonite.ArmorColdResist = 6;
rhodonite.ArmorPoisonResist = 5;
rhodonite.ArmorEnergyResist = 7;
rhodonite.ArmorDurability = 0;
rhodonite.WeaponFireDamage = 50;
rhodonite.WeaponColdDamage = 0;
rhodonite.WeaponPoisonDamage = 0;
rhodonite.WeaponEnergyDamage = 50;
rhodonite.RunicMinAttributes = 7;
rhodonite.RunicMaxAttributes = 7;
rhodonite.RunicMinIntensity = 50;
rhodonite.RunicMaxIntensity = 80;
rhodonite.ArmorLuck = 70;
rhodonite.WeaponLuck = 70;

CraftAttributeInfo ruby = Ruby = new CraftAttributeInfo();

ruby.ArmorPhysicalResist = 7;
ruby.ArmorFireResist = 10;
ruby.ArmorColdResist = 7;
ruby.ArmorPoisonResist = 5;
ruby.ArmorEnergyResist = 8;
ruby.ArmorDurability = 0;
ruby.WeaponFireDamage = 100;
ruby.WeaponColdDamage = 0;
ruby.WeaponPoisonDamage = 0;
ruby.WeaponEnergyDamage = 0;
ruby.RunicMinAttributes = 7;
ruby.RunicMaxAttributes = 7;
ruby.RunicMinIntensity = 50;
ruby.RunicMaxIntensity = 80;
ruby.ArmorLuck = 70;
ruby.WeaponLuck = 70;

CraftAttributeInfo sapphire = Sapphire = new CraftAttributeInfo();

sapphire.ArmorPhysicalResist = 8;
sapphire.ArmorFireResist = 8;
sapphire.ArmorColdResist = 10;
sapphire.ArmorPoisonResist = 7;
sapphire.ArmorEnergyResist = 6;
sapphire.ArmorDurability = 0;
sapphire.WeaponFireDamage = 0;
sapphire.WeaponColdDamage = 100;
sapphire.WeaponPoisonDamage = 0;
sapphire.WeaponEnergyDamage = 0;
sapphire.RunicMinAttributes = 8;
sapphire.RunicMaxAttributes = 8;
sapphire.RunicMinIntensity = 60;
sapphire.RunicMaxIntensity = 90;
sapphire.ArmorLuck = 80;
sapphire.WeaponLuck = 80;

CraftAttributeInfo sugilite = Sugilite = new CraftAttributeInfo();

sugilite.ArmorPhysicalResist = 8;
sugilite.ArmorFireResist = 10;
sugilite.ArmorColdResist = 5;
sugilite.ArmorPoisonResist = 5;
sugilite.ArmorEnergyResist = 10;
sugilite.ArmorDurability = 0;
sugilite.WeaponFireDamage = 50;
sugilite.WeaponColdDamage = 0;
sugilite.WeaponPoisonDamage = 0;
sugilite.WeaponEnergyDamage = 50;
sugilite.RunicMinAttributes = 8;
sugilite.RunicMaxAttributes = 8;
sugilite.RunicMinIntensity = 60;
sugilite.RunicMaxIntensity = 90;
sugilite.ArmorLuck = 80;
sugilite.WeaponLuck = 80;

CraftAttributeInfo tanzanite = Tanzanite = new CraftAttributeInfo();

tanzanite.ArmorPhysicalResist = 9;
tanzanite.ArmorFireResist = 6;
tanzanite.ArmorColdResist = 8;
tanzanite.ArmorPoisonResist = 10;
tanzanite.ArmorEnergyResist = 7;
tanzanite.ArmorDurability = 0;
tanzanite.WeaponFireDamage = 0;
tanzanite.WeaponColdDamage = 20;
tanzanite.WeaponPoisonDamage = 80;
tanzanite.WeaponEnergyDamage = 0;
tanzanite.RunicMinAttributes = 9;
tanzanite.RunicMaxAttributes = 9;
tanzanite.RunicMinIntensity = 60;
tanzanite.RunicMaxIntensity = 100;
tanzanite.ArmorLuck = 90;
tanzanite.WeaponLuck = 90;

CraftAttributeInfo turquoise = Turquoise = new CraftAttributeInfo();

turquoise.ArmorPhysicalResist = 9;
turquoise.ArmorFireResist = 0;
turquoise.ArmorColdResist = 0;
turquoise.ArmorPoisonResist = 0;
turquoise.ArmorEnergyResist = 0;
turquoise.ArmorDurability = 0;
turquoise.WeaponFireDamage = 0;
turquoise.WeaponColdDamage = 0;
turquoise.WeaponPoisonDamage = 0;
turquoise.WeaponEnergyDamage = 0;
turquoise.RunicMinAttributes = 9;
turquoise.RunicMaxAttributes = 9;
turquoise.RunicMinIntensity = 80;
turquoise.RunicMaxIntensity = 100;
turquoise.ArmorLuck = 90;
turquoise.WeaponLuck = 90;

CraftAttributeInfo varisite = Varisite = new CraftAttributeInfo();

varisite.ArmorPhysicalResist = 10;
varisite.ArmorFireResist = 9;
varisite.ArmorColdResist = 9;
varisite.ArmorPoisonResist = 10;
varisite.ArmorEnergyResist = 9;
varisite.ArmorDurability = 0;
varisite.WeaponFireDamage = 0;
varisite.WeaponColdDamage = 0;
varisite.WeaponPoisonDamage = 100;
varisite.WeaponEnergyDamage = 0;
varisite.RunicMinAttributes = 10;
varisite.RunicMaxAttributes = 10;
varisite.RunicMinIntensity = 80;
varisite.RunicMaxIntensity = 100;
varisite.ArmorLuck = 100;
varisite.WeaponLuck = 100;

CraftAttributeInfo regularpowder = RegularPowder = new CraftAttributeInfo();

regularpowder.ArmorPhysicalResist = 0;
regularpowder.ArmorFireResist = 0;
regularpowder.ArmorColdResist = 0;
regularpowder.ArmorPoisonResist = 0;
regularpowder.ArmorEnergyResist = 0;
regularpowder.ArmorDurability = 0;
regularpowder.WeaponFireDamage = 0;
regularpowder.WeaponColdDamage = 0;
regularpowder.WeaponPoisonDamage = 0;
regularpowder.WeaponEnergyDamage = 0;
regularpowder.RunicMinAttributes = 1;
regularpowder.RunicMaxAttributes = 1;
regularpowder.RunicMinIntensity = 10;
regularpowder.RunicMaxIntensity = 20;
regularpowder.ArmorLuck = 0;
regularpowder.WeaponLuck = 0;

CraftAttributeInfo ironpowder = IronPowder = new CraftAttributeInfo();

ironpowder.ArmorPhysicalResist = 0;
ironpowder.ArmorFireResist = 0;
ironpowder.ArmorColdResist = 0;
ironpowder.ArmorPoisonResist = 0;
ironpowder.ArmorEnergyResist = 0;
ironpowder.ArmorDurability = 0;
ironpowder.WeaponFireDamage = 0;
ironpowder.WeaponColdDamage = 0;
ironpowder.WeaponPoisonDamage = 0;
ironpowder.WeaponEnergyDamage = 0;
ironpowder.RunicMinAttributes = 1;
ironpowder.RunicMaxAttributes = 1;
ironpowder.RunicMinIntensity = 10;
ironpowder.RunicMaxIntensity = 20;
ironpowder.ArmorLuck = 0;
ironpowder.WeaponLuck = 0;

CraftAttributeInfo dullcopperpowder = DullCopperPowder = new CraftAttributeInfo();

dullcopperpowder.ArmorPhysicalResist = 0;
dullcopperpowder.ArmorFireResist = 0;
dullcopperpowder.ArmorColdResist = 0;
dullcopperpowder.ArmorPoisonResist = 0;
dullcopperpowder.ArmorEnergyResist = 0;
dullcopperpowder.ArmorDurability = 0;
dullcopperpowder.WeaponFireDamage = 0;
dullcopperpowder.WeaponColdDamage = 0;
dullcopperpowder.WeaponPoisonDamage = 0;
dullcopperpowder.WeaponEnergyDamage = 0;
dullcopperpowder.RunicMinAttributes = 1;
dullcopperpowder.RunicMaxAttributes = 2;
dullcopperpowder.RunicMinIntensity = 10;
dullcopperpowder.RunicMaxIntensity = 20;
dullcopperpowder.ArmorLuck = 0;
dullcopperpowder.WeaponLuck = 0;

CraftAttributeInfo shadowironpowder = ShadowIronPowder = new CraftAttributeInfo();

shadowironpowder.ArmorPhysicalResist = 0;
shadowironpowder.ArmorFireResist = 0;
shadowironpowder.ArmorColdResist = 0;
shadowironpowder.ArmorPoisonResist = 0;
shadowironpowder.ArmorEnergyResist = 0;
shadowironpowder.ArmorDurability = 0;
shadowironpowder.WeaponFireDamage = 0;
shadowironpowder.WeaponColdDamage = 0;
shadowironpowder.WeaponPoisonDamage = 0;
shadowironpowder.WeaponEnergyDamage = 0;
shadowironpowder.RunicMinAttributes = 2;
shadowironpowder.RunicMaxAttributes = 2;
shadowironpowder.RunicMinIntensity = 10;
shadowironpowder.RunicMaxIntensity = 20;
shadowironpowder.ArmorLuck = 0;
shadowironpowder.WeaponLuck = 0;

CraftAttributeInfo copperpowder = CopperPowder = new CraftAttributeInfo();

copperpowder.ArmorPhysicalResist = 0;
copperpowder.ArmorFireResist = 0;
copperpowder.ArmorColdResist = 0;
copperpowder.ArmorPoisonResist = 0;
copperpowder.ArmorEnergyResist = 0;
copperpowder.ArmorDurability = 0;
copperpowder.WeaponFireDamage = 0;
copperpowder.WeaponColdDamage = 0;
copperpowder.WeaponPoisonDamage = 0;
copperpowder.WeaponEnergyDamage = 0;
copperpowder.RunicMinAttributes = 2;
copperpowder.RunicMaxAttributes = 2;
copperpowder.RunicMinIntensity = 10;
copperpowder.RunicMaxIntensity = 20;
copperpowder.ArmorLuck = 0;
copperpowder.WeaponLuck = 0;

CraftAttributeInfo bronzepowder = BronzePowder = new CraftAttributeInfo();

bronzepowder.ArmorPhysicalResist = 0;
bronzepowder.ArmorFireResist = 0;
bronzepowder.ArmorColdResist = 0;
bronzepowder.ArmorPoisonResist = 0;
bronzepowder.ArmorEnergyResist = 0;
bronzepowder.ArmorDurability = 0;
bronzepowder.WeaponFireDamage = 0;
bronzepowder.WeaponColdDamage = 0;
bronzepowder.WeaponPoisonDamage = 0;
bronzepowder.WeaponEnergyDamage = 0;
bronzepowder.RunicMinAttributes = 2;
bronzepowder.RunicMaxAttributes = 3;
bronzepowder.RunicMinIntensity = 10;
bronzepowder.RunicMaxIntensity = 20;
bronzepowder.ArmorLuck = 0;
bronzepowder.WeaponLuck = 0;

CraftAttributeInfo goldpowder = GoldPowder = new CraftAttributeInfo();

goldpowder.ArmorPhysicalResist = 0;
goldpowder.ArmorFireResist = 0;
goldpowder.ArmorColdResist = 0;
goldpowder.ArmorPoisonResist = 0;
goldpowder.ArmorEnergyResist = 0;
goldpowder.ArmorDurability = 0;
goldpowder.WeaponFireDamage = 0;
goldpowder.WeaponColdDamage = 0;
goldpowder.WeaponPoisonDamage = 0;
goldpowder.WeaponEnergyDamage = 0;
goldpowder.RunicMinAttributes = 2;
goldpowder.RunicMaxAttributes = 3;
goldpowder.RunicMinIntensity = 10;
goldpowder.RunicMaxIntensity = 30;
goldpowder.ArmorLuck = 0;
goldpowder.WeaponLuck = 0;

CraftAttributeInfo silverpowder = SilverPowder = new CraftAttributeInfo();

silverpowder.ArmorPhysicalResist = 0;
silverpowder.ArmorFireResist = 0;
silverpowder.ArmorColdResist = 0;
silverpowder.ArmorPoisonResist = 0;
silverpowder.ArmorEnergyResist = 0;
silverpowder.ArmorDurability = 0;
silverpowder.WeaponFireDamage = 0;
silverpowder.WeaponColdDamage = 0;
silverpowder.WeaponPoisonDamage = 0;
silverpowder.WeaponEnergyDamage = 0;
silverpowder.RunicMinAttributes = 3;
silverpowder.RunicMaxAttributes = 3;
silverpowder.RunicMinIntensity = 20;
silverpowder.RunicMaxIntensity = 30;
silverpowder.ArmorLuck = 0;
silverpowder.WeaponLuck = 0;

CraftAttributeInfo agapitepowder = AgapitePowder = new CraftAttributeInfo();

agapitepowder.ArmorPhysicalResist = 0;
agapitepowder.ArmorFireResist = 0;
agapitepowder.ArmorColdResist = 0;
agapitepowder.ArmorPoisonResist = 0;
agapitepowder.ArmorEnergyResist = 0;
agapitepowder.ArmorDurability = 0;
agapitepowder.WeaponFireDamage = 0;
agapitepowder.WeaponColdDamage = 0;
agapitepowder.WeaponPoisonDamage = 0;
agapitepowder.WeaponEnergyDamage = 0;
agapitepowder.RunicMinAttributes = 2;
agapitepowder.RunicMaxAttributes = 4;
agapitepowder.RunicMinIntensity = 20;
agapitepowder.RunicMaxIntensity = 30;
agapitepowder.ArmorLuck = 0;
agapitepowder.WeaponLuck = 0;

CraftAttributeInfo veritepowder = VeritePowder = new CraftAttributeInfo();

veritepowder.ArmorPhysicalResist = 0;
veritepowder.ArmorFireResist = 0;
veritepowder.ArmorColdResist = 0;
veritepowder.ArmorPoisonResist = 0;
veritepowder.ArmorEnergyResist = 0;
veritepowder.ArmorDurability = 0;
veritepowder.WeaponFireDamage = 0;
veritepowder.WeaponColdDamage = 0;
veritepowder.WeaponPoisonDamage = 0;
veritepowder.WeaponEnergyDamage = 0;
veritepowder.RunicMinAttributes = 4;
veritepowder.RunicMaxAttributes = 4;
veritepowder.RunicMinIntensity = 20;
veritepowder.RunicMaxIntensity = 40;
veritepowder.ArmorLuck = 0;
veritepowder.WeaponLuck = 0;

CraftAttributeInfo valoritepowder = ValoritePowder = new CraftAttributeInfo();

valoritepowder.ArmorPhysicalResist = 0;
valoritepowder.ArmorFireResist = 0;
valoritepowder.ArmorColdResist = 0;
valoritepowder.ArmorPoisonResist = 0;
valoritepowder.ArmorEnergyResist = 0;
valoritepowder.ArmorDurability = 0;
valoritepowder.WeaponFireDamage = 0;
valoritepowder.WeaponColdDamage = 0;
valoritepowder.WeaponPoisonDamage = 0;
valoritepowder.WeaponEnergyDamage = 0;
valoritepowder.RunicMinAttributes = 3;
valoritepowder.RunicMaxAttributes = 5;
valoritepowder.RunicMinIntensity = 30;
valoritepowder.RunicMaxIntensity = 40;
valoritepowder.ArmorLuck = 0;
valoritepowder.WeaponLuck = 0;

CraftAttributeInfo uridiumpowder = UridiumPowder = new CraftAttributeInfo();

uridiumpowder.ArmorPhysicalResist = 0;
uridiumpowder.ArmorFireResist = 0;
uridiumpowder.ArmorColdResist = 0;
uridiumpowder.ArmorPoisonResist = 0;
uridiumpowder.ArmorEnergyResist = 0;
uridiumpowder.ArmorDurability = 0;
uridiumpowder.WeaponFireDamage = 0;
uridiumpowder.WeaponColdDamage = 0;
uridiumpowder.WeaponPoisonDamage = 0;
uridiumpowder.WeaponEnergyDamage = 0;
uridiumpowder.RunicMinAttributes = 5;
uridiumpowder.RunicMaxAttributes = 5;
uridiumpowder.RunicMinIntensity = 20;
uridiumpowder.RunicMaxIntensity = 50;
uridiumpowder.ArmorLuck = 0;
uridiumpowder.WeaponLuck = 0;

CraftAttributeInfo trilliumpowder = TrilliumPowder = new CraftAttributeInfo();

trilliumpowder.ArmorPhysicalResist = 0;
trilliumpowder.ArmorFireResist = 0;
trilliumpowder.ArmorColdResist = 0;
trilliumpowder.ArmorPoisonResist = 0;
trilliumpowder.ArmorEnergyResist = 0;
trilliumpowder.ArmorDurability = 0;
trilliumpowder.WeaponFireDamage = 0;
trilliumpowder.WeaponColdDamage = 0;
trilliumpowder.WeaponPoisonDamage = 0;
trilliumpowder.WeaponEnergyDamage = 0;
trilliumpowder.RunicMinAttributes = 5;
trilliumpowder.RunicMaxAttributes = 6;
trilliumpowder.RunicMinIntensity = 30;
trilliumpowder.RunicMaxIntensity = 50;
trilliumpowder.ArmorLuck = 0;
trilliumpowder.WeaponLuck = 0;

CraftAttributeInfo titaniumpowder = TitaniumPowder = new CraftAttributeInfo();

titaniumpowder.ArmorPhysicalResist = 0;
titaniumpowder.ArmorFireResist = 0;
titaniumpowder.ArmorColdResist = 0;
titaniumpowder.ArmorPoisonResist = 0;
titaniumpowder.ArmorEnergyResist = 0;
titaniumpowder.ArmorDurability = 0;
titaniumpowder.WeaponFireDamage = 0;
titaniumpowder.WeaponColdDamage = 0;
titaniumpowder.WeaponPoisonDamage = 0;
titaniumpowder.WeaponEnergyDamage = 0;
titaniumpowder.RunicMinAttributes = 6;
titaniumpowder.RunicMaxAttributes = 6;
titaniumpowder.RunicMinIntensity = 30;
titaniumpowder.RunicMaxIntensity = 60;
titaniumpowder.ArmorLuck = 0;
titaniumpowder.WeaponLuck = 0;

CraftAttributeInfo platinumpowder = PlatinumPowder = new CraftAttributeInfo();

platinumpowder.ArmorPhysicalResist = 0;
platinumpowder.ArmorFireResist = 0;
platinumpowder.ArmorColdResist = 0;
platinumpowder.ArmorPoisonResist = 0;
platinumpowder.ArmorEnergyResist = 0;
platinumpowder.ArmorDurability = 0;
platinumpowder.WeaponFireDamage = 0;
platinumpowder.WeaponColdDamage = 0;
platinumpowder.WeaponPoisonDamage = 0;
platinumpowder.WeaponEnergyDamage = 0;
platinumpowder.RunicMinAttributes = 5;
platinumpowder.RunicMaxAttributes = 7;
platinumpowder.RunicMinIntensity = 40;
platinumpowder.RunicMaxIntensity = 60;
platinumpowder.ArmorLuck = 0;
platinumpowder.WeaponLuck = 0;

CraftAttributeInfo zenitepowder = ZenitePowder = new CraftAttributeInfo();

zenitepowder.ArmorPhysicalResist = 0;
zenitepowder.ArmorFireResist = 0;
zenitepowder.ArmorColdResist = 0;
zenitepowder.ArmorPoisonResist = 0;
zenitepowder.ArmorEnergyResist = 0;
zenitepowder.ArmorDurability = 0;
zenitepowder.WeaponFireDamage = 0;
zenitepowder.WeaponColdDamage = 0;
zenitepowder.WeaponPoisonDamage = 0;
zenitepowder.WeaponEnergyDamage = 0;
zenitepowder.RunicMinAttributes = 7;
zenitepowder.RunicMaxAttributes = 7;
zenitepowder.RunicMinIntensity = 40;
zenitepowder.RunicMaxIntensity = 70;
zenitepowder.ArmorLuck = 0;
zenitepowder.WeaponLuck = 0;

CraftAttributeInfo naquinitepowder = NaquinitePowder = new CraftAttributeInfo();

naquinitepowder.ArmorPhysicalResist = 0;
naquinitepowder.ArmorFireResist = 0;
naquinitepowder.ArmorColdResist = 0;
naquinitepowder.ArmorPoisonResist = 0;
naquinitepowder.ArmorEnergyResist = 0;
naquinitepowder.ArmorDurability = 0;
naquinitepowder.WeaponFireDamage = 0;
naquinitepowder.WeaponColdDamage = 0;
naquinitepowder.WeaponPoisonDamage = 0;
naquinitepowder.WeaponEnergyDamage = 0;
naquinitepowder.RunicMinAttributes = 7;
naquinitepowder.RunicMaxAttributes = 8;
naquinitepowder.RunicMinIntensity = 50;
naquinitepowder.RunicMaxIntensity = 70;
naquinitepowder.ArmorLuck = 0;
naquinitepowder.WeaponLuck = 0;

CraftAttributeInfo galvinitepowder = GalvinitePowder = new CraftAttributeInfo();

galvinitepowder.ArmorPhysicalResist = 0;
galvinitepowder.ArmorFireResist = 0;
galvinitepowder.ArmorColdResist = 0;
galvinitepowder.ArmorPoisonResist = 0;
galvinitepowder.ArmorEnergyResist = 0;
galvinitepowder.ArmorDurability = 0;
galvinitepowder.WeaponFireDamage = 0;
galvinitepowder.WeaponColdDamage = 0;
galvinitepowder.WeaponPoisonDamage = 0;
galvinitepowder.WeaponEnergyDamage = 0;
galvinitepowder.RunicMinAttributes = 8;
galvinitepowder.RunicMaxAttributes = 8;
galvinitepowder.RunicMinIntensity = 60;
galvinitepowder.RunicMaxIntensity = 80;
galvinitepowder.ArmorLuck = 0;
galvinitepowder.WeaponLuck = 0;

CraftAttributeInfo trilamidepowder = TrilamidePowder = new CraftAttributeInfo();

trilamidepowder.ArmorPhysicalResist = 0;
trilamidepowder.ArmorFireResist = 0;
trilamidepowder.ArmorColdResist = 0;
trilamidepowder.ArmorPoisonResist = 0;
trilamidepowder.ArmorEnergyResist = 0;
trilamidepowder.ArmorDurability = 0;
trilamidepowder.WeaponFireDamage = 0;
trilamidepowder.WeaponColdDamage = 0;
trilamidepowder.WeaponPoisonDamage = 0;
trilamidepowder.WeaponEnergyDamage = 0;
trilamidepowder.RunicMinAttributes = 8;
trilamidepowder.RunicMaxAttributes = 9;
trilamidepowder.RunicMinIntensity = 60;
trilamidepowder.RunicMaxIntensity = 90;
trilamidepowder.ArmorLuck = 0;
trilamidepowder.WeaponLuck = 0;

CraftAttributeInfo veramidepowder = VeramidePowder = new CraftAttributeInfo();

veramidepowder.ArmorPhysicalResist = 0;
veramidepowder.ArmorFireResist = 0;
veramidepowder.ArmorColdResist = 0;
veramidepowder.ArmorPoisonResist = 0;
veramidepowder.ArmorEnergyResist = 0;
veramidepowder.ArmorDurability = 0;
veramidepowder.WeaponFireDamage = 0;
veramidepowder.WeaponColdDamage = 0;
veramidepowder.WeaponPoisonDamage = 0;
veramidepowder.WeaponEnergyDamage = 0;
veramidepowder.RunicMinAttributes = 9;
veramidepowder.RunicMaxAttributes = 9;
veramidepowder.RunicMinIntensity = 70;
veramidepowder.RunicMaxIntensity = 90;
veramidepowder.ArmorLuck = 0;
veramidepowder.WeaponLuck = 0;

CraftAttributeInfo zenlamidepowder = ZenlamidePowder = new CraftAttributeInfo();

zenlamidepowder.ArmorPhysicalResist = 0;
zenlamidepowder.ArmorFireResist = 0;
zenlamidepowder.ArmorColdResist = 0;
zenlamidepowder.ArmorPoisonResist = 0;
zenlamidepowder.ArmorEnergyResist = 0;
zenlamidepowder.ArmorDurability = 0;
zenlamidepowder.WeaponFireDamage = 0;
zenlamidepowder.WeaponColdDamage = 0;
zenlamidepowder.WeaponPoisonDamage = 0;
zenlamidepowder.WeaponEnergyDamage = 0;
zenlamidepowder.RunicMinAttributes = 9;
zenlamidepowder.RunicMaxAttributes = 10;
zenlamidepowder.RunicMinIntensity = 80;
zenlamidepowder.RunicMaxIntensity = 100;
zenlamidepowder.ArmorLuck = 0;
zenlamidepowder.WeaponLuck = 0;

CraftAttributeInfo etheralpowder = EtheralPowder = new CraftAttributeInfo();

etheralpowder.ArmorPhysicalResist = 0;
etheralpowder.ArmorFireResist = 0;
etheralpowder.ArmorColdResist = 0;
etheralpowder.ArmorPoisonResist = 0;
etheralpowder.ArmorEnergyResist = 0;
etheralpowder.ArmorDurability = 0;
etheralpowder.WeaponFireDamage = 0;
etheralpowder.WeaponColdDamage = 0;
etheralpowder.WeaponPoisonDamage = 0;
etheralpowder.WeaponEnergyDamage = 0;
etheralpowder.RunicMinAttributes = 10;
etheralpowder.RunicMaxAttributes = 10;
etheralpowder.RunicMinIntensity = 80;
etheralpowder.RunicMaxIntensity = 100;
etheralpowder.ArmorLuck = 0;
etheralpowder.WeaponLuck = 0;
}
}

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, 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 ) ),
new CraftResourceInfo( 0x973, 1053108, "Dull Copper", CraftAttributeInfo.DullCopper, CraftResource.DullCopper, typeof( DullCopperIngot ), typeof( DullCopperOre ), typeof( DullCopperGranite ) ),
new CraftResourceInfo( 0x966, 1053107, "Shadow Iron", CraftAttributeInfo.ShadowIron, CraftResource.ShadowIron, typeof( ShadowIronIngot ), typeof( ShadowIronOre ), typeof( ShadowIronGranite ) ),
new CraftResourceInfo( 0x96D, 1053106, "Copper", CraftAttributeInfo.Copper, CraftResource.Copper, typeof( CopperIngot ), typeof( CopperOre ), typeof( CopperGranite ) ),
new CraftResourceInfo( 0x972, 1053105, "Bronze", CraftAttributeInfo.Bronze, CraftResource.Bronze, typeof( BronzeIngot ), typeof( BronzeOre ), typeof( BronzeGranite ) ),
new CraftResourceInfo( 0x8A5, 1053104, "Gold", CraftAttributeInfo.Golden, CraftResource.Gold, typeof( GoldIngot ), typeof( GoldOre ), typeof( GoldGranite ) ),
new CraftResourceInfo( 0x835, 0, "Silver", CraftAttributeInfo.Silver, CraftResource.Silver, typeof( SilverIngot ), typeof( SilverOre ), typeof( SilverGranite ) ),
new CraftResourceInfo( 0x979, 1053103, "Agapite", CraftAttributeInfo.Agapite, CraftResource.Agapite, typeof( AgapiteIngot ), typeof( AgapiteOre ), typeof( AgapiteGranite ) ),
new CraftResourceInfo( 0x89F, 1053102, "Verite", CraftAttributeInfo.Verite, CraftResource.Verite, typeof( VeriteIngot ), typeof( VeriteOre ), typeof( VeriteGranite ) ),
new CraftResourceInfo( 0x8AB, 1053101, "Valorite", CraftAttributeInfo.Valorite, CraftResource.Valorite, typeof( ValoriteIngot ), typeof( ValoriteOre ), typeof( ValoriteGranite ) ),
new CraftResourceInfo( 0x583, 0, "Uridium", CraftAttributeInfo.Uridium, CraftResource.Uridium, typeof( UridiumIngot ), typeof( UridiumOre ), typeof( UridiumGranite ) ),
new CraftResourceInfo( 0x91, 0, "Trillium", CraftAttributeInfo.Trillium, CraftResource.Trillium, typeof( TrilliumIngot ), typeof( TrilliumOre ), typeof( TrilliumGranite ) ),
new CraftResourceInfo( 0xBD, 0, "Titanium", CraftAttributeInfo.Titanium, CraftResource.Titanium, typeof( TitaniumIngot ), typeof( TitaniumOre ), typeof( TitaniumGranite ) ),
new CraftResourceInfo( 0x4D5, 0, "Platinum", CraftAttributeInfo.Platinum, CraftResource.Platinum, typeof( PlatinumIngot ), typeof( PlatinumOre ), typeof( PlatinumGranite ) ),
new CraftResourceInfo( 0xA4, 0, "Zenite", CraftAttributeInfo.Zenite, CraftResource.Zenite, typeof( ZeniteIngot ), typeof( ZeniteOre ), typeof( ZeniteGranite ) ),
new CraftResourceInfo( 0x2DD, 0, "Naquinite", CraftAttributeInfo.Naquinite, CraftResource.Naquinite, typeof( NaquiniteIngot ), typeof( NaquiniteOre ), typeof( NaquiniteGranite ) ),
new CraftResourceInfo( 0x849, 0, "Galvinite", CraftAttributeInfo.Galvinite, CraftResource.Galvinite, typeof( GalviniteIngot ), typeof( GalviniteOre ), typeof( GalviniteGranite ) ),
new CraftResourceInfo( 0x674, 0, "Trilamide", CraftAttributeInfo.Trilamide, CraftResource.Trilamide, typeof( TrilamideIngot ), typeof( TrilamideOre ), typeof( TrilamideGranite ) ),
new CraftResourceInfo( 0x11C, 0, "Veramide", CraftAttributeInfo.Veramide, CraftResource.Veramide, typeof( VeramideIngot ), typeof( VeramideOre ), typeof( VeramideGranite ) ),
new CraftResourceInfo( 0x47F, 0, "Zenlamide", CraftAttributeInfo.Zenlamide, CraftResource.Zenlamide, typeof( ZenlamideIngot ), typeof( ZenlamideOre ), typeof( ZenlamideGranite ) ),
};

private static CraftResourceInfo[] m_ScaleInfo = new CraftResourceInfo[]
{
new CraftResourceInfo( 0x66D, 1053129, "Red Scales", CraftAttributeInfo.RedScales, CraftResource.RedScales, typeof( RedScales ) ),
new CraftResourceInfo( 0x8A8, 1053130, "Yellow Scales", CraftAttributeInfo.YellowScales, CraftResource.YellowScales, typeof( YellowScales ) ),
new CraftResourceInfo( 0x455, 1053131, "Black Scales", CraftAttributeInfo.BlackScales, CraftResource.BlackScales, typeof( BlackScales ) ),
new CraftResourceInfo( 0x851, 1053132, "Green Scales", CraftAttributeInfo.GreenScales, CraftResource.GreenScales, typeof( GreenScales ) ),
new CraftResourceInfo( 0x8FD, 1053133, "White Scales", CraftAttributeInfo.WhiteScales, CraftResource.WhiteScales, typeof( WhiteScales ) ),
new CraftResourceInfo( 0x8B0, 1053134, "Blue Scales", CraftAttributeInfo.BlueScales, CraftResource.BlueScales, typeof( BlueScales ) )
};

private static CraftResourceInfo[] m_LeatherInfo = new CraftResourceInfo[]
{
new CraftResourceInfo( 0x000, 1049353, "Normal", CraftAttributeInfo.Blank, CraftResource.RegularLeather, typeof( Leather ), typeof( Hides ) ),
new CraftResourceInfo( 0x283, 1049354, "Spined", CraftAttributeInfo.Spined, CraftResource.SpinedLeather, typeof( SpinedLeather ), typeof( SpinedHides ) ),
new CraftResourceInfo( 0x227, 1049355, "Horned", CraftAttributeInfo.Horned, CraftResource.HornedLeather, typeof( HornedLeather ), typeof( HornedHides ) ),
new CraftResourceInfo( 0x1C1, 1049356, "Barbed", CraftAttributeInfo.Barbed, CraftResource.BarbedLeather, typeof( BarbedLeather ), typeof( BarbedHides ) ),
new CraftResourceInfo( 0x667, 0, "Ribbed", CraftAttributeInfo.Ribbed, CraftResource.RibbedLeather, typeof( RibbedLeather ), typeof( RibbedHides ) ),
new CraftResourceInfo( 0x4F2, 0, "Dread", CraftAttributeInfo.Dread, CraftResource.DreadLeather, typeof( DreadLeather ), typeof( DreadHides ) ),
new CraftResourceInfo( 0x19F, 0, "Etheral", CraftAttributeInfo.Etheral, CraftResource.EtheralLeather, typeof( EtheralLeather ), typeof( EtheralHides ) )
};

private static CraftResourceInfo[] m_AOSLeatherInfo = new CraftResourceInfo[]
{
new CraftResourceInfo( 0x000, 1049353, "Normal", CraftAttributeInfo.Blank, CraftResource.RegularLeather, typeof( Leather ), typeof( Hides ) ),
new CraftResourceInfo( 0x8AC, 1049354, "Spined", CraftAttributeInfo.Spined, CraftResource.SpinedLeather, typeof( SpinedLeather ), typeof( SpinedHides ) ),
new CraftResourceInfo( 0x845, 1049355, "Horned", CraftAttributeInfo.Horned, CraftResource.HornedLeather, typeof( HornedLeather ), typeof( HornedHides ) ),
new CraftResourceInfo( 0x851, 1049356, "Barbed", CraftAttributeInfo.Barbed, CraftResource.BarbedLeather, typeof( BarbedLeather ), typeof( BarbedHides ) ),
new CraftResourceInfo( 0x667, 0, "Ribbed", CraftAttributeInfo.Ribbed, CraftResource.RibbedLeather, typeof( RibbedLeather ), typeof( RibbedHides ) ),
new CraftResourceInfo( 0x4F2, 0, "Dread", CraftAttributeInfo.Dread, CraftResource.DreadLeather, typeof( DreadLeather ), typeof( DreadHides ) ),
new CraftResourceInfo( 0x19F, 0, "Etheral", CraftAttributeInfo.Etheral, CraftResource.EtheralLeather, typeof( EtheralLeather ), typeof( EtheralHides ) )
};

private static CraftResourceInfo[] m_RegularLogInfo = new CraftResourceInfo[]
{
new CraftResourceInfo( 0x0, 0, "Ordinary Wood",CraftAttributeInfo.Blank, CraftResource.RegularLog, typeof( Log ), typeof ( Board) ),
new CraftResourceInfo( 0x5E6, 0, "Oak", CraftAttributeInf:confused:ak, CraftResource.Oak, typeof( OakLog ), typeof ( OakBoard ) ),
new CraftResourceInfo( 0x4A7, 0, "Ash", CraftAttributeInfo.Ash, CraftResource.Ash, typeof( AshLog ), typeof ( AshBoard ) ),
new CraftResourceInfo( 0x4A8, 0, "Yew", CraftAttributeInfo.Yew, CraftResource.Yew, typeof( YewLog ), typeof ( YewBoard ) ),
new CraftResourceInfo( 0x4A9, 0, "HeartWood", CraftAttributeInfo.HeartWood, CraftResource.HeartWood, typeof( HeartWoodLog ), typeof ( HeartWoodBoard ) ),
new CraftResourceInfo( 0x4AA, 0, "BloodWood", CraftAttributeInfo.BloodWood, CraftResource.BloodWood, typeof( BloodWoodLog ), typeof ( BloodWoodBoard ) ),
new CraftResourceInfo( 0x47F, 0, "FrostWood", CraftAttributeInfo.FrostWood, CraftResource.FrostWood, typeof( FrostWoodLog ), typeof ( FrostWoodBoard ) )
};

private static CraftResourceInfo[] m_RegularCrystalInfo = new CraftResourceInfo[]
{
new CraftResourceInfo( 0x15, 0, "Normal Crystal", CraftAttributeInfo.Blank, CraftResource.RegularCrystal, typeof( Crystal ) ),
new CraftResourceInfo( 0x58, 0, "Amazonite", CraftAttributeInfo.Amazonite, CraftResource.Amazonite, typeof( AmazoniteCrystal ) ),
new CraftResourceInfo( 0x30, 0, "Amber", CraftAttributeInfo.Amber, CraftResource.Amber, typeof( AmberCrystal ) ),
new CraftResourceInfo( 0x1F, 0, "Amethyst", CraftAttributeInfo.Amethyst, CraftResource.Amethyst, typeof( AmethystCrystal ) ),
new CraftResourceInfo( 0x54F, 0, "Aragonite", CraftAttributeInfo.Aragonite, CraftResource.Aragonite, typeof( AragoniteCrystal ) ),
new CraftResourceInfo( 0x1C, 0, "Bixbite", CraftAttributeInfo.Bixbite, CraftResource.Bixbite, typeof( BixbiteCrystal ) ),
new CraftResourceInfo( 0xF8, 0, "BloodStone", CraftAttributeInfo.BloodStone, CraftResource.BloodStone, typeof( BloodStoneCrystal ) ),
new CraftResourceInfo( 0x5E6, 0, "Calcite", CraftAttributeInfo.Calcite, CraftResource.Calcite, typeof( CalciteCrystal ) ),
new CraftResourceInfo( 0x94, 0, "GoldStone", CraftAttributeInfo.GoldStone, CraftResource.GoldStone, typeof( GoldStoneCrystal ) ),
new CraftResourceInfo( 0x4F1, 0, "Labradorite", CraftAttributeInfo.Labradorite, CraftResource.Labradorite, typeof( LabradoriteCrystal ) ),
new CraftResourceInfo( 0x41C, 0, "Moldavite", CraftAttributeInfo.Moldavite, CraftResource.Moldavite, typeof( MoldaviteCrystal ) ),
new CraftResourceInfo( 0x4F5, 0, "Morganite", CraftAttributeInfo.Morganite, CraftResource.Morganite, typeof( MorganiteCrystal ) ),
new CraftResourceInfo( 0x482, 0, "Quartz", CraftAttributeInfo.Quartz, CraftResource.Quartz, typeof( QuartzCrystal ) ),
new CraftResourceInfo( 0x653, 0, "Rhodonite", CraftAttributeInfo.Rhodonite, CraftResource.Rhodonite, typeof( RhodoniteCrystal ) ),
new CraftResourceInfo( 0x1C, 0, "Ruby", CraftAttributeInfo.Ruby, CraftResource.Ruby, typeof( RubyCrystal ) ),
new CraftResourceInfo( 0x4F1, 0, "Sapphire", CraftAttributeInfo.Sapphire, CraftResource.Sapphire, typeof( SapphireCrystal ) ),
new CraftResourceInfo( 0x4FC, 0, "Sugilite", CraftAttributeInfo.Sugilite, CraftResource.Sugilite, typeof( SugiliteCrystal ) ),
new CraftResourceInfo( 0x121, 0, "Tanzanite", CraftAttributeInfo.Tanzanite, CraftResource.Tanzanite, typeof( TanzaniteCrystal ) ),
new CraftResourceInfo( 0x59, 0, "Turquoise", CraftAttributeInfo.Turquoise, CraftResource.Turquoise, typeof( TurquoiseCrystal ) ),
new CraftResourceInfo( 0x45, 0, "Varisite", CraftAttributeInfo.Varisite, CraftResource.Varisite, typeof( VarisiteCrystal ) )
};

private static CraftResourceInfo[] m_RegularPowderInfo = new CraftResourceInfo[]
{
new CraftResourceInfo( 0x15, 0, "Normal Powder", CraftAttributeInfo.Blank, CraftResource.RegularPowder, typeof( Powder ) ),
new CraftResourceInfo( 0x763, 0, "Iron Powder", CraftAttributeInfo.IronPowder, CraftResource.IronPowder, typeof( IronPowder ) ),
new CraftResourceInfo( 0x973, 0, "Dull Copper Powder", CraftAttributeInfo.DullCopperPowder, CraftResource.DullCopperPowder, typeof( DullCopperPowder ) ),
new CraftResourceInfo( 0x966, 0, "Shadow Powder", CraftAttributeInfo.ShadowIronPowder, CraftResource.ShadowIronPowder, typeof( ShadowIronPowder ) ),
new CraftResourceInfo( 0x96D, 0, "Copper Powder", CraftAttributeInfo.CopperPowder, CraftResource.CopperPowder, typeof( CopperPowder ) ),
new CraftResourceInfo( 0x972, 0, "Bronze Powder", CraftAttributeInfo.BronzePowder, CraftResource.BronzePowder, typeof( BronzePowder ) ),
new CraftResourceInfo( 0x8A5, 0, "Gold Powder", CraftAttributeInfo.GoldPowder, CraftResource.GoldPowder, typeof( GoldPowder ) ),
new CraftResourceInfo( 0x835, 0, "Silver Powder", CraftAttributeInfo.SilverPowder, CraftResource.SilverPowder, typeof( SilverPowder ) ),
new CraftResourceInfo( 0x979, 0, "Agapite Powder", CraftAttributeInfo.AgapitePowder, CraftResource.AgapitePowder, typeof( AgapitePowder ) ),
new CraftResourceInfo( 0x89F, 0, "Verite Powder", CraftAttributeInfo.VeritePowder, CraftResource.VeritePowder, typeof( VeritePowder ) ),
new CraftResourceInfo( 0x8AB, 0, "Valorite Powder", CraftAttributeInfo.ValoritePowder, CraftResource.ValoritePowder, typeof( ValoritePowder ) ),
new CraftResourceInfo( 0x583, 0, "Uridium Powder", CraftAttributeInfo.UridiumPowder, CraftResource.UridiumPowder, typeof( UridiumPowder ) ),
new CraftResourceInfo( 0x91, 0, "Trillium Powder", CraftAttributeInfo.TrilliumPowder, CraftResource.TrilliumPowder, typeof( TrilliumPowder ) ),
new CraftResourceInfo( 0xBD, 0, "Titanium Powder", CraftAttributeInfo.TitaniumPowder, CraftResource.TitaniumPowder, typeof( TitaniumPowder ) ),
new CraftResourceInfo( 0x4D5, 0, "Platinum Powder", CraftAttributeInfo.PlatinumPowder, CraftResource.PlatinumPowder, typeof( PlatinumPowder ) ),
new CraftResourceInfo( 0xA4, 0, "Zenite Powder", CraftAttributeInfo.ZenitePowder, CraftResource.ZenitePowder, typeof( ZenitePowder ) ),
new CraftResourceInfo( 0x2DD, 0, "Naquinite Powder", CraftAttributeInfo.NaquinitePowder, CraftResource.NaquinitePowder, typeof( NaquinitePowder ) ),
new CraftResourceInfo( 0x849, 0, "Galvinite Powder", CraftAttributeInfo.GalvinitePowder, CraftResource.GalvinitePowder, typeof( GalvinitePowder ) ),
new CraftResourceInfo( 0x674, 0, "Trilamide Powder", CraftAttributeInfo.TrilamidePowder, CraftResource.TrilamidePowder, typeof( TrilamidePowder ) ),
new CraftResourceInfo( 0x11C, 0, "Veramide Powder", CraftAttributeInfo.VeramidePowder, CraftResource.VeramidePowder, typeof( VeramidePowder ) ),
new CraftResourceInfo( 0x47F, 0, "Zenlamide Powder", CraftAttributeInfo.ZenlamidePowder, CraftResource.ZenlamidePowder, typeof( ZenlamidePowder ) ),
new CraftResourceInfo( 0x45, 0, "Etheral Powder", CraftAttributeInfo.EtheralPowder, CraftResource.EtheralPowder, typeof( EtheralPowder ) )
};

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

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.Logs: list = m_RegularLogInfo; break;
case CraftResourceType.Crystals: list = m_RegularCrystalInfo; break;
case CraftResourceType.Powders: list = m_RegularPowderInfo; 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.Zenlamide)
return CraftResourceType.Metal;

if ( resource >= CraftResource.RegularLeather && resource <= CraftResource.EtheralLeather )
return CraftResourceType.Leather;

if ( resource >= CraftResource.RedScales && resource <= CraftResource.BlueScales )
return CraftResourceType.Scales;

if (resource >= CraftResource.RegularLog && resource <= CraftResource.FrostWood)
return CraftResourceType.Logs;

if (resource >= CraftResource.RegularCrystal && resource <= CraftResource.Varisite)
return CraftResourceType.Crystals;

if (resource >= CraftResource.RegularPowder && resource <= CraftResource.EtheralPowder)
return CraftResourceType.Powders;

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.Scales: return CraftResource.RedScales;
case CraftResourceType.Logs: return CraftResource.RegularLog;
case CraftResourceType.Crystals: return CraftResource.RegularCrystal;
case CraftResourceType.Powders: return CraftResource.RegularPowder;
}

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" ) >= 0 )
return CraftResource.SpinedLeather;
else if ( info.Name.IndexOf( "Horned" ) >= 0 )
return CraftResource.HornedLeather;
else if ( info.Name.IndexOf( "Barbed" ) >= 0 )
return CraftResource.BarbedLeather;
else if (info.Name.IndexOf( "Ribbed" ) >= 0)
return CraftResource.RibbedLeather;
else if (info.Name.IndexOf( "Dread" ) >= 0)
return CraftResource.DreadLeather;
else if (info.Name.IndexOf( "Etheral") >= 0)
return CraftResource.EtheralLeather;
else if ( info.Name.IndexOf( "Leather" ) >= 0 )
return CraftResource.RegularLeather;

// LOG DEFS
else if (info.Name.IndexOf("Oak") >= 0)
return CraftResource.Oak;
else if (info.Name.IndexOf("Ash") >= 0)
return CraftResource.Ash;
else if (info.Name.IndexOf("Yew") >= 0)
return CraftResource.Yew;
else if (info.Name.IndexOf("HeartWood") >= 0)
return CraftResource.HeartWood;
else if (info.Name.IndexOf("BloodWood") >= 0)
return CraftResource.BloodWood;
else if (info.Name.IndexOf("FrostWood") >= 0)
return CraftResource.FrostWood;

else if (info.Name.IndexOf("Logs") >= 0)
return CraftResource.RegularLog;

// CRYSTAL DEFS
else if (info.Name.IndexOf("Amazonite") >= 0)
return CraftResource.Amazonite;
else if (info.Name.IndexOf("Amber") >= 0)
return CraftResource.Amber;
else if (info.Name.IndexOf("Amethyst") >= 0)
return CraftResource.Amethyst;
else if (info.Name.IndexOf("Aragonite") >= 0)
return CraftResource.Aragonite;
else if (info.Name.IndexOf("Bixbite") >= 0)
return CraftResource.Bixbite;
else if (info.Name.IndexOf("BloodStone") >= 0)
return CraftResource.BloodStone;
else if (info.Name.IndexOf("Calcite") >= 0)
return CraftResource.Calcite;
else if (info.Name.IndexOf("GoldStone") >= 0)
return CraftResource.GoldStone;
else if (info.Name.IndexOf("Labradorite") >= 0)
return CraftResource.Labradorite;
else if (info.Name.IndexOf("Moldavite") >= 0)
return CraftResource.Moldavite;
else if (info.Name.IndexOf("Morganite") >= 0)
return CraftResource.Morganite;
else if (info.Name.IndexOf("Quartz") >= 0)
return CraftResource.Quartz;
else if (info.Name.IndexOf("Rhodonite") >= 0)
return CraftResource.Rhodonite;
else if (info.Name.IndexOf("Ruby") >= 0)
return CraftResource.Ruby;
else if (info.Name.IndexOf("Sapphire") >= 0)
return CraftResource.Sapphire;
else if (info.Name.IndexOf("Sugilite") >= 0)
return CraftResource.Sugilite;
else if (info.Name.IndexOf("Tanzanite") >= 0)
return CraftResource.Tanzanite;
else if (info.Name.IndexOf("Turquoise") >= 0)
return CraftResource.Turquoise;
else if (info.Name.IndexOf("Varisite") >= 0)
return CraftResource.Varisite;

else if (info.Name.IndexOf("Normal Crystal") >= 0)
return CraftResource.RegularCrystal;
// END

// POWDER DEF'S
else if (info.Name.IndexOf("Iron Powder") >= 0)
return CraftResource.IronPowder;
else if (info.Name.IndexOf("Dull Copper Powder") >= 0)
return CraftResource.DullCopperPowder;
else if (info.Name.IndexOf("Shadow Powder") >= 0)
return CraftResource.ShadowIronPowder;
else if (info.Name.IndexOf("Copper Powder") >= 0)
return CraftResource.CopperPowder;
else if (info.Name.IndexOf("Bronze Powder") >= 0)
return CraftResource.BronzePowder;
else if (info.Name.IndexOf("Gold Powder") >= 0)
return CraftResource.GoldPowder;
else if (info.Name.IndexOf("Silver Powder") >= 0)
return CraftResource.SilverPowder;
else if (info.Name.IndexOf("Agapite Powder") >= 0)
return CraftResource.AgapitePowder;
else if (info.Name.IndexOf("Verite Powder") >= 0)
return CraftResource.VeritePowder;
else if (info.Name.IndexOf("Valorite Powder") >= 0)
return CraftResource.ValoritePowder;
else if (info.Name.IndexOf("Uridium Powder") >= 0)
return CraftResource.UridiumPowder;
else if (info.Name.IndexOf("Trillium Powder") >= 0)
return CraftResource.TrilliumPowder;
else if (info.Name.IndexOf("Titanium Powder") >= 0)
return CraftResource.TitaniumPowder;
else if (info.Name.IndexOf("Platinum Powder") >= 0)
return CraftResource.PlatinumPowder;
else if (info.Name.IndexOf("Zenite Powder") >= 0)
return CraftResource.ZenitePowder;
else if (info.Name.IndexOf("Naquinite Powder") >= 0)
return CraftResource.NaquinitePowder;
else if (info.Name.IndexOf("Galvinite Powder") >= 0)
return CraftResource.GalvinitePowder;
else if (info.Name.IndexOf("Trilamide Powder") >= 0)
return CraftResource.TrilamidePowder;
else if (info.Name.IndexOf("Veramide Powder") >= 0)
return CraftResource.VeramidePowder;
else if (info.Name.IndexOf("Veramide Powder") >= 0)
return CraftResource.VeramidePowder;
else if (info.Name.IndexOf("Etheral Powder") >= 0)
return CraftResource.EtheralPowder;


else if (info.Name.IndexOf("Normal Powder") >= 0)
return CraftResource.RegularPowder;
// END

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.Silver;
else if (info.Level == 7)
return CraftResource.Agapite;
else if (info.Level == 8)
return CraftResource.Verite;
else if (info.Level == 9)
return CraftResource.Valorite;
else if (info.Level == 10)
return CraftResource.Uridium;
else if (info.Level == 11)
return CraftResource.Trillium;
else if (info.Level == 12)
return CraftResource.Titanium;
else if (info.Level == 13)
return CraftResource.Platinum;
else if (info.Level == 14)
return CraftResource.Zenite;
else if (info.Level == 15)
return CraftResource.Naquinite;
else if (info.Level == 16)
return CraftResource.Galvinite;
else if (info.Level == 17)
return CraftResource.Trilamide;
else if (info.Level == 18)
return CraftResource.Veramide;
else if (info.Level == 19)
return CraftResource.Zenlamide;

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 )
{
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.RibbedLeather;
else if ( info.Level == 5 )
return CraftResource.DreadLeather;
else if ( info.Level == 6 )
return CraftResource.EtheralLeather;


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, 0x973, "Dull Copper" );
public static readonly OreInfo ShadowIron = new OreInfo( 2, 0x966, "Shadow Iron" );
public static readonly OreInfo Copper = new OreInfo( 3, 0x96D, "Copper" );
public static readonly OreInfo Bronze = new OreInfo( 4, 0x972, "Bronze" );
public static readonly OreInfo Gold = new OreInfo( 5, 0x8A5, "Gold" );
public static readonly OreInfo Silver = new OreInfo( 6, 0x835, "Silver");
public static readonly OreInfo Agapite = new OreInfo( 7, 0x979, "Agapite" );
public static readonly OreInfo Verite = new OreInfo( 8, 0x89F, "Verite" );
public static readonly OreInfo Valorite = new OreInfo( 9, 0x8AB, "Valorite" );
public static readonly OreInfo Uridium = new OreInfo( 10, 0x583, "Uridium");
public static readonly OreInfo Trillium = new OreInfo( 11, 0x91, "Trillium");
public static readonly OreInfo Titanium = new OreInfo( 12, 0xBD, "Titanium");
public static readonly OreInfo Platinum = new OreInfo( 13, 0x4D5, "Platinum");
public static readonly OreInfo Zenite = new OreInfo( 14, 0xA4, "Zenite");
public static readonly OreInfo Naquinite = new OreInfo( 15, 0x2DD, "Naquinite");
public static readonly OreInfo Galvinite = new OreInfo( 16, 0x849, "Galvinite");
public static readonly OreInfo Trilamide = new OreInfo( 17, 0x674, "Trilamide");
public static readonly OreInfo Veramide = new OreInfo( 18, 0x11C, "Veramide");
public static readonly OreInfo Zenlamide = new OreInfo( 19, 0x47F, "Zenlamide");

public static readonly OreInfo RegularLog = new OreInfo( 301, 0x000, "Ordinary Wood");
public static readonly OreInfo Oak = new OreInfo( 302, 0x4A6, "Oak");
public static readonly OreInfo Ash = new OreInfo( 303, 0x4A7, "Ash");
public static readonly OreInfo Yew = new OreInfo( 304, 0x4A8, "Yew");
public static readonly OreInfo HeartWood = new OreInfo( 305, 0x4A9, "HeartWood");
public static readonly OreInfo BloodWood = new OreInfo( 306, 0x4AA, "BloodWood");
public static readonly OreInfo FrostWood = new OreInfo( 307, 0x4AB, "FrostWood");

public static readonly OreInfo RegularCrystal = new OreInfo(401, 0x000, "Normal Crystal");
public static readonly OreInfo Amazonite = new OreInfo(402, 0x4AB, "Amazonite");
public static readonly OreInfo Amber = new OreInfo(403, 0x4AB, "Amber");
public static readonly OreInfo Amethyst = new OreInfo(404, 0x4AB, "Amethyst");
public static readonly OreInfo Aragonite = new OreInfo(405, 0x4AB, "Aragonite");
public static readonly OreInfo Bixbite = new OreInfo(406, 0x4AB, "Bixbite");
public static readonly OreInfo BloodStone = new OreInfo(407, 0x4AB, "BloodStone");
public static readonly OreInfo Calcite = new OreInfo(408, 0x4AB, "Calcite");
public static readonly OreInfo GoldStone = new OreInfo(409, 0x4AB, "GoldStone");
public static readonly OreInfo Labradorite = new OreInfo(410, 0x4AB, "Labradorite");
public static readonly OreInfo Moldavite = new OreInfo(411, 0x4AB, "Moldavite");
public static readonly OreInfo Morganite = new OreInfo(412, 0x4AB, "Morganite");
public static readonly OreInfo Quartz = new OreInfo(413, 0x4AB, "Quartz");
public static readonly OreInfo Rhodonite = new OreInfo(414, 0x4AB, "Rhodonite");
public static readonly OreInfo Ruby = new OreInfo(415, 0x4AB, "Ruby");
public static readonly OreInfo Sapphire = new OreInfo(416, 0x4AB, "Sapphire");
public static readonly OreInfo Sugilite = new OreInfo(417, 0x4AB, "Sugilite");
public static readonly OreInfo Tanzanite = new OreInfo(418, 0x4AB, "Tanzanite");
public static readonly OreInfo Turquoise = new OreInfo(419, 0x4AB, "Turquoise");
public static readonly OreInfo Varisite = new OreInfo(420, 0x4AB, "Varisite");

public static readonly OreInfo RegularPowder = new OreInfo(501, 0x4AB, "Normal Powder");
public static readonly OreInfo IronPowder = new OreInfo(502, 0x000, "Iron Powder");
public static readonly OreInfo DullCopperPowder = new OreInfo(503, 0x973, "Dull Copper Powder");
public static readonly OreInfo ShadowIronPowder = new OreInfo(504, 0x966, "Shadow Powder");
public static readonly OreInfo CopperPowder = new OreInfo(505, 0x96D, "Copper Powder");
public static readonly OreInfo BronzePowder = new OreInfo(506, 0x972, "Bronze Powder");
public static readonly OreInfo GoldPowder = new OreInfo(507, 0x8A5, "Gold Powder");
public static readonly OreInfo SilverPowder = new OreInfo(508, 0x835, "Silver Powder");
public static readonly OreInfo AgapitePowder = new OreInfo(509, 0x979, "Agapite Powder");
public static readonly OreInfo VeritePowder = new OreInfo(510, 0x89F, "Verite Powder");
public static readonly OreInfo ValoritePowder = new OreInfo(511, 0x8AB, "Valorite Powder");
public static readonly OreInfo UridiumPowder = new OreInfo(512, 0x583, "Uridium Powder");
public static readonly OreInfo TrilliumPowder = new OreInfo(513, 0x91, "Trillium Powder");
public static readonly OreInfo TitaniumPowder = new OreInfo(514, 0xBD, "Titanium Powder");
public static readonly OreInfo PlatinumPowder = new OreInfo(515, 0x4D5, "Platinum Powder");
public static readonly OreInfo ZenitePowder = new OreInfo(516, 0xA4, "Zenite Powder");
public static readonly OreInfo NaquinitePowder = new OreInfo(517, 0x2DD, "Naquinite Powder");
public static readonly OreInfo GalvinitePowder = new OreInfo(518, 0x849, "Galvinite Powder");
public static readonly OreInfo TrilamidePowder = new OreInfo(519, 0x674, "Trilamide Powder");
public static readonly OreInfo VeramidePowder = new OreInfo(520, 0x11C, "Veramide Powder");
public static readonly OreInfo ZenlamidePowder = new OreInfo(521, 0x47F, "Zenlamide Powder");
public static readonly OreInfo EtheralPowder = new OreInfo(522, 0x4AB, "Etheral Powder");


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

mohapx

Sorceror
I'm sorry.
Here, there is another who has been in RunUP-Rc2/docs/types/
That is what is written there :
OreInfo
(ctor) OreInfo( int level, int hue, string name )
int Hue( get; )
int Level( get; )
string Name( get; )
 

Hammerhand

Knight
My mistake. Pain killers, bruised ribs and no sleep arent a good combo. :( Thats the problem then. This is for RC1 and you're using it on an RC2. Thats where the double instances must be coming from. The OreInfo.cs is for RC1 so it would be trying to read from both.
 

Hammerhand

Knight
This is from the 1st page of the thread.. maybe it will help.
IMPORTANT CHANGE... If you have the ResourceInfo.cs file in your script files (the newer version of OreInfo.cs) you should be able to remove the ResourceInfo.cs and just use the OreInfo.cs with this release, i've gone over the new file and it looks pretty much the same file with only a name change.
 

FingersMcSteal

Sorceror
Been awhile, anyway...

Guessing from your server build number you have RC2 running there which if i remember uses the ResourceInfo.cs and NOT the OreInfo.cs.

I'd guess your having the same problem as a few posts above... your mixing the versions.

RunUO changed some of the resource defininitions a few SVN's back prior to SVN 300 i think, that caused alot of the older version to fail.

All i can suggest is remove all the associated files this release uses and try one or the other of the versions again, if his script directory's are organised it should be easy to try. I'll have a quick look tho and see what i can find out.
 

Stuart lil

Sorceror
Buggering erroring =P

After merging/replacing all the files included that needed so i end up with these two errors alone.. anyone got any idea ?

Code:
Errors:
 + Mobiles/Vendors/NPC/Blacksmith.cs:
    CS0115: Line 125: 'Server.Mobiles.Blacksmith.OnSuccessfulBulkOrderRecieve(Se
rver.Mobile)': no suitable method found to override
 + Mobiles/Vendors/NPC/Tailor.cs:
    CS0115: Line 74: 'Server.Mobiles.Tailor.OnSuccessfulBulkOrderRecieve(Server.
Mobile)': no suitable method found to override
And presenting the scripts :

Code:
using System;
using System.Collections;
using Server;
using Server.Engines.BulkOrders;

namespace Server.Mobiles
{
	public class Blacksmith : BaseVendor
	{
		private ArrayList m_SBInfos = new ArrayList();
		protected override ArrayList SBInfos{ get { return m_SBInfos; } }

		public override NpcGuild NpcGuild{ get{ return NpcGuild.BlacksmithsGuild; } }

		[Constructable]
		public Blacksmith() : base( "the blacksmith" )
		{
			SetSkill( SkillName.ArmsLore, 36.0, 68.0 );
			SetSkill( SkillName.Blacksmith, 65.0, 88.0 );
			SetSkill( SkillName.Fencing, 60.0, 83.0 );
			SetSkill( SkillName.Macing, 61.0, 93.0 );
			SetSkill( SkillName.Swords, 60.0, 83.0 );
			SetSkill( SkillName.Tactics, 60.0, 83.0 );
			SetSkill( SkillName.Parry, 61.0, 93.0 );
		}

		public override void InitSBInfo()
		{
			/*m_SBInfos.Add( new SBSmithTools() );

			m_SBInfos.Add( new SBMetalShields() );
			m_SBInfos.Add( new SBWoodenShields() );

			m_SBInfos.Add( new SBPlateArmor() );

			m_SBInfos.Add( new SBHelmetArmor() );
			m_SBInfos.Add( new SBChainmailArmor() );
			m_SBInfos.Add( new SBRingmailArmor() );
			m_SBInfos.Add( new SBAxeWeapon() );
			m_SBInfos.Add( new SBPoleArmWeapon() );
			m_SBInfos.Add( new SBRangedWeapon() );

			m_SBInfos.Add( new SBKnifeWeapon() );
			m_SBInfos.Add( new SBMaceWeapon() );
			m_SBInfos.Add( new SBSpearForkWeapon() );
			m_SBInfos.Add( new SBSwordWeapon() );*/
			
			m_SBInfos.Add( new SBBlacksmith() );
			if ( IsTokunoVendor )
			{
				m_SBInfos.Add( new SBSEArmor() );	
				m_SBInfos.Add( new SBSEWeapons() );
			}


		}

		public override VendorShoeType ShoeType
		{
			get{ return VendorShoeType.None; }
		}

		public override void InitOutfit()
		{
			base.InitOutfit();

			Item item = ( Utility.RandomBool() ? null : new Server.Items.RingmailChest() );

			if ( item != null && !EquipItem( item ) )
			{
				item.Delete();
				item = null;
			}

			if ( item == null )
				AddItem( new Server.Items.FullApron() );

			AddItem( new Server.Items.Bascinet() );
			AddItem( new Server.Items.SmithHammer() );
		}

		#region Bulk Orders
		public override Item CreateBulkOrder( Mobile from, bool fromContextMenu )
		{
			PlayerMobile pm = from as PlayerMobile;

			if ( pm != null && pm.NextSmithBulkOrder == TimeSpan.Zero && (fromContextMenu || 0.2 > Utility.RandomDouble()) )
			{
				double theirSkill = pm.Skills[SkillName.Blacksmith].Base;

				if ( theirSkill >= 70.1 )
					pm.NextSmithBulkOrder = TimeSpan.FromMinutes ( 15.0 );
				else if ( theirSkill >= 50.1 )
					pm.NextSmithBulkOrder = TimeSpan.FromMinutes ( 10.0 );
				else
					pm.NextSmithBulkOrder = TimeSpan.FromMinutes ( 5.0 );

				if ( theirSkill >= 70.1 && ((theirSkill - 40.0) / 300.0) > Utility.RandomDouble() )
					return new LargeSmithBOD();

				return SmallSmithBOD.CreateRandomFor( from );
			}

			return null;
		}

		public override bool IsValidBulkOrder( Item item )
		{
			return ( item is SmallSmithBOD || item is LargeSmithBOD );
		}

		public override bool SupportsBulkOrders( Mobile from )
		{
			return ( from is PlayerMobile && from.Skills[SkillName.Blacksmith].Base > 0 );
		}

		public override TimeSpan GetNextBulkOrder( Mobile from )
		{
			if ( from is PlayerMobile )
				return ((PlayerMobile)from).NextSmithBulkOrder;

			return TimeSpan.Zero;
		}

		public override void OnSuccessfulBulkOrderRecieve( Mobile from )
		{
			if( Core.SE && from is PlayerMobile )
				((PlayerMobile)from).NextSmithBulkOrder = TimeSpan.Zero;
		}
		#endregion

		public Blacksmith( Serial serial ) : base( serial )
		{
		}

		public override void Serialize( GenericWriter writer )
		{
			base.Serialize( writer );

			writer.Write( (int) 0 ); // version
		}

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

			int version = reader.ReadInt();
		}
	}
}

Code:
using System;
using System.Collections;
using Server;
using Server.Engines.BulkOrders;

namespace Server.Mobiles
{
	public class Tailor : BaseVendor
	{
		private ArrayList m_SBInfos = new ArrayList();
		protected override ArrayList SBInfos{ get { return m_SBInfos; } }

		public override NpcGuild NpcGuild{ get{ return NpcGuild.TailorsGuild; } }

		[Constructable]
		public Tailor() : base( "the tailor" )
		{
			SetSkill( SkillName.Tailoring, 64.0, 100.0 );
		}

		public override void InitSBInfo()
		{
			m_SBInfos.Add( new SBTailor() );
		}

		public override VendorShoeType ShoeType
		{
			get{ return Utility.RandomBool() ? VendorShoeType.Sandals : VendorShoeType.Shoes; }
		}

		#region Bulk Orders
		public override Item CreateBulkOrder( Mobile from, bool fromContextMenu )
		{
			PlayerMobile pm = from as PlayerMobile;

			if ( pm != null && pm.NextTailorBulkOrder == TimeSpan.Zero && (fromContextMenu || 0.2 > Utility.RandomDouble()) )
			{
				double theirSkill = pm.Skills[SkillName.Tailoring].Base;

				if ( theirSkill >= 70.1 )
					pm.NextTailorBulkOrder = TimeSpan.FromMinutes ( 15.0 );
				else if ( theirSkill >= 50.1 )
					pm.NextTailorBulkOrder = TimeSpan.FromMinutes ( 10.0 );
				else
					pm.NextTailorBulkOrder = TimeSpan.FromMinutes ( 5.0 );

				if ( theirSkill >= 70.1 && ((theirSkill - 40.0) / 300.0) > Utility.RandomDouble() )
					return new LargeTailorBOD();

				return SmallTailorBOD.CreateRandomFor( from );
			}

			return null;
		}

		public override bool IsValidBulkOrder( Item item )
		{
			return ( item is SmallTailorBOD || item is LargeTailorBOD );
		}

		public override bool SupportsBulkOrders( Mobile from )
		{
			return ( from is PlayerMobile && from.Skills[SkillName.Tailoring].Base > 0 );
		}

		public override TimeSpan GetNextBulkOrder( Mobile from )
		{
			if ( from is PlayerMobile )
				return ((PlayerMobile)from).NextTailorBulkOrder;

			return TimeSpan.Zero;
		}

		public override void OnSuccessfulBulkOrderRecieve( Mobile from )
		{
			if( Core.SE && from is PlayerMobile )
				((PlayerMobile)from).NextTailorBulkOrder = TimeSpan.Zero;
		}
		#endregion

		public Tailor( Serial serial ) : base( serial )
		{
		}

		public override void Serialize( GenericWriter writer )
		{
			base.Serialize( writer );

			writer.Write( (int) 0 ); // version
		}

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

			int version = reader.ReadInt();
		}
	}
}

I use a fresh install of RunUo 2.0 RC2, and i downloaded the 12th version of this system.

Any help is appreciated.. // Stu the Swed
 
Top