/* ************************************************************************ * 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; }