(This is still only a draft version and might be updated/modified).
Regarding mobiles
- Do not make any invincible mob. Some mobs might be very tough, but they shouldn't insta-heal or do un-IC things (as a special case, no guard should be invincible).
- Do not make mobs do things that are unIC for them. A fighter won't suddenly start casting heal or harm or blade barrier for example.
- Don't forget to flag with ACT_CITIZEN the mobs who would be defended by the guards. Have some wandering guards (declared with Guard in the JUSTICE section) if that's IC for the area.
- When you use sayto in your programs, make sure that what follows the sayto is short enough. Other people in the room will see "(mobname) says to (PCname) ...text..." and the whole line should still be under 80 characters.
Regarding trainers
- No area should offer hundreds of skills (in the general sense = weapon skills, spells, languages, feats, ...). People should be forced to visit more than one place to learn all their skills. It's a common mistake for a first-time builder to cram his areas with way too many skills.
- As a rule of thumb, each trainer should train at most 3 or 4 things, with at most 1 spell, at most 2 weapon skills, and at most 1 feat (and maybe train level in addition to those). Skills should be trained up to a skill level or 10 or so. Rare, hard-to-reach trainers, might go as high as 12. Exceptional trainers, who can only be reached after a quest, might go as high as 14.
- Trainers should only train IC skills. A level 30 mob shouldn't train level up to level 45; a fighter shouldn't train a clerical prayer; a cleric shouldn't train a wizard-only spell. As a last restriction on what can be trained, avoid putting level 8-9 spells on trainers. Those should be quest-given only (or gained through roleplay, learned from a scroll scribed by another character).
- For the moment, avoid putting in trainers for the new spells. We are going to introduce them slowly, one at a time.
Regarding objects
- The standard for magic weapons given after a quest is at most +1 to hit and +1 to damage. And only after relatively long quests. No quest should give out weapons with special WFLAG flags like vorpal, wounding, ...
- Rechargeable items are fine. Especially when they need to be recharged by specific classes. They incite people to seek out others and roleplay.
- QUALITY_HIGH is the highest quality you should use in normal areas; higher qualities are used for one-of-a-kind items and for supplicated items. That does not mean that all the items should be of high quality either: lower qualities should also be used when appropriate, and the norm should be QUALITY_AVERAGE, not high.
Regarding rooms
- For non-wilderness areas, stick to north/south/east/west/up/down connections and avoid northeast/southeast/southwest/northwest connections.
- No death traps (= rooms that insta-kill you as you enter). None. Ever. It's fine to kill (and even mpslay) characters if they do something really really stupid, but they should have some forewarning first, and it should only happen when there is a good IC reason for the death.
- Don't use the NO_ASTRAL flag unless where it's needed and there is a good IC reason for it to be used (e.g. deep underdark). Rooms with NO_ASTRAL should be special rooms, and not the norm.
General comments
- Don't use OOC means to make your area inpenetrable. Placing guards that would prevent people from going in some parts of the area is fine. Adding an intercept_prog on a room, that cannot be bypassed, is not fine.
- When you use mpecho (or another echo command) with a sentence that runs over more than one line, make sure to start the second (and following) lines with {00}.{colourcode} to avoid having its first word capitalized.
- When you need to produce echoes, make sure to use mpechoat $n ...You... and mpechoaround $n ...$N..., the first being sent only to $n (and using "you") and the second being sent to all people but $n (and using $N to designate $n).
- When you teleport people, you need 3 kinds of echoes: one to the character that is being teleported (mpechoat $n Your surroundings change), one to the those who were near the character before the teleportation (mpechoaround $n $N disappears!), then an echo around the teleported character after the teleportation (mpat (vnum) mpechoaround $n $N appears!).