I7 - can't get really basic command to work.

My code goes like this:

[code]“Arena” by Spoff

An orc is a kind of man.

Persuasion rule for asking an orc to try singing: persuasion succeeds.

Singing is an action applying to nothing. Understand “sing” as singing.
Carry out singing:
If the actor is not an orc:
Say “Only orcs sing.”;
Else:
Say “[The actor] sing a very pretty song.”;

The Arena is a room.
Barffy is an orc in the Arena.
Gobba is an orc in the Arena.[/code]

But it gives the results below - when I try to get the orc to sing, it simply doesn’t do anything:

[code]An orc is a kind of man.

Persuasion rule for asking an orc to try singing: persuasion succeeds.

To sing is a verb.
Singing is an action applying to nothing. Understand “sing” as singing.

Carry out an actor singing: say “[The actor] [sing] a very pretty song.”;
Check an actor singing when the actor is not an orc: say “Only orcs sing.” instead.[/code]

The issue here was the “carry out” rule. “Carry out” only governs the player, while “carry out actor” affects both the player and non-player characters.

Just one single word missing - man, I had tried each and every combination of everything. Thanks for the help!

(Nitpicking: I just tested, and it looks like “carry out an actor” is NPC only - not NPC and player!)

“Carry out an actor singing” should be NPC and player. Look at section 12.14 of Writing with Inform; if you write “carry out singing” it only applies to the PC, if you write “carry out a person singing” (or some other description) it only applies to NPCs, but if you try “carry out an actor singing” it should apply to both PC and NPCs.

However, as Eleas wrote it, the “Carry out an actor singing” rule won’t run for the PC if the PC isn’t an orc, because the check rule stops the action before the carry out rule runs – as it should. What is your code where “carry out an actor” isn’t running for the player?

I just tested it, and it looks like you’re right! (but I could swear that it didn’t work before. Strange.)