Skip to content

Commit

Permalink
Defer armor calcs to CE_Utility
Browse files Browse the repository at this point in the history
  • Loading branch information
perkinslr committed Sep 22, 2024
1 parent f54434f commit 5fe2aca
Showing 1 changed file with 6 additions and 21 deletions.
27 changes: 6 additions & 21 deletions Source/CombatExtended/CombatExtended/Loadouts/ITab_Inventory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -516,35 +516,20 @@ public void DrawThingRowCE(ref float y, float width, Thing thing, bool showDropB
private void RebuildArmorCache(Dictionary<BodyPartRecord, float> armorCache, StatDef stat)
{
armorCache.Clear();
float naturalArmor = SelPawnForGear.GetStatValue(stat);
List<Apparel> wornApparel = SelPawnForGear.apparel?.WornApparel;
var shield = wornApparel.FirstOrDefault(x => x is Apparel_Shield);
foreach (BodyPartRecord part in SelPawnForGear.RaceProps.body.AllParts)
{
//TODO: 1.5 should be Neck
if (part.depth == BodyPartDepth.Outside && (part.coverage >= 0.1 || (part.def == CE_BodyPartDefOf.Neck || part.def == CE_BodyPartDefOf.Neck)))
var armorValue = SelPawnForGear.PartialStat(stat, part);
if (shield != null)
{
float armorValue = part.IsInGroup(CE_BodyPartGroupDefOf.CoveredByNaturalArmor) ? naturalArmor : 0f;
if (wornApparel != null)
var shieldCoverage = shield.def?.GetModExtension<ShieldDefExtension>()?.PartIsCoveredByShield(part, SelPawnForGear);
if (shieldCoverage == true)
{
foreach (var apparel in wornApparel)
{
if (apparel.def.apparel.CoversBodyPart(part))
{
armorValue += apparel.PartialStat(stat, part);
}
}
}
if (shield != null)
{
var shieldCoverage = shield.def?.GetModExtension<ShieldDefExtension>()?.PartIsCoveredByShield(part, SelPawnForGear);
if (shieldCoverage == true)
{
armorValue += shield.GetStatValue(stat);
}
armorValue += shield.GetStatValue(stat);
}
armorCache[part] = armorValue;
}
armorCache[part] = armorValue;
}
}

Expand Down

0 comments on commit 5fe2aca

Please sign in to comment.