Something I ran out of time to mention in class which might be useful in your weekend experiments: you can use instead rules in conjunction with some built-in properties and conditional checks to make something like hypertext guard fields for your I7 projects. For example, to restrict the player from entering a certain area until they’d found the right item, you could add a line like this:
Instead of going north in Front Porch when the player does not hold the amulet, say “You can’t get past the gargoyle without the amulet!”
Similarly, “does not wear” could restrict an action when the player hasn’t worn the given item.
You can also used the “visited/unvisited” property of rooms to restrict actions. Every room is visited until the player has spent a turn in it, at which point it becomes unvisited. So you could say:
Instead of taking the sword when the Throne Room is unvisited, say “You can’t arm yourself until you visit the King!”
One last rule that might be useful: you can cause something to happen every turn a given condition is true by making an every turn rule:
Every turn when Entrance Hall is unvisited, say “You hear someone knocking at the front door!”
The [first time][only] and [one of][or][at random] text substitutions we looked it in class might help make every turn rules less obnoxious.