public Item(GS.Map.World world, ItemTable definition)
: base(world, definition.SNOActor)
{
SetInitialValues(definition);
this.ItemHasChanges = true;//initial, this is set to true.
// level requirement
// Attributes[GameAttribute.Requirement, 38] = definition.RequiredLevel;
Attributes[GameAttribute.Item_Quality_Level] = 1;
if (Item.IsArmor(this.ItemType) || Item.IsWeapon(this.ItemType) || Item.IsOffhand(this.ItemType))
{
Attributes[GameAttribute.Item_Quality_Level] = RandomHelper.Next(6);
}
if (this.ItemType.Flags.HasFlag(ItemFlags.AtLeastMagical) && Attributes[GameAttribute.Item_Quality_Level] < 3)
{
Attributes[GameAttribute.Item_Quality_Level] = 3;
}
Attributes[GameAttribute.ItemStackQuantityLo] = 1;
Attributes[GameAttribute.Seed] = RandomHelper.Next(); //unchecked((int)2286800181);
RandomGenerator = new ItemRandomHelper(Attributes[GameAttribute.Seed]);
RandomGenerator.Next();
if (Item.IsArmor(this.ItemType))
{
RandomGenerator.Next(); // next value is used but unknown if armor
}
RandomGenerator.ReinitSeed();
ApplyWeaponSpecificOptions(definition);
ApplyArmorSpecificOptions(definition);
ApplyDurability(definition);
ApplySkills(definition);
ApplyAttributeSpecifier(definition);
int affixNumber = 1;
if (Attributes[GameAttribute.Item_Quality_Level] >= 3)
{
affixNumber = Attributes[GameAttribute.Item_Quality_Level] - 2;
}
AffixGenerator.Generate(this, affixNumber);
}