/* ************************************************************************
*  file: mar_fiz_maz.c, Special module.                   Part of DIKUMUD *
*  Usage: Procedures handling special procedures for the world builders   *
*         Marauder (Dragon), Fizgig (Redferne) and Maze (Quifael)         *
*  Copyright (C) 1990, 1991 - see 'license.doc' for complete information. *
************************************************************************* */

#include <stdio.h>
#include <string.h>
#include <ctype.h>

#include "structs.h"
#include "utils.h"
#include "comm.h"
#include "interpreter.h"
#include "handler.h"
#include "db.h"
#include "spells.h"
#include "limits.h"

/*   external vars  */

extern struct room_data *world;
extern struct char_data *character_list;
extern struct descriptor_data *descriptor_list;
extern struct index_data *obj_index;


/* ********************************************************************
*  Special procedures for Marauder                                    *
******************************************************************** */

int mar_gate(struct char_data *ch, int cmd, char *arg)
{
	int i, j;
  struct descriptor_data *desc;
	struct obj_data *obj, *tmp_obj;
	bool punished;

	for (desc = descriptor_list; desc; desc = desc->next) {
		if ((desc->connected == CON_PLYNG) && !IS_NPC(desc->character) &&
		    (desc->character) && (world[desc->character->in_room].number < 8000)) {
			punished = FALSE;

			for(i=0; i<MAX_WEAR; i++) {
				if ((desc->character->equipment[i]) &&
					((j=obj_index[desc->character->equipment[i]->item_number].virtual)>=8500) &&
		       (j<8999) ) {
					obj=unequip_char(desc->character, i);
					GET_GOLD(desc->character) -= obj->obj_flags.cost;
					extract_obj(obj); /* Destroy it */
					punished = TRUE;

				}
			}

			for (obj = desc->character->carrying; obj; obj = tmp_obj) {
				tmp_obj = obj->next_content;
				if (((j=obj_index[obj->item_number].virtual)>=8000) &&
		       (j<8999) ) {
					obj_from_char(obj);
					GET_GOLD(desc->character) -= obj->obj_flags.cost;
					extract_obj(obj); /* Destroy it */
					punished = TRUE;
				}
			}

			if (punished) {
				send_to_char("You have been punished by the Gods!\n\r", desc->character);
				GET_GOLD(desc->character) = MAX(0, GET_GOLD(desc->character));
				GET_MOVE(desc->character) = MIN(GET_MOVE(desc->character), 10);
				GET_MANA(desc->character) = 0;
			}

		} /* if a playing player */

	}  /* for */

	return FALSE;
}