--------------------------------------------------------------------------------
This all started with a post by Osiris in a thread on TMC's Legal Issues board,
in which he pondered if a "Whack-a-Troll" game would count as a derivitave work.
Well, I thought it sounded like a funny idea, so I took a few minutes to code a
simple little minigame from it, using a few familiar trolls.  If the troll
selection pisses you off, good.  If I didn't get to you, send me an email and
I'll correct my oversight.               -- Midboss (eclipsing.souls@gmail.com)
  ----------------------------------------------------------------------------
A few notes before you begin.  The area file included with this will need vnums
29976-30000, and uses color codes in its descriptions, as the area is an ASCII 
Whack-A-Mole machine.  Also, you may want to adjust the mobiles to suit the
balance of your MUD, I've opted to make them all super-weak.  Now, to get
started, put whacktroll.c in your src directory, and if necessary, add
whacktroll.o to your makefile.
-------------------------------------------------------------------------merc.h-
Add the following to struct pc_data:
	int				trollpoints;

And add this to your ACT_* flags, adjusting the value if needed:
#define ACT_IS_TROLL       (ee)

Add this with your COMM_* flags, adjusting the value if needed:
#define COMM_NOTROLL			(K)
-----------------------------------------------------------------------tables.c-
Add this to act_flags[]:
    {"troll", ee, TRUE},

----------------------------------------------------------------------handler.c-
Add this at the end of the NPC case in act_bit_name():
        if (act_flags & ACT_IS_TROLL)
            strcat (buf, " is_troll");

Add this to comm_bit_name():
    if (comm_flags & COMM_NOTROLL)
        strcat (buf, " no_troll");

---------------------------------------------------------------------act_info.c-
Add this after the thief and killer flags in show_char_to_char_0:
    if (IS_NPC (victim) && IS_SET (victim->act, ACT_IS_TROLL))
        strcat (buf, "(TROLL) ");

------------------------------------------------------------------------fight.c-
Add this RIGHT BEFORE the raw_kill() call in damage():
		if (IS_NPC (victim) && !IS_NPC (ch)
			&& IS_SET (victim->act, ACT_IS_TROLL))
			ch->pcdata->trollpoints += victim->level;

---------------------------------------------------------------------act_comm.c-
Add this with the dead and fighting checks in do_quit():

	if (ch->in_room->vnum > 29975 && ch->in_room->vnum < 30001)
	{
        send_to_char ("You can't quit here.\n\r", ch);
        return;
	}
----------------------------------------------------------------------act_wiz.c-
Add this before the save_char_obj() call in do_copyover():
			if (och->in_room->vnum > 29975
				&& och->in_room->vnum < 30001
				&& och->was_in_room != NULL)
			{
				char_from_room (och);
				char_to_room (och, och->was_in_room);
			}
-----------------------------------------------------------------------update.c-
Add this above your update_handler():
void whack_a_troll (void);

Add this to the top of your update_handler():
	whack_a_troll();
---------------------------------------------------------------------interp.c/h-
Add the command prototype and table entry for do_troll.
--------------------------------------------------------------------------------
And that's it, port the included area file in, do a clean compile, and it should
all work just fine.  You can add new trolls within the area's vnums, and they'll
automatically be on rotation in the minigame.  Oh, and to anyone the default
troll selection offends?  Good.
--------------------------------------------------------------------------------