Releases: arachnocid/ObjectImpactFramework
Releases · arachnocid/ObjectImpactFramework
Release v1.6.8
Changelog
Performance Optimizations
- Optimized
OnUpdateEvent - Update frequency reduced from every 250ms to once per second, significantly improving performance with multiple configurations using this event - Optimized
nearbyItemsandnearbyItemsNotSearch - Major performance improvements when used withOnUpdate. Previously could cause frame drops and potential crashes with heavy formlists
New Features
- Support for random values in
interactions,limit,chance,count,scale,radius, andtimerfields.- Now they accept either default values:
"interactions": 2and"timer": {"time": 2, "matchFilterRecheck": 1}
or detailed entries:"interactions": {"min": 1, "max": 5}and"timer": {"time": {"min": 1, "max": 5}, "matchFilterRecheck": 1} - Reroll Behavior:
chance,count,scale,radius,timer- reroll each time rule is triggered/effect applied, depending on where you put the extended entryinteraction- reroll each time it accumulateslimit- reroll only once
- Now they accept either default values:
- Added interior check to
weathersandweathersNotfilters. Indoor locations now pass effects rather than filtering them out
New Filters
Target Object Filters
IsInterior- Checks if target object is in interior0- no1- yes2- all/undefined
IsStacked- Checks if target is single reference or stacked bunch0- no1- yes2- all/undefined
Position- Checks target object's position relative to player (useful for PlayIdle effect)0- below player's middle1- player's middle2- above player's middle3- all/undefined
Player Filters
IsFirstPerson- Checks if player is in first person0- no1- yes2- all/undefined
IsThirdPerson- Checks if player is in third person (same format as above)
Removed Features
- Physics Nudging from
SpawnArtObjectOnItem- Removed due to incompatibility with unidentified mod causing game stuttering and micro-freezes. Previously gave small impulse to prevent art objects from freezing due to engine limits
Release v1.6.7
Changelog
New Features
- Non-Collidable Flora & Tree Impact Support - Support for impacts on non-collidable flora and trees. The system uses workarounds and mathematical calculations, which can cause plants location estimate not to be always accurate. Note: Spells with attached projectiles are currently not supported due to the hooks issues (credits to RavenKZP for assistance)
Bug Fixes
- Fixed global filter chance calculating separately for each effect instead of once
- Fixed
locationsandlocationsNotfilters ignoring worldspace forms. Note: Detection still won't work if the cell lacks linked worldspace information - Fixed
OtherWeaponType classification for projectiles - now correctly identified asRanged(restored behavior from pre-1.5 versions) - Fixed
ExecuteConsoleCommand- effects executing commands twice - Fixed crashes related to removing or disabling light sources
- Fixed a potential crash with the
Activateevent that was present in previous versions - Fixed
OnUpdatehook in which I previously overlooked an argument (hopefully it didn't break the game or any other mods) - Improved main formIDs obtaining function - now ignores case sensitivity and load order numbers
New Filters
- Lock Level Filters -
lockLevelandlockLevelNot-2(default) - all / unidentified-1- unlocked0- novice1- apprentice2- adept3- expert4- master5- requires key
New Effects
Magic Effects
ApplySpell- Functions likeApplyIngredient, but for scrolls and spell tomes. Casts spells within the radius specified in theitemsfield
Utility Effects
ExecuteConsoleCommandOnSource- Similar toExecuteConsoleCommandOnItem, but selects the source actor in the console instead of the target object
Removed Features
- Grass Form Type Support - Removed due to framework limitations that make complete processing and effect support impossible
Release v1.6.6
Performance & Fixes
- Un-fixed all keyword filters. Now they are back to accepting ones that have no actual forms, such as keywords added by KID
New Events
DestructionStageChange- triggers when destruction stage changes
New Filters
destructionStage- -1 (default) for all/undefined, stages indexes start from 0
Changed Filters
timer- now accepts the digit to be processed right away or the{"time": 1.0, "matchFilterRecheck": 0}structure, allowing the effect to be canceled if conditions were violated while waiting. 0 for no re-check, 1 for re-check (credits to Solus200 for the idea)
New Items Filters
- New
spawnType: 9, spawns an object to the specific node defined instring. Thestringfield is now available forspawn-andswap-effects (specifically, for objects, actors, light, and explosions) - Now
itemsfield of any effects (except those that do not support the field) have atimerfilter
New Effects
Visual Effects
SpawnArtObject- spawns art objects on nearby actorsSpawnArtObjectOnItem- spawns art objects on the target object. Applying an art object on a moving object does NOT cause the effect to freeze when the object stops moving, the framework avoids this
Utility Effects
ShowMessageBox- displays a message boxShowNotification- shows a notificationExecuteConsoleCommand- executes a console command on nearby actorsExecuteConsoleCommandOnItem- executes a console command on the target object
New Supported Form Types
grass(credits to RavenKZP for the idea)
Release v1.6.4
Performance & Fixes
- Fixed
allowProjectilesfilter, it was previously ignored due to a case error - Fixed
scalefield for spawn and swap effects. The function itself has also been changed, now the originalSetScale()is used instead of the workaround console version, so it now covers all supported form types
New Features
- Now every filter that takes form or editor ID (
"filterName": ["Skyrim.esm:00123456", "VendorItemClutter"]) takes form or editor IDs of formlists as well, just like inweathersandlocations
Removed Filters
- Removed
weaponsFormLists,weaponsFormListsNot,projectilesFormLists,projectilesFormListsNotas redundant
New Filters
Time-based
timer- waits the defined number of seconds before triggering the effecttimeandtimeNot-["Hour >= 10", "DayOfWeek = 1"], possible entries -minute,hour,day,dayofweek,month,year,gametime
Proximity-based
nearbyObjectsandnearbyObjectsNot- take any form type, including NPCs
Source Actors (credits to Solus200 for the ideas and testing)
actorKeywordsandactorKeywordsNotactorRacesandactorRacesNotspellsandspellsNotisSneaking,isSwimming,isInCombat,IsMounted,isDualCasting,isSprinting,isWeaponDrawn- 0 for no, 1 for yes, 2 (default) for all/undefined
New Effects
AddActorSpell,RemoveActorSpell,AddActorPerk,RemoveActorPerk
1.6.3
Performance & Fixes
- Disabling items is now handled through a workaround to prevent the kInitiallyDisabled flag from being set so the
isInitiallyDisabledfilter can be used correctly. WARNING: It is highly recommended first go through the locations and make sure that all the necessary items are respawned before updating (credits to Solus200 for assistance and testing) - Cleaned up code, removed an unused placeholder for
attacksTypesthat could potentially cause some spells to be filtered out
New Effects
ActivateItem- activates activators, picks up pickable items, automatically opens containers. Does not work with the "Activate" event to avoid collisions (credits to Solus200 for the idea)AddContainerItemandAddActorItem- adds specified items to containers or sources' inventoriesRemoveContainerItemandRemoveActorItem- removes specified items from containers or sources' inventories
Release v1.6.2
Performance & Fixes
- Global performance optimization
- Fixed Throw event not working when ReadyWeapon button was remapped or when using Xbox controller
- Fixed multiple identifier selection bug - rules now use ALL logic instead of ANY when multiple identifiers are specified (
formTypes,formLists,editorIDs,formIDs,keywords) - Fixed the behavior of
isPluginInstalledandisDllInstalledand their inverses - now, if a plugin is missing, the log won't be spammed with reports about it, the rules won't be skipped - Fixed
keywordsNotandweaponsKeywordsNotskipping objects that don't support keywords instead of passing (credits to Solus200 for pointing out and testing) - Fixed
weaponsandweaponsNotaccepting nothing but weapons and spells, you can now specify explosions as well - Fixed shouts and projectiles registering. Note: all shouts don't work with statics. Those shouts that are pure projectiles (e.g., Unrelenting Force) will work only with furniture, flora, doors, containers, and activators (credits to Solus200 for assistance & testing and kuroishitam for pointing out & testing)
New Features
Explosions Support
- Full support for explosions and chain reactions (credits to Solus200 for assistance & testing and kuroishitam for testing)
- You can filter them using
weaponTypes,weapons, andweaponsFormLists - Those explosions that have a radius or a damage of
0are automatically filtered out
Editor ID Support
- Full support for editorIDs (credits to Solus200 for testing)
- For filters it is
editorIDs, for the items of any effect it iseditorID - Those filters that accepted forms in the format
Mod.esp:00123456now also acceptEditorIDName
New Filters
formTypesNot- inverse form type filteringisInitiallyDisabled- 0 for no, 1 for yes, 2 (default) for all/undefined. Note: when you re-enter a location, an item you freshly disabled may acquire this flag (credits to Solus200 for the idea and testing)allowProjectiles- 0 for no, 1 (default) yesprojectilesFormListsandprojectilesFormListsNot- projectile form list filteringdeliveryTypesanddeliveryTypesNot- containself,aimed,targetactor,targetlocation,touch, andtotal
Changed Filters
attacks- now you can optionally write it asattacksTypes. Removedprojectilesentry, fixedcontinuousnot working with concentrating spells. New possible entries:fireandforget,constant,ignoreweapon,overridedataweaponsTypes- new possible entries:scroll,explosion
New Events
WeatherChange- applies an effect on weather change. Recommended to use withweathersandweathersNotfilters to manage - works outside only
New Effects
UnlockItemandLockItem- works with objects like doors or containersToggleNode- toggles node "on" and "off". Acceptsmode(0 for disable, 1 for enable) andnodeNames. Example:items: [{"mode": 0, "nodeNames": ["addon"]}](credits to Solus200 for the idea and testing)
Changed Effects
SpawnImpact- renamed toSpawnImpactDataSetfor clarity. Now the spawn position for an impact is calculated differently, the point is bound strictly to the position of the object in space. Now works on small movable objects without displacement
New Supported Form Types
light- e.g., torches, lanterns from Havoc and Non Havoc Lanterns by giamel (credits to Solus200 for testing)
Release v1.6.1
Performance & Stability
- Removed the
ObjectLoadedevent and added a huge number of missing checks for event receivers and effects to prevent crashes - Once again changed memory management, which should remove lags and freezes
Bug Fixes
- Added potential recursive links handle for
locationsfilter - Those effects that use console-based functionality now correctly unselect previously selected references
- Fixed the bug which caused
ThrowandReleaseevents make effects double, when used in one rule - Fixed some weapons filters being ignored
- Fixed
perksandperksNotbeing ignored when used with something else than Hit event
Changed Effects
ApplyIngestiblenow hasitemsfield so you can setradiusandchancethere
New Filters
- New value for
QuestItemStatus:3for all objects allowed. The default value stays 0 for non-quest only actorValuesandactorValuesNot- ["Health >= 10", "Aggression = 0"]levelandlevelNot- [">= 10", "= 20"]hasItemandhasItemNot- ["Skyrim.esm:000123456"]
Changed Filters
- New special index for formlists:
-3, allows you to select one random object from the list. Available ONLY in the effects'items(credits to Solus200 for the idea)
New Items Filters
- New
scalefield foritems(spawn/swap functions only) - allows you to select the scale of the spawned item. By default, it is copied from the target object - New
fadefield foritems(spawn/swap functions only) - determines whether the object will have a fade effect or not upon creation.0- without fade effect,1(default) - with fade effect (credits to Quantumyilmaz for the direction) - New
spawnTypefield foritems(spawn/swap functions only) - allows you to select the type of how the object should be spawned. A total of 8 options are available: (credits to Solus200 for the idea, assistance and testing)0- normal PlaceAtMe1- PlaceAtMe spawning the object at the middle of the original2- PlaceAtMe spawning at the top of the original3- PlaceAtMe spawning at the bottom of the original4- (default) normal with buggy engine physics bypassing (when used withThrow/Grab/Release, the object will be spawned exactly to the landing point)5- bypass with centering6- bypass with spawning at the top7- bypass with spawning at the bottom8- pin to the ground regardless of the landing location
Release v1.6
Performance & Stability
- Now you can copy formIDs form SSEEdit for ESL and ESPFE as well, the code will process FE prefix:
"Mod.esp:FE000800" - Improved memory cleanup. Now there are different containers for interactions and limits. For interactions, half of old records are cleared, and for limits, all records with infinite limit are cleared - there is no more chance that an object will become interactable again after some time
- In event receivers, all important pieces of code are now moved to separate tasks, preventing objects from being ignored when too many are processed at once
- Completely redesigned the throw event receiver. Previously it memorized the object during its releasing and counted the time until the first hit, which could potentially mark a normal hit as a throw, now everything works through the properties of the object itself, its position in space, and the hold of the R button (Grab and Throw works with it) (credits to Solus200 for testing)
Bug Fixes
- Fixed
interactionsworking only for hits by reworking the serialization and keys structure. Now bothinteractionsandlimitare rule-dependent, event dependency is removed to make it work when several types are listed per event - Fixed
SpawnImpact. Previously it didn't fire under any circumstances because of a wrong condition
New events
- New events:
ObjectLoaded,CellAttach, andCellDetach- can be used for items respawning
New filters:
- Several inverses -
FormIDsNot,FormListsNot,WeaponsNot,ProjectilesNot,AttacksNot. - Completely new ones -
QuestItemStatus-0for no,1for alias only,2for full-fledged quest item, works only with ACTIVE player quests (can't be done differenty) (credits to Solus200 for the idea and testing) Locations,LocationsNot- take formIDs of formlists of cells, locations, and worldspaces or just cells', locations', and worldspaces' onesWeathers,WeathersNot- take formIDs of formlists of weathers or just weathers' onesPerks,PerksNot- take perks' formIDs, check whether the actor, who was the event source, has the perk
New Items Filters
- Added
nonDeletablefield with default value0toitemsin all functions with "swap" prefix - can be used for respawning - Added
radiusfield toSpawnSpell,ApplyIngestible,ApplyOtherIngestible, andSpawnEffectShader(credits to Solus200 for testing)
New effects:
EnableItem,DisableItem- can be used for respawning.PlayIdle- was implemented using the console version of SendAnimationEvent, so some idles may not work, looks like -"items": [{"string": "AnimationName", "duration": 0.5}], default duration is1.0, the less - the faster is the animation.SpawnEffectShader,SpawnEffectsShaderOnItem- spawn effect shaders either on actors, or the object itself, take formIDs or formLists and duration fields, as well as the base ones, such as count or chance