public static int NewBoots(CLRScriptBase script, int maxValue)
{
List<int> potentialAbilities = new List<int>();
foreach (KeyValuePair<int, int> ability in AvailableAbilities)
{
if (ability.Value <= maxValue)
{
potentialAbilities.Add(ability.Key);
}
}
if (potentialAbilities.Count == 0)
{
return 0;
}
int selectedAbility = potentialAbilities[Generation.rand.Next(potentialAbilities.Count)];
uint Boots = script.CreateItemOnObject("zitem_boot2", script.OBJECT_SELF, 1, "", FALSE);
switch (selectedAbility)
{
#region Boots of Ability Boosts
case ITEM_PROPERTY_ABILITY_BONUS:
{
int abilityScore = AvailableAbilityScores[Generation.rand.Next(AvailableAbilityScores.Count)];
string name = AbilityScoreNames[abilityScore];
if (maxValue >= 36000)
{
script.AddItemProperty(DURATION_TYPE_PERMANENT, script.ItemPropertyAbilityBonus(abilityScore, 6), Boots, 0.0f);
script.SetFirstName(Boots, name + " +6");
Pricing.CalculatePrice(script, Boots);
return 36000;
}
else if (maxValue >= 25000)
{
script.AddItemProperty(DURATION_TYPE_PERMANENT, script.ItemPropertyAbilityBonus(abilityScore, 5), Boots, 0.0f);
script.SetFirstName(Boots, name + " +5");
Pricing.CalculatePrice(script, Boots);
return 25000;
}
else if (maxValue >= 16000)
{
script.AddItemProperty(DURATION_TYPE_PERMANENT, script.ItemPropertyAbilityBonus(abilityScore, 4), Boots, 0.0f);
script.SetFirstName(Boots, name + " +4");
Pricing.CalculatePrice(script, Boots);
return 16000;
}
else if (maxValue >= 9000)
{
script.AddItemProperty(DURATION_TYPE_PERMANENT, script.ItemPropertyAbilityBonus(abilityScore, 3), Boots, 0.0f);
script.SetFirstName(Boots, name + " +3");
Pricing.CalculatePrice(script, Boots);
return 9000;
}
else if (maxValue >= 4000)
{
script.AddItemProperty(DURATION_TYPE_PERMANENT, script.ItemPropertyAbilityBonus(abilityScore, 2), Boots, 0.0f);
script.SetFirstName(Boots, name + " +2");
Pricing.CalculatePrice(script, Boots);
return 4000;
}
else if (maxValue >= 1000)
{
script.AddItemProperty(DURATION_TYPE_PERMANENT, script.ItemPropertyAbilityBonus(abilityScore, 1), Boots, 0.0f);
script.SetFirstName(Boots, name + " +1");
Pricing.CalculatePrice(script, Boots);
return 1000;
}
else
{
return 0;
}
}
#endregion
#region Freedom of Movement
case ITEM_PROPERTY_FREEDOM_OF_MOVEMENT:
{
script.AddItemProperty(DURATION_TYPE_PERMANENT, script.ItemPropertyFreeAction(), Boots, 0.0f);
script.SetFirstName(Boots, "Boots of Freedom");
Pricing.CalculatePrice(script, Boots);
return 40000;
}
#endregion
#region Immunities
case ITEM_PROPERTY_IMMUNITY_MISCELLANEOUS:
{
List<int> possibleImmunities = new List<int>();
foreach (KeyValuePair<int, int> immunity in AvailableImmunities)
{
if (immunity.Value <= maxValue)
{
possibleImmunities.Add(immunity.Key);
}
}
if (possibleImmunities.Count == 0)
{
return 0;
}
int selectedImmunity = possibleImmunities[Generation.rand.Next(possibleImmunities.Count)];
script.AddItemProperty(DURATION_TYPE_PERMANENT, script.ItemPropertyImmunityMisc(selectedImmunity), Boots, 0.0f);
script.SetFirstName(Boots, ImmunityNames[selectedImmunity]);
Pricing.CalculatePrice(script, Boots);
return AvailableImmunities[selectedImmunity];
}
#endregion
#region Skill Bonus
case ITEM_PROPERTY_SKILL_BONUS:
{
int skillBonus = AvailableSkills[Generation.rand.Next(AvailableSkills.Count)];
script.SetFirstName(Boots, SkillNames[skillBonus]);
if (maxValue >= 10000)
{
script.AddItemProperty(DURATION_TYPE_PERMANENT, script.ItemPropertySkillBonus(skillBonus, 10), Boots, 0.0f);
script.SetFirstName(Boots, script.GetName(Boots) + " +10");
Pricing.CalculatePrice(script, Boots);
return 10000;
}
else if (maxValue >= 8100)
{
script.AddItemProperty(DURATION_TYPE_PERMANENT, script.ItemPropertySkillBonus(skillBonus, 9), Boots, 0.0f);
script.SetFirstName(Boots, script.GetName(Boots) + " +9");
Pricing.CalculatePrice(script, Boots);
return 8100;
}
else if (maxValue >= 6400)
{
script.AddItemProperty(DURATION_TYPE_PERMANENT, script.ItemPropertySkillBonus(skillBonus, 8), Boots, 0.0f);
script.SetFirstName(Boots, script.GetName(Boots) + " +8");
Pricing.CalculatePrice(script, Boots);
return 6400;
}
else if (maxValue >= 4900)
{
script.AddItemProperty(DURATION_TYPE_PERMANENT, script.ItemPropertySkillBonus(skillBonus, 7), Boots, 0.0f);
script.SetFirstName(Boots, script.GetName(Boots) + " +7");
Pricing.CalculatePrice(script, Boots);
return 4900;
}
else if (maxValue >= 3600)
{
script.AddItemProperty(DURATION_TYPE_PERMANENT, script.ItemPropertySkillBonus(skillBonus, 6), Boots, 0.0f);
script.SetFirstName(Boots, script.GetName(Boots) + " +6");
Pricing.CalculatePrice(script, Boots);
return 3600;
}
else if (maxValue >= 2500)
{
script.AddItemProperty(DURATION_TYPE_PERMANENT, script.ItemPropertySkillBonus(skillBonus, 5), Boots, 0.0f);
script.SetFirstName(Boots, script.GetName(Boots) + " +5");
Pricing.CalculatePrice(script, Boots);
return 2500;
}
else if (maxValue >= 1600)
{
script.AddItemProperty(DURATION_TYPE_PERMANENT, script.ItemPropertySkillBonus(skillBonus, 4), Boots, 0.0f);
script.SetFirstName(Boots, script.GetName(Boots) + " +4");
Pricing.CalculatePrice(script, Boots);
return 1600;
}
else if (maxValue >= 900)
{
script.AddItemProperty(DURATION_TYPE_PERMANENT, script.ItemPropertySkillBonus(skillBonus, 3), Boots, 0.0f);
script.SetFirstName(Boots, script.GetName(Boots) + " +3");
Pricing.CalculatePrice(script, Boots);
return 900;
}
else if (maxValue >= 400)
{
script.AddItemProperty(DURATION_TYPE_PERMANENT, script.ItemPropertySkillBonus(skillBonus, 2), Boots, 0.0f);
script.SetFirstName(Boots, script.GetName(Boots) + " +2");
Pricing.CalculatePrice(script, Boots);
return 400;
}
else if (maxValue >= 100)
{
script.AddItemProperty(DURATION_TYPE_PERMANENT, script.ItemPropertySkillBonus(skillBonus, 1), Boots, 0.0f);
script.SetFirstName(Boots, script.GetName(Boots) + " +1");
Pricing.CalculatePrice(script, Boots);
return 100;
}
else
{
return 0;
}
}
#endregion
}
script.DestroyObject(Boots, 0.0f, FALSE);
return 0;
}