filterByNpcs/Excluded filterByRaces and filterByKeywords/Or/Excluded are not connected. They work Independent from each other.


Filter


filterByModNames allows you to filter by mods and can be combined with other filters. Multiple mods need to be separated by ,
Example: 
filterByModNames=SkyValor.esp:filterByXXX=MyMod.esp|123:setWhatEver=123


filterByNpcs allows you to patch different NPCs at once. They need to be separated by ,

filterByNpcsExcluded can be used to exclude one or multiple objects. (multiple separated by ,)


filterByRaces allows you to patch NPCs by race. You can add multiple races.


filterByDefaultOutfits allows you to patch NPCs by outfit. 


filterByKeywords allows you to filter by keywords. The keywords are connected by AND. Multiple keywords need to be separated by ,

filterByKeywordsOr keywords are connected with or. Multiple keywords need to be separated by ,

filterByKeywordsExcluded allows you to exclude keywords. Multiple keywords need to be separated by ,


filterByEditorIdContains allows you to filter by editorID(can also only contain a part of the editorID). The editorID filters are connected by AND. Multiple editorIDs need to be separated by ,

filterByEditorIdContainsOr editorIDs are connected with or. Multiple editorIDs need to be separated by ,

filterByEditorIdContainsExcluded allows you to exclude editorIDs. Multiple editorIDs need to be separated by ,


filterByFactions allows you to filter by factions. The factions are connected by AND. Multiple factions need to be separated by ,

filterByFactionsOr factions are connected with or. Multiple factions need to be separated by ,

filterByFactionsExcluded allows you to exclude factions. Multiple factions need to be separated by ,


filterByClass allows you to filter NPCs by class. You can add multiple classes separated by ,  

filterByClassExclude allows you to exclude NPCs by class. You can add multiple classes separated by ,  


filterByPCLevelMult allows you to filter NPCs by PCLevelMult.
filterByAutoCalc allows you to filter NPCs by filterByAutoCalc. 
filterByEssential allows you to filter NPCs by filterByEssential. 
filterByProtected allows you to filter NPCs by filterByProtected. 
Example:
PCLevelMult=true


filterByGender can be used to filter NPCs by Gender.
Example:
filterByGender=female
filterByGender=male



restrictToMaleModelContains allows you to restrict to a male model by string(text).   
Example:
A male model string from raceActors\Character\Character Assets\skeleton.nif 
restrictToMaleModelContains= Character Assetsskeleton.nif  



Operations



attackDataToAdd allows you to add attack data to races. Multiple strings need to be separated by ,
Example:
attackDataToAdd=key=attackLeft~damagemult=1~attackchance=1~attackspell=null~attackangle=0~strikeangle=60~staggeroffset=0~attacktype=null~knockdown=0~recoverytime=0~staminamult=1

When an attackData is added, it has default values. The key, needs always to be added! When you miss to add an option it will use the default:
damageMult = 1
attackChance = 1
attackSpell = nullptr
attackAngle = 0
strikeAngle = 50
staggerOffset = 0
attackType = nullptr
knockDown = 0
recoveryTime = 0
staminaMult = 1
flags = none

attackDataToRemove allows you to remove attack data from races by event name.  Multiple strings need to be separated by ,
Example:
attackDataToRemove=attackstart


attackDataToChange allows you to change attack data from races. The key, needs always to be added! Multiple strings need to be separated by ,
Example:
attackDataToChange=key=attackStart~damagemult=0~setFlags=powerattack=ignoreweapon


AttackData options
damagemult
attackchance
attackspell             -   Spell item,  null will remove the spell
nullattackangle
strikeangle
staggeroffset
attacktype            -     Keyword, null will remove the keyword
nullknockdown
recoverytime
staminamult
setFlags                  -      allows you to set flags
removeFlags          -      allows you to remove flags
resetFlags              -      allows you to reset all flags

flags
ignoreweapon
bashattack
powerattack
chargeattack
rotatingattack
continuousattack
overridedata 



copyVisualStyle copies the visual style of another NPC. (Face and Hair)
Example:
filterByNPCs=Skyrim.esm|0000590B:copyVisualStyle=MyMod.esp|FE001A11  
(Make sure that gender and race also matches. Those can also be modified with SkyPatcher. Otherwise crashes can occur.)
 
setRandomVisualStyle randomly picks and applies a new visual style to another NPC. 
This includes:
Race, Sex, Skin, Face, Hair, Height, Weight, Body tint, Voice(optional)

All visual styles that have been applied are saved with the save file and are applied again on save load. When the chance failed to apply a new visual style, the NPC will keep his default look.

Important:
Use the ~true modifier only when you want to change the voice. If you use ~false, the new voice type will still be applied. If you don’t want the voice to be copied, remove that part. See examples below.

Example:
Apply a new random style with a 100% chance:
filterByFactions=Skyrim.esm|0001BCC0:setRandomVisualStyle=Test_Styles.esp|FE000800
filters by the faction bandits, picks a random style from the formlist Test_Styles.esp|FE000800, the style is applied with a chance of 100%

Apply a new random style with a 50% chance: 
filterByFactions=Skyrim.esm|0001BCC0:setRandomVisualStyle=Test_Styles.esp|FE000800~50
filters by the faction bandits, picks a random style from the formlist Test_Styles.esp|FE000800, the style is applied with a chance of 50%

Apply a new random style with a100% chance and copy the voice of the template:  
filterByFactions=Skyrim.esm|0001BCC0:setRandomVisualStyle=Test_Styles.esp|FE000800~100~true
filters by the faction bandits, picks a random style from the formlist Test_Styles.esp|FE000800, the style is applied with a chance of 100% and the voice of the NPC is also adjusted from the template picked from the formlist 
 
Apply a new random style with a100% chance and will also copy the voice of the template:  
filterByFactions=Skyrim.esm|0001BCC0:setRandomVisualStyle=Test_Styles.esp|FE000800~100~false
filters by the faction bandits, picks a random style from the formlist Test_Styles.esp|FE000800, the style is applied with a chance of 100% and the voice of the NPC is also adjusted from the template picked from the formlist. If you dont want the voice to be copied, remove the last part. In this example remove ~false from the string.
  

fullName allows you to change the full name of the object. The new name has to be written between ~~
Example:
fullName=~Dragonslayer Sword~


setAutoCalcStats - disables/enables the flag kAutoCalcStats from NPCs. This flag forces NPCs to re-calculate their stats, when certain events happen.


setPcLevelMult - disables/enables the flag kPCLevelMult from NPCs. 
Example:
50 will be the level, when no level could be calculated and is a fail safe.
filterByRaces=Skyrim.esm|000131E8:setPcLevelMult=false=50


setEssential - disables/enables the flag from NPCs. 

setProtected - disables/enables the flag from NPCs. 

Example to disable a Flag:
autoCalcStats=no 
or
autoCalcStats=false

Example to enable a Flag:
autoCalcStats=yes
or
autoCalcStats=true

Example, ignoring it:
autoCalcStats=none
or
delete it from the string


levelRange - you can specify a level range and if the avif has also a range, the avif is calculated for the level of the NPC.
It calculates the proportional increase from avif and level of the NPC.

Example: (this is only a part of a patch string.)
levelRange=25~100 :changeStats=health=150~250

-> A level 1 NPC will have 150 health
-> A level 25 NPC will have 150 health
-> A level 50 NPC will have ~183 health
-> A level 100 NPC will have 250 health
-> A level 200 NPC will have 250 health


changeStats allows you to manipulate the attribute values of NPCs, like changing their health, stamina etc.

changeStats different options for you:
Direct change
health = 200
stamina = 100
magicka = 300

Calc based on class and attribute weight (don't use that on Leveled NPCs, you have to disable PCLevelMult and set a level wit it.)
calcHealth = 10
calcStamina = 12
calcMagicka = 15

Multiply existing values
healthMult = 1.5
staminaMult = 2.5
magickaMult = 4

Examples:
changeStats=health=250
changeStats=health=250, magicka=150, stamina=50
changeStats=health=250, calcStamina=10, calcMagicka=10
changeStats=healthMult=2.5calcStamina=10calcMagicka=10

calcStamina will calculate the stamina based on the attribute weights by the class and the level of the NPC.
calcMagicka will calculate the magicka based on the attribute weights by the class and the level of the NPC. 
More information about attribute weights and classes can be found here

changeSkills allows you to manipulate the skill values of NPCs 
Example:
changeSkills=twohanded=45,onehanded=50

Skills
alchemy
alteration
block
conjuration
destruction
enchanting
heavyarmor
illusion
lightarmor
lockpicking
marksman
onehanded
pickpocket
restoration
smithing
sneak
speechcraft
twohanded


healthBonus adds a bonus to the health of the NPC, when using calcHealth
Example:
healthBonus=50:changeStats=calcHealth=10calcStamina=10

magickaBonus adds a bonus to the magicka of the NPC, when using calcMagicka
Example:
magickaBonus=120:changeStats=health=90calcMagicka=10

staminaBonus adds a bonus to the stamina of the NPC, when using calcStamina
Example:
staminaBonus=80:changeStats=health=250, calcStamina=10

setFlags sets flag of the NPC. Multiple flags needs to be separated by ,
removeFlags removes flags of the NPC. Multiple flags needs to be separated by ,
Example:
setFlags=female, essential, unique 

Flags
  • female
  • essential
  • ischargenfacepreset
  • respawn
  • autocalcstats
  • unique
  • doesntaffectstealthmeter
  • pclevelmult
  • usestemplate
  • calcforalltemplates
  • protected
  • norumors
  • summonable
  • doesntbleed
  • bleedoutoverride
  • oppositegenderanims
  • simpleactor
  • loopedscript
  • noactivation
  • loopedaudio
  • isghost
  • invulnerable

setTemplateFlags sets flag of the NPC. Multiple flags needs to be separated by ,
removeTemplateFlags removes flags of the NPC. Multiple flags needs to be separated by ,   

Flags
  • traits
  • stats
  • factions
  • spells
  • aidata
  • aipackages
  • unused
  • basedata
  • inventory
  • script
  • aidefpacklist
  • attackdata
  • keywords
  • copiedtemplate

keywordsToAdd adds keywords to NPCs. You can add multiple and they have to be separated by ,

keywordsToRemove allows you to remove keywords. You can add multiple and they have to be separated by , 

factionsToAdd adds factions to NPCs. You can add multiple and they have to be separated by ,
Example:  factionsToAdd=Skyrim.esm|0001CBED=
You need to specify the faction and after = the rank. If in doubt, 0. It's the starting rank.

factionsToRemove allows you to remove factions. You can add multiple and they have to be separated by , 

perksToAdd adds perks to NPCs. You can add multiple and they have to be separated by ,

spellsToAdd adds spells to NPCs. You can add multiple and they have to be separated by ,

spellsToRemove remove spells from NPCs. You can remove multiple and they have to be separated by ,

levSpellsToAdd adds leveled spells to NPCs. You can add multiple and they have to be separated by ,

levSpellsToRemove remove leveled spells from NPCs. You can remove multiple and they have to be separated by ,

shoutsToAdd adds spells to NPCs. You can add multiple and they have to be separated by ,

shoutsToRemove remove spells from NPCs. You can remove multiple and they have to be separated by ,

deathItem allows you to change the deathItem of a NPC. Passing the string null will disable it 

race allows you to change the race of a NPC. 

voiceType allows you to change the voice of a NPC. 

outfitDefault allows you to change the outfit of a NPC. 
Example:
filterByFactions=Skyrim.esm|0001A692:outfitDefault=Skyrim.esm|D3E05

outfitSleep allows you to change the sleep outfit of a NPC. 

class allows you to change the class of a NPC. 

skin allows you to change the skin of a NPC. Passing the string null will disable it 

level sets the level of the NPC

weight sets the weight of the NPC

height sets the height of the NPC 

calcLevelMin - used with kPCLevelMult to set a minimum level

calcLevelMax - used with kPCLevelMult to set a maximum level

objectsToAdd adds objects(items or LLs) to NPCs. You can add multiple and they have to be separated by ,
Example:  filterByNpcs=Skyrim.esm|13BBF:objectsToAdd=Skyrim.esm|73F34=5,  Skyrim.esm|398F3=5
Adds 5 Deadly Poison to Nazeem
;Nazeem "Nazeem" [NPC_:00013BBF] | DamageHealth05 "Deadly Poison" [ALCH:00073F34] | FortifySkillDestruction04 "Elixir of Destruction" [ALCH:000398F3]

addOnceToInventory adds the object only once to NPCs. You can add multiple and they have to be separated by ,
ExamplefilterByNpcs=Skyrim.esm|13BBF:addOnceToInventory=Skyrim.esm|73F34~5,  Skyrim.esm|398F3~3
Will only add the item with the amount, if he doesn't have the item

objectsToRemove removes objects(items or LLs) from NPCs. You can add multiple and they have to be separated by ,
Example:  objectsToRemove=Skyrim.esm|211CC

removeInventoryObjectsByKeywords removes objects(items) from NPCs, which have matching keywords. You can add multiple and they have to be separated by ,
Example:  removeInventoryObjectsByKeywords=Skyrim.esm|211CC, Skyrim.esm|211CD

removeInventoryObjectsByCount removes objects(items) from NPCs, which have a matching count of the item.
Example:  removeInventoryObjectsByCountsSkyrim.esm|211CC~2

clearInventory removes all objects from NPCs. 
Example:  clearInventory=true

restrictToGender allows you to restrict to a skeleton path. If the path does not contain werewolf, the operation will fail. 
Example
restrictToGender=male
restrictToGender=female

restrictToMaleModelContains allows you to restrict to a skeleton path. If the path does not contain werewolf, the operation will fail. 
Example:  restrictToMaleModelContains=werewolf

restrictToSkill will restrict to all NPCs with the skill in the specified range. 
Example:  restrictToSkill=marksman~0~50

  • onehandedtwohanded
  • marksman
  • block
  • smithing
  • heavyarmor
  • lightarmor
  • pickpocket
  • lockpicking
  • sneak
  • alchemy
  • speechcraft
  • alteration
  • conjuration
  • destruction
  • illusion
  • restoration
  • enchanting


NPC Patcher Example Strings:
;Adds two perks from SkyValor to all NPCs, except the player. When no filter is used, it only affects NPCs. If you have to filter for the player, if you want to patch the player.
perksToAdd=SkyValor.esp|1D8A,SkyValor.esp|3DE9

;Filters for the player changes his health
filterByNpcs=Skyrim.esm|7:changeStats=health=250

;filter by race for bear and modifies health and recalculates stamina and magicka based on the bears class. Disable the PCLevelMult and sets the level for those NPCs to 50.(Otherwise they have a level of 1000). Disables auto calc stats for all bear NPCs
filterByRaces=Skyrim.esm|000131E8:levelRange=1~30:changeStats=health=625~900,calcStamina=10,calcMagicka=10:setPcLevelMult=false=50:setAutoCalcStats=false

Article information

Added on

Edited on

Written by

Zzyxzz

45 comments

  1. stevenpanca
    stevenpanca
    • member
    • 0 kudos
    any future plan for Combat Style (ZNAM)?
  2. aacaliber
    aacaliber
    • member
    • 5 kudos
    Hello! I'm trying to add a custom spell to any mage NPC, so like bandits, foresworn mages, etc.
    I think I can do this using a string like filterByClass=Skyrim.esm|[MAGE]:levelRange=1~4:spellsToAdd=MyMod.esp|[MyNoviceSpell ID]

    Is there a class form ID that I can use for "arbitrary mage character" or do I have to make a new string for any possible faction/mage that might spawn?
    Or is there a better way to do this?
  3. PelagiusWing
    PelagiusWing
    • premium
    • 3 kudos
    Here's another gotcha that's listed on the general information article, but not here:

    SkyPatcher supports FormIDand EditorID.

    Currently there are some function that are not supported for EditorID 

    NPC Patcher
    objectsToAdd
    factionsToAdd

    Outfit Patcher
    formsToReplace
  4. PelagiusWing
    PelagiusWing
    • premium
    • 3 kudos
    As a heads up, if anyone is looking for the following - this was listed out in the changelogs (Logs tab above), but never added to this doc:

    Version 3.6.0
    NPC Patcher

    -> added: addRandomVisualStyle
    -> added: setAggression
    calmed
    unaggressive
    aggressive
    veryaggressive
    frenzied

    -> added: setAssistance
    helpsnobody
    helpsallies
    helpsfriends

    -> added: setConfidence
    cowardly
    cautious
    average
    brave
    foolhardy

    -> added: setMood
    neutral
    angry
    fear
    happy
    sad
    surprised
    puzzled
    disgusted

    -> added: setMorality
    anycrime
    violenceagainstenemy
    propertycrimeonly
    nocrime


    -> added: aggressionRadiusBehavior (true/false)

    -> added: aggressionRadiusRanges
    aggressionRadiusRanges=attack~1000
    aggressionRadiusRanges=warn~2000
    aggressionRadiusRanges=attackandwarn~1000
    aggressionRadiusRanges=attack~1000, warn~2000

    Version 3.5.0

    NPC Patcher

    -> added: rvsRestrictToTraits
    -> added: restrictToFlags
    -> added: restrictToTemplateFlags
    -> added: restrictToRaces
    -> added: restrictToGender
    -> added restrictToVoiceType
    1. Dieselface
      Dieselface
      • premium
      • 42 kudos
      Do you know what the difference between setRandomVisualStyle and addRandomVisualStyle is?
  5. Eyre11
    Eyre11
    • premium
    • 52 kudos
    Can't addOnceToInventory and ObjectsToAdd  take effect on the player?
  6. AizenV
    AizenV
    • member
    • 82 kudos
    so it seems like setRandomVisualStyle will mix up face parts of NPC within a formlist, 
    I kinda hope it works the same way as copyVisualStyle, that is copy the whole visual from an NPC randomly within a formlist. 
    also I found many NPC still have vanilla assets (hair, eyes, etc) even though none of template NPC use it. 
  7. Oakenshielb
    Oakenshielb
    • member
    • 5 kudos
    am i able to change an npc hair with this? just the hair, not a wig but hair
  8. hirato
    hirato
    • premium
    • 2 kudos
    Is it at all possible to filter by Template (TPLT) or the Worn Armour (WNAM)?
    I was hoping FitlerByDefaultOutfits would do it, but that seems to be looking for DOFT records.

    I'm hoping to make a quick mod that will patch all the required mudcrabs for SkyTest without me having to know their mods or IDs.
  9. ceobexoxo
    ceobexoxo
    • member
    • 1 kudos
    I'm crashing on boot when I try to remove LItemWeaponMace from vigilants so that I can add my own leveled list for them to draw weapons from, can anyone tell me why this happens or how to go about this properly?filterByFactions=Skyrim.esm|000B3292:objectsToRemove=Skyrim.esm|LItemWeaponMace
    filterByFactions=Skyrim.esm|000B3292:objectsToAdd=MyPlugin.esp|Newleveledlist
    1. Acopo
      Acopo
      • member
      • 0 kudos
      You have to use the FormID. For LItemWeaponMace, it's 00016577. Also, you can call multiple operations after one filter, simply use a colon between the end of one operation and the beginning of the second.

      Your string should look like:
      filterByFactions=Skyrim.esm|000B3292:objectsToRemove=Skyrim.esm|00016577:objectsToAdd=MyPlugin.esp|(Newleveledlist FormID here)
  10. Gitses
    Gitses
    • member
    • 1 kudos
    Anyone know if you can remove that pesky hunting bow that keeps popping up whenever you recruit Lydia or any other housecarl? I tried the clear inventory but it dosen't seem to work on that one.