In your example code you are doing this:
spawn_info := class(creative_device):
var TeleportNow<public>:logic = false
OnBegin<override>()<suspends>:void =
# PROBLEM: You're creating a new instance of spawn_info when you intended to
# manipulate the values on the current instance instead.
test:spawn_info = spawn_info{}
loop:
# Since you're referencing "test.TeleportNow" which was just constructed, the
# value will always be false (the default for the TeleportNow variable).
if (test.TeleportNow = true):
#...
spawn_info := class(creative_device):
var TeleportNow<public>:logic = false
OnBegin<override>()<suspends>:void =
# >>DELETE THE BELOW LINE
# test:spawn_info = spawn_info{}
loop:
# Change from "test.TeleportNow" to "TeleportNow"
if (TeleportNow = true):
#...