Instructions on adding in freeze tag gameplay: dustlos@hotmail.com This was done on CircleMUD bpl17 with ASCII Pfiles. This will also put in a send_to_world type function, you will see, its good to have. This is what this readme does not tell you to do: In a lot of these files you will need to add some externs or prototypes for the functions, you should know how to do this... I'm sorry for the bad format of this readme, but bear with it, its short. How freezetag works: An immortal adds players to either red or blue team, when enough are in he/she starts the game. The players run around tagging eachother and they become frozen (a fellow teammate can unfreeze them). When everyone on one team is frozen or when the timer runs out, the game is over and your quest god can give rewards to the winning team or whatever. Every point_update the timer for the freeze match goes down, when its out the game ends. Begin: 1) In structs.h go to struct player_special_data_saved and add in this: int tag_team; /* Which team person is on */ 2) Now, we need some useful defines in case we add teams later on or do weird things. Somewhere in the upper area of structs.h add in: /* Some defines for the freeze tag */ #define TEAM_NONE 0 #define TEAM_RED 1 #define TEAM_BLUE 2 and /* Some defines for message world */ #define MSG_DARKNESS 0 #define MSG_FREEZE 1 3) Open up act.comm.c and at the bottom of it add in: void do_message_world(char *argument, int type) { struct descriptor_data *pt; skip_spaces(&argument); delete_doubledollar(argument); switch (type) { case 0: sprintf(buf2, "&n[&DDarkness Falling&n]&n:&n &r%s&n\r\n", argument); break; case 1: sprintf(buf2, "&m[&MFreeze Tag&m]&n: &r%s&n\r\n", argument); break; } if (type == MSG_FREEZE) { for (pt = descriptor_list; pt; pt = pt->next) { if (STATE(pt) == CON_PLAYING && pt->character && GET_FREEZE_TEAM(pt->character)) { send_to_char(buf2, pt->character); } } return; } for (pt = descriptor_list; pt; pt = pt->next) { if (STATE(pt) == CON_PLAYING && pt->character) { send_to_char(buf2, pt->character); } } } 4) OK, we have in the useful message_world so that's good, we will be using it. Now, put in freezetag.c into your src directory and add it to the Makefile. 5) In utils.h add in this macro: #define GET_FREEZE_TEAM(ch) ((ch)->player_specials->saved.tag_team) 6) Well, you may think we are done but we aren't. Open up config.c and look around where pk_allowed is and add in these global variables. /* our global variables */ int freeze_game_running = 0; int freeze_game_timer = 0; int freeze_game_red = 0; int freeze_game_blue = 0; int freeze_game_iblue = 0; int freeze_game_ired = 0; 7) Now open up comm.c and search for point_update and add this in near it: if (freeze_game_running && freeze_game_timer) { freeze_game_timer--; if (!freeze_game_timer) { endgame(); } } 8) Now we want to add in a new position, POS_FROZEN. Open up interpreter.c and look for send_to_char("All you can do right now is think about the stars!\r\n", ch); break; and below it add in: case POS_FROZEN: send_to_char("You've been frozen by an opponent!\r\n", ch); break; 9) Reopen up structs.h and add in POS_FROZEN in between STUNNED and SLEEPING and then renumber the positions accordingly. 10) Now, open up interpreter.c and add in the commands for addteam, startgame, endgame, tag, and tsay. 11) This should be all that is needed! Good luck and if you need help email me.