That's entirely my fault. At the end of the SetHotkeyItem function, it returns 0 ('false', since it's a boolean function) instead of 'true' like all NVSE functions should. I'm just too used to returning 0 at the end of integer functions... Returning false from an NVSE function doesn't crash the script; it just stops it after the function return. Your script is actually running through each time the quest delay comes around, but the return value from SetHotkeyItem is acting like a return in your script. I'll pass this along to hlp, or jaam can fix it. You make a great function tester, by the way.