Jump to content

Project Reality bug fix work in progress


pacfish

Recommended Posts

There is a bug in Project Reality MK1 for both Fallout 3 and New Vegas with the radioactive rain.

 

I've narrowed it down to one line in the script that causes this bug. However, due to my lack of knowledge and inability to debug while in the GECK I need some help.

 

Script : http://pastebin.com/R7d1aawJ

 

Line: 112 : if player.isininterior == 1

 

This condition is never met while in game so the constant +X rads/second never goes away even in god mode.

 

The only reason I can think as to why this condition is never reaches is because weather changes based on the characters location so when the location changes radstorm will never be true and if it does trigger to true it will be immediately canceled and set to cloudy06 because you're inside.

 

The other solution I was looking at is having the diseases (F3NVRad800 and F3NVRad200) check to see if you're indoors and if you are to remove them.

This seems rather simple enough but I'm not seeing a usable condition "if player.hasF3NVRad800 && player.isininterior"

 

F3NVRad800 is registered as under the "spell" category so shows up under the status in the pipboy and it's also registered as a disease in the GECK.

 

 

 

Other references that could possibly be useful

weather changing script : http://pastebin.com/VzKUuYcY

 

That one is a little too long for me to try and make sense of it at this given time. I'll try again when i have time but the "removespell"s could be located inside all the non radioactive weather conditions (or their individual scripts) but that doesn't seem like the best way to program something.

 

@mod / admins : post duplicated in Fallout New Vegas because the mod bug is the same and want a wider scope of people to see this for a better chance at finding someone who can help. http://forums.nexusmods.com/index.php?/topic/997928-project-reality-bug-fix-work-in-progress/

Edited by pacfish
Link to comment
Share on other sites

How about modifying the script that changes the weather?

Look at the end of F3NVWeatherscript [sCPT:xx037720]

if RadSwitch == 0
EnableFastTravel 1
endif

----

Whenever the weather changes, it checks to see if the new weather is a rad storm. If it isn't, it makes sure fast travel is enabled.

This is how fast travel recovers when a rad storm ends.

How about changing it to
if RadSwitch == 0
player.removespell F3NVRad800
player.removespell F3NVRad200
EnableFastTravel 1
endif

 


This will end the rad storm "spells" whenever
1) the weather changes to non-rad storm weather.
2) The player goes inside, since going inside effectively changes the weather.

Edited by BenWah
Link to comment
Share on other sites

  • 2 weeks later...

Could you have a look at the bug were the weather never changes too? I've had to restart my game because of that and I'm considering using Fellout and Enhanced Weather instead so it won't happen again, which is pretty sad cause the mood of this mod is precisely what I'm looking for.

Link to comment
Share on other sites

I don't like how these programmers made this script. It is highly unreadable and should of been broken up into many smaller scripts.

 

Oh and the second script isn't much nicer to look at.

 

The second script made me chuckle alittle. That guy was determined to get his mod to work, he manually coded every single condition and effect himself. Without trying to find easier ways to do it.

 

Majority of that code is just checks and activating/deactivating modules. He just sat down and coded for every single possible combination and wrote all the code out himself.

 

It's not really that complex the first script is harder to understand than the second.

 

The problem about coding like that is debugging is a nightmare. Because the wall of text is hard to find the location of the problem.

 

While the first script is better, it could still use some refactoring.

 

Is it possible to make a script use another script?

Edited by pmmurphy
Link to comment
Share on other sites

Wait what bug are you trying to fix?

 

I think most of these problems are bad load orders and conflicting mods.

 

Personally I force Project Reality's plugin to load absolutely last, and I activate the mod last too.

Edited by BenWah
Link to comment
Share on other sites

Line: 112 : if player.isininterior == 1

 

This condition is never met while in game so the constant +X rads/second never goes away even in god mode.

 

Actually, that condition evaluates to TRUE every time the script runs during a rad storm and the player is in an interior cell. There's nothing wrong with the syntax, and it's outside of the other IF blocks. Here's the same script with uniform whitespacing:

 

 

scn F3NVRadStormsScript

short sNewHour
float fTimer2
float fTimer
float fQuestDelayTime
short sDoOnce1
short sDoOnce2
short sDoOnce3
short sDoOnce4
short sDoOnce5
ref rForceFlee



Begin gamemode

	if RadStorm == 1

		set fQuestDelayTime to 0.01
		SetQuestDelay F3NVRadStorm 0.01

		if getiscurrentweather RadStormA == 1 && player.isininterior == 0 && ( sDoOnce4 == 0 )

			player.CIOS F3NVRad200
			set sDoOnce4 to 1
			set sDoOnce1 to 0

		endif


		if getiscurrentweather RadstormB == 1 && player.isininterior == 0


			EnableFastTravel 0


			if  ( fTimer < 240 )

				if ( sDoOnce1 == 0 )

					set sDoOnce1 to 1
					set sDoOnce2 to 0
					set sDoOnce5 to 0

					F3NVSirenREF.moveto player 0 0 0
					F3NVSirenREF.enable 1
					set rForceFlee to player.placeatme F3NVForceFlee 1
					set sNewHour to ( gamehour + 2 )

				endif


				set fTimer to fTimer + GetSecondsPassed

			else

				F3NVSirenREF.disable 0
				F3NVSirenREF.moveto rainset 0 0 0

				setweather RadStormC 1

			endif

		endif

		if getiscurrentweather RadStormC == 1 && player.isininterior == 0


			EnableFastTravel 0


			if ( sDoOnce5 == 0 )

				set sDoOnce1 to 0
				set sDoOnce4 to 0
				set sDoOnce5 to 1

				player.CIOS F3NVRad800

			endif

			if ( fTimer2 < 60 )


				set fTimer2 to fTimer2 + GetSecondsPassed

			else

				if ( sDoOnce2 == 0 )

					set sDoOnce2 to 1
					imod BloodISFXd 1

					imod F3NVDblV 1

					F3NVhbEXT.enable 1
					F3NVhbEXT.moveto player 0 0 0

					sgtm .2


				endif

			endif

		endif




		if player.isininterior == 1

			setweather Cloudy06 1

			SetQuestDelay F3NVRadStorm 0

			if ( sNewhour < gamehour )


				set sHRSoundREF to 0
				set sHRThSoundREF to 0
				set sThSoundREF to 0
				set SirenINT to 0
				fw Cloudy06 1
			endif


			set sDoOnce1 to 0
			set sDoOnce4 to 0
			set sDoOnce5 to 0
			rimod F3NVDblV 1

			F3NVSirenREF.disable 0
			F3NVSirenREF.moveto rainset 0 0 0
			F3NVhbEXT.disable 0
			F3NVhbEXT.moveto rainset 0 0 0
			player.removespell F3NVRad800


			sgtm 1

			if ( sDoOnce2 == 1 )


				set sDoOnce1 to 0
				rimod F3NVDblV 1
				imod F3NVDblVFade 1

			endif

			player.removespell F3NVRad200



		endif

	endif

end

 

The only reason, according to that script, for the radiation effects not to be removed is that the RadStorm variable is set to 0 while they are still active.

Edited by luthienanarion
Link to comment
Share on other sites

  • 3 months later...

I just got the weirdest bug, from a quicksave after running some time in erradiated rain...
No signs prior (and in Fallout3, the radiated-rain option was off by default) besides my humble +47 RAD's and the rain has stopped...

All of a sudden I can't fast-travel, the RAD's increase by +14/sec., and no RAD-X slows it down essentially condemning my character to death, and of course only a few RAD-Away's but not with me :( I do have earlier saves, just before stepping out in the rain, but... :(((

I g00gled my this behaviour and found this post, and Project Reality is one of not really that many mod's I do run... Does my description in any way fit in or describe this bug further?

Link to comment
Share on other sites

  • 1 year later...
  • Recently Browsing   0 members

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