First Time Rule per individual person

I ran into a problem trying to use something like:

Before attacking a calm person for the first time, say "It wouldn't be wise to anger them." instead.

It works for any one random person (the first calm person attacked), but then when encountering a second individual then Inform has already applied the first time rules toward the original person, so it no longer applies.

How can you get a statement like that to apply to every calm person when attacking each specific person for the first time?

Before attacking any given person / Before attacking each person / Before attacking any particular person / Before attacking for the first time a person, something to that effect.

I used some work around that gives each person a provoked/unprovoked property, but it’s ultra-ugly. It seems like this should be really easy with a change in phrasing.

Any ideas?

something like this ought to work provided I got the syntax right:

a person may be provocation-warned.
attacking a person is being provocative if the person is not provocation-warned.

before the player being provocative:
  say "It wouldn't be wise to anger [the noun].";
  now the noun is provocation-warned.

Any time you starting thinking “per-person” in the process of making your game you most likely are going to use a property in some manner.

Okay. That’s more or less what my workaround ended up being, but yours is definitely cleaner. Thanks for the confirmation in the approach of using properties instead of First Time.

Here’s a full working example:

"test" by Brian Jack

the block attacking rule is not listed in any rulebook.

Obligatory test room is a room.
A man called Bob is in Obligatory test room.
A woman called Jane is in Obligatory test room.

a person can be provoked.
a person can be provocation-warned.
definition: a person is unwarned if he is not provocation-warned.
attacking an unwarned person is causing provocation.

rule for printing the name of a provoked person:
	say "[printed name] (glaring at you)".

carry out attacking a person:
	say "[the noun] wonders what [if the noun is female]s[end if]he did to deserve that.";
	now the noun is provoked.

before causing provocation:
	now the noun is provocation-warned;
	say "[the noun] is not your enemy, violence is not a good idea." instead.

test me with "attack bob / g / l / attack jane / g / l".

PS: Deluxe actor-aware version:

"test" by Brian Jack

the block attacking rule is not listed in any rulebook.

Obligatory test room is a room.
A man called Bob is in Obligatory test room.
A woman called Jane is in Obligatory test room.

a person can be provoked.
a person can be provocation-warned.
a person has a person called who-hit-me.
definition: a person is unwarned if he is not provocation-warned.
attacking an unwarned person is causing provocation.

persuasion rule for asking a person to try attacking:
	rule succeeds.

to decide which text is one who hit (p - a person):
	if who-hit-me of p is the player:
		decide on "you";
	otherwise:
		decide on "[printed name of who-hit-me of p]".

rule for printing the name of a provoked person (called me):
	say "[printed name] (glaring at [one who hit me])".

carry out an actor attacking a person:
	say "[the noun] wonders what [if the noun is female]s[end if]he did to deserve that.";
	now who-hit-me of the noun is the actor;
	now the noun is provoked.

before an actor causing provocation:
	now the noun is provocation-warned;
	say "[the noun] is not [if the actor is the player]your[otherwise][printed name of the actor]'s[end if] enemy, violence is not a good idea.";
	rule succeeds.

test me with "attack bob / g / l / attack jane / g / l".
test actor with "bob, attack jane / g / l / attack bob / g / l".

First time can really only be applied to the action as a whole.

To have it first time for each person implies having to remember that status, thus the need for a property of some sort.