I7 6L02 - Description of item problems

I am having difficulty setting this to work correctly.
I have a ring that has a description which is supposed to change when it is picked up. But… I think I have a few too many conditions or I am just not getting the scripting right.

A ring is in Forest. The weight of a ring is 1. The ring is wearable. The description of the ring is "A perfectly formed circle of shiny metal that [if worn]fits snuggly on your middle finger.[otherwise]looks to be wearable on a finger[end if][if handled]. There are also some fine squiggly lines and symbols engraved on the inside[otherwise]." Instead of examining the ring for more than the first time: if the player has the ring: say "The squiggles, though uniform and regular, are indeterminate. Perhaps it is some magical property, or perhaps not."; otherwise: say "You'll need to pick it up first for a closer examination.".

This gives the following transcript[spoiler]Forest
You are in a forest that doesn’t seem to have an end. Its quite a nice forest - as forests go - but that’s the best that could be said for it. Still the path must lead somewhere because there’s a broken sign to the East that says "To Go "

You can see a ring here.

x ring
A perfectly formed circle of shiny metal that looks to be wearable on a finger.

x ring
You’ll need to pick it up first for a closer examination.

x ring
You’ll need to pick it up first for a closer examination.

get ring
Taken.

x ring
The squiggles, though uniform and regular, are indeterminate. Perhaps it is some magical property, or perhaps not.

[/spoiler]

The first part is working as I want it. ie see the ring and get a short description and then be told you need to pick it up to see more.
When I pick it up, I want the description to be shown and then on a further X RING to show the bit about the squiggles.

Any pointers or clues to where I have gone wrong are appreciated.
Thanks

“Instead of examining the ring for more than the first time” checks how many times we have examined the ring total – it doesn’t know you want to reset the count after the player picks the ring up. So, if you’ve examined the ring already, the rule still triggers the first time you examine the ring after you’ve picked it up, and the text about fine squiggly lines doesn’t print.

As you can check, in your code if you try “get ring/x ring” you will get the text about fine squiggly lines, because it’s the first time you’re examining the ring.

In this case, if you want some text to print the first time you examine the ring when the player has it and different text to print afterwards, the simplest way is with a [one of]…[or]…[stopping] substitution. Since you have two different cases where this happens, one when the player has the ring and one when the player doesn’t, I’d just handle this with “instead of examining” rules and forget about the description:

Instead of examining the ring: say "[one of]A perfectly formed circle of shiny metal that looks to be wearable on a finger.[or]You'll need to pick it up first for a closer examination.[stopping]". Instead of examining the ring when the player has the ring: say "[one of]A perfectly formed circle of shiny metal that [if worn]fits snugly on your middle finger[otherwise]looks to be wearable on a finger[end if]. There are also some fine squiggly lines and symbols engraved on the inside.[or]The squiggles, though uniform and regular, are indeterminate. Perhaps it is some magical property, or perhaps not.[stopping]".

This will go back to “You’ll need to pick it up first” if the player drops the ring after examining it. That’s not ideal, but it also seems less than ideal to give the second message if the player’s picked up the ring and dropped it. Perhaps we could use a check on [if handled] in the first rule to decide whether it says “pick it up first” or “pick it up again.”

BTW “snugly” has one g unless you’re talking about snuggling. Also, it will be very user-friendly to allow things like “squiggles” and “lines” and “symbols” as synonyms for examining the ring when the player has it.

Thanks Matt,
I have changed my code as you suggested with a few other tweaks. I did have the Understand rule for all the synonyms - just didn’t copy it in.
The code I now have isA ring is in Forest. The weight of a ring is 1. The ring is wearable. The printed name of the ring is "shiny ring". Instead of examining the ring: say "[one of]A perfectly formed circle of shiny metal that looks fit for one of your fingers.[or]You'll need to pick it up [if handled]again[else]first[end if] for a closer examination.[stopping]". Instead of examining the ring when the player has the ring: say "[one of]A perfectly formed circle of shiny metal that [if worn]fits snugly on your middle finger[otherwise]looks fit for one of your fingers[end if]. There are also some fine squiggly lines and symbols engraved on the inside.[or]The squiggles, though uniform and regular, are indeterminate. Perhaps it is some magical property, or perhaps not.[stopping]". understand "squiggles" or "squiggle" or "symbols" or "symbol" or "lines" or "line" or "shiny" or "circle" as the ring. Before wearing the ring: Say "[if not held]Reaching down to retrieve it, y[else]Y"; Say "ou try [the noun] on each finger before deciding that it fits best on your middle one."; Now the ring is worn by the player; Stop the action.

This appears to give all the right responses at the right places and times. I implemented the ‘first / again’ in the first examining rule and changed some of the text to make the story flow better.(I think - but there will always be room for improvement) I even had one g in snugly but must have put a second one in when I corrected a reversal of the n &u. (fingers sometimes type faster than the brain thinks)

As I am not a writer, I am currently taking some old BASIC programs and converting them to I7.(with enhancements) This particular one was originally written for the Commodore 64. I rewrote it for my Exidy Sorcerer then again in Quickbasic and now I7. Each time I keep adding to it to make it different/better as the language allows.

Thanks again. I’m sure I’ll be back before I finish.