Editing EPV Files - Ezekial711/MonsterHunterWorldModding GitHub Wiki
Credits and TOC
Written by Asterisk, Group IDs by Silvris. Research by Asterisk, Crimson, Silvris and StageNRyu.
Introduction
EPV files control how different in--game assets trigger efx under certain actions. EPV control of effects is limited, in particular EPV parameters can only affect EFX that have been configured to take EPV parameters. In that sense, customization through EPVs is restricted to the choice of EFX and the trigger for EFX.
For armors, EPVs come in a single variety: Per part basis. It's set on the "epv" folder at the same level as the "mod" folder, both inside the armor part folder (for example: "pl\f_equip\pl124_0000\body"). Some triggers can be based on full set conditions such as the Gala set efxs.
For weapons, EPVs come in two varieties: Local EPVs and Global EPVs.
Local EPVs are analogous to those in armors. They reside on the weapon's folder next to the model folder (for example: "wp\ham\ham034\epv"). The triggers on this EPVs are limited, they are restricted to sheathe and unsheathe conditions. Specific unique EPVs (that depend on the ID of the weapon and do not transfer to other IDs) have some more flexibility.
Global EPVs are where the EFX for every instance of a weapon are taken from. Editing a Global EPV results in most if not all of the weapons in a class being affected. However, it's possible to make unique, non-replacing global EPVs. In reality Global EPVs are mapped through the EVWP. The EVWP determines the Global EPV used for it. The Global EPVs reside in the "epv" folder of the class (for example: "wp\bow\epv").
Editing
Groups and Group ID (#1)
An EPV is comprised of a list of groups. A group represents an action triggers. The action trigger is mapped through the Group ID property (#3). Group IDs tend to be broadly shared through categories, for example most weapons have the same functions for Group IDs within the 0 to 1000 range. However, IDs can also be unique for a given weapon slot, requiring being in a specific Weapon ID to be triggered.
ID | State | Weapon |
---|---|---|
100 | Unsheath | |
101 | Always Active | On Armors only |
110 | Always Active | |
200 | Special State | Sword Mode (SA), Demon Mode (DB), Axe Mode (CB), Unsheath on Armors |
210 | Alternate State | Axe Mode (SA), Sword Mode (CB), Secondary Unsheath (Other Weapons) |
900 | Weapon Preview | |
+001 | Off-hand Weapon |
Records and Record ID (#2)
Record IDs (#4) are used for sub-selecting specific EFXs after a trigger happens. For example, for Safi'jiiva weapons, there's a Group ID for the efx that will fire when being unsheathed, but the colour and EFX that stems from that action depends on the element of the weapon, this is controlled through the Record ID.
A Record contains the information about the firing of the efx after a trigger happens. EPVs cannot control properties that the EFX being called is not explicitly allowing the EPV to modify.
EFX are called by providing the relative path to the EFX within the EFX Paths section of the record (#5). The first path provided is, in some cases, privileged by the call and has different duration mechanics, often allowing the effect to end instead of re-ocurr repeatedly which is desirable for EFX called by attacks that transition quickly to other charge levels.
Bone ID (#6)
The Bone ID determines the bone function within the model linked to the EPV which will be used as the center of coordinates for the EFX transformations, and which the EFX will track. -1 will instead use either the EFX own mapping if present or the origin of the object if the EFX has no explicit override.
EFX Slot (#7)
EFX can define properties as keyed to control groups. They do this by declaring a property as controlled by a slot index. The EPV can explicitly declare a slot and which index it corresponds to (indexing starts at 1, an index of 0 means it's disabled). The EPV declaration of the EFX Slot is matched with the EFX Declaration of the EPV Slot and if they match in index the properties are passed to the EFX. Color (#8), Alpha (#9) should be self explanatory. Saturation (#10) must be a value different from 0 for color to be applied. Size (#11) refers to a multiplier on top of scaling properties. Frequency (#12) is a multiplier on the periodicity of repeating effects.
EPVs can declare up to 8 slots to which the EFX can connect to. Indices are not limited as this allows reused EFX to have different aspects controlled by different EPV calls.
Convenience Operations
The EPV Editor provides undo (#E1) and redo (#E2) functionality (across traditional operations including search and replace). Scripting is excepted, it will wipe the undo and the redo stacks as scripts are allowed to operate across files and do arbitrary operations on the raw structure of the file.
Copy, Paste, Delete, Duplicate (#E3 - #E6)
Copy and Pasting groups and record within and across files is possible. Deleting and Duplicating records is also possible and within the context menus.
Copy and Paste Properties (#E7 and #E8)
It's possible to only copy the sub-properties without having to replicate the entire Record or Group. This is particularly useful for copying Group indices quickly.
The Copy Stack (#E9 - #E11)
The copy stack provides a way of storing multiple objects to paste all at once. While it's recommended to only store one kind (Groups or Records), it's possible to store a mix. The stack can also be cleared. Undoing does not affect the copy-paste clipboards or stacks, only the results of operations over it.
New Group and New Record (#E12 and #E13)
It's possible to create new Records and Groups.
Searching
Find
Result Listings (#1 and #2)
Lists the lists of results, headead by the file they are in (#1). Double clicking the result will set the cursor on the relevant entry (#2). Searches apply to the current file by default but it's possible to execute a search on all currently opened files (#4).
Searchbox (#3)
Text Search
It's possible to search for patterns within the group of paths in a record. This treats the grouping as a single path concatenated with the lineskip as a separator. Additionally it's possible to use python regular expressions with all of the caveats of a regex.
Color Search (#3)
It's possible to search for colors with or without tolerance for similarity. Additionally it's possible to also search for specific alpha values attached to the color.
Find Next and Find All (#5 and #6)
Find Next finds the next immediate match. In multi-file mode it will jump to the next files if no more matches are found within the current file. Find All displays all of the possible matches.
Replace
Customizing Replace Results (#2 - #5)
It's possible to customize search results (changes on the replace window can also be undone or redone with Ctrl+Z and Ctrl+Y). Either to edit them by double clicking the results (#3) or by deleting them (Del Key or Button #4). This changes can be reset (#4).
Scripting
It's possible to load python scripts or interact with the files dynamically through a console. There are convenience access and edit methods provided when calling the interactive console and loading scripts directly. All scripting functions invalidate Redo and Undo Stacks because of their ability to perform complex multi-file operations and set invalid values as intermediate states (or final stages).