Scriptname _00E_EngineBugfixAlias extends ReferenceAlias Hidden 

int function _GetScriptVersion() Global
	return 1
endFunction

Event OnInit()
	Utility.Wait(0.1)
	_ClearStuckHelpMessages()
EndEvent

Event OnPlayerLoadGame()

	; ResetHelpMessage crashes the game when called in menu mode, for instance, when loading a savegame fails due to missing mods
	Utility.Wait(0.1)

	; If a help message is visible during game reload, it gets stuck on screen
	; This workaround shows an empty message to forcefully clear the queue
	_ClearStuckHelpMessages()

	Actor PlayerREF = GetReference() as Actor

	; Perks modifying armor weights need some push on each game load to work.
	; The push is needed only if the player is over-encumbered on game load. 
	; If the player is not over-encumbered, the push is not needed because checking the inventory, picking up items, sheathing/drawing a weapon will reset the perks anyway.
	If PlayerREF.IsOverEncumbered()
		_ResetPerk(PlayerREF, _00E_Class_Keeper_P05_C_Conditioning)
		_ResetPerk(PlayerREF, _00E_Class_Vagrant_P05_B_Lightweight)
	EndIf

	; Workaround for broken physics on loading saves, made on a mount
	If PlayerREF.IsOnMount()
		PlayerREF.Dismount()
	EndIf
	
EndEvent

Function _ResetPerk(Actor PlayerREF, Perk p)
	If PlayerREF.HasPerk(p)
		PlayerREF.RemovePerk(p)
		PlayerREF.AddPerk(p)
	EndIf
EndFunction

Event _ClearStuckHelpMessages()
	Message.ResetHelpMessage("Clear")
	_00E_EmptyMessage.ShowAsHelpMessage("Clear", 0.1, 1, 1)
EndEvent

Perk Property _00E_Class_Keeper_P05_C_Conditioning  Auto  
Perk Property _00E_Class_Vagrant_P05_B_Lightweight  Auto  

Message Property _00E_EmptyMessage Auto