program Toggles { property Health { current: int = 0, maximum: int = 100 } property Shield { amount: int = 0 } model Player { Health, Shield } # hooks fire at the toggle point, data bound by name @OnDisable(Shield) handler ShieldDown { print(Shield.amount + 1) } @OnEnable(Shield) handler ShieldUp { print(Shield.amount + 2) } handler SpawnPlayer phase Start { spawn Player { Health { maximum: 50 }, Shield { amount: 5 } } } handler ToggleShield phase Render { for (player) in query [Player] { disable Shield on self() } # @OnDisable for (player) in query [Player] { enable Shield on self() } # @OnEnable, data intact disable Player # whole model off quit() } }