In need of a shortcut (I7)

I need to show things (also scenery or backdrops) to an NPC.
I want the (trying to pick up the THING) to be removed absolutely (but ofc I don’t want to be able to pick up scenery :slight_smile: ).

Let’s imagine my NPC (the_npc).

How can I make this default for every single object in game?

Before showing the_finger to the_npc: say "Oh! That? That is a finger, you moron!"; stop the action.
This works. But I don’t want to have to code it for every single object in the game.

So, something like:

[code]Before showing something to the_npc:
(the rule for suppressing the “try and take up the noun before showing” rule).

[so that when I write this:]

Instead of showing something listed in the Table of Things I want to Show to the NPC to the_npc:
say “[text I take from the table, am I bright or what?]”[/code]

Thanks in advance, you rock.

EDIT: Ofc I want the rule for suppressing etc to work ONLY when showing something to that NPC, and I DON’T WANT THE PC TO TAKE THE OBJECT.
Imagine it as pointing at something instead of taking, giving, and listening.

before showing something to: if second noun is someone_interested: if noun is a backdrop: say "'Whoah! That's some backdroppy backdroppery!'" instead; if noun is scenery: say "'Whoah! That's some sceney scenery!'" instead;

There may be a better way to use rules, but this seems quick and dirty.

I think you may have to throw out the standard showing it to action (no great loss, as it’s barely implemented) and start with a new one.

These lines from the standard rules will cause problems:

Showing it to is an action applying to one carried thing and one visible thing. [...] Understand "show [someone] [something preferably held]" as showing it to (with nouns reversed). Understand "show [something preferably held] to [someone]" as showing it to.

You could probably get around the [something preferably held] tokens by defining new “understand” lines, but if the action is defined as applying to a carried thing I don’t think there’s a way to get around it. (Well, I remembered that there’s an example that involves eating something without picking it up – but they do it with a procedural rule, which is a no-no.

So I’d start like this:

Understand the command "show" as something new.

Pointing it out to is an action applying to two visible things.
Understand "show [something] to [someone]" as pointing it out to.
Understand "show [someone] [something]" as pointing it out to (with nouns reversed).
[and may as well include the grammar for "point it out to"]
Understand "point [something] out to [someone]" as pointing it out to. 

Report pointing it out to (this is the standard report pointing out to rule):
	say "[The second noun] says 'Hmm, interesting [noun].'"

It sounds like you only want this to work for one NPC – which I don’t think is a great design choice, but can be done, since the original showing action is still there:

Before pointing something out to someone: if the second noun is Jordan: continue the action; otherwise: try showing the noun to the second noun instead.

There’s probably an easier way to have this happen only for Jordan, using the fact that more specific rules fire first, but this is the way I got it to work.

And a scenario:

[code]
Lab is a room. “There’s a fascinating gazebo here.” Jordan is a woman in Lab. Riley is a man in Lab. The gazebo is scenery in Lab. The whatsit is in Lab. The player carries a thingy.

Test me with “show Jordan gazebo/show gazebo to Riley/point whatsit out to Jordan/show whatsit to Riley/show Jordan thingy/show thingy to Riley”.[/code]

BTW, with this code “present” and “display” still go straight to the original showing action, so “PRESENT GAZEBO TO JORDAN” carries out an implicit take – you might or might not want to redefine the grammar for that. To my ears, those sound much more like something you do when you’re carrying something, as opposed to pointing out the scenery, so I think it might be OK to leave them as they are.

Here’s the shortcut I needed (hope this doesn’t disrupt anything in the game—any suggestion?):

[code]Before showing an Object listed in the Table of Shows to Jennifer:
say “’[Analisys entry].’”;
stop the action.

Table of Shows
Object Analisys
first thing “First text”
second thing “second text”[/code]
As easy as that.

Ofc:

Before showing something (called the example) to Jennifer: say "'That is [a example]. Is that right?'"; stop the action.

Well, actually:

"[That-those of noun] [is-are] [a example], right?"

You can also use my Flexible Action Requirements extension. I created it to do exactly this kind of thing in my WIP.

eyeballsun.org/i/Flexible%20Acti … ements.i7x

Thanks a lot! I will play with it in case I still have time before the comp. Sounds exactly what I needed.

Why don’t you try something like this?

[code]“Test”

An action-processing rule (this is the new carrying requirements rule): if not showing, abide by the carrying requirements rule.

The new carrying requirements rule is listed instead of the carrying requirements rule in the action-processing rulebook.

The block showing rule is not listed in the check showing it to rulebook.

The can’t show what you haven’t got rule is not listed in the check showing it to rulebook.

The convert show to yourself to examine rule is not listed in the check showing it to rulebook.

Carry out showing it to (this is the standard carry out showing it to rule):
say “[The second noun] looks at [the noun] very closely.”.

The Testing Room is A Room. Mr Monkey is a person in the testing room. A banana is in the testing room.

Test me with “show banana to monkey / l”.[/code]

Here, the carrying requirements rule is bypassed when the action is “showing it to” so the implicit take is skipped over and the can’t show what you haven’t got rule is unlisted so that the action allows showing what is not held. At this point, the “showing it to” action is pretty much empty of rules so it’s best to use check, carry out and report rules rather than instead rules.

Hope this helps.

Thanks for the continuing support. Is there a reason why my before rule shouldn’t work? I’ve tested it and it seems it is working with no problem, but maybe I’m missing something…

I think the before rules run before the accessibility rules, so yeah, that should be fine.

Correct.