I’ve been using scenes for that exact use case. I have spells that give people temporary abilities, so I make a scene called ‘flying-scene’ or ‘burning-scene’. Then when the player tries different actions I check ‘if flying-scene is happening’.
Yeah I’d just do it as a check rule with a condition looking at whether the player has drunk the potion (if the situation gets more complex than this tiny example I’d also probably go with a scene).
FWIW while you can’t give actions properties, you can create action variables which comes to much the same thing. But I’ve never actually done this since it’s always seemed like there were simpler ways to do what I wanted.
Lab is a room.
A spell state is a kind of value. The spell states are working and unworking.
Foo relates one action to one spell state. The verb to voom means the foo relation.
Frotzing is an action applying to nothing. Understand "frotz" as frotzing.
Check frotzing when frotzing vooms unworking:
say "doesn't work" instead;
When play begins:
now frotzing vooms unworking;
Yes, that’s correct. It’s for multiple powers that will be active and inactive over the course of a game. Also, other properties, like info text that can be displayed to tell the player what the power does. The object approach does seem to fit my scenario the best.
I also considered putting all of the powers in a table, but the world model in Inform already feels like a relational database with rule preambles acting like a query language. Adding a table on top of that seemed a bit redundant.