@Faraday
Sure. It probably comes down to game styles, yes. For example a multi-descer is completely unheard of in most other genres of MU*. In other styles, dynamic descriptions is a big deal.
Here are some examples. The Evennia FuncParser
inlines actually support nested calls (so they will be executed from the inside out like a regular python call), but for brevity, assume we have made some custom functions for one’s particular game and is using the rpsystem contrib:
$You() have pock-marked skin and is in his $approxage(10). He wears $clothes(). He looks $health().
$ifguild(thieves, He has the secret thief's guild mark on his hand.)
$ifskill_gt(detectmagic, 10, He has a faint aura of magic around him.)
Here, someone who’s can’t detect magic, doesn’t know me and is not in the thieve’s guild will see
The tall man has pock-marked skin and is in his thirties. He wears a black hoodie. He looks a bit sick.
Wheras if you are know me (has recognized me previously), is in the thieve’s guild and has enough in the detectmagic skill, you will see
Griatch has pock-marked skin and is in his thirties. He wears a black hoodie of the type that has a lot of hidden pockets. He looks a bit sick.
He has the secret thief's guild mark on his hand.
He has a faint aura of magic around him.
This works because when the FuncParser
parses the description it is fully aware of who this description is targeted at. So we can have the $clothes()
inline give some extra info (it probably checks for the looker’s thief’s guild membership inside its code), and so on.
As for the stance example, here’s how it could look for Evennia:
Director stance:
msg = f"{char.key} changes $gender(poss) stance to $stance()."
Actor stance:
msg = "$You() $conj(change) $gender(poss) stance to $stance()."
(note: The $gender()
inline is not in default Evennia since core objects don’t have genders; it’s something deemed game specific. But maybe we should add it to make this structure easier to make in actor stance).
This is called in code as
room.msg_contents(msg, from_obj=char)
And would come out as
Faraday changes her stance to cover. # director stance
You change your stance to cover. # actor stance, your view
Faraday changes her stance to cover. # actor stance, everyone else's view.