The MUDL skill function takes a variable set of arguments: an optional acting character (if omitted, the "current" character is used), the skill name, an optional target character or target object, a list of flags, and any other arguments to be passed to the skill (such as "worse" for a control weather spell).
This command is used both for skills like "steal" and for casting spells or singing bard songs. The final string of flags a space-separated list of zero or more of the following flags:
level=31 | set the caster level to the specified level; if absent then use the character's level |
quiet | don't do the utter for spells |
no_mana | don't check or decrease caster's mana |
no_wait | don't lag the caster |
any_position | don't check the caster's position is ok (allows casting while stunned, dead, asleep) |
masterful | for spells, produce the masterful effect |
Note that there are several forms of the skill() command. The forms without a target take the current person that the actor is fighting as the target. This is true of ALL skills and spells, even those where a more reasonable default might be the actor, such as 'phase door' or 'detect invisible'. If the actor isn't fighting anybody, then only the form of skill that takes TWO characters as arguments works properly.
Example:
If you want a mob to cast 'phase door' without any lag or mana drain, as a level 40 caster. You would use:
skill(%c,'phase door',%c,'level=40 +no_mana +no_wait')
If you want a mob to use 'control weather' to make the weather get worse, and you want to do it in the middle of combat (which is normally impossible for the 'control weather' spell), you would use:
skill(%c,'control weather','level=40 +no_mana +any_position', 'worse')