Spell Config Formats - pWn3d1337/Skyrim_SpellHotbar GitHub Wiki

Spellhotbar reads a lot of configuration (spell config & icons) from csv files

Format

All .csv in this mod use tab as seperator and UTF-8 as encoding, best use LibreOffice or Excel to edit. Any text editor will work if you are careful about tabs, Notepad++ for example can show them.

Image Config

Located in SKSE\Plugins\SpellHotbar\images Every .csv in this folder will be parsed and a .png image with the same base filename is expected. The images are atlases and contain many stitched images to avoid loading many small files. Technically a .png with just 1 image is possible though.

image.csv format

Can be generated through stitch_icon_atlas.py Columns:

  • FormID - form id of the spell, without load order index, as HEX number (0x), max 6 digits, leading 0s can be avoided. e.G 0x10f7ed, 0x820
  • Plugin - name of the plugin containing the form, e.G Skyrim.esm
  • u0 - texture coordinates of the sub image
  • v0 - texture coordinates of the sub image
  • u1 - texture coordinates of the sub image
  • v1 - texture coordinates of the sub image
  • Name - for human readability, not actually needed

The Images contain alpha borders for the images, which are generated by the python script. Theoretically it can be done manually though.

Spell config

Located in SKSE\Plugins\SpellHotbar\spelldata Every .csv in this folder will be parsed

spelldata.csv format

Defines cooldowns and cast animations for spells. Also 'generated' as part of stitch_icon_atlas.py

Columns:

  • Name - for human readability, not actually needed
  • FormID - form id of the spell, without load order index, as HEX number (0x), max 6 digits, leading 0s can be avoided. e.G 0x10f7ed, 0x820
  • Plugin - name of the plugin containing the form, e.G Skyrim.esm
  • Casteffect - Visual fx attached to the hands while charging, see section below about definition of cast effects, can be empty (also not used for powers and shouts)
  • GCD - Global cooldown, keep -1 for default, can be used to extend if a power triggers some special anim that should lock the player out of using the bar for that time.
  • Cooldown - can be used to give Skills a cooldown (when cast through the bar). For greater powers (once per day) and shouts this is handled automatically, do not set a cooldown for those, You can specify the cooldown as 1s for 1 second, 1m for 1 minute or 1h for 1 hour, no suffix will be seconds. Cooldowns are tracked in gametime and reset when you wait or quick travel. When the Cooldown starts the time is converted to gametime depending on the current timescale. This will cause incorrect timings when you change your timescale afterwards.
  • Casttime - How long charging up the spell takes, leave -1 for reading the value from .esp, for spells with long casttimes this is set to 1.75 to not cause animation problems, very long cast times do not look good. As compensation the slow ritual spells have set a cooldown by default.
  • Animation - Which animation to use, this does not do anything in code besides setting a global variable to this value while the spell is beeing cast. The only place this variable is used is in DAR conditions, e.GValueEqualTo("SpellHotbar.esp" | 0x815, 2). By default up to 15 is used. The variable is a short and new numbers can be added (up to 32,767)

Cast Effect config

Located in SKSE\Plugins\SpellHotbar\effectdata Every .csv in this folder will be parsed

To get a visual effect on the hands while charging a spell through the hotbar, a dummy spell and magic effect are cast on the player that has two hit effects that attach a nif to the players hands during the cast. To save a lot of hassle in creation, the spell and magiceffect are always the same and only the art objects get change. The duration of the effect is also dynamically changed to match the casttime (rounded). This means to add new effects only new Art Objects need to be created.

Columns:

  • Key - this is required to identify the effect and the value that needs to be used in spelldata.csv
  • FormID_L - form id of the art object for the left hand without load order index, as HEX number (0x), max 6 digits
  • Plugin_L - name of the plugin containing the art object, e.G SpellHotbar.esp
  • FormID_R - form id of the art object for the right hand without load order index, as HEX number (0x), max 6 digits
  • Plugin_R - name of the plugin containing the art object, e.G SpellHotbar.esp

The used Nifs for the ArtObjects are copies from vanilla effects with a simple nif change to attach them to the Player's hand Attach a NiStringsExtraData Node with 1 entry and and set it to NamedNode&NPC L Hand [LHnd] or NamedNode&NPC R Hand [RHnd]