Jump to content

Is there any way to manipulate in-game time or move time forward?


acidzebra

Recommended Posts

I'm building a mod in which the player undertakes a sea journey. The journey takes about 2 weeks, give or take. I don't want to have the player spent two weeks on a boat on the open ocean which would be boring, so I would like to move the player (and his party) to a new location and "move the clock forward" by 2 weeks + random number of days. MoveTo and FastTravel take care of moving the player and friend(s), I have that working. I'm not seeing any way to force the ingame clock to move forward.

 

Is this at all possible?

Link to comment
Share on other sites

That puts me on the right track Janus, cheers. I see variables gameday, gamedayspassed, gamehour, gamemonth, and gameyear.

 

Of course, it couldn't be as easy as just adding 14+random int to gameday, because that makes the game think it's the 54th of Last Seed. Joy. Looks like I will have to get the current date (month, day, year), do some kind of conversion, add my desired travel time, convert back, and update each variable.

 

...you know what, I may just say F* it, you are now magically on the island and the boat travel was instant. Unless someone has a great idea on how to do this painlessly. It's amazing how the most complex operations can sometimes be just a single line of Papyrus away, and the most simple ones can take hours of wrestling with scripts.

Edited by acidzebra
Link to comment
Share on other sites

l don't know if it'll help much, but there's a vanilla quest that actually does what you're talking about. could you look at the script - i'm assuming script - that it uses? its...lemme find it.

 

This quest. http://uesp.net/wiki/Skyrim:Rise_in_the_East

Don't wanna give you spoilers if you don't want them, but it's almost exactly what you're talking about. I'm not sure if time moves forward in the quest or not when you take the boat, but if it *doesn't* then the precedent for magic time-instant boats is already there, no? :P lol.

Edited by slainia
Link to comment
Share on other sites

@slainia: interesting suggestion. I've played the quest but not sure if it moves time forward. Did find this line in the MS10 quest though:

SetStage(42) ;insert some joke about the meaning of life here

 

lol

 

@Steve, I tried something like that after Janus set me on the right track, but it doesn't seem to do anything. Even stranger, if you go to the console and change the global variable gamedayspassed (say "set gamedayspassed to 20"), close the console, reopen it, then read back the variable "show gamedayspassed", it won't have changed from the previous value (except by what time the game thinks has passed), ignoring whatever you set it to. If you do it from script, no dice either.

Edited by acidzebra
Link to comment
Share on other sites

Um, how many days in a Skyrim year? I'm assuming 356 but maybe that's wrong.

Anyway, try this, I'm pretty sure setting gameyear via console works, I was doing it a few weeks ago.

I've simply divided 365 by 12 and 16 to get these fractions, then I multiplied by 365 to return the value as days passed, rather than as a fraction of a year.

 

float fGameDaysPassed = GameYear.Mod(Utility.RandomFloat(0.033, 0.044)) * 365.0

Edited by steve40
Link to comment
Share on other sites

365 in a year, yup, according to this one, with a short 2nd month and the rest either 30 or 31 days.

http://www.uesp.net/...Skyrim_Calendar

 

 

This latest iteration DOES adjust the gameyear value, but the rest (hour, day, week, month) as reflected by the pause menu or wait (t-key) function - you know, Mornsday, 17th of Last Seed 8:01 or something - are unaffected. Looks like they're separate variables tracked separately. Joy. And gamedayspassed refuses to be changed, looks like that is some kind of read-only variable.

Edited by acidzebra
Link to comment
Share on other sites

  • Recently Browsing   0 members

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