The carrying requirements rule

I need to turn off the carrying requirements rule in one particular spot. Namely, the PC needs to show an NPC something, and it’s something in the room, not something that can be carried. Inform tries to do an implicit take, but that doesn’t work, so the show-to action can’t occur.

I looked in the Standard Rules, and learned nothing but that that rule translates into I6. That’s not helpful. The Docs don’t seem to be helpful either. There’s some discussion in the Docs of how to prevent implicit taking and then print out a message, but that doesn’t help at all. I’m not seeing an example of how to silently override the rule and then continue with the show-to action. I’m stumped.

“now the carrying requirements rule does nothing” won’t compile. “ignore the carrying requirements rule” won’t compile.

There is probably a complex way to solve this problem that involves figuring out how to distinguish the implicit take that happens as part of a showing action from the other kinds of taking, and I’m sure the actual smart people here will be along to help you with that. If you’re in the market for a dumb solution, though, I’m your huckleberry:

The chamber is a room.  Fred is a person in the chamber.  The ball is scenery in the chamber.

fake-showing is an action applying to two things. Understand "show [ball] to [Fred]" as fake-showing.  

Carry out fake-showing:
	Say "'Cool ball, bro,' says Fred."
1 Like

This is an interesting technique. You can indeed create a new action that uses specific object names in the Understand line (as in
Understand "show [widget] to [Tesla] as indicating it to."
That would never have occurred to me … and of course if one needs to do this sort of thing repeatedly, one is going to run out of wacky verb terminology. So I’d still like to understand the general technique. But yes, it does work. Thanks!

2 Likes

I’ve always found it weird that show required carrying at all. Do you actually need that requirement on show everywhere else? I’d be inclined toward something like

Presenting it to is an action applying to two things.

Understand the command "show" as something new.
Understand "show [something] [something]" as presenting it to (with nouns reversed).
Understand "show [something] to [something]" as presenting it to.

Before presenting something to yourself, instead try the examining the noun.

To show is a verb.
Check presenting it to when the second noun is not a person: instead say "Surprisingly, [the second noun] [show] little reaction.".

Report presenting something to: say "[The second noun] [are] unimpressed.";
1 Like

As is always the case, Zed’s more thoughtful approach seems to me like the way to go. But just to respond to this point, I don’t think it’d be an issue, because you could also Understand "show [caricature from Montmartre] to [Eugenie]" as fake-showing and then build your implementing rules accordingly (e.g. carry out fake-showing the ball to Fred rather than the extra dumb way I wrote it above).

There may be edge cases. What if you try to show an NPC to herself? What if you try to show an NPC something that she herself is already carrying? I suspect the default rule is just a quick way of avoiding all that.

Good points.

Check presenting something (called the presented) to someone (called the presentee) when the presentee encloses the presented: instead say "[The second noun] [seem] familiar with [regarding noun][them]."

Check presenting someone (called the presented) to someone (called the presentee) when the presented is the presentee: instead say "[The second noun] [seem] familiar with the subject."

But there are probably other issues I also haven’t thought of.

1 Like

Here’s what I have so far. It seems to work:

Understand the command "show" as something new.

Presenting it to is an action applying to two things. Understand "show [something] to [something]" as presenting it to. Understand "show [something] [something]" as presenting it to (with nouns reversed).

To show is a verb.
Check presenting it to:
	if the second noun is not a person:
		say "Not surprisingly, [the second noun] [show] little reaction." instead;
	else if the second noun is the noun:
		say "I'm sure [the second noun] [are] already self-aware." instead;
	else if the second noun carries the noun:
		say "[regarding the second noun]It's not hard to guess that [the second noun] [are] already aware of [the noun]." instead;
	else if the noun is yourself:
		say "You're already visible." instead;
	else if the second noun is yourself:
		say "You already seem to know about [the noun]." instead.

To nod is a verb.
Report presenting it to: say "[The second noun] [nod] politely."

This is not quite right, because of the tricky grammar around the player character:

>show me the screwdriver
It's not hard to guess that yourself are already aware of the screwdriver.

Nonsense removed.

edit: Nonsense reinstated, since it had been replied to:
Is this:

Instead of showing Mount Fuji to Mr Vance:
          try asking Mr Vance about Mount Fuji.

too simplistic?

[Quite apart from Jim’s considerations below, it wouldn’t work because asking someone about requires a topic, not a thing. And there would be no advantage over solutions already given above anyway.]

It would work in many situations, I’m sure. In the particular moment in the story I’m constructing, no. It would be a spoiler to explain why, but showing (as in, pointing out something that’s in the room) is necessary.

I can’t read your mind, but this reminds me of our other small exchange about faking it under the hood. @jrb 's suggestion seemed to immediately make sense in that light. (EDIT: but it doesn’t answer a bunch of other problems apparently…)

In this case, if the player types SHOW MOUNT FUJI TO MR VANCE and the game runs an ask-about command you prepared for this instance under the hood instead but responds as if the PC had pointed to that object in the room, why would that not be equivalent?

I may be in the minority but “wacky verb terminology” is part of the fun of I7 for me…

2 Likes

@Rovarsson: that was exactly my thought.

Inform’s expected syntax is:
The carrying requirements rule does nothing when <condition>.

The condition can be formulated in various ways, including the general case (when showing).

See also the example “Lollipop Guild” in the documentation at 18.34: Implicitly taking something, which covers what seems to be this scenario (overriding the implicit taking in the course of showing something to someone).

Some variants for illustration:

The Lab is a room.  Alice is a person in the Lab. Bob is a person in the Lab.
 
The machine is in the Lab. The machine is fixed in place.

The apple is in the Lab. The apple is edible.

The carrying requirements rule does nothing when showing the machine to Alice.
The can't show what you haven't got rule does nothing when showing the machine to Alice.

[or:]
[The carrying requirements rule does nothing when showing the machine to someone.
The can't show what you haven't got rule does nothing when showing the machine to someone.]

[or:]	
[The carrying requirements rule does nothing when showing something to Alice.
The can't show what you haven't got rule does nothing when showing something to Alice.]

[or generally:]
[The carrying requirements rule does nothing when showing.
The can't show what you haven't got rule does nothing when showing.]

The block showing rule does nothing.
Report showing:
	say "[The second noun] [say]: 'Hmm, interesting.'"
	
Test me with "show machine to alice/show bob machine/show machine to me/show apple to alice/eat apple". 
3 Likes

If I remember right, many conversation extensions handle this the “presenting” way: making a new action to show something that doesn’t require it to be taken.

Personally, I’d disable the rule “when the noun is not portable”.

The can't show what you haven't got rule does nothing when the noun is not portable.

This means you still have to pick something up to show it if it’s portable, but can point at it without picking it up if it’s too big. I think the default conception of “showing” involves picking something up in your hand and holding it out to the NPC, but pointing at it in the distance makes just as much sense to me.

2 Likes

You could just redirect the player to use POINT AT, I guess?

The can’t show what you haven’t got rule does nothing when the noun is not portable.

This doesn’t buy anything: one is still up against the Understand lines and action specification.

Understand "show [someone] [something preferably held]" as showing it to (with nouns reversed).
Understand "show [something preferably held] to [someone]" as showing it to.

Showing it to is an action applying to one carried thing and one visible thing.
1 Like

You’re referring to this, I assume:

The showing it to action translates into I6 as "Show".

Can anyone tell me what this line in the Standard Rules actually does, if anything? All the code for the built-in actions (or most of them, at any rate) is right there in the SR, so I’m not sure what the references to I6 are needed for.

By the way, the specification for the showing it to action begins:

Anyone can show anyone else something which they are carrying, but not some nearby piece of
scenery, say - so this action is suitable for showing the emerald locket
to Katarina, but not showing the Orange River Rock Room to Mr Douglas.

So it looks like you’re expected to create a new action to do what you want to do.

I took Jim to be referring to the carrying requirements rule (The carrying requirements rule translates into I6 as "CARRYING_REQUIREMENTS_R".)

Or leverage the existing definition and override the carrying requirements rule and the can't show what you haven't got rule, as per my post above and the example Lollipop Guild from the docs.

It’s basically the same as the lines translating I7 variable names to I6 variable names. If you look through the Actions template you’ll see ##Go, ##Look, etc. ( I6 uses the ## sigil to indicate an action identifier). So this just establishes that the action I7 calls the showing it to action is the same thing as the action that I6 calls ##Show.

Author-created actions get them too, with uglier names like ##A_singing. And the template layer/kits actually only refer to a few of these for some special-case purposes. That’s why it’s never seemed like you were missing out on anything by not having the equivalent in your code – you weren’t.

2 Likes