Thing conditions

I want to report the condition of a mug or a flagon. Even though the statements are verbatim (except for the flagon/mug noun), the parser flags an error on mug but not flagon?! It says punctuation problem.

A fluid container is a kind of container.
A flagon is a fluid container.
The flagon can be full, two-thirds full, one-third full, or empty. The flagon is full.
The printed name of the flagon is “flagon ([flagon condition] of ale)”.

Instead of examining the flagon: say “The flagon is [flagon condition] of ale.”.
Instead of drinking the flagon: say “Don’t be a cretin! Use a mug.”.

A mug is a fluid container.
A mug can be empty or full. A mug is empty.
The printed name of the mug is “mug ([mug condition] of ale).”.

Oh yes! The index has the flagon and its condition, and the mug, but there is no entry for the mug’s condition. Is there a typo somewhere? Any help is appreciated.

1 Like

Binary (two-state) properties are handled somewhat differently from multi-state properties.

In this case, it sounds like you want a more general approach:

A fluid container is a kind of container.
Fullness is a kind of value.
The fullnesses are entirely full, two-thirds full, one-third full, and entirely empty.
A fluid container has a fullness.

A flagon is a fluid container.
The flagon is entirely full.
The printed name of the flagon is “flagon ([fullness of flagon] of ale)”.

Unfortunately this isn’t very satisfactory because “full” and “empty” are already adjectives defined in the Standard Rules. (Applying to tables and rulebooks, not containers, but they’re defined.) So you can’t say what you really want:

[This is an error.]
The fullnesses are full, two-thirds full, one-third full, and empty.

I don’t have a great workaround for you, I’m afraid.

1 Like

Well, there’s this terrible idea:

The mug can be empty, fribblenitz, or full. The mug is empty.

Now the mug condition is a multi-state property! You don’t have to use fribblenitz in the game…

1 Like

Andrew,
This cleared up a lot for me, but I got an error when using your suggested code. I made minor (insignificant) changes to

A fluid container is a kind of container. A fluid container has a fullness. Fullness is a kind of value.
The fullnesses are brimming, two-thirds full, one-third full, and entirely empty.

A flagon is a fluid container. The flagon is brimming.
Description of flagon is “A metal container [fullness of flagon] of ale. [if brimming]It looks like it can hold three mugs of ale.[end if]”.
The printed name of the flagon is “flagon ([fullness of flagon] of ale)”.

The error message is

I am reading the sentence ‘The flagon is brimming’ as saying that a thing called ‘flagon’ is a value, but this makes no sense to me - it would be like saying ‘the chair is 10’.

1 Like

Andrew,
I think it is ok that the mug has four values, and that I use only two, so your fribblenitz idea can work for me. :wink:

1 Like

but I got an error when using your suggested code

It looks like this is just because you wrote “A fluid container has a fullness.” before defining “fullness”. Inform is usually good about letting you declare things in any order, but in this case, not so much. If you move the lines

Fullness is a kind of value.
The fullnesses are brimming, two-thirds full, one-third full, and entirely empty.

…to the top, it compiles.

1 Like

Yes, that worked. I get it: Define the variable type (fullness) before assigning its value. Thanks

1 Like