Initial appearance

I’m running into a sticky issue that I know I’ll only exacerbate if I try and do it without your help.

I want to have the initial appearance only print once. From there on out, I want it to be the regular “You can see a…here” message.
Here is what I’ve set up:Every turn: repeat with item running through every thing in the location begin; now item is handled; end repeat;But it doesn’t work after the turn when play begins. I start the player in a room with an object. The initial appearance prints fine, but then whenever the player does anything, the initial appearance prints a second time, causing the baseball to come crashing through the window and land on the player a second time. However, the third time, everything prints like I want it to.

The best I can figure is that the “every turn” doesn’t fire at the very first turn, because it must not count as a full turn (i.e. the player didn’t do anything to bring the game to this point). How do I make something happen at this point?

It looks like you didn’t post all of the relevant code, but that doesn’t sound like the proper use for initial appearance. As I understand it, the initial appearance is supposed to stay until the object is moved. I’m guessing you need something like this:

After going in the living room for the first time, say “A baseball crashes in through the window!”

Hmm… this is trickier than I thought. To have this happen in the right order on the first turn, you can use an “after looking in the living room for the first time” rule that prints the message and moves the baseball into place. But if you want the initial appearance to print right after that, I’m not sure of the right phrase to use.

If I understand the problem correctly, I think you could put it in the room description:

[code]The Living Room is a room. “Your comfy living room[ball-crash].”

After looking in the Living Room for the first time:
now the baseball is in the Living Room.

Ball-crash-printed is a truth state that varies. Ball-crash-printed is false.

To say ball-crash:
if ball-crash-printed is false:
now ball-crash-printed is true;
say “. A baseball comes crashing through the window! Broken glass is everywhere”

The baseball is a thing.

The easiest way would be to just blank out the initial appearance property after it’s been displayed once.

[code]The phonebooth is a room.
The phone is here. “A probably broken phone hangs on the wall.”
The phonebook is here. “The phonebook has most of its pages torn off.”

After looking:
repeat with X running through every thing in the location:
now the initial appearance of X is “”;
continue the action.

Test me with “look/look”[/code]

(Although if the purpose is just to avoid having action descriptions print more than once, then using initial appearances is actually not the best way to do it; you should use scenes or some other mechanism.)

Thanks everyone for the tips! I knew I wasn’t doing it right, I just couldn’t get my brain to think about it the right way.
I’ll try these suggestions and let you know which worked.
I do agree, now that I’m looking at it after a good night’s sleep, that initial appearance is the wrong way to go.

I tried the suggestions and I just modified Jim Aikin’s idea.
I got rid of the Every turn code, and replaced it with an After looking for the first time, move the… and it works perfectly.
Thanks a lot for your help!