Dr Peter Bates and Juhana have already answered in a more direct and precise way, I’d just like to add that you can also try to handle many of the possible combinations by giving things properties and generalizing over some categories of cases, so that you don’t have to write out all the combinations explicitly.
How you “carve up” the model world with your properties (and/or kinds of things) depends of course on the intended use cases, and on what you want to regard as the default behaviour.
You probably know this already (and you said it was just an example), but I thought I’d post it because it could also be of interest to others who might stumble over the thread.
So, here’s one way of doing it:
The Park is a room.
A thing can be liquid. [By default, it's not liquid.]
A thing can be soluble.
A thing can be spongy.
A thing can be soggy or dry.
Before printing the name of a soggy thing: say "soggy ".
Understand the soggy property as describing a thing.
Definition: a thing is combinable:
if it is liquid, yes;
if it is soluble, yes;
if it is spongy, yes;
no.
The player carries some water. The water is liquid.
The player carries some juice. The juice is liquid.
The player carries a sugarcube. The sugarcube is soluble.
The player carries a newspaper. The newspaper is spongy.
The player carries an absolutely impermeable marble.
Combining it with is an action applying to two things.
Understand "combine [something] with [something]" as combining it with.
Check combining it with:
if the noun is the second noun:
say "You can only combine something with something [italic type]different[roman type]." instead;
otherwise if the noun is liquid and the second noun is liquid:
say "You don't feel like making a cocktail of [the noun] and [the second noun] at the moment." instead;
otherwise if the noun is not combinable or the second noun is not combinable:
say "It seems that no interesting combination can result from these things." instead.
Carry out combining it with:
if the second noun is liquid:
try combining the second noun with the noun instead;
otherwise if the noun is liquid:
if the second noun is soluble:
now the second noun is nowhere;
say "[The second noun] is completely dissolved.";
otherwise if the second noun is spongy:
say "[The second noun] soaks up [the noun] like a sponge and is quite soggy now.";
now the noun is nowhere;
now the second noun is soggy;
otherwise:
say "You pour some of [the noun] over [the second noun], but nothing interesting happens.";
otherwise:
[This covers the case where both categories are combinable in principle, but don't form an interesting combination.]
say "You fumble around a bit with [the noun] and [the second noun], but you can't see how to make anything interesting happen.".
Test me with "i/combine water with water/combine water with juice/combine water with marble/combine sugarcube with newspaper/combine juice with newspaper/x soggy/combine sugarcube with water/i".
(Notes:
We left the marble totally un-combinable, so it already fails in the check rule, but of course the response from the carry out rule “You pour …” would have been appropriate, too. In the moment, we have nothing in the model world that would trigger the latter response, something that is combinable but doesn’t react with liquids in some way. The exact categorization will depend on what’s most useful for the game.
We could also leave out the “combinable” check and just let everything which we don’t want to customize fall through to the “You fumble around …” response.)
This was quickly thrown together, it’s not super-clean (for example, it mixes model-changes and reports in the carry out rule), and it doesn’t cover everything, but could be helpful, I hope.