I created a combined status value named 'Internal Clock' set to equal the value of a variable linked to an in game clock/calendar. Basically, a variable called, 'Time_Passed', changes in a second by second loop which increases its value by one at the start, updates all the relevant calendar information to indicate the time of day/week/month/year as ties into the game, pauses for half a second before subtracting 1 from the value of 'Time_Passed' and then for another half-second before the cycle begins anew.
The status value, 'Internal Clock' whose value is tied to the 'Time_Passed' global variable is supposed to run a series of events every time the stat changes, but the events run only once and never repeat. Any idea how I can force this to work?
So, simply changing the variable will not update the status value.
Also, the Change Game Events of status values are only used when the status value is actively changed (e.g. taking damage, getting a boost from a status effect, etc.), not from recalculations.
You could try to use a Reset Combatant Status node to cause a recalculation of the combatant's stats.
If you're enjoying my products, updates and support, please consider supporting me on patreon.com!
You could e.g. have the status value just be a normal status value (without combined) and just set/change the status values directly in the event that changes the variable. If it only affects the player (or the player group), you'd just need a Player actor and a Change Status Value node (which can also change values on the combatant's group).
If you're enjoying my products, updates and support, please consider supporting me on patreon.com!
-It changes at the beginning and end of the cycle. I could send you the event('s) if you like. It adds one to the 'Time_Passed' variable first and then moves on to calculating the increase in seconds/minutes/hours/days etc. The 'Time_Passed' variable is primarily to keep track of extra time added through events, such as an hour or two that might be added by reading a book, traveling, sleeping and such, and I'd like to use it to help keep track of individual combatant features such as how long they've remained active since their last rest. The event would probably only be added to a special combatant used for playable characters, whereas a copy of this combatant, without certain events attached, would be used for NPC's to save on performance.
"You could e.g. have the status value just be a normal status value (without combined) and just set/change the status values directly in the event that changes the variable. If it only affects the player (or the player group), you'd just need a Player actor and a Change Status Value node (which can also change values on the combatant's group)."
-That's what I'm thinking; I just need a way to call the event. Setting it to auto and having it check every 'X' intervals of a second to wait for variable changes seems like a recipe for bugs. A single pair of switches placed within the calendar, however, should make it a lot more reliable.
A different way, instead of having to update the stats on combatants each time, you could also store the 'start time' in an object variable (or status value) on the combatant. E.g. using the Game Time float value type, you can store the game time at which they started whatever activity you want to track. To get the time they they where at it, you'd just have to subtract the stored value from the current game time (e.g. in a formula).
If you're enjoying my products, updates and support, please consider supporting me on patreon.com!
-By 'cycle events, do you mean the calendar? I suppose, since I'd be limiting the event to playable combatants that I could simply add them all to a list of found objects in the event and update their status that way, but it seems clunkier than using their own attached events to update the status. I guess what you're saying, though, is that their isn't any way to create an event trigger inside of an event apart from calling it globally. That said, referencing your suggestion, would making the status update event global and calling it then serve to trigger it on every individual combatant. Because I was not aware that it worked that way, and if so that would be awesome!
"A different way, instead of having to update the stats on combatants each time, you could also store the 'start time' in an object variable (or status value) on the combatant. E.g. using the Game Time float value type, you can store the game time at which they started whatever activity you want to track. To get the time they they where at it, you'd just have to subtract the stored value from the current game time (e.g. in a formula)."
-That was one of the first methods I considered, but the problem is that, keeping track of time in seconds, the variable might eventually outgrow the maximum stat cap. Admittedly, you'd have to play awhile for that to happen, but considering that traveling from one point to another via an overland map scene could add days, or even weeks worth of seconds to the 'Time_Passed' variable, it might be possible (however improbable) for players to eventually exceed that cap. There's about 31536000 seconds in a standard calendar year.
If your playable combatants are all part of the active player group, you can easily change all of them as I explained above (i.e. having a Player actor and using a Change Status Value node with Whole Group enabled).
So, your event calls the global event, which simply updates the whole group :)
Btw, the maximum value a status value can have is 2147483647 (the maximum a C# int can have), which should be enough for 68 calendar years :)
If you're enjoying my products, updates and support, please consider supporting me on patreon.com!
The Title of My Game is: "Around The World, On Foot, In 80 Years" :(
Incidentally, I may, depending on your rate, be willing to pay for something like a 'Press Button' node for the event system. If you've got the time, I've got a piggy bank and a hammer. I'm sure I'll make it up in game sales, anyway. Walking simulators are the next up and coming trend on mobile.
Although, if you need a UI button on screen, that could already be done using a Show Dialogue node (Choice type), or if you want to wait for an input being pressed, that can be done using the Wait For Input node.
If you're enjoying my products, updates and support, please consider supporting me on patreon.com!