I’m currently a bit confused about the use of “fill” in I6.
When running a simple story file with a command like “fill bottle,” I get the response “But there’s no water here to carry,” which seems to indicate that fill is theoretically implemented and has a basic notion of how to handle liquids.
Yet there are a few manuals out there with their own implementations of fill, which seems to tacitly imply that the default implementation is without function.
Am I missing something? Must every developer implement their own fill code, and the verb is currently devoid of function? Or how does it work?
If you look in the I6 library (the verblibm.h file), you’ll see the definition of FillSub is just:
[ FillSub; L__M(##Fill, 1, noun); ];
That is, print a single library message, which is “But there’s no water here to carry.” So yes, there is no function there beyond the default message. Most of the standard library verbs are set up this way.
(That particular library message is widely regarded as terrible, mind you. Most of the default messages are bland responses like “Nothing happens,” which will fit okay for any object in any circumstance. The “fill” default is jarring in any game containing water.)
That’s worse, though, isn’t it? That’s jarring if there’s any interesting liquid nearby, or even a gasoline pump.
For a default response to make any factual assertion about the game world is dangerous, and broadening the assertion makes it worse.
When we went around this topic last time – hm, Aaron’s Neutral Parser Messages doesn’t seem to cover filling. I’d go with something very vague, like “Pointless” or “That makes no sense.” With perhaps a special case for containers (where it makes some sense) – maybe “You’d rather not.”
I’ll modify the default message to something more vague then. Thinking further on this, I realize that you can fill objects with non-liquids. For instance, “FILL WHEELBARROW WITH MANURE”. In Uninvited, I rewrote the FILL verb to require a second noun. “FILL BUCKET” doesn’t work. Instead you have to “FILL BUCKET FROM PUMP”. Maybe if I rewrite the library to follow this model?
From where do you plan to fill the bucket?
I’m not sure what you plan to put in the bucket.
(The second would allow for FILL WHEELBARROW WITH BRICKS and be a synonym for PUT BRICKS IN WHEELBARROW).
(code code code)
I have it. Here’s something that makes more sense: