powerof3 / PapyrusExtenderSSE

MIT License
62 stars 14 forks source link

Event feature requests #15

Open alandtse opened 1 year ago

alandtse commented 1 year ago

Just putting up a list to track some event requests I've seen from the ENB modding channel. Will see what I can implement and what has already been done. I've asked the requestors to prioritize it too so will update to an ordered list if i get that info.

Health looks like a single event could handle it but it may get spammy.

osmelmc commented 1 year ago

Just one suggestion here:

The event suggested to check values like the OnHealthPercentage, OnMagickaPercentage and OnStaminaPercentage. Should come in couples and Registered for a single use.

Something like RegisterForSingleEventActorVariableLowerThan(ObjectReference akActionRef, string asActorVariable, float afValueRef)

RegisterForSingleEventActorVariableHigherThan(ObjectReference akActionRef, string asActorVariable, float afValueRef)

zax-ftw commented 1 year ago

If I may suggest one more, inspired by Fallout4 events:

Event OnEnterFurniture(Actor akActor) // the actor entering this furniture
Event OnExitFurniture(Actor akActor)

Function RegisterForFurniture...(Form akForm) global native

Doesn't require hooking because vanilla dispatcher exists.

meatdeath1 commented 1 year ago

Function RegisterActorValueChange(Actor akActor, string akValueName) Function UnRegisterActorValueChange(Actor akActor, string akValueName)

Event OnActorValueChange(string akValueName, float akOldValue, float akNewValue)

This would be great for tracking certain actor values, which could help a lot of modders. For instance, most UI modders use RegisterForUpdate -> UI.InvokeFloat as a tool to update values on their interface. RegisterForUpdate is laggy by itself, not to mention a bazillion of unnecessary script calls each second. Would be cool if you could add tracking an actor value change in some way. Cheers!

JamesCPosey commented 3 months ago

Slight modification to ShoutAttack Function RegisterForShoutAttack(ActiveMagicEffect akActiveEffect) global native Function UnregisterForShoutAttack(ActiveMagicEffect akActiveEffect) global native

Event OnPlayerShoutAttack(Shout akShout, Int kSpell) EndEvent

This would be great to check which level of a shout the player uses, since there does not seem to be any other way to determine which level of a shout that the player is using.