Jump to content

HUD-Display for longterm status effects?


Recommended Posts

Posted

So SkyUI simply won't display any status effect with a timer longer than 10 minutes or so. It's been a well known issue for years. But SkyUI is abandonware, so it was never fixed officially.

 

I've spent about an hour searching nexus and the web for any mod to display longterm status effects. Found nothing.

 

That's odd. A well known problem, and no solutions for years? In Skyrim? Something tells me i must be missing something. Like maybe people now use some kinda HUD that has effects display built-in, among other things? Hence why i'm asking.

Posted (edited)

Nothing in the source of either the papyrus script or the actionscript script suggests a limit of "10 minutes or so". Any source for this?

 

Edit again: SkyUI suggests you should set the min time to 0 to display all effects. ActionScript condition supports this.

 

Edit:

int property MinimumTimeLeft
	{The minimum time left for an effect to be displayed}
	...
	function set(int a_val)
		_minimumTimeLeft = a_val
		if (Ready)
			UI.InvokeInt(HUD_MENU, WidgetRoot + ".setMinTimeLeft", _minimumTimeLeft) 
		endIf
	endFunction
endProperty

 

function setMinTimeLeft(a_seconds)
{
   this._minTimeLeft = a_seconds;
}

 

...
if(!(this._minTimeLeft != 0 && this._minTimeLeft < _loc2_.duration - _loc2_.elapsed))
...

 

Edited by traison
Posted (edited)
Quote

Nothing in the source of either the papyrus script or the actionscript script suggests a limit of "10 minutes or so". Any source for this?

The game. Have you looked at the game? The slider is limited to 600secs max or something similiar.

 

And nope: Setting it to 0 in the MCM does not display all effects. That was the first thing i tried. Maybe it shows all timed effects (i don't know, cause i currently have none to test with), but it certainly doesn't show i.e. debuffs without a timer. Maybe the reason for that is, if it were to actually display all effects, that would also include racial abilities and so on. And having those constantly on the HUD would be annoying. But the problem is: Stuff like scripted debuffs without a timer also won't show up, so you won't even realize you have those debuffs, unless you look into the magic menu or get notified by a message.

Edited by libertyordeath
Posted (edited)

Getting a timer out of a scripted effect is never going to be possible. And displaying all effects is considerably different than displaying effects with timers longer than 10 minutes. Neither of these are bugs, so there's nothing to fix. Fix != change.

 

Edit: Also the effect list seems to be coming directly out of skse, so if something is missing there may be a good reason for it:

skse.RequestActivePlayerEffects(this.effectDataArray);
if(this._sortFlag)
{
  this.effectDataArray.sortOn("elapsed",Array.DESCENDING | Array.NUMERIC);
  this._sortFlag = false;
}
var _loc3_ = 0;
while(_loc3_ < this.effectDataArray.length)
  ...

 

Edit again: The SKSE source code suggests there may not be a good reason afterall, but your issue is in SKSE, not SkyUI:

class SKSEScaleform_RequestActivePlayerEffects : public GFxFunctionHandler
{
	class ActiveEffectVisitor
	{
        ...

	public:
		ActiveEffectVisitor(GFxMovieView * a_movieView, GFxValue * a_activeEffects)
			: movieView(a_movieView), activeEffects(a_activeEffects) {}

		bool Accept(ActiveEffect * e)
		{
            ...
            
			if (e->duration <= 0)
				return true;
            
            ...
            
            activeEffects->PushBack(&obj);

 

Note the duration check at the bottom. If it passes that the effect gets pushed into an array. So anything with a duration of 0 or less gets skipped.

Edited by traison

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...