By Thalen
Commands covered: mcreate, mindex, mset, mload, mfind, mwhere, mstat, mpurge, alisten, mcount, bmlist, bmwhere, moblist, praclist
Mobs can be one of the more frustrating parts of building an area. It can (almost always will in fact) make or break an area. A REALLY good area has a perfect blend of layout, descriptions, mobs and objects, but the main reason most people go into an area is for the mobs.
One thing to keep in mind when making mobs; you want the mobs to be worth killing in the level range the area is intended for, but you don't want to make the mobs worth too much experience for how hard they are to kill...sure, players would LOVE that, but it will cause problems. You need to balance things as best you can. If the mobs are too hard or too low in experience points, no one will go there, and if they're too easy for the experience, the whole area will be looked at as a joke. In the appropriate places below I'll try to give a few guidelines on what certain stats should be at various levels (as a guideline, not a rule).
As with the room commands, it is STRONGLY recommended that you be standing in the area of the mob you are editing when doing so. Not following this advice will lead to uncertain results.
Also, before you get too far into creating mobs, I'll remind you of one of the commands in the rooms section, which you should be using quite frequently...SAREA SAVE - you must be standing in the area you want saved, then type this and you won't lose all your work in the event of a crash...
MCREATE
Creates a new mob and mob vnum
mcreate <vnum>
You have to supply a vnum for this to work...use mindex <vnum> show to see if a vnum has been used. The result will be a blank mob listing that you can then edit as needed (no mob will load when you use mcreate, although they used to do that).
IMPORTANT: Be sure to use vnums in the range of the area you're working on, or things could get REALLY ugly. Well, a little ugly anyway. If you try to MCREATE an existing vnum, it will let you know that you can't do that, so you can't overwrite an existing mob this way.
ALSO IMPORTANT: You MUST be standing in the area you want the mob to load in when you use this command, or the vnum for that mob will be associated with the area you ARE standing in, which will lead to people getting very testy and may lead to you having to delete the mob and start over from scratch. (there is a way to move the mob, but few people know how, and it's a buggy command, so best if you just don't go there...)
MINDEX
Sets (almost) all the stats for mobs
mindex <vnum-of-mobile> <command> <argument>
Sets various things concerning mobiles. This command doesn't do mprogs (although they are added with this command once they are written). This is a long one, but I'll summarize at the end.
Typing mindex will give you a brief listing of all the possible mindex settings.
<command> is one of the following:
'show'
mindex <vnum> show
This gives a listing of the various stats of the mob. All of the things you can edit with mindex are listed. This should be used to verify that what you THINK you're doing is what you actually are doing (and there are times when the mud doesn’t want to add what you put....more on that later) An example of this would be:
<prompt> min 705 show<min is short for mindex, which also works>Vnum: 705 Name: ultimate warrior Area: { All } Quebec-Cobra Short descr: the Ultimate Warrior Long descr: The Ultimate Warrior is here, guarding the Royal doors. Description: This is one really great warrior, considering the time and energy he has spent developing himself. He is heavy, strong, and yet agile in fights. He has beaten any warrior who tried to take him. The Ultimate warrior seems to be one of the greatest heroes on this world. He's a real machine of war. Count: 1 Killed: 0 Sex: 1 Ac: -500 Hitroll: 500 Damroll 2d2+750 Hp: 50d50+25000 Level: 100 Act: 820227 Affected_by: 764 Gold: 4 Alignment: 150 Mobile has spec fun Profier: 416 Trainer1: 384 Trainer2: 2 Spec Fun: spec_executioner. [ 0] Trigger [give ] Program [17403] Phrase [ALL] (give-frep prog) [ 1] Trigger [speech ] Program [ 705] Phrase [xxxxxx] (ult_war lys access) [ 2] Trigger [fight ] Program [ 703] Phrase [xx] (ult_war xxxxxx) [ 3] Trigger [fight ] Program [ 702] Phrase [xx] (ult_war xxxxxx)
This is a listing of the mindex for the Ultimate Warrior in Quebec. As you read through the various settings below, you can reference this. Note the last 4 lines, which show some details of the mob programs he has working (some of the details have been xxxx'd out...) I won't go through mprogs here, they're included just so you'll recognize them when you run across them. If you don't understand all of what is there, don't worry...neither do I.
'area'
This is used to change the area that a mob is associated with. You probably won't need this unless break the 'standing in the right area' rule above. Before using this, talk to me or an experienced builder, as it can get very ugly very fast, and it's not all that simple to get right.
'spec'
This is used to add special mob procedures, found in flist 13. These are hard-coded programs such as the spec_guard that assists in fights, the spec_breath functions that make mobs cast breath spells, etc. Only one can be added per mob. The syntax for adding the guard function would be
mindex <vnum> spec spec_guard
If you need more complicated programs than the ones listen in the flist 13 command, you'll need to have a mprog added, and for that...don't ask me. I'll add help pages on mprogs as soon as I learn them.
To remove an existing spec function, type:
mindex <vnum> spec clear
'name'
This gives the mob its keywords. These don't display normally, but can be seen with the glance command.
We've changed the code so that mobs can have the same keyword as a player's name, so there is no worry any more about locking a player out with a badly chosen keyword. Everything after the word name will be included as a separate keyword on the mob
mindex <vnum> name ultimate warrior
'short'
This is the description you see when you scan near a mob, as well as the description you see when fighting the mob. Keep this short most of the time.
Your hit DISEMBOWELS the wandering dragon! The wandering dragon parries your attack.For this mob, the command would be
mindex <vnum> short the wandering dragon
Quotes are no longer needed for these, and capitalize/punctuate exactly as you want it to be displayed (the mud seems to know when to capitalize at the beginning of sentences, so don't worry about that).
'long'
This is the description you see when you type look in a room with the mob.
mindex <vnum> long The Ultimate Warrior is here, guarding the Royal doors.
The Ultimate Warrior is here, guarding the Royal doors.Note that the auras are added by the mud, don't worry about them. Capitalize and punctuate this as you would like it to be seen. Also, don't make this too long, as the description will need to wrap to another line if it gets over 80 characters, and that includes all the auras. Sometimes it's not avoidable, but try your best.
'desc'
This is the description you get when you look at the mob. You can add it as one big line, but it's probably best to use the built-in editor here.
mindex <vnum> desc edit
Edit throws you into the same editor that you get when writing notes, and gives you whatever description the mob already has as a starting point. You can add, delete, or change anything from there. Get to know the ins and outs of this editor, it will make your life a lot easier.
'vnum'
Might have been used to change a mobs vnum at one time, but I'm not sure. At any rate, leave this one alone, the results are not guaranteed.
'count'
Can be used to set the count number of the mob, maybe. It wouldn't make sense that you could, because count is a list of the number of that mob on the mud, so again, don't mess with it.
'killed'
The count of the number of things this mob has killed. Don't set this one either, it's not used for anything.
'sex'
1=male, 2=female, 3=neutral. See flist 4 for this...you can also use the words if you don't remember the numbers.
'level'
Sets the average level of the mob. The mob will load within a few levels of this number. Don't use 0, and refrain from using anything much higher than 100 without checking.
'act'
This sets the special actions of the mob, found in flist 1. These are mostly things that are neutral, such as making the mob sentinel, a trainer / blacksmith, etc. A few affect the way a mob acts though... You will almost always set the act flag on a mob, and it's good practice to always set the stay area flag (to keep the mob from wandering out of the area). If you don't set this, the default value will be 1, which simply makes the mob a mob (see below).
This is the first example of something you can set on a mob in groups...you can have none, one, or all of the acts working on a mob. If you want to just add one, use the act keyword:
mindex <vnum> act sentinel
If, however, you want more than one, you need to add up the numeric values to get the right action. From the flist command:(npc) 1 sentinel 2 scavenger scavenge 4 aggressive aggro 32 stay area 64 wimpy wimp flee 128 trainer train 512 practicer practice 1024 no_push 2048 repair 4096(the rest deleted for brevity...see the page on flists for more info)
Each value is a power of 2, which means that no two combinations of numbers you add up can be the same as any other combination...ok, just trust me on that one. So, from the above, if you want the mob to be sentinel (2), aggro (32), and for it to stay in it's own area (64), you would add 2+32+64 AND make sure to add the 1 for npc (non-player character, which means a mob), which totals 99:
mindex <vnum> act 99
This is one of those values that I mentioned above; sometimes the mud doesn't seem to like what you enter here. When adding an act, ALWAYS check to see that the mob took the value you wanted. If you have troubles getting the number to stick, try setting the act value to 1 first, then to the number you want...this seems to work most of the time. Use mindex <vnum> show to check.
'affected'
This is just like the act flag above, but it mostly sets the spells and conditions for the mob. The listing is in flist 2, and includes things like sanctuary, hidden, detection spells, and the like. As above, you can use the keywords from the flist 2 listing for just one of these settings, or add up the numbers to give the mob more than one. This setting isn't always used, and there is no default setting (like the npc act flag above), so if you don't set this, the default is 0, which is fine. You must spell out 'affected' for this to work:
mindex <vnum> affected 128
'alig'
Sets the mob's alignment, which affects a player's alignment change when killing the mob. It might also change the behavior of the mob if certain specs are added, so use this in a way that makes sense. The default is 0, and you should NEVER set the align higher than 1000 or less than –1000. Few mobs should come close to either of those numbers unless it makes sense, so try not to overdo it. Note that you must use 'alig' and not 'align' for some reason...
mindex <vnum> alig -500
'gold'
Sets the amount of gold carried by a mob.
'hitroll'
Sets the 'to hit' variable, determining how likely a mob is to connect with any given attack. This is one of those settings that can make or break a mob (although less so than dam roll or hit points). As a GENERAL rule, try to make the hitroll setting ROUGHLY around the same as their level on average...more for really tough mobs, less for simpler mobs. Mesh this with DR and HP to find a blend that does what you want it to...for a mob that you can kill, but takes a long time, decrease the hitroll and increase the HP....etc. The hitroll number is a straight setting (as opposed to DR and HP below), simply put in the value:
mindex <vnum> hitroll 40
'dam'
Damage roll is how hard a mob hits when he connects. As with hitroll, the damroll should usually be roughly about the same as the level of the mob. Maybe. Use that as a guideline, and adjust as needed (see hitroll). Damroll is expressed as a range, taken straight out of the game 'Dungeons and Dragons', expressed as a number of dice with a number of sides each, plus a static value. For example, '3d6+10' would mean the value here will be a random amount as if you'd thrown 3 dice that had 6 sides, and added 10 to that value. This gives a range of 13-46, moderately weighted around the average value of 20.5. Statistics play a big roll here...1d10+10 has an equal change of any number from 11-21, while 100d3+10 COULD be anywhere between 110 and 310, but on average is going to be very close to 210.
This range and odds factoring is very important, especially at the lower levels. The difference in a level 10 player fighting a mob with a 10 dam vs. fighting the same mob with a 20 dam is very large, so you wouldn't want to necessarily make a mob that could have that range of damage. I'd use something like 1d3+10, so that the range encountered would be fairly small. As the levels get higher, a range of 10 or 20 dam might not be that big a deal, so you can let in more variance as the levels get higher.
The dam component of a mob must be entered in this XdY+Z format, although 0 could be used as a variable if you are so inclined.
mindex <vnum> dam 3d10+50
'hp'
Somehow this didn't get added into the help file...HP (hit points) works just like dam, in that you add them in as a dice throw (XdY+Z). As a general rule, I like to try to set the HP of a mob at approximately the square of the level (100 hp for level 10, 2500 hp for level 50, etc.) The actual value of HP on mobs in the mud varies greatly, however, and I know that below level 20 or so you should make the number somewhat smaller, and around level 100 it's common to have quite a bit more. The best thing to do is to check a few mobs that are the level you are building for, and see what they have. You'll see quite a variety, and the settings for hitroll and dam can change what a good setting for HP is for any specific mob...have fun, I always do :P
As with dam, you don’t probably want to have a large range of HP for any particular mob, but some variance is a good thing. Ranging 10% +/- isn't ever bad, 50% is usually frightening...use your best judgement. The hp are added like this:
mindex <vnum> hp 10d100+7000
'ac'
Another one the help file missed...a straightforward setting, ranging from 100 to –500. If you want to make it simple, take a straight range from ac 100 at level 1 to ac –500 at level 100, and interpolate (that comes to 6 ac per level, so take level * 6 and subtract from 100...level 50 would be 50*6 (300), 100-300 = ac –200. This will get you close, adjust from there as you see fit (and to fit the mob...and remember, armor will change this setting if the mob wears any).
mindex <vnum> ac -200
'listen'
Listens can be added here, or with the alisten command. The listen is added as a single line of text (although the length can make it wrap onto more than one line). If you want something complicated, you might want to consider a mprog, but for simple things, use this.
mindex <vnum> listen You don't WANT to listen to me...
Note that listening to the mob will have it use the say command to display the listen text. This can affect the text wrapping depending on what the mob's short desc is...
a really ugly, horrible, big, mean, nasty-looking beast of some kind says 'You don't WANT to listen to me...'
'shop'
The ugliest command known to building...the syntax for this command is:
mindex <vnum> shop t0 t1 t2 t3 t4 pb ps oh ch
t0 to t4 = what item types the shopkeeper buys (see the object building page for item type values)
pb = profit_buy 150 means shopkeeper will sell an item 150% of its value field.
ps = profit_sell 75 means a shopkeeper will buy an item 75% of its value field.
oh = open hour |
ch = close hour | range is 0 to 23 for bothFor t0-t4, use 0 to fill in any that aren't needed, and the object type number otherwise (wand = 3, weapon = 5...the list goes on)
pb (think of it as 'percent a player buys at' ) MUST always be 100 or more. The cost of an item is set by the value setting of the object. NOTE: if the shop tried to sell an item with 0 value, it won't show up on the 'list' command.
ps (think of it as 'percent the player can sell for') must NOT be more than 100, but don't make it too low. 75 is a good range. Note that a mob can't buy an item if he doesn't have the gold, so the gold setting should be reasonable, but don't make the mob too rich or abuse will follow.
oh and ch...think military time, 0 is midnight, 12 is noon. I'm not sure what happens when you set a shop to open and close at the same hour, so to make a shop sell as close to 24 hours a day as possible, use oh0 and ch23. If someone wants to experiment with this and let me know how to get a 24 hour shop, please do.
OK lets say you want a shop that buys weapons and wants, sells stuff for 110% of the object value, and buys at 80%, and is open from 7AM until 10PM (22 military hour). You would add the following miserable string:
mindex <vnum> shop 3 5 0 0 0 110 80 7 22
To REMOVE the shop flag, use
mindex <vnum> shop clear
OK I promised a summary, something you can print out on about one page and keep handy as a reference. When I first got this command, I printed out the help file, and I have been taking notes on that same page ever since. I'm hoping you can use the following in the same way. You can copy the text here into a word processor and print it out...that's probably the easiest way to get it all onto one page.
MINDEX
Syntax: mindex <vnum-of-mobile> <command> <argument>
Sets various things concerning mobiles.
<command> is one of the following:
'show' – to display settings
'area' – (DON'T USE)
'vnum' – (DON'T USE)
'count' – (DON'T USE)
'killed' – (DON'T USE)
'name' - keywords
'short' – glance / fight description
'long' – in-room 'look' description
'desc' – 'look at <mob> description (use 'desc edit')
'sex' – male, female, neutral
'level'
'alig' - alignment
'gold'
'hitroll' – roughly equals level
'dam' – XdY+Z – roughly equals level
'hp' – XdY+Z – roughly equals level squared
'ac' – roughly 100-(6*level)
'listen'
'act' – flist 1(how a mob behaves)
'affected' – flist 2 (what spells, etc affects the mob)
'spec' – flist 13 (remove with 'spec clear')
'shop' (shop t0 t1 t2 t3 t4 bp ps oh ch) (...shop 0 0 0 0 0 110 80 0 23)
t0 to t4 = what item types the shopkeeper buys (fill with 0's)
pb = profit_buy 150 means shopkeeper will sell at 150% of object's value field.
ps = profit_sell 75 means a shopkeeper will buy an item 75% of object's value field.
oh = open hour (0 (midnight) to 23 (11PM))
ch = close hour (0 (midnight) to 23 (11PM))
MSET
Mset is used to modify mobs after they are already loaded. It is also used to modify players, so it is a fairly high-level command. There are no functions that you can do with mset that can't be done with mindex, and there's really little need to modify a single mob in this way anyway.
MLOAD
Loads a copy of an existing mob in the room you're in.
mload <vnum>
This will create a copy of the mob in the room with you. It will not load any equipment, but all the settings and mob programs will be intact. You can use this along with the MSTAT command to check your work with MINDEX editing (sometimes mstat is easier to use than mindex show).
Please note: if you're doing this in an opened area, or when there might be players around, be careful what you load. Aggro mobs will immediately attack players, and they have a tendancy to wander off unless they're sentinel. More than one mortal has been killed in this way (I know, because I've killed more than one :P )
MFIND
Used to find mobs that have been created
mfind <keyword>
This searches the resets throughout the mud to locate any mobs that have the keyword you use as an argument. The output of the command is a list of vnums and their associated short description
<prompt> mfind bob [ 209] Bob [ 3080] Bob [ 6404] Little bobby [13201] Cavern guard [14233] A bobcat [20570] Bobeek the mercenary
Note that 'bob' will find 'bobby' 'bobcat' etc.
MWHERE
Used to find out where any instances of a particular mob are located on the mud.
mwhere <keyword/vnum>
This will give you the room vnum (and room name) of all the mobs that fit the keyword or vnum you enter. All instances of a matching mob are listed, in the location they are currently standing. If a mob has been killed, or has a vnum but hasn't been made to load anywhere, there will be no listing for it. And, if 250 of the mob are currently in the game, you get info on all 250!
<prompt> mwhere bob [13201] Cavern guard [13200] Entrance into the Cavern of the Wormskull. [13201] Cavern guard [13200] Entrance into the Cavern of the Wormskull. [20570] Bobeek the mercenary [20577] This room is dedicated to the letter K for Know Alignment [ 6404] little Bobby [ 6407] The Cotton Candy Vendor <prompt>mwhere 13201 [13201] Cavern guard [13200] Entrance into the Cavern of the Wormskull. [13201] Cavern guard [13200] Entrance into the Cavern of the Wormskull.
Note that you will always get the mob vnum and short description, as well as the room vnum and name in the listing.
MSTAT
This gives you a concise listing of most of the settings a mob has.
mstat <keyword>
You must use a keyword here, vnums don’t' work. The command will give you the stats of the fist mob currently on the mud (loaded) that meets that keyword. (You may have to mstat 2.bob, mstat 3.bob, etc. to get to the one you are looking for). Compare the mstat of the ultimate warrior below with the
<prompt> mstat ultimate Name: ultimate warrior. Short description: the Ultimate Warrior. Long description: The Ultimate Warrior is here, guarding the Royal doors. Vnum: 705. Sex: male. Room: 700. Str: 13. Int: 13. Wis: 13. Dex: 13. Con: 13. Luc: 13. Hp: 26013/26013. Mana: 100/ 100. Move: 150/ 150. Practices: 0. Lv: 99. Class: 0. Align: 150. AC: -500. Gold: 4. Exp: 26013. Hitroll: 514. Damroll: 774. Position: 7. Wimpy: 0. Fighting: (none). Carry number: 1. Carry weight: 60. Age: 19. Played: 0. Timer: 0. Act: 820227. Master: (none). Leader: (none). Affected by: detect_evil detect_invis detect_magic detect_hidden expless sanctuary infrared. Wait: 0. Mobile has spec fun. State of spec fun: spec_executioner.
A few things to note here...mstat puts periods at the end of things sometimes (like in the short desc...there is no period in the actual short desc, but in mstat it looks like there is). Also, what you're seeing for things like HP, dam, level, etc. are not what you put in with mindex, they're what the mob actually loaded with. It also shows both the current and max HP. And, as a bonus, the experience you can get for killing it is listed as well! The act value is shown, which isn't a great help, but the affected lists out all of the spells and such by name, which can be very helpful.
There are a few things there that are of no importance or are not really used (age, wait, played, timer). Ignore those. And there are a few things in mindex show that don't show up here. But both commands have their uses, as you'll learn when you get to know them both.
MPURGE
Deletes a mob from the mud.
mpurge <vnum>
This permanently deletes the vnum of the mob you list. This isn't used to remove a mob from loading at a particular location, it is used to remove it from the mud list of mobs available. THERE IS NO UNDO! This would be a REALLY bad place to typo...safer to remove the resets (see below) so the mob simply doesn't load anywhere, and leave the vnum as is.
ALISTEN
Adds a listen to a mob
alisten <vnum> <message>
Used similarly to the mindex <vnum> listen <message> command. In fact, it's identical.
MCOUNT
Gives a list of the number of mobs and players currently on the mud.
The Black Market
Generally, you won't use this much, but here it is...you set a mob as a black marketeer using the mindex command, it's one of the act functions. Beyond that, you're on your own, even I have never found the need to make one...more on that when I learn how...
There are a few commands specifically designed around the black marketeers. Most if not all of these are higher level commands, and you may not have access to them, but for reference:
BMWHERE
This gives a list of all the black marketeers, including their vnums and the room they are in.
BMLIST
This will give you a listing of all the objects that all the black marketeers sell, along with their costs.
Practicers/Profiers
This information is fairly confidential, and as such will again probably not be available when you first start building, but for reference:
PRACLIST
Lists all the practicers.
praclist <category>
PRACLIST by itself will give you a listing of all mobs that allow practicing/profi'ing and their vnums, along with a list of what categories of spells/skills they provide. Any of those categories can also be passed into the praclist command to give a list of just the mobs that have that category available. As far as what skills and spells can be found in each of the categories...that's an even bigger secret. It must be, because I'm not even sure how to find out...
That's about it. As you may have noticed, some information washes over from mobs to rooms to objects, so you really have to know a little about all of them before you can get proficient at any one of them.
Please note: When you're editing a mob, the mobs that have already loaded in the area will not be affected by any changes you make. Any NEW repops or mloads of the mob will have the changes intact. If you want to replace all the old mobs with the new ones, you'll have to find them and kill/purge them. Then using sarea save or update will repop the mobs with the new stats.