home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / d / d-linux.zip / dm-dist / mar_fiz_maz.c < prev    next >
C/C++ Source or Header  |  1991-03-01  |  2KB  |  81 lines

  1. /* ************************************************************************
  2. *  file: mar_fiz_maz.c, Special module.                   Part of DIKUMUD *
  3. *  Usage: Procedures handling special procedures for the world builders   *
  4. *         Marauder (Dragon), Fizgig (Redferne) and Maze (Quifael)         *
  5. *  Copyright (C) 1990, 1991 - see 'license.doc' for complete information. *
  6. ************************************************************************* */
  7.  
  8. #include <stdio.h>
  9. #include <string.h>
  10. #include <ctype.h>
  11.  
  12. #include "structs.h"
  13. #include "utils.h"
  14. #include "comm.h"
  15. #include "interpreter.h"
  16. #include "handler.h"
  17. #include "db.h"
  18. #include "spells.h"
  19. #include "limits.h"
  20.  
  21. /*   external vars  */
  22.  
  23. extern struct room_data *world;
  24. extern struct char_data *character_list;
  25. extern struct descriptor_data *descriptor_list;
  26. extern struct index_data *obj_index;
  27.  
  28.  
  29. /* ********************************************************************
  30. *  Special procedures for Marauder                                    *
  31. ******************************************************************** */
  32.  
  33. int mar_gate(struct char_data *ch, int cmd, char *arg)
  34. {
  35.     int i, j;
  36.   struct descriptor_data *desc;
  37.     struct obj_data *obj, *tmp_obj;
  38.     bool punished;
  39.  
  40.     for (desc = descriptor_list; desc; desc = desc->next) {
  41.         if ((desc->connected == CON_PLYNG) && !IS_NPC(desc->character) &&
  42.             (desc->character) && (world[desc->character->in_room].number < 8000)) {
  43.             punished = FALSE;
  44.  
  45.             for(i=0; i<MAX_WEAR; i++) {
  46.                 if ((desc->character->equipment[i]) &&
  47.                     ((j=obj_index[desc->character->equipment[i]->item_number].virtual)>=8000) &&
  48.                (j<8999) ) {
  49.                     obj=unequip_char(desc->character, i);
  50.                     GET_GOLD(desc->character) -= obj->obj_flags.cost;
  51.                     extract_obj(obj); /* Destroy it */
  52.                     punished = TRUE;
  53.  
  54.                 }
  55.             }
  56.  
  57.             for (obj = desc->character->carrying; obj; obj = tmp_obj) {
  58.                 tmp_obj = obj->next_content;
  59.                 if (((j=obj_index[obj->item_number].virtual)>=8000) &&
  60.                (j<8999) ) {
  61.                     obj_from_char(obj);
  62.                     GET_GOLD(desc->character) -= obj->obj_flags.cost;
  63.                     extract_obj(obj); /* Destroy it */
  64.                     punished = TRUE;
  65.                 }
  66.             }
  67.  
  68.             if (punished) {
  69.                 send_to_char("You have been punished by the Gods!\n\r", desc->character);
  70.                 GET_GOLD(desc->character) = MAX(0, GET_GOLD(desc->character));
  71.                 GET_MOVE(desc->character) = MIN(GET_MOVE(desc->character), 10);
  72.                 GET_MANA(desc->character) = 0;
  73.             }
  74.  
  75.         } /* if a playing player */
  76.  
  77.     }  /* for */
  78.  
  79.     return FALSE;
  80. }
  81.