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