This is a listing of all the mobprog commands that Age of Chaos supports. They are unique abilities that each mob has the capacity to do, and are used to do special things with your mob or in your zone.
mpadd mpaddclanrank mpasound mpat mpdamage mpecho mpechoaround mpechoat mpechonpc mpechonpczone mpechoworld mpechozone mpexp mpforce mpforce followersof mpgoto mpjunk mpkill mpmload mpoload mppunt mppurge mppush mpset mpsetvar mpslay mptransfer mpunaffect
Usage: mpadd [command]
This command is used a great deal in mobprogs. While it does nothing on its own, what it does do is put whatever command follows it into a queue for the mob to follow. This makes mobprogs a little more stable, and ensures that each command is done correctly. Therefore, it is advisable you use mpadd in many situations involving mobprogs, particularly in instances where the mob does something the player will be aware of (fight_progs, greet_progs, mpechos, etc), the exception being death_progs and certain hitprcnt_progs. You may never use mpadd (or it’s close match mppush) in a death_prog or it will not function. You should also never mpadd the mpsetvar command.
mpadd kill $n
mpadd weave ‘balefire’ $n
mpadd mpjunk brick
SPECIAL NOTES: You should pretty much use mpadd if you want a command to go through fairly fast but also retain stability and keep a mob’s commands all queued up correctly. Never use mpadd in death_progs. Sometimes you shouldn’t use it in hitprcnt_progs, but only if you have only a few things that the mob is trying to do. Also, mpadd or mppush should be the first command in a line, so it would be “mpadd mpat $n mpecho A bird sings here.” and not “mpat $n mpadd mpecho A bird sings here.”
Although it is unlikely a casual mobprog designer would make use of this command, the mpaddclanrank command can be used to alter the clanrank of a given clan. Using a numeric operator such as the subtraction/negation sign will allow for the subtraction of clanrank, while adding is simple as well. As clanrank is more of an administrative tally, it is advisable to normal zone builders to not make use of this function unless under special circumstances.
SPECIAL NOTES: Use of this mobprog is not recommended normally, though with permission it can be used to grant bonuses to clans for doing something in your zone. Again, under normal circumstances, however, this is not welcomed.
Usage: mpasound [text string]
This command will echo the text string to all of the rooms adjacent to the one the mob is in, much like the death echo when a mob dies. This can be useful for creating dramatic deaths from mobs, or for use with mobs such as a wandering minstrel who can be heard in adjoining rooms or the like.
mpasound You hear a scream from nearby!
mpasound A delightful music fills the air from somewhere near here.
mpasound The drunken hollering of $I can be heard nearby.
mpasound The earth thunders as $I’s corpse falls to the ground nearby.
SPECIAL NOTES: Keep in mind that mpasound does not echo to those in the room with the mob, only to rooms adjacent to it. So if you want people in the room to hear the mpasound too, you’ll need to use an mpecho in addition to the mpasound.
Usage: mpat [destination] [command]
Performs the desired command at a designated location. The destination can be either a room vnum, a character variable such as $n, or a specific keyword of a mob. The command can be just about anything you want it to be. This command is very useful for doing slight of hand kind of tricks with mobs by performing actions away from the player, or doing things elsewhere in the zone for you. It has many potential uses.
mpat 10056 unlock door
mpat xxxguardonexxx poke xxxguardonexxx
mpat $n mpechoat $n You feel weakened from your escape.
mpat 1252 drop all
SPECIAL NOTES: When using mpat, it is not a bad idea to give your mobs specific, unique keywords so they can be manipulated with no error. The command is usually essential for zones that have complicated quests, and can be used to trigger other mobs, unlock and open doors and chests away from the mob, and a variety of other things. One thing to watch for is that your mobs are capable of performing their mpat commands (for instance, having a ghosted mob mpat unlock door won’t work very well since ghosts can’t manipulate objects.)
Usage: mpdamage [target] [amount]
This command inflicts an amount of non-elemental based damage to the target. This damage is reduced normally by reducts like sanctuary, but elements play no part in the damage reduction. This damage can be inflicted in combat or outside of it, and can kill a target if it brings them beyond incapacitated.
mpdamage $n 10000
mpdamage $[mytarget] 500
mpdamage $i dmgamt
mpdamage $[myvictim] randomdmgvariable
SPECIAL NOTES: For obvious reasons use caution when dealing extreme amounts of damage. It is possible to have a mob kill itself with this command in order to create a corpse. This can be useful in some instances and is often preferable to mppurge when you want to get rid of a mob in a way that looks as if it was killed rather than erased from existence.
Usage: mpecho [text string]
Quite simply, the mpecho command sends a message to the room of the mob. This message can be anything you like, although it does not support ANSI colors. It does, however, support all of the character variables the mud uses, and can also use variables set by the mpsetvar command. This has a wide range of use, from setting background noise to a mob, to allowing the mob to express itself safely as if speaking. The mpecho command does not set off speech_progs, although it does set off act_progs.
mpecho $I says, ‘Hey how’s it going?’
mpecho A blast of strong wind rushes into the room suddenly!
mpecho $I hisses, ‘So, $[adventurer], you’ve come to face me…’
mpecho A dagger flashes into $I’s hand, and $j snickers softly.
SPECIAL NOTES: Using mpecho $I says, ‘blah’ is a safe way to have a mob talk. Anytime you want to have a mob say something, you should use this, unless you want it to trigger speech_progs. Also, remember that whatever is mpechoed is seen be everyone in the room exactly the same. So if you want a message that targets a specific person, see the mpechoat and mpechoaround commands. The reason you cannot use ANSI in mpecho is because the ANSI codes ($Rred, $Ryel, etc) use the same $R that the mobprog code takes to mean the name and title of the “random” character variable.
Usage: mpechoaround [target] [text string]
This command is similar to the mpecho command, but instead of echoing to everyone in the room, can be used to echo to everyone BUT the targeted person. Why would you do this? If used in conjunction with the mpechoat command, you can create text strings which look right to everyone involved. The way to make mpechoaround do this is to use the mpat command. If you don’t use the mpat command first, this command will function exactly like mpecho. Compare the below examples to the examples shown in mpechoat.
mpechoaround $n You hear voices speaking all around you.
mpat $n mpechoaround $n $N cringes as a poisoned dart strikes $s chest!
mpat $n mpechoaround $n A pile of rocks rains down upon $n!
mpat $n mpechoaround $n A circle of light surrounds $n, and then $e vanishes.
SPECIAL NOTES: Just remember that to use this command correctly it must be used in conjunction with the mpat command.
Usage: mpechoat [target] [text string]
This command functions similar to the mpecho command, but can be used in such a way that only the targeted person sees the text string. This is useful for cutting down on spam from greet_prog mpechos, for example, as well as personalizing the text string for all parties involved in conjunction with the mpechoaround command. In order to get mpechoat to work in this way, you must first use the mpat command. Compare the examples below to the examples shown in the mpechoaround command description.
mpechoat $n You hear voices speaking all around you.
mpat $n mpechoat $n You cringe as a poisoned dart strikes you in the chest!
mpat $n mpechoat $n A pile of rocks rains down upon you!
mpat $n mpechoat $n A circle of light surrounds you, and you are transported.
SPECIAL NOTES: Just remember that to use this command correctly it must be used in conjunction with the mpat command.
Usage: mpechonpc [text string]
This command functions similar to the mpecho command, but the message echoed is only seen by mobs and never by players. This is a useful way to have mobs trigger one another without players being able to see the message displayed or even being aware the echo is even happening.
mpechonpc Guards! There is an intruder!
mpat $n mpechonpc The victim is in this room!
mpechonpc All clear, return to the guard post.
mpechonpc $I jumps up and down throwing a fit! Bad mobs!
SPECIAL NOTES: Note that this command is for issuing an mpecho that only mobs can see in a room. All mobs that are in the room will see this message, and if you want to target one specific mob you should use mpechoat instead of this command. See also mpechonpczone.
Usage: mpechonpczone [text string]
This command functions similar to the mpechonpc command, but the message echoed is only seen by mobs, not seen by players, and is echoed zonewide. Every mob in the zone that this command is issued in will see the echoed message, and so this is useful for triggering zonewide events. Again, players will never see this message.
mpechonpczone The zone has reset.
mpat 10000 mpechonpczone Can you here me now?
mpechonpc Everyone go kill $[intruder] now.
mpechonpc $I is dead.
SPECIAL NOTES: Note that this command is for issuing an mpecho that only mobs can see in an entire zone. All mobs that are in the zone will see this message, and if you only want a room of mobs to see it, use mpechonpc, or if you want to target one specific mob you should use mpechoat instead of this command.
Usage: mpechoworld [text string]
This command functions similar to the mpecho command, but the message echoed is seen by all mobs and players in every zone in the world. This is useful for announcing spectacular occurrences and the like, but should be used sparingly for obvious reasons. This message can be anything you like, although it does not support ANSI colors. It does, however, support all of the character variables the mud uses, and can also use variables set by the mpsetvar command. The mpechoworld command does not set off speech_progs, although it does set off act_progs.
mpechoworld A storm gathers over the world, and it begins to rain blood.
mpechoworld A surge of energy blasts through the land towards the dias where $n stands!
SPECIAL NOTES: The reason you cannot use ANSI in mpechoworld is because the ANSI codes ($Rred, $Ryel, etc) use the same $R that the mobprog code takes to mean the name and title of the “random” character variable. This command should be used rarely, and is subject to administrative control.
Usage: mpechozone [text string]
This command functions similar to the mpecho command, but the message echoed is seen by all mobs and players in the zone the mob is acting in. This is useful for announcing zonewide messages and events. This message can be anything you like, although it does not support ANSI colors. It does, however, support all of the character variables the mud uses, and can also use variables set by the mpsetvar command. The mpechoworld command does not set off speech_progs, although it does set off act_progs.
mpechozone An avalanche thunders down the side of the mountain!
mpechozone $[thewinner] has defeated the three-headed ogre!
mpat 10001 mpechozone Far to the north, a cloud of insects begins to swarm…
SPECIAL NOTES: The reason you cannot use ANSI in mpechozone is because the ANSI codes ($Rred, $Ryel, etc) use the same $R that the mobprog code takes to mean the name and title of the “random” character variable. This command should be used tastefully, keeping in mind that being pestered by rand_prog mpechozone messages every fifteen seconds is sure to get annoying quickly.
Usage: mpexp [target] [exp amount]
This command gives an amount of experience to the target, and gives the same amount of experience to each member of the target’s group who is in the room with the target. This amount is capped by level for those who are lower level, and caps at 100k for non-transed, 50k for transed, and 25k for multiclassed characters. This is a useful command to use to award players for completing in zone quests, etc. that you have set up. If you want to award more experience than the capped amount, you can have the mob give several experience awards in a row. It is best when you award an experience award to give some sort of message to the player about why they are receiving the award.
mpexp $n 100000
mpexp $n 75000
mpexp $[adventurer] 50000
mpexp $n 500
SPECIAL NOTES: Giving experience to mobs is worthless, as you might expect. Players can level off of these experience awards, just as if they had killed something. Be careful with this command. You don’t want to give out awards for every little thing characters do, nor do you want to give large awards for menial tasks. You also will, of course, not want to make it so a mob can accidentally give the same award over and over endlessly, or something equally abusable.
Usage: mpforce [target] [command]
This command forces the victim to do the designated command. The target can be a character variable or a keyword of a mob. The mob can also mpforce all, in which case every player in the room will be forced to do the command. This command has a lot of uses, but is mostly used in combat to do particularly nasty things, like force the player to heal the mob, etc. It can also be used to trigger other mobs by forcing them to perform a specific action that triggers an act_prog, for example.
mpforce $n flee
mpforce all sleep
mpforce xxxguardtwoxxx poke self
mpforce $n weave ‘heal serious’ giant
SPECIAL NOTES: Remember that whatever you force something to do, it needs to be typed out exactly as if they were typing the command themselves. That means if you want a player, for example, to be forced to weave ‘heal serious’ on your mob, you need to mpforce them to weave it on the mob name, not $i or me, etc. What that also means is you cannot mpforce a mob in the room with your mob to kill $n, for example, because the other mob might not necessarily know who $n is. You can, however, mpforce the mob to assist your mob, rescue, etc.
Usage: mpforce followersof [target] [-options] [command]
This command is a variation of the mpforce command that forces the followers of the targeted group leader to take a specific action. The target can be a character variable or a keyword of a mob. The options field can be filled with the following arguments:
The –minpos option will require the followers of the target to be in a minimum position to be forced to perform the action (such as standing, sitting, sleeping). The followers must be in this position or “higher” (see the FAQ section for the list of positions and their hierarchy). The –world option will cause the followers of the target to be forced to perform the command even if they are not in the same room as the mob or the target.
mpforce followersof $n -minpos standing enter portal
mpforce followersof $[myvictim] –world puke
mpforce followersof rabbit bounce
mpforce followersof $i –minpos fighting –world flee
SPECIAL NOTES: See the notes on mpforce for additional information.
Usage: mpgoto [destination]
Quite simply, this command will move the mob to the designated location. The destination can be a room vnum, character variable, or keyword of a mob. There is no message given to this command, so if you want there to be one, you need to include an mpecho in your mobprog. This command is a good way to move your mob around your zone should you need to.
SPECIAL NOTES: You must be very, very careful if you choose to use mpgoto to go to a character variable like $n. Remember that it is very possible that a player might recall or die while interacting with the mob, and the mob may very well end up mpgotoing $n, who is now in town! This is bad. Using the $# character variable, which uses the unique id of the mob or player referenced, is a safer way to handle the situation, but of course you still must be careful about huge deadly mobs mpgotoing to town and killing people and that sort of thing.
Usage: mpjunk [object]
This command destroys the object that the mob is referring to. The object must be in the mob’s inventory or part of its equipment. You can also have a mob mpjunk all, which destroys everything on their person. You can also do things such as mpjunk all.sword or mpjunk all.bread, and can use the character variable $o. The command gives no message about its use, so it is a good way to secretly handle the junking of items. It is useful for getting rid of quest items given to the mob for give_progs, or if you have more complicated mobs where you must perform some sort of action in order to get its equipment, for example.
SPECIAL NOTES: This command is very good for give_progs where you want to destroy the thing given so it can load again or not be used again by the same people. It is a good idea to give quest objects like that unique keywords so there is no mistaking what the mob is mpjunking.
Usage: mpkill [victim]
This command basically causes the mob to attack the victim. The only real benefit of using this command is if your mob is low level or attacking something which it is required to ‘murder.’ Other than that, there is no difference between this command and say, kill, murder, hit, etc.
SPECIAL NOTES: Really, this command doesn’t get used much. It was built for other MUD’s which might have level requirements for kill, etc. You can use it, but it more or less works exactly the same as kill, murder, hit, etc.
Usage: mpmload [vnum]
This command loads the mob designated by vnum into the room. If you want the mob loaded somewhere besides the room the mpmloading mob is located, you’ll need to use the mpat command. This command gives no message to the world, so if you want one, you’ll use the mpecho command. This command is useful for loading mobs to assist the calling mob in combat, load in-zone quest mobs, etc.
mpat $n mpmload 10024
mpat 1145 mpmload 1104
SPECIAL NOTES: Remember that this newly loaded mob may not have interacted with the world just yet, so having your mob, for example, mpforce it to kill $n will not work, since the new mob has no idea who $n is. It is also not advisable to have a mob load up copies of itself that also may load copies of themselves. If you want to have, for instance, a mob that loads another copy of itself at death, consider ways of checking this so the process is not infinite. Common solutions would be a reduced percentage chance of reloading itself or simply another vnum mob with the same description but lacking the mpmload prog.
Usage: mpoload [vnum]
This command loads an object of the designated vnum into the inventory of the mob, or if the object is not takable, into the room. If you want to load a non-takable object in another room, you will have to use the mpat command. This command gives no message to the world, so if you want one you’ll have to use the mpecho command. This command is very useful for loading in-zone quest objects, mob pelts, portals, etc. It has many, many uses.
mpat 10056 mpoload 10095
mpat 1252 mpoload 1256
SPECIAL NOTES: You can do a lot with this command. There is no max on objects loaded in this way, so keep that in mind. Using this command along with the mppurge command can create shifting portals and the like.
This command works only inside command_prog and special_prog. When this command is encountered inside these mobprogs, the command that the player entered to trigger these mobprogs will be allowed to resume as normal. For instance, >special_prog north would normally stop the command “north” from being processed and instead run whatever was inside of the mobprog. If an mppunt is encountered inside of it, the command “north” would resume as normal.
SPECIAL NOTES: You can have an mppunt anywhere inside of a mobprog and the command normally suppressed will continue. This means you can create special circumstances where a command is allowed in some cases and not in others, or perform a set of commands before allowing a player to continue on their way with whatever they were trying to do.
Usage: mppurge [argument]
This command destroys the argument in the room with the mob. This argument can be a mob keyword, object keyword, character variable, or self. If no argument is given, then the mob clears the room of all mobs and objects in the room except itself. If you are going to have a mob mppurge itself, it must be the last command the mob does, or bad things will happen. Also, never ever mppurge self as part of a death_prog. This is a very useful command. With it you can destroy charmed mobs, switch portals and the like, and clear out mobs and objects you may have loaded.
SPECIAL NOTES: It is a good idea to have unique keywords for mobs and objects you are sure you are going to be mppurging. That way there is no mistake what you are trying to mppurge. Also, you should avoid mppurging players, as it basically causes them to be ejected from the game and their equipment to be dropped upon the ground. Use this command for mobs that set up special quests and then go away, so each zone reset you’ll have a fresh zone for adventurers to pillage.
Usage: mppush [command]
This command is very similar to mpadd. Basically, it places whatever command follows it in a queue. This makes mobprogs more stable and ensures that every command is referenced and completed. The difference between mpadd and mppush is that mppush will wait two seconds before completing the command. This is useful for mobs that you want to talk more slowly and realistically. You can combine mppushs and mpadds in the same mobprog, so some commands will be done right away and others stalled. The danger of doing this is that sometimes certain commands can get skipped, although this rare. You should never mppush the mpsetvar command or use it in death_progs or hitprcnt_progs.
mppush open door
mppush mpecho $I says, ‘It has been a long time since I have seen daylight…’
mppush weave ‘fireball’ $n
SPECIAL NOTES: You should pretty much use mppush if you want your commands to take a little time before going through, and never use them in death_progs or hitprcnt_progs. Also, mpadd or mppush should be the first command in a line, so it would be “mppush mpat $n mpecho A bird sings here.” and not “mpat $n mppush mpecho A bird sings here.”
Usage: mpset [victim] [field] [value]
This command sets certain fields of a victim to whatever values you want. The fields that can be affected by a mob include maxhit, maxmana,maxmove, hit, mana, move, align, str, dex, int, wis, con, cha, ac, gold, bank, exp, hitroll, damroll, level, class, race, attacks, height, weight, sex, drunk, hunger, thirst, perm affects and more. Obviously you aren’t going to want to do some of these to players. In fact, the only fields you should ever manipulate on a player character are hit, mana, move, align, and gold. These are the only fields that are safe to manipulate on PC’s. This command is incredibly useful, and can be used to set permanent affects on your mob, alter stats of a mob, etc.
mpset $n hit $(-(stat(var("actor"),"hit"),25))
mpset me con $(+(stat(var(“me”),”con”),1))
mpset me perm fshield
mpset xxxguardsevenxxx cha 22
SPECIAL NOTES: Be very careful with this command when dealing with players. If used poorly it can cause bad things to happen to them, so make sure you have good checks to ensure they get affected correctly and fairly. When a mob sets itself a perm affect (for example, mpset me perm vshroud), that affect CAN NOT be removed from the mob when mpunaff or dispel magic is used upon it. They remain permanent. They can be removed by mpsetting the affect again and therefore turning it off.
Usage: mpsetvar [target] [-options] [variable name] [value]
This command creates a variable for a target and stores a value in it. For more information on how to use variables, see the Fun With Variables section of this tutorial. Never mpadd or mppush an mpsetvar command, or the mpsetvar will never work. You can mpsetvar any name that you choose to, and the value can be a specific text string, an integer, or an expanded character variable. The target has to be a mob, but can be either me or $i, or the keyword of another mob. The –options field may be filled with the following arguments:
Using the –delete option will erase the variable completely from the mob or mobs storing it. When using the –delete option, you should not include a value. See the examples below.
mpsetvar me bugcount 1
mpsetvar xxxfrogboyxxx myvictim “The guard”
mpsetvar me myvictim var-actor
mpsetvar $i bugcount $(+(var-bugcount,1))
mpsetvar me –delete myvictim
mpsetvar me –delete @^thekiller
SPECIAL NOTES: Variables rock. You can do almost anything you ever wanted to do once you get the hang of them. The Fun With Variables section of this tutorial is a great resource to get you on the right track with using them.
Usage: mpslay [target]
This command utterly kills whatever is targeted by the command. There is no chance of the target surviving when this command is used, so it should be used carefully and conservatively. The command works on both mobs and players. The command is useful for triggering death progs on mobs with other mobs, and also for making death trap situations for players. This command does not work in combat, so often mpdamage is more efficient if you are expecting combat to be a problem. Unlike mpdamage, mpslay works in no_violence rooms.
SPECIAL NOTES: Don't confuse this command with mpkill. Mpslay is incredibly powerful and thus must be used with great caution. Consider using this command only in situations where players face the punishment of death for failing to do something correctly, and only in the most extreme zones. Mpslay can also be helpful for intricate systems of mob triggers.
Usage: mptransfer [victim] [destination]
This command sends the victim to a designated destination. The victim can be either a mob keyword or a character variable. The destination can be a room vnum, a mob keyword, or a character variable. If there is no destination given, the mob transfers the victim to the same room that it is in. There is no message given to this command, so if you want there to be one, you need to include an mpecho in your mobprog. This command is a good way to move players around your zone or into other zones. Using mptransfer all will teleport all mobs and players to the destination specified with exception of the mob issuing the mptransfer command.
mptransfer $n 10049
mptransfer xxxguardeightxxx 1252
mptransfer xxxguardtenxxx $n
mptransfer all 10001
SPECIAL NOTES: You need to be careful with this command. First of all, you should never transfer a normal character variable that is a mob. Why not? Because you may actually end up transferring a different mob entirely with a keyword that is the same. You can mptransfer mobs if they have unique keywords or if you use the $# syntax which uses the player or mob’s unique id number to target them. Also, be sure to be careful about mptransfering mobs to players. If a player recalls or dies, you will end up transferring a mob into town.
Usage: mpunaffect [target]
This command removes all spells in the affect list of the mob or player targeted. This does not remove permanent affects, but only spells that have been woven on the target. This is a safe way for a mob to dispel itself of magical spells without removing permanent affects or using magic to do so. It also is an effective way, without using spells, to remove the spells of a player.
SPECIAL NOTES: This is an easier way than using ‘dispel magic’ to remove spells, and safe to use on a mob without it losing all of its natural properties. Using mpunaffect is useful for ‘curing’ a mob of the ailments players often place upon them, especially instances where a mob may be affected by a spell that would mess up other mobprogs when they are called – for instance, if a mob is blinded by a player and needs to open a door, or has been silenced and needs to shout something. The command has combat uses as well of course, but should be used conservatively in this regard, as there is no defense against it.