You can use tags to prevent your code from being triggered in chosen passages:
<<if tags(passage()).includesAny("nopizza")>>
<<elseif $pizza-arrived lte $time>>
<<set $pizza-arrived to "">>
<<goto "door">>
<</if>>
In this example, if you have a passage tagged "nopizza", your code will not be triggered. Instead it will be triggered in the next passage that doesn't have that tag.
You can call widgets using the <<link>> macro:
<<link [[Make Dinner|kitchen]]>><<timepass>><</link>>