Lollia Posted August 21, 2022 Share Posted August 21, 2022 (edited) I have been trying to find a way to push the game time forward while in dialogue with an NPC. The idea is that the player and NPC are reading something together, so after the time is pushed forward by a reasonable amount, the conversation would continue as normal. My search results often seem promising, but keep leading to dead ends. Can anyone please point me in the right direction? Edited August 21, 2022 by Lollia Link to comment Share on other sites More sharing options...
maxarturo Posted August 23, 2022 Share Posted August 23, 2022 (edited) It's not recommended and you don't want to mess with the game's timeline!!, that's is a recipe for catastrophe!!!. Except that it doesn't exists a function 'SetTime()' in the default Papyrus and I don't think SKSE or an SKSE add on has developed one since they also know that this is a part you don't want to mess with. Your best path would be to fake it by using some imagespace modifiers or the function 'FadeOutGame()' to simulate a 'time has pass' fx, something like a 'passing out' fx that I'm sure you have seen in the game. Edited August 23, 2022 by maxarturo Link to comment Share on other sites More sharing options...
Lollia Posted August 23, 2022 Author Share Posted August 23, 2022 (edited) It's not recommended and you don't want to mess with the game's timeline!!, that's is a recipe for catastrophe!!!.Except that it doesn't exists a function 'SetTime()' in the default Papyrus and I don't think SKSE or an SKSE add on has developed one since they also know that this is a part you don't want to mess with. Your best path would be to fake it by using some imagespace modifiers or the function 'FadeOutGame()' to simulate a 'time has pass' fx, something like a 'passing out' fx that I'm sure you have seen in the game. I'm so glad you came by, maxarturo! :sweat: I was on a few different modding discord servers last night, and it was put to me that the best way to handle this situation was to write a time-altering script myself and add it to a dialogue fragment. Then it was suggested that using the GameHour global variable might also be a good solution. While attempting to research both suggestions, I came across still-more threads from 2012 through 2014, and all of them seem to hint that changing the time can lead to catastrophic results. I'm also coming across warnings about using fade-outs, because of problems with certain ENBs. All things considered, I think it might be best if I just do without any time-changing shenanigans. I wanted the time to push forward in order to account for the length of the book the player was reading with the NPC, but the possible side-effects do not seem worth it. :ohdear: I think the best thing I can do is try to imply through the dialogue that you have been reading the book from the beginning to the conclusion. It may not be as immersive, but it seems far safer. Edited August 23, 2022 by Lollia Link to comment Share on other sites More sharing options...
maxarturo Posted August 23, 2022 Share Posted August 23, 2022 (edited) Not a problem my friend. Yes, there is a way that this can be acomplished, but... Except from mods scripts that may have 'registerforupdate()', the main reason is the game's engine itself, and all the 'hard coded' and the game's simple Papyrus scripts that use the engine's timeline. * You are clever enough to understand that this is a launch nuke scenario. I also had a similar in application scenario where the player has to build something that requires 12 h of work, so I experimanted with this and let it baked in the save file along side with some other heavy scripted mods and play the game for a couple of Skyrim's days. Yeah.... you defenetly don't wanna do this or go this way.... ENB has the issue that disables the use of imagespace modifiers, but I don't know if this also applies for the function ''Game.FadeOutGame()'. In any case if you end up using imagespace modifiers, you can always warn / advice the user in your description page about this ENB issue, and also provide the user a way to make his ENB be able to use imagespace modifiers again. You can copy/paste the enb info from my description page in this mod: https://www.nexusmods.com/skyrim/mods/103522 Edited August 23, 2022 by maxarturo Link to comment Share on other sites More sharing options...
acidzebra Posted August 25, 2022 Share Posted August 25, 2022 Moving time forward won't be an issue in most instances (passing days or months in this way could cause needs/survival mods where you need to eat and drink and sleep to freak out though, but for small enough values like a few hours it should be fine - note that I have not tested this as I don't use survival/needs stuff). Moving time backward can conceivably break things (I can't think of concrete examples, but I could see how this could confuse things). Either way there are a bunch of global variables you can mess with using getvalue and setvalue GameHourGameDayGameDaysPassedGameMonthGameYear There used to be discussion and examples on the creation kit wiki but I can't seem to find it anymore. https://www.reddit.com/r/skyrimmods/comments/baw4ni/comment/ekepg2e/?utm_source=share&utm_medium=web2x&context=3 see the comments for some example code, not sure if this is optimal code but it's a base to understand the general process and potential pitfalls from. Link to comment Share on other sites More sharing options...
maxarturo Posted August 25, 2022 Share Posted August 25, 2022 (edited) The way that I understood it is purely from my experiment/testing, since I couldn't find any documentation on the subject at that time, is that: - When you use for example the in-game 'Wait' function the game starts counting that time (in the game's timeline) and any register functions in between that piriod will fire since the timline is been counted by the system. - But if you 'set' the time the system jumps to that 'set hour' without actually counting the time it needs to pass, so any registered functions that existed between the time that the 'set time' function started to the end of it, they will not fire. If for example in my case/testing those registered functions played a crucial role in the functionality of the mod that had a registered funtion will end up broken, since the 'register time' functions are actually marked in the timeline. This happened to me while experimenting with my quest mod and a couple of other mods I already knew what they were supposed to do, but they didn't... I ended up breaking them all. After that I didn't experiment any further since it was more than clear to me that I didn't need to go any further with this. Edited August 25, 2022 by maxarturo Link to comment Share on other sites More sharing options...
Lollia Posted September 5, 2022 Author Share Posted September 5, 2022 (edited) I see that a very interesting discussion took place while I was away. :yes: You have both given me a good bit to think about, however, I have opted to play it safe for the time being. I redesigned all of the dialogue (making the trees took forever!), so now the conversation goes like this: Player: How would you like a bedtime story?Child: 4 responses possible. Leads to: Player: Let's read ______ (22 book options are available depending on player inventory)Child: Okay! This is where the time jump was originally going to be, and since that is being skipped, this now leads to: Player: {commence reading ______}Child: *attentive expression* Leads to: Player: --reads quoted ending from selected book--Child: --reacts to story-- I'm hoping that the "commence reading" part will help facilitate the idea of time passing, even if does not actually do so. Any thoughts? :sweat: Edited September 5, 2022 by Lollia Link to comment Share on other sites More sharing options...
maxarturo Posted September 5, 2022 Share Posted September 5, 2022 How about this: - When the 'commence reading' part starts you play a 'read book' animation on the player, force third person or change camera angle, and the book is actually read by the player, meaning you will hear and see the subtitles of what the player's character will be reading. This does means a lot more work from your part, because you will need to create a scene with 44 recorded stories, 22 male voiced and 22 female voiced, and the whole set up. But with this you won't need to fake or force the 'pass time' because you will be actually reading the required time to pass. Link to comment Share on other sites More sharing options...
Lollia Posted September 5, 2022 Author Share Posted September 5, 2022 How about this:- When the 'commence reading' part starts you play a 'read book' animation on the player, force third person or change camera angle, and the book is actually read by the player, meaning you will hear and see the subtitles of what the player's character will be reading. This does means a lot more work from your part, because you will need to create a scene with 44 recorded stories, 22 male voiced and 22 female voiced, and the whole set up.But with this you won't need to fake or force the 'pass time' because you will be actually reading the required time to pass. I'm so glad I saw this before I started importing the audio! :ohdear: The only experience I have with scenes is conversations between NPCs. I have never dealt with anything like that between an NPC and the player before, so something like that is uncharted territory for me. Can you think of an example within the game itself that I could look at? I've use LogicDragon's Enhanced Camera for years, so I honestly cannot think of an example where the player is forced into third person. Also, how would forcing the perspective to change work with a camera mod like that? Would there be compatibility issues I would have to take into account? Ideally, I would still like the scene to lead back into conversation with the child, since each book has follow-up dialogue. :unsure: Link to comment Share on other sites More sharing options...
maxarturo Posted September 5, 2022 Share Posted September 5, 2022 Something like this doesn't exists in game, as a matter of fact the player doesn't sais a single word during the entire game. But the idea is quite simple: 1) You create a unique actor with 'No Voice Type' that you will place in the same cell out of visual reach, we will call him 'Story Teller', this actor can be miles away from the player, but in the same cell, and he will be saying the stories for both male and female voices. 2) You create a quest to hold your 'Story Teller' story lines. 3) Now you will have to learn how to create a simple 'Quest Scene' for starters, this scene requires only 1 actor, your unique actor in it. Or you can skeep the 'Quest Scene' entirely by creating individual 'Dialogue Topics' for each book's stories. 4) Then when the 'Read Story' is supposed to start you add a fragment at the end of the corresponding line between the actor/child and the player to start the 'Quest Scene' or to say the 'Dialogue Topic' of your unique actor / 'Story Teller'. If you are a bit familiar with dialogue, quest scenes and fragments this would seem to you like a piece of cake, and the only thing that would concern you would be the amount of stories and each stories parts, since this will become quickly a monotonous, boring and time consuming proccess to set up them all. But if you are not familiar with the above, this can become overwhelming. As for the camera, this is the easiest part of them all. But you can skip this too, it was just an image that came to my head when I imagined this scene. If for example this will be triggered when the player reads the first story in the fragment that starts this line you just add the line: Game.ForceThirdPerson() Link to comment Share on other sites More sharing options...
Recommended Posts