Files
abysmal-isle/Scripts/Mobiles/NPCs/Mannequin/Property/ResistProperty.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

174 lines
6.8 KiB
C#

using System;
using Server;
using Server.Items;
using System.Collections.Generic;
namespace Server.Mobiles.MannequinProperty
{
public abstract class ResistAttr : ValuedProperty
{
public override Catalog Catalog { get { return Catalog.Resistances; } }
public override bool AlwaysVisible { get { return true; } }
public abstract ResistanceType Resist { get; }
public override int Hue { get { return 0x42FF; } }
public override int Cap { get { return 70; } }
public double GetPropertyValue(Item item)
{
return GetBaseResistBonus(item, Resist);
}
public override bool Matches(Item item)
{
Value = GetPropertyValue(item);
if (Value != 0)
{
return true;
}
return false;
}
public override bool Matches(List<Item> items)
{
double total = 0;
items.ForEach(x => total += GetPropertyValue(x));
Value = total;
if (Value != 0)
{
return true;
}
return false;
}
public int GetBaseResistBonus(Item item, ResistanceType resist)
{
switch (resist)
{
case ResistanceType.Physical:
{
if (item is BaseWeapon)
return ((BaseWeapon)item).PhysicalResistance;
if (item is BaseArmor)
return ((BaseArmor)item).PhysicalResistance;
if (item is BaseClothing)
return ((BaseClothing)item).PhysicalResistance;
break;
}
case ResistanceType.Fire:
{
if (item is BaseWeapon)
return ((BaseWeapon)item).FireResistance;
if (item is BaseArmor)
return ((BaseArmor)item).FireResistance;
if (item is BaseClothing)
return ((BaseClothing)item).FireResistance;
break;
}
case ResistanceType.Cold:
{
if (item is BaseWeapon)
return ((BaseWeapon)item).ColdResistance;
if (item is BaseArmor)
return ((BaseArmor)item).ColdResistance;
if (item is BaseClothing)
return ((BaseClothing)item).ColdResistance;
break;
}
case ResistanceType.Poison:
{
if (item is BaseWeapon)
return ((BaseWeapon)item).PoisonResistance;
if (item is BaseArmor)
return ((BaseArmor)item).PoisonResistance;
if (item is BaseClothing)
return ((BaseClothing)item).PoisonResistance;
break;
}
case ResistanceType.Energy:
{
if (item is BaseWeapon)
return ((BaseWeapon)item).EnergyResistance;
if (item is BaseArmor)
return ((BaseArmor)item).EnergyResistance;
if (item is BaseClothing)
return ((BaseClothing)item).EnergyResistance;
break;
}
}
return 0;
}
}
public class PhysicalResistProperty : ResistAttr
{
public override int Order { get { return 1; } }
public override int LabelNumber { get { return 1079764; } } // Physical Resist
public override ResistanceType Resist { get { return ResistanceType.Physical; } }
public override int Description { get { return 1115226; } } // This property reduces the damage taken from attacks that cause physical damage. This property can be found on all armor, shields, accessories or weapons.
public override int SpriteW { get { return 30; } }
public override int SpriteH { get { return 30; } }
}
public class FireResistProperty : ResistAttr
{
public override int Order { get { return 2; } }
public override int LabelNumber { get { return 1079763; } } // Fire Resist
public override ResistanceType Resist { get { return ResistanceType.Fire; } }
public override int Description { get { return 1115227; } } // This property reduces the damage taken from attacks that cause fire damage. This property can be found on all armor, shields, accessories or weapons.
public override int SpriteW { get { return 150; } }
public override int SpriteH { get { return 0; } }
}
public class ColdResistProperty : ResistAttr
{
public override int Order { get { return 3; } }
public override int LabelNumber { get { return 1079761; } } // Cold Resist
public override ResistanceType Resist { get { return ResistanceType.Cold; } }
public override int Description { get { return 1115228; } } // This property reduces the damage taken from attacks that cause cold damage. This property can be found on all armor, shields, accessories or weapons.
public override int SpriteW { get { return 0; } }
public override int SpriteH { get { return 0; } }
}
public class PoisonResistProperty : ResistAttr
{
public override int Order { get { return 4; } }
public override int LabelNumber { get { return 1079765; } } // Poison Resist
public override ResistanceType Resist { get { return ResistanceType.Poison; } }
public override int Description { get { return 1115229; } } // This property reduces the damage taken from attacks that cause poison damage. This property can be found on all armor, shields, accessories or weapons.
public override int SpriteW { get { return 60; } }
public override int SpriteH { get { return 30; } }
}
public class EnergyResistProperty : ResistAttr
{
public override int Order { get { return 5; } }
public override int LabelNumber { get { return 1079762; } } // Energy Resist
public override ResistanceType Resist { get { return ResistanceType.Energy; } }
public override int Description { get { return 1115230; } } // This property reduces the damage taken from attacks that cause energy damage. This property can be found on all armor, shields, accessories or weapons.
public override int SpriteW { get { return 120; } }
public override int SpriteH { get { return 0; } }
}
}