IArmored - SmArtKar/AthenaFramework GitHub Wiki
IArmored
interface can be implemented on pawn, hediff and apparel comps. It's called in GetPostArmorDamage
every time an armor calculation is required. armorStat
is the relevant damage stat and metalArmor
determines the VFX that are emitted upon partial/full damage mitigation
public interface IArmored
{
// Return False to halt the armor calculations
public abstract bool PreProcessArmor(ref float amount, float armorPenetration, StatDef stat, ref float armorRating, BodyPartRecord part, ref DamageDef damageDef, Pawn pawn, ref bool metalArmor, DamageDef originalDamageDef, float originalAmount);
public abstract void PostProcessArmor(ref float amount, float armorPenetration, StatDef stat, ref float armorRating, BodyPartRecord part, ref DamageDef damageDef, Pawn pawn, ref bool metalArmor, DamageDef originalDamageDef, float originalAmount);
public abstract bool CoversBodypart(ref float amount, float armorPenetration, StatDef stat, ref float armorRating, BodyPartRecord part, ref DamageDef damageDef, Pawn pawn, bool defaultCovered, out bool forceCover, out bool forceUncover);
// Must be added to AthenaCache.armorCache to work
// AthenaCache.AddCache(this, AthenaCache.armorCache, pawn.thingIDNumber)
}