Where have I gone wrong? Script detecting which hand attacks

Post » Wed Jun 20, 2012 12:30 am

Ok, I have changed my script from extending a magic effect to extending an actor in order to restructure it to be faster. It succeeded in doing so. Sadly, it has come with a catch. Instead of setting the values of damage of an attack inside of an OnHit event, I have set the values of damage whenever a weapon is equipped/unequipped. The problem comes from dual-wielding. I've tried to fix the issue by assigning damage to variables that are for right-hand and for left-hand.

I have been testing this, and it works some of the time, but not at others. The issues I have usually come from when I have a weapon in my left hand, equip a two-handed weapon, then unequip the two-handed weapon (which re-equips the left-hand weapon). It seems that when that happens, the values of damage for the left-hand weapon gets reset.

Any suggestions for what I can do? Thank you! :-)

Spoiler

Scriptname SAWDOnHit extends Actor{SAWD OnHit Damage Calculation}Keyword property VendorItemAnimalHide autoKeyword property ArmorMaterialDaedric autoKeyword property ArmorMaterialDragonplate autoKeyword property ArmorMaterialDragonscale autoKeyword property ArmorMaterialDwarven autoKeyword property ArmorMaterialEbony autoKeyword property ArmorMaterialElven autoKeyword property ArmorMaterialElvenGilded autoKeyword property ArmorMaterialGlass autoKeyword property ArmorMaterialHide autoKeyword property ArmorMaterialImperialHeavy autoKeyword property ArmorMaterialImperialLight autoKeyword property ArmorMaterialImperialStudded autoKeyword property ArmorMaterialIron autoKeyword property ArmorMaterialIronBanded autoKeyword property ArmorMaterialLeather autoKeyword property ArmorMaterialOrcish autoKeyword property ArmorMaterialScaled autoKeyword property ArmorMaterialSteel autoKeyword property ArmorMaterialSteelPlate autoKeyword property ArmorMaterialStormcloak autoKeyword property ArmorMaterialStudded autoKeyword property ArmorNightingale autoKeyword property ArmorDarkBrotherhood autoKeyword property ArmorCuirass autoKeyword property VendorItemArrow autoKeyword property WeapTypeBoundArrow autoKeyword property WeapTypeBow autoKeyword property WeapTypeDagger autoKeyword property WeapTypeSword autoKeyword property WeapTypeGreatsword autoKeyword property WeapTypeWarAxe autoKeyword property WeapTypeBattleaxe autoKeyword property WeapTypeMace autoKeyword property WeapTypeWarhammer autoKeyword property WeapTypeStaff autoKeyword property WeapMaterialDaedric autoKeyword property WeapMaterialDraugr autoKeyword property WeapMaterialDraugrHoned autoKeyword property WeapMaterialDwarven autoKeyword property WeapMaterialEbony autoKeyword property WeapMaterialElven autoKeyword property WeapMaterialFalmer autoKeyword property WeapMaterialFalmerHoned autoKeyword property WeapMaterialGlass autoKeyword property WeapMaterialImperial autoKeyword property WeapMaterialIron autoKeyword property WeapMaterialOrcish autoKeyword property WeapMaterialSilver autoKeyword property WeapMaterialSteel autoKeyword property WeapMaterialWood autoSPELL PROPERTY SAWDStagger2 AUTOSPELL PROPERTY SAWDStagger AUTOSPELL PROPERTY SAWDKneel AUTOSPELL PROPERTY SAWDDamageHeavy AUTOSPELL PROPERTY SAWDDamageModerate AUTOSPELL PROPERTY SAWDDamageLight AUTOSPELL PROPERTY SAWDBleedHeavy AUTOSPELL PROPERTY SAWDBleedModerate AUTOSPELL PROPERTY SAWDBleedLight AUTOSPELL PROPERTY FireSawd AUTOWeapon property myWeapon autoint PROPERTY myRPenetrationMin = 0 AUTOint PROPERTY myRPenetrationMax = 0 AUTOint PROPERTY myRCutMin = 0 AUTOint PROPERTY myRCutMax = 0 AUTOint PROPERTY myRConcussionMin = 0 AUTOint PROPERTY myRConcussionMax = 0 AUTOint PROPERTY myRpPenetrationMin = 0 AUTOint PROPERTY myRpPenetrationMax = 0 AUTOint PROPERTY myRpConcussionMin = 0 AUTOint PROPERTY myRpConcussionMax = 0 AUTOint PROPERTY myLPenetrationMin = 0 AUTOint PROPERTY myLPenetrationMax = 0 AUTOint PROPERTY myLCutMin = 0 AUTOint PROPERTY myLCutMax = 0 AUTOint PROPERTY myLConcussionMin = 0 AUTOint PROPERTY myLConcussionMax = 0 AUTOint PROPERTY myLpPenetrationMin = 0 AUTOint PROPERTY myLpPenetrationMax = 0 AUTOint PROPERTY myLpConcussionMin = 0 AUTOint PROPERTY myLpConcussionMax = 0 AUTOint PROPERTY aPenetrationMin = 0 AUTOint PROPERTY aPenetrationMax = 0 AUTOint PROPERTY aCutMin = 0 AUTOint PROPERTY aCutMax = 0 AUTOint PROPERTY aConcussionMin = 0 AUTOint PROPERTY aConcussionMax = 0 AUTOint PROPERTY apPenetrationMin = 0 AUTOint PROPERTY apPenetrationMax = 0 AUTOint PROPERTY apConcussionMin = 0 AUTOint PROPERTY apConcussionMax = 0 AUTOint ResistPenetration = 0int ResistCut = 0int ResistConcussion = 0int ArrowPenetration = 0int ArrowConcussion = 0int PenetrationMin = 0int PenetrationMax = 0int CutMin = 0int CutMax = 0int ConcussionMin = 0int ConcussionMax = 0int pPenetrationMin = 0int pPenetrationMax = 0int pConcussionMin = 0int pConcussionMax = 0int aPenetrationMin = 0int aPenetrationMax = 0int aCutMin = 0int aCutMax = 0int aConcussionMin = 0int aConcussionMax = 0int apPenetrationMin = 0int apPenetrationMax = 0int apConcussionMin = 0int apConcussionMax = 0int PenetrationRoll = 0int CutRoll = 0int ConcussionRoll = 0int PenetrationSuccess = 0int CutSuccess = 0int ConcussionSuccess = 0Function DetectArmorResistances()If ( Self.WornHasKeyword(ArmorCuirass))  ResistPenetration = 0  ResistCut = 0  ResistConcussion = 0  If ( Self.WornHasKeyword(ArmorMaterialDaedric))   ResistPenetration = 250   ResistCut = 250   ResistConcussion = 250  ElseIf ( Self.WornHasKeyword(ArmorMaterialDragonplate))   ResistPenetration = 225   ResistCut = 225   ResistConcussion = 225  ElseIf ( Self.WornHasKeyword(ArmorMaterialEbony))   ResistPenetration = 200   ResistCut = 200   ResistConcussion = 200  ElseIf ( Self.WornHasKeyword(ArmorMaterialDwarven))   ResistPenetration = 175   ResistCut = 170   ResistConcussion = 175  ElseIf ( Self.WornHasKeyword(ArmorMaterialOrcish))   ResistPenetration = 150   ResistCut = 150   ResistConcussion = 150  ElseIf ( Self.WornHasKeyword(ArmorMaterialDragonscale))   ResistPenetration = 150   ResistCut = 150   ResistConcussion = 150  ElseIf ( Self.WornHasKeyword(ArmorMaterialImperialHeavy))   ResistPenetration = 140   ResistCut = 140   ResistConcussion = 140  ElseIf ( Self.WornHasKeyword(ArmorMaterialSteelPlate))   ResistPenetration = 130   ResistCut = 130   ResistConcussion = 130  ElseIf ( Self.WornHasKeyword(ArmorMaterialGlass))   ResistPenetration = 130   ResistCut = 130   ResistConcussion = 130    ElseIf ( Self.WornHasKeyword(ArmorMaterialSteel))   ResistPenetration = 120   ResistCut = 120   ResistConcussion = 120  ElseIf ( Self.WornHasKeyword(ArmorMaterialIronBanded))   ResistPenetration = 110   ResistCut = 110   ResistConcussion = 110  ElseIf ( Self.WornHasKeyword(ArmorMaterialElvenGilded))   ResistPenetration = 110   ResistCut = 110   ResistConcussion = 110    ElseIf ( Self.WornHasKeyword(ArmorMaterialIron))   ResistPenetration = 100   ResistCut = 100   ResistConcussion = 100  ElseIf ( Self.WornHasKeyword(ArmorMaterialElven))   ResistPenetration = 100   ResistCut = 100   ResistConcussion = 100    ElseIf ( Self.WornHasKeyword(ArmorMaterialScaled))   ResistPenetration = 75   ResistCut = 90   ResistConcussion = 60  ElseIf ( Self.WornHasKeyword(ArmorMaterialImperialStudded))   ResistPenetration = 60   ResistCut = 80   ResistConcussion = 40    ElseIf ( Self.WornHasKeyword(ArmorMaterialStormcloak))   ResistPenetration = 50   ResistCut = 75   ResistConcussion = 35  ElseIf ( Self.WornHasKeyword(ArmorNightingale))   ResistPenetration = 50   ResistCut = 35   ResistConcussion = 30    ElseIf ( Self.WornHasKeyword(ArmorMaterialStudded))   ResistPenetration = 45   ResistCut = 35   ResistConcussion = 30  ElseIf ( Self.WornHasKeyword(ArmorMaterialImperialLight))   ResistPenetration = 40   ResistCut = 30   ResistConcussion = 25  ElseIf ( Self.WornHasKeyword(ArmorMaterialLeather))   ResistPenetration = 40   ResistCut = 30   ResistConcussion = 25    ElseIf ( Self.WornHasKeyword(ArmorDarkBrotherhood))   ResistPenetration = 30   ResistCut = 30   ResistConcussion = 20  ElseIf ( Self.WornHasKeyword(ArmorMaterialHide))   ResistPenetration = 15   ResistCut = 15   ResistConcussion = 15  ElseIf ( Self.WornHasKeyword(VendorItemAnimalHide))   ResistPenetration = 15   ResistCut = 15   ResistConcussion = 15    Else   ResistPenetration = 0   ResistCut = 0   ResistConcussion = 0  EndIfEndIfendFunctionFunction DetectWeaponDamages(Weapon fWeapon)if ( myWeapon.HasKeyword(WeapTypeDagger) || myWeapon.HasKeyword(WeapTypeSword) || myWeapon.HasKeyword(WeapTypeGreatsword) || myWeapon.HasKeyword(WeapTypeWarAxe) || myWeapon.HasKeyword(WeapTypeBattleaxe))  CutMin = 0  CutMax = 0  if ( myWeapon.HasKeyword(WeapMaterialIron))   CutMin = 1   CutMax = 50  ElseIf ( myWeapon.HasKeyword(WeapMaterialSteel))   CutMin = 2   CutMax = 53  ElseIf ( myWeapon.HasKeyword(WeapMaterialImperial))   CutMin = 3   CutMax = 55  ElseIf ( myWeapon.HasKeyword(WeapMaterialSilver))   CutMin = 1   CutMax = 45    ElseIf ( myWeapon.HasKeyword(WeapMaterialOrcish))   CutMin = 4   CutMax = 62  ElseIf ( myWeapon.HasKeyword(WeapMaterialDwarven))   CutMin = 7   CutMax = 65    ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmer))   CutMin = 3   CutMax = 57  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmerHoned))   CutMin = 8   CutMax = 67  ElseIf ( myWeapon.HasKeyword(WeapMaterialElven))   CutMin = 10   CutMax = 70  ElseIf ( myWeapon.HasKeyword(WeapMaterialGlass))   CutMin = 20   CutMax = 75  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugr))   CutMin = 1   CutMax = 48  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugrHoned))   CutMin = 4   CutMax = 59  ElseIf ( myWeapon.HasKeyword(WeapMaterialEbony))   CutMin = 30   CutMax = 90  ElseIf ( myWeapon.HasKeyword(WeapMaterialDaedric))   CutMin = 40   CutMax = 100  ElseIf ( myWeapon.HasKeyword(WeapMaterialWood))   CutMin = 0   CutMax = 0  Else   CutMin = 0   CutMax = 0    EndIfElse  CutMin = 0  CutMax = 0EndIfPenetrationMin = 0PenetrationMax = 0ConcussionMin = 0ConcussionMax = 0If ( myWeapon.HasKeyword(WeapTypeBow))  if ( myWeapon.HasKeyword(WeapMaterialIron))   PenetrationMin = 26   PenetrationMax = 265   ConcussionMin = 1   ConcussionMax = 10    ElseIf ( myWeapon.HasKeyword(WeapMaterialSteel))   PenetrationMin = 27   PenetrationMax = 270   ConcussionMin = 1   ConcussionMax = 10  ElseIf ( myWeapon.HasKeyword(WeapMaterialImperial))   PenetrationMin = 27   PenetrationMax = 275   ConcussionMin = 1   ConcussionMax = 10  ElseIf ( myWeapon.HasKeyword(WeapMaterialSilver))   PenetrationMin = 26   PenetrationMax = 260   ConcussionMin = 1   ConcussionMax = 10    ElseIf ( myWeapon.HasKeyword(WeapMaterialOrcish))   PenetrationMin = 30   PenetrationMax = 300   ConcussionMin = 1   ConcussionMax = 15   ElseIf ( myWeapon.HasKeyword(WeapMaterialDwarven))   PenetrationMin = 34   PenetrationMax = 340   ConcussionMin = 1   ConcussionMax = 20	  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmer))   PenetrationMin = 31   PenetrationMax = 310   ConcussionMin = 1   ConcussionMax = 23    ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmerHoned))   PenetrationMin = 35   PenetrationMax = 350   ConcussionMin = 1   ConcussionMax = 23  ElseIf ( myWeapon.HasKeyword(WeapMaterialElven))   PenetrationMin = 41   PenetrationMax = 410   ConcussionMin = 1   ConcussionMax = 10  ElseIf ( myWeapon.HasKeyword(WeapMaterialGlass))   PenetrationMin = 32   PenetrationMax = 320   ConcussionMin = 1   ConcussionMax = 15  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugr))   PenetrationMin = 16   PenetrationMax = 163   ConcussionMin = 1   ConcussionMax = 10  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugrHoned))   PenetrationMin = 18   PenetrationMax = 185   ConcussionMin = 1   ConcussionMax = 10  ElseIf ( myWeapon.HasKeyword(WeapMaterialEbony))   PenetrationMin = 36   PenetrationMax = 360   ConcussionMin = 3   ConcussionMax = 25  ElseIf ( myWeapon.HasKeyword(WeapMaterialDaedric))   PenetrationMin = 40   PenetrationMax = 400   ConcussionMin = 4   ConcussionMax = 30  ElseIf ( myWeapon.HasKeyword(WeapMaterialWood))   PenetrationMin = 9   PenetrationMax = 90   ConcussionMin = 1   ConcussionMax = 8  Else   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 0   ConcussionMax = 0    EndIf  ; ArrowPenetration = 0  ; ArrowConcussion = 0  ; if ( akProjectile.HasKeyword(WeapMaterialIron))   ; ArrowPenetration = 5   ; ArrowConcussion = 0  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialSteel))   ; ArrowPenetration = 10   ; ArrowConcussion = 1  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialImperial))   ; ArrowPenetration = 15   ; ArrowConcussion = 1  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialSilver))   ; ArrowPenetration = 1   ; ArrowConcussion = 0  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialOrcish))   ; ArrowPenetration = 20   ; ArrowConcussion = 2  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialDwarven))   ; ArrowPenetration = 25   ; ArrowConcussion = 2  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialFalmer))   ; ArrowPenetration = 22   ; ArrowConcussion = 3  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialFalmerHoned))   ; ArrowPenetration = 30   ; ArrowConcussion = 3  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialElven))   ; ArrowPenetration = 50   ; ArrowConcussion = 5  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialGlass))   ; ArrowPenetration = 35   ; ArrowConcussion = 3  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialDraugr))   ; ArrowPenetration = 3   ; ArrowConcussion = 0  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialDraugrHoned))   ; ArrowPenetration = 17   ; ArrowConcussion = 1  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialEbony))   ; ArrowPenetration = 40   ; ArrowConcussion = 4  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialDaedric))   ; ArrowPenetration = 45   ; ArrowConcussion = 4  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialWood))   ; ArrowPenetration = 0   ; ArrowConcussion = 0  ; Else   ; ArrowPenetration = 0   ; ArrowConcussion = 0    ; EndIf  ; PenetrationMin = ( PenetrationMin + ArrowPenetration )  ; PenetrationMax = ( PenetrationMax + ArrowPenetration )  ; ConcussionMin = ( ConcussionMin + ArrowConcussion )  ; ConcussionMax = ( ConcussionMax + ArrowConcussion )Elseif ( myWeapon.HasKeyword(WeapTypeDagger))  if ( myWeapon.HasKeyword(WeapMaterialIron))   PenetrationMin = 1   PenetrationMax = 35   ConcussionMin = 1   ConcussionMax = 10   pPenetrationMin = 10   pPenetrationMax = 130   pConcussionMin = 1   pConcussionMax = 10    ElseIf ( myWeapon.HasKeyword(WeapMaterialSteel))   PenetrationMin = 1   PenetrationMax = 37   ConcussionMin = 1   ConcussionMax = 10   pPenetrationMin = 13   pPenetrationMax = 140   pConcussionMin = 1   pConcussionMax = 10    ElseIf ( myWeapon.HasKeyword(WeapMaterialImperial))   PenetrationMin = 1   PenetrationMax = 39   ConcussionMin = 1   ConcussionMax = 10   pPenetrationMin = 15   pPenetrationMax = 145   pConcussionMin = 1   pConcussionMax = 10  ElseIf ( myWeapon.HasKeyword(WeapMaterialSilver))   PenetrationMin = 1   PenetrationMax = 33   ConcussionMin = 1   ConcussionMax = 10   pPenetrationMin = 8   pPenetrationMax = 125   pConcussionMin = 1   pConcussionMax = 10    ElseIf ( myWeapon.HasKeyword(WeapMaterialOrcish))   PenetrationMin = 2   PenetrationMax = 41   ConcussionMin = 1   ConcussionMax = 15   pPenetrationMin = 20   pPenetrationMax = 180   pConcussionMin = 1   pConcussionMax = 10    ElseIf ( myWeapon.HasKeyword(WeapMaterialDwarven))   PenetrationMin = 5   PenetrationMax = 45   ConcussionMin = 1   ConcussionMax = 20   pPenetrationMin = 25   pPenetrationMax = 200   pConcussionMin = 1   pConcussionMax = 17    ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmer))   PenetrationMin = 3   PenetrationMax = 42   ConcussionMin = 1   ConcussionMax = 23   pPenetrationMin = 20   pPenetrationMax = 185   pConcussionMin = 2   pConcussionMax = 18    ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmerHoned))   PenetrationMin = 5   PenetrationMax = 48   ConcussionMin = 1   ConcussionMax = 23   pPenetrationMin = 32   pPenetrationMax = 225   pConcussionMin = 2   pConcussionMax = 18    ElseIf ( myWeapon.HasKeyword(WeapMaterialElven))   PenetrationMin = 3   PenetrationMax = 40   ConcussionMin = 1   ConcussionMax = 10   pPenetrationMin = 22   pPenetrationMax = 190   pConcussionMin = 1   pConcussionMax = 10  ElseIf ( myWeapon.HasKeyword(WeapMaterialGlass))   PenetrationMin = 4   PenetrationMax = 43   ConcussionMin = 1   ConcussionMax = 15   pPenetrationMin = 24   pPenetrationMax = 230   pConcussionMin = 1   pConcussionMax = 15  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugr))   PenetrationMin = 1   PenetrationMax = 34   ConcussionMin = 1   ConcussionMax = 10   pPenetrationMin = 9   pPenetrationMax = 128   pConcussionMin = 1   pConcussionMax = 10  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugrHoned))   PenetrationMin = 2   PenetrationMax = 40   ConcussionMin = 1   ConcussionMax = 10   pPenetrationMin = 17   pPenetrationMax = 155   pConcussionMin = 1   pConcussionMax = 10  ElseIf ( myWeapon.HasKeyword(WeapMaterialEbony))   PenetrationMin = 7   PenetrationMax = 55   ConcussionMin = 3   ConcussionMax = 25   pPenetrationMin = 40   pPenetrationMax = 255   pConcussionMin = 3   pConcussionMax = 19  ElseIf ( myWeapon.HasKeyword(WeapMaterialDaedric))   PenetrationMin = 10   PenetrationMax = 65   ConcussionMin = 4   ConcussionMax = 30   pPenetrationMin = 75   pPenetrationMax = 300   pConcussionMin = 4   pConcussionMax = 20    ElseIf ( myWeapon.HasKeyword(WeapMaterialWood))   PenetrationMin = 0   PenetrationMax = 10   ConcussionMin = 1   ConcussionMax = 8   pPenetrationMin = 1   pPenetrationMax = 50   pConcussionMin = 1   pConcussionMax = 8  Else   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 0   ConcussionMax = 0   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 0   pConcussionMax = 0    EndIfElseif ( myWeapon.HasKeyword(WeapTypeSword))  if ( myWeapon.HasKeyword(WeapMaterialIron))   PenetrationMin = 1   PenetrationMax = 150   ConcussionMin = 69   ConcussionMax = 138   pPenetrationMin = 15   pPenetrationMax = 135   pConcussionMin = 1   pConcussionMax = 20  ElseIf ( myWeapon.HasKeyword(WeapMaterialSteel))   PenetrationMin = 1   PenetrationMax = 155   ConcussionMin = 71   ConcussionMax = 142   pPenetrationMin = 18   pPenetrationMax = 145   pConcussionMin = 1   pConcussionMax = 20  ElseIf ( myWeapon.HasKeyword(WeapMaterialImperial))   PenetrationMin = 1   PenetrationMax = 160   ConcussionMin = 73   ConcussionMax = 146   pPenetrationMin = 20   pPenetrationMax = 150   pConcussionMin = 1   pConcussionMax = 20  ElseIf ( myWeapon.HasKeyword(WeapMaterialSilver))   PenetrationMin = 1   PenetrationMax = 140   ConcussionMin = 75   ConcussionMax = 150   pPenetrationMin = 13   pPenetrationMax = 130   pConcussionMin = 1   pConcussionMax = 20  ElseIf ( myWeapon.HasKeyword(WeapMaterialOrcish))   PenetrationMin = 5   PenetrationMax = 175   ConcussionMin = 85   ConcussionMax = 170   pPenetrationMin = 25   pPenetrationMax = 185   pConcussionMin = 1   pConcussionMax = 22  ElseIf ( myWeapon.HasKeyword(WeapMaterialDwarven))   PenetrationMin = 15   PenetrationMax = 210   ConcussionMin = 100   ConcussionMax = 200   pPenetrationMin = 30   pPenetrationMax = 205   pConcussionMin = 3   pConcussionMax = 25  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmer))   PenetrationMin = 10   PenetrationMax = 185   ConcussionMin = 105   ConcussionMax = 210   pPenetrationMin = 27   pPenetrationMax = 190   pConcussionMin = 4   pConcussionMax = 27  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmerHoned))   PenetrationMin = 20   PenetrationMax = 225   ConcussionMin = 105   ConcussionMax = 210   pPenetrationMin = 48   pPenetrationMax = 235   pConcussionMin = 4   pConcussionMax = 27  ElseIf ( myWeapon.HasKeyword(WeapMaterialElven))   PenetrationMin = 5   PenetrationMax = 180   ConcussionMin = 80   ConcussionMax = 160   pPenetrationMin = 27   pPenetrationMax = 195   pConcussionMin = 1   pConcussionMax = 20  ElseIf ( myWeapon.HasKeyword(WeapMaterialGlass))   PenetrationMin = 10   PenetrationMax = 200   ConcussionMin = 95   ConcussionMax = 185   pPenetrationMin = 29   pPenetrationMax = 230   pConcussionMin = 2   pConcussionMax = 22  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugr))   PenetrationMin = 1   PenetrationMax = 145   ConcussionMin = 72   ConcussionMax = 144   pPenetrationMin = 14   pPenetrationMax = 133   pConcussionMin = 1   pConcussionMax = 20  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugrHoned))   PenetrationMin = 3   PenetrationMax = 165   ConcussionMin = 72   ConcussionMax = 144   pPenetrationMin = 22   pPenetrationMax = 160   pConcussionMin = 1   pConcussionMax = 20  ElseIf ( myWeapon.HasKeyword(WeapMaterialEbony))   PenetrationMin = 25   PenetrationMax = 255   ConcussionMin = 115   ConcussionMax = 225   pPenetrationMin = 45   pPenetrationMax = 255   pConcussionMin = 5   pConcussionMax = 30  ElseIf ( myWeapon.HasKeyword(WeapMaterialDaedric))   PenetrationMin = 35   PenetrationMax = 285   ConcussionMin = 130   ConcussionMax = 255   pPenetrationMin = 80   pPenetrationMax = 305   pConcussionMin = 5   pConcussionMax = 35  ElseIf ( myWeapon.HasKeyword(WeapMaterialWood))   PenetrationMin = 1   PenetrationMax = 10   ConcussionMin = 35   ConcussionMax = 70   pPenetrationMin = 0   pPenetrationMax = 50   pConcussionMin = 1   pConcussionMax = 15  Else   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 0   ConcussionMax = 0   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 0   pConcussionMax = 0  EndIfElseif ( myWeapon.HasKeyword(WeapTypeGreatsword))  if ( myWeapon.HasKeyword(WeapMaterialIron))   PenetrationMin = 5   PenetrationMax = 165   ConcussionMin = 90   ConcussionMax = 155   pPenetrationMin = 20   pPenetrationMax = 140   pConcussionMin = 2   pConcussionMax = 25  ElseIf ( myWeapon.HasKeyword(WeapMaterialSteel))   PenetrationMin = 5   PenetrationMax = 170   ConcussionMin = 95   ConcussionMax = 160   pPenetrationMin = 23   pPenetrationMax = 150   pConcussionMin = 2   pConcussionMax = 25  ElseIf ( myWeapon.HasKeyword(WeapMaterialImperial))   PenetrationMin = 5   PenetrationMax = 175   ConcussionMin = 100   ConcussionMax = 165   pPenetrationMin = 25   pPenetrationMax = 155   pConcussionMin = 2   pConcussionMax = 25  ElseIf ( myWeapon.HasKeyword(WeapMaterialSilver))   PenetrationMin = 5   PenetrationMax = 155   ConcussionMin = 105   ConcussionMax = 170   pPenetrationMin = 18   pPenetrationMax = 135   pConcussionMin = 2   pConcussionMax = 25  ElseIf ( myWeapon.HasKeyword(WeapMaterialOrcish))   PenetrationMin = 10   PenetrationMax = 190   ConcussionMin = 115   ConcussionMax = 195   pPenetrationMin = 30   pPenetrationMax = 190   pConcussionMin = 3   pConcussionMax = 27  ElseIf ( myWeapon.HasKeyword(WeapMaterialDwarven))   PenetrationMin = 20   PenetrationMax = 225   ConcussionMin = 130   ConcussionMax = 230   pPenetrationMin = 35   pPenetrationMax = 210   pConcussionMin = 5   pConcussionMax = 35  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmer))   PenetrationMin = 15   PenetrationMax = 195   ConcussionMin = 135   ConcussionMax = 245   pPenetrationMin = 32   pPenetrationMax = 195   pConcussionMin = 6   pConcussionMax = 37  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmerHoned))   PenetrationMin = 25   PenetrationMax = 250   ConcussionMin = 135   ConcussionMax = 245   pPenetrationMin = 43   pPenetrationMax = 240   pConcussionMin = 6   pConcussionMax = 37  ElseIf ( myWeapon.HasKeyword(WeapMaterialElven))   PenetrationMin = 10   PenetrationMax = 195   ConcussionMin = 110   ConcussionMax = 180   pPenetrationMin = 32   pPenetrationMax = 200   pConcussionMin = 2   pConcussionMax = 25  ElseIf ( myWeapon.HasKeyword(WeapMaterialGlass))   PenetrationMin = 15   PenetrationMax = 215   ConcussionMin = 120   ConcussionMax = 205   pPenetrationMin = 34   pPenetrationMax = 235   pConcussionMin = 4   pConcussionMax = 30  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugr))   PenetrationMin = 5   PenetrationMax = 160   ConcussionMin = 98   ConcussionMax = 163   pPenetrationMin = 19   pPenetrationMax = 138   pConcussionMin = 2   pConcussionMax = 25  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugrHoned))   PenetrationMin = 7   PenetrationMax = 180   ConcussionMin = 98   ConcussionMax = 163   pPenetrationMin = 27   pPenetrationMax = 165   pConcussionMin = 2   pConcussionMax = 25  ElseIf ( myWeapon.HasKeyword(WeapMaterialEbony))   PenetrationMin = 30   PenetrationMax = 270   ConcussionMin = 160   ConcussionMax = 260   pPenetrationMin = 50   pPenetrationMax = 260   pConcussionMin = 6   pConcussionMax = 40  ElseIf ( myWeapon.HasKeyword(WeapMaterialDaedric))   PenetrationMin = 40   PenetrationMax = 300   ConcussionMin = 180   ConcussionMax = 280   pPenetrationMin = 85   pPenetrationMax = 310   pConcussionMin = 7   pConcussionMax = 45  ElseIf ( myWeapon.HasKeyword(WeapMaterialWood))   PenetrationMin = 1   PenetrationMax = 15   ConcussionMin = 45   ConcussionMax = 90   pPenetrationMin = 1   pPenetrationMax = 50   pConcussionMin = 2   pConcussionMax = 20  Else   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 0   ConcussionMax = 0     pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 0   pConcussionMax = 0  EndIfElseif ( myWeapon.HasKeyword(WeapTypeWarAxe))  if ( myWeapon.HasKeyword(WeapMaterialIron))   PenetrationMin = 5   PenetrationMax = 165   ConcussionMin = 65   ConcussionMax = 145   pPenetrationMin = 90   pPenetrationMax = 180   pConcussionMin = 80   pConcussionMax = 170  ElseIf ( myWeapon.HasKeyword(WeapMaterialSteel))   PenetrationMin = 5   PenetrationMax = 170   ConcussionMin = 68   ConcussionMax = 150   pPenetrationMin = 93   pPenetrationMax = 185   pConcussionMin = 83   pConcussionMax = 175  ElseIf ( myWeapon.HasKeyword(WeapMaterialImperial))   PenetrationMin = 5   PenetrationMax = 175   ConcussionMin = 70   ConcussionMax = 155   pPenetrationMin = 95   pPenetrationMax = 190   pConcussionMin = 85   pConcussionMax = 180  ElseIf ( myWeapon.HasKeyword(WeapMaterialSilver))   PenetrationMin = 5   PenetrationMax = 155   ConcussionMin = 75   ConcussionMax = 160   pPenetrationMin = 87   pPenetrationMax = 175   pConcussionMin = 90   pConcussionMax = 185    ElseIf ( myWeapon.HasKeyword(WeapMaterialOrcish))   PenetrationMin = 10   PenetrationMax = 190   ConcussionMin = 85   ConcussionMax = 180   pPenetrationMin = 110   pPenetrationMax = 215   pConcussionMin = 100   pConcussionMax = 205  ElseIf ( myWeapon.HasKeyword(WeapMaterialDwarven))   PenetrationMin = 20   PenetrationMax = 225   ConcussionMin = 95   ConcussionMax = 200   pPenetrationMin = 120   pPenetrationMax = 235   pConcussionMin = 110   pConcussionMax = 225  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmer))   PenetrationMin = 13   PenetrationMax = 200   ConcussionMin = 100   ConcussionMax = 207   pPenetrationMin = 112   pPenetrationMax = 220   pConcussionMin = 115   pConcussionMax = 233  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmerHoned))   PenetrationMin = 25   PenetrationMax = 245   ConcussionMin = 100   ConcussionMax = 207   pPenetrationMin = 125   pPenetrationMax = 242   pConcussionMin = 115   pConcussionMax = 233  ElseIf ( myWeapon.HasKeyword(WeapMaterialElven))   PenetrationMin = 10   PenetrationMax = 195   ConcussionMin = 80   ConcussionMax = 170   pPenetrationMin = 105   pPenetrationMax = 205   pConcussionMin = 95   pConcussionMax = 195  ElseIf ( myWeapon.HasKeyword(WeapMaterialGlass))   PenetrationMin = 15   PenetrationMax = 215   ConcussionMin = 90   ConcussionMax = 190   pPenetrationMin = 115   pPenetrationMax = 225   pConcussionMin = 105   pConcussionMax = 215  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugr))   PenetrationMin = 5   PenetrationMax = 150   ConcussionMin = 69   ConcussionMax = 153   pPenetrationMin = 89   pPenetrationMax = 178   pConcussionMin = 84   pConcussionMax = 178  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugrHoned))   PenetrationMin = 7   PenetrationMax = 180   ConcussionMin = 69   ConcussionMax = 153   pPenetrationMin = 100   pPenetrationMax = 200   pConcussionMin = 84   pConcussionMax = 178  ElseIf ( myWeapon.HasKeyword(WeapMaterialEbony))   PenetrationMin = 30   PenetrationMax = 270   ConcussionMin = 105   ConcussionMax = 215   pPenetrationMin = 130   pPenetrationMax = 250   pConcussionMin = 120   pConcussionMax = 240  ElseIf ( myWeapon.HasKeyword(WeapMaterialDaedric))   PenetrationMin = 40   PenetrationMax = 300   ConcussionMin = 115   ConcussionMax = 240   pPenetrationMin = 140   pPenetrationMax = 275   pConcussionMin = 130   pConcussionMax = 265  ElseIf ( myWeapon.HasKeyword(WeapMaterialWood))   PenetrationMin = 1   PenetrationMax = 55   ConcussionMin = 35   ConcussionMax = 70   pPenetrationMin = 5   pPenetrationMax = 75   pConcussionMin = 40   pConcussionMax = 90    Else   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 0   ConcussionMax = 0   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 0   pConcussionMax = 0  EndIfElseif ( myWeapon.HasKeyword(WeapTypeBattleaxe))  if ( myWeapon.HasKeyword(WeapMaterialIron))   PenetrationMin = 108   PenetrationMax = 215   ConcussionMin = 93   ConcussionMax = 175   pPenetrationMin = 133   pPenetrationMax = 265   pConcussionMin = 113   pConcussionMax = 215  ElseIf ( myWeapon.HasKeyword(WeapMaterialSteel))   PenetrationMin = 110   PenetrationMax = 220   ConcussionMin = 95   ConcussionMax = 180   pPenetrationMin = 135   pPenetrationMax = 270   pConcussionMin = 115   pConcussionMax = 220  ElseIf ( myWeapon.HasKeyword(WeapMaterialImperial))   PenetrationMin = 113   PenetrationMax = 225   ConcussionMin = 98   ConcussionMax = 185   pPenetrationMin = 138   pPenetrationMax = 275   pConcussionMin = 118   pConcussionMax = 225  ElseIf ( myWeapon.HasKeyword(WeapMaterialSilver))   PenetrationMin = 105   PenetrationMax = 210   ConcussionMin = 100   ConcussionMax = 190   pPenetrationMin = 130   pPenetrationMax = 260   pConcussionMin = 120   pConcussionMax = 230  ElseIf ( myWeapon.HasKeyword(WeapMaterialOrcish))   PenetrationMin = 125   PenetrationMax = 250   ConcussionMin = 110   ConcussionMax = 220   pPenetrationMin = 150   pPenetrationMax = 300   pConcussionMin = 130   pConcussionMax = 260  ElseIf ( myWeapon.HasKeyword(WeapMaterialDwarven))   PenetrationMin = 145   PenetrationMax = 290   ConcussionMin = 130   ConcussionMax = 260   pPenetrationMin = 170   pPenetrationMax = 340   pConcussionMin = 150   pConcussionMax = 300  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmer))   PenetrationMin = 128   PenetrationMax = 255   ConcussionMin = 135   ConcussionMax = 270   pPenetrationMin = 155   pPenetrationMax = 310   pConcussionMin = 155   pConcussionMax = 310  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmerHoned))   PenetrationMin = 150   PenetrationMax = 270   ConcussionMin = 135   ConcussionMax = 270   pPenetrationMin = 175   pPenetrationMax = 350   pConcussionMin = 155   pConcussionMax = 310  ElseIf ( myWeapon.HasKeyword(WeapMaterialElven))   PenetrationMin = 120   PenetrationMax = 240   ConcussionMin = 105   ConcussionMax = 200   pPenetrationMin = 145   pPenetrationMax = 290   pConcussionMin = 125   pConcussionMax = 240  ElseIf ( myWeapon.HasKeyword(WeapMaterialGlass))   PenetrationMin = 135   PenetrationMax = 270   ConcussionMin = 120   ConcussionMax = 240   pPenetrationMin = 160   pPenetrationMax = 320   pConcussionMin = 140   pConcussionMax = 280  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugr))   PenetrationMin = 107   PenetrationMax = 213   ConcussionMin = 97   ConcussionMax = 183   pPenetrationMin = 132   pPenetrationMax = 163   pConcussionMin = 117   pConcussionMax = 123  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugrHoned))   PenetrationMin = 118   PenetrationMax = 235   ConcussionMin = 97   ConcussionMax = 183   pPenetrationMin = 142   pPenetrationMax = 185   pConcussionMin = 117   pConcussionMax = 123  ElseIf ( myWeapon.HasKeyword(WeapMaterialEbony))   PenetrationMin = 155   PenetrationMax = 310   ConcussionMin = 140   ConcussionMax = 280   pPenetrationMin = 180   pPenetrationMax = 360   pConcussionMin = 160   pConcussionMax = 320  ElseIf ( myWeapon.HasKeyword(WeapMaterialDaedric))   PenetrationMin = 175   PenetrationMax = 350   ConcussionMin = 160   ConcussionMax = 320   pPenetrationMin = 200   pPenetrationMax = 400   pConcussionMin = 180   pConcussionMax = 360  ElseIf ( myWeapon.HasKeyword(WeapMaterialWood))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 40   ConcussionMax = 80   pPenetrationMin = 10   pPenetrationMax = 90   pConcussionMin = 55   pConcussionMax = 110  Else   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 0   ConcussionMax = 0   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 0   pConcussionMax = 0  EndIfElseif ( myWeapon.HasKeyword(WeapTypeMace))  if ( myWeapon.HasKeyword(WeapMaterialIron))   PenetrationMin = 65   PenetrationMax = 145   ConcussionMin = 75   ConcussionMax = 155   pPenetrationMin = 80   pPenetrationMax = 170   pConcussionMin = 90   pConcussionMax = 180  ElseIf ( myWeapon.HasKeyword(WeapMaterialSteel))   PenetrationMin = 68   PenetrationMax = 150   ConcussionMin = 78   ConcussionMax = 160   pPenetrationMin = 83   pPenetrationMax = 175   pConcussionMin = 93   pConcussionMax = 185  ElseIf ( myWeapon.HasKeyword(WeapMaterialImperial))   PenetrationMin = 70   PenetrationMax = 155   ConcussionMin = 80   ConcussionMax = 165   pPenetrationMin = 85   pPenetrationMax = 180   pConcussionMin = 95   pConcussionMax = 190  ElseIf ( myWeapon.HasKeyword(WeapMaterialSilver))   PenetrationMin = 75   PenetrationMax = 160   ConcussionMin = 85   ConcussionMax = 170   pPenetrationMin = 90   pPenetrationMax = 185   pConcussionMin = 100   pConcussionMax = 195    ElseIf ( myWeapon.HasKeyword(WeapMaterialOrcish))   PenetrationMin = 85   PenetrationMax = 180   ConcussionMin = 95   ConcussionMax = 190   pPenetrationMin = 100   pPenetrationMax = 205   pConcussionMin = 110   pConcussionMax = 215  ElseIf ( myWeapon.HasKeyword(WeapMaterialDwarven))   PenetrationMin = 95   PenetrationMax = 200   ConcussionMin = 105   ConcussionMax = 210   pPenetrationMin = 110   pPenetrationMax = 225   pConcussionMin = 120   pConcussionMax = 235  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmer))   PenetrationMin = 80   PenetrationMax = 185   ConcussionMin = 110   ConcussionMax = 218   pPenetrationMin = 102   pPenetrationMax = 210   pConcussionMin = 125   pConcussionMax = 242  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmerHoned))   PenetrationMin = 100   PenetrationMax = 208   ConcussionMin = 110   ConcussionMax = 218   pPenetrationMin = 115   pPenetrationMax = 232   pConcussionMin = 125   pConcussionMax = 242  ElseIf ( myWeapon.HasKeyword(WeapMaterialElven))   PenetrationMin = 80   PenetrationMax = 170   ConcussionMin = 90   ConcussionMax = 180   pPenetrationMin = 95   pPenetrationMax = 195   pConcussionMin = 105   pConcussionMax = 205  ElseIf ( myWeapon.HasKeyword(WeapMaterialGlass))   PenetrationMin = 90   PenetrationMax = 190   ConcussionMin = 100   ConcussionMax = 200   pPenetrationMin = 105   pPenetrationMax = 215   pConcussionMin = 115   pConcussionMax = 225  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugr))   PenetrationMin = 63   PenetrationMax = 143   ConcussionMin = 79   ConcussionMax = 163   pPenetrationMin = 68   pPenetrationMax = 168   pConcussionMin = 94   pConcussionMax = 188  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugrHoned))   PenetrationMin = 75   PenetrationMax = 165   ConcussionMin = 79   ConcussionMax = 163   pPenetrationMin = 90   pPenetrationMax = 185   pConcussionMin = 94   pConcussionMax = 188  ElseIf ( myWeapon.HasKeyword(WeapMaterialEbony))   PenetrationMin = 105   PenetrationMax = 215   ConcussionMin = 115   ConcussionMax = 225   pPenetrationMin = 120   pPenetrationMax = 240   pConcussionMin = 130   pConcussionMax = 250  ElseIf ( myWeapon.HasKeyword(WeapMaterialDaedric))   PenetrationMin = 115   PenetrationMax = 240   ConcussionMin = 125   ConcussionMax = 250   pPenetrationMin = 130   pPenetrationMax = 265   pConcussionMin = 140   pConcussionMax = 275  ElseIf ( myWeapon.HasKeyword(WeapMaterialWood))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 10   ConcussionMax = 35   pPenetrationMin = 1   pPenetrationMax = 55   pConcussionMin = 50   pConcussionMax = 100  Else   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 0   ConcussionMax = 0   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 0   pConcussionMax = 0  EndIfElseif ( myWeapon.HasKeyword(WeapTypeWarhammer))  if ( myWeapon.HasKeyword(WeapMaterialIron))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 108   ConcussionMax = 215   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 133   pConcussionMax = 265  ElseIf ( myWeapon.HasKeyword(WeapMaterialSteel))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 110   ConcussionMax = 220   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 135   pConcussionMax = 270  ElseIf ( myWeapon.HasKeyword(WeapMaterialImperial))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 113   ConcussionMax = 225   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 138   pConcussionMax = 275  ElseIf ( myWeapon.HasKeyword(WeapMaterialSilver))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 115   ConcussionMax = 230   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 140   pConcussionMax = 280  ElseIf ( myWeapon.HasKeyword(WeapMaterialOrcish))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 125   ConcussionMax = 250   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 150   pConcussionMax = 300  ElseIf ( myWeapon.HasKeyword(WeapMaterialDwarven))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 145   ConcussionMax = 290   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 170   pConcussionMax = 340  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmer))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 150   ConcussionMax = 300   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 175   pConcussionMax = 350  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmerHoned))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 155   ConcussionMax = 305   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 175   pConcussionMax = 355  ElseIf ( myWeapon.HasKeyword(WeapMaterialElven))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 120   ConcussionMax = 240   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 145   pConcussionMax = 290  ElseIf ( myWeapon.HasKeyword(WeapMaterialGlass))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 135   ConcussionMax = 270   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 160   pConcussionMax = 320  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugr))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 105   ConcussionMax = 213   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 136   pConcussionMax = 273  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugrHoned))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 105   ConcussionMax = 218   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 136   pConcussionMax = 278  ElseIf ( myWeapon.HasKeyword(WeapMaterialEbony))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 155   ConcussionMax = 310   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 180   pConcussionMax = 360  ElseIf ( myWeapon.HasKeyword(WeapMaterialDaedric))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 175   ConcussionMax = 350   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 200   pConcussionMax = 400  ElseIf ( myWeapon.HasKeyword(WeapMaterialWood))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 50   ConcussionMax = 100   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 75   pConcussionMax = 150  Else   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 0   ConcussionMax = 0   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 0   pConcussionMax = 0    EndIfEndIfendFunctionFunction SetRightDamage()myRPenetrationMin = PenetrationMinmyRPenetrationMax = PenetrationMaxmyRCutMin = CutMinmyRCutMax = CutMaxmyRConcussionMin = ConcussionMinmyRConcussionMax = ConcussionMaxmyRpPenetrationMin = pPenetrationMinmyRpPenetrationMax = pPenetrationMaxmyRpConcussionMin = pConcussionMinmyRpConcussionMax = pConcussionMaxendFunctionFunction SetLeftDamage()myLPenetrationMin = PenetrationMinmyLPenetrationMax = PenetrationMaxmyLCutMin = CutMinmyLCutMax = CutMaxmyLConcussionMin = ConcussionMinmyLConcussionMax = ConcussionMaxmyLpPenetrationMin = pPenetrationMinmyLpPenetrationMax = pPenetrationMaxmyLpConcussionMin = pConcussionMinmyLpConcussionMax = pConcussionMaxendFunctionEvent OnObjectEquipped(Form akBaseObject, ObjectReference akReference)if akBaseObject as Armorif ( akBaseObject.HasKeyword(ArmorCuirass))  ResistPenetration = 0  ResistCut = 0  ResistConcussion = 0  DetectArmorResistances()endifendIfif akBaseObject as WeaponArrowPenetration = 0ArrowConcussion = 0PenetrationMin = 0PenetrationMax = 0CutMin = 0CutMax = 0ConcussionMin = 0ConcussionMax = 0pPenetrationMin = 0pPenetrationMax = 0pConcussionMin = 0pConcussionMax = 0myWeapon = (akBaseObject as Weapon)DetectWeaponDamages(myWeapon)if GetEquippedWeapon() == akBaseObject  SetRightDamage()else  SetLeftDamage()endifendIfendEventEvent OnObjectUnequipped(Form akBaseObject, ObjectReference akReference)if akBaseObject as Armorif ( akBaseObject.HasKeyword(ArmorCuirass))  ResistPenetration = 0  ResistCut = 0  ResistConcussion = 0  DetectArmorResistances()endifendIfif akBaseObject as WeaponArrowPenetration = 0ArrowConcussion = 0PenetrationMin = 0PenetrationMax = 0CutMin = 0CutMax = 0ConcussionMin = 0ConcussionMax = 0pPenetrationMin = 0pPenetrationMax = 0pConcussionMin = 0pConcussionMax = 0myWeapon = NONEDetectWeaponDamages(myWeapon)if GetEquippedWeapon() == akBaseObject  SetRightDamage()else  SetLeftDamage()endifendIfendEventEvent OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, \bool abBashAttack, bool abHitBlocked)if (akSource as spell) == NONEif abBashAttack == False  aPenetrationMin = 0  aPenetrationMax = 0  aCutMin = 0  aCutMax = 0  aConcussionMin = 0  aConcussionMax = 0  apPenetrationMin = 0  apPenetrationMax = 0  apConcussionMin = 0  apConcussionMax = 0  if (akAggressor as SAWDonHit).GetEquippedWeapon() == akSource   aPenetrationMin = (akAggressor as SAWDonHit).myRPenetrationMin   aPenetrationMax = (akAggressor as SAWDonHit).myRPenetrationMax   aCutMin = (akAggressor as SAWDonHit).myRCutMin   aCutMax = (akAggressor as SAWDonHit).myRCutMax   aConcussionMin = (akAggressor as SAWDonHit).myRConcussionMin   aConcussionMax = (akAggressor as SAWDonHit).myRConcussionMax   apPenetrationMin = (akAggressor as SAWDonHit).myRpPenetrationMin   apPenetrationMax = (akAggressor as SAWDonHit).myRpPenetrationMax   apConcussionMin = (akAggressor as SAWDonHit).myRpConcussionMin   apConcussionMax = (akAggressor as SAWDonHit).myRpConcussionMax  else   aPenetrationMin = (akAggressor as SAWDonHit).myLPenetrationMin   aPenetrationMax = (akAggressor as SAWDonHit).myLPenetrationMax   aCutMin = (akAggressor as SAWDonHit).myLCutMin   aCutMax = (akAggressor as SAWDonHit).myLCutMax   aConcussionMin = (akAggressor as SAWDonHit).myLConcussionMin   aConcussionMax = (akAggressor as SAWDonHit).myLConcussionMax   apPenetrationMin = (akAggressor as SAWDonHit).myLpPenetrationMin   apPenetrationMax = (akAggressor as SAWDonHit).myLpPenetrationMax   apConcussionMin = (akAggressor as SAWDonHit).myLpConcussionMin   apConcussionMax = (akAggressor as SAWDonHit).myLpConcussionMax  endif  PenetrationRoll = 0  CutRoll = 0  ConcussionRoll = 0  PenetrationSuccess = 0  CutSuccess = 0  ConcussionSuccess = 0  if abPowerAttack == False   PenetrationRoll = utility.RandomInt( aPenetrationMin , aPenetrationMax )   CutRoll = utility.RandomInt( aCutMin , aCutMax )   ConcussionRoll = utility.RandomInt( aConcussionMin , aConcussionMax )  elseif abPowerAttack == True   PenetrationRoll = utility.RandomInt( apPenetrationMin , apPenetrationMax )   CutRoll = utility.RandomInt( aCutMin , aCutMax )   ConcussionRoll = utility.RandomInt( apConcussionMin , apConcussionMax )  endif  If abHitBlocked == False   If ( akSource.HasKeyword(WeapTypeBow))	if PenetrationRoll > ( ResistPenetration * 1.2 )	 PenetrationSuccess = 1	ElseIf  PenetrationRoll > ResistPenetration	 PenetrationSuccess = 2  	Else	 PenetrationSuccess = 0	EndIf     ElseIf PenetrationRoll > ResistPenetration	ResistCut = 0	PenetrationSuccess = 1   Else	PenetrationSuccess = 0   EndIf   if CutRoll > ResistCut	CutSuccess = 1   Else	CutSuccess = 0   EndIf   if ConcussionRoll > ( ResistConcussion * 3 )	ConcussionSuccess = 1   ElseIf  ConcussionRoll > ( ResistConcussion * 2.5 )	ConcussionSuccess = 2   ElseIf  ConcussionRoll > ( ResistConcussion * 2 )	ConcussionSuccess = 3   ElseIf  ConcussionRoll > ( ResistConcussion * 1.5 )	ConcussionSuccess = 4   ElseIf  ConcussionRoll > ResistConcussion	ConcussionSuccess = 5     Else	ConcussionSuccess = 0   EndIf  Else   if ConcussionRoll > ResistConcussion	; Stagger   Endif  EndIf  if abPowerAttack == False   If ( akSource.HasKeyword(WeapTypeBow))	If PenetrationSuccess == 1	 Self.PushActorAway(Self, 0)	 ;FireSAWD.cast(Target , Target)	 ;SAWDBleedHeavy.cast(Target , Target)	 ;SAWDStagger2.cast(Target , Target)	 ;SAWDBleedModerate.cast(Target , Target)	ElseIf PenetrationSuccess == 2	 ;FireSAWD.cast(Target , Target)	 ;SAWDStagger.cast(Target , Target)	 ;SAWDBleedLight.cast(Target , Target)		EndIf   ElseIf PenetrationSuccess == 1	Self.PushActorAway(Self, 0)	;FireSAWD.cast(Target , Target)	;SAWDKneel.cast(Target , (akSource as ObjectReference))	;SAWDKneel.cast(Target , Target)	;SAWDStagger.cast(Target , Target)	;SAWDBleedHeavy.cast(Target , Target)	;SAWDBleedModerate.cast(Target , Target)	;SAWDBleedLight.cast(Target , Target)   Endif   if Cutsuccess == 1	;SAWDKneel.cast(Target , Target)	;SAWDStagger.cast(Target , Target)	;SAWDBleedHeavy.cast(Target , Target)	;SAWDBleedModerate.cast(Target , Target)	;SAWDBleedLight.cast(Target , Target)   EndIf   if ConcussionSuccess == 1	; Target.kill(Target)   ElseIf ConcussionSuccess == 2	; Target.PushActorAway(Target, 0)	;SAWDDamageHeavy.cast(Target , Target)	;SAWDBleedHeavy.cast(Target , Target)	;SAWDBleedModerate.cast(Target , Target)	;SAWDBleedLight.cast(Target , Target)     ElseIf ConcussionSuccess == 3	;SAWDKneel.cast(Target , Target)	;SAWDDamageModerate.cast(Target , Target)	;SAWDBleedModerate.cast(Target , Target)	;SAWDBleedLight.cast(Target , Target)     ElseIf ConcussionSuccess == 4	;SAWDStagger.cast(Target , Target)	;SAWDDamageLight.cast(Target , Target)	;SAWDBleedLight.cast(Target , Target)  	; Light Damage   ElseIf ConcussionSuccess == 5	;SAWDStagger.cast(Target , Target)	; Stagger Only   EndIf  ElseIf abPowerAttack == True   if ( akSource.HasKeyword(WeapTypeDagger) || akSource.HasKeyword(WeapTypeSword) || akSource.HasKeyword(WeapTypeGreatsword))	if PenetrationSuccess == 1	 ;SAWDDamageLight.cast(Target , Target)	 ;SAWDBleedModerate.cast(Target , Target)	 ;SAWDBleedLight.cast(Target , Target)	EndIf   ElseIf ( akSource.HasKeyword(WeapTypeWarAxe) || akSource.HasKeyword(WeapTypeBattleaxe))	if PenetrationSuccess == 1	 ;SAWDDamageHeavy.cast(Target , Target)	 ;SAWDBleedHeavy.cast(Target , Target)	EndIf   Else	if PenetrationSuccess == 1	 ;SAWDDamageHeavy.cast(Target , Target)	 ;SAWDDamageModerate.cast(Target , Target)	 ;SAWDBleedModerate.cast(Target , Target)	EndIf   EndIf   if ConcussionSuccess == 1	; Target.kill(Target)   ElseIf ConcussionSuccess == 2	; Target.PushActorAway(Target, 0)	;SAWDDamageHeavy.cast(Target , Target)	;SAWDBleedHeavy.cast(Target , Target)	;SAWDBleedModerate.cast(Target , Target)	;SAWDBleedLight.cast(Target , Target)     ElseIf ConcussionSuccess == 3	;SAWDKneel.cast(Target , Target)	;SAWDDamageModerate.cast(Target , Target)	;SAWDBleedModerate.cast(Target , Target)	;SAWDBleedLight.cast(Target , Target)     ElseIf ConcussionSuccess == 4	;SAWDStagger.cast(Target , Target)	;SAWDDamageLight.cast(Target , Target)	;SAWDBleedLight.cast(Target , Target)  	; Light Damage   ElseIf ConcussionSuccess == 5	;SAWDStagger.cast(Target , Target)	; Stagger Only   EndIf  EndIfendifEndIf  ;Debug.MessageBox(" Is Left?: " + (akAggressor as SAWDonHit).GetEquippedWeapon() == akSource )  ; Debug.MessageBox(" Target " + Target )  ; Debug.MessageBox(" PenetrationSuccess " + PenetrationSuccess + " Cutsuccess " + Cutsuccess + " ConcussionSuccess " + ConcussionSuccess )  ; Debug.MessageBox(" PowerAttack " + abPowerAttack + " ResistPenetration " + ResistPenetration + " PenetrationMin " + PenetrationMin + " PenetrationMax " + PenetrationMax + " PenetrationRoll " + PenetrationRoll + " ResistCut " + ResistCut + " CutMin " + CutMin + " CutMax " + CutMax + " CutRoll " + CutRoll + " ResistConcussion " + ResistConcussion + " ConcussionMin " + ConcussionMin + " ConcussionMax " + ConcussionMax + " ConcussionRoll " + ConcussionRoll )  Debug.MessageBox(" aPenetrationMin " + aPenetrationMin + " aPenetrationMax " + aPenetrationMax + " aCutMin " + aCutMin + " aCutMax " + aCutMax + " aConcussionMin " + aConcussionMin + " aConcussionMax " + aConcussionMax )EndEvent


EDIT:
I would think the main parts to look at are the OnObjectEquipped and the OnObjectUnequipped events. But I may very well be mistaken.
User avatar
Neil
 
Posts: 3357
Joined: Sat Jul 14, 2007 5:08 am

Post » Tue Jun 19, 2012 5:21 pm

You should really consider making a bare bone version of the script with just a couple of cases for testing purposes :)

That being said, I've taken a look to the OnObjectUnequipped event. I do not understand what's the point in calling DetectArmorResistances() and DetectWeaponDamages(myWeapon) ( with myWeapon = None ) since you already set everything to zero before calling them.

Apart from that, I think the problem is OnObjectUnequipped here:


Event OnObjectUnequipped(Form akBaseObject, ObjectReference akReference)...if GetEquippedWeapon() == akBaseObject  SetRightDamage()else  SetLeftDamage()endif...

GetEquippedWeapon() shouldn't be the same as akBaseObject, since you have already unequipped that, so it should always setting your left damage variables to zero, even when you unequipped an one handed weapon in the right hand. Maybe you could use two Weapon variables to keep a track on which weapon is equipped/unequipped on each hand instead.
User avatar
DAVId Bryant
 
Posts: 3366
Joined: Wed Nov 14, 2007 11:41 pm

Post » Tue Jun 19, 2012 8:01 pm

Ok, thank you! :-)

I've modified the script. It seems to be working MOSTLY. It is inconsistent, though. Every once in a while, it's as though a weapon is completely ignored by the script, and won't work again until the game is restarted. Other weapons continue to work.

The issue I'm having right now is awkward. If I have two weapons equipped (one in each hand) and I then equip a 2-handed weapon (like a bow), I can unequip the bow from the inventory, and it will re-equip the two weapons with proper values. However, if I unequip the bow (unequip it, not equip something else) by using a hotkey, both original weapons re-equip, but only the right handed one has the proper value. The left weapon gets values set to zero.

Updated script:
Spoiler

Scriptname SAWDOnHit extends Actor{SAWD OnHit Damage Calculation}Keyword property VendorItemAnimalHide autoKeyword property ArmorMaterialDaedric autoKeyword property ArmorMaterialDragonplate autoKeyword property ArmorMaterialDragonscale autoKeyword property ArmorMaterialDwarven autoKeyword property ArmorMaterialEbony autoKeyword property ArmorMaterialElven autoKeyword property ArmorMaterialElvenGilded autoKeyword property ArmorMaterialGlass autoKeyword property ArmorMaterialHide autoKeyword property ArmorMaterialImperialHeavy autoKeyword property ArmorMaterialImperialLight autoKeyword property ArmorMaterialImperialStudded autoKeyword property ArmorMaterialIron autoKeyword property ArmorMaterialIronBanded autoKeyword property ArmorMaterialLeather autoKeyword property ArmorMaterialOrcish autoKeyword property ArmorMaterialScaled autoKeyword property ArmorMaterialSteel autoKeyword property ArmorMaterialSteelPlate autoKeyword property ArmorMaterialStormcloak autoKeyword property ArmorMaterialStudded autoKeyword property ArmorNightingale autoKeyword property ArmorDarkBrotherhood autoKeyword property ArmorCuirass autoKeyword property VendorItemArrow autoKeyword property WeapTypeBoundArrow autoKeyword property WeapTypeBow autoKeyword property WeapTypeDagger autoKeyword property WeapTypeSword autoKeyword property WeapTypeGreatsword autoKeyword property WeapTypeWarAxe autoKeyword property WeapTypeBattleaxe autoKeyword property WeapTypeMace autoKeyword property WeapTypeWarhammer autoKeyword property WeapTypeStaff autoKeyword property WeapMaterialDaedric autoKeyword property WeapMaterialDraugr autoKeyword property WeapMaterialDraugrHoned autoKeyword property WeapMaterialDwarven autoKeyword property WeapMaterialEbony autoKeyword property WeapMaterialElven autoKeyword property WeapMaterialFalmer autoKeyword property WeapMaterialFalmerHoned autoKeyword property WeapMaterialGlass autoKeyword property WeapMaterialImperial autoKeyword property WeapMaterialIron autoKeyword property WeapMaterialOrcish autoKeyword property WeapMaterialSilver autoKeyword property WeapMaterialSteel autoKeyword property WeapMaterialWood autoSPELL PROPERTY SAWDStagger2 AUTOSPELL PROPERTY SAWDStagger AUTOSPELL PROPERTY SAWDKneel AUTOSPELL PROPERTY SAWDDamageHeavy AUTOSPELL PROPERTY SAWDDamageModerate AUTOSPELL PROPERTY SAWDDamageLight AUTOSPELL PROPERTY SAWDBleedHeavy AUTOSPELL PROPERTY SAWDBleedModerate AUTOSPELL PROPERTY SAWDBleedLight AUTOSPELL PROPERTY FireSawd AUTOWeapon property myWeapon autoint PROPERTY myPenetrationMin = 0 AUTOint PROPERTY myPenetrationMax = 0 AUTOint PROPERTY myCutMin = 0 AUTOint PROPERTY myCutMax = 0 AUTOint PROPERTY myConcussionMin = 0 AUTOint PROPERTY myConcussionMax = 0 AUTOint PROPERTY mypPenetrationMin = 0 AUTOint PROPERTY mypPenetrationMax = 0 AUTOint PROPERTY mypConcussionMin = 0 AUTOint PROPERTY mypConcussionMax = 0 AUTOint PROPERTY myRPenetrationMin = 0 AUTOint PROPERTY myRPenetrationMax = 0 AUTOint PROPERTY myRCutMin = 0 AUTOint PROPERTY myRCutMax = 0 AUTOint PROPERTY myRConcussionMin = 0 AUTOint PROPERTY myRConcussionMax = 0 AUTOint PROPERTY myRpPenetrationMin = 0 AUTOint PROPERTY myRpPenetrationMax = 0 AUTOint PROPERTY myRpConcussionMin = 0 AUTOint PROPERTY myRpConcussionMax = 0 AUTOint PROPERTY myLPenetrationMin = 0 AUTOint PROPERTY myLPenetrationMax = 0 AUTOint PROPERTY myLCutMin = 0 AUTOint PROPERTY myLCutMax = 0 AUTOint PROPERTY myLConcussionMin = 0 AUTOint PROPERTY myLConcussionMax = 0 AUTOint PROPERTY myLpPenetrationMin = 0 AUTOint PROPERTY myLpPenetrationMax = 0 AUTOint PROPERTY myLpConcussionMin = 0 AUTOint PROPERTY myLpConcussionMax = 0 AUTOint PROPERTY aPenetrationMin = 0 AUTOint PROPERTY aPenetrationMax = 0 AUTOint PROPERTY aCutMin = 0 AUTOint PROPERTY aCutMax = 0 AUTOint PROPERTY aConcussionMin = 0 AUTOint PROPERTY aConcussionMax = 0 AUTOint PROPERTY apPenetrationMin = 0 AUTOint PROPERTY apPenetrationMax = 0 AUTOint PROPERTY apConcussionMin = 0 AUTOint PROPERTY apConcussionMax = 0 AUTOint ResistPenetration = 0int ResistCut = 0int ResistConcussion = 0int ArrowPenetration = 0int ArrowConcussion = 0int PenetrationMin = 0int PenetrationMax = 0int CutMin = 0int CutMax = 0int ConcussionMin = 0int ConcussionMax = 0int pPenetrationMin = 0int pPenetrationMax = 0int pConcussionMin = 0int pConcussionMax = 0int aPenetrationMin = 0int aPenetrationMax = 0int aCutMin = 0int aCutMax = 0int aConcussionMin = 0int aConcussionMax = 0int apPenetrationMin = 0int apPenetrationMax = 0int apConcussionMin = 0int apConcussionMax = 0int PenetrationRoll = 0int CutRoll = 0int ConcussionRoll = 0int PenetrationSuccess = 0int CutSuccess = 0int ConcussionSuccess = 0Function DetectArmorResistances()If ( Self.WornHasKeyword(ArmorCuirass))  ResistPenetration = 0  ResistCut = 0  ResistConcussion = 0  If ( Self.WornHasKeyword(ArmorMaterialDaedric))   ResistPenetration = 250   ResistCut = 250   ResistConcussion = 250  ElseIf ( Self.WornHasKeyword(ArmorMaterialDragonplate))   ResistPenetration = 225   ResistCut = 225   ResistConcussion = 225  ElseIf ( Self.WornHasKeyword(ArmorMaterialEbony))   ResistPenetration = 200   ResistCut = 200   ResistConcussion = 200  ElseIf ( Self.WornHasKeyword(ArmorMaterialDwarven))   ResistPenetration = 175   ResistCut = 170   ResistConcussion = 175  ElseIf ( Self.WornHasKeyword(ArmorMaterialOrcish))   ResistPenetration = 150   ResistCut = 150   ResistConcussion = 150  ElseIf ( Self.WornHasKeyword(ArmorMaterialDragonscale))   ResistPenetration = 150   ResistCut = 150   ResistConcussion = 150  ElseIf ( Self.WornHasKeyword(ArmorMaterialImperialHeavy))   ResistPenetration = 140   ResistCut = 140   ResistConcussion = 140  ElseIf ( Self.WornHasKeyword(ArmorMaterialSteelPlate))   ResistPenetration = 130   ResistCut = 130   ResistConcussion = 130  ElseIf ( Self.WornHasKeyword(ArmorMaterialGlass))   ResistPenetration = 130   ResistCut = 130   ResistConcussion = 130    ElseIf ( Self.WornHasKeyword(ArmorMaterialSteel))   ResistPenetration = 120   ResistCut = 120   ResistConcussion = 120  ElseIf ( Self.WornHasKeyword(ArmorMaterialIronBanded))   ResistPenetration = 110   ResistCut = 110   ResistConcussion = 110  ElseIf ( Self.WornHasKeyword(ArmorMaterialElvenGilded))   ResistPenetration = 110   ResistCut = 110   ResistConcussion = 110    ElseIf ( Self.WornHasKeyword(ArmorMaterialIron))   ResistPenetration = 100   ResistCut = 100   ResistConcussion = 100  ElseIf ( Self.WornHasKeyword(ArmorMaterialElven))   ResistPenetration = 100   ResistCut = 100   ResistConcussion = 100    ElseIf ( Self.WornHasKeyword(ArmorMaterialScaled))   ResistPenetration = 75   ResistCut = 90   ResistConcussion = 60  ElseIf ( Self.WornHasKeyword(ArmorMaterialImperialStudded))   ResistPenetration = 60   ResistCut = 80   ResistConcussion = 40    ElseIf ( Self.WornHasKeyword(ArmorMaterialStormcloak))   ResistPenetration = 50   ResistCut = 75   ResistConcussion = 35  ElseIf ( Self.WornHasKeyword(ArmorNightingale))   ResistPenetration = 50   ResistCut = 35   ResistConcussion = 30    ElseIf ( Self.WornHasKeyword(ArmorMaterialStudded))   ResistPenetration = 45   ResistCut = 35   ResistConcussion = 30  ElseIf ( Self.WornHasKeyword(ArmorMaterialImperialLight))   ResistPenetration = 40   ResistCut = 30   ResistConcussion = 25  ElseIf ( Self.WornHasKeyword(ArmorMaterialLeather))   ResistPenetration = 40   ResistCut = 30   ResistConcussion = 25    ElseIf ( Self.WornHasKeyword(ArmorDarkBrotherhood))   ResistPenetration = 30   ResistCut = 30   ResistConcussion = 20  ElseIf ( Self.WornHasKeyword(ArmorMaterialHide))   ResistPenetration = 15   ResistCut = 15   ResistConcussion = 15  ElseIf ( Self.WornHasKeyword(VendorItemAnimalHide))   ResistPenetration = 15   ResistCut = 15   ResistConcussion = 15    Else   ResistPenetration = 0   ResistCut = 0   ResistConcussion = 0  EndIfEndIfendFunctionFunction DetectWeaponDamages(Weapon fWeapon)if ( myWeapon.HasKeyword(WeapTypeDagger) || myWeapon.HasKeyword(WeapTypeSword) || myWeapon.HasKeyword(WeapTypeGreatsword) || myWeapon.HasKeyword(WeapTypeWarAxe) || myWeapon.HasKeyword(WeapTypeBattleaxe))  CutMin = 0  CutMax = 0  if ( myWeapon.HasKeyword(WeapMaterialIron))   CutMin = 1   CutMax = 50  ElseIf ( myWeapon.HasKeyword(WeapMaterialSteel))   CutMin = 2   CutMax = 53  ElseIf ( myWeapon.HasKeyword(WeapMaterialImperial))   CutMin = 3   CutMax = 55  ElseIf ( myWeapon.HasKeyword(WeapMaterialSilver))   CutMin = 1   CutMax = 45    ElseIf ( myWeapon.HasKeyword(WeapMaterialOrcish))   CutMin = 4   CutMax = 62  ElseIf ( myWeapon.HasKeyword(WeapMaterialDwarven))   CutMin = 7   CutMax = 65    ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmer))   CutMin = 3   CutMax = 57  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmerHoned))   CutMin = 8   CutMax = 67  ElseIf ( myWeapon.HasKeyword(WeapMaterialElven))   CutMin = 10   CutMax = 70  ElseIf ( myWeapon.HasKeyword(WeapMaterialGlass))   CutMin = 20   CutMax = 75  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugr))   CutMin = 1   CutMax = 48  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugrHoned))   CutMin = 4   CutMax = 59  ElseIf ( myWeapon.HasKeyword(WeapMaterialEbony))   CutMin = 30   CutMax = 90  ElseIf ( myWeapon.HasKeyword(WeapMaterialDaedric))   CutMin = 40   CutMax = 100  ElseIf ( myWeapon.HasKeyword(WeapMaterialWood))   CutMin = 0   CutMax = 0  Else   CutMin = 0   CutMax = 0    EndIfElse  CutMin = 0  CutMax = 0EndIfPenetrationMin = 0PenetrationMax = 0ConcussionMin = 0ConcussionMax = 0If ( myWeapon.HasKeyword(WeapTypeBow))  if ( myWeapon.HasKeyword(WeapMaterialIron))   PenetrationMin = 26   PenetrationMax = 265   ConcussionMin = 1   ConcussionMax = 10    ElseIf ( myWeapon.HasKeyword(WeapMaterialSteel))   PenetrationMin = 27   PenetrationMax = 270   ConcussionMin = 1   ConcussionMax = 10  ElseIf ( myWeapon.HasKeyword(WeapMaterialImperial))   PenetrationMin = 27   PenetrationMax = 275   ConcussionMin = 1   ConcussionMax = 10  ElseIf ( myWeapon.HasKeyword(WeapMaterialSilver))   PenetrationMin = 26   PenetrationMax = 260   ConcussionMin = 1   ConcussionMax = 10    ElseIf ( myWeapon.HasKeyword(WeapMaterialOrcish))   PenetrationMin = 30   PenetrationMax = 300   ConcussionMin = 1   ConcussionMax = 15   ElseIf ( myWeapon.HasKeyword(WeapMaterialDwarven))   PenetrationMin = 34   PenetrationMax = 340   ConcussionMin = 1   ConcussionMax = 20	  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmer))   PenetrationMin = 31   PenetrationMax = 310   ConcussionMin = 1   ConcussionMax = 23    ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmerHoned))   PenetrationMin = 35   PenetrationMax = 350   ConcussionMin = 1   ConcussionMax = 23  ElseIf ( myWeapon.HasKeyword(WeapMaterialElven))   PenetrationMin = 41   PenetrationMax = 410   ConcussionMin = 1   ConcussionMax = 10  ElseIf ( myWeapon.HasKeyword(WeapMaterialGlass))   PenetrationMin = 32   PenetrationMax = 320   ConcussionMin = 1   ConcussionMax = 15  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugr))   PenetrationMin = 16   PenetrationMax = 163   ConcussionMin = 1   ConcussionMax = 10  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugrHoned))   PenetrationMin = 18   PenetrationMax = 185   ConcussionMin = 1   ConcussionMax = 10  ElseIf ( myWeapon.HasKeyword(WeapMaterialEbony))   PenetrationMin = 36   PenetrationMax = 360   ConcussionMin = 3   ConcussionMax = 25  ElseIf ( myWeapon.HasKeyword(WeapMaterialDaedric))   PenetrationMin = 40   PenetrationMax = 400   ConcussionMin = 4   ConcussionMax = 30  ElseIf ( myWeapon.HasKeyword(WeapMaterialWood))   PenetrationMin = 9   PenetrationMax = 90   ConcussionMin = 1   ConcussionMax = 8  Else   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 0   ConcussionMax = 0    EndIf  ; ArrowPenetration = 0  ; ArrowConcussion = 0  ; if ( akProjectile.HasKeyword(WeapMaterialIron))   ; ArrowPenetration = 5   ; ArrowConcussion = 0  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialSteel))   ; ArrowPenetration = 10   ; ArrowConcussion = 1  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialImperial))   ; ArrowPenetration = 15   ; ArrowConcussion = 1  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialSilver))   ; ArrowPenetration = 1   ; ArrowConcussion = 0  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialOrcish))   ; ArrowPenetration = 20   ; ArrowConcussion = 2  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialDwarven))   ; ArrowPenetration = 25   ; ArrowConcussion = 2  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialFalmer))   ; ArrowPenetration = 22   ; ArrowConcussion = 3  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialFalmerHoned))   ; ArrowPenetration = 30   ; ArrowConcussion = 3  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialElven))   ; ArrowPenetration = 50   ; ArrowConcussion = 5  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialGlass))   ; ArrowPenetration = 35   ; ArrowConcussion = 3  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialDraugr))   ; ArrowPenetration = 3   ; ArrowConcussion = 0  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialDraugrHoned))   ; ArrowPenetration = 17   ; ArrowConcussion = 1  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialEbony))   ; ArrowPenetration = 40   ; ArrowConcussion = 4  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialDaedric))   ; ArrowPenetration = 45   ; ArrowConcussion = 4  ; ElseIf ( akProjectile.HasKeyword(WeapMaterialWood))   ; ArrowPenetration = 0   ; ArrowConcussion = 0  ; Else   ; ArrowPenetration = 0   ; ArrowConcussion = 0    ; EndIf  ; PenetrationMin = ( PenetrationMin + ArrowPenetration )  ; PenetrationMax = ( PenetrationMax + ArrowPenetration )  ; ConcussionMin = ( ConcussionMin + ArrowConcussion )  ; ConcussionMax = ( ConcussionMax + ArrowConcussion )Elseif ( myWeapon.HasKeyword(WeapTypeDagger))  if ( myWeapon.HasKeyword(WeapMaterialIron))   PenetrationMin = 1   PenetrationMax = 35   ConcussionMin = 1   ConcussionMax = 10   pPenetrationMin = 10   pPenetrationMax = 130   pConcussionMin = 1   pConcussionMax = 10    ElseIf ( myWeapon.HasKeyword(WeapMaterialSteel))   PenetrationMin = 1   PenetrationMax = 37   ConcussionMin = 1   ConcussionMax = 10   pPenetrationMin = 13   pPenetrationMax = 140   pConcussionMin = 1   pConcussionMax = 10    ElseIf ( myWeapon.HasKeyword(WeapMaterialImperial))   PenetrationMin = 1   PenetrationMax = 39   ConcussionMin = 1   ConcussionMax = 10   pPenetrationMin = 15   pPenetrationMax = 145   pConcussionMin = 1   pConcussionMax = 10  ElseIf ( myWeapon.HasKeyword(WeapMaterialSilver))   PenetrationMin = 1   PenetrationMax = 33   ConcussionMin = 1   ConcussionMax = 10   pPenetrationMin = 8   pPenetrationMax = 125   pConcussionMin = 1   pConcussionMax = 10    ElseIf ( myWeapon.HasKeyword(WeapMaterialOrcish))   PenetrationMin = 2   PenetrationMax = 41   ConcussionMin = 1   ConcussionMax = 15   pPenetrationMin = 20   pPenetrationMax = 180   pConcussionMin = 1   pConcussionMax = 10    ElseIf ( myWeapon.HasKeyword(WeapMaterialDwarven))   PenetrationMin = 5   PenetrationMax = 45   ConcussionMin = 1   ConcussionMax = 20   pPenetrationMin = 25   pPenetrationMax = 200   pConcussionMin = 1   pConcussionMax = 17    ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmer))   PenetrationMin = 3   PenetrationMax = 42   ConcussionMin = 1   ConcussionMax = 23   pPenetrationMin = 20   pPenetrationMax = 185   pConcussionMin = 2   pConcussionMax = 18    ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmerHoned))   PenetrationMin = 5   PenetrationMax = 48   ConcussionMin = 1   ConcussionMax = 23   pPenetrationMin = 32   pPenetrationMax = 225   pConcussionMin = 2   pConcussionMax = 18    ElseIf ( myWeapon.HasKeyword(WeapMaterialElven))   PenetrationMin = 3   PenetrationMax = 40   ConcussionMin = 1   ConcussionMax = 10   pPenetrationMin = 22   pPenetrationMax = 190   pConcussionMin = 1   pConcussionMax = 10  ElseIf ( myWeapon.HasKeyword(WeapMaterialGlass))   PenetrationMin = 4   PenetrationMax = 43   ConcussionMin = 1   ConcussionMax = 15   pPenetrationMin = 24   pPenetrationMax = 230   pConcussionMin = 1   pConcussionMax = 15  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugr))   PenetrationMin = 1   PenetrationMax = 34   ConcussionMin = 1   ConcussionMax = 10   pPenetrationMin = 9   pPenetrationMax = 128   pConcussionMin = 1   pConcussionMax = 10  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugrHoned))   PenetrationMin = 2   PenetrationMax = 40   ConcussionMin = 1   ConcussionMax = 10   pPenetrationMin = 17   pPenetrationMax = 155   pConcussionMin = 1   pConcussionMax = 10  ElseIf ( myWeapon.HasKeyword(WeapMaterialEbony))   PenetrationMin = 7   PenetrationMax = 55   ConcussionMin = 3   ConcussionMax = 25   pPenetrationMin = 40   pPenetrationMax = 255   pConcussionMin = 3   pConcussionMax = 19  ElseIf ( myWeapon.HasKeyword(WeapMaterialDaedric))   PenetrationMin = 10   PenetrationMax = 65   ConcussionMin = 4   ConcussionMax = 30   pPenetrationMin = 75   pPenetrationMax = 300   pConcussionMin = 4   pConcussionMax = 20    ElseIf ( myWeapon.HasKeyword(WeapMaterialWood))   PenetrationMin = 0   PenetrationMax = 10   ConcussionMin = 1   ConcussionMax = 8   pPenetrationMin = 1   pPenetrationMax = 50   pConcussionMin = 1   pConcussionMax = 8  Else   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 0   ConcussionMax = 0   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 0   pConcussionMax = 0    EndIfElseif ( myWeapon.HasKeyword(WeapTypeSword))  if ( myWeapon.HasKeyword(WeapMaterialIron))   PenetrationMin = 1   PenetrationMax = 150   ConcussionMin = 69   ConcussionMax = 138   pPenetrationMin = 15   pPenetrationMax = 135   pConcussionMin = 1   pConcussionMax = 20  ElseIf ( myWeapon.HasKeyword(WeapMaterialSteel))   PenetrationMin = 1   PenetrationMax = 155   ConcussionMin = 71   ConcussionMax = 142   pPenetrationMin = 18   pPenetrationMax = 145   pConcussionMin = 1   pConcussionMax = 20  ElseIf ( myWeapon.HasKeyword(WeapMaterialImperial))   PenetrationMin = 1   PenetrationMax = 160   ConcussionMin = 73   ConcussionMax = 146   pPenetrationMin = 20   pPenetrationMax = 150   pConcussionMin = 1   pConcussionMax = 20  ElseIf ( myWeapon.HasKeyword(WeapMaterialSilver))   PenetrationMin = 1   PenetrationMax = 140   ConcussionMin = 75   ConcussionMax = 150   pPenetrationMin = 13   pPenetrationMax = 130   pConcussionMin = 1   pConcussionMax = 20  ElseIf ( myWeapon.HasKeyword(WeapMaterialOrcish))   PenetrationMin = 5   PenetrationMax = 175   ConcussionMin = 85   ConcussionMax = 170   pPenetrationMin = 25   pPenetrationMax = 185   pConcussionMin = 1   pConcussionMax = 22  ElseIf ( myWeapon.HasKeyword(WeapMaterialDwarven))   PenetrationMin = 15   PenetrationMax = 210   ConcussionMin = 100   ConcussionMax = 200   pPenetrationMin = 30   pPenetrationMax = 205   pConcussionMin = 3   pConcussionMax = 25  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmer))   PenetrationMin = 10   PenetrationMax = 185   ConcussionMin = 105   ConcussionMax = 210   pPenetrationMin = 27   pPenetrationMax = 190   pConcussionMin = 4   pConcussionMax = 27  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmerHoned))   PenetrationMin = 20   PenetrationMax = 225   ConcussionMin = 105   ConcussionMax = 210   pPenetrationMin = 48   pPenetrationMax = 235   pConcussionMin = 4   pConcussionMax = 27  ElseIf ( myWeapon.HasKeyword(WeapMaterialElven))   PenetrationMin = 5   PenetrationMax = 180   ConcussionMin = 80   ConcussionMax = 160   pPenetrationMin = 27   pPenetrationMax = 195   pConcussionMin = 1   pConcussionMax = 20  ElseIf ( myWeapon.HasKeyword(WeapMaterialGlass))   PenetrationMin = 10   PenetrationMax = 200   ConcussionMin = 95   ConcussionMax = 185   pPenetrationMin = 29   pPenetrationMax = 230   pConcussionMin = 2   pConcussionMax = 22  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugr))   PenetrationMin = 1   PenetrationMax = 145   ConcussionMin = 72   ConcussionMax = 144   pPenetrationMin = 14   pPenetrationMax = 133   pConcussionMin = 1   pConcussionMax = 20  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugrHoned))   PenetrationMin = 3   PenetrationMax = 165   ConcussionMin = 72   ConcussionMax = 144   pPenetrationMin = 22   pPenetrationMax = 160   pConcussionMin = 1   pConcussionMax = 20  ElseIf ( myWeapon.HasKeyword(WeapMaterialEbony))   PenetrationMin = 25   PenetrationMax = 255   ConcussionMin = 115   ConcussionMax = 225   pPenetrationMin = 45   pPenetrationMax = 255   pConcussionMin = 5   pConcussionMax = 30  ElseIf ( myWeapon.HasKeyword(WeapMaterialDaedric))   PenetrationMin = 35   PenetrationMax = 285   ConcussionMin = 130   ConcussionMax = 255   pPenetrationMin = 80   pPenetrationMax = 305   pConcussionMin = 5   pConcussionMax = 35  ElseIf ( myWeapon.HasKeyword(WeapMaterialWood))   PenetrationMin = 1   PenetrationMax = 10   ConcussionMin = 35   ConcussionMax = 70   pPenetrationMin = 0   pPenetrationMax = 50   pConcussionMin = 1   pConcussionMax = 15  Else   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 0   ConcussionMax = 0   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 0   pConcussionMax = 0  EndIfElseif ( myWeapon.HasKeyword(WeapTypeGreatsword))  if ( myWeapon.HasKeyword(WeapMaterialIron))   PenetrationMin = 5   PenetrationMax = 165   ConcussionMin = 90   ConcussionMax = 155   pPenetrationMin = 20   pPenetrationMax = 140   pConcussionMin = 2   pConcussionMax = 25  ElseIf ( myWeapon.HasKeyword(WeapMaterialSteel))   PenetrationMin = 5   PenetrationMax = 170   ConcussionMin = 95   ConcussionMax = 160   pPenetrationMin = 23   pPenetrationMax = 150   pConcussionMin = 2   pConcussionMax = 25  ElseIf ( myWeapon.HasKeyword(WeapMaterialImperial))   PenetrationMin = 5   PenetrationMax = 175   ConcussionMin = 100   ConcussionMax = 165   pPenetrationMin = 25   pPenetrationMax = 155   pConcussionMin = 2   pConcussionMax = 25  ElseIf ( myWeapon.HasKeyword(WeapMaterialSilver))   PenetrationMin = 5   PenetrationMax = 155   ConcussionMin = 105   ConcussionMax = 170   pPenetrationMin = 18   pPenetrationMax = 135   pConcussionMin = 2   pConcussionMax = 25  ElseIf ( myWeapon.HasKeyword(WeapMaterialOrcish))   PenetrationMin = 10   PenetrationMax = 190   ConcussionMin = 115   ConcussionMax = 195   pPenetrationMin = 30   pPenetrationMax = 190   pConcussionMin = 3   pConcussionMax = 27  ElseIf ( myWeapon.HasKeyword(WeapMaterialDwarven))   PenetrationMin = 20   PenetrationMax = 225   ConcussionMin = 130   ConcussionMax = 230   pPenetrationMin = 35   pPenetrationMax = 210   pConcussionMin = 5   pConcussionMax = 35  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmer))   PenetrationMin = 15   PenetrationMax = 195   ConcussionMin = 135   ConcussionMax = 245   pPenetrationMin = 32   pPenetrationMax = 195   pConcussionMin = 6   pConcussionMax = 37  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmerHoned))   PenetrationMin = 25   PenetrationMax = 250   ConcussionMin = 135   ConcussionMax = 245   pPenetrationMin = 43   pPenetrationMax = 240   pConcussionMin = 6   pConcussionMax = 37  ElseIf ( myWeapon.HasKeyword(WeapMaterialElven))   PenetrationMin = 10   PenetrationMax = 195   ConcussionMin = 110   ConcussionMax = 180   pPenetrationMin = 32   pPenetrationMax = 200   pConcussionMin = 2   pConcussionMax = 25  ElseIf ( myWeapon.HasKeyword(WeapMaterialGlass))   PenetrationMin = 15   PenetrationMax = 215   ConcussionMin = 120   ConcussionMax = 205   pPenetrationMin = 34   pPenetrationMax = 235   pConcussionMin = 4   pConcussionMax = 30  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugr))   PenetrationMin = 5   PenetrationMax = 160   ConcussionMin = 98   ConcussionMax = 163   pPenetrationMin = 19   pPenetrationMax = 138   pConcussionMin = 2   pConcussionMax = 25  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugrHoned))   PenetrationMin = 7   PenetrationMax = 180   ConcussionMin = 98   ConcussionMax = 163   pPenetrationMin = 27   pPenetrationMax = 165   pConcussionMin = 2   pConcussionMax = 25  ElseIf ( myWeapon.HasKeyword(WeapMaterialEbony))   PenetrationMin = 30   PenetrationMax = 270   ConcussionMin = 160   ConcussionMax = 260   pPenetrationMin = 50   pPenetrationMax = 260   pConcussionMin = 6   pConcussionMax = 40  ElseIf ( myWeapon.HasKeyword(WeapMaterialDaedric))   PenetrationMin = 40   PenetrationMax = 300   ConcussionMin = 180   ConcussionMax = 280   pPenetrationMin = 85   pPenetrationMax = 310   pConcussionMin = 7   pConcussionMax = 45  ElseIf ( myWeapon.HasKeyword(WeapMaterialWood))   PenetrationMin = 1   PenetrationMax = 15   ConcussionMin = 45   ConcussionMax = 90   pPenetrationMin = 1   pPenetrationMax = 50   pConcussionMin = 2   pConcussionMax = 20  Else   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 0   ConcussionMax = 0     pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 0   pConcussionMax = 0  EndIfElseif ( myWeapon.HasKeyword(WeapTypeWarAxe))  if ( myWeapon.HasKeyword(WeapMaterialIron))   PenetrationMin = 5   PenetrationMax = 165   ConcussionMin = 65   ConcussionMax = 145   pPenetrationMin = 90   pPenetrationMax = 180   pConcussionMin = 80   pConcussionMax = 170  ElseIf ( myWeapon.HasKeyword(WeapMaterialSteel))   PenetrationMin = 5   PenetrationMax = 170   ConcussionMin = 68   ConcussionMax = 150   pPenetrationMin = 93   pPenetrationMax = 185   pConcussionMin = 83   pConcussionMax = 175  ElseIf ( myWeapon.HasKeyword(WeapMaterialImperial))   PenetrationMin = 5   PenetrationMax = 175   ConcussionMin = 70   ConcussionMax = 155   pPenetrationMin = 95   pPenetrationMax = 190   pConcussionMin = 85   pConcussionMax = 180  ElseIf ( myWeapon.HasKeyword(WeapMaterialSilver))   PenetrationMin = 5   PenetrationMax = 155   ConcussionMin = 75   ConcussionMax = 160   pPenetrationMin = 87   pPenetrationMax = 175   pConcussionMin = 90   pConcussionMax = 185    ElseIf ( myWeapon.HasKeyword(WeapMaterialOrcish))   PenetrationMin = 10   PenetrationMax = 190   ConcussionMin = 85   ConcussionMax = 180   pPenetrationMin = 110   pPenetrationMax = 215   pConcussionMin = 100   pConcussionMax = 205  ElseIf ( myWeapon.HasKeyword(WeapMaterialDwarven))   PenetrationMin = 20   PenetrationMax = 225   ConcussionMin = 95   ConcussionMax = 200   pPenetrationMin = 120   pPenetrationMax = 235   pConcussionMin = 110   pConcussionMax = 225  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmer))   PenetrationMin = 13   PenetrationMax = 200   ConcussionMin = 100   ConcussionMax = 207   pPenetrationMin = 112   pPenetrationMax = 220   pConcussionMin = 115   pConcussionMax = 233  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmerHoned))   PenetrationMin = 25   PenetrationMax = 245   ConcussionMin = 100   ConcussionMax = 207   pPenetrationMin = 125   pPenetrationMax = 242   pConcussionMin = 115   pConcussionMax = 233  ElseIf ( myWeapon.HasKeyword(WeapMaterialElven))   PenetrationMin = 10   PenetrationMax = 195   ConcussionMin = 80   ConcussionMax = 170   pPenetrationMin = 105   pPenetrationMax = 205   pConcussionMin = 95   pConcussionMax = 195  ElseIf ( myWeapon.HasKeyword(WeapMaterialGlass))   PenetrationMin = 15   PenetrationMax = 215   ConcussionMin = 90   ConcussionMax = 190   pPenetrationMin = 115   pPenetrationMax = 225   pConcussionMin = 105   pConcussionMax = 215  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugr))   PenetrationMin = 5   PenetrationMax = 150   ConcussionMin = 69   ConcussionMax = 153   pPenetrationMin = 89   pPenetrationMax = 178   pConcussionMin = 84   pConcussionMax = 178  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugrHoned))   PenetrationMin = 7   PenetrationMax = 180   ConcussionMin = 69   ConcussionMax = 153   pPenetrationMin = 100   pPenetrationMax = 200   pConcussionMin = 84   pConcussionMax = 178  ElseIf ( myWeapon.HasKeyword(WeapMaterialEbony))   PenetrationMin = 30   PenetrationMax = 270   ConcussionMin = 105   ConcussionMax = 215   pPenetrationMin = 130   pPenetrationMax = 250   pConcussionMin = 120   pConcussionMax = 240  ElseIf ( myWeapon.HasKeyword(WeapMaterialDaedric))   PenetrationMin = 40   PenetrationMax = 300   ConcussionMin = 115   ConcussionMax = 240   pPenetrationMin = 140   pPenetrationMax = 275   pConcussionMin = 130   pConcussionMax = 265  ElseIf ( myWeapon.HasKeyword(WeapMaterialWood))   PenetrationMin = 1   PenetrationMax = 55   ConcussionMin = 35   ConcussionMax = 70   pPenetrationMin = 5   pPenetrationMax = 75   pConcussionMin = 40   pConcussionMax = 90    Else   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 0   ConcussionMax = 0   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 0   pConcussionMax = 0  EndIfElseif ( myWeapon.HasKeyword(WeapTypeBattleaxe))  if ( myWeapon.HasKeyword(WeapMaterialIron))   PenetrationMin = 108   PenetrationMax = 215   ConcussionMin = 93   ConcussionMax = 175   pPenetrationMin = 133   pPenetrationMax = 265   pConcussionMin = 113   pConcussionMax = 215  ElseIf ( myWeapon.HasKeyword(WeapMaterialSteel))   PenetrationMin = 110   PenetrationMax = 220   ConcussionMin = 95   ConcussionMax = 180   pPenetrationMin = 135   pPenetrationMax = 270   pConcussionMin = 115   pConcussionMax = 220  ElseIf ( myWeapon.HasKeyword(WeapMaterialImperial))   PenetrationMin = 113   PenetrationMax = 225   ConcussionMin = 98   ConcussionMax = 185   pPenetrationMin = 138   pPenetrationMax = 275   pConcussionMin = 118   pConcussionMax = 225  ElseIf ( myWeapon.HasKeyword(WeapMaterialSilver))   PenetrationMin = 105   PenetrationMax = 210   ConcussionMin = 100   ConcussionMax = 190   pPenetrationMin = 130   pPenetrationMax = 260   pConcussionMin = 120   pConcussionMax = 230  ElseIf ( myWeapon.HasKeyword(WeapMaterialOrcish))   PenetrationMin = 125   PenetrationMax = 250   ConcussionMin = 110   ConcussionMax = 220   pPenetrationMin = 150   pPenetrationMax = 300   pConcussionMin = 130   pConcussionMax = 260  ElseIf ( myWeapon.HasKeyword(WeapMaterialDwarven))   PenetrationMin = 145   PenetrationMax = 290   ConcussionMin = 130   ConcussionMax = 260   pPenetrationMin = 170   pPenetrationMax = 340   pConcussionMin = 150   pConcussionMax = 300  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmer))   PenetrationMin = 128   PenetrationMax = 255   ConcussionMin = 135   ConcussionMax = 270   pPenetrationMin = 155   pPenetrationMax = 310   pConcussionMin = 155   pConcussionMax = 310  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmerHoned))   PenetrationMin = 150   PenetrationMax = 270   ConcussionMin = 135   ConcussionMax = 270   pPenetrationMin = 175   pPenetrationMax = 350   pConcussionMin = 155   pConcussionMax = 310  ElseIf ( myWeapon.HasKeyword(WeapMaterialElven))   PenetrationMin = 120   PenetrationMax = 240   ConcussionMin = 105   ConcussionMax = 200   pPenetrationMin = 145   pPenetrationMax = 290   pConcussionMin = 125   pConcussionMax = 240  ElseIf ( myWeapon.HasKeyword(WeapMaterialGlass))   PenetrationMin = 135   PenetrationMax = 270   ConcussionMin = 120   ConcussionMax = 240   pPenetrationMin = 160   pPenetrationMax = 320   pConcussionMin = 140   pConcussionMax = 280  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugr))   PenetrationMin = 107   PenetrationMax = 213   ConcussionMin = 97   ConcussionMax = 183   pPenetrationMin = 132   pPenetrationMax = 163   pConcussionMin = 117   pConcussionMax = 123  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugrHoned))   PenetrationMin = 118   PenetrationMax = 235   ConcussionMin = 97   ConcussionMax = 183   pPenetrationMin = 142   pPenetrationMax = 185   pConcussionMin = 117   pConcussionMax = 123  ElseIf ( myWeapon.HasKeyword(WeapMaterialEbony))   PenetrationMin = 155   PenetrationMax = 310   ConcussionMin = 140   ConcussionMax = 280   pPenetrationMin = 180   pPenetrationMax = 360   pConcussionMin = 160   pConcussionMax = 320  ElseIf ( myWeapon.HasKeyword(WeapMaterialDaedric))   PenetrationMin = 175   PenetrationMax = 350   ConcussionMin = 160   ConcussionMax = 320   pPenetrationMin = 200   pPenetrationMax = 400   pConcussionMin = 180   pConcussionMax = 360  ElseIf ( myWeapon.HasKeyword(WeapMaterialWood))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 40   ConcussionMax = 80   pPenetrationMin = 10   pPenetrationMax = 90   pConcussionMin = 55   pConcussionMax = 110  Else   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 0   ConcussionMax = 0   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 0   pConcussionMax = 0  EndIfElseif ( myWeapon.HasKeyword(WeapTypeMace))  if ( myWeapon.HasKeyword(WeapMaterialIron))   PenetrationMin = 65   PenetrationMax = 145   ConcussionMin = 75   ConcussionMax = 155   pPenetrationMin = 80   pPenetrationMax = 170   pConcussionMin = 90   pConcussionMax = 180  ElseIf ( myWeapon.HasKeyword(WeapMaterialSteel))   PenetrationMin = 68   PenetrationMax = 150   ConcussionMin = 78   ConcussionMax = 160   pPenetrationMin = 83   pPenetrationMax = 175   pConcussionMin = 93   pConcussionMax = 185  ElseIf ( myWeapon.HasKeyword(WeapMaterialImperial))   PenetrationMin = 70   PenetrationMax = 155   ConcussionMin = 80   ConcussionMax = 165   pPenetrationMin = 85   pPenetrationMax = 180   pConcussionMin = 95   pConcussionMax = 190  ElseIf ( myWeapon.HasKeyword(WeapMaterialSilver))   PenetrationMin = 75   PenetrationMax = 160   ConcussionMin = 85   ConcussionMax = 170   pPenetrationMin = 90   pPenetrationMax = 185   pConcussionMin = 100   pConcussionMax = 195    ElseIf ( myWeapon.HasKeyword(WeapMaterialOrcish))   PenetrationMin = 85   PenetrationMax = 180   ConcussionMin = 95   ConcussionMax = 190   pPenetrationMin = 100   pPenetrationMax = 205   pConcussionMin = 110   pConcussionMax = 215  ElseIf ( myWeapon.HasKeyword(WeapMaterialDwarven))   PenetrationMin = 95   PenetrationMax = 200   ConcussionMin = 105   ConcussionMax = 210   pPenetrationMin = 110   pPenetrationMax = 225   pConcussionMin = 120   pConcussionMax = 235  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmer))   PenetrationMin = 80   PenetrationMax = 185   ConcussionMin = 110   ConcussionMax = 218   pPenetrationMin = 102   pPenetrationMax = 210   pConcussionMin = 125   pConcussionMax = 242  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmerHoned))   PenetrationMin = 100   PenetrationMax = 208   ConcussionMin = 110   ConcussionMax = 218   pPenetrationMin = 115   pPenetrationMax = 232   pConcussionMin = 125   pConcussionMax = 242  ElseIf ( myWeapon.HasKeyword(WeapMaterialElven))   PenetrationMin = 80   PenetrationMax = 170   ConcussionMin = 90   ConcussionMax = 180   pPenetrationMin = 95   pPenetrationMax = 195   pConcussionMin = 105   pConcussionMax = 205  ElseIf ( myWeapon.HasKeyword(WeapMaterialGlass))   PenetrationMin = 90   PenetrationMax = 190   ConcussionMin = 100   ConcussionMax = 200   pPenetrationMin = 105   pPenetrationMax = 215   pConcussionMin = 115   pConcussionMax = 225  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugr))   PenetrationMin = 63   PenetrationMax = 143   ConcussionMin = 79   ConcussionMax = 163   pPenetrationMin = 68   pPenetrationMax = 168   pConcussionMin = 94   pConcussionMax = 188  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugrHoned))   PenetrationMin = 75   PenetrationMax = 165   ConcussionMin = 79   ConcussionMax = 163   pPenetrationMin = 90   pPenetrationMax = 185   pConcussionMin = 94   pConcussionMax = 188  ElseIf ( myWeapon.HasKeyword(WeapMaterialEbony))   PenetrationMin = 105   PenetrationMax = 215   ConcussionMin = 115   ConcussionMax = 225   pPenetrationMin = 120   pPenetrationMax = 240   pConcussionMin = 130   pConcussionMax = 250  ElseIf ( myWeapon.HasKeyword(WeapMaterialDaedric))   PenetrationMin = 115   PenetrationMax = 240   ConcussionMin = 125   ConcussionMax = 250   pPenetrationMin = 130   pPenetrationMax = 265   pConcussionMin = 140   pConcussionMax = 275  ElseIf ( myWeapon.HasKeyword(WeapMaterialWood))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 10   ConcussionMax = 35   pPenetrationMin = 1   pPenetrationMax = 55   pConcussionMin = 50   pConcussionMax = 100  Else   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 0   ConcussionMax = 0   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 0   pConcussionMax = 0  EndIfElseif ( myWeapon.HasKeyword(WeapTypeWarhammer))  if ( myWeapon.HasKeyword(WeapMaterialIron))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 108   ConcussionMax = 215   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 133   pConcussionMax = 265  ElseIf ( myWeapon.HasKeyword(WeapMaterialSteel))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 110   ConcussionMax = 220   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 135   pConcussionMax = 270  ElseIf ( myWeapon.HasKeyword(WeapMaterialImperial))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 113   ConcussionMax = 225   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 138   pConcussionMax = 275  ElseIf ( myWeapon.HasKeyword(WeapMaterialSilver))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 115   ConcussionMax = 230   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 140   pConcussionMax = 280  ElseIf ( myWeapon.HasKeyword(WeapMaterialOrcish))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 125   ConcussionMax = 250   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 150   pConcussionMax = 300  ElseIf ( myWeapon.HasKeyword(WeapMaterialDwarven))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 145   ConcussionMax = 290   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 170   pConcussionMax = 340  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmer))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 150   ConcussionMax = 300   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 175   pConcussionMax = 350  ElseIf ( myWeapon.HasKeyword(WeapMaterialFalmerHoned))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 155   ConcussionMax = 305   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 175   pConcussionMax = 355  ElseIf ( myWeapon.HasKeyword(WeapMaterialElven))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 120   ConcussionMax = 240   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 145   pConcussionMax = 290  ElseIf ( myWeapon.HasKeyword(WeapMaterialGlass))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 135   ConcussionMax = 270   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 160   pConcussionMax = 320  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugr))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 105   ConcussionMax = 213   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 136   pConcussionMax = 273  ElseIf ( myWeapon.HasKeyword(WeapMaterialDraugrHoned))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 105   ConcussionMax = 218   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 136   pConcussionMax = 278  ElseIf ( myWeapon.HasKeyword(WeapMaterialEbony))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 155   ConcussionMax = 310   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 180   pConcussionMax = 360  ElseIf ( myWeapon.HasKeyword(WeapMaterialDaedric))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 175   ConcussionMax = 350   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 200   pConcussionMax = 400  ElseIf ( myWeapon.HasKeyword(WeapMaterialWood))   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 50   ConcussionMax = 100   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 75   pConcussionMax = 150  Else   PenetrationMin = 0   PenetrationMax = 0   ConcussionMin = 0   ConcussionMax = 0   pPenetrationMin = 0   pPenetrationMax = 0   pConcussionMin = 0   pConcussionMax = 0    EndIfEndIfSetDamage()endFunctionFunction SetDamage()myPenetrationMin = PenetrationMinmyPenetrationMax = PenetrationMaxmyCutMin = CutMinmyCutMax = CutMaxmyConcussionMin = ConcussionMinmyConcussionMax = ConcussionMaxmypPenetrationMin = pPenetrationMinmypPenetrationMax = pPenetrationMaxmypConcussionMin = pConcussionMinmypConcussionMax = pConcussionMaxif GetEquippedWeapon(True) == myWeaponSetLeftDamage()elseif GetEquippedWeapon() == myWeaponSetRightDamage()endifendFunctionFunction SetRightDamage()if (Self.GetEquippedItemType(1) == 0)myRPenetrationMin = 0myRPenetrationMax = 0myRCutMin = 0myRCutMax = 0myRConcussionMin = 0myRConcussionMax = 0myRpPenetrationMin = 0myRpPenetrationMax = 0myRpConcussionMin = 0myRpConcussionMax = 0elsemyRPenetrationMin = myPenetrationMinmyRPenetrationMax = myPenetrationMaxmyRCutMin = myCutMinmyRCutMax = myCutMaxmyRConcussionMin = myConcussionMinmyRConcussionMax = myConcussionMaxmyRpPenetrationMin = mypPenetrationMinmyRpPenetrationMax = mypPenetrationMaxmyRpConcussionMin = mypConcussionMinmyRpConcussionMax = mypConcussionMaxendifDebug.MessageBox("SetRight	Right " + myRPenetrationMax + " Left " + myLPenetrationMax )endFunctionFunction SetLeftDamage()if (Self.GetEquippedItemType(0) == 0)myLPenetrationMin = 0myLPenetrationMax = 0myLCutMin = 0myLCutMax = 0myLConcussionMin = 0myLConcussionMax = 0myLpPenetrationMin = 0myLpPenetrationMax = 0myLpConcussionMin = 0myLpConcussionMax = 0elsemyLPenetrationMin = myPenetrationMinmyLPenetrationMax = myPenetrationMaxmyLCutMin = myCutMinmyLCutMax = myCutMaxmyLConcussionMin = myConcussionMinmyLConcussionMax = myConcussionMaxmyLpPenetrationMin = mypPenetrationMinmyLpPenetrationMax = mypPenetrationMaxmyLpConcussionMin = mypConcussionMinmyLpConcussionMax = mypConcussionMaxendifDebug.MessageBox("SetLeft	Right " + myRPenetrationMax + " Left " + myLPenetrationMax )endFunctionEvent OnObjectEquipped(Form akBaseObject, ObjectReference akReference)if akBaseObject as Armorif ( akBaseObject.HasKeyword(ArmorCuirass))  ResistPenetration = 0  ResistCut = 0  ResistConcussion = 0  DetectArmorResistances()endifendIfif akBaseObject as WeaponmyWeapon = (akBaseObject as Weapon)DetectWeaponDamages(myWeapon)endIfendEventEvent OnObjectUnequipped(Form akBaseObject, ObjectReference akReference)if akBaseObject as Armorif ( akBaseObject.HasKeyword(ArmorCuirass))  ResistPenetration = 0  ResistCut = 0  ResistConcussion = 0  DetectArmorResistances()endifendIfif akBaseObject as WeaponmyLPenetrationMin = 0myLPenetrationMax = 0myLCutMin = 0myLCutMax = 0myLConcussionMin = 0myLConcussionMax = 0myLpPenetrationMin = 0myLpPenetrationMax = 0myLpConcussionMin = 0myLpConcussionMax = 0myRPenetrationMin = 0myRPenetrationMax = 0myRCutMin = 0myRCutMax = 0myRConcussionMin = 0myRConcussionMax = 0myRpPenetrationMin = 0myRpPenetrationMax = 0myRpConcussionMin = 0myRpConcussionMax = 0endIfendEventEvent OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, \bool abBashAttack, bool abHitBlocked)if (akSource as spell) == NONEif abBashAttack == False  aPenetrationMin = 0  aPenetrationMax = 0  aCutMin = 0  aCutMax = 0  aConcussionMin = 0  aConcussionMax = 0  apPenetrationMin = 0  apPenetrationMax = 0  apConcussionMin = 0  apConcussionMax = 0  if (akAggressor as SAWDonHit).GetEquippedWeapon(True) == akSource   aPenetrationMin = (akAggressor as SAWDonHit).myLPenetrationMin   aPenetrationMax = (akAggressor as SAWDonHit).myLPenetrationMax   aCutMin = (akAggressor as SAWDonHit).myLCutMin   aCutMax = (akAggressor as SAWDonHit).myLCutMax   aConcussionMin = (akAggressor as SAWDonHit).myLConcussionMin   aConcussionMax = (akAggressor as SAWDonHit).myLConcussionMax   apPenetrationMin = (akAggressor as SAWDonHit).myLpPenetrationMin   apPenetrationMax = (akAggressor as SAWDonHit).myLpPenetrationMax   apConcussionMin = (akAggressor as SAWDonHit).myLpConcussionMin   apConcussionMax = (akAggressor as SAWDonHit).myLpConcussionMax  else   aPenetrationMin = (akAggressor as SAWDonHit).myRPenetrationMin   aPenetrationMax = (akAggressor as SAWDonHit).myRPenetrationMax   aCutMin = (akAggressor as SAWDonHit).myRCutMin   aCutMax = (akAggressor as SAWDonHit).myRCutMax   aConcussionMin = (akAggressor as SAWDonHit).myRConcussionMin   aConcussionMax = (akAggressor as SAWDonHit).myRConcussionMax   apPenetrationMin = (akAggressor as SAWDonHit).myRpPenetrationMin   apPenetrationMax = (akAggressor as SAWDonHit).myRpPenetrationMax   apConcussionMin = (akAggressor as SAWDonHit).myRpConcussionMin   apConcussionMax = (akAggressor as SAWDonHit).myRpConcussionMax  endif  PenetrationRoll = 0  CutRoll = 0  ConcussionRoll = 0  PenetrationSuccess = 0  CutSuccess = 0  ConcussionSuccess = 0  if abPowerAttack == False   PenetrationRoll = utility.RandomInt( aPenetrationMin , aPenetrationMax )   CutRoll = utility.RandomInt( aCutMin , aCutMax )   ConcussionRoll = utility.RandomInt( aConcussionMin , aConcussionMax )  elseif abPowerAttack == True   PenetrationRoll = utility.RandomInt( apPenetrationMin , apPenetrationMax )   CutRoll = utility.RandomInt( aCutMin , aCutMax )   ConcussionRoll = utility.RandomInt( apConcussionMin , apConcussionMax )  endif  If abHitBlocked == False   If ( akSource.HasKeyword(WeapTypeBow))	if PenetrationRoll > ( ResistPenetration * 1.2 )	 PenetrationSuccess = 1	ElseIf  PenetrationRoll > ResistPenetration	 PenetrationSuccess = 2  	Else	 PenetrationSuccess = 0	EndIf     ElseIf PenetrationRoll > ResistPenetration	ResistCut = 0	PenetrationSuccess = 1   Else	PenetrationSuccess = 0   EndIf   if CutRoll > ResistCut	CutSuccess = 1   Else	CutSuccess = 0   EndIf   if ConcussionRoll > ( ResistConcussion * 3 )	ConcussionSuccess = 1   ElseIf  ConcussionRoll > ( ResistConcussion * 2.5 )	ConcussionSuccess = 2   ElseIf  ConcussionRoll > ( ResistConcussion * 2 )	ConcussionSuccess = 3   ElseIf  ConcussionRoll > ( ResistConcussion * 1.5 )	ConcussionSuccess = 4   ElseIf  ConcussionRoll > ResistConcussion	ConcussionSuccess = 5     Else	ConcussionSuccess = 0   EndIf  Else   if ConcussionRoll > ResistConcussion	; Stagger   Endif  EndIf  if abPowerAttack == False   If ( akSource.HasKeyword(WeapTypeBow))	If PenetrationSuccess == 1	 Self.PushActorAway(Self, 0)	 ;FireSAWD.cast(Target , Target)	 ;SAWDBleedHeavy.cast(Target , Target)	 ;SAWDStagger2.cast(Target , Target)	 ;SAWDBleedModerate.cast(Target , Target)	ElseIf PenetrationSuccess == 2	 ;FireSAWD.cast(Target , Target)	 ;SAWDStagger.cast(Target , Target)	 ;SAWDBleedLight.cast(Target , Target)		EndIf   ElseIf PenetrationSuccess == 1	Self.PushActorAway(Self, 0)	;FireSAWD.cast(Target , Target)	;SAWDKneel.cast(Target , (akSource as ObjectReference))	;SAWDKneel.cast(Target , Target)	;SAWDStagger.cast(Target , Target)	;SAWDBleedHeavy.cast(Target , Target)	;SAWDBleedModerate.cast(Target , Target)	;SAWDBleedLight.cast(Target , Target)   Endif   if Cutsuccess == 1	;SAWDKneel.cast(Target , Target)	;SAWDStagger.cast(Target , Target)	;SAWDBleedHeavy.cast(Target , Target)	;SAWDBleedModerate.cast(Target , Target)	;SAWDBleedLight.cast(Target , Target)   EndIf   if ConcussionSuccess == 1	; Target.kill(Target)   ElseIf ConcussionSuccess == 2	; Target.PushActorAway(Target, 0)	;SAWDDamageHeavy.cast(Target , Target)	;SAWDBleedHeavy.cast(Target , Target)	;SAWDBleedModerate.cast(Target , Target)	;SAWDBleedLight.cast(Target , Target)     ElseIf ConcussionSuccess == 3	;SAWDKneel.cast(Target , Target)	;SAWDDamageModerate.cast(Target , Target)	;SAWDBleedModerate.cast(Target , Target)	;SAWDBleedLight.cast(Target , Target)     ElseIf ConcussionSuccess == 4	;SAWDStagger.cast(Target , Target)	;SAWDDamageLight.cast(Target , Target)	;SAWDBleedLight.cast(Target , Target)  	; Light Damage   ElseIf ConcussionSuccess == 5	;SAWDStagger.cast(Target , Target)	; Stagger Only   EndIf  ElseIf abPowerAttack == True   if ( akSource.HasKeyword(WeapTypeDagger) || akSource.HasKeyword(WeapTypeSword) || akSource.HasKeyword(WeapTypeGreatsword))	if PenetrationSuccess == 1	 ;SAWDDamageLight.cast(Target , Target)	 ;SAWDBleedModerate.cast(Target , Target)	 ;SAWDBleedLight.cast(Target , Target)	EndIf   ElseIf ( akSource.HasKeyword(WeapTypeWarAxe) || akSource.HasKeyword(WeapTypeBattleaxe))	if PenetrationSuccess == 1	 ;SAWDDamageHeavy.cast(Target , Target)	 ;SAWDBleedHeavy.cast(Target , Target)	EndIf   Else	if PenetrationSuccess == 1	 ;SAWDDamageHeavy.cast(Target , Target)	 ;SAWDDamageModerate.cast(Target , Target)	 ;SAWDBleedModerate.cast(Target , Target)	EndIf   EndIf   if ConcussionSuccess == 1	; Target.kill(Target)   ElseIf ConcussionSuccess == 2	; Target.PushActorAway(Target, 0)	;SAWDDamageHeavy.cast(Target , Target)	;SAWDBleedHeavy.cast(Target , Target)	;SAWDBleedModerate.cast(Target , Target)	;SAWDBleedLight.cast(Target , Target)     ElseIf ConcussionSuccess == 3	;SAWDKneel.cast(Target , Target)	;SAWDDamageModerate.cast(Target , Target)	;SAWDBleedModerate.cast(Target , Target)	;SAWDBleedLight.cast(Target , Target)     ElseIf ConcussionSuccess == 4	;SAWDStagger.cast(Target , Target)	;SAWDDamageLight.cast(Target , Target)	;SAWDBleedLight.cast(Target , Target)  	; Light Damage   ElseIf ConcussionSuccess == 5	;SAWDStagger.cast(Target , Target)	; Stagger Only   EndIf  EndIfendifEndIf  ;Debug.MessageBox(" Is Left?: " + (akAggressor as SAWDonHit).GetEquippedWeapon() == akSource )  ; Debug.MessageBox(" Target " + Target )  ; Debug.MessageBox(" PenetrationSuccess " + PenetrationSuccess + " Cutsuccess " + Cutsuccess + " ConcussionSuccess " + ConcussionSuccess )  ; Debug.MessageBox(" PowerAttack " + abPowerAttack + " ResistPenetration " + ResistPenetration + " PenetrationMin " + PenetrationMin + " PenetrationMax " + PenetrationMax + " PenetrationRoll " + PenetrationRoll + " ResistCut " + ResistCut + " CutMin " + CutMin + " CutMax " + CutMax + " CutRoll " + CutRoll + " ResistConcussion " + ResistConcussion + " ConcussionMin " + ConcussionMin + " ConcussionMax " + ConcussionMax + " ConcussionRoll " + ConcussionRoll )  Debug.MessageBox(" aPenetrationMin " + aPenetrationMin + " aPenetrationMax " + aPenetrationMax + " aCutMin " + aCutMin + " aCutMax " + aCutMax + " aConcussionMin " + aConcussionMin + " aConcussionMax " + aConcussionMax )EndEvent

Once again, it's mainly the OnObjectEquipped and OnObjectUnequipped events as well as the Set(Right/Left)Damage functions that are probably causing the problem.
User avatar
Nymph
 
Posts: 3487
Joined: Thu Sep 21, 2006 1:17 pm

Post » Tue Jun 19, 2012 9:00 pm

Have you considered that maybe the left hand weapon never actually gets "un-equipped"? I mean, sure, when you equip a 2 handed weapon you no longer see the left hand weapon anymore. We know that all 2 handed weapons are considered to be equipped on the right hand, which means that the previous right hand weapon was un-equipped. But nothing tells us that the game recognizes the left hand weapon as being unequipped as well.
User avatar
lexy
 
Posts: 3439
Joined: Tue Jul 11, 2006 6:37 pm

Post » Tue Jun 19, 2012 4:35 pm

Thank you! I changed the OnObjectUnequip event to the following...

Event OnObjectEquipped(Form akBaseObject, ObjectReference akReference)if akBaseObject as Armorif ( akBaseObject.HasKeyword(ArmorCuirass))  ResistPenetration = 0  ResistCut = 0  ResistConcussion = 0  DetectArmorResistances()endifendIfif akBaseObject as WeaponmyWeapon = (akBaseObject as Weapon)DetectWeaponDamages(myWeapon)endIfendEventEvent OnObjectUnequipped(Form akBaseObject, ObjectReference akReference)if akBaseObject as Armorif ( akBaseObject.HasKeyword(ArmorCuirass))  ResistPenetration = 0  ResistCut = 0  ResistConcussion = 0  DetectArmorResistances()endifendIfif akBaseObject as Weaponif (Self.GetEquippedItemType(0) == 0)  myLPenetrationMin = 0  myLPenetrationMax = 0  myLCutMin = 0  myLCutMax = 0  myLConcussionMin = 0  myLConcussionMax = 0  myLpPenetrationMin = 0  myLpPenetrationMax = 0  myLpConcussionMin = 0  myLpConcussionMax = 0endifif (Self.GetEquippedItemType(1) == 0)  myRPenetrationMin = 0  myRPenetrationMax = 0  myRCutMin = 0  myRCutMax = 0  myRConcussionMin = 0  myRConcussionMax = 0  myRpPenetrationMin = 0  myRpPenetrationMax = 0  myRpConcussionMin = 0  myRpConcussionMax = 0endIfendifEndEvent


It seems to be working pretty well. However, there does seem to be a bug. I had an iron sword in my left hand and an elven dagger in my right. Both had proper values. I equipped a daedric bow. It had the proper value. Then I unequipped the bow which re-equipped the sword and dagger once more. According to my debug message box, the values were still accurate. However, the iron sword no longer registered when it attacked. Every attack should have given me a message box listing all of its values. It should have also caused a "pushactoraway" effect, but it did not. It's as though the script completely misses that particular weapon. I dropped it and picked up another just like it... the script still did not recognize it.

It only seems to be happening to that particular weapon, not the others. Though I've only tested a few other types. But the script does not ALWAYS ignore it... only after certain things. It's got me confused.
User avatar
Steven Hardman
 
Posts: 3323
Joined: Sun Jun 10, 2007 5:12 pm


Return to V - Skyrim