#AREA Builder~ #AUTHORS Scandum~ #VERSION 4 #RANGES 100 100 100 100 #OLC_RANGES 999999 0 #FLAGS AFLAG_NEWHELPS|AFLAG_CONVERTED #JUSTICE $ #HELPS 0 BUILDER OLC~ Builder Help File~ {000} {200} [{178}A{200}] {300}Guidelines {200} [{178}B{200}] {300}Builder Agreements {200} [{178}C{200}] {300}Grammar {200} [{178}D{200}] {300}The Game Editor {200} [{178}E{200}] {300}Mud Programs {200} [{178}F{200}] {300}Information Commands {a}OLCGUIDELINES {b}OLCTERMS {c}GRAMMAR {d}EDIT {e}MPROGS000 'MUD PROGS' {f}BUILDINFO ~ 0 BUILDINFO~ Builder Informational Commands~ The following commands are used to gain information about an area and its contents. These commands are available to the player(s) assigned the area, as well as all GMs: {a}ALIST {b}ASTAT {c}MLIST {d}MSTAT {e}MPSTAT {f}MWHERE OWHERE {g}OLIST {h}OSTAT {i}OPSTAT {j}RLIST {k}RSTAT {l}RPSTAT {m}WIZTIME ~ 0 OLCGUIDELINES~ OLC Guidelines~ {200}* {078}Don't walk around in other builder's areas without their permission. {200}* {078}Don't be annoying {200}* {078}Don't write programs that might harm the test mud's performance or crash it. {200}* {078}Don't use mpcommands or programs to enhance your immortal powers {200}* {078}The area's theme must fit in with the campaign theme of the mud. {200}* {078}Do not make references to the real world or situations, a few minor hints or satirical references in that direction are acceptable. {200}* {078}Write descriptive descriptions, where the main focus should always be to describe the room, object or mobile in question, and not any actions taking place in it, or emotions that go through the reader. Try to avoid using lines like 'A horrifying orc is here.' since that'd be a human point of view, and someone playing an orc character might feel differently. We suggest descs ranging from 3 to 5 lines of text. If you do not enjoy writing them, consider getting a soft builder to write them for you. {200}* {078}The area should have at least 1 good quest. If possible multiple quests. Also it's suggested to add some fun stuff, to liven things up, but don't make the mobs overly spamming. {200}* {078}The area shouldn't be a leveling machine, this means that the mobs shouldn't be lined up waiting to be butchered. You must enter some sort of element of surprise, or another obstacle in it. This includes limiting the amount of mobiles, even making them spawn only when a quest is active. {200}* {078}If your area does not meet up to this standard, you will be asked to edit it, or it will be edited for you. ~ 0 OLCTERMS~ olcterms~ {178} Builder Agreements {200}* {300}When creating an area for the mud you agree that the administration has the right to use and modify the area as we see fit. Your submission for an area to this mud is irrevocable. {200}* {300}You are credited with the creation of said area. And we will abide by an agreement to give credit where credit is due. If another creator builds the area joinly, or subsequently revises it, you will share the credit. {200}* {300}You also understand and agree that the admins are not responsible for the safekeeping or return of your area. You are solely responsible to keep a safe copy of your area for your subsequent use. You are not entitled to any subsequent revisions of the area done by others. {200}* {300}As this mud is a derivative of Diku and Merc, any areas created for it are also considered derivative code. YOU MAY NOT SELL, TRADE OR DISTRIBUTE YOUR AREA ELSEWHERE FOR PROFIT, else you will be in violation of the licenses for said code bases, as well as the Mud20 code. ~ 0 GRAMMAR~ Grammar Rules For The Unenlightened; Or, How To Write Goodly~ {300}Don't use no double negatives Don't never use no triple negatives. No sentence fragments Corollary: Complete sentences: important. Stamp out and eliminate redundancy. Avoid cliches like the plague. All generalizations are bad. Corollary: All statements must be specific. Never listen to advice. Take care that your verb and subject is in agreement. A preposition is a bad thing to end a sentence with. Down with categorical imperatives. Avoid those run-on sentences that just go on, and on, and on, they never stop, they just keep rambling, and you really wish the person would just shut up, but no, they just keep going, they're worse than the Energizer Bunny, they babble incessantly, and these sentences, they just never stop, they go on forever...if you get my drift... Never contradict yourself always. You should never use the second person. When dangling, watch your participles. Never go off on tangents, which are lines that intersect a curve at only one point and were discovered by Euclid, who lived in the sixth century, which was an era dominated by the Goths, who lived in what we now know as Poland... As Ralph Waldo Emerson once said, 'I hate quotations.' Excessive use of exclamation points can be disastrous!!!!! Remember to end each sentence with a period Don't use commas, which aren't necessary. Don't use question marks inappropriately? Don't be terse. Don't obfuscate your theses with extraneous verbiage. Never use that totally cool, radically groovy out-of-date slang. Avoid tumbling off the cliff of triteness into the black abyss of overused metaphors. Keep your ear to the grindstone, your nose to the ground, take the bull by the horns of a dilemma, and stop mixing your metaphors. Avoid those abysmally horrible, outrageously repellent exaggerations. Avoid any awful aggravating antediluvian alliterations. ~ 0 WIZTIME~ Wiztime~ {200}Syntax: wiztime [player] {078} WIZTIME echoes background processes as you execute them. With this mode active, you can see the execution time of each command you make, dice rolls and check results, as well as the lines of an executing mud program. An admin can set this mode for another player by targeting the player. ~ 0 EDIT~ The Game Editor~ {078}Mud20 features a complete menu-driven online editor, which allows you to create an entire area - mobiles, rooms, and objects. The same engine also allows for online creation and editing of races and deities for your setting. Using the EDIT command with the proper arguments opens all these possibilities. While in an editor, available options for any given editor field will be given by typing that editor field with no argument. For example, typing RACE with no argument in the Mobile Editor will pull up a list of available races. {000} {200} [{178}A{200}] {300}Editor Syntax Overview {200} [{178}B{200}] {300}Room Editor {200} [{178}C{200}] {300}Mobile Editor {200} [{178}D{200}] {300}Object Editor {200} [{178}E{200}] {300}Shop Editor {200} [{178}F{200}] {300}Inn Editor {200} [{178}G{200}] {300}Stable Editor {200} [{178}H{200}] {300}Help Editor {200} [{178}I{200}] {300}Area Editor {200} [{178}J{200}] {300}Reset Editor {200} [{178}K{200}] {300}Program Editor {200} [{178}L{200}] {300}Race Editor {200} [{178}M{200}] {300}God Editor {a}'EDITOR SYNTAX' {b}'ROOM EDITOR' {c}'MOBILE EDITOR' {d}'OBJECT EDITOR' {e}'SHOP EDITOR' {f}'INN EDITOR' {g}'STABLE EDITOR' {h}'HELP EDITOR' {i}'AREA EDITOR' {j}'RESET EDITOR' {l}'RACE EDITOR' {m}'GOD EDITOR' ~ 0 'EDITOR SYNTAX'~ Game Editor Syntax~ {078} Syntax: edit room [create|delete|dupe] [vnum] Activates the room editor Syntax: edit mob [create|delete|list] <vnum> Activates the mobile editor Syntax: edit obj [create|delete|list] <vnum> Activates the object editor Syntax: edit shop [create|delete|list] <vnum> Activates the shop editor Syntax: edit inn [create|delete|list] <vnum> Activates the inn editor Syntax: edit stable [create|delete|list] <vnum> Activates the stable editor Syntax: edit help [create|delete|list] <name> Activates the help editor Syntax: edit area [check|assign|list] [name] Activates the area editor Syntax: edit reset [vnum] Activates the resets editor Syntax: edit mprog [stat] <vnum> Activates the program editor Syntax: edit oprog [stat] <vnum> Activates the program editor Syntax: edit rprog [stat] <vnum> Activates the program editor Syntax: edit race <name> Activates the race editor Syntax: edit god <name> Activates the deity editor {-}EDIT ~ 0 'RESET EDITOR'~ Reset Editor~ {200}Syntax: edit reset [room vnum] {078} The reset editor allows you to set where objects, mobiles and other elements go in your area. Resets determine where items load at startup, and where they reappear at every area reset. Without an argument, the editor begins to edit the room you are in. You may optionally add the vnum of a room in your assigned area to edit it. Once you are in the editor, you have the options to: SET - Creates a new reset. Add the number of an existing reset to add other resets below it. DELETE - Deletes the reset number you target. LIST - Pulls up a list of the existing resets for the room you are editing. Using the < and > keys will switch to the previous or next room's reset list without having to exit the editor. Typing DONE exits the editor. {a}EDIT {b}'RESET TYPES' {c}INSTAROOM INSTAZONE ~ 0 'RESET TYPES'~ Types of Resets~ Each type of reset has a specific symtax. The different types of resets are: {200}Mobile: {078}Loads a mobile into the specified room vnum. {200}Object: {078}Loads an object into the specified room vnum. {200}Door: {078}Sets the open and/or locked state of a door in the specified direction. {200}Equip: {078}Loads an object onto a mobile reset, equipped in the specified wear location. This reset overrides any LoadEQ field on the same wear location for the mobile, in order to customize specific instances of the NPC. {200}Carry: {078}Loads an object onto a mobile reset, carried in its inventory. This would be where you would set a shopkeepers inventory as well. {200}Content: {078}Loads an object into a container object's reset {200}Trap: {078}Sets a trap onto an object or door reset. {-}EDIT {a}MOBILERESET {b}OBJRESET ~ 0 MOBILERESET~ Mobile Resets~ {200}Syntax: set mobile <index number> <mobile vnum> <percentage> {300} This reset will load the specified mobile vnum into the room you are editing. If you specify an existing reset index number, it will insert this reset to load before the targeted reset. The percentage is the chance that the mobile will load at startup and repop at each reset. {-}'RESET TYPES' {a}'RESET EDITOR' ~ 0 OBJRESET~ Object Resets~ {200}Syntax: set object <index number> <object vnum> <percentage> {300} This reset will load the specified object vnum into the room you are editing. If you specify an existing reset index number, it will insert this reset to load before the targeted reset. The percentage is the chance that the object will load at startup and repop at each reset. {-}'RESET TYPES' {a}'RESET EDITOR' ~ 0 DOORRESET~ Door Resets~ {200}Syntax: set door <index number> <direction> <open|close|lock> {300} This reset will set the closed and/or locked state of a door in the specified direction at each reset. If you specify an existing reset index number, it will insert this reset to load before the targeted reset. Door resets will not take place on a door that has been bashed or opened with the KNOCK spell, so long as players are in the area. {-}'RESET TYPES' {a}'RESET EDITOR' ~ 0 CARRYRESET~ Carry Resets~ {200}Syntax: set carry <mob index> <object vnum> <percentage> {300} This reset will load the specified object vnum onto a mobile. You must target an existing mobile reset's index number. The percentage is the chance that the object will load at startup and repop at each reset. {-}'RESET TYPES' {a}'RESET EDITOR' ~ 0 EQUIPRESET~ Carry Resets~ {200}Syntax: set carry <mob index> <object vnum> <percentage> <equip loc> {300} This reset will load the specified object vnum onto a mobile. You must target an existing mobile reset's index number. The percentage is the chance that the object will load at startup and repop at each reset. {-}'RESET TYPES' {a}LOADEQ {b}'RESET EDITOR' ~ 0 CONTENTRESET~ Content Resets~ {200}Syntax: set content <obj index> <object vnum> <percentage> {300} This reset will load the specified object vnum into a object. You must target an existing container object reset's index number. The percentage is the chance that the object will load at startup and repop at each reset. The object you place this reset into must be some sort of container, sheath, quiver, or spellpouch. {-}'RESET TYPES' {a}'RESET EDITOR' ~ 0 TRAPRESET~ Trap Resets~ {200}Syntax: set trap <obj or door index> <trap vnum> {300} This reset will set a trap upon an existing object or door reset. The trap will load armed and hidden from plain view. To control what triggers the trap, you should configure the trap object in the object editor before setting its reset. {-}'RESET TYPES' {a}'RESET EDITOR' {b}'OBJECT EDITOR' ~ 0 INSTAROOM INSTAZONE~ Instaroom & Instazone~ {200}Syntax: instaroom {200}Syntax: instazone {078} INSTAROOM and INSTAZONE provide an easy way to set the resets for an area. INSTAROOM reads all the current positions, placement and conditions of all the mobiles and objects in the room you are in, and installs resets for the room. Any objects equipped on a mobile become the mobile's equipment. Any objects carried by a mobile are reset as inventory items. Any objects placed in a container are reset in the container object. Door resets are made for the current state of any doors in the room. INSTAZONE does the same for the entire area, and installs the resets for the entire area. This is not always the best solution, however, as wandering NPCs will end up being reset wherever they currently stand. Note that any existing conflicting resets are overwritten. ~ 0 'HELP EDITOR'~ Help Editor~ {200}Syntax: edit help [create|delete] ['keyword'] Syntax: edit help <'keyword'> Syntax: edit help list ['area name'] {078} The room editor allows you to create, delete, or edit existing rooms using the editor menu. To select, create or delete a helpfile with a keyphrase (for example, MAGIC MISSILE), you must enclose the phrase in quotes. CREATE - Creates a new helpfile in the named area with the given keyword DELETE - Deletes the chosen helpfile. LIST - Pulls up a list of the existing helps in the area you are in. Admins can select any area to list the helps for that area. Typing DONE exits the editor, and saves the area the help file is in. Typing CANCEL exits the editor without saving the help; if you need to revert to the old help entry, you can do so with a COPYOVER. {a}EDIT {b}HCREATE {c}HLIST ~ 0 HLIST~ Hlist~ {200}Syntax: hlist [area name] {078} HLIST displays a list of all the helps for the named area. Leaving no argument lists the helps for the area you are presently in. It is a shortcut for typing the 'edit room list' command. ~ 0 HCREATE~ Creating a Helpfile~ {300}The settings for a helpfile include: {200}Keywords: {078}Enter any keywords or phrases that should trigger the help. Phrases must be enclosed in quotes, else they are entered as separate keywords. {200}Level: {078}The minimum level you must be to read a helpfile. This is usually set to 0, unless the helpfile is specifically for admins. If you create two helps of different levels with the same keywords, the highest level help available to the player will be triggered. {200}Title: {078}Sets the title of the helpfile. This title is displayed at the top of the displayed help, as well as on hyperlinks to the helpfile. {200}Desc: {078}Takes you to the text editor, where you can write the main body of the helpfile. Color codes here are highly restricted, and should be limited to accent color (200), text color (300), and boldface (178). {-}EDIT {b}'COLOR TAGS' ~ 0 'ROOM EDITOR'~ Room Editor~ {200}Syntax: edit room [create|delete] [vnum][vnum] Syntax: edit room [dupe] [vnum][vnum] Syntax: edit room <list> Syntax: edit room [vnum] {078} The room editor allows you to create, delete, or edit existing rooms using the editor menu. CREATE - Creates a new room. Not specifying a vnum after the command will use the next empty vnum in your asigned vnum range. A range of rooms can also be given, and multiple rooms in that range will be created. DELETE - Deletes the chosen room and all links to and contents in it. DUPE - Will duplicate the room you stand in to the vnum or vnum range given. LIST - Pulls up a list of the existing rooms in your assigned area. Typing EDIT ROOM with no argument edits the room you are presently in. {a}EDIT {b}RCREATE {c}RSTAT {d}RPSTAT {e}RLIST ~ 0 RLIST~ Rlist~ {200}Syntax: rlist {078} RLIST displays a list of all the rooms for the area you are in. It is a shortcut for typing the 'edit room list' command. ~ 0 RSTAT~ Rstat~ {200}Syntax: rstat [room vnum] {078} RSTAT shows you all the settings and stats for a given room vnum. Leave the vnum blank to give you the stats of the room you are in. ~ 0 RPSTAT~ Rpstat~ {200}Syntax: rpstat [room vnum] {078} RPSTAT lists the active mud programs for the room specified. Leaving the vnum blank will list the progs for the room you are in. ~ 0 RCREATE~ Creating a Room~ {300}The settings for a room include: {200}N,S,E,W,U,D: {078}Any cardinal direction will edit or create an exit in the given direction. (See below). {200}Name: {078}This is the name seen while standing in the room. Do NOT use color codes on a room name. {200}Desc: {078}Takes you to the text editor, where you can write the description of the room as it is seen when you stand in the room. Color codes may be used here, and are in fact encouraged as they may add to the feeling and flavor of a room. {200}Night: {078}Again places you in the text editor, and allows you to write another description that will be seen only at night. If you do not write a night description, then the normal description will be shown at night time. {200}Listen: {078}Allows you to write a description that is "heard", rather than seen when someone uses the LISTEN command, either inside the room, or from the next room when they listen in the direction of your room. {200}Sect: {078}Sets the room sector of the room. Pick the closest type of terrain that matches the room. See below for a menu of room sectors to pick. {200}Flags: {078}Sets the room flags for the room. Any or all of these flags may be set on the room, as appropriate. See the menu of room flags below. {200}ED: {078}Sets extra descs for the room, which display to someone who uses the LOOK command with the keyword(s) set for the desc. {-}EDIT {b}'SECTOR FLAGS' {c}'ROOM FLAGS' {d}'EXTRA DESCS' {e}'COLOR TAGS' {f}'EXIT FIELDS' ~ 0 'COLOR TAGS'~ Color Tags in Text~ {300}You can use color tags to add color to text. A tag is a 3 digit number enclosed in {}'s like so: {xxx}. The following colors are achieved using the following tags: {078}008 - Black on black text (ie, invisible) {078}108 - {108}Visible black text {078}018 - {018}Dark red {078}118 - {118}Bright red {078}028 - {028}Dark green {078}128 - {128}Bright green {078}038 - {038}Dark yellow (Brown) {078}138 - {138}Bright yellow {078}048 - {048}Dark blue {078}148 - {148}Bright blue {078}058 - {058}Dark magenta (Purple) {078}158 - {158}Bright magenta {078}068 - {068}Dark cyan {078}168 - {200}Bright cyan {078}078 - {078}Light grey {078}178 - {178}Bright white {078} You can also use 300, which will use the viewer's default text color. {a}EDIT ~ 0 'EXIT FIELDS'~ Editing Exits~ {200}Syntax: <direction> <link> <room number> [both] {200}Syntax: <direction> <delete> [both] {200}Syntax: <direction> <desc> <short description> {200}Syntax: <direction> <flag> <exit flags> {200}Syntax: <direction> <key> <key vnum|-2> {200}Syntax: <direction> <size> <size flag> {078} While in the room editor, you can type a direction to set, edit or delete exits from that room. The choices for fields you can edit are: <direction> LINK: Value is room vnum to link to. Add BOTH after the vnum to create an exit in the reverse direction in the other room. <direction> DELETE: Deletes the exit and all pointers to it. Add BOTH to delete the opposite exit from the other room. <direction> DESC: Follow with a short description a player sees when looking in the direction of the exit. <direction> NAME: Name for the exit (ex: double doors). <direction> FLAG: List exit flags here to toggle them on or off for the exit. <direction> KEY: Object vnum of key used to lock/unlock. Or use -2 for a door that can be locked/unlocked without a key (like a bar or latch). <direction> SIZE: If set, then a creature of larger than the door size cannot enter the door. <direction> CLIMBDC: If the CLIMB exit flag is set, this is the DC required to successfully climb to the next room. <direction> DIST: If the JUMP exit flag is set, then this is the distance that must be traversed with a jump check to cross the exit. If the CLIMB flag is set, then this is the distance up/down to the next room. {a}'ROOM EDITOR' {b}'EXIT FLAGS' ~ 0 'EXIT FLAGS'~ Exit Flags~ {300}The following are the possible flags for an exit, and the characteristics of each: {200}Isdoor: {078}The exit has a door that can be opened/closed. {200}Closed: {078}The door is presently closed. {200}Locked: {078}The door is locked, and must be unlocked to open. {200}Hidden: {078}Requires a Search check to locate. {200}Pickproof: {078}The lock of the door cannot be picked. {200}Bashproof: {078}The door cannot be bashed open. {200}Magicproof: {078}The door cannot be opened with a Knock spell. {200}Climb: {078}Requires a CLIMB check to get to the next room. {200}Jump: {078}Requires a JUMP check to go to the next room. {200}Fly: {078}You must be flying to reach the next room. {200}Barred: {078}Door is barred, adds +5 to bash DC. {200}Passproof: {078}Cannot be passed by incorporeal creatures. {200}Magical_lock: {078}Wizard locked door, +10 DC to bash, impossible to pick. {200}Easy_pick: {078}Very low DC to pick lock. {200}Hard_pick: {078}Higher DC than normal to pick lock. {200}Amazing_pick: {078}Almost impossible DC to pick lock. {200}Weak_door: {078}Thin, fragile door - base DC 13 to bash. {200}Heavy_door: {078}Base DC 23 to bash, versus 18. {200}Iron_door: {078}Thick metal door - base DC 28 to bash. {200}Window: {078}Door can be seen through. {a}'EXIT FIELDS' {b}'ROOM EDITOR' ~ 0 'EXTRA DESCS'~ Setting Extra Descs~ {200}Syntax: ed <keywords> {078} When you set an extra desc for a room, object or mobile, you choose one or more keywords that a player will LOOK at to view the description. For example, if the mobile is wearing a holy symbol, you might want to set a desc for that holy symbol for the player to look at. Once you've typed the ED command, followed by the keywords that will trigger the desc, you will be taken to the text editor to write the desc. When setting keywords, use logical words a player would use to look at. For multi-word phrases, use single quotes around the phrase. For example, the above mentioned holy symbol you might type "ed symbol holy 'holy symbol'." {a}EDIT ~ 0 'SECTOR FLAGS'~ Sector Flags~ {300}The following are the possible sector flags for a room, and the characteristics of each: {200}Inside: {078}An indoor, lighted room. Sheltered from weather. {200}City: {078}An outdoor, lighted street. Use for any outdoor lighted area. {200}Road: {078}An outdoor, non-lit area that is solid and heavily traveled. {200}Field: {078}Grassy, mostly level outdor area. Not lighted at night. {200}Forest: {078}Any wilderness area that is outdoors and overgrown. Would also be used for jungles, etc. {200}Hills: {078}Low altitude, vegitated, low incline areas, lowlands and foothills. {200}Mountain: {078}Mostly barren, high altitude, rocky terrain with steep inclines. {200}Lake: {078}Calm water that requires a swim check to traverse on foot. {200}River: {078}A river, stream, or other shallow water that does not require a swim check to traverse. {200}Ocean: {078}Very deep, turbulent water that requires a swim check with penalties to traverse without a boat or other vessel. {200}Air: {078}Any room without surrounding walls or floor that requires flight or other means to stay aloft and traverse. {200}Desert: {078}Any dry, arid area with little moisture, will require more checks for food and drink and survival skills. {200}Lava: {078}Fiery, molten areas that will deal damage to those not resistant. {200}Ethereal: {078}Ethereal plane - requires etherealness to traverse. {200}Astral: {078}Astral plane - requires astralness to traverse. {200}Underwater: {078}Requires Water Breathing or Aquatic type to avoid drowning. {200}Underground: {078}An indoor, barren area with rock on all sides. {200}Deep_earth: {078}An indoor barren area inaccessible to astral travel, like the Underdark. {200}Swamp: {078}Any soggy, damp, marsh-like area. {200}Beach: {078}A humid, sandy area near a body of water. {200}Tundra: {078}A cold, frozen area with ice and snow which deals cold damage to those not protected against the elements or resistant to cold. {200}Barren: {078}A low-lying, rocky area devoid of plant life. {a}EDIT {b}RCREATE ~ 0 'ROOM FLAGS'~ Room Flags~ {300}Any or all of these flags can be set on a room, and the room will take on the characteristics of the flag: {200}Indoors: {078}Sheltered from weather and cannot see the weather. {200}Dark: {078}Cannot see in the room without darkvision. {200}Fog: {078}Vision is partially obscured and misty, those in room have concealment with a 25% miss chance. {200}Nomob: {078}Mobiles will not wander into this room. Mobiles can still enter the room by a prog, as can guards responding to trouble. {200}Noastral: {078}No one can teleport into or out of the room. {200}Storeroom: {078}Objects in the room save over a copyover or server reboot. {200}Nomagic: {078}Cannot cast or use any magical commands in the room. All temporary affects on a character are negated upon entering. {200}Private: {078}Only two characters can be in the room at once. {200}Safe: {078}Non-PVP room - no fighting or aggressive actions will happen. {200}Solitary: {078}Only one character can be in the room at a time. {200}Petshop: {078}Room is a petshop, PCs can buy pets in the room with the LIST command. {200}Norecall: {078}Word of Recall does not function in the room. {200}Morgue: {078}Newbies can purchase their corpse from this room. {200}Inn: {078}PCs recover 10x quicker when resting. {200}Nofloor: {078}PCs will fall into room in down direction when entering. {200}Noscry: {078}Room cannot be scried by any means. Arcane eyes cannot enter. {200}Nocover: {078}There's nowhere to HIDE without special abilities. {200}Noteboard: {078}Can view the noteboard from this room. {200}Ice: {078}Ground is covered with ice, requires Tumble checks to stay footed. {a}EDIT {b}RCREATE ~ 0 'AREA EDITOR'~ Area Editor~ {200}Syntax: edit area assign <character> [<start vnum> <end vnum>] Syntax: edit area check [name|fix|mobiles|rooms|objects] Syntax: edit area <list> {078} The area editor allows an admin to create a new area and assign it to a player, and also to edit the settings and flags for the area you are editing. ASSIGN - Creates a new area with the specified vnum range, and assigns it to a player. Only a full admin can assign new areas. Areas should be assigned in blocks divisable by 100 (eg, X00-X99). For smaller areas, it is acceptable to assign 50 vnum blocks (X00-X49 or X50-X99). If you leave the vnum range blank, it removes any area assignment from the builder. CHECK - Checks the area for errors using various criteria. LIST - Pulls up a list of the existing areas in the game. Typing EDIT ROOM with no argument edits the room you are presently in. {a}EDIT {b}AEDIT {c}ASTAT {e}ALIST ~ 0 AEDIT~ Editing an Area~ {300}The settings for a room include: {200}Name: {078}The name of the area. {200}Author: {078}The player name who creates the area. Can be more than one player. {200}Popmsg: {078}Set the echo for when the area resets. Color tags can be used. {200}Flags: {078}Toggles the area flags for the room. Any or all of these flags may be set on the area, as appropriate. See the menu of flags below. {200}Wind, Rain, Winter, Summer, Daily: {078}Sets weather ranges for the area. {200}Softlo, Softhi: {078}Sets the recommended level ranges for the area. {200}Hardlo, Hardhi: {078}Sets level restrictions for the area. Characters above or below these limits cannot enter. {200}Olclo, Olchi: {078}The low and hi vnum for the area. Only settable by a full admin and initially set during area assign. {200}Courtrm: {078}Sets the room vnum for an area courtroom used in the justice system. {200}Dungeon: {078}Sets the room vnum for the dungeon used in the justice system. {200}Impound: {078}Sets the room vnum for the storeroom used in the justice system. {200}Judge: {078}Sets the NPC vnum for the judge used in the justice system. {200}Guard: {078}Sets the NPC vnum for the guard used in the justice system. {200}Theft, Assault, Mkill, Pkill: {078}Sets the punishment for the specified crime. {-}EDIT {b}'AREA FLAGS' {d}JUSTICE AREAJUSTICE {e}'COLOR TAGS' ~ 0 JUSTICE AREAJUSTICE~ Area Justice System~ The area justice system is used to enforce laws within civilized areas. Actions against NPCs flagged as citizens will trigger the justice system and posts bounties against the criminal. Area guards will respond to incidents, as well as pursue and apprehend violators. The settings for the system are: {200}Courtroom: {078}This is the room that houses the area judge. {200}Dungeon: {078}The room that prisoners are held in. This room should ideally have no exits, and should be flagged with appropriate room flags to prevent escape unless the builder wishes to design a dungeon that can, in fact, be escaped. {200}Impound: {078}The room for storing confiscated items. This room should be flagged as a storeroom so it saves over reboots, and flagged against scrying and astral transport. {200}Guard: {078}This is the vnum of a standard NPC mobile that serves as the guard who answers crimes in the area. This NPC must be flagged ACT_GUARD, and while you can have more than one type of guard flagged as guards, this is the vnum that will be spawned during an incident. The fields for the punishment flags are: {200}Theft: {078}Sets the punishment for ptheft, or theft from a NPC citizen when the player is caught in the act. {200}Assault: {078}Sets the punishment for threatening, attacking or injuring an area citizen. {200}Mkill: {078}Sets the punishment for killing an NPC area citizen. {200}Pkill: {078}Sets the punishment for killing another player. This penalty is only triggered by a player set bounty upon another player. Each crime has a single punishment flag which determines the penalty for all of that type of crime committed in an area: {200}None: {078}This crime is not punished in the area. {200}Death: {078}Guards will attack to kill when a criminal is caught. Player bounty hunters will sever the head upon defeat of the character. {200}Sever: {078}Guards will sever a hand from the criminal when caught. Player bounty hunters sever a hand when defeating the character. {200}Jail: {078}When caught, criminal is transferred to the dungeon for the remainder of the bounty expiration time. {200}Confiscate: {078}Guards take a random item from the criminal when caught. Player can pay a fine at the area courtroom of a third of the item's value to get it back. {a}EDIT {b}AEDIT ~ 0 'AREA FLAGS'~ Area Flags~ {300}Any or all of these flags can be set on an area: {200}Noteleport: {078}Cannot teleport into or out of the area. {200}Norecall: {078}Cannot recall out of the area. {200}Nocastle: {078}Cannot build a player residence or guildhall in the area. {200}Norip: {078}Dimensional rips, like Secure Shelter, are not allowed in the area. {200}Nosummon: {078}Characters cannot be summoned into the area by another player. {200}Weather: {078}Area uses the weather flags to determine weather changes. The following flags set the size of the area if it is a civilized area. It affects factors like reselling prices, urban tracking modifiers, and other factors. If the area is one of these, set the appropriate flag. {200}Village: {078}The area is a tiny, civilized area. {200}Town: {078}The area is a small, civilized area. {200}City: {078}The area is a large, civilized area. {200}Metropolis: {078}The area is a huge, civilized area. {a}EDIT {b}AEDIT ~ 0 ALIST~ Alist~ {200}Syntax: alist {078} ALIST displays a list of all the areas in the game and their vnum ranges. ~ 0 ASTAT~ Astat~ {200}Syntax: astat [area name] {078} ASTAT shows you all the settings and stats for a given area. Leave the argument blank to give you the stats of the area you are in. ~ 0 'MOBILE EDITOR'~ The Mobile Editor~ {200}Syntax: edit mobile [create|delete] <vnum|mobile name> Syntax: edit mobile <list> Syntax: edit mobile <vnum|mobile name> {078} The mobile editor allows you to create, delete, or edit existing mobiles (NPCs) using the editor menu. When selecting a mobile, you can either use its vnum or target a mobile in the same room as you. CREATE - Creates a new mobile. Not specifying a vnum after the command will use the next empty vnum in your asigned vnum range. DELETE - Deletes the chosen mobile and all links to and contents in it. LIST - Pulls up a list of the existing mobiles in your assigned area. {a}EDIT {b}MCREATE {c}MOBILES NPCS {d}MSTAT {e}MPSTAT {f}MLIST ~ 0 MLIST~ Mlist~ {200}Syntax: mlist {078} MLIST displays a list of all the mobiles for the area you are in. ~ 0 MSTAT~ Mstat~ {200}Syntax: mstat <name|vnum> {078} MSTAT shows you all the settings and stats for a given mobile. You can specify a name, or a vnum for a more precise selection. ~ 0 MPSTAT~ Mpstat~ {200}Syntax: mpstat <name|vnum> {078} RPSTAT lists the current mud programs for the NPC specified. You can specify a name, or a vnum for a more precise selection. ~ 0 MOBILES NPCS~ Types of Mobiles~ {078}There are three basic types of mobiles: * Simple Mobiles draw almost entirely upon the race data for the NPC for its statistics. This is a good choice for mundane citizens, animals or disposable mooks that don't need a lot of attention. * Unique Mobiles still draw upon the race of the NPC, but allow you to further customize things like the NPCs stats, alignment, languages, and even set a different size category than the race normally uses. Best used for specific characters, and those you want complete control all of its specs. * Generic Mobiles do not draw on a race file at all, and are completely custom with the ability to set its racial type, subtypes, natural attacks and wear locations. You create a generic mobile by setting the race of a unique mobile to NONE. Use this when you need to create a creature not found in the coded racial database. {a}EDIT {b}MCREATE ~ 0 MCREATE~ Creating a Mobile~ {300}The settings for all mobiles include: {200}Name: {078}This is the keywords for targeting the mobile. They do not have to be words in the actual descriptions, but should be logical. The code will also always put the vnum of the mobile in the name. {200}Short: {078}The short desc of the mobile is its visible name - what you will see in the tactical display, and what will echo when the mobile echoes to anyone. It should be no longer than 24 characters. {200}Long: {078}The long desc is the phrase that the mobile displays when viewed in a room - can include poses. This desc supports color tags. {200}Desc: {078}This is the full description of the mobile. When you look at the mobile, this is the desc that you see. This is written in the text editor and can be several lines long. It also supports color tags. {200}Reset: {078}The reset message echoes whenever the mobile respawns. {200}ED: {078}Sets extra descs for the mobile, which display to someone who uses the LOOK command with the keyword(s) set for the desc. {200}Level: {078}What level and/or number of hit dice is the mobile. {200}Class: {078}What active class is the mobile. Monsters that do not have class levels should always have MONSTER set as their class. {200}Race: {078}What race is the mobile. If you wish to make a mobile that is not of a coded race, you must make it a UNIQUE mobile (see below). {200}Sex: {078}What gender is the mobile (male, female, or neutral). {200}Pos: {078}What position is the mobile in (sitting, sleeping, etc). {200}God: {078}Assigns a coded deity to the mobile as a patron. {200}Act: {078}Sets the act flags for the mobile. Any or all of these flags may be set on the mobile, as appropriate. See the menu of act flags below. {200}Mclass: {078}What multiclasses the NPC has and what level (cleric 5, etc). {200}Unique: {078}Unique mobiles allow for more customization options (see below.) {200}Skill: {078}For hard coded feats and skill ranks possessed by the NPC. {200}Affect: {078}For setting hard coded affects and applies on the NPC. {200}Equip: {078}Equips item of speficied vnum on the wear location specified. {a}EDIT {b}'EXTRA DESCS' {c}'ACT FLAGS' {d}LOADEQ {e}MCREATE2 ~ 0 MCREATE2~ Unique Mobiles~ {300}The following options are also available to code NPCs that are set as unique: {200}Armor: {078}Sets the NPC as wearing a virtual full suit of the armor specified. For mobiles that you don't want to drop armor when they die, this is a good option and also will simplify the need for coding armor objects. {200}Speaks: {078}The native language of the NPC. {200}Langs: {078}The additional languages spoken and understood by the NPC. {200}STR, DEX, CON, INT, WIS, CHA: {078}Sets the stat specified. {200}Align: {078}Sets the alignment of the NPC. {200}Size: {078}What size category is the creature in? Further options with a generic NPC (race set to NONE): {200}Natac: {078}Natural armor bonus. {200}Rtype: {078}The racial type of the creature (humanoid, aberration, etc). {200}Rspecs: {078}The subtypes of the creature (aquatic, quadruped, etc). {200}Wear: {078}The wear locations of the creature. {200}Attack: {078}Natural Attacks (Syntax: attack <attack part> <number>). {200}Affect: {078}For setting hard coded affects and applies on the NPC. {200}Skill: {078}Hard set the racial abilities needed for the creature. {-}MCREATE {a}'RACE TYPES' {b}'RACIAL SUBTYPES' {c}'ATTACK PARTS' {d}'WEAR LOCATIONS' {e}APPLIES APPLYS ~ 0 'ACT FLAGS'~ Act Flags~ {300}Act flags control how mobiles behave. The possible flags include: {200}Aggressive: {078}The mobile will not retreat, will pursue an attacker if they flee from combat, and may even randomly attack a player on sight. {200}Bank: {078}The mobile is a banker and understands banking commands. {200}Citizen: {078}Affects reputation, area criminal record if stolen from or slain. {200}Day: {078}Mobile only repops in daytime, and purges itself at night. {200}Drunk: {078}The mobile acts as a player would if drunk. {200}Guard: {078}Mobile acts as a guard in its area, enforces justice system. {200}Ishealer: {078}Mobile is a healer for hire that will respond to HEAL commands. {200}Mobinvis: {078}Mobile is invisible to non-GMs. {200}Night: {078}Mobile only repops at night, and purges itself at dawn. {200}Noassist: {078}Will not assist others in combat. Will only fight if engaged first. {200}Nocorpse: {078}The mobile leaves no corpse when it is killed. {200}Nofight: {078}Mobile will not attack, even if attacked. Fight progs will still trigger each round. {200}Nowander: {078}The mobile will only wander with rooms of the same sector. {200}Request: {078}Will honor REQUEST commands. NEVER use this on merchant NPCs! {200}Scavenger: {078}Picks up stray objects from the ground. {200}Secretive: {078}The mobile's actions do not echo, a permanent state of MPQUIET. {200}Sentinel: {078}The mobile will not wander from its reset room, unless pursuing someone or otherwise forced from the reset room. {200}Stayarea: {078}The mobile will not wander outside his own area. {200}Subdual: {078}Mobile will fight using nonlethal damage, rather than lethal force. {200}Summoned: {078}Summoned creature - can be dispelled, held at bay by protection from alignment spells, and other wards against summoned beings. {200}Train: {078}PCs can train with this mobile using the TRAIN command. {200}Weak: {078}The mobile cannot carry anything in inventory. {200}Wimpy: {078}The NPC will not attack of its own volition, flees if it sustains more than half its hit points. {a}EDIT ~ 0 LOADEQ~ Equipment Locations~ {300}When setting loading equipment for a mobile, each piece must be equipped on one of the following locations (only one piece on each): {178}none, float, head, face, ears, neck1, neck2, arms, wrist1, wrist2, hands, finger1, finger2, about, body, saddle, back, waist, belt1, belt2, belt3, legs, ankle1, ankle2, feet, shield, wield, dual-wield, both, hold. {a}EDIT ~ 0 'ATTACK PARTS'~ Attack Parts~ {300}You can set any number of the following natural attack forms for a race or a custom NPC. Damage is calculated automatically based the creature's size and the attack part, per the d20 universal monster rules: {178}Bite, Claw, Gore, Hoof, Kick, Pincer, Punch, Rake, Slam, Sting, Tail, Talon, Tentacle, Wing, Other, Touch. {078} The PUNCH attack form is not a natural attack, and does nonlethal damage, but creatures with this attack form can hold weapons. The OTHER attack form is untyped damage not covered by the other attack forms. The TOUCH attack form does no physical damage, rather delivers a special touch attack such as Rusting Touch, Petrifying Touch, etc. ~ 0 'WEAR LOCATIONS'~ Wear Locations~ {300}When you code a race, or a custom mobile, or set the load equipment for the mobile, it can have any or all of these wear locations: {178}Head, face, ears, neck, arms, wrist, hands, finger, body, about, back, waist, belt, legs, ankle, feet, saddle. {300} If you are going to set load equipment for the mobile also, make sure you pick a wear location the mobile would actually have, based on the above flags. Objects may have the above flags to indicate where they can be worn, and these further locations: {178}Take (allows item to be picked up, held), float, shield, wield. ~ 0 'OBJECT EDITOR'~ The Object Editor'~ {200}Syntax: edit object [create|delete] <vnum> Syntax: edit object <list> Syntax: edit object <vnum> {078} The mobile editor allows you to create, delete, or edit existing objects using the editor menu. CREATE - Creates a new object. Not specifying a vnum after the command will use the next empty vnum in your asigned vnum range. DELETE - Deletes the chosen object and all links to and contents in it. LIST - Pulls up a list of the existing objects in your assigned area. {a}EDIT {b}OCREATE {c}OSTAT {d}OPSTAT {e}OLIST ~ 0 OLIST~ Olist~ {200}Syntax: olist {078} OLIST displays a list of all the objects for the area you are in. ~ 0 OSTAT~ Ostat~ {200}Syntax: ostat <name|vnum> {078} OSTAT shows you all the settings and stats for a given object. You can specify a name, or a vnum for a more precise selection. ~ 0 OPSTAT~ Opstat~ {200}Syntax: opstat <name|vnum> {078} OPSTAT lists the current mud programs for the object specified. You can specify a name, or a vnum for a more precise selection. ~ 0 OCREATE~ Creating an Object~ {300}The settings for all objects include: {200}Name: {078}These is the keywords for targeting the object. They do not have to be words in the actual descriptions, but should be logical. The code will also always put the vnum of the object in the name. {200}Short: {078}The short desc of the object is its visible name - what you will see in the tactical display and echoes. It should be no longer than 24 characters. NOTE: Never put crunch words of an object in its desc (ie, +5 holy avenger), always use a visual physical description of the object, and let things like the identify string speak for the crunch. {200}Long: {078}The long desc is the phrase that the object displays when viewed in a room on the ground. This desc supports color tags. {200}Desc: {078}This is the full description of the object. When you look at the object, this is the desc that you see. This is written in the text editor and can be several lines long. It also supports color tags. {200}ED: {078}Sets extra descs for the object, which display to someone who uses the LOOK command with the keyword(s) set for the desc. {200}Level: {078}What level the object is. This is only useful when the game settings for item/owner level restrictions are enabled. {200}Class: {078}This toggles class restrictions for the item. If the value is empty then there are no restrictions. {200}Idname: {078}This is the title of the object visible when it is identified and examined. Here is where any proper name for the item should be. {200}Iddesc: {078}A verbal description of the item for identification. Crunch terms and even item lore can be in this desc. {200}Flags: {078}Toggles item flags for the object. {200}Wear: {078}Wear locations for the item. If you intend the item to be picked up and held, it needs at the very least to have the TAKE flag set. {200}Material: {078}What material is the item made out of. {200}Size: {078}What size is the object? (See below for common sizes). {200}Cost: {078}Calculated automatically while editing, but can be overridden. {200}Weight: {078}Calculated automatically based on material and item type. {200}V0, v1, v2, etc: {078}Sets raw numeric values for item value fields 1-7. Most of these are edited by further contextual menu choices based on item type. {200}Affect: {078}Sets permanent affects and applies on the object. {a}EDIT {b}'EXTRA DESCS' {c}'ITEM TYPES' {d}'ITEM FLAGS' {e}'WEAR LOCATIONS' {f}'MATERIAL TYPES' {g}'OBJECT SIZES' ~ 0 'MATERIAL TYPES'~ Material Types~ {300}Objects can be made of various materials. Each of these materials has affect on the qualities of the object in game terms as well, and how resistant they are to being damaged. If a material is immune to a damage type, it takes no damage at all, no matter how many hit points it is. If it is vulnerable to a damage type, it takes double damage. The Hardness of a substance is how many hitpoints it absorbs from a physical attack before any damage actually is dealt to the item. Adamantine weapons bypass this hardness. Material Hardness 1/2 dmg 1/4 dmg Immune Vulnerable Hardwood 5 Elect Cold - Fire ~ 0 'ITEM FLAGS'~ Item Flags~ {300}Item flags control how objects behave. The possible flags include: {200}Glow: {078}Object glows as a torch. {200}Evil: {078}Evil aura, zaps good characters when held. {200}Good: {078}Good aura, zaps evil characters when held. {200}Lawful: {078}Lawful aura, zaps chaotic characters when held. {200}Chaotic: {078}Chaotic aura, zaps lawful characters when held. {200}Neutral: {078}zaps good and evil characters when held. {200}Unconcerned: {078}Zaps lawful and chaotic characters when held. {200}Invis: {078}Item is affected by invisibility. {200}Magic: {078}Object has a magic aura. {200}Noremove: {078}Cursed item can't be removed once equipped. {200}Nodrop: {078}Cannot be dropped, sold or given away. {200}Inventory: {078}Stays in inventory, even when dead. {200}Burning: {078}Item is burning, gives off light, heat. {200}Autoengrave: {078}Object becomes owned by character when equipped. {200}Ethereal: {078}Object can't be seen by mortals. {200}Hidden: {078}Object is hidden in a room. Use v7 to set search DC to find. {200}Concealed: {078}Object is concealed on a character's person. {200}Masterwork: {078}Masterwork item, bonuses to quality, can be enchanted. {200}Noscry: {078}Object cannot be scried or located by divination. {200}Broken: {078}Object is broken and cannot be used unless repaired. {200}Buried: {078}Object is buried underground and has to be dug up to be seen/taken. {200}Transparent: {078}Shows items layered undearneath on same wear location. {a}EDIT ~ 0 'OBJECT SIZES'~ Object Sizes~ {300}Common modern objects and what size class they are in: {200}Colossal: {078}jetliner, house, large ship. {200}Gargantuan: {078}army tank, schooner ship. {200}Huge: {078}typical car, sailboat, wagon. {200}Large: {078}full-size bed, chariot. {200}Medium-size: {078}bicycle, cot, couch. {200}Small: {078}chair, large sack, hiking pack. {200}Tiny: {078}laptop computer, purse, spellbook. {200}Diminutive: {078}paperback book, beltpouch. {200}Fine: {078}pencil, ring. Note: Taken from d20 Modern SRD. {a}EDIT ~ 0 'ITEM TYPES'~ Item Types~ {300}The following flags are the possible types for an object: {200}[{178}X{200}] {078}Ammo {200}[{178}X{200}] {078}Armor {200}[{178}X{200}] {078}Boat {200}[{178}X{200}] {078}Book {200}[{178}X{200}] {078}Component {200}[{178}X{200}] {078}Container {200}[{178}X{200}] {078}Drinkcon {200}[{178}X{200}] {078}Fire {200}[{178}X{200}] {078}Food {200}[{178}X{200}] {078}Fountain {200}[{178}X{200}] {078}Furniture {200}[{178}X{200}] {078}Light {200}[{178}X{200}] {078}Map {200}[{178}X{200}] {078}Money {200}[{178}X{200}] {078}Paper {200}[{178}X{200}] {078}Piece {200}[{178}X{200}] {078}Pill {200}[{178}X{200}] {078}Portal {200}[{178}X{200}] {078}Potion {200}[{178}X{200}] {078}Quiver {200}[{178}X{200}] {078}Scroll {200}[{178}X{200}] {078}Sheath {200}[{178}X{200}] {078}Spellbook {200}[{178}X{200}] {078}Spellpouch {200}[{178}X{200}] {078}Staff {200}[{178}X{200}] {078}Symbol {200}[{178}X{200}] {078}Tools {200}[{178}X{200}] {078}Totem {200}[{178}X{200}] {078}Trap {200}[{178}X{200}] {078}Trash {200}[{178}X{200}] {078}Treasure {200}[{178}X{200}] {078}Wand {200}[{178}X{200}] {078}Weapon {200}[{178}X{200}] {078}Window {a}EDIT ~ 0 ITEM_TYPE_TRASH~ Trash Item Type~ {300}This is a catch-all item type for unremarkable objects that do not fit into any other item type. There are no additional menu choices for this item, but the object value fields can be used in mud progs for if checks. {a}EDIT ~ 0 ITEM_TYPE_TREASURE~ Treasure Item Type~ {300}Treasure is any valuable, or magical item that doesn't fit into the other item types offered. Wondrous magical items, jewelry, and the like are this item type. The additional menu options are: {200}Tflags: {078}Toggles treasure flags for the object. {200}Layer: {078}The wear layer of the item, if worn on a layered location. {200}Comptype: {078}Component type, for gems and jewels that can also be components. {200}Setting: {078}For jewel setting, the vnum of a gem set into the item. {a}EDIT ~ 0 'TREASURE FLAGS'~ Treasure Flags~ {300}These determine behavior and special qualities of a treasure object. NOTE that only ONE of these flags can be on a given treasure object: {200}spell_storing: {078}Stores up to three spells using the SPELL menu command that can be cast from the ring, and recharged by casting new spells on the item. {200}counterspell: {078}Ring stores a spell using the SPELL menu command, and will automatically counterspell that same spell later. Can be recharged by casting a new spell on the item. {200}spell_recast: {078}Set a spell using the SPELL menu command, use CHARGES to set the number of times per day it will work. {200}spell_charges: {078}Set a spell using the SPELL menu command, use CHARGES to set the current and max charges (Syntax: charges <current>/<max>). {200}absorption: {078}Yet to be coded, do not use yet. {a}EDIT ~ 0 ITEM_TYPE_SPELLBOOK~ Spellbook Item Type~ {300}Wizards must possess a spellbook in order to scribe the spells they learn and to prepare the spells for casting. If the wizard does not have his spellbook, he cannot prepare any spells and can only cast cantrips. These can be found during the course of adventuring, and the spells therein copied into a wizard's own spellbook to bolster his own repertoire. The additional menu option is: {200}Scribed: {078}Type the name of a spell to toggle the spell as scribed or not. {a}EDIT ~ 0 ITEM_TYPE_ARMOR~ Armor Item Type~ {300}Armor includes actual worn armor, shields, as well as mundane clothing, which is basically coded as armor with no AC bonus. When editing an armor object, the following options become available: {200}Armor: {078}Sets the type of armor for the item. {200}Layer: {078}What layer the item is worn on. This only works for clothing (AC 0) items, as all actual armor with a bonus is worn on the armor layer. {200}Aflags: {078}Toggles armor flags for the item. {200}Wearsize: {078}Sets what size creature the armor is made for. This is different than the actual size of the object. A helmet sized for a medium humanoid would itself be tiny in size. {a}EDIT {b}'ARMOR TYPES' {c}'ARMOR FLAGS' {d}'ITEM LAYERS' ~ 0 'ITEM LAYERS'~ Wear Layers~ {300}A clothing item, sheath, or container that is worn on the body, arms or legs can be set to layers 1 to 5. When looking at a person equipped with such, only the topmost layer is visible, unless the topmost item is flagged transparent. Layer 1 should be used for undergarments and items worn very close to the skin. This could include things like garter sheaths, wrist sheaths and other concealed containers. Layer 2 should be standard clothing items - shirts, pants tunics, etc. Layer 3 is for overgarments that would still be worn beneath armor - coats, vests and the like. Layer 4 is the armor layer, and any actual armor is always on this layer. Layer 5 is for surcoats, mantles, sheaths, other items that should be layered atop of everything else. This would also be the recommended layer for body pouches, leg sheaths, and such that would be worn atop of other items. Note that items like cloaks, that simply wrap about the body, should be set to the ABOUT wear location, which is only one layer - rather than the body. Thus the issue with layering such items is moot. Backpacks and back scabbards likewise should be set to the BACK wear location, again rendering layering concerns moot. {a}EDIT ~ 0 'ARMOR FLAGS'~ Armor Flags~ {300}These determine behavior and special qualities of a piece of armor or clothing: {200}Arrow catching: {078}Shields only, provides +1 bonus to AC against missiles. {200}Arrow deflecting: {078}Shields only, allows wearer to deflect missiles as if they had the feat, and without having an open hand. {200}Bashing: {078}Shield only, Doubles base damage done by a shield bash. {200}Etheralness: {078}Wearer can go ethereal, use obj value 2 for number of charges. {200}Ghost touch: {078}Armor protects against incorporeal attacks. {200}Reflecting: {078}Reflects spells like Spell Turning. Obj value 2 is the number of charges/levels it can reflect. {200}Hooded: {078}Has a hood, that can be worn while item is equipped. {a}EDIT ~ 0 'ARMOR TYPES'~ Armor Types~ {300}Below are the possible types of armor available in Mud20, and their bonuses and penalties. These numbers assume a complete suit of a particular armor type. You can mix and match pieces of different types, and the code calculates the final bonuses and adjustments. {178}Type Weight AC Bonus Dex Max Penalty Spell Fail {078}Cloth None - - - - Padded Light 1 8 - 5 Leather Light 2 6 - 10 Studded Leather Light 3 5 -1 15 Elven Chain Light 6 4 -2 20 Hide Medium 4 4 -3 20 Scalemail Medium 5 3 -4 25 Chainmail Medium 6 2 -5 30 Splint Mail Heavy 7 0 -7 40 Banded Mail Heavy 7 1 -6 35 Full Plate Heavy 9 1 -6 35 Buckler Shield 1 - - 5 Light Shield Shield 1 - -1 5 Heavy Shield Shield 2 - -2 15 Tower Shield Tower Shield 4 - -10 50 Weight: The type of armor proficiency needed to wear this armor. Dex Max: The maximum Dex mod to your AC gained while wearing this armor. Penalty: Wearing this armor causes all STR and DEX skill checks, as well as Swim checks, to suffer this penalty. If you are not proficient in the armor you are wearing, it also applies to your attack rolls and Reflex saves. Spell Fail: Arcane casters have this percent chance of their casting to fail when wearing this armor while using their spells. {a}ARMOR2 ~ 0 ARMOR2~ Wearing Piecemeal Armor~ {300}The way armor is treated in Mud20 isn't so much of a variant from normal d20, so much as it is the game code doing the math for you on creating your own suit of armor. You have the freedom to assemble your suit with just the pieces you want, and your AC and armor adjustments will total accordingly. For example, to get a chain shirt, only wear a chainmail tunic and sleeves. To get platemail, combine chain legs and arms with plate pieces elsewhere. Your EQUIPMENT list will show your current armor stats at the bottom of the list so there's no guesswork. Enhancement armor bonuses (+1, +2, etc) will only ever be found on the body piece of your armor, and will enhance the entire suit. Armor qualities will also only ever be found upon the body location, and again affect the character over his whole body. ~ 0 ITEM_TYPE_BOOK~ Book Item Type~ {300}This is a multi-page, written book, which can be read page by page. Selecting this item type allows the following additional menus: {200}Language: {078}Sets the language the book is written in. {200}Page <number>: {078}Adds a page of the specified number and puts you in the text editor for writing the page. The code will make you add pages in sequential order, beginning with page 1. {200}Rmpage: {078}Removes the specified page number. {a}EDIT ~ 0 ITEM_TYPE_COMPONENT~ Component Item Type~ {300}This item is used for any consumable ingredient, including a spell component, crafting materials and etc. Selecting this item type adds these menu options: {200}Comptype: {078}Sets the type of component it is. {200}Uses: {078}Sets the number of uses, or units of the component. {a}EDIT ~ 0 ITEM_TYPE_CONTAINER ITEM_TYPE_SHEATH ITEM_TYPE_SPELLPOUCH ITEM_TYPE_QUIVER~ Container Item Types~ {300}Container items, very simply, hold other items. This could be a backpack, belt pouch, or some other sort of container. There are three specialized container types as well - sheaths, quivers, and spellpouches. Sheaths and quivers carry weapons and ammo, respectively, and spellpouches only hold components. Only weapons in sheaths are found using the DRAW and SHEATH command. Only ammo in a quiver can be automatically drawn during shooting, and only spellpouches will serve up your components automatically while casting a spell. These item types have the following additional editor menus: {200}Carry: {078}How much weight can the container hold. {200}Conflags: {078}Toggles the container flags for the object. {200}Key: {078}Sets the item vnum for the key required to lock/unlock (container only). {200}Max: {078}Maximum number of items the container can fit. (This includes sheaths because a bandolier can, for example, carry multiple weapons.) {a}EDIT {b}'CONTAINER FLAGS' ~ 0 'CONTAINER FLAGS'~ Container Flags~ {300}The following flags determine the behavior of the container: {200}Closeable: {078}The container has a lid that can be opened/closed. {200}Closed: {078}The lid is presently closed. {200}Locked: {078}The lid is locked, and must be unlocked to open. {200}Pickproof: {078}The lock of the lid cannot be picked. {200}Bashproof: {078}The container cannot be bashed open. {200}Passproof: {078}Cannot be passed by incorporeal creatures. {200}Magical_lock: {078}Wizard locked, +10 DC to bash, impossible to pick. {200}Easy_pick: {078}Very low DC to pick lock. {200}Hard_pick: {078}Higher DC than normal to pick lock. {200}Amazing_pick: {078}Almost impossible DC to pick lock. {200}Weak: {078}Thin, fragile container - base DC 13 to bash. {200}Strong: {078}Base DC 23 to bash, versus 18. {200}Holding: {078}Weighs a fixed weight of 1/16th the carry weight of the container. {a}EDIT ~ 0 ITEM_TYPE_DRINKCON ITEM_TYPE_FOUNTAIN~ Drink Container and Fountain Item Types~ {300}Any object that contains a liquid. Usually this is intended to drink, but drink containers can also use used for oil flasks. The following additional menus are available with these item types: {200}Liquid: {078}What kind of liquid is in it? {200}Charges: {078}How many drams are in the it (drink containers only). {200}Poison: {078}Setting this poisons the liquid for anyone who drinks it. This can be any available poison type that is ingested or by contact. {a}EDIT {b}'LIQUID TYPES' {b}'LIQUID POISONS' ~ 0 'LIQUID TYPES'~ Liquid Types~ {300}The following liquids can be found in a drink container or fountain: {178}water, beer, wine, ale, darkale, whisky, lemonade, firebreather, strong_ale, strong_wine, milk, tea, coffee, blood, saltwater, oil, juice, brandy, icewine, rum, vodka, champagne. Each liquid has its own affects on a user's thirst, hunger and drunkenness. {a}EDIT ~ 0 'LIQUID POISONS'~ Food and Liquid Poisons~ {300}The following poisons are valid for poisoning liquids and food - only those that take effect by touch or ingestion are applicable: {178}none, nitharit, sassone, malyss_root, terinav_root, black_lotus, dragon_bile, toadstool, arsenic, id_moss, lich_dust. {a}EDIT ~ 0 ITEM_TYPE_FIRE~ Fire Item Type~ {300}Fires are stationary objects, they give off light and heat. They are suitable for use in crafts, and for burning other items: {200}Hours: {078}The number of game hours it will burn before junking itsemf. -1 means the fire will burn infinitely. You will usually want a fire set to -1 if it is loading on reset. Only set a duration if its loaded by a prog. {a}EDIT ~ 0 ITEM_TYPE_FOOD~ Food Item Type~ {300}Food items can be eaten by players, and usually satisfy their hunger to some extent. The following additional menus can be set: {200}Fill: {078}How much the food fills you up. Also determines the number of bites needed with the EAT command to consume it totally. {200}Cooked: {078}(yes or no) Is the food already cooked or not. {200}Poison: {078}Setting this poisons the food for anyone who eats it. This can be any available poison type that is ingested or by contact. {a}EDIT {b}'LIQUID POISONS' ~ 0 ITEM_TYPE_FURNITURE~ Furniture Item Type~ {300}Basically, any type of object that is a prop that can be interacted with, that is a fixture in a room. This could be an altar, a table, a statue, or anything else that you can think of. The following extra menus are available: {200}Users: {078}How many people can interact (pose with) the furniture at once. If the value is 0, there is no limit. {200}Poses: {078}Toggles what poses you can use with the object, and what your pose will echo when you use the furniture with the pose. These actions will also trigger use_progs set on the object. {a}EDIT {b}'FURNITURE FLAGS' ~ 0 'FURNITURE FLAGS'~ Furniture Flags~ {300}The following flags determine the behavior of the furniture: {200}sleep_in: {078}Can be slept in. Echos you are sleeping in the object. {200}sleep_on: {078}Can be slept on. Echos you are sleeping on the object. {200}rest_in: {078}Can be rested in. Echos you are resting in the object. {200}rest_on: {078}Can be rested on. Echos you are resting on the object. {200}sit_in: {078}Can be sat in. Echos you are sitting in the object. {200}sit_on: {078}Can be sat on. Echos you are sitting on the object. {200}sit_at: {078}Can be sat at (like a table). Echos you are sitting at the object. {200}stand_in: {078}Can be stood in. Echos you are standing in the object. {200}stand_on: {078}Can be stood on. Echos you are standing on the object. {200}kneel_at: {078}Can be knelt at. Echos you are kneeling at the object. {200}place_on: {078}Other objects can be placed on the object. {a}EDIT ~ 0 ITEM_TYPE_LIGHT~ Light Item Type~ {300}Lights can either be stationary or carried/held. Any light object affects the lighting of the room it is in: {200}Light: {078}(1-3)How many steps will the light increase in the room. This should usually be limited to 1, at the most 2 for a bright light. 3 is equivalent to a Daylight spell, and should only be found on rare magical items. {200}Refill: {078}(true or false) If true, you can refill the light with oil (like a lantern) from a flask of oil. Otherwise, the item junks when it runs out. {200}Charges: {078}The number of turns (10 rounds) the light burns. -1 means the light never runs out. {200}Ignite: {078}(true or false) True means the light ignites and is burning when you equip it. {a}EDIT ~ 0 ITEM_TYPE_MAP~ Map Item Type~ {300}This object allows the holder to get the overland view of the area they are in, so long as they are carrying a map of the area. The additional menus are: {200}Lovnum: {078}The lowest room vnum the map will draw. {200}Hivnum: {078}The highest room vnum the map will draw. {a}EDIT ~ 0 ITEM_TYPE_MONEY~ Money Item Type~ {300}Quite simply, this is a pile of money: {200}Gold: {078}The number of gold in the pile. {200}Silver: {078}The number of silver in the pile. {200}Copper: {078}The number of copper in the pile. {a}EDIT ~ 0 ITEM_TYPE_PILL~ Pill Item Type~ {300}A pill is an object that places spell affects upon the person who eats it. This action does not draw attacks of opportunity, unlike potions, and it can affect up to three spells in its consumption. {200}Spell: {078}spell <caster level> <'spell name'> <'spell name'> <'spell name'> {a}EDIT ~ 0 ITEM_TYPE_POTION~ Potion Item Type~ {300}A potion is imbibed by the DRINK command. It can affect a single spell upon the person who drinks it: {200}Spell: {078}spell <caster level> <'spell name'> If the spell is left blank, then the potion is an empty potion flask, and can be used with the Create Potion feat to make a new potion. Flasks emptied by drinking can also be used again to make new potions. {a}EDIT ~ 0 ITEM_TYPE_SCROLL~ Scroll Item Type~ {300}A scroll is recited to complete the spell. The end result is as if the person cast the spell themselves. The scroll is consumed in the process: {200}Spell: {078}spell <caster level> <'spell name'> {200}Class: {078}Sets whether the scroll is arcane, or divine. {a}EDIT ~ 0 ITEM_TYPE_PAPER~ Paper Item Type~ {300}Any blank substrate (paper, parchment, slab of bark, etc) that can be written upon. Type what you want to be written on the paper as the long description of the object. {200}Written: {078}(true or false) Has the paper been written on. {200}Sealed: {078}(true or false) Has the paper been sealed with a wax seal. {200}Language: {078}What language is the document written in. {a}EDIT ~ 0 ITEM_TYPE_PIECE~ Piece Item Type~ {300}These are objects that are pieces of other objects, and assembled using the JOIN command. The additional menu commands are: {200}Piece1: {078}Object vnum of the first piece to be joined. {200}Piece2: {078}Object vnum of the second piece to be joined. {200}Creates: {078}Object vnum of the item the two pieces create. {200}Skill: {078}Skill required to assemble, if any. {200}Skilldc: {078}DC of skill roll to successfully assemble. Both pieces to be joined must be pieces, the final object can be any item type, even another piece, thus making for very complex items that must be assembled. {a}EDIT ~ 0 ITEM_TYPE_PORTAL~ Portal Item Type~ {300}Typically used for a magical portal, but can be used for a mundane passage as well. A character uses the portal with the ENTER command. A portal has these additional menu options: {200}Charges: {078}Number of uses before purging. Set to -1 for infinite. {200}Enter: {078}Toggles the portal flags for the object. {200}Toroom: {078}What room vnum the portal leads to. {200}Key: {078}Key to unlock locked portal. Use -1 for no lock. {a}EDIT {b}'PORTAL FLAGS' ~ 0 'PORTAL FLAGS'~ Portal Flags~ {300}The following flags determine the behavior of the portal: {200}teleport_world: {078}User is sent to a random room vnum anywhere. {200}gowith: {078}The portal goes with the person who enters it. {200}noflee: {078}The portal can not be used when fleeing combat. {200}stepthrough: {078}Echoes you stepping through the portal. {200}stepinto: {078}Echoes you stepping into the portal. {200}teleport_area: {078}User is sent to a random room in the same area. {200}closeable: {078}Portal has a door that can be open/closed. {200}closed: {078}Portal has a door that is closed, and must be open. {200}locked: {078}Portal has a door that is locked. {200}no_enter: {078}You can not enter the portal from this side. {200}pickproof: {078}Lock cannot be picked. {200}easy_pick: {078}Low lock DC to pick. {200}hard_pick: {078}High lock DC to pick. {200}amazing_pick: {078}Almost impossible lock DC to pick. {a}EDIT ~ 0 ITEM_TYPE_STAFF ITEM_TYPE_WAND~ Staff and Wand Item Types~ {300}A staff or wand is a charged magic item. Wands store a single spell while staves can store multiple spells. Each use of a spell costs a charge or charges off of the item. These items have these additional menu options: {200}Charges (X/X): {078}Maximum and current charges of the object. {200}Spell: {078}spell <caster level> <'spell name'> (add up to 3 more for a staff.) {a}EDIT ~ 0 ITEM_TYPE_SYMBOL~ Symbol Item Type~ {300}This is a holy symbol for a divine caster when the holy symbol is required as a component, and for turning and commanding undead and other creatures: {200}God: {078}What god is this the holy symbol of. {200}Bonus (0-5): {078}Adds a bonus to any turn or command check by the wearer. {a}EDIT ~ 0 ITEM_TYPE_WEAPON ITEM_TYPE_AMMO~ Weapon and Ammo Types~ {300}Weapons and ammo have the following additional fields to edit: {200}Weapon: {078}Sets the type of weapon for the item. {200}Wflags: {078}Toggles weapon flags for the item. {200}Dammsg: {078}Sets a custom damage noun for the weapon. For example, 'crushing blow'. If the weapon has the Bane or Slaying weapon flag, you can also set: {200}Racetype: {078}For the race type the weapon is against. {200}Subtype: {078}For the subtype the weapon is against. If it has the spell storing weapon flag, you can also set: {200}Spell: {078}The spell that is cast when the weapon hits. {a}EDIT {b}'WEAPON TYPES' {c}'WEAPON FLAGS' ~ 0 'WEAPON TYPES'~ Weapon Item Type~ Below are the lists of available weapons and their specs: {000} {200}[{178}X{200}] {078}Simple Weapons {200}[{178}X{200}] {078}Martial Weapons {200}[{178}X{200}] {078}Exotic Weapons {a}WEAPONSIMPLE {b}WEAPONMARTIAL {c}WEAPONEXOTIC ~ 0 'WEAPON FLAGS'~ Weapon Flags~ {300}These determine behavior and special qualities of a magical weapon: {200}Anarchic: {078}Does +2d6 vs. Lawful, drains level of lawful attempting to wield. {200}Axiomatic: {078}Does +2d6 vs. Chaotic, drains level of chaotic attempting to wield. {200}Bane: {078}Does +2d6 vs. race type on obj value 2 and subtype on obj value 3. {200}Disruption: {078}Undead struck must make WILL save or be destroyed. {200}Distance: {078}Double the range of a ranged weapon. {200}Flaming: {078}Does +1d6 fire damage on hit. {200}Flaming Burst: {078}Does +1d6 fire damage on hit. Or +critmod d6 on crit hit. {200}Frost: {078}Does +1d6 cold damage on hit. {200}Ghost Touch: {078}Can hit incorporeal creatures with no miss chance. {200}Holy: {078}Does +2d6 vs. Evil, drains level of evil attempting to wield. {200}Icy Burst: {078}Does +1d6 cold damage on hit. Or +critmod d6 on crit hit. {200}Keen: {078}Double critical threat range of weapon. {200}Ki Focus: {078}Monk can use Ki strike ability while wielding this weapon. {200}Merciful: {078}Does nonlethal damage instead of lethal, +1d6 damage. {200}Returning: {078}Weapon returns when thrown once per round. {200}Seeking: {078}Ammo only. Strikes target without error. {200}Shock: {078}Does +1d6 electrical damage on hit. {200}Shocking Burst: {078}Does +1d6 elect damage on hit. Or +critmod d6 on crit hit. {200}Speed: {078}Gain extra iterative attack while wielding. {200}Spell Storing: {078}Casts spell on obj val 2 upon hit. Obj val 3 is caster level. {200}Thundering: {078}+1d8+crit multiplier damage upon critical hit. {200}Unholy: {078}Does +2d6 vs. Good, drains level of good attempting to wield. {200}Venomous: {078}Poisons target (like spell) upon hit. {200}Vampiric: {078}Heals wielder of obj value 2 hit points upon hitting target. {200}Vorpal: {078}Beheads target upon critical hit. {200}Wounding: {078}Causes bleeding on critical hit. {200}Slaying: {078}If victim racetype on obj value 2 and subtype on obj val 3 match, must make a FORT save or die. Can only be placed on ammo. {200}Caustic: {078}+1d6 acid damage on hit. {a}EDIT ~ 0 'SHOP EDITOR'~ 'shop editor'~ {178} The Shop Editor{200} ==============={200} Syntax: edit shop [create|delete] <vnum|mobile name> Syntax: edit shop <list> Syntax: edit shop <vnum|mobile name> {078} The shop editor allows you to create, delete, or edit an existing shop using the editor menu. CREATE - Creates a new shop and tags it to the mobile specified. Either use the vnum of the mobile, or target a mobile in the same room as you. DELETE - Deletes a shop from the selected mobile. LIST - Pulls up a list of the existing shops in your assigned area. {200} [{178}A{200}] {300}Game Editor {200} [{178}B{200}] {300}Creating a Shop {a}EDIT {b}SCREATE ~ 0 SCREATE~ screate~ {178} Creating a Shop{200} ==============={300} When you create a shop, you tag it to a mobile. This mobile needs items in his inventory, which becomes the inventory of his shop. The settings for each store include: {200}Open/Close: {078}The shop opens at the beginning of the selected hour, and closes at the end of the hour selected as the closing hour. Time is set in 24-hour format. If the open hour is 0 and the close hour 23, it never closes. {200}Buy: {078}The percentage of an item's worth you can buy it for. {200}Sell: {078}The percentage of an item's worth you can sell it for. {200}Flags: {078}Sets the shop flags for the merchant. {200}Item (1-4): {078}The item types the merchant will buy. Use some common sense. A blacksmith merchant might buy armor and weapons, but not jewelry, etc. {200} [{178}A{200}] {300}Game Editor {200} [{178}B{200}] {300}Shop Flags {a}EDIT {b}'SHOP FLAGS' ~ 0 'SHOP FLAGS'~ 'shop flags'~ {178} Shop Flags{200} =========={300} Any or all of these flags can be set on a room, and the room will take on the characteristics of the flag: {200}Identify: {078}Shopkeeper will IDENTIFY items for PCs. {200}Temple: {078}Only sells to members of his faith and faith allys. {200}Clanstore: {078}Only sells to members of a clan (shop must be in clanhall). {200}Xenophobe: {078}Only sells to those of the shopkeeper's race subtype. {200} [{178}A{200}] {300}Game Editor {200} [{178}B{200}] {300}Creating a Shop {a}EDIT {b}SCREATE ~ 0 'INN EDITOR'~ 'inn editor'~ {178} The Shop Editor{200} ==============={200} Syntax: edit inn [create|delete] <vnum|mobile name> Syntax: edit inn <list> Syntax: edit inn <vnum|mobile name> {078} The inn editor allows you to create, delete, or edit an existing inn using the editor menu. CREATE - Creates a new inn and tags it to the mobile specified. Either use the vnum of the mobile, or target a mobile in the same room as you. DELETE - Deletes an existing inn from the selected mobile. LIST - Pulls up a list of the existing inns in your assigned area. {200} [{178}A{200}] {300}Game Editor {200} [{178}B{200}] {300}Creating an Inn {a}EDIT {b}INNCREATE ~ 0 INNCREATE~ inncreate~ {178} Creating an Inn{200} ==============={300} To create an inn, you need both the innkeeper, and the rooms created that he will rent. These rooms should be flagged ROOM_INN in order to gain the benefits of resting in them. You will also want to link the rooms to a way out. As the RENT command will send a player to the room, but they still have to exit it when done. The settings for each inn include: {200}Open/Close: {078}The inn opens at the beginning of the selected hour, and closes at the end of the hour selected as the closing hour. Time is set in 24-hour format. If the open hour is 0 and the close hour 23, it never closes. {200}Room (1-5): {078}Sets the vnum for the specified room, and the rent for the room in copper. One innkeeper can rent up to 5 different rooms. {200}Flags: {078}Sets the shop flags for the innkeeper. {200} [{178}A{200}] {300}Game Editor {200} [{178}B{200}] {300}Shop Flags {a}EDIT {b}'SHOP FLAGS' ~ 0 'STABLE EDITOR'~ 'stable editor'~ {178} The Stable Editor{200} ================={200} Syntax: edit stable [create|delete] <vnum|mobile name> Syntax: edit stable <list> Syntax: edit stable <vnum|mobile name> {300} The stable editor allows you to create, delete, or edit an existing stable using the editor menu. CREATE - Creates a new stable and tags it to the mobile specified. Either use the vnum of the mobile, or target a mobile in the same room as you. DELETE - Deletes an existing stable from the selected mobile. LIST - Pulls up a list of the existing stables in your assigned area. {200} [{178}A{200}] {300}Game Editor {200} [{178}B{200}] {300}Creating a Stable {a}EDIT {b}STABLECREATE ~ 0 STABLECREATE~ stablecreate~ {178} Creating a Stable{200} ================={300} To create a stable, you need both the stablekeeper, and a room that serves as a storage room for the animals that are checked in. This room should be flagged such that it is inaccessible to a player, and have no links to other rooms. The settings for each inn include: {200}Open/Close: {078}The inn opens at the beginning of the selected hour, and closes at the end of the hour selected as the closing hour. Time is set in 24-hour format. If the open hour is 0 and the close hour 23, it never closes. {200}Vnum: {078}Sets the vnum of the storage room. {200}Rent: {078}Sets the cost to stable your pet, in copper. {200}Flags: {078}Sets the shop flags for the innkeeper. {200} [{178}A{200}] {300}Game Editor {200} [{178}B{200}] {300}Shop Flags {a}EDIT {b}'SHOP FLAGS' ~ 0 'GOD EDITOR'~ 'god editor'~ {178} The God Editor{200} =============={200} Syntax: edit god <'name'> Syntax: edit god <list> {078} The god editor allows you to edit the gods in the deity list. The following fields are editable using the Game Editor: {200}Name: {078}Sets the name of the deity. Use quotes for multi-word names. {200}Align/Ethos: {078}Sets the align (Good/Neutral/Evil) and the ethos (Lawful/Neutral/ Chaotic) for the deity. {200}Weapon: {078}Sets the weapon of choice for the deity. {200}Domains: {078}Toggles domains on and off, you may enter multiple domains at once. {200}AlignHi/AlignLo/EthosHi/EthosLo: {078}Sets range of alignments for a follower of the deity (any follower, not just priests, as priests will never verge from the one-place-removed rule.) {200}Race: {078}Sets the racial pantheon of the deity. Leave blank for a god that accepts any race, or set multiple race types if it allows more than one. {200}Unproven/Acolyte/Prelate/InnerCircle/Chosen: {078}Sets the titles for a faith's heirarchy. Leave blank to use the default titles. Note this is formal church ranking, which a given PC may, or may not have at all ICly. {200}FaithEnemy/FaithAlly: {078}Toggle the opposing and allied faiths for the god's church. Multiple faiths may be entered at once for each field. Type DONE to exit the editor, or use the < and > keys to page to the previous or next god in the list. ~ 0 'RACE EDITOR'~ The Race Editor~ {200}Syntax: edit race <'name'> Syntax: edit race <list> {078} The race editor allows you to edit the races in the database. The following fields are editable using the Game Editor: {200}Name: {078}Sets the name of the race. Use quotes for multi-word names. {200}Hitdice: {078}Racial hit dice. {200}ParentRace: {078}For subraces, set the main race as its parent. {200}Height: {078}Longest measurement in inches. {200}Weight: {078}Weight in pounds. {200}Size: {078}Size category. {200}PCRace: {078}Can a player choose this race. This is usually NO. {200}Land/Burrow/Climb/Fly/Swim: {078}Speed of each travel mode. {200}Armor: {078}Natural armor bonus. {200}Deflection: {078}Defection AC bonus. {200}FavClass: {078}Favored Class for race. {200}Statadj: {078}modifier for (in order) STR DEX CON INT WIS CHA {200}Nonabilities: {078}Which abilities are non-abilities for race. {200}Racetype: {078}Set racetype for race. {200}Subtype: {078}Toggle subtypes for race. {200}Apply: {078}Racial applies (Syntax: apply <flag> <value>). {200}Vulnerable: {078}Toggles vulnerabilities (150% damage) to energy types. {200}Speaks: {078}Native language. {200}Understands: {078}Automatic languages. {200}BonusLangs: {078}Bonus languages. {200}Attacks: {078}Natural Attacks (Syntax: attacks <body part flag> <number>). {200}Poison: {078}Poison attack (Syntax: poison <body flag> <poison name>). {200}Disease: {078}Disease attack (Syntax: disease <body flag> <disease name>). {200}Sectors: {078}Toggles native habitat sectors for race. {200}Skills: {078}Default skill ranks (skill <'skill name'> <rank>). {200}Abilities: {078}Racial Abilities (ability <'skill name'> <level acquired>). {200}SpellLike: {078}Spell-Like Abilities (ability <'spell name'> <value>) Set value to AW for castable at-will, or give a number of castings per day. Type DONE to exit the editor, or use the < and > keys to page to the previous or next race in the list. {000} {200} [{178}A{200}] {300}Racial Types {200} [{178}B{200}] {300}Racial Subtypes {200} [{178}C{200}] {300}Sector Flags {200} [{178}D{200}] {300}Apply Types {200} [{178}E{200}] {300}Body Part Flags {200} [{178}F{200}] {300}Poison Types {200} [{178}D{200}] {300}Disease Types {a}'RACE TYPES' {b}'RACIAL SUBTYPES' {c}'SECTOR FLAGS' {d}APPLIES APPLYS {e}'ATTACK PARTS' ~ 0 MPROGS000 'MUD PROGS'~ Mud Progs~ {300}Though originally called 'mob progs', or mobile programs, it is more fitting to dub them mud progs now, because the programs can also run on rooms, and objects as well as mobiles. This programming language gives a lot of power to a builder without having to delve into the hardcore realm of C programming. {000} {200} [{178}A{200}] {300}Mobile Triggers {200} [{178}B{200}] {300}Object Triggers {200} [{178}C{200}] {300}Room Triggers {200} [{178}D{200}] {300}Variables {200} [{178}E{200}] {300}Variable Expansion {200} [{178}F{200}] {300}Control Flow {200} [{178}G{200}] {300}Operators {200} [{178}H{200}] {300}If Checks {200} [{178}I{200}] {300}MP Commands {200} [{178}-{200}] {300}Return {a}MPROGS100 {b}OPROGS100 {c}RPROGS100 {d}MPROGS200 {e}MPROGS202 {f}MPROGS300 {g}MPROGS400 {h}'IF CHECKS' 'MPROG IF CHECKS' {i}MPROGS700 MPCOMMANDS {-}BUILDER OLC ~ 0 MPROGS100~ Mobile Triggers~ {178} Triggers which work on mobiles {000} {200} [{178}A{200}] {300}act_prog {200} [{178}B{200}] {300}all_greet_prog {200} [{178}C{200}] {300}arrival_prog {200} [{178}D{200}] {300}bribe_prog {200} [{178}E{200}] {300}buy_prog {200} [{178}F{200}] {300}cast_prog {200} [{178}G{200}] {300}death_prog {200} [{178}H{200}] {300}delay_prog {200} [{178}I{200}] {300}desc_prog {200} [{178}J{200}] {300}do_greet_prog {200} [{178}K{200}] {300}entry_prog {200} [{178}L{200}] {300}exit_prog {200} [{178}M{200}] {300}fight_prog {200} [{178}N{200}] {300}give_prog {200} [{178}O{200}] {300}greet_prog {200} [{178}P{200}] {300}group_greet_prog {200} [{178}Q{200}] {300}hitprcnt_prog {200} [{178}R{200}] {300}hit_prog {200} [{178}S{200}] {300}intercept_prog {200} [{178}T{200}] {300}kill_prog {200} [{178}U{200}] {300}rand_prog {200} [{178}V{200}] {300}range_prog {200} [{178}W{200}] {300}repop_prog {200} [{178}X{200}] {300}sayto_prog {200} [{178}Y{200}] {300}social_prog {200} [{178}Z{200}] {300}speech_prog {200} [{178}1{200}] {300}time_prog {200} [{178}2{200}] {300}trap_prog {200} [{178}3{200}] {300}trigger_prog {200} [{178}-{200}] {300}Return to Mud Progs {a}ACT_PROG {b}ALL_GREET_PROG {c}ARRIVAL_PROG {d}BRIBE_PROG {e}BUY_PROG {f}CAST_PROG {g}DEATH_PROG {h}DELAY_PROG {i}DESC_PROG {j}DO_GREET_PROG {k}ENTRY_PROG {l}EXIT_PROG {m}FIGHT_PROG {n}GIVE_PROG {o}GREET_PROG {p}GROUP_GREET_PROG {q}HITPRCNT_PROG {r}HIT_PROG {s}INTERCEPT_PROG {t}KILL_PROG {u}RAND_PROG {v}RANGE_PROG {w}REPOP_PROG {x}SPEECH_PROG SAYTO_PROG {y}SOCIAL_PROG {z}SPEECH_PROG SAYTO_PROG {1}TIME_PROG {2}TRAP_PROG {3}TRIGGER_PROG {-}MPROGS000 'MUD PROGS' ~ 0 OPROGS100~ Object Triggers~ {178} Triggers which work on objects {000} {200} [{178}A{200}] {300}act_prog {200} [{178}B{200}] {300}all_greet_prog {200} [{178}C{200}] {300}cast_prog {200} [{178}D{200}] {300}damage_prog {200} [{178}E{200}] {300}desc_prog {200} [{178}F{200}] {300}drop_prog {200} [{178}G{200}] {300}fight_prog {200} [{178}H{200}] {300}get_prog {200} [{178}I{200}] {300}give_prog {200} [{178}J{200}] {300}greet_prog {200} [{178}K{200}] {300}group_greet_prog {200} [{178}L{200}] {300}hit_prog {200} [{178}M{200}] {300}intercept_prog {200} [{178}N{200}] {300}rand_prog {200} [{178}O{200}] {300}remove_prog {200} [{178}P{200}] {300}repop_prog {200} [{178}Q{200}] {300}sac_prog {200} [{178}R{200}] {300}speech_prog {200} [{178}S{200}] {300}time_prog {200} [{178}T{200}] {300}trap_prog {200} [{178}U{200}] {300}trigger_prog {200} [{178}V{200}] {300}use_prog {200} [{178}W{200}] {300}wear_prog {200} [{178}-{200}] {300}Return {a}ACT_PROG {b}ALL_GREET_PROG {c}CAST_PROG {d}DAMAGE_PROG {e}DESC_PROG {f}DROP_PROG GET_PROG {g}FIGHT_PROG {h}DROP_PROG GET_PROG {i}GIVE_PROG {j}GREET_PROG {k}GROUP_GREET_PROG {l}HIT_PROG {m}INTERCEPT_PROG {n}RAND_PROG {o}WEAR_PROG REMOVE_PROG {p}REPOP_PROG {q}SAC_PROG {r}SPEECH_PROG SAYTO_PROG {s}TIME_PROG {t}TRAP_PROG {u}TRIGGER_PROG {v}USE_PROG {w}WEAR_PROG REMOVE_PROG {-}MPROGS000 'MUD PROGS' ~ 0 RPROGS100~ Room Triggers~ {178} Triggers which work on rooms {000} {200} [{178}A{200}] {300}act_prog {200} [{178}B{200}] {300}cast_prog {200} [{178}C{200}] {300}death_prog {200} [{178}D{200}] {300}desc_prog {200} [{178}E{200}] {300}entry_prog {200} [{178}F{200}] {300}exit_prog {200} [{178}G{200}] {300}fight_prog {200} [{178}H{200}] {300}greet_prog {200} [{178}I{200}] {300}group_greet_prog {200} [{178}J{200}] {300}intercept_prog {200} [{178}K{200}] {300}kill_prog {200} [{178}L{200}] {300}rand_prog {200} [{178}M{200}] {300}speech_prog {200} [{178}N{200}] {300}time_prog {200} [{178}-{200}] {300}Return {a}ACT_PROG {b}CAST_PROG {c}DEATH_PROG {d}DESC_PROG {e}ENTRY_PROG {f}EXIT_PROG {g}FIGHT_PROG {h}GREET_PROG {i}GROUP_GREET_PROG {j}INTERCEPT_PROG {k}KILL_PROG {l}RAND_PROG {m}SPEECH_PROG SAYTO_PROG {n}TIME_PROG {-}MPROGS000 'MUD PROGS' ~ 0 ACT_PROG~ act_prog~ {178} Act Programs {200} >act_prog [p|k] <argument> {300} The argument is a list of keywords separated by spaces. If the first word is the character 'p' by itself then the rest of the word list is considered to be a phrase. If the first word is the character 'k' by itself then the rest of the word list is considered to be a set of keywords which all must be matched. The trigger is activated whenever a keyword (or the phrase) is contained in the act() message. Both the phrase and keywords are not case sensitive. The act_prog will trigger on every action made by a player, it ignores mobs ~ 0 SPEECH_PROG SAYTO_PROG~ speech_prog sayto_prog~ {178} Speech Programs {200} >speech_prog [p|k] <argument> >sayto_prog [p|k] <argument> {300} The argument is a list of keywords separated by spaces. If the first word is the character 'p' by itself then the rest of the word list is considered to be a phrase. If the first word is the character 'k' by itself then the rest of the word list is considered to be a set of keywords which all must be matched. The trigger is activated whenever a keyword (or the phrase) is contained in the say message. Both the phrase and keywords are not case sensitive. The speech_prog will trigger on every speech command made by a player. The whisper command will only trigger it if a mobile with the program is targeted. The trigger ignores mobs. speech_progs also work upon objects and rooms. The sayto_prog will trigger only if a mobile with the program is targeted with 'sayto', which helps to avoid accidental triggers. ~ 0 SOCIAL_PROG~ social_prog~ {178} Social Programs {200} >social_prog <argument> {300} The argument is a social listed in the social list. The social_prog will trigger on every social made by a player or mob, where the mobile with the program must be the target. ~ 0 RAND_PROG~ rand_prog~ {178} Rand Programs {200} >rand_prog <percentage> {300} The argument is a number between 1 and 100. This trigger is checked every second and if the argument is greater than a percentage roll the trigger is activated. If there is no $r variable in the program of the rand_prog this will happen even if there is no PC in the room with the mob. It will never trigger if there are no players in the area. Mobs can have multiple rand_progs, but only 1 can trigger each second. So you have to order them from highest percentage to least. ~ 0 CAST_PROG~ cast_prog~ {178} Cast Programs {200} >cast_prog <'argument'> {300} The argument is the name of a spell. This trigger will be activated if the player casts the named spell in the same room as the mobile, obj, or room with the prog. The potential for this trigger is myriad, allowing a mobile to react to the caster with speech, counter spells of its own, hostile reactions, etc. This prog does not interrupt the spell, only triggers in reaction to it. ~ 0 FIGHT_PROG~ fight_prog~ {178} Fight Programs {200} >fight_prog <percentage> {300} The argument is a number between 1 and 100. This trigger is checked every combat round and if the argument is greater than a percentage roll the trigger is activated. A mobile will not act according to their coded AI when a fight_prog on it is triggered. When placed on an object, it will only trigger if the PC holding or wearing it is actively engaged in combat. When placed on a room, it triggers at the end of each combatant's turn, with that player as the actor. A single mob/obj/room can have multiple fight_progs, but only 1 can trigger each combat round, so you need to order the fight_progs in descending order to give each of them a chance to trigger. ~ 0 HITPRCNT_PROG~ hitprcnt_prog~ {178} Hitprcnt Programs {200} >hitprcnt_prog <percentage> {300} The argument is a number between 1 and 100. This trigger is checked every combat round and if the argument is greater than the mobile's current hit points the trigger is activated. Mobs can have multiple hitprcnt_progs, but only the first succesful one will trigger each combat round. Multiple hitprcnt_progs should be listed in increasing order of percent since a 40 will always be activated before a 20. Be aware that a fight_prog and hitprcnt_prog can both trigger in a round. ~ 0 HIT_PROG~ hit_prog~ {178} Hit Programs {200} >hit_prog <percentage> {300} The argument is a number between 1 and 100. When placed upon a mobile, this trigger is checked every time the mobile takes damage, and if the argument is greater than a percentage roll the trigger is activated. When placed upon an object, this trigger is checked every time the wearer takes damage, and if the argument is greater than a percentage roll the trigger is activated. The hit_prog only triggers if a PC is wearing the object. Mobs and objects can have multiple hit_progs, but only the first succesful one will trigger each combat round. Multiple hit_progs should be listed in increasing order of percent since a 40 will always be activated before a 20. ~ 0 GREET_PROG~ greet_prog~ {178} Greet Programs {200} >greet_prog <percentage> {300} The argument is a number between 1 and 100 This trigger is checked every time a PC enters the room with the mobile, object or room with the prog. This prog will trigger whether or not the character can be seen. The greet_prog will not trigger when a mobile with the trigger is fighting. ~ 0 ALL_GREET_PROG~ all_greet_prog~ {178} All Greet Programs {200} >all_greet_prog <percentage> {300} the all_greet_prog has been deprecated in Mud20. With the advent of do_greet and group_greet progs, there's no real reason to not let a standard greet_prog do the job of an all_greet_prog as well. ~ 0 DESC_PROG~ desc_prog~ {178} Desc Programs {200} >desc_prog <percentage> {300} The argument is a number between 1 and 100. Triggers whenever someone looks at the mobile, object or room with the prog. This can be used to give a random desc to something or someone, or to trigger a reaction, or other possibilities. ~ 0 DO_GREET_PROG~ do_greet_prog~ {178} Do Greet Programs {200} >do_greet_prog <percentage> {300} The argument is a number between 1 and 100 This trigger is checked when a PC actively greets a mobile using the 'greet' command. This effectively restricts the trigger to someone actively trying to interact with the mobile. This is quite shamelessly borrowed from the cues of online games with NPCs that trigger when interacted with. Like sayto triggers, handy for preventing accidental triggers. The do_greet_prog will not trigger when the mobile is fighting. ~ 0 GROUP_GREET_PROG~ group_greet_prog~ {178} Group Greet Programs {200} >group_greet_prog <percentage> {300} The argument is a number between 1 and 100 This trigger is checked every time a PC enters the room with the mobile and if the argument is greater than a percentage roll the trigger is activated. The mobile must be able to see the person walking in, otherwise the prog will not trigger. If a group enters all at once, the prog is only triggered once, rather than once for each person in the group. Use this when writing quests that are meant to be taken as a group, so the mobile doesn't spam the room when PCs enter. The group_greet_prog will not trigger when the mobile is fighting. ~ 0 ENTRY_PROG~ entry_prog~ {178} Entry Programs {200} >entry_prog <percentage> {300} The argument is a number between 1 and 100. This trigger is checked every time a mobile walks into a room and if the argument is greater than a percentage roll the trigger is activated. If there is no $r variable in the program of the entry_prog this will happen even if there is no PC in the room with the mob. Mobs can have multiple entry_progs, but only 1 can trigger each time. So progs must be arranged in decreasing order of percentage. If applied to a room, the program triggers every time a mobile walks into the room with the program. ~ 0 ARRIVAL_PROG~ arrival_prog~ {178} Arrival Programs {200} >arrival_prog <vnum> {300} The argument is a room vnum. Triggered when a mobile enters the final room after doing MPWALKTO, and also when arriving back at it's reset room. If the check matches the vnum of the room presently in, the program activates. ~ 0 GIVE_PROG~ give_prog~ {178} Give Programs {200} >give_prog <argument> {300} When placed on a mobile, the argument must be the name of an object. When placed upon an object, the argument is a percentage from 1 to 100. This trigger is checked every time a mobile with the program is given an object. The argument should always be used with the 'I' format for item vnums, unless you truly want any object with another keyword to trigger the program. Example: A ball of light is vnum 21, so use: give_prog i25 When placed on an object, the give_prog triggers any time the object is given from one PC to a mobile or another PC. $o in the prog will refer to the triggering object. ~ 0 DROP_PROG GET_PROG~ drop_prog get_prog~ {178} Drop/Get Programs {200} >drop_prog <percentage> >get_prog <percentage> {300} The argument is a number between 1 and 100. These triggers are checked when an object with the program is dropped, or picked up. If the argument is greater than a percentage roll the trigger is activated. ~ 0 SAC_PROG~ sac_prog~ {178} Sacrifice Programs {200} >sac_prog <percentage> {300} The argument is a number between 1 and 100. This program triggers when an object with the program is sacrificed. If the argument is greater than a percentage roll the trigger is activated. ~ 0 DAMAGE_PROG~ damage_prog~ {178} Damage Programs {200} >damage_prog <percentage> {300} The argument is a number between 1 and 100. This program triggers when an object with the trigger is equipped by a player and that player does damage with an attack. ~ 0 BUY_PROG~ buy_prog~ {178} Buy Programs {200} >buy_prog <argument> {300} The argument must be the name of an object. This trigger is checked every time a an object is bought from a mobile with the program. The argument should always be used with the 'i' format for item vnums. Example: A ball of light is vnum 21, so use: buy_prog i25 $o in the prog will refer to the triggering object. ~ 0 BRIBE_PROG~ bribe_prog~ {178} Bribe Programs {200} >bribe_prog <argument> {300} The argument must be a number. This trigger is checked whenever money is given to the mobile. If the amount given equals or exceeds the number, the program will be executed. The number is the value in copper pieces. Only one bribe_prog can be triggered each time an amount of coin is given. Multiple progs should be listed in order from largest to smallest, because a bribe prog of 1 copper will trigger whether the amount given is one or a thousand. A prog of a larger amount, if not triggered, will fall to the prog with the next largest amount, and so on. ~ 0 DEATH_PROG~ death_prog~ {178} Death Programs {200} >death_prog <percentage> {300} The argument is a number between 1 and 100. This triggers when the mobile is about to die, before the corpse is made. If the amount given is greater than a percentage roll the program is triggered. The position of the mobile is temporarily set to standing. If applied to a room, the prog triggers whenever an NPC is killed by a PC in the room with the program. ~ 0 TRAP_PROG~ trap_prog~ {178} Trap Programs {200} >trap_prog <percentage> {300} The argument is a number between 1 and 100. This can be set upon a mobile or object that's summoned by a trap using the TRAP_TYPE_MLOAD or TRAP_TYPE_OLOAD flags. The combination of this flag and the mob prog trigger can make for very elaborate and complex traps and trap effects. ~ 75 KILL_PROG~ kill_prog~ {178} Kill Programs {200} >kill_prog <percentage> {300} The argument is a number between 1 and 100. This triggers when the mobile kills a player, before the corpse is made and the player transferred to the death room. It is possible, for example, to use this program to set a bit on the player that causes him to fail a quest should he get killed by the mobile while on that quest. If applied to a room, the program triggers whenever a PC is killed by an NPC in the room with the program. ~ 0 RANGE_PROG~ range_prog~ {178} Range Programs {200} >range_prog <percentage> {300} The argument is a number between 1 and 100. This triggers when a mobile is hit by a range weapon from another room. The shotfrom ifcheck can be used to see the direction the shot came from. ~ 0 TIME_PROG~ time_prog~ {178} Time Programs {200} >time_prog <hour> >day_prog <day of month> >month_prog <month of year> {300} The argument for time_prog is a number between 0 and 23. This is checked every mud hour, if the given hour matches the mud hour the program will be executed. If you use the number 24, the program will be triggered every mud hour. The argument for day_prog is a number between 0 and 29. This is checked every mud day, if the given day matches the mud day the program will be executed. If you use the number 30, the program will be triggered every mud day. The argument for month_prog is a number between 0 and 11. This is checked every mud month, if the given month matches the mud month the program will be executed. If you use the number 24, the program will be triggered every mud month. ~ 0 REPOP_PROG~ repop_prog~ {178} Repop Programs {200} >repop_prog <percentage> {300} The argument is a number between 1 and 100. This triggers when a mobile or object repops after dying or after reset. One possible use for this is to echo a more rational reason for its reappearance than simply reappearing where the original one disappeared. It could also be used to give a nasty surprise to a player who was hanging around waiting for another go at a mobile, by making the mobile do something unexpected. ~ 0 DELAY_PROG~ delay_prog~ {178} Delay Programs {200} >delay_prog <index> {300} The index is a number between -100 and 100, if the index is below 0, the delay program will be carried out even if the mobile is not awake. {200} Syntax: mpdelay <target> <seconds> <index> [argument] {300} -Seconds is the time in seconds of the delay, if the given time is equal or greater than 60, instead of being second based the delay will become mud hours based. -The index is the index of the delay_prog that should be triggered when the delay expires. -The argument can be any valid $* argument, or something of your own choice, or leave it blank if you don't want the mob to remember anything. You can read out this argument at anytime using $X. {300} -You can check if the target is already delayed using: if delayed ($*) ~ 0 EXIT_PROG~ exit_prog~ {178} Exit Programs {200} >exit_prog <direction> {300} The argument is either one of: north, south, east, west, up, down. This trigger is checked every time a PC leaves the room with the mobile or room program. A mobile with the program must be able to see the person walking out, otherwise the exit_prog will not trigger. A room program will always see the person leaving. The exit_prog on a mobile will not trigger when the mobile is fighting. Note exit_progs do not stop the person from leaving the room. Use an intercept program on the direction if you wish to halt the player in their tracks. ~ 0 TRIGGER_PROG~ trigger_prog~ {178} Trigger Programs {200} >trigger_prog [p k] <argument> {300} The argument is a list of keywords separated by spaces. If the first word is the character 'p' by itself then the rest of the word list is considered to be a phrase. If the first word is the character 'k' by itself then the rest of the word list is considered to be a set of keywords which all must be matched. The trigger is activated whenever a keyword (or the phrase) is contained in the mptrigger message. Both the phrase and keywords are not case sensitive. The trigger_prog can only be triggered with the mptrigger <string> command. It is useable both on mobiles, and objects. ~ 0 INTERCEPT_PROG~ intercept_prog~ {178} Intercept Programs {200} >intercept_prog [p k] <argument> {300} The intercept program is a special sort of word trigger that intercepts any command that triggers it. This can either be an unknown command or a known command. A known command is overridden, and only passed when an mpunintercept command is also found in the same program. The argument is a list of keywords separated by spaces. If the first word is the character 'p' by itself then the rest of the word list is considered to be a phrase. If the first word is the character 'k' by itself then the rest of the word list is considered to be a set of keywords which all must be matched. The trigger is activated whenever a keyword (or the phrase) is contained in the intercept message. Neither the phrase or keywords are case sensitive. {a}MPUNINTERCEPT ~ 0 USE_PROG~ use_prog~ {178} Use Programs {200} >use_prog <percentage> {300} The argument is a number between 1 and 100. Triggers on an object when activated with the USE command. This basically allows you to create a plethora of trigger-use items beyond the typical wand, staff or whatever. Note a use_prog overrides any other result of the USE command when it triggers, so it's not advised to use it on other use items, unless a random event during said item's use (a backfire, a curse, etc) is what you're after. ~ 0 WEAR_PROG REMOVE_PROG~ wear_prog remove_prog~ {178} Wear/Remove Programs {200} >wear_prog <percentage> >remove_prog <percentage> {300} The argument is a number between 1 and 100. The program activates if the value exceeds a percentage roll. a wear_prog triggers on an object with the program is equipped. A remove_prog on an object triggers when the object is unequipped. ~ 0 MPROGS200~ Variables~ {300}Variables are used to target certain mobiles or objects in a program as it runs. The possible targets are: $i mobile running the mob program $n mobile or PC who triggered the prog $t mobile or PC if checked for during prog $r random PC selected in a random prog $c object selected during if check in prog $o object running or triggering an obj prog {000} {200} [{178}<{200}] {300}Previous Page {200} [{178}>{200}] {300}Next Page {200} [{178}-{200}] {300}Return {<}MPROGS210 {>}MPROGS201 {-}MPROGS000 'MUD PROGS' ~ 0 MPROGS201~ Variables - Cont'd~ {300} $D name of door direction $d number of door direction $x number generated by if checks $X string set to remember by mob $1 first word of trigger of speech/act/intercept program $9 ninth word of trigger of speech/act/intercept program $$ will print a single $ self a direct reference to the mob with the prog {000} {200} [{178}<{200}] {300}Previous Page {200} [{178}>{200}] {300}Next Page {200} [{178}-{200}] {300}Return {<}MPROGS200 {>}MPROGS202 {-}MPROGS000 'MUD PROGS' ~ 0 MPROGS202~ Variable Expansion~ {300}When printing a string, mud progs can expand the target of the prog into different words depending on the case and character used after the '$' symbol. variable mob actor vict rand objif obj name $i $n $t $r $c $o short desc* $I $N $T $R $C $O he/she/it $j $e $E $J -- -- him/her/it $k $m $M $K -- -- his/hers/its $l $s $S $L -- -- * When expanding the short desc, if $n is a PC, either the adjective, or name of the PC is printed to each onlooker in the room, dependant upon whether the onlooker has the PC greeted or not. {000} {200} [{178}<{200}] {300}Previous Page {200} [{178}>{200}] {300}Next Page {200} [{178}-{200}] {300}Return {<}MPROGS201 {>}MPROGS210 {-}MPROGS000 'MUD PROGS' ~ 0 MPROGS210~ Variable Expansion - Cont'd~ {300}The prog code has the ability to expand certain aspects of a variable into a text string, by tagging the aspect after the variable with a '.': {178} $n.name returns the name of the target. $n.adj returns the ungreeted adjective of the target. $n.sex returns the sex of the target. $n.class returns the current class of the target. $n.race returns the race of the target. $n.god returns the deity of the target. $n.level returns the level of the target. $o.type returns the item type of an object. {000} {200} [{178}<{200}] {300}Previous Page {200} [{178}>{200}] {300}Next Page {200} [{178}-{200}] {300}Return {<}MPROGS202 {>}MPROGS200 {-}MPROGS000 'MUD PROGS' ~ 0 MPROGS300~ Control Flow~ {300}The following commands are available to control the flow in a mobile program: if checks for a condition example : if level ($n) > 10 or checks for a condition example : or level ($n) < 50 else is called when the result of the if/or checks are false endif ends an if check break bails out of the entire mobile program switch checks for a condition example : switch level ($n) case checks for a specific value of the switch default checks if no case value has been found endswitch ends a switch mpquiet on all commands are executed unseen mpquiet off ends the quiet mode mpunintercept passes the command that triggers an intercept_prog ~ 0 APPLIES APPLYS~ Affect Applys~ {300}A comprehensive (and exhaustive) list of applies for use in object affects, spell affects, racial modifiers and etc: {178} editor string flag modifier{300} str APPLY_STR strength dex APPLY_DEX dexterity int APPLY_INT intelligence wis APPLY_WIS wisdom con APPLY_CON constitution cha APPLY_CHA charisma sex APPLY_SEX sex race APPLY_RACE race level APPLY_LEVEL level size APPLY_SIZE size mana APPLY_MANA spell points hp APPLY_HIT hit points move APPLY_MOVE endurance save_fort APPLY_SAVING_FORT circumstance to FORT save_refl APPLY_SAVING_REFL circumstance to REFL {200} [{178}>{200}] {300}Next Page {200} [{178}-{200}] {300}Return {>}APPLYS02 {-}APPLIES APPLYS ~ 0 APPLYS02~ Affect Applys 2~ {178} editor string flag modifier{300} save_will APPLY_SAVING_WILL circumstance to WILL saves APPLY_SAVES circumstance to saves deflect APPLY_DEFLECT deflection AC dodge APPLY_DODGE dodge AC shield APPLY_SHIELD shield AC armor APPLY_ARMOR armor bonus comp_skill APPLY_COMP_SKILL competence to skills comp_tohit APPLY_COMP_TOHIT competence to hit comp_dam APPLY_COMP_DAMG competence to damage comp_fort APPLY_COMP_FORT competence to FORT comp_refl APPLY_COMP_REFL competence to REFL comp_will APPLY_COMP_WILL competence to WILL comp_saves APPLY_COMP_SAVES competence to saves enhance_ac APPLY_ENHANCE_AC enhancement to AC tohit APPLY_HITROLL enhancement to hit dam APPLY_DAMROLL enhancement to damage {200} [{178}<{200}] {300}Previous Page {200} [{178}>{200}] {300}Next Page {200} [{178}-{200}] {300}Return {<}APPLIES APPLYS {>}APPLYS03 {-}APPLIES APPLYS ~ 0 APPLYS03~ Affect Applys 3~ {178} editor string flag modifier{300} insight_ac APPLY_INS_AC insight to AC insight_tohit APPLY_INS_TOHIT insight to hit insight_fort APPLY_INS_FORT insight to FORT insight_refl APPLY_INS_REFL insight to REFL insight_will APPLY_INS_WILL insight to WILL insight_saves APPLY_INS_SAVES insight to saves insight_skill APPLY_INS_SKILL insight to skills luck_skill APPLY_LUCK_SKILL luck to skills luck_tohit APPLY_LUCK_TOHIT luck to hit luck_dam APPLY_LUCK_DAMG luck to damage luck_fort APPLY_LUCK_FORT luck to FORT luck_refl APPLY_LUCK_REFL luck to REFL luck_will APPLY_LUCK_WILL luck to WILL luck_saves APPLY_LUCK_SAVES luck to save {200} [{178}<{200}] {300}Previous Page {200} [{178}>{200}] {300}Next Page {200} [{178}-{200}] {300}Return {<}APPLYS02 {>}APPLYS04 {-}APPLIES APPLYS ~ 0 APPLYS04~ Affect Applys 4~ {178} editor string flag modifier{300} morale_tohit APPLY_MOR_TOHIT morale to hit morale_dam APPLY_MOR_DAMG morale to damage morale_fort APPLY_MOR_FORT morale to FORT morale_refl APPLY_MOR_REFL morale to REFL morale_will APPLY_MOR_WILL morale to WILL morale_saves APPLY_MOR_SAVES morale to saves morale_skill APPLY_MOR_SKILL morale to skills natural_ac APPLY_NATURAL_AC natural armor resist_vs_good APPLY_RES_GOOD saves vs. good resist_vs_evil APPLY_RES_EVIL saves vs. evil resist_vs_law APPLY_RES_LAW saves vs. law resist_vs_chaos APPLY_RES_CHAOS saves vs. chaos resist_vs_saves APPLY_RES_SAVES to all saves save_vs_spell APPLY_RES_SPELL saves vs. spells {200} [{178}<{200}] {300}Previous Page {200} [{178}>{200}] {300}Next Page {200} [{178}-{200}] {300}Return {<}APPLYS03 {>}APPLYS05 {-}APPLIES APPLYS ~ 0 APPLYS05~ Affect Applys 5~ {178} editor string flag modifier{300} appraise APPLY_APPRAISE to appraise skill bluff APPLY_BLUFF to bluff skill climb APPLY_CLIMB to climb skill concentration APPLY_CONCENTRATE to concentration skill decipher APPLY_DECIPHER to decipher skill diplomacy APPLY_DIPLOMACY to diplomacy skill disable_device APPLY_DISABLE to disable device skill disguise APPLY_DISGUISE to disguise skill escape APPLY_ESCAPE to escape artist skill first_aid APPLY_FIRST_AID to first aid skill streetwise APPLY_GATHER_INFO to gather info skill handle_animal APPLY_HANDLE_ANIM to handle animal skill hide APPLY_HIDE to hide skill intimidate APPLY_INTIMIDATE to intimidate skill jump APPLY_JUMP to jump skill {200} [{178}<{200}] {300}Previous Page {200} [{178}>{200}] {300}Next Page {200} [{178}-{200}] {300}Return {<}APPLYS04 {>}APPLYS06 {-}APPLIES APPLYS ~ 0 APPLYS06~ Affect Applys 6~ {178} editor string flag modifier{300} listen APPLY_LISTEN to sound perception mount APPLY_MOUNT to mount skill pick_lock APPLY_OPEN_LOCK to pick lock skill perform APPLY_PERFORM to perform skill search APPLY_SEARCH to search skill sneak APPLY_SNEAK to sneak skill sense_motive APPLY_SENSE_MOT to sense motive skill sleight_of_hand APPLY_SLEIGHT to sleight of hand spellcraft APPLY_SPELLCRAFT to spellcraft skill spot APPLY_SIGHT to sight perception survival APPLY_SURVIVAL to survival skill swim APPLY_SWIM to swim skill tumble APPLY_TUMBLE to tumble skill use_magic APPLY_USE_MAGIC to use magic skill {200} [{178}<{200}] {300}Previous Page {200} [{178}>{200}] {300}Next Page {200} [{178}-{200}] {300}Return {<}APPLYS05 {>}APPLYS07 {-}APPLIES APPLYS ~ 0 APPLYS07~ Affect Applys 7~ {178} editor string flag modifier{300} alchemy APPLY_CRAFT_ALCHEMY to alchemy skill armorsmithing APPLY_CRAFT_ARMOR to armorsmithing skill bowmaking APPLY_CRAFT_BOWS to bowmaking skill cooking APPLY_CRAFT_COOKING to cooking skill fletching APPLY_CRAFT_FLETCHING to fletching skill jewelry APPLY_CRAFT_JEWELRY to jewelcrafting skill leathermaking APPLY_CRAFT_LEATHER to leathermaking skill mining APPLY_CRAFT_MINING to mining skill poisoncrafting APPLY_CRAFT_POISON to poisoncraft skill tailoring APPLY_CRAFT_TAILOR to tailoring skill trapmaking APPLY_CRAFT_TRAPS to trapmaking skill weaponsmithing APPLY_CRAFT_WEAPONS to weaponsmithing skill spell_slot_1 APPLY_SPELL_SLOTS_1 1st circle spell slot spell_slot_2 APPLY_SPELL_SLOTS_2 2nd circle spell slot spell_slot_3 APPLY_SPELL_SLOTS_3 3rd circle spell slot spell_slot_4 APPLY_SPELL_SLOTS_4 4th circle spell slot spell_slot_5 APPLY_SPELL_SLOTS_5 5th circle spell slot {200} [{178}<{200}] {300}Previous Page {200} [{178}>{200}] {300}Next Page {200} [{178}-{200}] {300}Return {<}APPLYS06 {>}APPLYS08 {-}APPLIES APPLYS ~ 0 APPLYS08~ Affect Applys 8~ {178} editor string flag modifier{300} str_damage APPLY_STR_DAMAGE STR damage dex_damage APPLY_DEX_DAMAGE DEX damage con_damage APPLY_CON_DAMAGE CON damage int_damage APPLY_INT_DAMAGE INT damage wis_damage APPLY_WIS_DAMAGE WIS damage cha_damage APPLY_CHA_DAMAGE DEX damage str_drain APPLY_STR_DRAIN STR drain dex_drain APPLY_DEX_DRAIN DEX drain con_drain APPLY_CON_DRAIN CON drain int_drain APPLY_INT_DRAIN INT drain wis_drain APPLY_WIS_DRAIN WIS drain cha_drain APPLY_CHA_DRAIN DEX drain save_vs_acid APPLY_SAVE_ACID save vs. acid save_vs_air APPLY_SAVE_AIR save vs. air spells save_vs_chaotic APPLY_SAVE_CHAOTIC save vs. chaotic spells {200} [{178}<{200}] {300}Previous Page {200} [{178}>{200}] {300}Next Page {200} [{178}-{200}] {300}Return {<}APPLYS07 {>}APPLYS09 {-}APPLIES APPLYS ~ 0 APPLYS09~ Affect Applys 9~ {178} editor string flag modifier{300} save_vs_charm APPLY_SAVE_CHARM save vs. charm spells save_vs_cold APPLY_SAVE_COLD save vs. cold save_vs_compulsion APPLY_SAVE_COMPULSION save vs. compulsion spells save_vs_darkness APPLY_SAVE_DARKNESS save vs. darkness spells save_vs_death APPLY_SAVE_DEATH save vs. death magic save_vs_disease APPLY_SAVE_DISEASE save vs. disease save_vs_earth APPLY_SAVE_EARTH save vs. earth spells save_vs_electric APPLY_SAVE_ELECTRIC save vs. electricity save_vs_evil APPLY_SAVE_EVIL save vs. evil spells save_vs_fear APPLY_SAVE_FEAR save vs. fear save_vs_fire APPLY_SAVE_FIRE save vs. fire save_vs_force APPLY_SAVE_FORCE save vs. force spells save_vs_good APPLY_SAVE_GOOD save vs. good spells save_vs_illusion APPLY_SAVE_ILLUSION save vs. illusion save_vs_lawful APPLY_SAVE_LAWFUL save vs. lawful spells {200} [{178}<{200}] {300}Previous Page {200} [{178}>{200}] {300}Next Page {200} [{178}-{200}] {300}Return {<}APPLYS08 {>}APPLYS10 {-}APPLIES APPLYS ~ 0 APPLYS10~ Affect Applys 10~ {178} editor string flag modifier{300} save_vs_light APPLY_SAVE_LIGHT save vs. light spells save_vs_magic APPLY_SAVE_MAGIC save vs. magic save_vs_mind APPLY_SAVE_MIND save vs. mind affects save_vs_negative APPLY_SAVE_NEGATIVE save vs. negative energy save_vs_paralysis APPLY_SAVE_PARALYSIS save vs. paralysis save_vs_petri APPLY_SAVE_PETRI save vs. pretification save_vs_poison APPLY_SAVE_POISON save vs. poison save_vs_healing APPLY_SAVE_HEALING save vs. healing energy save_vs_sleep APPLY_SAVE_SLEEP save vs. sleep save_vs_sonic APPLY_SAVE_SONIC save vs. sonic spells save_vs_water APPLY_SAVE_WATER save vs. water spells immune_acid APPLY_IMM_ACID immunity vs. acid immune_air APPLY_IMM_AIR immunity vs. air spells immune_chaotic APPLY_IMM_CHAOTIC immunity vs. chaotic spells immune_charm APPLY_IMM_CHARM immunity vs. charm spells {200} [{178}<{200}] {300}Previous Page {200} [{178}>{200}] {300}Next Page {200} [{178}-{200}] {300}Return {<}APPLYS09 {>}APPLYS11 {-}APPLIES APPLYS ~ 0 APPLYS11~ Affect Applys 11~ {178} editor string flag modifier{300} immune_cold APPLY_IMM_COLD immunity vs. cold immune_compulsion APPLY_IMM_COMPULSION immunity vs. compulsion spells immune_darkness APPLY_IMM_DARKNESS immunity vs. darkness spells immune_death APPLY_IMM_DEATH immunity vs. death magic immune_disease APPLY_IMM_DISEASE immunity vs. disease immune_earth APPLY_IMM_EARTH immunity vs. earth spells immune_electric APPLY_IMM_ELECTRIC immunity vs. electricity immune_evil APPLY_IMM_EVIL immunity vs. evil spells immune_fear APPLY_IMM_FEAR immunity vs. fear immune_fire APPLY_IMM_FIRE immunity vs. fire immune_force APPLY_IMM_FORCE immunity vs. force spells immune_good APPLY_IMM_GOOD immunity vs. good spells immune_illusion APPLY_IMM_ILLUSION immunity vs. illusion immune_lawful APPLY_IMM_LAWFUL immunity vs. lawful spells immune_light APPLY_IMM_LIGHT immunity vs. light spells {200} [{178}<{200}] {300}Previous Page {200} [{178}>{200}] {300}Next Page {200} [{178}-{200}] {300}Return {<}APPLYS10 {>}APPLYS12 {-}APPLIES APPLYS ~ 0 APPLYS12~ Affect Applys 12~ {178} editor string flag modifier{300} immune_magic APPLY_IMM_MAGIC immunity vs. magic immune_mind APPLY_IMM_MIND immunity vs. mind affects immune_negative APPLY_IMM_NEGATIVE immunity vs. negative energy immune_paralysis APPLY_IMM_PARALYSIS immunity vs. paralysis immune_petri APPLY_IMM_PETRI immunity vs. pretification immune_poison APPLY_IMM_POISON immunity vs. poison immune_healing APPLY_IMM_HEALING immunity vs. healing energy immune_sleep APPLY_IMM_SLEEP immunity vs. sleep immune_sonic APPLY_IMM_SONIC immunity vs. sonic immune_water APPLY_IMM_WATER immunity vs. water spells spell_res APPLY_SPELL_RES spell resistance sr_vs_chaos APPLY_SR_CHAOS spell resist vs. chaotic sr_vs_evil APPLY_SR_EVIL spell resist vs. evil sr_vs_good APPLY_SR_GOOD spell resist vs. good sr_vs_law APPLY_SR_LAW spell resist vs. lawful {200} [{178}<{200}] {300}Previous Page {200} [{178}>{200}] {300}Next Page {200} [{178}-{200}] {300}Return {<}APPLYS11 {>}APPLYS13 {-}APPLIES APPLYS ~ 0 APPLYS13~ Affect Applys 13~ {178} editor string flag modifier{300} fast_healing APPLY_FAST_HEALING fast healing regeneration APPLY_REGENERATION regeneration turn_resistance APPLY_TURN_RESIST turn resistance darkvision APPLY_DARKVISION darkvision lowlight_vision APPLY_LOWLIGHT_VISION lowlight vision concealment APPLY_CONCEALMENT concealment fortification APPLY_FORTIFICATION fortification dr_bash APPLY_DR_BASH DR/bashing dr_pierce APPLY_DR_PIERCE DR/piercing dr_slash APPLY_DR_SLASH DR/slashing dr_magic APPLY_DR_MAGIC DR/magic dr_good APPLY_DR_GOOD DR/good dr_evil APPLY_DR_EVIL DR/evil dr_law APPLY_DR_LAW DR/law dr_chaos APPLY_DR_CHAOS DR/chaos {200} [{178}<{200}] {300}Previous Page {200} [{178}>{200}] {300}Next Page {200} [{178}-{200}] {300}Return {<}APPLYS12 {>}APPLYS14 {-}APPLIES APPLYS ~ 0 APPLYS14~ Affect Applys 14~ {178} editor string flag modifier{300} dr_iron APPLY_DR_IRON DR/iron dr_silver APPLY_DR_SILVER DR/silver dr_adamantine APPLY_DR_ADAMANTINE DR/adamantine dr_none APPLY_DR_NONE DR/- dr_acid APPLY_DR_ACID acid resistance dr_cold APPLY_DR_COLD cold resistance dr_electric APPLY_DR_ELECTRIC electric resistance dr_fire APPLY_DR_FIRE fire resistance dr_sonic APPLY_DR_SONIC sonic resistance {200} [{178}<{200}] {300}Previous Page {200} [{178}>{200}] {300}Next Page {200} [{178}-{200}] {300}Return {<}APPLYS13 {>}APPLYS15 {-}APPLIES APPLYS ~ 0 APPLYS15~ Affect Applys 15~ {078}The following applies can only be applied to object affects, and cannot be used for racial or mobile applies. {178} editor string flag modifier{300} weapon_flag APPLY_WEAPON_FLAG adds weapon flag objval_0 APPLY_OBJVAL_0 applies to objval 0 objval_1 APPLY_OBJVAL_1 applies to objval 1 objval_2 APPLY_OBJVAL_2 applies to objval 2 objval_3 APPLY_OBJVAL_3 applies to objval 3 objval_4 APPLY_OBJVAL_4 applies to objval 4 objval_5 APPLY_OBJVAL_5 applies to objval 5 objval_6 APPLY_OBJVAL_6 applies to objval 6 objval_7 APPLY_OBJVAL_7 applies to objval 7 room_sector APPLY_ROOM_SECTOR room sector value room_light APPLY_ROOM_LIGHT room lighting {200} [{178}<{200}] {300}Previous Page {200} [{178}-{200}] {300}Return {<}APPLYS14 {-}APPLIES APPLYS ~ 0 MPROGS400~ Operators~ {300} Numeric Operators: == equals != does not equal > bigger than < smaller than >= bigger or equal than <= smaller or equal than String Operators: (not case sensitive) == equals != does not equal / contains !/ does not contain ~ 0 'IF CHECKS' 'MPROG IF CHECKS'~ Mprog If Checks~ {178}These are the conditions that can be checked using the IF and OR control flow in a mud prog. {200} [{178}A{200}] {300}General {200} [{178}B{200}] {300}Mobile {200} [{178}C{200}] {300}Player {200} [{178}D{200}] {300}Character {200} [{178}E{200}] {300}Group {200} [{178}F{200}] {300}Skills {200} [{178}G{200}] {300}Statistics {200} [{178}H{200}] {300}Object {200} [{178}I{200}] {300}Room {200} [{178}-{200}] {300}Return {-}MPROGS000 'MUD PROGS' {a}MPROGS510 {b}MPROGS540 {c}MPROGS570 {d}MPROGS600 {e}GROUPIFCHECKS {f}SKILLIFCHECKS {g}STATIFCHECKS {h}MPROGS630 {i}MPROGS660 ~ 0 MPROGS510~ General If Checks~ {200} [{178}A{200}] {300} areaquest {200} [{178}B{200}] {300} day {200} [{178}C{200}] {300} existsarea {200} [{178}D{200}] {300} existsroom {200} [{178}E{200}] {300} isday {200} [{178}F{200}] {300} isnight {200} [{178}G{200}] {300} month {200} [{178}H{200}] {300} number {200} [{178}I{200}] {300} numberrange {200} [{178}J{200}] {300} rand {200} [{178}K{200}] {300} time {200} [{178}-{200}] {300} Return ~ 0 'IF RAND'~ Rand~ {200}Syntax: if rand (percentage) {300} The rand if check will generate a value between 1 and 100 and check if the that value is smaller or equal to the given percentage. $x will hold the generated percentage. ~ 0 'IF NUMBER'~ Number~ {200}Syntax: if number ($*) == integer {300} The number if check can be used for the $n $r $t $o $c $x and $X variable. In the case of objects and mobiles it will compare the vnum of given variable. $x will hold the compared value. ~ 0 'IF NAME'~ Name~ {200}Syntax: if name ($*) == string {300} The name if check can be used for the $n $r $t $o $c and $X variable. ~ 0 'IF TIME'~ Time~ {200}Syntax: if time () == hour {300} The time will compare the given hour to the current mud hour. $x will hold the current mud hour. ~ 0 'IF DAY'~ day~ {200}Syntax: if day () == [1-30] {300} Compares the given numeric day of the month to the current game day. $x will hold the current day of the game month. ~ 0 'IF MONTH'~ month~ {200}Syntax: if month () == [1-12] {300} The time will compare the given numeric month to the current game month. $x will hold the current game month. ~ 0 'IF ISDAY'~ isday~ {200}Syntax: if isday () {300} Checks if the mud time is between 5am and 7pm. ~ 0 'IF ISNIGHT'~ isnight~ {200}Syntax: if isnight () {300} Checks if the mud time is between 8pm and 4am. ~ 0 'IF EXISTSROOM'~ Existsroom~ {200}Syntax: if existsroom ($*|obj|mob|plr|string) {300} The existsroom if check can be used for the $n $r $o and $X variable, it can also be used to check for a provided name of a mob, obj, or player you expect to be in the room, or not to be. Returns TRUE if the target is in the same room as the mob with the prog. The obj, mob, and plr argument will select a random obj, mob, or player in the room. $t will refer to the found character using 'plr', 'mob' or a name. $c will refer to the found object using the 'obj' variable or a name. ~ 0 'IF EXISTSAREA'~ Existsarea~ {200}Syntax: if existsarea ($*|string) {300} The existsarea if check can be used for the $n $r $o and $X variable, it can also be used to check for a provided name of a mob, obj, or player you expect to be in the area, or not to be. Returns TRUE if the target is in the same area as the mob with the prog. ~ 0 'IF NUMBERRANGE~ Numberrange~ {200}Syntax: if numberrange(low,high) == integer {300} The numberrange if check can be used to generate a random number between the given range. $x will hold the generated random number. ~ 0 'IF AREAQUEST'~ Areaquest~ {300}Syntax: if areaquest (startBit, numBits, $*) == integer Checks if the quest bits of area of $i $c or $o equals integer. The quest checked will be of the area the mob or obj belongs to. $x will hold the value of the checked bits ~ 0 MPROGS540~ Mobile If Checks~ {200} [{178}A{200}] {300} delayed {200} [{178}B{200}] {300} iscompanion {200} [{178}C{200}] {300} isfamiliar {200} [{178}D{200}] {300} ishorse {200} [{178}E{200}] {300} ispet {200} [{178}F{200}] {300} shotfrom {200} [{178}-{200}] {300} Return {-}'IF CHECKS' 'MPROG IF CHECKS' ~ 0 'IF ISCOMPANION'~ iscompanion~ {200}Syntax: if iscompanion ($*) {300} Checks whether $i $n $t $r is an animal companion. $t will refer to the target's master if it is a companion. ~ 0 'IF ISFAMILIAR'~ isfamiliar~ {200}Syntax: if isfamiliar ($*) {300} Checks whether $i $n $t $r is a familiar. $t will refer to the target's master if it is a familiar. ~ 0 'IF ISHORSE'~ isfamiliar~ {200}Syntax: if ishorse ($*) {300} Checks whether $i $n $t $r is a bonded warhorse. $t will refer to the target's master if it is a warhorse. ~ 0 'IF ISPET'~ ispet~ {200}Syntax: if ispet ($*) {300} Checks whether $i $n $t $r is a pet. $t will refer to the target's master if it is a pet. ~ 0 'IF SHOTFROM'~ Shotfrom~ {200}Syntax: if shotfrom ($i) == direction {300} The shotfrom ifcheck will compare given direction to the attacker's direction. $D will hold the name of the direction the mob was attacked from. ~ 0 'IF DELAYED'~ Delayed~ {200}Syntax: if delayed ($*) {300} The delayed if check can be used for the $i $n $r and $t variable. $x will hold the total delay in either seconds or mud hours for mobiles. if the target is a player it will hold their current lag timer. ~ 0 MPROGS570~ Player If Checks~ {200} [{178}A{200}] {300} class {200} [{178}B{200}] {300} hasadj {200} [{178}C{200}] {300} hasdesc {200} [{178}D{200}] {300} iscriminal {200} [{178}E{200}] {300} isdovoted {200} [{178}F{200}] {300} iskiller {200} [{178}G{200}] {300} isthief {200} [{178}H{200}] {300} mclass {200} [{178}I{200}] {300} pcsinarea {200} [{178}J{200}] {300} pcsinroom {200} [{178}K{200}] {300} questr {200} [{178}L{200}] {300} reputation {200} [{178}M{200}] {300} whichgod {200} [{178}-{200}] {300} Return {-}'IF CHECKS' 'MPROG IF CHECKS' ~ 0 'IF REPUTATION'~ reputation~ {200}Syntax: if reputation ($*) == value {300} Compares the reputation score of $n $r or $t to the given value. $x will hold the actual reputation score of the player. ~ 0 'IF ISDEVOTED'~ isdevoted~ {200}Syntax: if isdevoted ($*) {300} Checks if $n $r or $t has a patron deity or not. $x will hold the actual deity of the player. ~ 0 'IF ISCRIMINAL'~ Iscriminal~ {200}Syntax: if iscriminal ($*) {300} Checks if $n $r or $t has a criminal record or bounty set in the mob's area. ~ 0 'IF HASDESC'~ hasdesc~ {200}Syntax: if hasdesc ($*) {300} Checks if $n $r or $t has a player description set or not. ~ 0 'IF HASADJ'~ hasadj~ {200}Syntax: if hasadj ($*) {300} Checks if $n $r or $t has a player adjective set or not. ~ 0 'IF ISKILLER'~ Iskiller~ {200}Syntax: if iskiller ($*) {300} Checks if $n $r or $t has the pkill flag set. ~ 0 'IF ISTHIEF'~ Isthief~ {200}Syntax: if isthief ($*) {300} Checks if $n $r or $t has the player thief flag set. ~ 0 'IF CLASS'~ Class~ {200}Syntax: if class ($*) == bitvector {300} This compares the class of $n $r or $t to given class name or bitvector. $x will hold the compared value - either the actual class of the character, or the compared class if the player in fact has levels in the given class. ~ 0 'IF MCLASS'~ Class~ {200}Syntax: if mclass ($*, classname) == level {300} Compares the class level of $n $r or $t in the given class to the value. $x will hold the class level in the given class. ~ 0 'IF WHICHGOD'~ Whichgod~ {200}Syntax: if whichgod ($*) == bitvector {300} This compares the god of $n $r or $t to given name or bitvector. $x will hold the actual deity of the player. ~ 0 'IF PCSINAREA'~ Pcsinarea~ {200}Syntax: if pcsinarea (roomvnum) == integer {300} If the roomvnum is left blank it will use the current room the mob is in, you can also use $x if it holds a room vnum. This compares the amount of players in the area of given room to given value. $x will hold the actual number of players in the area. ~ 0 'IF PCSINROOM'~ Pcsinroom~ {200}Syntax: if pcsinroom (roomvnum) == integer {300} If the roomvnum is left blank it will use the current room the mob is in, you can also use $x if it holds a room vnum. This compares the amount of players in the room of given room to given value. $x will hold the actual number of players in the room. ~ 0 'IF QUESTR'~ Questr~ {200}Syntax: if questr (roomvnum, startBit, numBit, $*) == integer {300} This checks the questbits of $i $n $t $r for the area of the given roomvnum {200} [{178}A{200}] {300}More information on quest bits {a}QUESTBITS ~ 0 MPROGS600~ Character if Checks~ {200} [{178}A{200}] {300} align {200} [{178}B{200}] {300} cancarry {200} [{178}C{200}] {300} cansee {200} [{178}D{200}] {300} ethos {200} [{178}E{200}] {300} gold {200} [{178}F{200}] {300} hitprcnt {200} [{178}G{200}] {300} isaffected {200} [{178}H{200}] {300} ischaotic {200} [{178}I{200}] {300} isevil {200} [{178}J{200}] {300} isfight {200} [{178}K{200}] {300} isfollow {200} [{178}L{200}] {300} isgood {200} [{178}M{200}] {300} isimmort {200} [{178}N{200}] {300} islawful {200} [{178}O{200}] {300} isneutral {200} [{178}P{200}] {300} isnpc {200} [{178}Q{200}] {300} ispc {200} [{178}R{200}] {300} ispolymorph {200} [{178}S{200}] {300} isunconcerned {200} [{178}T{200}] {300} isundead {200} [{178}U{200}] {300} level {200} [{178}V{200}] {300} postion {200} [{178}W{200}] {300} quest {200} [{178}X{200}] {300} race {200} [{178}Y{200}] {300} sex {200} [{178}-{200}] {300} Return {-}MPROGS000 'MUD PROGS' ~ 0 'IF ISNPC'~ Isnpc~ {200}Syntax: if isnpc ($*) {300} Checks if $n $r or $t is a mobile. ~ 0 'IF ISIMMORT'~ isimmort~ {200}Syntax: if isimmort ($*) {300} Checks if $n $r or $t is an immortal. ~ 0 'IF ISPC'~ Ispc~ {200}Syntax: if ispc ($*) {300} Checks if $n $r or $t is a player. ~ 0 'IF ISUNDEAD'~ isundead~ {200}Syntax: if isundead ($*) {300} Checks if $n $r or $t is undead. ~ 0 'IF ISGOOD'~ Isgood~ {200}Syntax: if isgood ($*) {300} Checks if $i $n $r or $t is of good alignment. ~ 0 'IF ISEVIL'~ Isevil~ {200}Syntax: if isevil ($*) {300} Checks if $i $n $r or $t is of evil alignment. ~ 0 'IF ISNEUTRAL'~ Isneutral~ {200}Syntax: if isneutral ($*) {300} Checks if $i $n $r or $t is of neutral alignment. ~ 0 'IF ISCHAOTIC'~ Ischaotic~ {200}Syntax: if ischaotic ($*) {300} Checks if $i $n $r or $t is of chaotic ethos. ~ 0 'IF ISLAWFUL'~ Islawful~ {200}Syntax: if islawful ($*) {300} Checks if $i $n $r or $t is of lawful ethos. ~ 0 'IF ISUNCONCERNED'~ Isunconcerned~ {200}Syntax: if isunconcerned ($*) {300} Checks if $i $n $r or $t is of neutral ethos ~ 0 'IF CANSEE'~ Cansee~ {200}Syntax: if cansee ($*) {300} Checks if mobile can see $n $r or $t. ~ 0 'IF CANCARRY'~ Cancarry~ {200}Syntax: if cancarry ($*) {300} Checks if $i $n $r or $t is capable of carrying any more items. ~ 0 'IF ISPOLYMORPH'~ ispolymorph~ {200}Syntax: if ispolymorph ($*) {300} Checks if $i $n $r or $t is under a polymorph or shapechange affect. $x will store the actual race of the target. ~ 0 'IF ISAFFECTED'~ Isaffected~ {200}Syntax: if isaffected ($*) == 'skill name' {300} Checks if $i $n $r or $t is affected by given spell, skill or ability. ~ 0 'IF HITPRCNT'~ Hitprcnt~ {200}Syntax: if hitprcnt ($*) == percentage {300} Checks how current hit points of $i $n $r or $t compares to a given percentage of their maximum hit point total. $x will hold the target's hitpoints percentage. ~ 0 'IF ALIGN'~ align~ {200}Syntax: if align ($*) == number {300} Checks alignment of $i $n $r or $t against a given value (-1000 to 1000). $x will hold the target's actual alignment score. ~ 0 'IF ETHOS'~ ethos~ {200}Syntax: if ethos ($*) == number {300} Checks ethos of $i $n $r or $t against a given value (-1000 to 1000). $x will hold the target's actual ethos score. ~ 0 'IF SEX'~ Sex~ {200}Syntax: if sex ($*) == bitvector {300} Checks if gender of $i $n $r or $t matches given bitvector. $x will hold the target's actual gender. This compares actual gender - not that gained by any applies. ~ 0 'IF POSITION'~ Position~ {200}Syntax: if position ($*) == bitvector {300} Checks if position of $i $n $r or $t matches given bitvector. $x will hold the target's actual position. ~ 0 'IF LEVEL'~ Level~ {200}Syntax: if level ($*) == integer {300} Compares the character level of $i $n $r or $t to a given integer. $x will hold the target's level. ~ 0 'IF RACE'~ Race~ {200}Syntax: if race ($*) == bitvector {300} Compares the race of $i $n $r or $t to the given bitvector. This compares against the victim's current race - including polymorph affects. $x will hold the target's current race. ~ 0 'IF GOLD'~ Gold~ {200}Syntax: if gold ($*) == integer {300} Compares the gold of $i $n $r or $t against an integer, in copper. $x will hold the target's actual wealth in copper. ~ 0 'IF QUEST'~ Quest~ {200}Syntax: if quest (startBit, numBits, $*) == integer Checks if the quest bits of $i $n $r or $t equals integer. The bits checked will be for the area of the mob/obj/room running the prog. $x will hold the value of the checked bits. {200} [{178}I{200}] {300}More information on quest bits {a}QUESTBITS ~ 0 'IF ISFIGHT'~ Isfight~ {200}Syntax: if isfight ($*) {300} Checks if $i $n $r or $t is fighting someone. $t will refer to the oponent the target is fighting ~ 0 'IF ISFOLLOW'~ Isfollow~ {200}Syntax: if isfollow ($*) {300} Checks if $i $n $r or $t is following someone. $t will refer to the character the target is following ~ 0 GROUPIFCHECKS~ Group If Checks~ {200} [{178}X{200}] {300} groupquest {200} [{178}X{200}] {300} groupquestr {200} [{178}X{200}] {300} group_size {200} [{178}X{200}] {300} group_levels {200} [{178}X{200}] {300} hascompanion {200} [{178}X{200}] {300} hasfamiliar {200} [{178}X{200}] {300} hashorse {200} [{178}X{200}] {300} haspet {200} [{178}X{200}] {300} ismounted {200} [{178}-{200}] {300} Return ~ 0 'IF GROUPQUEST'~ groupquest~ {200}Syntax: if groupquest (startBit, numBit, $*) == integer {300} This compares the questbits of all PCs in the group of $i $n $t $r for the area the mobile with program is from. {200} [{178}A{200}] {300}More information on quest bits {a}QUESTBITS ~ 0 'IF GROUPQUESTR'~ groupquestr~ {200}Syntax: if groupquestr (roomvnum, startBit, numBit, $*) == integer {300} This compares the questbits of all PCs in the group of $i $n $t $r for the given area vnum {200} [{178}A{200}] {300}More information on quest bits {a}QUESTBITS ~ 0 'IF GROUP_SIZE'~ group_size~ {200}Syntax: if group_size ($*) == integer {300} This compares the number PCs in the group of $i $n $t $r. $x will store the actual number of PCs in the group. {200} [{178}A{200}] {300}More information on quest bits {a}QUESTBITS ~ 0 'IF GROUP_LEVELS'~ group_levels~ {200}Syntax: if group_levels ($*) == integer {300} This compares the total character levels of all PCs in the group of $i $n $t $r. $x will store the actual total group levels. {200} [{178}A{200}] {300}More information on quest bits {a}QUESTBITS ~ 0 'IF HASCOMPANION'~ hascompanion~ {200}Syntax: if hascompanion ($*) {300} Checks whether $n $t $r has an animal companion. $t will refer to the target's found companion. ~ 0 'IF HASFAMILIAR'~ hasfamiliar~ {200}Syntax: if hasfamiliar ($*) {300} Checks whether $n $t $r has a familiar. $t will refer to the target's found familiar. ~ 0 'IF HASHORSE'~ hasfamiliar~ {200}Syntax: if hashorse ($*) {300} Checks whether $n $t $r has a bonded warhorse. $t will refer to the target's found warhorse. ~ 0 'IF HASPET'~ haspet~ {200}Syntax: if haspet ($*) {300} Checks how many pets $n $t $r has. $x will store the number of pets. ~ 0 'IF ISMOUNTED'~ ismounted~ {200}Syntax: if ismounted ($*) {300} Checks whether $i $n $t $r is riding a mount. $t will refer to the target's mount. ~ 0 MPROGS630~ Object If Checks~ {200} [{178}H{200}] {300} actorhasobjnum {200} [{178}I{200}] {300} actortypewear {200} [{178}I{200}] {300} actorwearsobjnum {200} [{178}A{200}] {300} objtype {200} [{178}G{200}] {300} hasobj {200} [{178}B{200}] {300} objval0, objval1, objval2, objval3, objval4, et al... {200} [{178}H{200}] {300} hasobjnum {200} [{178}I{200}] {300} wearsobjnum {200} [{178}F{200}] {300} objquest {200} [{178}F{200}] {300} ownsmark {200} [{178}F{200}] {300} weapontypewield {200} [{178}-{200}] {300} Return {-}'IF CHECKS' 'MPROG IF CHECKS' ~ 0 'IF OBJTYPE'~ Objtype~ {200}Syntax: if objtype ($*) == bitvector {300} Checks if objtype of $c or $o equals given bitvector $x will hold the object's object type ~ 0 'IF OWNSMARK'~ ownsmark~ {200}Syntax: if ownsmark ($*) {300} Compares the object ownership mark of an object with the prog against the pvnum of $t $n or $r. $x will hold the actual ownsmark of the object. ~ 0 'IF OBJQUEST'~ Objquest~ {178} objquest {200} Syntax: if objquest (startBit, numBits, $*) == integer {300} Compares the quest bits of $c or $o against a given value. $x will hold the value of the checked bits. {200} [{178}A{200}] {300}More information on quest bits {a}QUESTBITS ~ 0 'IF HASOBJ'~ Hasobj~ {200}Syntax: if hasobj ($*) == name {300} Checks if $* has an object with given name. NOTE: It's always better to use HASOBJNUM and to use the VNUM of the object being checked for - unless you REALLY want to check for any object whose name matches the given string. $c will refer to the found object. ~ 0 'IF HASOBJNUM'~ Hasobjnum~ {200}Syntax: if hasobjnum ($*) == objvnum {300} Checks if $* has an object with given vnum. $c will refer to the found object. ~ 0 'IF WEARSOBJNUM'~ Wearsobjnum~ {200}Syntax: if wearsobjnum ($*) == objvnum {300} Checks if $* has an object with the given vnum, only if the object is worn. $c will refer to the found object. ~ 0 'IF WEAPONTYPEWIELD'~ weapontypewield~ {200}Syntax: if weapontypewield ($*) == weapon type flag {300} Checks if $t $n $i or $r is wielding a weapon of the specified type. The value can either be the flag or bitvector of the weapon type. $c will refer to the found object. $x will hold the actual weapon type wielded (if any). ~ 0 'IF ACTORHASOBJNUM'~ actorhasobjnum~ {200}Syntax: if actorhasobjnum (vnum) {300} Checks if the character triggering the prog has an object with given vnum. $c will refer to the found object. ~ 0 'IF ACTORTYPEWEAR'~ actortypewear~ {200}Syntax: if actortypewear (bitvector) {300} Checks if the character triggering the prog wears an object with given item type bitvector. $c will refer to the found object. ~ 0 'IF ACTORWEARSOBJNUM'~ actorwearsobjnum~ {200}Syntax: if actorwearsobjnum (vnum) {300} Checks if character triggering the prog has an object with the given vnum, only if the object is worn. $c will refer to the found object. ~ 0 STATIFCHECKS~ Statistic If Checks~ All checks to reference a target's primary stats: In all cases, $x will store the actual roll of the target. {200} [{178}D{200}] {300} cha_check {200} [{178}D{200}] {300} con_check {200} [{178}D{200}] {300} dex_check {200} [{178}D{200}] {300} int_check {200} [{178}D{200}] {300} str_check {200} [{178}D{200}] {300} wis_check {200} [{178}D{200}] {300} curr_cha {200} [{178}D{200}] {300} curr_con {200} [{178}D{200}] {300} curr_dex {200} [{178}D{200}] {300} curr_int {200} [{178}D{200}] {300} curr_str {200} [{178}D{200}] {300} curr_wis {200} [{178}D{200}] {300} perm_cha {200} [{178}D{200}] {300} perm_con {200} [{178}D{200}] {300} perm_dex {200} [{178}D{200}] {300} perm_int {200} [{178}D{200}] {300} perm_str {200} [{178}D{200}] {300} perm_wis {200} [{178}-{200}] {300} Return {-}'IF CHECKS' 'MPROG IF CHECKS' ~ 0 'IF CHA_CHECK' 'IF CON_CHECK' 'IF DEX_CHECK' 'IF INT_CHECK' 'IF STR_CHECK' 'IF WIS_CHECK' ~ Stat Checks~ {200}Syntax: if cha_check ($*) == DC or $opponent {200}Syntax: if con_check ($*) == DC or $opponent {200}Syntax: if dex_check ($*) == DC or $opponent {200}Syntax: if int_check ($*) == DC or $opponent {200}Syntax: if str_check ($*) == DC or $opponent {200}Syntax: if wis_check ($*) == DC or $opponent {300} The target of the prog makes a stat check (1d20 + stat mod). The value is either a fixed DC if the value is numeric, or the opposing stat check of an $opponent. $x will hold the actual stat roll for the target. ~ 0 'IF CURR_CHA' 'IF CURR_CON' 'IF CURR_DEX' 'IF CURR_INT' 'IF CURR_STR' 'IF CURR_WIS' ~ Stat Checks~ {200}Syntax: if curr_cha ($*) == value {200}Syntax: if curr_cha ($*) == value {200}Syntax: if curr_dex ($*) == value {200}Syntax: if curr_int ($*) == value {200}Syntax: if curr_str ($*) == value {200}Syntax: if curr_wis ($*) == value {300} Compares the current stat score (with affects) with the specified value. $x will hold the actual current stat score for the target. ~ 0 'IF PERM_CHA' 'IF PERM_CON' 'IF PERM_DEX' 'IF PERM_INT' 'IF PERM_STR' 'IF PERM_WIS' ~ Stat Checks~ {200}Syntax: if perm_cha ($*) == value {200}Syntax: if perm_cha ($*) == value {200}Syntax: if perm_dex ($*) == value {200}Syntax: if perm_int ($*) == value {200}Syntax: if perm_str ($*) == value {200}Syntax: if perm_wis ($*) == value {300} Compares the permanent stat score with the specified value. $x will hold the actual permanent stat score for the target. ~ 0 SKILLIFCHECKS~ Skill If Checks~ There is a complete set of if checks to run skill checks in mud progs. All of the checks can be made against a fixed DC, and many can be made against an opposing character, when specified in each description. In all cases, $x will store the actual skill roll of the target. {200} [{178}D{200}] {300} bluff_check {200} [{178}D{200}] {300} climb_check {200} [{178}D{200}] {300} concentration_check {200} [{178}D{200}] {300} decipher_script_check {200} [{178}D{200}] {300} diplomacy_check {200} [{178}D{200}] {300} disable_device_check {200} [{178}D{200}] {300} disguise_check {200} [{178}D{200}] {300} escape_artist_check {200} [{178}D{200}] {300} first_aid_check {200} [{178}D{200}] {300} handle_animal_check {200} [{178}D{200}] {300} hide_check {200} [{178}D{200}] {300} intimidate_check {200} [{178}D{200}] {300} jump_check {200} [{178}D{200}] {300} know_arcana_check {200} [{178}D{200}] {300} know_dungoneering_check {200} [{178}D{200}] {300} know_geography_check {200} [{178}D{200}] {300} know_history_check {200} [{178}D{200}] {300} know_local_check {200} [{178}D{200}] {300} know_nature_check {200} [{178}D{200}] {300} know_nobility_check {200} [{178}D{200}] {300} know_planes_check {200} [{178}D{200}] {300} know_religion_check {200} [{178}D{200}] {300} level_check {200} [{178}D{200}] {300} mount_check {200} [{178}D{200}] {300} perception_check {200} [{178}D{200}] {300} pick_lock_check {200} [{178}D{200}] {300} search_check {200} [{178}D{200}] {300} sense_motive_check {200} [{178}D{200}] {300} skilllevel {200} [{178}D{200}] {300} slieght_of_hand_check {200} [{178}D{200}] {300} sneak_check {200} [{178}D{200}] {300} spellcraft_check {200} [{178}D{200}] {300} streetwise_check {200} [{178}D{200}] {300} survival_check {200} [{178}D{200}] {300} swim_check {200} [{178}D{200}] {300} tumble_check {200} [{178}D{200}] {300} use_magic_check {200} [{178}-{200}] {300} Return {-}'IF CHECKS' 'MPROG IF CHECKS' ~ 0 'IF SKILLLEVEL'~ skilllevel~ {200}Syntax: if skilllevel ($*, 'skill name') == value {300} Compares the ranks of $t $i $r or $n in the given skill to a given number. $x will hold the actual ranks in the skill for the target. ~ 0 'IF LEVEL_CHECK'~ level_check~ {200}Syntax: if level_check ($*) == DC or $opponent {300} The target of the prog makes a level check (1d20 + hit dice). The value is either a fixed DC if the value is numeric, or the opposing level check of an $opponent. $x will hold the actual level check roll for the target. ~ 0 'IF BLUFF_CHECK'~ bluff_check~ {200}Syntax: if bluff_check ($*) == DC or $opponent {300} The target of the prog makes a bluff check. The value is either a fixed DC if the value is numeric, or the sense motive roll of an $opponent. Example: if bluff_check($n) == $i This will oppose the bluff roll of the actor with the sense motive roll of the mob with the prog ($i). if bluff_check($n) == 20 This makes the check against a fixed opposing DC of 20. $x will hold the actual bluff roll for the target. ~ 0 'IF CLIMB_CHECK'~ climb_check~ {200}Syntax: if climb_check ($*) == DC {300} The target of the prog makes a climb check against the specified DC. $x will hold the actual climb roll for the target. ~ 0 'IF CONCENTRATION_CHECK'~ concentration_check~ {200}Syntax: if concentration_check ($*) == DC {300} The target of the prog makes a concentration check against the specified DC. Note that DC for standard distractions as noted in the D-20 SRD (including weather, being mounted, or in water) have already been factored into the code. The check will pick the higher DC of the set value of the if check, versus the DC for conditions. $x will hold the actual concentration roll for the target. ~ 0 'IF DECIPHER_SCRIPT_CHECK'~ decipher_script_check~ {200}Syntax: if decipher_script_check ($*) == DC {300} The target of the prog makes a decipher script check against the specified DC. $x will hold the actual decipher script roll for the target. ~ 0 'IF DIPLOMACY_CHECK'~ diplomacy_check~ {200}Syntax: if diplomacy_check ($*) == DC {300} The target of the prog makes a diplomacy check against the specified DC. $x will hold the actual diplomacy roll for the target. ~ 0 'IF DISGUISE_CHECK'~ disguise_check~ {200}Syntax: if disguise_check ($*) == DC or $opponent {300} The target of the prog makes a disguise check against the specified DC. NOTES: If $target is a PC, then the value can either be a fixed numeric DC, or the spot roll of an $opponent. If the if check targets the mobile ($i), then the value must be numeric, as it sets the disguise roll of the NPC, which is then opposed by the spot check of the actor triggering the prog. Also, if the check is made by a PC, and the PC has no disguise, the check will always fail. Example: if disguise_check($n) == $i This will oppose the disguise roll of the actor with the spot roll of the triggered mob ($i). if disguise_check($i) == 20 This sets the mob as being disguised, with a disguise roll of 20. The actor's spot roll with have to match or beat this value to see through the disguise. $x will hold the actual disguise roll for the target. ~ 0 'IF DISABLE_DEVICE_CHECK'~ disable_device_check~ {200}Syntax: if disable_device_check ($*) == DC {300} The target of the prog makes a disable device check against the specified DC. $x will hold the actual disable device roll for the target. ~ 0 'IF ESCAPE_ARTIST_CHECK'~ escape_artist_check~ {200}Syntax: if escape_artist_check ($*) == DC {300} The target of the prog makes a escape artist check against the specified DC. $x will hold the actual escape artist roll for the target. ~ 0 'IF FIRST_AID_CHECK'~ first_aid_check~ {200}Syntax: if first_aid_check ($*) == DC {300} The target of the prog makes a first aid check against the specified DC. $x will hold the actual first aid roll for the target. ~ 0 'IF STREETWISE_CHECK'~ streetwise_check~ {200}Syntax: if streetwise_check ($*) == DC {300} The target of the prog makes a streetwise check against the specified DC. $x will hold the actual streetwise roll for the target. ~ 0 'IF HANDLE_ANIMAL_CHECK'~ handle_animal_check~ {200}Syntax: if handle_animal_check ($*) == DC {300} The target of the prog makes a handle animal check against the specified DC. $x will hold the actual handle animal roll for the target. ~ 0 'IF HIDE_CHECK'~ hide_check~ {200}Syntax: if hide_check ($*) == DC or $opponent {300} The target of the prog makes a stealth check to remain unseen. The value is either a specified DC or against the perception roll of an $opponent. If the actor is not currently stealthed, the check will always fail. $x will hold the actual stealth roll for the target. ~ 0 'IF INTIMIDATE_CHECK'~ intimidate_check~ {200}Syntax: if intimidate_check ($*) == $opponent {300} The target of the prog makes an intimidate check against another target. The value must be an opponent, and cannot be a fixed DC, as Intimidate is always an opposed roll. $x will hold the actual intimidate roll for the target. ~ 0 'IF JUMP_CHECK'~ jump_check~ {200}Syntax: if jump_check ($*) == DC {300} The target of the prog makes a jump check against the specified DC. $x will hold the actual jump roll for the target. ~ 0 'IF MOUNT_CHECK'~ mount_check~ {200}Syntax: if mount_check ($*) == DC {300} The target of the prog makes a mount check against the specified DC. $x will hold the actual mount roll for the target. ~ 0 'IF PERCEPTION_CHECK'~ perception_check~ {200}Syntax: if perception_check ($*) == DC {300} The target of the prog makes a perception check against the specified DC. $x will hold the actual perception roll for the target. ~ 0 'IF PICK_LOCK_CHECK'~ pick_lock_check~ {200}Syntax: if pick_lock_check ($*) == DC {300} The target of the prog makes a pick lock check against the specified DC. $x will hold the actual pick lock roll for the target. ~ 0 'IF SEARCH_CHECK'~ search_check~ {200}Syntax: if search_check ($*) == DC {300} The target of the prog makes a search check against the specified DC. $x will hold the actual search roll for the target. ~ 0 'IF SENSE_MOTIVE_CHECK'~ sense_motive_check~ {200}Syntax: if sense_motive_check ($*) == DC {300} The target of the prog makes a sense motive check against the specified DC. $x will hold the actual sense motive roll for the target. ~ 0 'IF SLEIGHT_OF_HAND_CHECK'~ slieght_of_hand_check~ {200}Syntax: if slieght_of_hand_check ($*) == DC or $opponent {300} The target of the prog makes a sleight of hand check. The value is either a fixed DC if the value is numeric, or the perception roll of an $opponent. Example: if slieght_of_hand_check($n) == $i This will oppose the slieght of hand roll of the actor with the perception roll of the mob with the prog ($i). if slieght_of_hand_check($n) == 20 This makes the check against a fixed opposing DC of 20. $x will hold the actual slieght of hand roll for the target. ~ 0 'IF SNEAK_CHECK'~ sneak_check~ {200}Syntax: if sneak_check ($*) == DC or $opponent {300} The target of the prog makes a stealth check to move silently. The value is either a fixed DC if the value is numeric, or the perception roll of an $opponent. Example: if sneak_check($n) == $i This will oppose the steath roll of the actor with the perception roll of the mob with the prog ($i). if sneak_check($n) == 20 This makes the check against a fixed opposing DC of 20. $x will hold the actual stealth roll for the target. ~ 0 'IF SPELLCRAFT_CHECK'~ spellcraft_check~ {200}Syntax: if spellcraft_check ($*) == DC {300} The target of the prog makes a spellcraft check against the specified DC. $x will hold the actual spellcraft roll for the target. ~ 0 'IF SURVIVAL_CHECK'~ survival_check~ {200}Syntax: if survival_check ($*) == DC {300} The target of the prog makes a survival check against the specified DC. $x will hold the actual survival roll for the target. ~ 0 'IF SWIM_CHECK'~ swim_check~ {200}Syntax: if swim_check ($*) == DC modifier {300} The target of the prog makes a survival check against the specified DC. $x will hold the actual swim roll for the target. ~ 0 MPROGS660~ Room If Checks~ {200} [{178}A{200}] {300} validexit {128} {200} [{178}B{200}] {300} findpath {128} {200} [{178}C{200}] {300} charinroom {128} {200} [{178}C{200}] {300} inroom {128} {200} [{178}C{200}] {300} inarea {128} {200} [{178}D{200}] {300} roomsector {128} {200} [{178}-{200}] {300} Return {-}'IF CHECKS' 'MPROG IF CHECKS' ~ 0 'IF VALIDEXIT'~ Validexit~ {200}Syntax: if validexit (direction) {300} Checks if there is a valid exit in given direction the mobile is allowed to use. If no direction is given, the mob will select a random valid exit. $D will hold the found direction. $x will hold the room vnum the exit leads to. ~ 0 'IF FINDPATH'~ Findpath~ {200}Syntax: if findpath (roomvnum, maxpathlength) {300} Checks if there is a path to given room vnum. The max pathlength is a value between 1 and 100. It is suggested to keep the maxpathlength as low as possible. $D will hold the found direction leading 1 step closer toward the room. $x will hold the length of the found path. ~ 0 'IF INROOM'~ inroom~ {200}Syntax: if inroom ($*) == roomvnum {300} Compares the current room vnum of $i $n $r or $t to a given vnum. $x will hold the vnum of the mob's current room vnum. ~ 0 'IF INAREA'~ inarea~ {200}Syntax: if inarea ($*) == areavnum {300} Compares the current area vnum of $i $n $r or $t to a given vnum. $x will hold the area vnum of the mob's current area. ~ 0 'IF CHARINROOM'~ Inroom~ {200}Syntax: if charinroom ($*) == name {300} Compares the characters in the room of $i $n $r or $t to a given name. $t will refer to the found character (if any). ~ 0 'IF ROOMSECTOR'~ Roomsector~ {200}Syntax: if roomsector (vnum) == bitvector {300} Compares the sector of given room vnum to a given bitvector. $x will hold the value of the room's sector. ~ 0 QUESTBITS~ Questbits for Dummies~ Every Player has 128 bits allocated for every area, at default those bits are all set to zero. The mprog code will allow you to select up to 32 bits at a time from the total of 128. It is highly suggested (so just do it) that you always select groups of 4 bits. This being 4, 8, 12, etc bits. To select a group of bits: -first select the first bit of the group of bits you want to use, this is a number between 0 and 124. The number must dividable by 4, thus being 0, 4, 8, 12, 16, etc. -second select the amount of bits, this is a number between 4 and 32, being 4, 8, 12, 16, etc. Depending on the amount of bits you select you can assign a certain value to those bits. Here is an overview for the most commonly used amounts of bits: 4 bits allows you to set a value between 0 and 15 8 bits allows you to set a value between 0 and 255 12 bits allows you to set a value between 0 and 4095 example: if quest (0,4,$n) == 6 Checks if bits 0, 1, 2, 3, equal 6 if quest (4,4,$n) == 0 Checks if bits 4, 5, 6, 7, equal 0 Setting a quest bit goes very much the same way. Example mpmset $n quest 0 4 9 Sets bits 0, 1, 2, 3, to equal 9 mpmset $n quest 8 8 69 Sets bits 8, 9, 10, 11, 12, 13, 14, 15, to equal 69 Notes: -mpmadd $n quest 0 4 1 will increase the value of the quest bits, once the value becomes 15, and you try to increase the value, the value will become 0. You can use that behavior to your advantage. -Quest bits can be set on players, mobs and objects. ~ 0 MPROGS700 MPCOMMANDS~ Mprog Commands~ {000} {200} [{178}A{200}] {300}mpmset {200} [{178}H{200}] {300}mppurge {200} [{178}O{200}] {300}mptransfer {200} [{178}V{200}] {300}maze {200} [{178}B{200}] {300}mpmadd {200} [{178}I{200}] {300}loading {200} [{178}P{200}] {300}mpat {200} [{178}W{200}] {300}rescale {200} [{178}C{200}] {300}mposet {200} [{178}J{200}] {300}mpswap {200} [{178}Q{200}] {300}peace {200} [{178}X{200}] {300}echos {200} [{178}D{200}] {300}mpoadd {200} [{178}K{200}] {300}mpkill {200} [{178}R{200}] {300}slay {200} [{178}Y{200}] {300}mpdelay {200} [{178}E{200}] {300}mpaset {200} [{178}L{200}] {300}mpforce {200} [{178}S{200}] {300}connect {200} [{178}Z{200}] {300}mptrigger {200} [{178}F{200}] {300}mpzset {200} [{178}M{200}] {300}mpgoto {200} [{178}T{200}] {300}doorset {200} [{178}1{200}] {300}mpfollow {200} [{178}G{200}] {300}mpjunk {200} [{178}N{200}] {300}mpgorand {200} [{178}U{200}] {300}mpdamage {200} [{178}2{200}] {300}mpquiet {200} [{178}3{200}] {300}mplog {200} [{178}N{200}] {300}mppoison {200} [{178}4{200}] {300}mppractice {200} [{178}N{200}] {300}mpinfect {200} [{178}5{200}] {300}mpsetfeat {200} [{178}6{200}] {300}mpclearfeat {200} [{178}7{200}] {300}mplock {200} [{178}8{200}] {300}mpunlock {200} [{178}9{200}] {300}mpunintercept {200} [{178}-{200}] {300}Return {a}MPMSET {b}MPMADD {c}MPOSET {d}MPOADD {e}MPASET {f}MPZSET {g}MPJUNK MPJUNKPERSON {h}MPPURGE {i}MPOLOAD MPMLOAD {j}MPSWAP {k}MPKILL {l}MPFORCE {p}MPAT {r}SLAY {s}CONNECT {t}DOORSET {u}MPDAMAGE {v}MAZE {w}RESCALE {x}ECHO MPAREAECHO MPASOUND MPECHO MPECHOAT MPECHOAROUND {y}MPDELAY {z}MPTRIGGER {1}MPFOLLOW {2}MPQUIET {3}MPLOG {4}MPPRACTICE {5}MPSETFEAT MPCLEARFEAT {6}MPSETFEAT MPCLEARFEAT {7}MPLOCK MPUNLOCK {8}MPLOCK MPUNLOCK {9}MPUNINTERCEPT {0}MPPOISON {!}MPINFECT {-}MPROGS000 'MUD PROGS' ~ 0 MPQUIET~ mpquiet~ {200} Syntax: mpquiet <on|off> {078} Use this command to keep a mobile's actions from echoing to others in the room. For example, you could give or drop an object or coin, and it would not echo 'soandso drops <object>'. Always remember to turn mpquiet back off at some point in the prog, so that the mobile echoes as normal when it is supposed to. MPQUIET ON Anything the mobile does after this does not echo. MPQUIET OFF Actions of the mobile echo as normal again. ~ 0 MPFOLLOW~ mpfollow~ {200} Syntax: mpfollow <victim> Syntax: mpfollow self {078} A mobile using this command follows the victim, and becomes a part of the victim's group. Useful for quests that require a PC to fight along with the NPC, or the NPC becomes an ally for the quest. mpfollow self breaks the mobile from the PC's group, and stops following. ~ 0 MPLOCK MPUNLOCK~ mplock mpunlock~ {200} Syntax: mplock <door> Syntax: mpunlock <door> {078} This allows a mob program to lock or unlock a door without needing the key. This command even works for doors in which there is no key set. This command produces no echos when it executes. ~ 0 MPLOG~ mplog~ {200} Syntax: mplog <argument> {078} This command enters a log entry into the log file, and echoes it to the log channel. Useful for recoring quest completions, or greet progs to notify when a character enters a particular area, among other uses. ~ 0 MPPRACTICE~ mppractice~ {200} Syntax: mppractice <victim> <'skill'> <max value> {078} Use this command to make a mobile teach a character in a skill, trade, or language. It bypasses the skill point requirement of TRAIN, and should be used sparingly as a quest reward for a teaching quest, particularly for trades or knowledge skills. The max value sets the maximum rank that the command will teach to a character. If the character already has that many ranks or higher, it will echo this to the character, and no improvement will be given. ~ 0 MPSETFEAT MPCLEARFEAT~ mpsetfeat mpclearfeat~ {200} Syntax: mpsetfeat <victim> <'feat'> [ignore] Syntax: mpclearfeat <victim> <'feat'> {078} Use the MPSETFEAT command to make a mobile teach a character a feat or weapon. If the IGNORE option is not used, then all the prerequisites must be met for the feat to be trained, including the feat point to spend. The MPCLEARFEAT command does the opposite, and removes a feat from the list of known feats for a character, and reimburses them one feat point for it. Obviously, mpsetfeat with the ignore option should first be cleared by an area admin before it is used in any mobile prog. ~ 0 MPMSET~ mpmset~ {200}Syntax: mpmset <victim> [group] <field> <argument> {300} This syntax sets one of numerous character fields to the given value. Many of these will affect both players AND NPCs, so always be careful what and who your prog is setting! NOTE that you can add this value to an entire group using the GROUP argument following the target character. Any PC grouped with the target will also be affected. {200}Syntax: mpmset <victim> [group] quest <firstBit> <numBits> <Value> {200}Syntax: mpmset <victim> [group] questr <Vnum> <firstBit> <numBits> <Value> {200}Syntax: mpmset <victim> [group] randquest <firstBit> <numBits> {200}Syntax: mpmset <victim> [group] randquestr <Vnum> <firstBit> <numBits> {300} These set the questbits for the targeted character. Questr and Randquestr will set the bits for a different area than the mobile - handy when you want a prog to impact the targeted character in another area. ~ 0 MPWALKTO~ mpwalkto~ {200} Syntax: mpwalkto <room vnum> [return] {300} This command causes a mobile to walk to the specified room vnum. An ARRIVAL PROGRAM can be used to trigger other actions when a mobile reaches this destination. if the RETURN argument is used, then the mobile will return to the room where the command first triggered once it reaches the destination. ~ 0 MPUNINTERCEPT~ mpunintercept~ {200} Syntax: mpunintercept {300} This command is used in an intercept program to pass the original command that the player typed. For when an intercept program is used to trigger a program based on a command, but to still let the command pass unaltered. Using this command in any other program besides an intercept prog does nothing whatsoever. {a}INTERCEPT_PROG ~ 0 MPMADD~ mpmadd~ {200} Syntax: mpmadd <victim> [group] <field> <value> {300} This syntax adds the given integer to one of numerous character fields. Many of these will affect both players AND NPCs, so always be careful what and who your prog is setting! NOTE that you can add this value to an entire group using the GROUP argument following the target character. Any PC grouped with the target will also be affected. {200}Syntax: mpmadd <victim> [group] quest <firstBit> <numBits> <value> {200}Syntax: mpmadd <victim> [group] questr <areaVnum> <firstBit> <numBits> <value> This syntax increments the given questbit by the given value. ~ 0 MPOSET~ mposet~ {200} Syntax: mposet <object> <field> <argument> Syntax: mposet <object> <string> <argument> {300} This syntax sets the given argument to one of numerous object fields. {200}Syntax: mposet <object> quest <firstBit> <numBits> <newValue> {200}Syntax: mposet <object> randquest <firstBit> <numBits> This sets the questbits for the targeted object. ~ 0 MPOADD~ mpoadd~ {200} Syntax: mpoadd <object> <field> <value> {300} This syntax adds the given value to the specified field of the specified item. {200}Syntax: mpoadd <object> quest <firstBit> <numBits> <value> This syntax adds the given value to the objects questbits. ~ 0 MPASET~ mpaset~ {200} Syntax: mpaset [on $*] <object> <field> <argument> [duration] {300} Using this syntax, you can place an affect apply on the targeted object. Adding the 'on $x' argument will look on the specified target character for the object. The duration will be permanent, unless a duration is specified. {a}APPLIES APPLYS ~ 0 MPZSET~ mpzset~ {200} Syntax: mpzset <field> <argument> {300}Field being one of: {078} resetmsg quest This will set the questbits for the area the prog is in, or set the reset echo to a specified string. ~ 0 MPJUNK MPJUNKPERSON~ mpjunk mpjunkperson~ {200} Syntax: mpjunk <object|all|all.item> [target] {300} The object must be worn or carried in inventory to be junked. By default, junks objects on the mobile executing the prog, or supply a target to junk items on the target. Use of the 'all.' argument can be used to junk all items with a certain string or iVNUM keyword. Ex: mpjunk all.i4300, or mpjunk all.ring. It will not target objects on the floor or in a container. If need be, the program can use the MPQUIET function to get the item first. ~ 0 MPPURGE~ mppurge~ {200} Syntax: mppurge [object|mobile|all|area] {300} The object or mobile must be located in the room the prog executes in. If the all argument is given every object and mobile in the room will be purged, except for a mobile running the prog. mppurge area, will purge the entire area except for the mob that runs the prog. ~ 0 MPOLOAD MPMLOAD~ mpoload mpmload~ {200} Syntax: mpoload <vnum> [room] [wear] Syntax: mpmload <vnum> {300} mpoload will place an object in the inventory of the mobile, if the object doesn't have the TAKE wear flag or you use the room argument it will go to the room. The wear argument will silently equip the mob with loaded object. mpmload will load a mobile in the room. ~ 0 MPSWAP~ mpswap~ {200} Syntax: mpswap <dir1> <dir2> {300} mpswap will swap the given directions. This can be used to create mazes with less limitations than the randomization reset. ~ 0 MPKILL~ mpkill~ {200} Syntax: mpkill <target> {300} mpkill makes a mobile initiate combat with another mobile or players, same as the player FIGHT command, but bypasses all checks and conditions except for SAFE flags. ~ 0 MPDO~ mpdo~ {200} Syntax: mpdo <argument> {300} This will allow the mobile to execute non existing commands. Which in most cases will be a command stored into a mprog variable such as 'mpdo $C'. ~ 0 MPDELAY~ mpdelay~ {200} Syntax: mpdelay <target> <time> <index> [remember] {300} After given 'time' the target's delay_prog with given 'index' will trigger. Setting a string to be remembered is optional. A mobile can only have 1 delay program pending, so use the if delayed($*) check to avoid erasing an already pending delay trigger. ~ 0 MPTRIGGER~ mptrigger~ {200} Syntax: mptrigger <target> <string> {300} This will send the given string to the target mob much like mpechoat, if the target mob has a trigger_prog set that matches the string it will execute that prog and is able to process the keywords passed along as well. This is useful for object programs to trigger mobile programs, or mobs triggering other mobs or themself. ~ 0 MPCALCULATE~ mpcalculate~ {200} Syntax: mpcalculate <value> <operator> <value> {300} Operators Priority Function ------------------------------------------------ * 1 integer multiply {300}/ 1 integer divide % 1 integer modulo d 1 integer random dice roll + 2 integer addition - 2 integer subtraction > 4 logical greater than >= 4 logical greater than or equal < 4 logical less than <= 4 logical less than or equal == 5 logical equal (can use wildcards) {300}!= 5 logical not equal (can use wildcards) && 9 logical and ^^ 10 logical xor || 11 logical or ~ 0 MPFORCE~ mpforce~ {200} Syntax: mpforce <target|all|allgame> <argument> {300} mpforce <target> will force the target to do something. mpforce all will force all mobiles and players in the room. mpforce allgame will force all players in the game. ~ 0 MPGOTO~ mpgoto~ {200} Syntax: mpgoto <roomVnum|mobile|object> {300} mpgoto roomVnum will take the mobile to the specified room. mpgoto mobile will take the mobile to the specified mobile name. mpgoto object will take the mobile to the specified object name. Special: MPGOTO 3 will transfer the mobile to the junk room, where it will be purged on the next loop. Use this function in progs as opposed to mpjunk when a mobile purges itself so it can finish its prog before junking. ~ 0 MPGORAND~ mpgorand~ {200} Syntax: mpgorand <firstRoom> <lastRoom> <offset> <skipSize> {300} mpgorand will take the mobile to a random room in the specified vnum range ~ 0 MPTRANSFER~ mptransfer~ {200} Syntax: mptransfer <target|all|pcs> <roomVnum> {300} mptransfer target will transfer target to specified room mptransfer all will transfer all mobs and players to specified room mptransfer pcs will transfer all mobs to specified room ~ 0 MPAT~ mpat~ {200} Syntax: mpat <roomVnum|mobile|object> <command> {300} mpat roomVnum will execute a command at the specified room mpat mobile will execute a command at the specified mobile name mpat object will execute a command at the specified object name ~ 0 PEACE~ peace~ {200} Syntax: peace {300} peace will stop all fighting and strip all hating/hunting flags from all mobiles standing in the room ~ 0 SLAY~ slay~ {200} Syntax: slay <target> {300} Slay will kill the target instantly without combat, and without triggering further programs or awarding experience. NOTE that mobiles can only do this command against NPCs. ~ 0 CONNECT~ connect~ {200}Syntax: connect <direction> <roomVnum> [both] {300} connect will connect the specified room in the specified direction If the 'both' argument is used a 2 way connection will be established ~ 0 DOORSET~ doorset~ {200}Syntax: doorset <direction> <field> <argument> {300}Field being one of: {078} desc name flag key {300} This command will only set one side of the door. ~ 0 MPDAMAGE~ mpdamage~ {200}Syntax: mpdamage <victim|all|pcs|foe> <dam_lo> <dam_hi> <dam_type> <nounce> {300} mpdamage can be used to have a mobile do specialized damage, if the damage dealt equals zero the attack will miss. all - will hit all targets mobile can attack pcs - will hit all players mobile can attack foe - will hit the person the mobile is currently fighting the argument you set at the end of the line will become the damage used in the damage message. ie, if you use the words 'whirlwind of blades', then the echo will say the mobile's whirlwind of blades either misses or damages the victim(s). ~ 0 MPINFECT~ mpinfect~ {200}Syntax: mpinfect <victim|all|pcs|foe> <disease name> {300} mpinfect will attempt to infect the target with the named disease. The target does get a save against the save DC of the mobile. all - will hit all targets mobile can attack pcs - will hit all players mobile can attack foe - will hit the person the mobile is currently fighting ~ 0 MPPOISON~ mppoison~ {200}Syntax: mppoison <victim|all|pcs|foe> <poison name> {300} mppoison will attempt to poison the target with the named poison. The target does get a save against the save DC of the mobile. all - will hit all targets mobile can attack pcs - will hit all players mobile can attack foe - will hit the person the mobile is currently fighting ~ 0 MAZE~ maze~ {200} Syntax: maze <x size> <y size> <z size> <total rooms> {300} This command will restructure the total rooms, starting count from the room the mobile stands in, into an x*y*z block. There must be enough available rooms with none of them missing. The maze will entirely exist of 2 way connections, so you will likely have to spice it up a little after the maze command has been executed, or maze up small amounts of rooms. Example: maze 4 4 4 30 will fit 30 rooms in a 4 by 4 by 4 area. ~ 0 RESCALE~ rescale~ {200} Syntax: rescale <mobVnum> <target> <percentage> {300} The level, damage, and hitpoints of the mobile will be rescaled to compare to the targeted character. ~ 0 ECHO MPAREAECHO MPASOUND MPECHO MPECHOAT MPECHOAROUND~ echo commands~ {200} Syntax: echo <string> echo to all players Syntax: mpareaecho <string> echo to players in area Syntax: mpasound <string> echo to surrounding rooms Syntax: mpecho <string> echo to room Syntax: mpechoat <target> <string> echo to target Syntax: mpechoaround <target> <string> echo to room excluding target {300} All echos can contain color codes Except for echo the targets must be awake to see the message, mpareaecho has some advanced options: mpareaecho <sleepers|indoors|outdoors> <string> When referencing a target in an echo, use the $ variable strings. {a}MPROGS200 ~ 0 SAVEAREA~ Savearea~ {200} Syntax: savearea [n] [forreal] {078} This command saves the area normally converting all field numbers to the flag text. Using the 'n' argument will save the fields in number format. The file is also normally saved with a '.are.bak' so it does not write over the loading file. The use of the 'forreal' option will overwrite the current '.are' file. ~ 0 $~ #$ XXXXXXXXXX #Savearea