Bug/Idea/Tracking module v1.2
============================================================================================================================================
This module is designed to add better Bug/Idea/Typo tracking to your MUD. It will notify
your staff when a new bug, idea or typo has been submitted and provide detailed information about
it. It will also notify the staff when they log into the game that these types of things need their attention.

Version history:
v1.0     Basic bug/idea/typo tracking system
v1.0a	 Added notifications to immortals as well as players and added gold/glory rewards.
v1.1	 Immortals have the ability to comment on what they fixed and players are now given that message.
v1.2	 Immortals can now set bugs to being 'fixed' without rewarding the player. Too many people were being rewarded for small fixes.

Ideas for future versions:
1. Give a comment preview in the main bug/idea/typo list to filter through which need immediate attention.
2. Give Immortals the ability to move switch a post from a bug to an idea or typo for misposted reports.
3. Reports have been given about pruneBuidty() causing crashes when it attempts to remove old Ideas. Research further.
4. Force posters to give a description of the problem - there have been quite a few blank posts when people are learning how to use this.



Conditions for using this snippet
============================================================================================================================================
There are some harsh licenses out there. I could really care less if you put my name in in lights, make a shrine in your closet
or even mention me in a help file. It would be nice, but honestly, I don't have time to check every MUD that may or may not use my
stuff. That being said, there are some things I would appreciate:

1. Follow the goddamn Merc/Diku/Smaug license. There's no reason not to. In fact, sometimes it's even MORE work not to follow it.
2. Shoot me an email at drmultiverse - AT - gmail.com and tell me if you're using the snippet. I don't need your mud address, real phone number,
   photo ID or your first born, so only include that information if you are going to follow step 3.
3. I am more interested in collaboration, than nutbusting people who don't tell me their using their stuff. I want to know because
   I am interested in what you do with it. I want to know if you made any improvements, took out some things, anything really that you
   think makes it better. This is a community, after all. Firefox wasn't written by just one person, after all.s

Open up mud.h
============================================================================================================================================
Somewhere near the top of the file, find your structure types and add the following to the section:

typedef struct  bug_data        	BUG_DATA;
typedef struct  idea_data       	IDEA_DATA;
typedef struct  typo_data       	TYPO_DATA;


This module uses some macros to save on typing, so somewhere towards the bottom of the file where
your other macro definitions are, add this line:

#define NULLSTR(str)      (!str || str[0] == '\0')


Also add this somewhere near there:

#define MSL	   MAX_STRING_LENGTH
#define MIL	    MAX_INPUT_LENGTH
#define MFL	                 256


Still in the macro definitions, there are macros for save files used in the game. Add the following
to that section:

#define PBUG_FILE	SYSTEM_DIR "pbugs.dat"	  	// For 'bug' data
#define IDEA_FILE	SYSTEM_DIR "ideas.dat"	  	// For 'idea' data
#define TYPO_FILE	SYSTEM_DIR "typos.dat"	  	// For 'typo' data


Open up db.c
============================================================================================================================================
At the top of the file where the other prototype declaration are, add the following:

void	loadBugs		args( ( void ) );
void	loadIdeas		args( ( void ) );
void	loadTypos		args( ( void ) );


Now, down in the boot_db() function, AFTER areas are loaded, but before it sets MOBtrigger = TRUE; Add the following:

    load_bugs();
    load_ideas();
    load_typos();


Open up comm.c
============================================================================================================================================
At the top of the file where the other prototype declarations are, add the following:

void	checkBuidty		 args( ( CHAR_DATA *ch ) );


Now, search for "$n has entered the game" or the similar message to announce the character's entry into the room
after logging in to your MUD. A short ways below that message, there should be a call similar to this:

interpret(ch, "look");

Below that, add the following:

checkBuidty(ch);


Open up editor.c (or wherever you wish to add this. It's a string manipulation function, so I put all those in editor.c)
============================================================================================================================================
Add the following somewhere in the file:

void nstralloc( char **pointer )
{
  if( !*pointer )
    *pointer = STRALLOC("");
  return;
}



Now you're done. Add buidty.c to your Makefile (I'm assuming you know how to do this. If not, shoot me an email or find me on IMC)
Do a clean compile. Upload pbugs.dat, typos.dat and ideas.dat to your ../system/ directory. You shouldn't need to edit any commands,
as they use the same function calls. Be sure to verify the the 'bug', 'idea' and 'typo' commands work differently now and that's it.

If you have any questions, comments, improvements or CONSTRUCTIVE criticism, feel free to contact me by any method listed below.
Regardless, please drop me a line telling me you're using this so I'm motivated to release more stuff. Especially if you find any
bugs or have any suggestions. I'd love to hear them.

Name   : Exodus Ahriman (Exo)
Email  : drmultiverse - AT - gmail.com
Website: http://darkrealms.genesismuds.com
IMC    : Exodus@DRM

Enjoy!
