ReProccer – Automated SkyRe patch generator
Automated SkyProc-based compatibility patch and stat overhaul creator for T3nd0’s Skyrim Redone. Covers armor, weapons, ammunition and alchemy.
0. Intro
The ReProccer is meant to solve the main issue many (ncluding me) have with Skyrim Redone – the constant need for compatibility patches when using weapon and armor mods. Alchemy and projectiles are less of an issue, but still good to have.
On top of automated compatibility patching, this program gives the user huge amounts of control over the stats used; if someone disagrees with the way I handle armor and weapons, he/she is able to come up with an individual set of stats, and patch all items within a few seconds.
Requires SkyRe_Main.esp, Skyrim.esm, Dawnguard.esm, Java Runtime Environment 7
Tool for running multiple SkyProc patchers (like ASIS, Automatic Variants, etc)
FAQ for SUM, including questions regarding BOSS
Highly recommened for XML editing
Good for pasting logs and XML
Central googledoc with Stats.XML
“Troubleshooting” section of Leviathan’s Automatic Variants ReadMe
^ Useful! Go there for general Java/Windows UAC issues.
>>> What it can do:
– Categorize weapon types, based on names (a “Katana” in mod XY will be recognized by SkyRe after running the patcher)
– Categorize weapon types, based on an “override” list (force weapons into categories, in case the name check fails)
– Adjust weapon stats to SkyRe levels – or to anything one wishes, due to configuration. Based on material and type.
– Rename any vanilla-like sword to “Broadsword”
– Assign any bow to either the “shortbow” or “longbow” category, depending on material or name, and rename it accordingly
– Create SkyRe crossbow variants off of any mod-added crossbow. So, if a mod adds a Dragonbone Crossbow, the
ReProccer can create Recurve, Silenced…. versions that work with the perks. This includes crafting,
tempering and meltdown recipes.
– Create “Refined Silver” variants of any silver weapon. This includes crafting, tempering and meltdown recipes.
– Adjust gravity influence, speed and damage of ammunition and projectiles, based on type and material
– Create ammo variants used in SkyRe (explosive, timebomb, lightsource…) off of any ammo
– Adjust armor stats to SkyRe levels. Again, slot multipliers and material influence are fully modifyable
– Assign shields to the categories “light” and “heavy”, depending on material, and rename them accordingly
– Set new cap for maximum armor protection
– Set new value for “protection gained per armor”
– Let mod-added armor work with “Masquerade”
– Force vanilla armor material keywords upon mod-added armor
– Add crafting requirements to any leather material armor
– Add meltdown recipes to any armor/weapon
– Add material perk requirements to any tempering recipe
– Make all ingredient effects work over time, based on effect name. Highly customizable.
– Optionally force minimum/maximum values on the patched ingredients, to prevent ingredients from becoming
worthless or too expensive
>>> What it can not (yet) do:
– Add material-based modifiers to weapon speed and reach*
>>> What it can not do:
– Be run without SkyRe_Main.esp in your load order**
– Be run without Dawnguard
– Be run without up-to-date Java Runtime Environment
* Not currently implemented in Skyrim Redone, but definitely an option
** If there’s demand, I might also create an independent stat overhauler
_ _ _ __________________________ _ _ _ _
1. Installation
Drop the included directory into steam/steamapps/common/Skyrim/Data.
This should result in a new folder being created under
Skyrim/Data/SkyProc Patchers/T3nd0_ReProccer
ReProccer.jar is the main attraction. There’s also a folder called “ReProccer” in there; it contains “Stats.xml”, the file used to configure the program, and it is the place where ReProccer-specific logs are created. If I ask you to send a log, this is usually what I’m referring to.
_ _ _ __________________________ _ _ _ _
2. Usage
Double-click the ReProccer.jar. The GUI will open.
On the left, you see a text field saying “ReProccer Settings”. It holds checkboxes for individually deciding whether or not to patch armor, weapons, ammunition and alchemy.
If you don’t have a ReProccer.esp in your load order, the ReProccer will automatically create a patch upon exiting or clicking the “Patch” button in the upper right corner, unless you exit by clicking the “Cancel” button.
If you do have it in your load order and would like to renew the patch, click the “Force Patch on Exit”- checkbox, then click “Patch” or just exit.
Every ReProccer patch created will import and work on your entire load order, and add any relevant mod as a master to the patch. This means that you NEED to re-run the patcher whenever you remove a relevant mod; if you don’t do so, you will experience CTDs.
Once you add a new mod you’d like to patch, re-run the patcher to include it in the patch.
_ _ _ _ __________________________ _ _ _ _
3. Configuration
3.0 Basics
As mentioned, Stats.xml is used to configure the values used by the ReProccer. You should probably read up some basics on XML file structure before altering it…
…
… on the other hand, it’s rather easy to understand with intuition alone. Decide for yourself.
Basically, the file looks like this:
… lots and lots of test …
Do not mess with the header, only with the “lots and lots of text”! Also, don’t f*ck the syntax.
_ _ __ ____ _ _
3.1 General Settings
A fairly short first section. It will look like
WARNING
The “logLevel” tells my included logger which messages to print. In this case, only warnings and stuff that is more severe. If you want the log to not print warnings, replace WARNING with SEVERE. If you hate logging, use OFF. If you want full information over what happens to items, use FINEST. If I tell you to send a log, use INFO.
Off to the more interesting stuff!
_ _ __ ____ _ _
3.2 Base Stats Weapon
This one is not meant to extended and looks like this in my default config:
-0.2
0.25
1.25
0.75
15
20
5
10
8
These are base values used by crossbow variants and all weapons.
fSpeedBonusArbalest: Arbalests (crossbow variants) usually fire slower; the value defined here is added to their speed.
fSpeedBonusLightweightCrossbow: Lightweight crossbows usually fire faster; the value defined here is added to their speed.
fWeightFactorArbalestCrossbow: Arbalests are heavier than other crossbows; their weight is multiplied with this values.
fWeightFactorLighweightCrossbow: Lightweight Crossbows are lighter than other crossbows; their weight is multiplied with this values.
iDamageBonusRecurveCrossbow: Recurve crossbows get a flat damage bonus, defined here.
iDamageBaseBow: Bow base damage.
iDamageBaseCrossbow: Crossbow base damage.
iDamageBaseOneHanded>: One handed weapon base damage.
iDamageBaseTwoHanded: Two handed weapon base damage.
By editing the values in here. you have a fast and easy way to globally manipulate weapon damage and influence of crossbow modifiers on crossbows.
The formula for any weapon’s damage in Skyrim Redone is as follows:
Damage(w) = DamageBase(w) + MaterialModifier(w) + TypeModifier(w)
DamageBase is what this part of the XML offers.For TypeModifier, see weapon_types. For MaterialModifier, see weapon_materials.
_ _ __ ____ _ _
3.3 Weapon Type Definitions
This section is wrapped into these tags:
…
The “weapon_type_definitions” contain several “weapon_type_definition” entries. Two examples:
BATTLESTAFF
Battlestaff
BATTLESTAFF
Battle Staff
These entries map weapons to Skyrim Redone’s subtypes, based on their names. The sWeaponSubstring describes the (case-sensitive!) substring that is looked for
in a weapon’s name, and sSkyReWeaponTypeBinding is the SkyRe type that should be used for a weapon containing that substring. The two type definitions here
make sure that every weapon that contains either “Battle Staff” or “Battlestaff” will be recognized as Battlestaff, perk and stat-wise.
Use these entries to mass-categorize weapons.
Valid values for sSkyReWeaponTypeBinding are:
KATANA NODACHI TANTO WAKIZASHI SHORTSWORD SCIMITAR SABRE BATTLESTAFF SHORTSPEAR LONGBOW SHORTBOW CROSSBOW
YARI BASTARDSWORD CLUB LONGMACE LONGSWORD HALBERD GLAIVE UNARMED BROADSWORD HATCHET MAUL
Other values will cause errors only.
To override single weapons, see weapon_overrides.
_ _ __ ____ _ _
3.4 Weapon Materials
The next section is wrapped into these tags:
…
The tags serve as a container to “weapon_material” entries. An example:
-1
Wood
“iDamage” is an Integer that describes the damage modifier associated with a weapon material. “Wood” is the material string. This means that any weapon whose name contains “Wood”, like “Wooden Bow”, would get the -1 modifier to damage dealt.
Note that these “material strings”, like “Wood”, will be preferred by the ReProccer over Skyrim’s material keywords. So a weapon called “Wooden Longsword” that carries the WeapMaterialDaedric keyword will be processed as wooden weapon.
If a weapon matches none of the material strings, the ReProccer will try to use keywords instead. If both keywords and strings fail, the weapon will get junk values, and errors will be logged.
If a weapon has multiple matching substrings, the longest matching substring will be used when calculating damage. This logic applies to all substring-based classifications.
Under no circumstances delete the existing “weapon_material”s from the XML file! Modify the “iDamage” value as you see fit, and add new “weapon_material” entries if you want to handle a mod-added group of weapons differently, just don’t remove the ones already there! Stuff will break!
_ _ __ ____ _ _
3.5 Weapon Types
The next section has similar rules. The container tags look like this:
…
An example entry is this one:
0.75
1.4
0
Tanto
These entries handle how a weapon’s type influences damage, speed and reach. Again, substrings are used to identify weapons. This example
sets all Tantos’ reach to 0.75 (vanilla Sword: 1.0), attack speed to 1.4 (vanilla Sword: 1.0) and the damage modifier to 0.
Just like for weapon_material, you can add entries and modify entries as you see fit. If no matching type string is found, the ReProccer tries to use keywords. Don’t remove entries though! Stuff will not break as badly as with materials, but by removing the “Tanto” entry, you’ll make any Tanto behave like its base type, the dagger. If you remove base type entries, like the “Dagger”, you’re f*cked.
_ _ __ ____ _ _
3.6 Weapon Type Overrides
Container:
Example entry:
Ebony Blade
Nodachi
This section is used to forcefully categorize weapons whose name does not contain any weapon type string. The Ebony Blade looks like an asian themed sword and needs both hands. Usually, the ReProccer would not find the “Nodachi” substring in its name, applying the greatsword stats and not unlocking Nodachi perks. This weapon override entry will append “[Nodachi]” to the Ebony Blade’s name, causing it to be treated like a nodachi, and helping the user to actually identify the Ebony Blade as nodachi.
You should not use this section in an attempt to convert weapons from one SkyRe type to another; only from vanilla types to SkyRe types. So don’t try stuff like the following piece:
Ebony Tanto
Greatsword
It’ll only lead to confusion, weird stats and broken legs.
Use this section for single type overrides; use weapon_type_definitions instead for mass categorization.
_ _ __ ____ _ _
3.7 Weapon Material Overrides
Per default, this section is empty. It looks like this:
… nothing …
This section is used to mass-distribute vanilla armor material keywords across weapon that don’t have have them, based on substrings.
You can use this section to force requirements on weapons that don’t have them, and help the ReProccer create meltdown recipes. Note that this will also add requirements to crafting
and tempering recipes. An example entry that forces all “Uberdaedric” gear into the “Daedric” category looks like this:
Uberdaedric
Daedric
Valid values for “materialOverride” are:
IRON STEEL DWARVEN FALMER ORCISH WOODEN EBONY DRAGONPLATE DAEDRIC ELVEN ADVANCED GLASS SILVER DRAUGR
_ _ __ ____ _ _
3.8 Weapon Exclusion Strings
Again, a container
is filled with entries like
Dart Trap
Weapon exclusion strings filter for weapons that shouldn’t be modified AT ALL. So, the above entry makes sure the weapon patcher does not touch any weapon whose name contains “Dart Trap”. As you might guess, that weapon is not playable and belongs to traps only, so patching it would not make any sense. Add any weapons that are not to be wielded here.
Armor can not be filtered right now.
_ _ __ ____ _ _
3.9 Crossbow Exclusion Strings
This section blocks crossbows from being “multiplied”, and is currently rather empty, with only one entry:
Enhanced
Usually, you’ll want to create the different crossbow variants (Recurve, Silenced…) from any newly added base crossbow. Crossbows whose name includes a String defined here will not get that treatment. Unlike the weapon exclusion strings, they will get meltdown recipes added, tempering recipes modified and stats adjusted.
_ _ __ ____ _ _
3.10 Base Stats Armor
This section is fairly short again, and the same rules from 3.8 still apply.
1.0
3.0
1.0
1.5
1.5
0.1
90.0
fArmorFactorBoots: Any boots’ armor value is multiplied with this factor.
fArmorFactorCuirass: Any cuirass’s armor value is multiplied with this factor.
fArmorFactorGauntlets: Any sgauntlet’s armor value is multiplied with this factor.
fArmorFactorHelmet: Any helmet’s armor value is multiplied with this factor.
fArmorFactorShield: Any shield’s armor value is multiplied with this factor.
fProtectionPerArmor: This is the percentage of physical damage blocked per point of armor. A value of 0.1 means that you need 10 armor for 1% physical damage reduction.
fMaxProtection: The maximum amount of physical damage reduction from armor, in percent. With 90, 90% of damage reduction is possible.
This is the place to globally tweak armor fast. The formula for each piece’s armor value is:
Armor(a) = ArmorFactorSlot(a) * ArmorMaterial(a)
Example: For a Hide Cuirass, the ReProccer calculates 3.0 * 15 = 45.
_ _ __ ____ _ _
3.11 Armor Materials
The next container tags look like this:
Example:
[code]
15
Hide
The rules that apply are pretty much equal to weapon materials. iArmor sets the base armor value associated by an armor material.
_ _ __ ____ _ _
3.12 Armor Material Overrides
Per default, this section is rather empty. It looks like this:
Guard
IRON
This section is used to mass-distribute vanilla armor material keywords across armors that don’t have have them, based on substrings. The single entry from above would make all Guard armor get the iron material keyword.
Why would you want to extend this section? Since Dawnguard, quite a few armor mod authors think it’s cool to not use vanilla armor materials, in order to stuff their armor in a crafting category of its own. One downside of this is that, without vanilla keywords, my patcher can not create meltdown recipes, and can not adjust tempering recipes, as it will be confused about the armor’s material.
By adding new “armor material override” entries, one can force back vanilla armor material keywords upon mod-added armor.
Note that these keywords will help calculate armor values if there’s no explicit definition in “armor_material”. If there is an explicit definition, on the other hand, the explicit definition’s armor value will be used instead (as always).
Valid values for “materialOverride” are:
IRON STEEL DWARVEN FALMER ORCISH STEELPLATE EBONY DRAGONPLATE DAEDRIC FUR HIDE LEATHER ELVEN SCALED GLASS DRAGONSCALE
_ _ __ ____ _ _
3.13 Dreamcloth Exclusion Strings
Usually, the ReProccer will create a dreamcloth duplicate of any clothing imported.
Hooded
Dreamcloth exclusion strings prevent that. The above entry blocks “Hooded Robes” & co, since these block two slots and are flagged as regular chest pieces in vanilla. Thus, using them is pointless – robe + hood or robe + helmet is always better.
_ _ __ ____ _ _
3.14 Base Stats Alchemy
Same rules as the other “base_stats”, but this one is longer.
0.25
1.0
1.0
0.25
0.25
0.2
0.5
2
-1
23
8
23
4
8
8
Damage
Restore
Regen
Resist
Fortify
Lingering
Ravage
true
5150
Urg… lots of writing ahead.
fMagnitudeFactorDamage: All “damage” ingredient effect’s magnitude will be multiplied with this.
fMagnitudeFactorFortify: All “fortify” ingredient effect’s magnitude will be multiplied with this.
fMagnitudeFactorResist: All “resist” ingredient effect’s magnitude will be multiplied with this.
fMagnitudeFactorRestore: All “restore” ingredient effect’s magnitude will be multiplied with this.
fMagnitudeFactorRegen: All “regen” ingredient effect’s magnitude will be multiplied with this.
fMagnitudeFactorLingering: All “lingering” ingredient effect’s magnitude will be multiplied with this.
fMagnitudeFactorRavage: All “ravage” ingredient effect’s magnitude will be multiplied with this.
iDurationBase: Base duration for all effects.
iDurationBonusDamage: Duration bonus for “damage” ingredient effects.
iDurationBonusFortify: Duration bonus for “fortify” ingredient effects.
iDurationBonusLingering: Duration bonus for “lingering” ingredient effects.
iDurationBonusResist: Duration bonus for “resist” ingredient effects.
iDurationBonusRestore: Duration bonus for “restore” ingredient effects.
iDurationBonusRegen: Duration bonus for “regen” ingredient effects.
iDurationBonusRavage: Duration bonus for “ravage” ingredient effects.
sDamage: String that identifies “Damage” effects.
sRestore: String that identifies “Restore” effects.
sRegen: String that identifies “Regen” effects.
sResist: String that identifies “Resist” effects.
sFortify: String that identifies “Fortify” effects.
sLingering>: String that identifies “Lingering” effects.
sRavage: String that identifies “Ravage” effects.
bUsePriceLimits: Whether to apply price limits defined below to ingredients.
priceLimitLower: Lower limit to prices.
priceLimitUpper:Upper limit to prices.
The ReProccer identifies effects by substrings in their name, and set their duration and magnitude accordingly. When a name contains multiple strings, such as “Damage Magicka Regen”, the higher duration and magnitude change should apply. Note that the factors for some stuff drastically reduce the magnitude; leaving it high would essentially multiply the effect’s potency. The ReProccer makes sure the minimum magnitude is 1.0.
The last three entries deal with prices. Some effects are close to worthless, and might become even more worthless when reducing the magnitude. If bUsePriceLimits is set to “true”, it’ll prevent that to some extent by assigning minimum and maximum values to ingredients.
_ _ __ ____ _ _
3.15 Projectile Base Stats
This is where base stats for arrows and bolts are defined. Each has a section of it’s own:
120000.0
5200.0
0.25
5
Arrow
Apart from range, speed, gravity influence and base damage this section also includes the strings that identify arrow and bolt in-game. So, everything that includes “Arrow” is classified as arrow when calculating stats.
The “bolt” section is omitted, but looks just like the “arrow” section. Alter the values as you please, but neither remove any section (will mess the patcher up), nor add new ones (will clutter the XML with stuff that’s ignored anyway).
_ _ __ ____ _ _
3.16 Projectile Modifier Stats
This section defines how arrow/bolt modifiers, such as “Exploding”, “Rope” and “Barbed”, influence the ammunition’s behaviour. It looks like this:
Explosive
0.2
-100
0
…
more modifier_stats_projectile entries …
Again, gravity, speed and damage may be adjusted. These values are added to the base values.
Note that some modifiers, such as “Fire” (for exploding fire bolts), do not have entries per default. However, you may add them in this section as you please. By removing entries, you tell the ReProccer to make the deleted modifier not influence the stats.
This section affects both bolts and arrows equally.
_ _ __ ____ _ _
3.17 Projectile Material Stats
Code snippet incoming.
Ancient Nord
0.1
-100
2
… more entries ..
Material modifiers work just like… “modifier modifiers”. The values gathered here are added to everything that fits. Unlike “modifier modifiers”, only one material may apply to each arrow/bolt.
Do not remove anything! Tweak as much as you want though, and add entries if a mod you use adds new arrow/bolt materials.
Again, both arrows and bolts are affected.
_ _ __ ____ _ _
3.18 Ammunition Multiply Exclusion Strings
Code, come forth!
Centurion
… more …
Usually, arrows/bolts are multiplied by the patcher. That means a single “Iron Bolt” would get exploding, fire, frost, shock, barbed, timebomb, noisemaker, lightsouce, strong, strong exploding, …. variants, all with crafting recipes & co. By adding stuff here, you make sure this multiplication does NOT take place. Stats will still be adjusted.
The above entry excludes every bolt/arrow whose displayed name contains “Centurion”.
_ _ __ ____ _ _
3.19 Ammunition Exclusion Strings
Practice
This section excludes single projectiles from patching completely. No variants, no damage, no gravity, no nothing.
_ _ __ ____ _ _
3.20 Dreamcloth Exclusion Strings
I am cat. Meow meow meow meow meow meow:
wound test
Meow meow meow meow meow meow no dreamcloth from clothing meow meow meow!
_ _ __ ____ _ _
3.21 Mod Exclusions
This section alows you to completely exclude records of a given mod, identified by its name, from patching. This is the XML:
brokenmod.esp
If you feel like not patching a mod is the right thing to do, add more mod_exclusion entries (or replace the existing one, heh). Note that this section does not work with substrings, but with exact matches.
_ _ _ _ __________________________ _ _ _ _
4. Example Tweaks
Q1: “I hate your high armor values. How do I halve everything?”
A1: In the “base_stats_armor” section, halve all multiplicators. Re-run the patcher, forcing a new patch.
_ _ __ ____ _ _
Q2: “Mod XY adds a new armor material called Uberhaxx. I want Uberhaxx to have stats slightly above Daedric. How do I do that?”
A2: In the “armor_materials section”, search the armor_material that handles “Daedric”. Copy-paste it within that section, and modify it accordingly. It might look like
this afterwards:
52
Uberhaxx
Re-run the patcher, forcing a new patch.
_ _ __ ____ _ _
Q3: “Mod XY adds the “Curved Sword” weapon type. I want every Curved Sword to use Scimitar perks and stats. How do I do that?”
A: Go to the “weapon_type_definitions” section and add the folowing weapon_type_definition:
SCIMITAR
Curved Sword
Re-run the patcher, forcing a new patch.
_ _ _ _ __________________________ _ _ _ _
5. “Oh noes I tried everything and my patcher still fails” aka “The Log”
The ReProccer logs are found in the “SkyProc Debug” folder. If you experience any issues, use the included Debug-Starter.bat to run the ReProccer, then send me the last few (~ 50) lines of every log created. Under certain circumstances sending the whole log is better, but I’ll notify you if that’s the case.
Howveer, before sending stuff to me, check the comments, especially the sticky post. If you don’t bother trying to solve your problems, I’ll not bother either.
_ _ _ _ __________________________ _ _ _ _
6. @ Modders
6.1 @ Armor Modders
As long as you use vanilla material keywords, nothing major should break when the ReProccer does it’s work. Values might get messed up for weird combinations, such as a Daedric-quality armor, requiring Daedric smithing, with steel keywords and “Steel” in its name.
Most of it can be remedied by adding armor_material entries though.
If you use neither vanilla material keywords, the ReProccer users need to add armor_material_override entries. No problem if you clearly state how strong you intend each piece of armor to be.
_ _ __ ____ _ _
6.2 @ Weapon Modders
Same rules apply, and some additional stuff.
If you want your Katana to be recognized as Katana in SkyRe, make sure its name contains “Katana”. If that’s not possible for artistic reason, that’s still fine, since it can be fixed with a override. The only thing that should make the ReProccer bug out is the use of vanilla weapon strings, such as “Sword” on something that should really belong to another type.
If you created a weapon mod that features a type worthy of indiviual stats and perks (such as flails or morningstars), contact me and I can set the ReProccer up to use your type properly. I can even create new perks specifically for your type now without including your mod.
Also, I still recommend vanilla material and weapon type keywords (in addition to any individual keyword you might use).
_ _ __ ____ _ _
6.3 @ Compatibility Patchers
Your job should mostly be done by the ReProccer now, though creating a few lines of copy-pasteable XML for the config is still necessary for mods that ignore my advice on keywords. Alternatively, you can use the ReProccer to create patches for those that can’t get it to work.