Jump to content

Survival difficulty bug


Genamine

Recommended Posts

When getting too fatigued on survival mode, a magiceffect with attached script disables your sprint

 

Now the issue is that the magiceffect ended (rested from sleeping), but it never re-enabled sprinting like it shouldve

So I am now unable to sprint at all, and the magic effect (including script) have been discarded (because I rested), and I cannot think of any way to re-enable sprinting

 

Am I essentially f***ed or is there a way to fix this?

 

Script provided below:

 

 

Scriptname Hardcore:HC_DisableControlsEffectScript extends ActiveMagicEffect

Group Settings

bool Property DisableSprinting const auto
bool Property DisableRunning const auto
message Property MessageToDisplay const auto mandatory

imagespacemodifier Property IMOD const auto
float Property IMODMinStrength = 1.0 const auto
float Property IMODMaxStrength = 1.0 const auto
int Property IMODCountMin = 1 const auto
{how many times do we sequentially apply this IMOD}
int Property IMODCountMax = 1 const auto
{how many times do we sequentially apply this IMOD}

float Property IMODMIntervalMin = 0.0 const auto
{in seconds, min interval between apply IMOD sequentially}
float Property IMODMInternalMax = 3.0 const auto
{in seconds, max interval between apply IMOD sequentially}


float property TimerDuration = 30.0 const auto
{how long after IMOD sequence before we do it again}

float property MessageDelay = 2.0 const auto
{how long of a delay between showing message and when IMOD sequence completes}


EndGroup

InputEnableLayer inputLayer

Event OnEffectStart(Actor akTarget, Actor akCaster) 
	inputLayer = InputEnableLayer.Create()

	if DisableRunning
		inputLayer.EnableRunning(false) 	;NOTE: i don't need to worry about unsetting this because the layer is thrown away when the spell effect ends and this script goes away
	elseif DisableSprinting
		inputLayer.EnableSprinting(false)
	endif

	ShowEffectAndMessageAndStartTimer()

EndEvent

Event OnEffectFinish(Actor akTarget, Actor akCaster) 
	inputLayer.EnableRunning(true)
	inputLayer.EnableSprinting(true)
EndEvent

Event OnTimer(int aiTimerID)
	ShowEffectAndMessageAndStartTimer()
EndEvent

Function ShowEffectAndMessageAndStartTimer()
	if IsBoundGameObjectAvailable() ;make sure the effect is still running
		
		int IMODCount = utility.RandomInt(IMODCountMin, IMODCountMax)
		int i = 0
		while (i < IMODCount)
			
			float IMODStrength = utility.RandomFloat(IMODMinStrength, IMODMaxStrength)
			IMOD.apply(IMODStrength)

			float IMODInterval = utility.RandomFloat(IMODMIntervalMin, IMODMInternalMax)
			utility.wait(IMODInterval)

			i += 1
		endwhile


		utility.wait(MessageDelay)
		MessageToDisplay.show()
		startTimer(TimerDuration)
	endif

EndFunction

 

 

 

(NOTE: I know the comment says the layer is discarded when the effect finishes, but apparently its not, I tried this in different save .. if you disable sprinting and end the effect without calling inputLayer.Delete(), sprinting remains disabled. As to it setting sprinting to enabled again when the effect finishes, thats what it shouldve done .. but didnt do)

Link to comment
Share on other sites

Hell yeah there is. Survival Options. Run that an turn all that off. It might not remove it from the player if they have it. I don't personally know the commands to remove those from the player an it can be glitchy working with chems on new content using an existing save game.

 

Survival Options will give you a full save game item, which will allow you to avoid auto save an quick save problems. Then there is a global damage adjustment for PC an NPC which would allow you to balance the game if weapon mods were installed. Enable's console so GetPos SetPos SetAngle along with TCL if you ever get stuck, opens TMM 1 for stress testing, and allows additions of content that are only addable by console, among other very useful commands. Hunger/Thirst/Sleep rates can be adjusted since you are probably on a 5 or 10 timescale. It's pretty extensive.

Link to comment
Share on other sites

While not in a menu, open the console and type: DumpInputEnableLayers
Note the number of any layers. Not the hexadecimal value, the normal integer value, such as "0".
Run the console command: ResetInputEnableLayer [#] to remove the restrictions that layer had.

Link to comment
Share on other sites

  • Recently Browsing   0 members

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