0 of 0

File information

Last updated

Original upload

Created by

Tossapon

Uploaded by

Tossapon

Virus scan

Safe to use

About this mod

Zero script. Highly customizable locational damage mod for archery. Now support both SE and AE version.

Requirements
Permissions and credits
Translations
  • Spanish
  • Portuguese
  • French
Changelogs
Now compatible with both SE and AE version.

Introduction

Getting tired of enemy taking dozens of arrows to the head and still standing?  With this mod, now you can teach them the pain of getting hit in the head.

Arrows that hit the player and NPCs can now do different damage and effect depending on the hit location.
Any enchantments on the weapon also become stronger with location damage multiplier.

There are two INI presets to choose from

INI - Simple
Head: 2.0x damage, 25% chance of knockdown and 50% chance of stagger. (1.5x against heavy helmet or when under the effect of dragon hide spell)
Neck: 1.5x damage, bleeding.
Arms: 1.0x damage, Reduced physical damage and magical skills. 15% chance of silence. 15% chance of disarm. (The player is not affected by disarm because it's no fun trying to find your weapon dropped in a dark cave, re-favorite, re-set hotkey and re-equip it.)
Legs:  1.0x damage, Reduced movement speed. 25% chance of stagger.
Other: 1.0x damage, no special effect.

INI - Complex: For version 1.3 or newer. Penetration chance scale with incoming damage vs max HP.

New feature in v2.0
The target is treated as wearing full light armor when under the effect of non-master armor spell or full heavy armor when under the effect of master armor spell.(Dragon Hide)

Head - Heavy Helmet (50%): Deflect arrow, 1.5x damage, 15% chance of knockdown and 35% chance of stagger. 
Head - Default: 2.0x damage, 25% chance of knockdown and 50% chance of stagger. (Also used when the helmet protection failed to proc)

Neck - Heavy Cuirass (50%): Deflect arrow, 1.2x damage and 50% chance of bleeding.
Neck - Light Cuirass (35%): 1.35x damage and 75% chance of bleeding.
Neck - Default: 1.5x damage, bleeding.

Body - Heavy Cuirass (15%): Completely block damage and deflect arrow.
Body - Heavy Cuirass (50%): 0.5x damage and deflect arrow.
Body - Light Cuirass (35%): 0.75x damage.
Body - Default: 1.0x damage.

Arms - Heavy Gauntlets (50%): 0.75x damage, 50% chance of reduced physical damage and magical skills. 5% chance of silence. 5% chance of disarm.
Arms - Light Gauntlets (35%): 0.85x damage, Reduced physical damage and magical skills. 15% chance of silence. 15% chance of disarm.
Arms - Default: 1.0x damage, Reduced physical damage and magical skills. 15% chance of silence. 15% chance of disarm.
The player is not affected by disarm because it's no fun trying to find your weapon dropped in a dark cave, re-favorite, re-set hotkey and re-equip it.

Legs - Heavy Boots (50%):  0.75x damage, 50% chance of reduced movement speed. 15% chance of stagger.
Legs - Light Boots (35%):  0.85x damage, 75% chance of reduced movement speed. 20% chance of stagger.
Legs - Default:  1.0x damage, Reduced movement speed. 25% chance of stagger.

Shield (50%): Completely block damage and deflect arrow passively even when not actively blocking with it.

Other: 1.0x damage, no special effect.

Note that the special effect chance scale with the damage done by default. You need to do at least 25% of the target's max HP in damage to have the maximum chance described above. This can be changed in the INI.

powerofthree's Tweaks is required for special on hit effects to work.

Shot difficulty bonus EXP New feature
From version 2 onward, the difficulty of shot will affect the EXP gained from hit. Factors that affect shot difficulty include arrow flight time, target distance, target movement, target size and location difficulty setting.

The amount of EXP bonus from various factors can be changed in the INI.

Installation
Extract all files to "Data" folder of your Skyrim installation folder or use mod organizer.

Uninstallation
This mod is not using any Papyrus script and does not modify anything in the game so it should be safe to uninstall at anytime.
Delete ArcheryLocationalDamage.dll and ArcheryLocationalDamage.ini from Data/SKSE/Plugins/ folder.
Delete ArcheryLocationalDamage.esp from Data folder.

Customization
The INI file can be customized to suit your taste on hit effect if the default settings do not satisfy you.

You can define a new hit location by adding a new section named [LocationX] with X being the location ID.

If there are more than one rule that match the same hit location then the rule with lower ID will take precedence  and the other rules will be discarded.

With the power of regular expression, you can define your rule once and it'll match any target hit if their hit location name matches the rule.

There's also an option to use keywords to filter what types of actor should the rule apply to. In the default setting, the neck is not considered a weak point for dragon, machine and undead.

The hit location must has a collision object!

If you don't know what the body part's name is, go into the INI file. There is a setting that will show the name when it's not matched by any rules so you can use those name in it.

Example: Getting hit at the body part with name contains "Spine" has 25% chance to apply paralysis to the target (This is only example and should not be used for real. Because the part with name "Spine" cover the most of the body's hitbox.)

[Location5]
Regexp = .*Spine.*
Message = This message will display as a notification on location hit
HitSound = Editor ID of sound you wanted to play when this location is hit
Multiplier = Damage multiplier when getting hit at this location


This mod is using spell system to apply special effects, you can open the Creation Kit and create your own effect and set it as a  hit effect. You can even create an effect that launch the enemy into orbit if you shoot them in the legs or using a scripted effect spell to summon an illusion to attack them when you hit them in the head. By default, the mod does not add any script to the game. If you're adding a scripted effect to the game then you must ensure that all scripted effects are not running on any actor before uninstalling to avoid potential problem.

You can define your additional effects in the same INI section at the location. There's no limit on how many additional effects can be added per location.

Use "Effect" option to specify additional effect to apply on hit. Use a number followed by a % and then followed by an editor ID of a spell you want to apply like this:
Effect = 50% EffectEditorID

Adding to the example above, the section now look like this

[Location5]
Regexp = .*Spine.*
Message = This message will display as a notification on location hit
HitSound = Editor ID of sound you wanted to play when this location is hit
Multiplier = Damage multiplier when getting hit at this location
Effect = 25% EditorIDofParalysisSpell


If you want an additional effect for this location then do this:

[Location5]
Regexp = .*Spine.*
Message = This message will display as a notification on location hit
HitSound = Editor ID of sound you wanted to play when this location is hit
Multiplier = Damage multiplier when getting hit at this location
Effect = 25% EditorIDofParalysisSpell
Effect = xx% AdditionalEffectID

The effect that will be used for additional effect should be using "Fire and Forget" casting type and "Contact" delivery type. Using "Aimed" delivery will resulting in a projectile fired from the shooter to the target instead of instantly apply its effect.

Keyword Filter
If you want to restrict a location to certain actor, add following keyword filtering setting to the location setting to filter what actor should be using the rule. (There's an example in the INI file)

KeywordInclude - The target must match this keyword condition to apply locational damage.
KeywordExclude - The target must NOT match this keyword condition to apply locational damage. (Override KeywordInclude if matched)

If a keyword filter is defined with multiple comma separated keywords in a single line, then an actor must has ALL of the  keywords to match the filter. (Like AND condition)

If a location has multiple KeywordInclude or KeywordExclude lines then at least one of the line must match the rule. (Like OR condition)

As of v2, there are 4 types of keyword filter. Old syntax without prefix from v1 is no longer supported.
Keyword prefixed with "A:" is "Actor Keyword" which mean the actor must have the keyword(s) on itself or its race.
Keyword prefixed with "E:" is "Equipped Keyword" which mean the actor must have the keyword(s) on its equipped items.
Keyword prefixed with "M:" is "Magic Keyword" which mean the actor must have the keyword(s) on its active magic effects.
Keyword prefixed with "W:" is "Weapon Keyword" which mean the attacking weapon and ammo must have the keyword(s) on them.

Equipped and magic keyword can be joined with + to enforce matching on a single effect or item.

All types of keyword can also prefixed with - to negate its meaning which will match when the target is NOT having the keyword.

Example of using keyword filter to include NPCs only:
KeywordInclude = A:ActorTypeNPC

To include when the target is wearing any heavy armor:
KeywordInclude = E:ArmorHeavy

For when the target is using master level armor spell: (The effect must have both keywords)
KeywordInclude = M:MagicArmorSpell+RitualSpellEffect

Or when the target is using non-master level armor spell: (The effect must NOT have ritual spell keyword)
KeywordInclude = M:MagicArmorSpell+-RitualSpellEffect

If you want to detect if the target is wearing full armor regardless of light or heavy, use comma to separate entries like this:
KeywordInclude = E:ArmorHelmet, E:ArmorCuirass, E:ArmorGauntlets, E:ArmorBoots

Multiple of the same keyword can also be used to detect if the actor is wearing full heavy armor(4 pieces) like this:
KeywordInclude = E:ArmorHeavy, E:ArmorHeavy, E:ArmorHeavy, E:ArmorHeavy

Or combined with the above example to check for at least 3 pieces of heavy armor but allows any helmet:
KeywordInclude = E:ArmorHelmet, E:ArmorHeavy+ArmorCuirass, E:ArmorHeavy+ArmorGauntlets, E:ArmorHeavy+ArmorBoots

Example usage of keyword filter if you don't want headshot to trigger when the target is wearing any helmet.
[Location1]
Regexp = .*(Head|Eye|Nose|Jaw|HEAD).*
Message = Head shot!
HitSound = UISneakAttack
Multiplier = 2.0
KeywordExclude = E:ArmorHelmet

Or if you want to restrict the helmet protection on heavy armor helmet only:
KeywordExclude = E:ArmorHelmet+ArmorHeavy

Or if you want to reduce damage done by headshot to 1.5x when wearing a helmet and normal 2x when not then do this:
Add KeywordInclude filter to Location1 to make it to trigger only when an actor is wearing a helmet. (and optionally set the hit sound to metallic clang)

[Location1]
Regexp = .*(Head|Eye|Nose|Jaw|HEAD).*
Message = Head shot against a helmet!
HitSound = WPNImpactBladeVsArmorSD
Multiplier = 1.5
KeywordInclude = E:ArmorHelmet

Then set a new location below Location1(because lower ID will take precedence)  to trigger it on anyone else not having the ArmorHelmet keyword. (Make sure to copy any effects defined in Location1 to Location5 if you want the same effect to trigger)

[Location5]
Regexp = .*(Head|Eye|Nose|Jaw|HEAD).*
Message = Head shot!
HitSound = UISneakAttack
Multiplier = 2.0

Additional option for location setting added in version 1.3
SuccessChance - Percentage chance of success for the location to trigger when the condition is met.
SuccessHPFactor - Percentage of max HP of the target to scale the success chance based on incoming damage vs max HP. (Negative value = higher chance with lower damage)
SuccessHPFactorCap - If set to false, the success chance can exceed the defined chance when incoming damage is high enough.
Deflect - Will deflect incoming arrow if set to true. (Does not affect incoming damage)
ImpactData - Replace arrow impact effect with this by using Impact Data's editor ID.

Additional option for location setting added in version 1.5
RaceInclude - A regular expression for filter what race should be used in current location. (Multiple of these will act like OR condition)
RaceExclude - A regular expression for filter what race should NOT be used  in current location. (Multiple of these will act like OR condition)
Sex - Use M for male or F for female.

Additional option for location setting added in version 2.0
EditorID - A regular expression to match the actor's editor ID.
Continue - If set to true, other location can be triggerred after this location is done instead of immediately stopped.
Difficulty - An experience multiplier for hitting this location. (Will use damage multiplier if not set)

Additional option for location setting added in version 2.1
Shooter filters: These are the same as normal filters but apply on the shooter instead of the victim
ShooterKeywordInclude
ShooterKeywordExclude
ShooterRaceInclude
ShooterRaceExclude
ShooterEditorID
ShooterSex


AmmoType - Use 0 for both bolt and arrow, 1 for arrow and 2 for bolt.

Using Skyrim's native condition as a filter new feature in v2.1
You can now use Skyrim's native condition created with creation kit as a filter. The condition must be defined within a perk to be able to use it. This perk can be an empty perk with desired conditions attached. Use the option below in the location setting.

UsePerkCondition  - Specify a perk's editor ID as this option value. Subject is the aggressor and target is the victim. (Require PO3's Tweaks)

The example below will deflect arrow and nullify damage then play the sound when conditions in the perk ALDConditionImmune is evaluated to true: (When the target is wearing full heavy armor and using the master level mage armor spell)

[Location000]
Regexp = .*
Multiplier = 0
HitSound = WPNImpactBladeVsArmorSD
ImpactData = WPNArrowVsMetalImpact
Deflect = true

UsePerkCondition = ALDConditionImmune

ALDConditionImmune
is a perk defined in ArcheryLocationalDamage.esp. Any perk from loaded plugins can be used here.

Example setting for hitting a male NPC in the nut:
[Location60]
Regexp = .*COM.*
Multiplier = 1.5
Message = Nutshot!
HitSound = UISneakAttack
KeywordInclude = A:ActorTypeNPC
Sex = M

Example setting for hitting a DragonPriest in the head:
[Location60]
Regexp = .*(Head|Eye|Nose|Jaw|HEAD).*
Multiplier = 2
Message = Headshot!
HitSound = UISneakAttack
RaceInclude = DragonPriestRace

For more advanced usage, please see the detail and examples in the complex version of the INI file.

A little note for anyone trying to add a new effect to the mod's esp file:
IF YOU ARE EDITING AN ESL FLAGGED ESP FILE, DO NOT FORGET TO COMPACT FORM ID BEFORE SAVING!!!

Credits
SKSE - SKSE team
CommonLibSSE - Ryan-rsm-McKenzie and powerofthree
Address Library - meh321
Source code example - powerofthree
Floating Damage - Felisky

Plugin source