File information

Last updated

Original upload

Created by

zhitsak

Uploaded by

zhitsak

Virus scan

Safe to use

About this mod

A SKSE plugin that lets you add custom effects to items when they are activated, grabbed, released, thrown, or hit. You can make things happen like spawning items, impact data sets, actors, casting spells, creating explosions, playing sounds, and swapping objects - all controlled with JSON files.

Requirements
Permissions and credits
Changelogs


Object Impact Framework (OIF) is a SKSE plugin that lets you add custom effects to items when they are activated, grabbed, released, thrown, or hit. You can make things happen like spawning items, impact data sets, actors, casting spells, creating explosions, playing sounds, and swapping objects - all controlled with JSON files. Compatible with everything.

There is also a ready-made config for cutting cheeses and the bread, available right below the main file.


The more detailed documentation for mod authors with examples: GitHub.


Users Info

  • Make sure you have installed: SKSE and Address Library (or VR Address Library)
  • Place your JSON files in: Data/SKSE/Plugins/ObjectImpactFramework/
  • Troubleshooting: If something doesn’t work, look at the mod's log file for error messages. The log can be found in Documents/My Games/Skyrim Special Edition/SKSE/ObjectImpactFramework.log


Mod Authors Info
 
  • Filter Note: An object must be defined by at least one of the four parameters - formIDseditorIDs, formListsformTypes, keywords - for the event to work. Warning: Equivalents with the Not ending do not count.
  • FormIDs Note: If you are not using the standard 0x prefix and are copying from CK or SSEEdit, make sure you put 00 instead of the load order digits.
  • Identifiers Must Match: Make sure the formID or editorID fits the effect (e.g., a spell ID for "SpawnSpell", an item ID for "SpawnItem").
  • Priority Note: Place effects with "Remove" and "Swap" prefixes at the very end of the event, otherwise the removed object may not have time to call other effects on itself before gets deleted.
  • You can modify existing JSON files without quitting the game, just edit the file and reload the save.
 

Complete Quick Reference


Events

  • "Activate" - Activating / opening objects
  • "Hit" - Hits with weapons / spells
  • "Grab" - Grabbing items
  • "Release" - Releasing grabbed items
  • "Telekinesis" - Telekinesis spell
  • "Throw" - Throwing objects (requires Grab And Throw mod)
  • "CellAttach" - Object is attached to a cell
  • "CellDetach" - Object is detached from a cell
  • "WeatherChange" - Weather has changed
  • "OnUpdate" - Every 250 milliseconds
  • "DestructionStageChange" - Changing destruction stage

Allowed Object Types

  • "activator"
  • "talkingactivator"
  • "weapon"
  • "armor"
  • "ammo"
  • "ingredient"
  • "misc"
  • "key"
  • "book"
  • "note"
  • "scroll"
  • "soulgem"
  • "potion" (includes food/drinks)
  • "furniture"
  • "door"
  • "flora"
  • "container"
  • "static"
  • "moveablestatic"
  • "tree"
  • "light"
  • "grass"

Filter Options

Object Identification (need at least one positive):

  • formIDs / formIDsNot - Specific object form IDs ("Skyrim.esm:0x123456")
  • editorIDs / editorIDsNot - Specific object editor IDs ("VendorItemClutter")
  • FormTypes - Object categories (see the list above)
  • formLists / formListsNot - Formlist references with index support (-1 for all items, -2 for parallel relationship for mirrored formlists, 0+ for specific index)
  • keywords / keywordsNot - Required/forbidden keywords
Conditional Filters:

  • chance - Probability (0-100)
  • interactions - How many hits / uses before triggering
  • limit - Maximum times this can happen per object
  • questItemStatus - Whether the object is a quest item (0 for non-quest, 1 for alias, 2 for quest, 3 for all)
  • isInitiallyDisabled - Whether the object has the kInitiallyDisable flag (0 for no, 1 for yes, 2 for all)
  • isPluginInstalled / isPluginNotInstalled - Mod dependencies
  • isDllInstalled / isDllNotInstalled - DLL dependencies
Time-Based Filters:

  • timer - Waits the defined number of seconds before triggering the effect with matchFilterRecheck support (0 for no, 1 for yes)
  • time / timeNot - Specific time (minute, hour, day, dayofweek, month, year, gametime)
Proximity-Based Filters:

  • nearbyObjects / nearbyObjectsNot - Specific objects in a certain radius from the target object
  • locations locationsNot - Specific cells / locations / worldspaces or formlists of them
  • weathers weathersNot - Specific weathers of formlists of them
Source Actor Filters:

  • hasItem hasItemNot - Source actor inventory items requirements
  • perks perksNot - Source actor perk requirements 
  • spells / spellsNot - Source actor spell requirements
  • actorKeywords / actorKeywordsNot - Source actor keywords requirements
  • actorRaces / actorRacesNot - Source actor races requirements
  • actorValues actorValuesNot - Source actor stats (["Health >= 50"])
  • level levelNot - Source actor level ([">= 10"])
  • isSneaking / isSwimming / isInCombat / IsMounted / isDualCasting / isSprinting / isWeaponDrawn - Source actor state (0 for no, 1 for yes, 2 for all)
Hit-Specific Filters:

  • destructionStage - Specific destruction stage
  • weaponTypes / weaponTypesNot - "onehandsword", "twohandsword", "onehandaxe", "twohandaxe", "onehandmace", "twohandmace", "dagger", "ranged", "staff", "handtohand", "spell", "scroll", "shout", "ability", "power", "lesserpower", "explosion", "total", "other"
  • weapons / weaponsNot - Specific weapon / spell / explosion IDs
  • weaponsKeywords / weaponsKeywordsNot - Weapon / spell keywords
  • attacksTypes (or attacks) / attacksTypesNot (or attacksNot) - "regular", "power", "bash", "charge", "rotating", "continuous", "constant", "fireandforget", "ignoreweapon", "overridedata"
  • deliveryTypes / deliveryTypesNot - "self", "aimed", "targetactor", "targetlocation", "touch", "total", "none"
  • allowProjectiles - 0 for no, 1 for yes (default)
  • projectiles / projectilesNot - Specific projectile IDs
Effect Types

Object spawn/swap:

  • "RemoveItem" - Delete object
  • "EnableItem" - Enable object
  • "DisableItem" - Disable object
  • "SpawnItem" / "SpawnLeveledItem" - Spawn items
  • "SwapItem" / "SwapLeveledItem" - Replace object with items
  • "SpawnActor" / "SpawnLeveledActor" - Spawn creatures/NPCs
  • "SwapActor" / "SwapLeveledActor" - Replace object with creatures/NPCs
Magic Effects:

  • "SpawnSpell" / "SpawnLeveledSpell" - Cast on nearby actors
  • "SpawnSpellOnItem" / "SpawnLeveledSpellOnItem" - Cast on object
  • "ApplyIngestible" - Apply object's potion effects to nearby actors
  • "ApplyOtherIngestible" - Apply specified potion effects to nearby actors
  • "AddActorSpell" - Add specified spells to the source actor
  • "RemoveActorSpell" - Remove specified spells from the source actor
  • "AddActorPerk" - Add specified perks to the source actor
  • "RemoveActorPerk" - Remove specified perks form the source actor
Visual/Audio Effects:

  • "SpawnImpactDataSet" - Play Impact Data Sets
  • "SpawnExplosion" - Create explosions (cannot be used with fade = 0 and SpawnType other than 0 or 4)
  • "SpawnEffectShader" / "SpawnEffectShaderOnItem" - Effect shaders
  • "SpawnArtObject" / "SpawnArtObjectOnItem" - Art objects
  • "ToggleNode" - Toggles model's node on and off
  • "PlaySound" - Play sound descriptors
  • "PlayIdle" - Play animation on a source actor
Lighting Effects:

  • "SpawnLight" - Create lights
  • "RemoveLight" - Delete nearby lights
  • "DisableLight" - Disable nearby lights
  • "EnableLight" - Enable previously disabled nearby lights
Inventory Effects:

  • "SpillInventory" - Empty containers
  • "AddContainerItem" - Add specified items to containers
  • "AddActorItem" - Add specified items to a source actor
  • "RemoveContainerItem" - Remove specified items from containers
  • "RemoveActorItem" - Remove specified items from a source actor
Utility Effects:

  • "UnlockItem" - Unlock objects
  • "LockItem" - Lock objects
  • "ActivateItem" - Activate objects (same as pressing E on any item)
  • "ExecuteConsoleCommand" / "ExecuteConsoleCommandOnItem" - Execute a console command
  • "ShowNotification" - Show a notification
  • "ShowMessageBox" - Show a message box with "OK" button

Items Configuration Options

Effect's "items" possible fields:

  • formID - Specific object ID ("Skyrim.esm:0x123456")
  • editorID - Specific object editor ID ("EditorIDName")
  • formList - Formlist with index ([{"formID": "...", "index": 0}], [{"editorID": "...", "index": -2}])
  • chance - Individual item chance (0-100)
  • timer - How many seconds to wait before triggering an effect 
  • count - How many items / times
  • radius - Effect radius
  • duration - Effect duration
  • scale - Object scaling
  • fade - Fade effect on spawn (0 for no fade, 1 for fade (default))
  • spawnType - Spawn positioning (0-8)
  • nonDeletable - Keep original in swaps (0 for deletable, 1 for non-deletable)
  • string - Single text string
  • strings - Multiple text strings
  • mode - Determines fuction mode (0 for disable, 1 for enable)
FormID Formats

  • "Skyrim.esm:0x123456" (esp/esm)
  • "MyMod.esl:0x456" (esl/espfe)
  • "Skyrim.esm:00123456" (with leading zeros for esp/esm)
  • "MyMod.esp:FE000800" (with FE prefix for espfe/esl)
FormList Index Options

  • -1 (default) - All items at once
  • -2 - Parallel relationship for mirrored lists
  • -3 - Random selection from list
  • 0+ - Specific index
Spawn Types

  • 0 - Basic PlaceAtMe
  • 1 - Center of original
  • 2 - Top of original
  • 3 - Bottom of original
  • 4 (default) - Buggy physics-bypassing PlaceAtMe
  • 5 - Buggy physics-bypassing center
  • 6 - Buggy physics-bypassing top
  • 7 - Buggy physics-bypassing bottom
  • 8 - Pin to ground below
  • 9 - Pin to a specific node


    Seb263 and for the inspiration
    Solus200 for ideas, assistance and testing (practically the second developer). If it weren't for you, the OIF's quality just wouldn't be the same!
    kwamagg and kuroishitam for ideas and testing
    doodlum & Quantumyilmaz - I learned how to write plugins by digging into their code