This is an Area Building Help file for ROM-based code and other Merc 2.1 based MUDs, using the new format. Enjoy - Ozy.
compiled/written by: Ozymandias
-+-+ MadROM muds at: telnet madrom.net 1536 -+-+-
Acknowledgement:
This file contains material and information from the Merc release 2.1 Area help files (done by Furey, Hatchet, and Kahn), material from the Merc Diku Mud code itself, material and examples from various area files that are found in both ROM2 and MadROM, as well as coding material that was adapted and modified by Alander for ROM2, and later by Madman for MadROM.
Purpose:
The purpose of this file is to update other area building help files that are floating around out there that are either sorely outdated, or are simply lacking needed material and are thus confusing. This file should make it possible for even the most computer-illiterate individual to code an area.
Overview of Areas
An area is one place of the world. Each are is defined in a separate file. When naming your area file, for purposes of FTP'ing it or sending it by email, the common format is as follows: name.are, with the name being the name of the area.
An area is a collection of sections starting with #AREA until the next #AREA. Each of these sections, listed below, contains its own format. Each section will end, and the next section is written, until you come to the end of your area building. The sections used are #AREA, #HELPS, #MOBILES, #OBJECTS, #ROOMS, #RESETS, #SHOPS,
SPECIALS, and lastly #$. These 9 sections do not include
MOBPROGS. If you are interested in doings MOBPROGS, that information will not be contained in this file, as it is not commonly used by most beginning area builders.
Data Types
All of the data in an area file (even the section headers) consists of a series of values. Each value has a specific type. The server parses the file by reading in data values one at a time according to the types it expects.
Blank characters (spaces, tabs, new lines, carriage returns) at the beginning of a data value are always ignored (this includes strings). Thus you can format the area files in whatever way suits your taste and your needs.
However, I personally like using a word processor, converting it to DOS (this is easy to do... check with whatever wp program you are using), and uploading it to my account via PC TRANS (or whatever program your account uses to upload files from a PC) to be able to be sent to whomever I need to send it to. But you can use whatever editor or method you desire. Additionally, I recommend doing the area sections in the order they are explained in this help file, just to keep things simple and organized for proofreading and debugging.
Types of data you should know:
A 'letter' is a single non-blank character.
A 'word' is a sequence of non-blank characters terminated by a blank.
A 'string' is a sequence of non-tilde characters terminated by a tilde. A 'tilde', by the way, is this character on your keyboard: '~ '. Thus strings may contain blanks, and may be multiple lines long. There is no limit on the length of an individual strings; however, all strings go into a common memory pool whose size is fixed when the server is compiled.
A 'number' is a decimal number with an optional leading '-' or '+', as in the hit points section of a mobile, for example: 5d6+250. The 'd' in this example stands for (5) 6-sided dice PLUS 250, ranging for a hit point range of 255 to 280... 250 plus 5 to 30.
IMPORTANT: Mobiles, objects, and rooms are ALL IDENTIFIED by vnum (virtual number). The range of vnums is 1 to 32767, and each object, mobile, etc, has its own UNIQUE vnum. No two rooms, for example, can possess the same vnum. However, you can have an Object with vnum 3100 and a room with vnum 3100, for example. Just no two objects, two mobiles, or two rooms can have the same one as the other. Vnums no not have to be in increasing order.
Typically an area uses the same range of vnum's for mobile vnum's, object vnum's, and room vnum's, starting with a multiple of 100. This facilitates adding the area into an existing set of areas. So, you may pick something like 16000 to 16500 for your range of vnums for all objects, mobiles and rooms, just as an example. Check with the implementor of the MUD your area is intended for BEFORE choosing a vnum range, as many vnums may already be in use in other areas.
I. The #AREA section. This is the easiest section to do. The format is as follows:
AREA
The 'area-name' can be any string. The 'areas' command provides a list of areas, so it's worth while to follow the standard Merc format for this string. This format would look as follows, to take an example from an area already designed:
AREA {30 60} Ozymandias Hades~
The first two numbers are the recommended level range of the area. The first name is your own name or alias as it shows with the 'areas' command, and the last phrase is the name of the area itself.
II. The #HELPS section.
This section is rarely used. It is simply for placing keywords and a help section about your area for players/immortals to read and to get help about your area or its format. However, it is really only necessary if you feel there may be some complications in your area. If you desire to use a #HELPS section, its format as it appeared in the Merc 2.1 code is as follows:
HELPS
The 'level' number is the minimum character level needed to read this section. This allows for immortal-only help text.
The 'key-words' are a set of keywords for this help text.
The 'help-text' is the help text itself.
Normally when a player uses 'help', both the keywords and the help- text are shown. If the 'level' is negative, however, the keywords are suppressed. This allows the help file mechanism to be used for certain other commands, such as the initial 'greetings' text.
If a 'help-text' begins with a leading '.', the '.' is stripped off. This provides for an escape mechanism from the usual leading- blank stripping of strings, so that picturesque greeting screens may be used.
Remember, ALL strings must be followed by a tilde, the '~' symbol, to end that particular string. FAILURE to place the tilde will result in an error in your area file.
III. The #MOBILES section. O.K., here where it gets to be more confusing. First of all, let me provide an example of what part of the #MOBILES section may look like, by providing an example of one of my own mobiles, and then by following with the syntax explanation of each line.
MOBILES
22001
prisoner amazon~ an amazon prisoner~ An amazon prisoner rests here in shackles. ~ You see a tall, beautiful female warrior in glittering armor. ~ human~ BT Na 850 S 35 3 1d1+749 1d1+297 12d4+10 5 -5 -5 -5 0 EDFHIKLNU 0 0 0 8 8 2 0 0 0 M 0 X sound 30 An amazon prisoner screams in fear!~ X tribe Dance~
22002 <----- THIS BEGINS THE NEXT MOBILE, AND SO ON....
Explanation of each line:
MOBILES <--- the beginning of the mobile section.
22001 <---
prisoner amazon~ <---
(Note: ALWAYS end this above line with a capital 'S'
after the alignment number, as is shown here. In the
original Diku mob format, 'S' stands for simple. Merc
supports only simple mobs, so the 'S' is redundant. It
is retained not only for compatibility with the Diku
format, but also because it helps the server report
errors more accurately.
35 3 1d1+749 1d1+297 12d4+10 5 <--- this contains the following:
X sound 30 An amazon prisoner screams in fear!~ <- mob sounds line (see MobSounds.txt for how to add these in..its easy) X tribe Druid~ <- flags a mob as a member of a Tribe. Must be an existing Tribe, and must use the Tribe abbrev for the Tribe word.
Note:
The 'vnum' is the virtual number of the mobile.
The 'keywords' are the words which can be used in commands to identify the mobile.
The 'short-description' is the description used to identify the mobile.
The 'long-description' is the description used when a character walks in the room and the mobile is visible.
The 'description' is the longest description. It is used when a character explicitly looks at the mobile.
The 'Act-flags' define how the mobile acts, and the 'affected_by flags' define more attributes of the mobile. Affected_by flags generally define what the mobile is 'affected' by. Therefore the affected_by flag of AFF_BLIND for example means that this particular mobile will be blind, and NOT that the mobile casts a blindness spell.
The 'alignment' of the mobile ranges from -1000 to 1000, the higher being good, the lower being evil, with '0' being true neutral. Keep in mind that certain spells ('protection' and 'dispel evil') give characters fighting evil monsters an advantage, and that experience earned is influenced by alignment.
The 'level' is typically a number from 1 to 100 (for MadROM; other Diku MUDs may have lower levels, i.e., 1 to 60, etc.), although there is no upper limit.
IMPORTANT: When writing your mobiles, you may be having trouble deciding how many hit points and mana to give your monsters and NPCS. For mana, this is easy: the mobiles don't use the mana really for spell casting..so you must put an amount, but it is not vital that you spend hours worrying about it..I would put an amount that seems reasonable for that level mob..for appearances sake. For deciding on hit points, here is a simple guideline: For Normal mobiles- 10 - 15 hps per level, up to maybe 40th level; then perhaps 20 or more hps per additional level above 40. However, for the extremely high level mobiles, > lvl. 60, for example, the hit points can vary tremendously, from in the several thousands, up to 20,000 hit points, in the case of Asgard's Heimdall, etc. However, by following this guideline for an normal toughness mobile, a level 28 mobile may have around 280 to 420 hit points, or something in that range.
For Very Tough mobiles- For inherently TOUGH mobiles, such as dragons, demons, Gods, devils, very large giants, titans, and other unusually powerful beings, hit points may be much higher than other mobiles of similar levels. For example, you may decide to give a 40th level dragon something like 1200 hps, while a 40th level ogre warrior of some sort, for example, may only have 400-600 hit points! And they are both the same level. This can reflect the inherent power of the dragon or whatever. For example, all the Greater Daemons in my area Hades have around 2000 to 4000 hit points, and are only around 50 - 60th level. This reflects the natural "toughness" of these lords and rulers of the Underworld, the greater daemons.
Again, all this is subject to the goals of the area builder, and can entail much variation from the above suggested guidelines. An area designer may have an area with lots of particularly desirable treasures, and thus may elect to "boost" the hit points somewhat of his/her mobiles in order to give the area an overall tougher feel to it. But try not to get carried away. An area filled mostly with mobiles of 10,000 and 20,000 hit points is not going to be an affective area. Try to limit the number of mobiles with EXTREMELY high hit points.
Now here are the listings of all the necessary values for making your mobiles; the flags will be on the left, and the letter or number values you use are on the right column:
ACT FLAGS:
ACT_IS_NPC (A) <-- Auto set for mobs: do NOT use ACT_SENTINEL (B) <-- stays in one room ACT_SCAVENGER (C) <-- picks up objects ACT_AGGRESSIVE (F) <-- attacks PC's ACT_STAY_AREA (G) <-- Won't leave area
ACT_WIMPY (H) <-- will flee if hp gets too low ACT_PET (I) <-- Auto set for pets: do NOT use ACT_TRAIN (J) <-- can train PC's ACT_PRACTICE (K) <-- can practice PC's ACT_UNDEAD (O) (ACT flags O to U are not imped on MadROM, yet)
ACT_CLERIC (Q) ACT_MAGE (R) ACT_THIEF (S) ACT_WARRIOR (T) ACT_NOALIGN (U)
ACT_NOPURGE (V) <-- will not be purged by purge command ACT_IS_HEALER (a) <-- acts as a healer ACT_GAIN (b) <-- PC's can use 'gain' command at this mobile ACT_UPDATE_ALWAYS (c)
RACES:
Here are some common races; remember, the race you pick for the mobile does not have to reflect what the mobile is. You can have an Ogre mobile with a race of human, elf, dragon, etc. The race only affects the parts of the mobile, etc. A dragon has more parts than a human (i.e. wings, tail, etc.)
human dragon elf dwarf orc giant unique
There are others, but these are usually the most common. In fact, many area builders use 'human' as the race for nearly all their mobiles, except for dragons, and winged monsters, etc., as that is the simplest.
Mobile Size:
T = tiny S = small M = medium L = large H = huge G = giant
Affected_by FLAGS:
AFF_BLIND (A) AFF_INVISIBLE (B) AFF_DETECT_EVIL (C) AFF_DETECT_INVIS (D) AFF_DETECT_MAGIC (E)
AFF_DETECT_HIDDEN (F) AFF_SANCTUARY (H) AFF_FAERIE_FIRE (I) AFF_INFRARED (J) AFF_CURSE (K)
AFF_POISON (M) AFF_PROTECT (N) AFF_SNEAK (P) AFF_HIDE (Q) AFF_SLEEP (R)
AFF_CHARM (S) AFF_FLYING (T) AFF_PASS_DOOR (U) AFF_HASTE (V) AFF_CALM (W)
AFF_PLAGUE (X) AFF_WEAKEN (Y) AFF_DARK_VISION (Z) AFF_BERSERK (a) AFF_SWIM (b) AFF_REGENERATION (c)
Remember: unless you desire your mobile to be poisoned, plagued, weakened, cursed, or sleeping, do not use those particular 'Affected_by' flags. However, it could be amusing to have a 'walking plague spreader' in an area, for example, and you may desire to have a mobile affected by the plague, and consequently spreading it to other PC's it runs in contact with. =)
OFF_BITS:
OFF_AREA_ATTACK (A) OFF_BACKSTAB (B) OFF_BASH (C) OFF_BERSERK (D) OFF_DISARM (E)
OFF_DODGE (F) OFF_FADE (G) OFF_FAST (H) OFF_KICK (I) OFF_KICK_DIRT (J)
OFF_PARRY (K) OFF_RESCUE (L) OFF_TAIL (M) OFF_TRIP (N) OFF_CRUSH (O)
Note: these are also part of Off_bits. ASSIST_ALL (P) ASSIST_ALIGN (Q) ASSIST_RACE (R) ASSIST_PLAYERS (S) ASSIST_GUARD (T) ASSIST_VNUM (U)
IMMUNITIES - IMM bits for mobiles:
IMM_SUMMON (A) IMM_CHARM (B) IMM_MAGIC (C) IMM_WEAPON (D) IMM_BASH (E)
IMM_PIERCE (F) IMM_SLASH (G) IMM_FIRE (H) IMM_COLD (I) IMM_LIGHTNING (J)
IMM_ACID (K) IMM_POISON (L) IMM_NEGATIVE (M) IMM_HOLY (N) IMM_ENERGY (O)
IMM_MENTAL (P) IMM_DISEASE (Q) IMM_DROWNING (R) IMM_LIGHT (S)
RESISTANCES - RES bits for mobiles:
RES_CHARM (B) RES_MAGIC (C) RES_WEAPON (D) RES_BASH (E) RES_PIERCE (F)
RES_SLASH (G) RES_FIRE (H) RES_COLD (I) RES_LIGHTNING (J) RES_ACID (K)
RES_POISON (L) RES_NEGATIVE (M) RES_HOLY (N) RES_ENERGY (O) RES_MENTAL (P)
RES_DISEASE (Q) RES_DROWNING (R) RES_LIGHT (S)
VULNERABILITIES - VULN bits for mobiles:
VULN_MAGIC (C) VULN_WEAPON (D) VULN_BASH (E) VULN_PIERCE (F) VULN_SLASH (G)
VULN_FIRE (H) VULN_COLD (I) VULN_LIGHTNING (J) VULN_ACID (K) VULN_POISON (L)
VULN_NEGATIVE (M) VULN_HOLY (N) VULN_ENERGY (O) VULN_MENTAL (P) VULN_DISEASE (Q)
VULN_DROWNING (R) VULN_LIGHT (S) VULN_WOOD (X) VULN_SILVER (Y) VULN_IRON (Z)
POSITIONS:
POS_DEAD 0 <--- POS_MORTAL 1 <--- POS_INCAP 2 <--- POS_STUNNED 3 <--- these 4 positions not used.
POS_SLEEPING 4 POS_RESTING 5 POS_SITTING 6 POS_FIGHTING 7 <---* this position also not used. POS_STANDING 8
SEX of mobile:
NEUTRAL 0 MALE 1 FEMALE 2
DAMAGE TYPES (these values also used for weapons in #OBJECTS):
0 - HIT 1 - SLICE 2 - STAB 3 - SLASH 4 - WHIP 5 - CLAW
6 - BLAST 7 - POUND 8 - CRUSH 9 - GREP 10 - BITE 11 - PIERCE 12 - SUCTION 13 - BEATING 14 - DIGESTION 15 - CHARGE 16 - SLAP 17 - PUNCH 18 - WRATH 19 - MAGIC 20 - DIVINE POWER 21 - CLEAVE 22 - SCRATCH 23 - PECK (pierce) 24 - PECK (bash) 25 - CHOP 26 - STING 27 - SMASH 28 - SHOCKING BITE 29 - FLAMING BITE 30 - FREEZING BITE 31 - ACIDIC BITE 32 - CHOMP
IV. The #OBJECTS section: The #OBJECTS section is similar to the #MOBILES section. However, the main difference is that the values in the #OBJECTS section depend on the TYPE of object being described, i.e., weapon, scroll, potion, treasure, etc. Below I am presenting an example of how an object should look in this section:
Example:
22016
sword underworld~ The Sword of the Underworld~ A large, dark sword of solid obsidian gleams evilly here.~ adamantite~ 5 ABCEJL AN 1 11 6 6 DE 50 30 35000 P E sword underworld~ This heavy sword has an evil, dark shine to its metal. The pommel is formed into the shape of a large ram's head and is set with several large rubies. ~ A 18 4 A 19 4 A 1 2 A 5 2 A 23 -8
22017 <--- this begins the next object in the #OBJECTS section...
Explanation of each line:
22016 <--- this is the vnum unique to this object
sword underworld~ <--- these are the keywords for the object
The Sword of the Underworld~ <--- the name of the object
A large, dark sword of solid obsidian gleams evilly here.~ <-long description
adamantite~ <--- the 'material' of the object. Use the common
materials that are already in the const.c table in the
ROM code. A list of materials for MadROM is provided
at the end of the help for #OBJECTS section. This is
similar to the 'race' part of the #MOBILES, and is what
prevents some objects from being burned, while objects
made of wood, paper and glass CAN be destroyed by dragon
fire, for example.
5 ABCEJL AN <--- this line contains:
The weapon class is what sort of weapon it is; sword,
polearm, whip, etc. A '1' = sword in this example.
Damage is calculated by the 'dice' method. The first
number is the number of dice; the second is the type of
dice rolled. In this example, The Sword of the
Underworld has 11 and 6 as values; that is 11d6, or 11
six-sided dice for damage. In other words, 11 times 6 is
the max damage, and roughly half that is the average
damage. Thus, this sword has an average damage of 33.
The DAMAGE TYPE is crush, slash, pound, etc., and uses
the same damage type chart from #MOBILES.
The WEAPON TYPES gives the weapon additional
characteristics, i.e., two-handed, vorpal, vampiric, etc.
Listings for the WEAPON CLASS, DAMAGE TYPES, and WEAPON
TYPES can be found at the end of this #OBJECTS help
section.
50 30 35000 P <--- this line contains:
NOTE The optional 'E' sections and 'A' sections come after the main data. An 'E' section ('extra description section' contains a keyword-list and a string associated with those keywords. This description string is used when a character looks at a word on the keyword list, as explained above. A single object may have an unlimited number of 'E' and 'A' sections.
Common Materials for the 'material' section:
(For a complete list, check the const.c table in the mud code itself... however, this list probably contains all that you would use for most objects).
- cloth
- leather
- pill
- paper
- vellum
- glass
- wood
- steel
- bronze
- brass
- iron
- gold
- silver
- adamantite
- stone
These are the ones mainly used... for a complete list, you would need to look up the const.c table in the actual mud code itself.
OBJECT TYPES:
ITEM_LIGHT 1 ITEM_SCROLL 2 ITEM_WAND 3 ITEM_STAFF 4 ITEM_WEAPON 5 ITEM_TREASURE 8 ITEM_ARMOR 9 ITEM_POTION 10 ITEM_CLOTHING 11 ITEM_FURNITURE 12 ITEM_TRASH 13 ITEM_CONTAINER 15 ITEM_DRINK_CON 17 ITEM_KEY 18 ITEM_FOOD 19 ITEM_MONEY 20 ITEM_BOAT 22 ITEM_CORPSE_NPC 23 ITEM_FOUNTAIN 25 ITEM_PILL 26 ITEM_MAP 28 ITEM_SINGING 29 ITEM_PORTAL 30 ITEM_EXPLOSIVE 31
Object FLAGS:
ITEM_GLOW (A) ITEM_HUM (B) ITEM_DARK (C) ITEM_LOCK (D) ITEM_EVIL (E) ITEM_INVIS (F) ITEM_MAGIC (G) ITEM_NODROP (H) ITEM_BLESS (I) ITEM_ANTI_GOOD (J) ITEM_ANTI_EVIL (K) ITEM_ANTI_NEUTRAL (L) ITEM_NOREMOVE (M) ITEM_INVENTORY (N) ITEM_NOPURGE (O) ITEM_ROT_DEATH (P) ITEM_VIS_DEATH (Q) ITEM_MELT_DROP (R) ITEM_FLOAT (S)
WEAR FLAGS:
ITEM_TAKE (A) ITEM_WEAR_FINGER (B) ITEM_WEAR_NECK (C) ITEM_WEAR_BODY (D) ITEM_WEAR_HEAD (E) ITEM_WEAR_LEGS (F) ITEM_WEAR_FEET (G) ITEM_WEAR_HANDS (H) ITEM_WEAR_ARMS (I) ITEM_WEAR_SHIELD (J) ITEM_WEAR_ABOUT (K) ITEM_WEAR_WAIST (L) ITEM_WEAR_WRIST (M) ITEM_WIELD (N) ITEM_HOLD (O)
CONDITION OF OBJECT:
PERFECT P GOOD G AVERAGE A WORN W DAMAGED D RUINED R
WEAPON CLASS:
WEAPON_EXOTIC 0 WEAPON_SWORD 1 WEAPON_DAGGER 2 WEAPON_SPEAR 3 WEAPON_MACE 4 WEAPON_AXE 5 WEAPON_FLAIL 6 WEAPON_WHIP 7 WEAPON_POLEARM 8
WEAPON TYPES:
WEAPON_FLAMING (A) WEAPON_FROST (B) WEAPON_VAMPIRIC (C) WEAPON_SHARP (D) WEAPON_VORPAL (E) WEAPON_TWO_HANDS (F)
APPLY TYPES (for the 'A' section of #OBJECTS):
APPLY_STR 1 APPLY_DEX 2 APPLY_INT 3 APPLY_WIS 4 APPLY_CON 5 APPLY_SEX 6 APPLY_CLASS 7 APPLY_LEVEL 8 APPLY_AGE 9 APPLY_HEIGHT 10 APPLY_WEIGHT 11 APPLY_MANA 12 APPLY_HIT 13 APPLY_MOVE 14 APPLY_GOLD 15 APPLY_EXP 16 APPLY_AC 17 APPLY_HITROLL 18 APPLY_DAMROLL 19 APPLY_SAVING_PARA 20 APPLY_SAVING_ROD 21 APPLY_SAVING_PETRI 22 APPLY_SAVING_BREATH 23 APPLY_SAVING_SPELL 24
Container FLAGS (if OBJECT TYPE is container only):
CONT_CLOSEABLE 1 CONT_PICKPROOF 2 CONT_CLOSED 4 CONT_LOCKED 8
Portal GATE FLAGS
GATE_NORMAL_EXIT A enter/exit messages from portal are as if its a door GATE_NOCURSE B can enter portal even if cursed or in norecall room GATE_GOWITH C the portal goes with you GATE_BUGGY D small chance of sending you to a random room GATE_RANDOM E sends you to a random room on the mud GATE_RANDOMAREA F sends you to a random room in same area
PORTAL EXIT FLAGS
EX_ISDOOR A EX_CLOSED B EX_LOCKED C EX_PICKPROOF F EX_NOPASS G passproof
Liquid values for DRINK CONTAINERS (value2 on the value line):
LIQ_WATER 0 LIQ_BEER 1 LIQ_RED_WINE 2 LIQ_ALE 3 LIQ_DARK_ALE 4 LIQ_WHISKEY 5 LIQ_LEMONADE 6 LIQ_FIREBREATHER 7 LIQ_LOCAL_SPECIALTY 8 LIQ_SLIME_MOLD_JUICE 9 LIQ_MILK 10 LIQ_TEA 11 LIQ_COFFEE 12 LIQ_BLOOD 13 LIQ_SALT_WATER 14 LIQ_COLA 15 LIQ_ROOT_BEER 16 LIQ_ELVISH_WINE 17 LIQ_WHITE_WINE 18 LIQ_CHAMPAGNE 19 LIQ_MEAD 20 LIQ_ROSE_WINE 21 LIQ_BENEDICTINE_WINE 22 LIQ_VODKA 23 LIQ_CRANBERRY_JUICE 24 LIQ_ORANGE_JUICE 25 LIQ_ABSINTHE 26 LIQ_BRANDY 27 LIQ_AQAVIT 28 LIQ_SCHNAPPS 29 LIQ_ICEWINE 30 LIQ_AMONTILLADO 31 LIQ_SHERRY 32 LIQ_FRAMBOISE 33 LIQ_RUM 34 LIQ_CORDIAL 35
**note: LIQUID VALUES greater than 35 ARE A PROBLEM..do NOT use any liquid value except 0-15 in your drink containers, unless you are writing for a mud that has values higher than 35. Madrom liquid values are 0-35.
Cheers to Satin, of Tesseract, who brewed up the last 20 liquid types, above.
Value lines for all the various OBJECT TYPES follow:
format -
**note: if a value is shown to be 'unused', place a zero, '0', for that value. DO NOT skip it or leave it blank.
ITEM_PORTAL:
ITEM_LIGHT:
ITEM_EXPLOSIVE:
ITEM_SCROLL:
**note: Potions, pills and scrolls can have up to 3 spells in them. If you use only 1 or 2, put a zero for each of the unused values. Try to use all 3 slots though, it makes the pill more interesting :)
**note: spell lvl is the level at which the spell will be cast, NOT the level of the reader of the scroll.
**note: 'sn' stands for SPELL NUMBER; this is the number unique to
that particular spell in the game. If you are an immortal with the
'vnum' command, you can type 'vnum spell
ITEM_WAND:
ITEM_STAFF:
ITEM_WEAPON:
ITEM_TREASURE:
ITEM_ARMOR:
ITEM_POTION:
**note: Potions, pills and scrolls can have up to 3 spells in them. If you use only 1 or 2, put a zero for each of the unused values. Try to use all 3 slots though, it makes the pill more interesting :)
ITEM_PILL:
**note: Potions and pills can have up to 3 spells in them. If you use only 1 or 2, put a zero for each of the unused values.
ITEM_FURNITURE:
**note: the benches in Southern Midgaard are an example of a furniture object... they basically just sit there.
ITEM_TRASH:
ITEM_SINGING < -1 > < -1 > < -1 > < -1 > < -1 >
ITEM_CONTAINER:
**note: Use the Container FLAGS listed earlier for this value; the key vnum is ONLY USED if there is a key to unlock the container - otherwise put a zero for that value.
ITEM_DRINK_CONTAINER:
**note: Use already existing drink containers in the game to get an idea as to a reasonable liquid capacity. For example, the water skin for sale at the Grocers Shop in Midgaard has a liquid capacity of 20. Additionally, the 'liquid #' value here tells whether it is beer, water, ale, etc., that is in the container. I have provided a listing above of the liquid numbers found in the 'liq_table' in the const.c section of the mud code. Liqid # MUST be one of 0 through 15.
ITEM_KEY:
ITEM_FOOD:
ITEM_BOAT:
ITEM_FOUNTAIN:
ITEM_MAP:
< 1 >
V. The #ROOMS section: This section should be fairly self-explanatory. Here is an example of a room from the #ROOMS section of an area:
22203
Rock Carving~ You scramble through this mountain pass, the frightening stony walls reaching to the sky on either side of you. A powerful, eerie wind whips the air into a frenzy about you. Cut into the rock face is an imposing, monolithic statue of a long forgotten king. You feel a sudden sense of uneasiness as you pass beneath his glowering, silent gaze. Ahead, to the north, an immense set of iron gates block further passage. The pass leads north beyond the gates, and back to the south. ~ 22 0 5 D0 A pass through tall iron gates. ~ gate~ 1 22012 22002 D2 A pass through the mountains. ~ ~ 0 -1 22004 E statue~ This impressive statue is a depiction of the ancient king, and now awesomely powerful God, Ozymandias. Bold of gaze and fierce of stature, this being is one you'd NOT like to cross if you ran into him. Brrr! ~ S
22204
Explanation of each line:
22203 <---
Rock Carving~ <---
22204 <---
Note: for Extended descriptions, EACH object/description must start with an E. eg if your room has a sign, chair and plaque, each extended description for these should start with its own individual E., just like the example above. :) The 'area number' is the first 2 digits of the area's vnum range..Hades is 22000 to 22whatever..the area number will be 22.
The 'room vnum' is the virtual number of the room.
The 'room name' is the name of the room.
The 'room description' is the long multi-line description of the room.
The 'area number' is obsolete and UNUSED. Rooms belong to whatever area was most recently defined in your #AREA section. The use of the number '0' for this value is adequate, since this value is unused.
The 'ROOM-FLAGS' describe more attributes of the room, and a listing of possible FLAGS is given at the end of the #ROOMS help section in this file.
The 'SECTOR-TYPE' identifies the type of terrain. This affects movement cost through the room. Certain sector types (AIR and WATER) require special capabilities to enter, i.e., a flying potion or spell for air, and a boat or raft for water.
Unlike mobiles and objects, rooms don't have any keywords associated with them. One may not manipulate a room in the same way one manipulates a mobile or object.
The optional 'D' sections and 'E' sections come after the main data. A 'D' section contains one or more 'doors' in the range from 0 to 5. The numbers represent the 6 possible directions. These direction values are given at the end of this #ROOMS section. A 'D' command also contains a 'description' for that direction, and 'keywords' for manipulating the door. 'Doors' include not just real doors, but ANY kind of exit from the room. The 'locks-number' defines whether or not the door is locked or not, and if it can be picked or not. The values for the 'locks-numbers' is given at the end of the #ROOMS section. The 'key-number' is the vnum of an object which locks and unlocks the door. IMPORTANT: If there is NO key for opening the door, either because the door is unlocked, is a simple, unhindered exit, or because you want a locked door with no key in the game, use '-1' for the 'key-number', NOT a '0'. Lastly, 'to_room-number' is the vnum of the room to which this door leads.
Unless you want a one-way exit, you must specify two 'D' sections, one for each side of the door; i.e., one leaving one room and one in the other room the door goes to. Otherwise, you will end up with a one-way exit.
An 'E' section (extended description) contains a 'keywords' string and a 'description' string. As you might guess, looking at one of the words in the 'keywords' yields the 'description' string.
The 'S' at the end marks the end of the room. IT IS NOT OPTIONAL.
**IMPORTANT!! When your #ROOMS sections is complete, to end the
ROOMS section, you must put '#0' on the line after the 'S' line
of the last room in the #ROOMS section of your area.
Direction Values for the 'D' section:
NORTH 0 EAST 1 SOUTH 2 WEST 3 UP 4 DOWN 5
Locks-numbers Values for the 'D' section:
Unhindered exit 0 Door with no keyhole -1 Normal door 1 Pick-proof door 2 Pass proof door 3 Pick and passproof door 4
note: a 'hidden' exit that doesn't show in when players type 'exit' is made by flagging your exit to be a door or flag 1.
ROOM-FLAGS:
ROOM_DARK (A) ROOM_NO_SUMMIN (B) ROOM_NO_MOB (C) ROOM_INDOORS (D) ROOM_NO_SUMMOUT (E) ROOM_PRIVATE (J) ROOM_SAFE (K) ROOM_SOLITARY (L) ROOM_PET_SHOP (M) ROOM_NO_RECALL (N) ROOM_IMP_ONLY (O) ROOM_GODS_ONLY (P) ROOM_HEROES_ONLY (Q) ROOM_NEWBIES_ONLY (R) ROOM_LAW (S)
SECTOR-TYPES:
SECT_INSIDE 0 SECT_CITY 1 SECT_FIELD 2 SECT_FOREST 3 SECT_HILLS 4 SECT_MOUNTAIN 5 SECT_WATER_SWIM 6 SECT_WATER_NOSWIM 7 SECT_AIR 9 SECT_DESERT 10 SECT_MAX 11
VI. The #RESETS section:
This is the section that installs all the mobiles in their various locations, equips the mobiles, locks and closes any necessary doors, randomizes any random room exits, and generally sets up the area and populates it.
To reset an area, the server executes each command in the list of reset commands once. Each area is reset once when the server loads, and again periodically as it ages. An area is reset if it is at least 3 area-minutes old and is empty of players, or if it is 15 area-minutes old and has players in it.
An 'area-minute' varies between 30 and 90 seconds of real time, with an average of 60 seconds. The variation defeats area time- keepers.
The #RESETS section contains a series of single lines.
The reset commands are:
- comment M read a mobile O read an object P put an object in an object (gold in a safe, etc.) G give an object to mobile E equip object to mobile D set state of door R randomize room exits S stop (END OF LIST)
Here is the format for the various reset commands:
M
For the 'unused' value, simply put a '0'. The mobile-vnum is the vnum of the mobile loaded. The limit-number is the limit of how many of this mobile may be present in the world. The last number, the room-vnum, is the vnum of the room where the mobile is loaded.
O
For the 'unused' value, simply put a '0'. The object-vnum is the vnum of the object loaded. If you want more than one of these objects loaded into the room at one time, make it load twice by putting it twice in resets (or more). The last number, the room-vnum, is the vnum of the room where the object is loaded.
P
The number is the number (amount) of the first object that is placed into another object (i.e., a desk, coffer, safe, etc.). The object-vnum is the vnum of the object loaded. To make more than one of the same item load into a container, load it twice (or more) in the resets. The limit-number is the limit of how many of these objects may be present in the world, or 'put' into the other object. The game will load a coffer, for example, a certain amount of times. After that, the coffer will always be empty, until another reboot. The last number, the 'in_object-vnum', is the vnum of the object into which the other object is placed, i.e., the actual container (safe, desk, etc.).
G
For the 'G' command, there is no fourth number. Only use three numbers. The 'G' command MUST follow an 'M' command, as it 'gives' the object to the whatever mobile in a 'M' command is above it. Note the reason for this is due to the fact that no mobile-vnum is listed in the 'G' command. The first number is the number (amount) of this particular object to be given to the mobile. The object- vnum is the vnum of the object given. The limit-number is the amount of times this object will be 'given' to the mobile. I.E., the Calico cat from the Mage Tower area of ROM2 (and other muds as well...) has a spiked collar that is only loaded on the cat at the start of the game, at a reboot. After that, the cat has no collar, until another reboot. It is often a good idea to limit the number of objects in this manner to be given or equipped on a mobile, unless the object is relatively low level. If you wish one item to be given to the mob per AREA RESET, make the limit number a -1. If you are Giving items to a shopkeeper, make the (limit number) -1.
E
The first number is the number (amount) of an object equipped on the mobile. The object-vnum is just that. The limit number is the same as in the 'G' command (see above). The 'wear_loc-number' is the wear location that the object is equipped on the mobile's body. A listing of the wear_loc values is given at the end of this
RESETS help section.
D
For the 'unused' value, simply put a '0'. The room-vnum is the vnum of the room that the door IS IN. The door-number is just that; i.e., 0=north, 1=west, 2=south, etc. (see the help section for #ROOMS, above). The last number, the 'state-number', is the "state" of the door (whether it is open, closed, locked, etc.). A listing for the 'state-number' values is provided at the end of the
RESETS helps section.
R
For the 'R' command, there are only three values, and the first value is always 0 as it is unused. The second number is the vnum of a room. The third number is a last_door-number. When this command is used, the doors from 0 to the indicated 'last_door- number' are shuffled. The room will still have the same exits leading to the same other rooms as before, the DIRECTIONS will be different at each reboot. Thus, a last_door-number of 4 makes a two-dimensional maze room; a door number of 6 makes a three- dimensional maze room.
Use of both the 'D' and 'R' commands on the same room will yield UNPREDICTABLE results, so take care how you utilize the 'R' command.
Any line (except an 'S' line) may have a comment at the end.
**NOTES: IMPORTANT!: End the #RESETS section in your area with an 'S' on the line after the last reset command, much the same as you do for the
ROOMS section.
For the 'P' command, the actual container used is the MOST RECENTLY loaded object with the right vnum; for best results, there should be only one such container in the world. The is not loaded if no container object exists, or if someone is carrying it, or if it already contains on of the to-be-loaded objects.
Remember, for all LIMIT-NUMBERS, a '-1' means an infinite number of the objects, mobiles, etc. can exist in the world, and the game will keep loading up these objects/mobiles. Keep this in mind, if you are thinking of using a '-1' for a limit-number.
For the 'E' and 'G' command, if the most recent 'M' command succeeded (e.g. the mobile limit wasn't exceeded), the object is given to that mobile. If the most recent 'M' command FAILED (due to hitting mobile limit), then the object is not loaded.
Also remember, EACH MOBILE in your area (not just each type) must be loaded with the 'M' command. For example, if you have 20 cityguards total wandering about your town, you must do 20 reset lines of the 'M' command; for cityguard 1, cityguard 2, cityguard 3, etc., through cityguard 20. You can see how writing the #RESETS section of your area can rapidly become tiresome, but try to take extra care with this section, as it is easy to make a small typo, and these are a pain to debug if you end up with numerous reset errors!
IMPORTANT!!: For the 'D' command: ROOM EXITS MUST BE COHERENT! If room 1 had an exit East going to room 2, and room 2 has an exit in the reverse direction (West), that exit MUST GO BACK to room 1. This doesn't prevent one-way exits; room 2 doesn't HAVE to have an exit in the reverse direction.
EXAMPLE: The following is an example of several of the above reset commands as they appear in the area Midgaard. Use these to see how #RESETS works (note: this example, while taken from the Midgaard.are file
RESETS section, it is not in the same order as in the actual file,
as only a small part of that section is represented below, just to give you an idea of the various reset commands, and how they should appear):
RESETS
* * -- northern Midgaard -- <--- Comments are useful in keeping * track of your reset commands. M 0 3011 1 3001 Hassan E 1 3005 1 16 wield scimitar * M 0 3060 12 3004 Cityguard 1 E 1 3365 -1 0 equip banner E 1 3364 -1 1 equip signet ring E 1 3350 -1 16 equip sword E 1 3353 -1 5 equip vest E 1 3355 -1 4 equip cloak * M 0 3060 12 3014 Cityguard 2 E 1 3365 -1 0 equip banner E 1 3364 -1 1 equip signet ring E 1 3350 -1 16 equip sword E 1 3353 -1 5 equip vest E 1 3356 -1 6 equip helmet * M 0 3064 3 3007 A Happy Drunk (at Inn) M 0 3065 2 3044 A Beggar in poor alley M 0 3065 2 3048 A Beggar in Grubby Inn * M 0 3012 1 3054 Healer in temple altar * M 0 3100 1 3106 Maid in Park Cafe G 1 3100 -1 A cup of tea G 1 3101 -1 A cup of coffee G 1 3102 -1 A cup of water * O 0 3135 1 3141 load Fountain on Penny Lane O 0 3136 1 3141 load 20 coins on Penny Lane * O 0 3130 1 3142 load the desk P 1 3123 1 3130 put brass key in desk O 0 3131 1 3142 load the safe P 1 3132 1 3131 put money in safe * O 0 3010 1 3054 load Donation pit * D 0 3110 3 2 Lock Captain's door from outside D 0 3142 1 2 Lock Captain's door from inside D 0 3142 2 2 Lock jail from outside D 0 3143 0 2 Lock jail from inside * S <---- REMEMBER: end the #RESETS section with an 'S'.
Wear_loc Values for the 'E' reset command:
WEAR_NONE -1 WEAR_LIGHT 0 WEAR_FINGER_L 1 WEAR_FINGER_R 2 WEAR_NECK_1 3 WEAR_NECK_2 4 WEAR_BODY 5 WEAR_HEAD 6 WEAR_LEGS 7 WEAR_FEET 8 WEAR_HANDS 9 WEAR_ARMS 10 WEAR_SHIELD 11 WEAR_ABOUT 12 WEAR_WAIST 13 WEAR_WRIST_L 14 WEAR_WRIST_R 15 WEAR_WIELD 16 WEAR_HOLD 17 MAX_WEAR 18
VII. The #SHOPS section: If you intend on having shops in your area, then you will need a
SHOPS section. This section, in fact, is the easiest of all the
sections in an area to do, and takes very little time.
First, I'll provide an example from the midgaard.are area file of some of the shops from Midgaard's #SHOPS section:
SHOPS
3000 2 3 4 10 0 105 15 0 23 ; The Wizard 3001 0 0 0 0 0 110 100 0 23 ; The Baker 3002 1 8 13 15 19 150 40 0 23 ; The Grocer 3003 5 0 0 0 0 130 40 0 23 ; The Weaponsmith 3004 9 0 0 0 0 100 50 0 23 ; The Armourer 3006 22 0 0 0 0 120 90 6 22 ; The Captain
The syntax of the #SHOPS is as follows:
The first value, the mobile-vnum, is the 'keeper', or the mobile who is the shopkeeper. ALL MOBILES with that vnum will be shopkeepers.
The trade-0 through trade-4 are item types which the shopkeeper will buy. Unused slots should have a '0' in them'; for instance, a shopkeeper who doesn't buy anything would have five zeroes. The item types are the same values from the #OBJECTS section, in the OBJECT TYPE table. I am providing this table again, for this purpose, at the end of this #SHOPS help section.
The 'profit-buy' number is a markup for players buying the item, in percentage points. 100 is nominal price; 150 is 50% markup, and so on. The 'profit-sell' number is a markdown for players selling the item, in percentage points. 100 is nominal price, 75 is 25% markdown, and so on. The buying markup should be at least 100, generally greater, and the selling markdown should be no more than 100, generally lower.
The 'open-hour' and 'close-hour' numbers define the hours when the shopkeeper will do business. For a 24-hour shop, these numbers would be 0 and 23.
Everything beyond 'close-hour' to the end of the line is taken to be a comment.
Note that there is no room number for a shop. Just load the shopkeeper mobile in to the room of your choice, via that #RESETS section, and make the mobile a sentinel in the ACT-FLAGS section of the mobile in #MOBILES. Or, for a wandering shopkeeper, just make it non-sentinel.
The objects the shopkeeper sells are exactly those loaded by the 'G' reset command in #RESETS for that shopkeeper. These items replenish automatically. If a player sells an object to a shopkeeper, the shopkeeper will keep it for resale if he, she, or it doesn't already have an identical object. The items a player sells to a shopkeeper, however, do not replenish.
**IMPORTANT!!: You end your #SHOPS section with a '0' on the line after the last shop.
OBJECT TYPES (items a shopkeeper will buy from player):
ITEM_LIGHT 1 ITEM_SCROLL 2 ITEM_WAND 3 ITEM_STAFF 4 ITEM_WEAPON 5 ITEM_TREASURE 8 ITEM_ARMOR 9 ITEM_POTION 10 ITEM_CLOTHING 11 ITEM_FURNITURE 12 ITEM_TRASH 13 ITEM_CONTAINER 15 ITEM_DRINK_CON 17 ITEM_KEY 18 ITEM_FOOD 19 ITEM_MONEY 20 ITEM_BOAT 22 ITEM_CORPSE_NPC 23 ITEM_PILL 26 ITEM_MAP 28 ITEM_SINGING 29 ITEM_PORTAL 30 ITEM_EXPLOSIVE 31
**note: In general, when designing a mobile as a shopkeeper in the
MOBILES section, you should make him/her IMMUNE to all forms of
attack by having the mobile immune to magic, disease, poison, and weapons using the IMM_BITS in the immunities section of the mob in
MOBILES. Also, it is generally a good idea to make these mobiles
NOPURGE by having an 'ACT_FLAG' of ACT_NOPURGE for the mobile in the #MOBILES section. After all, you don't want your players killing the shopkeepers, or a purge-happy immortal accidentally purging the shopkeeper with a purge command.
VIII. The #SPECIALS section:
Like the #RESETS section, the #SPECIALS section has one command per line.
This section defines special functions (spec-fun's) for mobiles. A spec-fun is a C function which gives additional behavior to all mobiles with a given vnum, such as the peripatetic mayor, the beholder casting spells in combat, Tiamat the dragon breathing her breath weapons in combat, and the Grand Mistress teleporting characters she is fighting.
The 'M' command assigns 'spec-fun' to all mobiles of that vnum. An 'M' line may have a comment at the end.
Every three seconds, the server function 'mobile_update' examines every mobile in the game. If the mobile has an associated spec- fun, then 'mobile_update' calls that spec=fun with a single parameter, the 'ch' pointer for that mob. The spec-fun returns TRUE if the mobile did something, or FALSE if it did not. If the spec-fun returns TRUE, then further activity by that mobile is suppressed. All this just basically means that the game checks periodically for mobiles with spec-fun's and causes them to act out their assigned functions, either while wandering about Midgaard and locking the gates, as the mayor does, or while in combat and casting spells and breath weapons, as Tiamat, or the Beholder do.
For this help file, I am not including material on how to add a NEW special function to the code. That information can be found elsewhere, and needs to be coded by the IMP into the 'C' code itself. However, below you can see how to use ALREADY existing spec-funs for your mobiles. I have also provided a listing of the spec-funs available in the game so far.
**NOTE: As spec_fun's DO add (much more than other things) to lag in the game, try NOT to OVER DO IT. Feel free to use a #SPECIALS section, but don't make 100 different dragon or spell-casting type mobiles each with special functions!
Example of #SPECIALS, as found in midgaard.are area file:
SPECIALS
M 3000 spec_cast_mage M 3005 spec_thief M 3011 spec_executioner M 3012 spec_cast_adept M 3020 spec_cast_mage M 3060 spec_guard M 3061 spec_janitor M 3062 spec_fido M 3143 spec_mayor
Explanation:
SPECIALS <--- this begins the #SPECIALS section
M 3000 spec_cast_mage <--- Midgaard's wizard M 3005 spec_thief <--- the thief M 3011 spec_executioner <--- Hassan M 3012 spec_cast_adept <--- the Healer M 3020 spec_cast_mage <--- the Mage Guildmaster M 3060 spec_guard <--- cityguard M 3061 spec_janitor <--- the janitor M 3062 spec_fido <--- the fido M 3143 spec_mayor <--- Midgaard's Mayor M 6102 spec_wolf <--- does what it says :)
The syntax is simple, and is as follows:
M
List of SPEC-FUN's found in the ROM2 code:
spec_breath_any spec_breath_acid spec_breath_fire spec_breath_frost spec_breath_gas spec_breath_lightning
spec_cast_adept spec_cast_cleric spec_cast_judge spec_cast_mage spec_cast_undead
spec_executioner spec_fido spec_guard spec_janitor spec_mayor spec_poison spec_thief spec_puff spec_wolf spec_batmad spec_smart (by Amiga and coded by Neuromancer..a very cool special)
The spec_breath's are just that. Breath weapons, such as found with most dragons, many of the gods in Olympus, etc.
The spec_cast's give mobiles the abilities to cast spells, depending on which spec_cast you use. To satisfy your own curiosity, I am including a listing of what each spec_cast type will cast, depending on the level of the mobile.
spec_cast_adept spells: The spec_cast_adept mobile will cast the following spells at random on all characters in the same room, up to characters of level 10 or less (this may have been changed; but this was correct with the Rom2 code): armor bless cure blindness cure light cure poison refresh
spec_cast_cleric spells: The spells cast depend on the level of the mobile with this special function. (Thus, if you wish to have a cleric-spell casting mobile that can cast 'curse', make the mobile at least level 12). The following can be cast by this spec-fun: blindness - min. lvl. 0 cause serious - min. lvl. 3 earthquake - min. lvl. 7 cause critical - min. lvl. 9 dispel evil - min. lvl. 10 curse - min. lvl. 12 change sex - min. lvl. 12 flamestrike - min. lvl. 13 harm - min. lvl. 15 plague - min. lvl. 15 dispel magic - min. lvl. 16
spec_cast_judge: This spec-fun is geared mainly for the Judge mobile in Megacity One. The only spell cast by this spec-fun is 'high explosive'.
spec_cast_mage: The spells cast depend on the level of the mobile with this special function. The following can be cast by this spec-fun: blindness - min. lvl. 0 chill touch - min. lvl. 3 weaken - min. lvl. 7 teleport - min. lvl. 8 colour spray - min. lvl. 11 change sex - min. lvl. 12 energy drain - min. lvl. 13 fireball - min. lvl. 15 plague - min. lvl. 20 acid blast - min. lvl. 20
spec_cast_undead: The spells cast depend on the level of the mobile with this special function. The following can be cast by this spec-fun: curse - min. lvl. 0 weaken - min. lvl. 3 chill touch - min. lvl. 6 blindness - min. lvl. 9 poison - min. lvl. 12 energy drain - min. lvl. 15 harm - min. lvl. 18 plague - min. lvl. 20 teleport - min. lvl. 21
As far as the other spec-fun's go, here is a rough breakdown, just to give you and idea what each does:
spec_fun_executioner: This spec-fun is more useful if you have player stealing and player killing capabilities in the mud. The mobile with this special- function will attack any player, including an immortal, with a KILLER, or THIEF flag. Additionally, this mobile can 'create' additional cityguards in the room to assist his fight against the player.
spec_fun_puff: This amusing special function, written by Seth, of Rivers of Mud, does a number of very silly things, most of which you are probably familiar and therefore I won't go into detail.
spec_fun_fido:
This is a spec-fun customized for the fido mobiles of Midgaard.
All it really does is cause the mobile to eat any corpse it may see
lying in the room with it; players in the room will witness this in
the form of "
spec_fun_guard: This special-function acts in some ways like the spec_fun_executioner. It causes the mobile to attack characters automatically that have the KILLER or THIEF flags, if player stealing and player killing is allowed in the mud. Also, the spec_fun_guard will intervene in a fight, assisting the 'most evil' of the fighters, alignment-wise. This means that a good character fighting an evil mob will often be joined in his/her/it's fight by the spec_fun_guard mobile, and visa-versa for an evil character attacking good mobiles in the presence of a spec_fun_guard mobile. This assisting is always accompanied by the mobile yelling "PROTECT THE INNOCENT!! BANZAI!!"
spec_fun_janitor: This spec-fun causes the mobile to pick up "trash" (objects that are either ITEM_DRINK_CON, or ITEM_TRASH on the ground in the same room as the mobile).
spec_fun_mayor: This is geared originally for the mayor of Midgaard. It adds a bit of humor and personality to the charismatic mayor. Basically, the mobile with this special function wanders around, making comments such as "Vandals! Youngsters have no respect for anything!", and other statements, as well as going to sleep, waking up, touring Midgaard, and opening and closing the gates of Midgaard at various times.
spec_poison: A mobile with the spec_fun_poison will, when fighting a player, 'bite' the player, and thus poisoning him with a 'poison spell'. This is a good spec-fun to give to poison snakes, etc., or any other mobile that might have a poison bite.
spec_fun_thief:
This spec-fun causes the mobile to "steal" money from a player in
the same room as the mobile. The player also receives a "You
discover
spec_wolf Any monster with this special lurks and prowls and howls to all in the area during the night hours.
spec_batmad Any creature with this special will shrivel up and die if the daylight washes over it.
spec_smart This special gives the monster with it the abilities to spell himself up with protection spells, and keep them fresh, as well as undo maladiction spells cast at him AND then turn around and cast them back at his attacker..he also has abilities that a monster with spec_cast_cleric would have...a very evil monster special, use it only for specially hard qwest mobs, temple or tribe room guardians, etc... this special by Amiga and Neuromancer.
IX. The #$ section: This section marks the end of an area file. If you concentrate several area files into one, remember to delete the terminating '#$' from all but the last file. Conversely, if you split area files, remember to terminate EACH NEW FILE with a '#$'.
The syntax of this section is:
$
X. COMPILATION OF THE TABLES FOR AREA BUILDING: To make it simple to check values on all the multitude of tables for the various flags, etc. used in area building, I am listing again ALL the tables of values from ALL the different area sections, from #MOBILES to #SPECIALS:
for #MOBILES:
ACT FLAGS:
ACT_IS_NPC (A) <-- Auto set for mobs ACT_SENTINEL (B) <-- stays in one room ACT_SCAVENGER (C) <-- picks up objects ACT_AGGRESSIVE (F) <-- attacks PC's ACT_STAY_AREA (G) <-- Won't leave area
ACT_WIMPY (H) <-- will flee if hp gets too low ACT_PET (I) <-- Auto set for pets ACT_TRAIN (J) <-- can train PC's ACT_PRACTICE (K) <-- can practice PC's ACT_UNDEAD (O)
ACT_CLERIC (Q) ACT_MAGE (R) ACT_THIEF (S) ACT_WARRIOR (T) ACT_NOALIGN (U)
ACT_NOPURGE (V) <-- will not be purged by purge command ACT_IS_HEALER (a) <-- acts as a healer ACT_GAIN (b) <-- PC's can use 'gain' command at this mobile ACT_UPDATE_ALWAYS (c)
RACES:
human dragon elf dwarf orc giant unique
Mobile Size:
T = tiny S = small M = medium L = large H = huge G = giant
Affected_by FLAGS:
AFF_BLIND (A) AFF_INVISIBLE (B) AFF_DETECT_EVIL (C) AFF_DETECT_INVIS (D) AFF_DETECT_MAGIC (E)
AFF_DETECT_HIDDEN (F) AFF_SANCTUARY (H) AFF_FAERIE_FIRE (I) AFF_INFRARED (J) AFF_CURSE (K)
AFF_POISON (M) AFF_PROTECT (N) AFF_SNEAK (P) AFF_HIDE (Q) AFF_SLEEP (R)
AFF_CHARM (S) AFF_FLYING (T) AFF_PASS_DOOR (U) AFF_HASTE (V) AFF_CALM (W)
AFF_PLAGUE (X) AFF_WEAKEN (Y) AFF_DARK_VISION (Z) AFF_BERSERK (a) AFF_SWIM (b) AFF_REGENERATION (c)
OFF_BITS:
OFF_AREA_ATTACK (A) OFF_BACKSTAB (B) OFF_BASH (C) OFF_BERSERK (D) OFF_DISARM (E)
OFF_DODGE (F) OFF_FADE (G) OFF_FAST (H) OFF_KICK (I) OFF_KICK_DIRT (J)
OFF_PARRY (K) OFF_RESCUE (L) OFF_TAIL (M) OFF_TRIP (N) OFF_CRUSH (O)
Note: these are also part of Off_bits. ASSIST_ALL (P) ASSIST_ALIGN (Q) ASSIST_RACE (R) ASSIST_PLAYERS (S) ASSIST_GUARD (T) ASSIST_VNUM (U)
IMMUNITIES - IMM bits for mobiles:
IMM_SUMMON (A) IMM_CHARM (B) IMM_MAGIC (C) IMM_WEAPON (D) IMM_BASH (E)
IMM_PIERCE (F) IMM_SLASH (G) IMM_FIRE (H) IMM_COLD (I) IMM_LIGHTNING (J)
IMM_ACID (K) IMM_POISON (L) IMM_NEGATIVE (M) IMM_HOLY (N) IMM_ENERGY (O)
IMM_MENTAL (P) IMM_DISEASE (Q) IMM_DROWNING (R) IMM_LIGHT (S)
RESISTANCES - RES bits for mobiles:
RES_CHARM (B) RES_MAGIC (C) RES_WEAPON (D) RES_BASH (E) RES_PIERCE (F)
RES_SLASH (G) RES_FIRE (H) RES_COLD (I) RES_LIGHTNING (J) RES_ACID (K)
RES_POISON (L) RES_NEGATIVE (M) RES_HOLY (N) RES_ENERGY (O) RES_MENTAL (P)
RES_DISEASE (Q) RES_DROWNING (R) RES_LIGHT (S)
VULNERABILITIES - VULN bits for mobiles:
VULN_MAGIC (C) VULN_WEAPON (D) VULN_BASH (E) VULN_PIERCE (F) VULN_SLASH (G)
VULN_FIRE (H) VULN_COLD (I) VULN_LIGHTNING (J) VULN_ACID (K) VULN_POISON (L)
VULN_NEGATIVE (M) VULN_HOLY (N) VULN_ENERGY (O) VULN_MENTAL (P) VULN_DISEASE (Q)
VULN_DROWNING (R) VULN_LIGHT (S) VULN_WOOD (X) VULN_SILVER (Y) VULN_IRON (Z)
POSITIONS:
POS_DEAD 0 <--- POS_MORTAL 1 <--- POS_INCAP 2 <--- POS_STUNNED 3 <--- these 4 positions not used.
POS_SLEEPING 4 POS_RESTING 5 POS_SITTING 6 POS_FIGHTING 7 <---* this position also not used. POS_STANDING 8
SEX of mobile:
NEUTRAL 0 MALE 1 FEMALE 2
DAMAGE TYPES (these values also used for weapons in #OBJECTS):
0 - HIT 1 - SLICE 2 - STAB 3 - SLASH 4 - WHIP 5 - CLAW
6 - BLAST 7 - POUND 8 - CRUSH 9 - GREP 10 - BITE 11 - PIERCE 12 - SUCTION 13 - BEATING 14 - DIGESTION 15 - CHARGE 16 - SLAP 17 - PUNCH 18 - WRATH 19 - MAGIC 20 - DIVINE POWER 21 - CLEAVE 22 - SCRATCH 23 - PECK (pierce) 24 - PECK (bash) 25 - CHOP 26 - STING 27 - SMASH 28 - SHOCKING BITE 29 - FLAMING BITE 30 - FREEZING BITE 31 - ACIDIC BITE 32 - CHOMP
for #OBJECTS
Common Materials for the 'material' section:
- cloth
- leather
- pill
- paper
- vellum
- glass
- wood
- steel
- bronze
- brass
- iron
- gold
- silver
- adamantite
- stone
OBJECT TYPES:
ITEM_LIGHT 1 ITEM_SCROLL 2 ITEM_WAND 3 ITEM_STAFF 4 ITEM_WEAPON 5 ITEM_TREASURE 8 ITEM_ARMOR 9 ITEM_POTION 10 ITEM_CLOTHING 11 ITEM_FURNITURE 12 ITEM_TRASH 13 ITEM_CONTAINER 15 ITEM_DRINK_CON 17 ITEM_KEY 18 ITEM_FOOD 19 ITEM_MONEY 20 ITEM_BOAT 22 ITEM_CORPSE_NPC 23 ITEM_FOUNTAIN 25 ITEM_PILL 26 ITEM_MAP 28 ITEM_SINGING 29 ITEM_PORTAL 30 ITEM_EXPLOSIVE 31
Object FLAGS:
ITEM_GLOW (A) ITEM_HUM (B) ITEM_DARK (C) ITEM_LOCK (D) ITEM_EVIL (E) ITEM_INVIS (F) ITEM_MAGIC (G) ITEM_NODROP (H) ITEM_BLESS (I) ITEM_ANTI_GOOD (J) ITEM_ANTI_EVIL (K) ITEM_ANTI_NEUTRAL (L) ITEM_NOREMOVE (M) ITEM_INVENTORY (N) ITEM_NOPURGE (O) ITEM_ROT_DEATH (P) ITEM_VIS_DEATH (Q) ITEM_MELT_DROP (R) ITEM_FLOAT (S)
WEAR FLAGS:
ITEM_TAKE (A) ITEM_WEAR_FINGER (B) ITEM_WEAR_NECK (C) ITEM_WEAR_BODY (D) ITEM_WEAR_HEAD (E) ITEM_WEAR_LEGS (F) ITEM_WEAR_FEET (G) ITEM_WEAR_HANDS (H) ITEM_WEAR_ARMS (I) ITEM_WEAR_SHIELD (J) ITEM_WEAR_ABOUT (K) ITEM_WEAR_WAIST (L) ITEM_WEAR_WRIST (M) ITEM_WIELD (N) ITEM_HOLD (O)
WEAPON CLASS:
WEAPON_EXOTIC 0 WEAPON_SWORD 1 WEAPON_DAGGER 2 WEAPON_SPEAR 3 WEAPON_MACE 4 WEAPON_AXE 5 WEAPON_FLAIL 6 WEAPON_WHIP 7 WEAPON_POLEARM 8
WEAPON TYPES:
WEAPON_FLAMING (A) WEAPON_FROST (B) WEAPON_VAMPIRIC (C) WEAPON_SHARP (D) WEAPON_VORPAL (E) WEAPON_TWO_HANDS (F)
APPLY TYPES (for the 'A' section of #OBJECTS):
APPLY_STR 1 APPLY_DEX 2 APPLY_INT 3 APPLY_WIS 4 APPLY_CON 5 APPLY_SEX 6 APPLY_CLASS 7 APPLY_LEVEL 8 APPLY_AGE 9 APPLY_HEIGHT 10 APPLY_WEIGHT 11 APPLY_MANA 12 APPLY_HIT 13 APPLY_MOVE 14 APPLY_GOLD 15 APPLY_EXP 16 APPLY_AC 17 APPLY_HITROLL 18 APPLY_DAMROLL 19 APPLY_SAVING_PARA 20 APPLY_SAVING_ROD 21 APPLY_SAVING_PETRI 22 APPLY_SAVING_BREATH 23 APPLY_SAVING_SPELL 24
Container FLAGS (if OBJECT TYPE is container only):
CONT_CLOSEABLE 1 CONT_PICKPROOF 2 CONT_CLOSED 4 CONT_LOCKED 8
Portal GATE FLAGS
GATE_NORMAL_EXIT A enter/exit messages from portal are as if its a door GATE_NOCURSE B can enter portal even if cursed or in norecall room GATE_GOWITH C the portal goes with you GATE_BUGGY D small chance of sending you to a random room GATE_RANDOM E sends you to a random room on the mud GATE_RANDOMAREA F sends you to a random room in same area
PORTAL EXIT FLAGS
EX_ISDOOR A EX_CLOSED B EX_LOCKED C EX_PICKPROOF F EX_NOPASS G passproof
Liquid values for DRINK CONTAINERS (value2 on the value line):
LIQ_WATER 0 LIQ_BEER 1 LIQ_WINE 2 LIQ_ALE 3 LIQ_DARK_ALE 4 LIQ_WHISKEY 5 LIQ_LEMONADE 6 LIQ_FIREBREATHER 7 LIQ_LOCAL_SPECIALTY 8 LIQ_SLIME_MOLD_JUICE 9 LIQ_MILK 10 LIQ_TEA 11 LIQ_COFFEE 12 LIQ_BLOOD 13 LIQ_SALT_WATER 14 LIQ_COLA 15
for #ROOMS
Direction Values for the 'D' section:
NORTH 0 EAST 1 SOUTH 2 WEST 3 UP 4 DOWN 5
Locks-numbers Values for the 'D' section:
Unhindered exit 0 Normal door 1 Pick-proof door 2 Passproof 3 Pick+pass-proof 4
ROOM-FLAGS:
ROOM_DARK (A) ROOM_NO_SUMMIN (B) ROOM_NO_MOB (C) ROOM_INDOORS (D) ROOM_NO_SUMMOUT (E) ROOM_PRIVATE (J) ROOM_SAFE (K) ROOM_SOLITARY (L) ROOM_PET_SHOP (M) ROOM_NO_RECALL (N) ROOM_IMP_ONLY (O) ROOM_GODS_ONLY (P) ROOM_HEROES_ONLY (Q) ROOM_NEWBIES_ONLY (R) ROOM_LAW (S)
SECTOR-TYPES:
SECT_INSIDE 0 SECT_CITY 1 SECT_FIELD 2 SECT_FOREST 3 SECT_HILLS 4 SECT_MOUNTAIN 5 SECT_WATER_SWIM 6 SECT_WATER_NOSWIM 7 SECT_AIR 9 SECT_DESERT 10 SECT_MAX 11
for #RESETS
Wear_loc Values for the 'E' reset command:
WEAR_NONE -1 WEAR_LIGHT 0 WEAR_FINGER_L 1 WEAR_FINGER_R 2 WEAR_NECK_1 3 WEAR_NECK_2 4 WEAR_BODY 5 WEAR_HEAD 6 WEAR_LEGS 7 WEAR_FEET 8 WEAR_HANDS 9 WEAR_ARMS 10 WEAR_SHIELD 11 WEAR_ABOUT 12 WEAR_WAIST 13 WEAR_WRIST_L 14 WEAR_WRIST_R 15 WEAR_WIELD 16 WEAR_HOLD 17 MAX_WEAR 18
for #SHOPS
OBJECT TYPES (items a shopkeeper will buy from player):
ITEM_LIGHT 1 ITEM_SCROLL 2 ITEM_WAND 3 ITEM_STAFF 4 ITEM_WEAPON 5 ITEM_TREASURE 8 ITEM_ARMOR 9 ITEM_POTION 10 ITEM_CLOTHING 11 ITEM_FURNITURE 12 ITEM_TRASH 13 ITEM_CONTAINER 15 ITEM_DRINK_CON 17 ITEM_KEY 18 ITEM_FOOD 19 ITEM_MONEY 20 ITEM_BOAT 22 ITEM_CORPSE_NPC 23 ITEM_PILL 26 ITEM_MAP 28 ITEM_SINGING 29
for #SPECIALS
List of SPEC-FUN's found in the ROM2 code:
spec_breath_any spec_breath_acid spec_breath_fire spec_breath_frost spec_breath_gas spec_breath_lightning
spec_cast_adept spec_cast_cleric spec_cast_judge spec_cast_mage spec_cast_undead
spec_executioner spec_fido spec_guard spec_janitor spec_mayor spec_poison spec_thief spec_puff spec_wolf spec_batmad
This ends my area help file, and I hope that by thoroughly reading ALL the above information that you now feel confident in beginning your area building.
FINAL HINT: For the end of this help section, I would like to part with some advice to aid you in your building interesting and fun areas for players to delve into and explore. When writing the room descriptions, object descriptions, and mobile descriptions, MAKE THEM INTERESTING TO READ! No one likes to see room after room AFTER ROOM of something like "You have entered a large chamber. It is very dark in here.", or some such nonsense for your room descriptions. Vary EACH room description and spice it up with some CREATIVITY. After all, that is what you must enjoy, if you are considering building an area. Try to use this combination of variety, intelligence, and imagination in the building of your area. One of the greatest joys most players find while mudding is the exploration and discovery of new and interesting rooms, items, treasures, and monsters. For those of you familiar with TSR's Dungeons & Dragons, or similar roleplaying games, this creative use of description and atmosphere should be well-known to you. Otherwise, consider looking over other areas YOU like before beginning your own, and see how that area was done. But most of all, do not bore your players.
Also, keep in mind what level your area is geared for, and the type of characters/players that it may be geared for as well. For example, some areas may be constructed with fighter-types in mind, others maybe mainly for grouped characters, or magic-using characters (lots of weapon-resistant mobiles for example), or for people that like to explore and/or map out new areas, and even areas for characters that just like blood, slaughter, and 'kill kill kill!'. So decide exactly WHAT type of area you are building, and follow through with it. And most important, MAKE IT FUN and CHALLENGING for the players. Despite what some may say, no one likes to be given tons of treasure, gold, and magic-items with little or no struggle. Monty Hall areas grow quickly tiresome. So endeavor to make a well-rounded, cleverly constructed area for all to enjoy. - Ozymandias