Problem with using a new relation in a definition.

Hi! I’ll try to keep this short!

I’m trying to create a new relation which I can use as a condition. It works half the way I want it to.

Ownership relates a person (called the owner) to various things. The verb to own implies the ownership relation. The verb to be owned implies the reversed ownership relation.
This works to the extent that I can call for a “list of things owned by someone”, and everything that I have assigned an owner to appears in that list.
Plus, when I do a showme on something that has the relation, it says “Owner:” followed by the name of the owner. That’s how I know the relation works.

What doesn’t work is the following:

A thing can be claimed or unclaimed.
Definition: A thing is claimed if it is owned by someone.

Everything stays “unclaimed” no matter what I do. I’ve tried changing “someone” to things like “the player”, “a person” and “any person”, but I can’t seem to make it work.
What am I doing wrong here?

The first line there, “a thing can be claimed or unclaimed”, creates a new property for you to set by hand. If you want Inform to always calculate it for you, just use the “Definition:” without the line before it. (If you add “…rather than unclaimed…” then you can refer to the opposite also.)

I don’t know how much code it would break, but it might be a good idea for Inform to disallow using the same word for a definition and for a named property. A lot of people have this problem, and it doesn’t seem like there can be any good reason to allow it, since the name property makes the definition unusable.

Oh, it seems I’ve been confused about properties and definitions all this time. :open_mouth:
I thought I could name a property, then define which objects receive it.
Thanks both of you for clearing it up!

From what I can tell, you actually haven’t created the “to be owned by” relation (you’re missing the “by” part). The subsequent definition should properly return an error.