Every turn, a character offering something

I’m curious how people solve a particular problem.

I have an NPC that the player can pay money to for a specific item. I have some properties in place like this:

A person can be compensated.
A person can be providing a paid for product.

I have some “buying” logic in place. But what I want to do is have the NPC offer the item that the player bought, but only for a limited time. So the idea is that the “providing a paid for product” will eventually not be the case. I know I should put this in an every turn rule. But I’m unclear what condition I should use. Here’s the kind of output I would like:

So clearly the “providing a paid for product” will be set on the Enchantress when the map is purchased. Then after a few turns, that property will be turned off again. If at any time, the player takes the map being offered, of course, all is good.

So I was thinking:

Every turn when the Enchantress is providing a paid for product:

But I’m not sure how to conditionalize that such that this “every turn” condition, only lasts for a certain number of turns. Would this be the place for a scene? Or is there some better approach?

Here’s one way you could do this sort of thing:

[code]The block buying rule is not listed in any rulebook.
The purchasing window is a number that varies. The purchasing window is usually 0.
The current merchandise is a thing that varies.

Shop is a room.
The Enchantress is a woman in Shop. The Enchantress carries a map.

Carry out buying something (called the item):
now the current merchandise is the item;
say “The Enchantress takes your coin and offers [the current merchandise] to you.”;
now the purchasing window is 4.

Every turn when the the purchasing window > 0:
if the Enchantress is visible:
if the purchasing window is:
– 3: say “The Enchantress looks at you impatiently, pointedly looking at [the current merchandise] that she is holding out for you.”;
– 2: say “The Enchantress says, ‘Are you going to take [the current merchandise] or what?’”;
– 1: say “The Enchantress shrugs, says ‘Your loss’, and puts [the current merchandise] away.”;
say “You wonder if it was wise to leave the shop without claiming [the current merchandise].”;
decrement the purchasing window.[/code]

When the player actually takes the item, you could then change the “purchasing window” to 0.

(Edited to use the “–” shortcut.)

Edit: Some buggy 5am code deleted here.