Checking whether two nouns entered from parser are the same.

Apologies if this has already been answered or covered in the I7 documentation, but I couldn’t find any references and it seems too vague a question to search (I’ve tried).

How do you check something nonsensical like “cut apple with apple”?

I can’t seem to figure out a way to do something like “if noun is the same as second noun” or “when noun is itself”.

The standard rules provides a check for putting something on itself and it disallows it, but that involves component parts and transfer ceilings which I don’t understand and it doesn’t seem very graceful either.

This has to be a stupidly easy check to do, but I just can’t figure it out.

Check cutting something with the noun (this is the don't cut something with itself rule)...

“when the noun is the second noun” should also work. The equality check is just “is”–that seems to be what you’re trying to do with “is the same as.”

Ah ha.

Thanks for the response. I was trying to do this with an If and not a When. That makes a lot of sense.

“Before cutting something with something else when the noun is the second noun” was what I was going for.

The Check approach above works too, but I don’t understand why. It seems like it should fail on every attempt, no matter what the nouns are.

Drop the word “else” and that will work.

It works because the thing after the “with” is the second noun. In the action “cutting the apple with the knife” the apple is the noun and the knife is the second noun.

So when you look at “check cutting something with the noun” for the action “cutting the apple with the knife,” the rule doesn’t apply, because you’re not cutting something with the noun–which is the apple.

When you look at it for the action “cutting the apple with the apple” the rule does apply, because you are cutting something with the noun (again, the apple).

So when two “somethings” are separated by a ‘with’ then the first something is considered the noun and the second something is considered the second noun? The word ‘with’ is what differentiates one noun from another?

I was thinking you had to distinguish between the two nouns by specifying that both “something” nouns were different, by specifying “something other than” or “something else”, etc.

Is there a problem using the word else here? Is it redundant or will it actually cause problems because it means something different. It seems as though I tried it with “something else” and it was working fine.

My understanding (someone please correct me if I’m wrong–I tried to confirm this in the manual and didn’t find a lot of detail) is that the first noun to appear in a command is called the “noun” and if another noun appears later in the command, the later noun is called the “second noun.” So most of the time, because of the nature of the English language, if an action has two nouns, the “noun” will be the direct object and the “second noun” will be the object of a preposition.

If the player is “cutting something with something,” the first “something” represents the noun and the second “something” represents the second noun because one comes earlier in the command (and so is most likely a direct object) and the other comes later (and so is most likely an object of a preposition). The separating word won’t always be “with.” If the command is “put mail in slot,” “mail” is the noun and “slot” is the second noun.

I don’t know which is considered the noun and which the second noun when you have an indirect object/direct object (e.g. “Give the cashier the money”). But that’s not as common.

The word “with” is part of the action name. You probably have a line like this somewhere:

Cutting it with is an action applying to two things.

This means that the action is named “cutting ___ with ___”, and you can write rules about “cutting the apple with the knife” or “cutting something with the cursed chainsaw of destruction” or “cutting something with something”. If you’d used a different preposition (e.g. “inserting ___ into ___”, “putting ___ on ___”, “throwing ___ at ___” from the Standard Library) that would be the phrasing for the rule preambles as well.

EDIT: The “noun” is the first one listed in the action line, the “second noun” is the next one listed. Verbs with indirect objects usually do something like this:

Giving it to is an action applying to two things.
Understand "give [something] to [someone]" as giving it to.
Understand "give [someone] [something]" as giving it to (with nouns reversed).

The “with nouns reversed” bit means that the “noun” will still be the direct object.

Good to know, thanks!

Okay, that all makes sense.

It doesn’t really matter what the “something” is called or how it is referred to or how the action is structured, I7 will (almost) always reference the first something that hits the parser as the name “noun” and the second something “second noun” and there’s no need to manually differentiate between inputs in the ways I was thinking/attempting.

That explains why the Check works, because something becomes the noun and then it’s self-referential. The second noun is null basically, because the noun (which is equivalent to the first “something”) takes its place by coming after ‘with’.

Wow, thanks for clarifying those fundamentals for me. That was definitely confusing me and will probably trip me up again in the future in some subtle way.

Thanks again.