I've been trying to overhaul Fists of Steel by adding a script to the player which checks if the player has the perk, what weight class gauntlets they are wearing, and then calculates what the gauntlets armor rating is (so I can turn that into damage). The only problem right now is that no matter what the player's Heavy Armor (or Light Armor) is, the calculated armor rating stays the same.
For example, Daedric Gauntlets are at 20 armor when you have 15 Heavy Armor, no perks. They go up to 26 armor if you have 100 Heavy armor, no perks. My script only ever returns 20, never anything else. I'm a newbie, and this is my first script, any help would be appreciated!
Scriptname PACFistsOfSteel extends ActorPerk Property FistsOfSteel AutoPerk Property WellFitted AutoPerk Property MatchingSetHeavy AutoPerk Property Juggernaut80 AutoPerk Property Juggernaut60 AutoPerk Property Juggernaut40 AutoPerk Property Juggernaut20 AutoPerk Property Juggernaut00 AutoPerk Property CustomFit AutoPerk Property MatchingSetLight AutoPerk Property AgileDefender80 AutoPerk Property AgileDefender60 AutoPerk Property AgileDefender40 AutoPerk Property AgileDefender20 AutoPerk Property AgileDefender00 AutoInt BonusClassFloat ArmorSkillHeavyFloat PercentArmorSkillHeavyFloat ActualArmorSkillHeavyFloat GauntletsArmorHeavyFloat UnisonHeavyFloat MatchingHeavyFloat HeavySetFloat HeavySetBonusFloat ArmorPerkHeavyFloat BonusHeavyFloat NegativeHeavyFloat ArmorSkillLightFloat PercentArmorSkillLightFloat ActualArmorSkillLightFloat GauntletsArmorLightFloat UnisonLightFloat MatchingLightFloat LightSetFloat LightSetBonusFloat ArmorPerkLightFloat BonusLightFloat NegativeLightEvent OnObjectEquipped(Form akBaseObject, ObjectReference akReference) If (akBaseObject as Armor).GetSlotMask()==8 Armor Gauntlets = Game.GetPlayer().GetWornForm(0x00000008) as Armor If Game.GetPlayer().HasPerk(FistsOfSteel) Int WeightClass = Gauntlets.GetWeightClass() If (WeightClass == 0) ArmorSkillHeavy = (Game.GetPlayer().GetActorValue("HeavyArmor")) as Float PercentArmorSkillHeavy = (ArmorSkillHeavy * 0.0044444) ActualArmorSkillHeavy = (PercentArmorSkillHeavy + 1) GauntletsArmorHeavy = (Gauntlets.GetArmorRating()) as Float BonusClass = 0 If Game.Getplayer().HasPerk(WellFitted) UnisonHeavy = 0.25 Else UnisonHeavy = 0.0 EndIf If Game.Getplayer().HasPerk(MatchingSetHeavy) MatchingHeavy = 0.25 Else MatchingHeavy = 0.0 EndIf HeavySet = (UnisonHeavy+MatchingHeavy) HeavySetBonus = (1+HeavySet) If Game.Getplayer().HasPerk(Juggernaut80) ArmorPerkHeavy = 2 ElseIf (Game.Getplayer().HasPerk(Juggernaut60)) ArmorPerkHeavy = 1.8 ElseIf (Game.Getplayer().HasPerk(Juggernaut40)) ArmorPerkHeavy = 1.6 ElseIf (Game.Getplayer().HasPerk(Juggernaut20)) ArmorPerkHeavy = 1.4 ElseIf (Game.Getplayer().HasPerk(Juggernaut00)) ArmorPerkHeavy = 1.2 Else ArmorPerkHeavy = 1 EndIf BonusHeavy = (GauntletsArmorHeavy*ActualArmorSkillHeavy*HeavySetBonus*ArmorPerkHeavy) as Float NegativeHeavy = (0-BonusHeavy) Self.ModAV("UnarmedDamage", BonusHeavy) ElseIf (WeightClass == 1) ArmorSkillLight = (Game.GetPlayer().GetActorValue("LightArmor")) as Float PercentArmorSkillLight = (ArmorSkillLight * 0.0044444) ActualArmorSkillLight = (PercentArmorSkillLight + 1) GauntletsArmorLight = (Gauntlets.GetArmorRating()) as Float BonusClass = 1 If Game.Getplayer().HasPerk(CustomFit) UnisonLight = 0.25 Else UnisonLight = 0 EndIf If Game.Getplayer().HasPerk(MatchingSetLight) MatchingLight = 0.25 Else MatchingLight = 0 EndIf LightSet = (UnisonLight+MatchingLight) LightSetBonus = (1+LightSet) If Game.Getplayer().HasPerk(AgileDefender80) ArmorPerkLight = 2 ElseIf (Game.Getplayer().HasPerk(AgileDefender60)) ArmorPerkLight = 1.8 ElseIf (Game.Getplayer().HasPerk(AgileDefender40)) ArmorPerkLight = 1.6 ElseIf (Game.Getplayer().HasPerk(AgileDefender20)) ArmorPerkLight = 1.4 ElseIf (Game.Getplayer().HasPerk(AgileDefender00)) ArmorPerkLight = 1.2 Else ArmorPerkLight = 1 EndIf BonusLight = (GauntletsArmorLight*ActualArmorSkillLight*LightSetBonus*ArmorPerkLight) as Float NegativeLight = (0-BonusLight) Self.ModAV("UnarmedDamage", BonusLight) EndIf EndIf EndIfEndEventEvent OnObjectUnequipped(Form akBaseObject, ObjectReference akReference) If (akBaseObject as Armor).GetSlotMask()==8 If (BonusClass == 0) Self.ModAV("UnarmedDamage", NegativeHeavy) ElseIf (BonusClass == 1) Self.ModAV("UnarmedDamage", NegativeLight) EndIf EndIfEndEvent