Jump to content

Total Realism Overhaul


Mansh00ter

Recommended Posts

Theoretically, you could script variable player speed by measuring the delta between two player Zpositions taken at close intervals. The greater the delta, the steeper the slope, slower you are.

 

But I just spent the whole day solving how to detect if the player is standing in a body of water, I'm done with scripting for today. :P

 

Btw, I don't think there is a way to detect what kind of surface the player is on in Skyrim. As I said, just figuring out the water thing took a LOT of trial-and-error.

But I do like the speed reduction when casting. I'll add it to the list, it shouldn't be that difficult to do.

 

By the way, if anyone knows how to use conditional functions directly in the Papyrus scripts, let me know. That would simplify a LOT of stuff.

Link to comment
Share on other sites

  • Replies 1.3k
  • Created
  • Last Reply

Top Posters In This Topic

I fail to see how you fail to grasp conditional functions...

 

objectinquestion.conditionalfunction()

 

It's usually used in if statements.

 

Just read your water detection thread's last post. Could you post an example of the code and its error on compile?

Edited by Budz42
Link to comment
Share on other sites

I fail to see how you fail to grasp conditional functions...

 

objectinquestion.conditionalfunction()

 

It's usually used in if statements.

 

Just read your water detection thread's last post. Could you post an example of the code and its error on compile?

 

From what I gather, you cannot use conditional functions in Papyrus scripts the way you would use them via console.

 

So if I have this code in my script:

if (player.isInDangerousWater == 1)
	Debug.MessageBox("Blah")
endIf

 

It returns an error that "variable player is undefined"

 

If I do reference the player actor the way I should:

if (Game.getPlayer().isInDangerousWater == 1)
	Debug.MessageBox("Blah")
endIf

 

Then it says that "isInDangerousWater" is not a property on script Actor..."

 

I am not saying there is NO way these conditionals could be used in Papyrus scripts, just that documentation is severely lacking on what you need to do to get them to work. I tried to have my script extend Conditionals as well as declaring isInDangerousWater as a conditional like they hint here but I still get the same errors.

Link to comment
Share on other sites

Its your choice and your vision of the mod but I would suggest that you don't kill yourself over "drink from stream and catch a cold perhaps if feet get wet" feature. Its not really that important for the gameplay - food and drink items are all scattered all over the game and there are no real wilderness regions (where you would have to spend a week or so without getting to an inn or a village) so giving the player the ability to refill his water skin in a puddle wont be really used that much.

 

Average player will often get overburdened with food and drinks without even the need to buy them in an inn. Unless, of course characters will get thirsty every 5 minutes and hungry every 7, but that wouldn't be really that much fun...

 

I say this from my experience of playing hardcore realism mods in Fallout:New Vegas - it is very hard to really make thirst and hunger a REAL game mechanic in a game like New Vegas or Skyrim and by REAL I mean CHALLENGING. Unless you make hunger rates really insane and unrealistic there will never be a real threat from dieing (or even getting handicapped) from thirst or hunger in this game. THERE IS CHEESE AND BRANDY IN EVERY DUNGEON AND CAVE.

Link to comment
Share on other sites

Yeah, but it would look silly if you were not able to refill your waterskins in those crystal-clear lakes and streams, no?

 

Unfortunately, I can't so much about the abundance of cheese in dungeons. I can reduce the availability of those in containers, but not of those just lying around. Though I could pull a fast one and "declare" all vanilla cheese as "mouldy-and-not-in-a-good-way" and just give vendors fresh copies... expensive ones too... :devil:

Link to comment
Share on other sites

Its your choice and your vision of the mod but I would suggest that you don't kill yourself over "drink from stream and catch a cold perhaps if feet get wet" feature. Its not really that important for the gameplay - food and drink items are all scattered all over the game and there are no real wilderness regions (where you would have to spend a week or so without getting to an inn or a village) so giving the player the ability to refill his water skin in a puddle wont be really used that much.

 

Average player will often get overburdened with food and drinks without even the need to buy them in an inn. Unless, of course characters will get thirsty every 5 minutes and hungry every 7, but that wouldn't be really that much fun...

 

I say this from my experience of playing hardcore realism mods in Fallout:New Vegas - it is very hard to really make thirst and hunger a REAL game mechanic in a game like New Vegas or Skyrim and by REAL I mean CHALLENGING. Unless you make hunger rates really insane and unrealistic there will never be a real threat from dieing (or even getting handicapped) from thirst or hunger in this game. THERE IS CHEESE AND BRANDY IN EVERY DUNGEON AND CAVE.

 

This issue really has little to do with the thirst and hunger mechanics themselves, but the gameworld. For instance, in the eventually-coming 2X Scaled Gameworld mod would be a much more relevant mechanic that did provide some challenge as the expanded gameworld (combined with map travel being cut) would actually provide for extended travelling, which is where thirst, hunger, and sleep mechanics actually should have any real relevance. (beyond deep dungeons that take many in-game days to finish. But those aren't in the vanilla game)

 

In the current gameworld, you can get set out at 5AM in Riften and end up in Solitude before midnight. During this time depending on the mechanics, you'd eat and drink may be once or twice during the trip, which hardly makes the feature even worth bothering with, or you'd eat and drink a lot of times, which is just silly and tedious.

 

However, with an expanded gameworld where travelling from place to place actually takes real time, eating and drinking naturally occur more times (and combined with a cut-back in the amount of available food in the world) but without the silly and unrealistic frequency you would have by just upping the amount of times you have to eat and drink each day. Scarcity and expanded travelling times are generally going to be essential towards creating a hunger and thirst mechanic that does provide a challenge but without silly and unnecessary tedium.

 

Unfortunately, I can't so much about the abundance of cheese in dungeons. I can reduce the availability of those in containers, but not of those just lying around. Though I could pull a fast one and "declare" all vanilla cheese as "mouldy-and-not-in-a-good-way" and just give vendors fresh copies... expensive ones too...

 

I imagine introducing in-world scarcity would have to be a side project. Something like that isn't a good thing to put any time on when you're main focus is going to be on the actual mechanics.

Edited by imperistan
Link to comment
Share on other sites

From what I gather, you cannot use conditional functions in Papyrus scripts the way you would use them via console.

 

So if I have this code in my script:

if (player.isInDangerousWater == 1)
	Debug.MessageBox("Blah")
endIf

 

It returns an error that "variable player is undefined"

 

If I do reference the player actor the way I should:

if (Game.getPlayer().isInDangerousWater == 1)
	Debug.MessageBox("Blah")
endIf

 

Then it says that "isInDangerousWater" is not a property on script Actor..."

 

I am not saying there is NO way these conditionals could be used in Papyrus scripts, just that documentation is severely lacking on what you need to do to get them to work. I tried to have my script extend Conditionals as well as declaring isInDangerousWater as a conditional like they hint here but I still get the same errors.

 

I know that back in Oblivion, these hunger mods used invisible quests to deal with these things... I suggest you do the same.

 

Using the invisible quest that runs your script in the background you could make different quest stages that go back and forth depending on conditionals. For example if you're standing in lava then the quest will go to the ToxWater stage and you'll be unable to do anything other than scramble for your life to the shore. If you're in water then the quest will go to the DrinkWater stage and will initiate the background script that'll allow the player to fill the water skin.

Link to comment
Share on other sites

 

I know that back in Oblivion, these hunger mods used invisible quests to deal with these things... I suggest you do the same.

 

Using the invisible quest that runs your script in the background you could make different quest stages that go back and forth depending on conditionals. For example if you're standing in lava then the quest will go to the ToxWater stage and you'll be unable to do anything other than scramble for your life to the shore. If you're in water then the quest will go to the DrinkWater stage and will initiate the background script that'll allow the player to fill the water skin.

 

That's not the problem - as I said in the other thread, I have it solved. I do run an invisible quest which then updates the script every five seconds, checking if the player has the "freshWater" custom magic effect applied on them.

 

The problem is in detection, or rather the roundabout way I have to use to simply detect if player is standing in dangerous water. Via console, it is just a simple command. But if you try to script it, you can't use it like that, so I have to create the magic effect with that same conditional, link it with an invisible Ability and then remove/add the ability to the player character every five seconds, so that each time it gets added to the player that FreshWater magic effect will test for the isInDangerousWater conditional before it applies.

THEN, in the script, I test if the player has the FreshWater magic effect applied on them.

 

So it's a rather messy way of doing what should be a single line of code. That's the problem. There are others, for example isCasting is a very nifty conditional that I would have several uses for, but there is no way to directly use it in a script (that I, and it seems anyone else, know of), so the alternative is to go through *every* castable spell and apply the conditional and the papyrus fragment by hand, which is again a time consuming, inefficient and messy way to go about it.

 

Reminds me of people using Actionscript to program Flash websites, but place the code in dozens of different frames... a debugger's nightmare.

Link to comment
Share on other sites

 

Unfortunately, I can't so much about the abundance of cheese in dungeons. I can reduce the availability of those in containers, but not of those just lying around. Though I could pull a fast one and "declare" all vanilla cheese as "mouldy-and-not-in-a-good-way" and just give vendors fresh copies... expensive ones too...

 

I imagine introducing in-world scarcity would have to be a side project. Something like that isn't a good thing to put any time on when you're main focus is going to be on the actual mechanics.

 

The main problem is the food just lying around. Skyrim is in the middle of a civil war and there are dragons about... not a good place to farm or trade unless you are one of those crazy Khajiit. So for a country at war and besieged by giant winged monstrosities, it is strange to find such abundance on every table, in every hut and every cave.

 

So what I was thinking is this: I plan to have each food item fit into one of several nutritional categories, so that eating an apple would not be the same as eating half a roast pig. So what I do, is I change all the basic vanilla food items which are generally found lying around on tables, into "stale" or "old" versions of themselves, which you could eat but would not get nearly as much out of as from fresh food (and maybe have a chance to get sick). The consumable list is quite short, so that won't take a lot of time. Then, I duplicate those same items and flag them as "fresh" versions, and give them only to vendors to sell. So basically if the player wants fresh, good food, they will have to pay for it, or cook it themselves.

 

It would mean that the Skyrim nobles will also have stale bread on their tables, which could be fixed by hand, but maybe it would even be better that way, to further accent that the country is at war and no one is spared...

 

Because waiting for the Expanded world to be finished may take pretty much forever. I know the concept and I know what kind of work is involved... it's a huge, HUGE undertaking that may well take years to finish. As for Basic Needs, the goal is not to have the player struggle every step of the way... it has always been more about immersion than real challenge. The real challenge is going to be in trying to stay alive from all the things that want to kill you... eating, drinking and sleeping just add to the depth of the gameplay.

Link to comment
Share on other sites

Feel free to let me know what you think of current hunger distribution.

 

Basically the script will measure hunger states like this:

 

It takes three ingame days to go from completely stuffed to death from starvation.

 

Stage 0:

You are stuffed. You can eat food in this state, but it won't do you any good, plus there is a chance you will get sick and puke. Just like old romans.

Player gets a slight movement speed penalty, and reduced stamina regen rate. (Try running after stuffing your face and see how it goes)

Lasts up to one game hour.

 

Stage 1:

You are not hungry. No adverse effect, stamina and magicka regen rates at optimal.

Lasts up to four game hours. (So you will need to eat something relatively often if you want to be at the top of your game)

 

Stage 2:

You feel a little peckish. Minor stamina regen rate penalty.

Lasts up to two game hours.

 

Stage 3:

You are hungry. Moderate stamina regen rate penalty.

Lasts up to 24 game hours

 

Stage 4:

You are starving. Massive stamina regen penatly! Reduced stamina. Carry capacity speed penalty. Movement speed penalty.

Lasts all the way to the dying stage.

 

Stage 5:

Dying. No stamina regen. Stage 4 penalties apply.

Lasts for the final 7 hours.

 

Let me know what you think. I'll post thirst and sleep distribution lists later when I calculate them. Sleep deprivation will affect total magicka available to the player, while thirst will affect magicka regen rates (I know, I know, this is not World of Warcraft, but I don't know what else to affect for some real consequences) + both will apply unique penalties of their own so that going hungry, thristy and sleepy will stack up.

Edited by Mansh00ter
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...