I think the meditation-command has the wrong "minimum position" set in the command list. You're seeing this message because you're in POS_RESTING but the lowest level is something like POS_SITTING or POS_STANDING.
About wear_off-messages: they already exist, but for spells. Since skills are a "spell" structure, you could easily expand them with the wear_off_msg:
github.com/tbamud/tbamud/blob/dceb563a9b.../spell_parser.c#L704
Code:
-#define skillo(skill, name) spello(skill, name, 0, 0, 0, 0, 0, 0, 0, NULL);
+#define skillo(skill, name, wearoff) spello(skill, name, 0, 0, 0, 0, 0, 0, 0, wearoff);
A bit lower in the same file:
Code:
- skillo(SKILL_BACKSTAB, "backstab");
- skillo(SKILL_BASH, "bash");
- skillo(SKILL_HIDE, "hide");
- skillo(SKILL_KICK, "kick");
- skillo(SKILL_PICK_LOCK, "pick lock");
- skillo(SKILL_RESCUE, "rescue");
- skillo(SKILL_SNEAK, "sneak");
- skillo(SKILL_STEAL, "steal");
- skillo(SKILL_TRACK, "track");
- skillo(SKILL_WHIRLWIND, "whirlwind");
- skillo(SKILL_BANDAGE, "bandage");
- skillo(SKILL_MEDITATE, "meditate");
+ skillo(SKILL_BACKSTAB, "backstab", NULL);
+ skillo(SKILL_BASH, "bash", NULL);
+ skillo(SKILL_HIDE, "hide", NULL);
+ skillo(SKILL_KICK, "kick", NULL);
+ skillo(SKILL_PICK_LOCK, "pick lock", NULL);
+ skillo(SKILL_RESCUE, "rescue", NULL);
+ skillo(SKILL_SNEAK, "sneak", NULL);
+ skillo(SKILL_STEAL, "steal", NULL);
+ skillo(SKILL_TRACK, "track", NULL);
+ skillo(SKILL_WHIRLWIND, "whirlwind", NULL);
+ skillo(SKILL_BANDAGE, "bandage", NULL);
+ skillo(SKILL_MEDITATE, "meditate", "You are no longer meditating.");