CODERS/BUILDERS NOTES

A WORD TO CODERS

Every change I make I post on http://www.erols.com/moodyg

If you make a change tell me or email me at moodyg@erols.com and I will update the page.

If you see a change on the page, spend a few minutes and test the change.

Read all the documentation in /root/smaug/doc and the help file (/root/smaug/area/help.are). They will save you a lot of effort and a lot of searching. The files can be FTPed from the Play Dragon Bane page from the smaug directory. The text version of this page resides there as /smaug/doc/shogar.rules.

BUILDING AREAS

Contact me before you start building an area so I can reserve a range of VNUMS for you.

The key to a good area is a balance for the entire range that the area is meant for.

Humor is always nice in an area, just be politically correct about it.

Smaug has OLC - On Line Creation for builders.

MZF is a program that you can use to build areas. As of yet MZF can't handle the new smaug area formats, but if you are writing from scratch, using the MERC 2.x file format can give you a heck of a good start on an area.

ITEMS

Don't waste memory with items that are less useful than what the school gives.

Don't put items in an area that the player can't use for a long time. If the range is 0-5 don't have an item that is meant for more than a sixth level player. The converse of this also applies. Don't put level one items in an area meant for 10-15 level characters. (:unless they cursed:)

MOBILES

This is open to discussion and is more of a rule of thumb than a solid rule. The average group is about 3. So an area that is designed for level 0 to 5 should have mobs in it that a single newbie can beat and mobs in it that a group of 3 5th level characters can beat.

If you agonize about a mobile's stats, you can now create a mobile with just a level and a zero value for hitnodie. The hitnodie, hitsizedie, damnodie, damsizedie and gold will be calculated out on the boot load. It would work on UNFOLDAREA area too, but I've never been able to use that command with crashing the mud.

To have the mobile  respond to the TALK command when coding off line, merely follow the long description with a back quote (usually same key as ~) and the response that you wish the mobile to say. Do not include the back quote if using OLC. This should have no affect on area building programs like MZF.

CODING

Every piece of code must have a comment that refers to the command that you are adding or modifying and your name. For example: that way any of us can find the affected code by doing a unix: grep -i "shogar" *.c command.

New subroutines will have a comment before them like:

I feel well written C code doesn't need line by line comments. If you want to go ahead. If you are accessing global variables that are not defined or normally used in the .c file you are working in, you should put a comment as to where and/or why you are using it. Up to you though.

Don't over compensate for readability by creating a lot of 1 time local variables. Yes the system gets the memory back when the sub routine ends, but allocating and deallocating memory eats CPU. For instance:

        This is bad; 

                char hello_buf[1024];
                char illegal_command_buf[1024];
                char goodbye_buf[1024];

        If this would do;

                char show_char_buf[1024];
If you can't put a comment beside a line, put it above the line. Not under it. Just my preference here:).

CHECK CHECK CHECK. Don't assume that there is plenty of disk space. If you write to the disk, check the status of the write command.

Don't assume that an object or a room exits. Check the status.

If you catch a problem, write it to the log "log_string(str)" or the bug file "bug(str,int)". Include the subroutine's name, for example:

        { 
                log_string("do_recall: Can't find the room");
                handle_it();
                return; 
        } 
or
        {
                bug("do_recall: Can't find the room",errcode);
                exit(1);
        }
I like to reserve bug for critical errors that probably would cause the mud to crash. My personal preference.

If you add a new command, DON'T FORGET TO UPDATE THE help.are FILE.

TIPS

The unix grep is a wonderful command, if you don't know it, do a man grep.

Look to see if a subroutine you need already exists, or one so similar that you might be able to setup a global variable to alter the way the existing subroutine works.

Ummm, watch the copyrights if you steal, I was referring to Public Domain Stuff. And give the original author their due in the comments.

Don't let realism get in the road of playability. It is very realistic for a critically hurt person to take months to heal, but it makes a very boring mud.

RESOURCES:

 Area EXchange (AEX) project (Take the pain out of porting areas/zones)
 Area Building Software and Links
 MZF Area Builder (useful to smaugers when used with orb to port areas)
 ORB Area Builder(does smaug areas)

 OLC Instructions & FAQs (Quick overall of OLC with FAQs from Dragon Bane)
 Bartell's Smaug Shop Building Guide (Usually a trouble area with new imms)
 Smaug frequently asked Questions
 Smaug Mailing List Archive
 Ambiorix's Smaug OLC Manual (nicely done hypertexted manual)
 Smaug Posting Board (For Admins, Coders and Builders)
 The New Smaug FAQ (Searchable FAQ)
 BSNAME's Smaug FAQ (Many of the well know bugs and their fixes are covered here)
 Zyrain's  Smaug FAQ (several documents here, mprog.txt makes it worth the trip)
 Zylara's Castle (noble effort to document smaug olc in one spot, a work in progress)
 Garwain's Smaug OLC FAQ (A few different FAQs)

 The MUD Cheat Page appears to be no more.
 Essay on Object Balance (Put this on your "must read" list)
 Silvain Robert's Spellbook Page (not directly smaug related, but a good source for inspiration)
 Journal of Mud Research (scientific approach mudzine)
 World Building (Lots of resources for the serious World Builder)
 UCMM Page (Multi Clan - Multimud Organization - of which Dragon Bane is a member)

 Dragon Bane Specific ORB files (.dat files that have DB's flags and bitvectors)
 Dragon Bane Specific ORB files (As of the 3/31/98 version, the dat files are gone, it's now a .ini - ascii file)