DavidGriffith / inform6lib

The Inform6 interactive fiction standard library (moved to https://gitlab.com/DavidGriffith/inform6lib)
Other
22 stars 9 forks source link

Library doesn't seem well-equipped to deal with interacting with body parts #48

Open DavidGriffith opened 7 years ago

DavidGriffith commented 7 years ago

In http://www.intfiction.org/forum/viewtopic.php?f=7&t=21349, nelsnelson asks this:

Many text-based RPG games support interaction with body parts. For instance,

>scratch my left eyebrow
You scratch your left eyebrow.

and

>equip bracer to my left forearm
You equip the steel bracer to your left forearm.

However, when I attempt to model this sort of thing in Inform 6 for an individual player, I see things like this:

>scratch my left eyebrow
You scratch the left eyebrow.

I noticed that while the Inform 6 english module defines constants for things like YOURSELFTX, YOUTX, and even MYSELF__TX in Inform 6.12, there are no constants for "your".

It has also been very difficult for me to find examples of referring to objects which can only ever actually belong to the player. Using the search function for these forums is especially challenging, and I can still find a handful of threads discussing body part modeling in Inform 7, but was unable to discover anything for Inform 6. Please bear with me, I realize Inform 6 is a quite a bit outdated. Eventually, I would like to adopt Inform 7, but for now, I'm focusing my efforts exclusively on Inform 6, for reasons.

Supposedly, I could alter the article, but then NPC actions would display incorrectly.

Alice scratches your left eyebrow.

I'd like to come up with some way of presenting the articles used in the body part interaction display messages in such a way that they will work for all cases and perspectives.

This means that the same methodology should work for a player:

You scratch your left eyebrow.

As well as for an NPC, as seen from the player's perspective:

Alice scratches her left eyebrow.
DavidGriffith commented 7 years ago

See also http://inform7.com/mantis/view.php?id=1998

DavidGriffith commented 7 years ago

My reply:

This is a deficiency in the i6 library to which I haven't given much thought. Precisely what release of the i6 library are you using?

At first I thought that giving the body part an article property of "your" would allow what you're trying to do. This only works as far as describing the object, not interacting with it. Tomorrow I'll poke around and see if I can have (the) processing do something sensible or if I'll need to introduce an owner property to do the job. It seems simple enough.

DavidGriffith commented 7 years ago

It appears that https://github.com/DavidGriffith/inform6lib/blob/master/parser.h#L7029 is a good place to start working on this. The solution may also involve PrefaceByArticle() at https://github.com/DavidGriffith/inform6lib/blob/master/parser.h#L6890