SetTime Day/Night cycle weird bug

My intention was to have one of the companions in the party to have some kind of vision during a dialog in a weird looking outside area. It’s a prefab called the void:
https://neverwintervault.org/project/nwn2/prefab/area/tepers-void-prefab-area
In that vision, to make it clear it was a vision, I thought to advance the time through ga_set_time from night to day, and in the day setting have it be the same as night but with DesaturateColor set to True so that the vision would be in black and white. After lots and lots of testing it still didn’t work. The day and night setting also have a sky box…Thing is, when removing the sky box, setting Natural to Fasle, setting Day/Night Cycle to True, and ignoring Desaturation thing (setting it to false in both night and day) it kind of worked. I noticed that at least something happened, the light grew brighter on the characters faces when changing to day.

What I’m thinking is that this is some kind of bug, that the toolset can’t change Desaturation when changing from night to day.

I could maybe solve this by making a duplicate of the area and have the vision be there, thus breaking the dialog in two parts: vision and non vision. But I don’t want to do that since it feels weird with the pacing and all. If I must, I guess I must…Maybe there are someone out there that has an idea to get around this or has another sollution.

Thanks for your time.

What about adding a powerful light, high enough to avoid overexposure, and switching it on and off when necessary? The white and black part would not be as obvious as with desaturation, but maybe that could do the trick (I didn’t try though, just an idea).

Thanks for the idea, 4760! I actually came up with a much easier way that I found worked quite well, so I think I will stick to that. I did a FadeToBlack and then used a static camera from an angle further away, and then used another color for the text in the dialog. I found that that made it quite obvious that this was the vision. I also typed the name of who was saying what in that dialog, to make it even more clear that someone was watching this from afar and wasn’t part of the conversation. Then when the vision was over I did a FadeToBlack again.

2 Likes

I thought that worked quite well.

So, even if I’ve had problems with the function SetTime before, I found that I had to use it for an area in the module I’m working on now.

One thing that is extremely weird, and shouldn’t be possible, is that when I’m using SetTime on the OnEnter of an area, if I go back to the toolset and start from another area, it is that time in that area too. So…ok, maybe the toolset remembers this somehow…but what I find even weirder is that if I start from the game, without the toolset involved, in another area, the game STILL remembers what I did before and let the other area start at the time set in the first area I was testing. How is this even possible? I mean, there’s got to be a default time for the game when it starts in an area, right? So if I restart my computer and load the game from a totally different area, how can the game possibly remember that I used SetTime in another area? Is that SetTime somehow saved within the toolset if I test it out, and when saving the module it attaches that change to every area there is in the module, or what?

I remember this kind of bug from when I was working on my first module, but I thought that maybe back then I was imagining things…

I mean, shouldn’t the SetTime function work like this: push time forward to this (set the clock to say 6 in the morning) and then that’s that. Why would SetTime get the toolset to think: “Ok, so now you want me to begin at 6 o’clock every time you begin the game, right, even though you only stated to move the clock to 6 o’clock in this one area, you must mean that I should always start at 6 o’clock in the morning from now on when you begin the game, wherever you are? Ok, I’ll do that” :woozy_face:

@andgalf,

Make sure you wrap your use of Set Time function inside a one time condition check. Otherwise, it will always run the function and set the time. Note, it will jump to next day if not conditionally checked.

Lance

Move that SetTime routine to the area’s OnClientEnter. The OnClientEnter only fires when the main PC enters. Whereas the area’s OnEnter fires every time ANY creature enters it. Think of them as one giant trigger that covers the whole area. Creatures will still trigger it even if you are not in the area. I’m guessing you have something spawning into that area which is causing the OnEnter to fire, thus setting the time. Also wrap in a DoOnce like Lance said.

Ok. Thanks for the clarification of the difference between OnClientEnter and OnEnter. I almost always use OnClientEnter but I believe I happened to use OnEnter in this particular case, so maybe that’s what caused the weird behaviour. And I already have the function firing one time only, so that was already set. I actually don’t think I have any creature spawned in the area but…I have creatures moving around so maybe that causes it too.