You could (with FOSE) use http://fose.silverlock.org/fose_command_doc.html#GetEquippedObject + http://fose.silverlock.org/fose_command_doc.html#GetWeight, or (without FOSE) add all armors heavier than X to a formlist, or both if you use http://www.mediafire.com/?dgd3xyio0mv or some other method of FOSE detection. The FOSE code would work for all armors including new ones added by mods while the non-FOSE code would, at least, work for items available from the plugin's master(s) and *drug into that FLST.
*you can sort by weight in the GECK's object window then Shift+Click to save time
scn IsArmorHeavyQuestSCPTRef rArmorFloat fWeightThreshold;Short bIsArmorHeavyGLOB <--- Probably best if a global to be checked by the weapon(s)Begin GameMode If FOSE Set rArmor to Player.GetEquippedObject 2 ; Upper body If ((rArmor.GetWeight >= fWeightThreshold) != bIsArmorHeavyGLOB) Set bIsArmorHeavyGLOB to (bIsArmorHeavyGLOB == 0) EndIf ElseIf (Player.GetEquipped HeavyArmorFLST != bIsArmorHeavyGLOB) Set bIsArmorHeavyGLOB to (bIsArmorHeavyGLOB == 0) EndIfEnd;========== Repeaed in MenuMode to catch the player changing sooner =========Begin MenuMode 1 If FOSE Set rArmor to Player.GetEquippedObject 2 ; Upper body If ((rArmor.GetWeight >= fWeightThreshold) != bIsArmorHeavyGLOB) Set bIsArmorHeavyGLOB to (bIsArmorHeavyGLOB == 0) EndIf ElseIf (Player.GetEquipped HeavyArmorFLST != bIsArmorHeavyGLOB) Set bIsArmorHeavyGLOB to (bIsArmorHeavyGLOB == 0) EndIfEnd
...then the weapon(s) could be scripted with...
If bIsArmorHeavyGLOB ; Heavy armor code Else ; Light armor code EndIf