Thank you for taking the time to post your first script!!!
I have not tested it but I do have a few suggestions
1) You don't need to use "I" as the default object... it works, but you can remove it and instead of "I.tag.blah = 123" you can simply do "tag.blah = 123"
2) VAR.HUNGER_RATE_DECAY_TIME = 120
Instead of storing your time in a GLOBAL variable, it is now common practice to store "setting" type variables in a DEFNAME block.
Example:
Code:
[DEFNAME hunger_settings]
// all your settings related to this system go here
HUNGER_RATE_DECAY_TIME = 120
SOME_OTHER_SETTING = 500
Then you access it later with "<DEF.HUNGER_RATE_DECAY_TIME>"
3) Do some research on adding a ZERO to TAGS, DEFS, VARS, etc...
example: <tag0.something>, <def0.something>
Might help with console error reduction
4) Look into the "ISEVENT" property/function
5) "<dTAG.hunger_in_effect>" is essentially a shortcut for "<eval <I.TAG.hunger_in_effect>>", the "d" being placed in front of the TAG automatically returns said tag (or var or def or whatever) in decimal format, which is what EVAL does.
In your line "IF !(<eval <I.TAG.hunger_in_effect>>)" it is not necessarily required to evaluate the tag if you are simply checking to see if it exists.
--------------------------
Also, I appreciate your commenting on each block of the script... most don't do that and it will help others with installation and tailoring
-NW