Stay down!

Post » Wed Jun 20, 2012 5:26 am

How in the world can you keep an actor on the ground without killing them or knock them down by using a paralyze effect?

I've tried "PushActorAway". I've tried to apply a paralyze effect after that. I've tried SetUnconscious. I've tried a combination of all of those.

It seems that no matter what I try, if I knock the actor down by using PushActorAway, it immediately plays the animation to get up.

I really don't even know what to try next. I just don't want a lot of twitchiness if I can help it.

Thank you! :-)
User avatar
Eilidh Brian
 
Posts: 3504
Joined: Mon Jun 19, 2006 10:45 am

Post » Tue Jun 19, 2012 2:00 pm

Could you just kill them via script then resurrect them after?
User avatar
jasminε
 
Posts: 3511
Joined: Mon Jan 29, 2007 4:12 am

Post » Wed Jun 20, 2012 1:46 am

You might try to put them in 'BleedOut' State indefinitely, or untill you want them to get back to normal state.

Try this function:

http://www.creationkit.com/SetNoBleedoutRecovery_-_Actor

With that set, try put them into bleedout mode


OR, if you want them to stay ..... flat out on the ground, but not 'Dead', you can try to make actor 'Protected' (like other companion, or house carls), and call damageAV("Health", hugeAmount) on them. They will lay on the ground, 'playing dead' until their health regenerated to 1.hp
User avatar
Beulah Bell
 
Posts: 3372
Joined: Thu Nov 23, 2006 7:08 pm

Post » Wed Jun 20, 2012 5:17 am

Could you just kill them via script then resurrect them after?

I'm guessing that's possible, though I'm not sure of the results. It could be the player. It could be a ghost or something like that. It could also make them disappear then reappear.

I just want a prolonged ragdoll is all. Even a paralyze effect once the actor is down could work if necessary. But I do want the ragdoll fall effect.
User avatar
lilmissparty
 
Posts: 3469
Joined: Sun Jul 23, 2006 7:51 pm

Post » Wed Jun 20, 2012 2:50 am

You might try to put them in 'BleedOut' State indefinitely, or untill you want them to get back to normal state.

Try this function:

http://www.creationkit.com/SetNoBleedoutRecovery_-_Actor

With that set, try put them into bleedout mode

Ah, thank you... but what is BleedOut mode actually?
User avatar
Kyra
 
Posts: 3365
Joined: Mon Jan 29, 2007 8:24 am

Post » Tue Jun 19, 2012 8:38 pm

I was under the impression that BleedOut mode was the sort of awkward limping/crouching thing essential NPCs do if you try to kill them, or normal NPCs when they have really low health.
User avatar
Katey Meyer
 
Posts: 3464
Joined: Sat Dec 30, 2006 10:14 pm

Post » Tue Jun 19, 2012 2:00 pm

I just made edit to my prev post, regarding making actor lie flat on the ground.

To your question, BleedOut mode is when actor is near death, and playing 'crawling Idle Animation', saying stuff like "Not like this......", "If I could just.....Stand up".......

Update:

Gosh, I got ninja-ed too much >.<, twice in a row.........

- Essential = Cannot die, no matter what
- Protected = Can only be killed by player.
User avatar
Abi Emily
 
Posts: 3435
Joined: Wed Aug 09, 2006 7:59 am

Post » Tue Jun 19, 2012 7:50 pm

OR, if you want them to stay ..... flat out on the ground, but not 'Dead', you can try to make actor 'Protected' (like other companion, or house carls), and call damageAV("Health", hugeAmount) on them. They will lay on the ground, 'playing dead' until their health regenerated to 1.hp

Ah, are they laying down or on their knees?
User avatar
Dj Matty P
 
Posts: 3398
Joined: Sat Jun 09, 2007 12:31 am

Post » Wed Jun 20, 2012 5:38 am

Ah, are they laying down or on their knees?

laying FLAT down with their assess on the ground
User avatar
Lakyn Ellery
 
Posts: 3447
Joined: Sat Jan 27, 2007 1:02 pm

Post » Tue Jun 19, 2012 10:04 pm

Haha, it certainly does keep them down, thank you.
Sadly, it seems that it still has the same issue with animations, though.
Even when protected, if the health runs out right after the actor begins to get up, they will continue to stand up, then they just stand there.

You would think there would be a check for that while the animation is playing. If they still have health as they get up, you can knock them back down. But if there is no health left, there is nothing you can do. I'm so confused :-P
User avatar
Enny Labinjo
 
Posts: 3480
Joined: Tue Aug 01, 2006 3:04 pm

Post » Wed Jun 20, 2012 5:54 am

Ah, yes, that :tongue: I got that too, but not too often.

I think you could check right before using the damageAV("health", hugeAmount). If their health is quite low, use pushActorAway(player, 1) to put them in ragdoll mode first, then apply damageAV. Its just a theory.

But, what are you trying to do? it would be easier for me to get the big picture before I could give you the most feasible solution.

*EDIT: You could also check if they are playing getup animation by

actor.GetAnimationVariableInt("iGetUpType") > 0
User avatar
Dark Mogul
 
Posts: 3438
Joined: Tue Feb 20, 2007 11:51 am

Post » Wed Jun 20, 2012 4:58 am

Actually, I used a bleeding spell instead of the damageAV... seeing that I want to actually kill the target if his health runs out.

You can read more about what I've tried here in http://www.gamesas.com/topic/1355805-the-dead-rise-please-help/.

Also, this is my script that I'm using. The main part of the "knockout" effect I want is under the OnHit event where I apply things to happen based on the amount of concussion level of a strike. I want a simple knockdown/ragdoll effect, but there may very well be bleeding damage at any given time. I can reproduce the actor getting up when dead quite frequently, sadly.

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 AUTOSPELL PROPERTY SAWDParalyze 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 AUTO int 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 AUTO int 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 AUTO int PROPERTY myLpConcussionMin = 0 AUTOint PROPERTY myLpConcussionMax = 0 AUTOint PROPERTY aPenetrationMin = 0 AUTOint PROPERTY aPenetrationMax = 0 AUTO int 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 = 0 int CutMin = 0int CutMax = 0int ConcussionMin = 0int ConcussionMax = 0int pPenetrationMin = 0int pPenetrationMax = 0 int pConcussionMin = 0int pConcussionMax = 0int aPenetrationMin = 0int aPenetrationMax = 0 int 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 = 1  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  EndIfEndIfResistConcussion = ResistConcussion + 1endFunctionFunction 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 = myConcussionMin + 1myRConcussionMax = myConcussionMax + 1myRpPenetrationMin = mypPenetrationMinmyRpPenetrationMax = mypPenetrationMaxmyRpConcussionMin = mypConcussionMin + 1myRpConcussionMax = mypConcussionMax + 1endif;Debug.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 = myConcussionMin + 1myLConcussionMax = myConcussionMax + 1myLpPenetrationMin = mypPenetrationMinmyLpPenetrationMax = mypPenetrationMaxmyLpConcussionMin = mypConcussionMin + 1myLpConcussionMax = mypConcussionMax + 1endif;Debug.MessageBox("SetLeft    Right " + myRPenetrationMax + " Left " + myLPenetrationMax )endFunctionEvent OnObjectEquipped(Form akBaseObject, ObjectReference akReference)if akBaseObject as Armorif ( akBaseObject.HasKeyword(ArmorCuirass))  ResistPenetration = 0  ResistCut = 0  ResistConcussion = 1  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 = 1  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 = 0endIfendifEndEventEvent 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 ) + 1   CutRoll = utility.RandomInt( aCutMin , aCutMax ) + 1   ConcussionRoll = utility.RandomInt( aConcussionMin , aConcussionMax ) + 1  elseif abPowerAttack == True   PenetrationRoll = utility.RandomInt( apPenetrationMin , apPenetrationMax ) + 1   CutRoll = utility.RandomInt( aCutMin , aCutMax ) + 1   ConcussionRoll = utility.RandomInt( apConcussionMin , apConcussionMax ) + 1  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 > 200) && (ConcussionRoll > ( ResistConcussion * 3 ))    ConcussionSuccess = 1   ElseIf  (ConcussionRoll > 100) && ( 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    SAWDStagger.cast(Self , Self)   Endif  EndIf   if abPowerAttack == False   If ( akSource.HasKeyword(WeapTypeBow))    If PenetrationSuccess == 1	 ;Self.PushActorAway(Self, 0)	 ;FireSAWD.cast(Self , Self)	 ;SAWDBleedHeavy.cast(Self , Self)	 ;SAWDStagger2.cast(Self , Self)	 SAWDKneel.cast(Self , Self)	 SAWDBleedModerate.cast(Self , Self)    ElseIf PenetrationSuccess == 2	 SAWDStagger.cast(Self , Self)	 SAWDBleedLight.cast(Self , Self)	    EndIf   ElseIf PenetrationSuccess == 1    ;Self.PushActorAway(Self, 0)    ;FireSAWD.cast(Self , Self)    ;SAWDKneel.cast(Self , Self)    ;SAWDStagger.cast(Self , Self)    SAWDBleedHeavy.cast(Self , Self)    ;SAWDBleedModerate.cast(Self , Self)    ;SAWDBleedLight.cast(Self , Self)   Endif   if Cutsuccess == 1    SAWDKneel.cast(Self , Self)    ;SAWDStagger.cast(Self , Self)    ;SAWDBleedHeavy.cast(Self , Self)    ;SAWDBleedModerate.cast(Self , Self)    ;SAWDBleedLight.cast(Self , Self)   EndIf   if ConcussionSuccess == 1    Self.kill()   ElseIf ConcussionSuccess == 2    Self.PushActorAway(Self, 0)    ;Self.SetUnconscious()    ;SAWDDamageHeavy.cast(Self , Self)    ;SAWDBleedHeavy.cast(Self , Self)    ;SAWDBleedModerate.cast(Self , Self)    ;SAWDBleedLight.cast(Self , Self)    ;SAWDParalyze.cast(Self , Self)   ElseIf ConcussionSuccess == 3    SAWDKneel.cast(Self , Self)    ;SAWDDamageModerate.cast(Self , Self)    ;SAWDBleedModerate.cast(Self , Self)    SAWDBleedLight.cast(Self , Self)      ElseIf ConcussionSuccess == 4    SAWDStagger.cast(Self , Self)    ;SAWDDamageLight.cast(Self , Self)    ;SAWDBleedLight.cast(Self , Self)      ; Light Damage   ElseIf ConcussionSuccess == 5    SAWDStagger.cast(Self , Self)    ; Stagger Only   EndIf  ElseIf abPowerAttack == True   if ( akSource.HasKeyword(WeapTypeDagger) || akSource.HasKeyword(WeapTypeSword) || akSource.HasKeyword(WeapTypeGreatsword))    if PenetrationSuccess == 1	 ;SAWDDamageLight.cast(Self , Self)	 SAWDBleedModerate.cast(Self , Self)	 ;SAWDBleedLight.cast(Self , Self)    EndIf   ElseIf ( akSource.HasKeyword(WeapTypeWarAxe) || akSource.HasKeyword(WeapTypeBattleaxe))    if PenetrationSuccess == 1	 ;SAWDDamageHeavy.cast(Self , Self)	 SAWDBleedHeavy.cast(Self , Self)    EndIf   Else    if PenetrationSuccess == 1	 ;SAWDDamageHeavy.cast(Self , Self)	 ;SAWDDamageModerate.cast(Self , Self)	 ;SAWDBleedModerate.cast(Self , Self)    EndIf    EndIf   if ConcussionSuccess == 1    Self.kill()   ElseIf ConcussionSuccess == 2    ;;Self.PushActorAway(Self, 0)    ;SAWDDamageHeavy.cast(Self , Self)    ;SAWDBleedHeavy.cast(Self , Self)    ;SAWDBleedModerate.cast(Self , Self)    ;SAWDBleedLight.cast(Self , Self)     ElseIf ConcussionSuccess == 3    SAWDKneel.cast(Self , Self)    ;SAWDDamageModerate.cast(Self , Self)    ;SAWDBleedModerate.cast(Self , Self)    SAWDBleedLight.cast(Self , Self)      ElseIf ConcussionSuccess == 4    SAWDStagger.cast(Self , Self)    ;SAWDDamageLight.cast(Self , Self)    ;SAWDBleedLight.cast(Self , Self)    ; Light Damage   ElseIf ConcussionSuccess == 5    SAWDStagger.cast(Self , Self)    ; Stagger Only   EndIf  EndIfendifEndIf  ;Debug.MessageBox(" Concussion " + ConcussionRoll + " Risist Concussion " + ResistConcussion + " Concussion Success " + ConcussionSuccess )  ;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
User avatar
Teghan Harris
 
Posts: 3370
Joined: Mon Mar 05, 2007 1:31 pm

Post » Wed Jun 20, 2012 12:24 am

Ya, your script is quite long, if not tooo long. It might affect the consistence of the OnHit event as it calculate a lot for just one event.

But ya, again, you can test if actor is playing getup animation right in OnHit event with that function I posted in prev post.
User avatar
Brιonα Renae
 
Posts: 3430
Joined: Mon Oct 22, 2007 3:10 am

Post » Tue Jun 19, 2012 5:24 pm

Hahaha, my OnHit event was about ten times as long before I restructured it.
Took half to a full second to run :-P
It's running immediately now! :-D

And thank you for that! I'll definitely check it. There's no way to cancel the animation, is there? Or to keep it from happening?
If not, is there a way to make a dead, standing actor ragdoll as it should?
And if I may ask one more question, what would the animation/posture name be for "PushActorAway", ragdoll, or laying down if there are any?

Thank you! :-D
User avatar
Maria Garcia
 
Posts: 3358
Joined: Sat Jul 01, 2006 6:59 am

Post » Wed Jun 20, 2012 1:15 am

Oh ya, half to 1 sec is too much to bear sometimes. As the Actor got hit, but 'bleeding' effect didn't register yet, so the Actor will think that he is still capable of standing up :), hence kick on the GetUp Animation Event. Once it kicks in, he will die-standing like that.

Right now, that is the bug of the game itself, and with the Papyrus is not the same as in Oblivion (with Threadings and stuff), so it would be really hard to have a remedy.

As for cancelling animation, there is, you will have to call the correct event for such Animation. But they only work if actor is still ... living. As Actor is dead the moment he is playing Getup Animation, it would be too late already.

One suggestion I could think of the moment is the introduction of State in Papyrus, you check for the health of the Actor for every OnHit. If it fall dangerously low, say about 20HP, you transfer the script to that new State. In side the new State, you could have different OnHit event to handle the close call like that.

It will be quite complicated, but might works :)
User avatar
Je suis
 
Posts: 3350
Joined: Sat Mar 17, 2007 7:44 pm

Post » Tue Jun 19, 2012 3:40 pm

Yeah, it seems that even when working immediately, the bleeding effect seems to kill the target right as the animation begins, haha!

Thank you do the info, though. I'll have to look into that.

As for now, I've removed the PushActorAway effects from my script. They just stagger down to a knee instead. I haven't had a problem with it yet.

But I'm definitely interested if there ever comes a way to get around the animation easily, haha! But for now, I'm going to focus on other aspects of my script. Thank you! :-)
User avatar
Bad News Rogers
 
Posts: 3356
Joined: Fri Sep 08, 2006 8:37 am


Return to V - Skyrim