/* ************************************************************************
* 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 "os.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"
#include "prototypes.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;
}