I7 - giving persons some build-in text which varies

I want people to have a build-in text which varies depending on their stats. It can be done by changing each of the text of each of the persons every turn. But this seem a heavy-handed. Is there a cleaner way?

My heavy-handed approach:

[code]A person has a number called eyesight. The eyesight of a person is usually 50.
A person has some text called watching-description. The watching-description of a person is usually “this one get changed to fit the person by the every turn rule. (don’t work in first turn)”.

An every turn rule:
Repeat with selected-person running through person:
if eyesight of selected-person is greater than 30:
Now the watching-description of selected-person is “razer sharp ultra-vision!!!”;
otherwise:
Now the watching-description of selected-person is “your eyes.”;

Instead of examining something (called gazed-upon-stuff): say “You clevery watches the [gazed-upon-stuff] with your [watching-description of actor][line break]”.

Open Field is a room.
Jinz is a man in Open Field. The player is Jinz.
The star is a thing in Open Field.[/code]

I also tried cramming the if/otherwise-code into a single line, but then it thinks that the noun I’m talking about is the star:

[code]A person has a number called eyesight. The eyesight of a person is usually 50.

A person has some text called bee-fun. The bee-fun of a person is usually “[if eyesight of noun is greater than 30]razer sharp ultra-vision!!![otherwise]your eyes”.

Instead of examining something (called gazed-upon-stuff): say “You clevery watches the [gazed-upon-stuff] with your [bee-fun of actor][line break]”.

Open Field is a room.
Jinz is a man in Open Field. The player is Jinz.
The star is a thing in Open Field.[/code]

“The noun” and “The second noun” will change according to actions being processed. But in this case I don’t think you need either of those, just:

Instead of examining something (called gazed-upon-stuff): say "You clevery watches the [gazed-upon-stuff] with your [if eyesight of the actor is greater than 30]razer sharp ultra-vision!!![otherwise]your eyes[end if][line break]".

Alternatively, you can also create helper functions for it.

[code]To decide which text is bee-fun for (p - a person):
if eyesight of p > 30, decide on “razer sharp ultra-vision!!!”;
decide on “your eyes”;

Instead of examining something (called gazed-upon-stuff):
say “You clevery watches the [gazed-upon-stuff] with your [bee-fun for the actor][line break]”.[/code]
And then calling on “bee-fun for person” when relevant.

Thanks, seems quite solid! I have never used ‘decide on’ before, but it look rather simple.

“decide on” is effectively “return” if you’re used to C and its ilk.