MobProgs

From: VampLestat (vamp@csulb.edu)
Date: 01/24/94


I've decided that I want to incorporate MobProgs into my Circle 2.2 mud, 
and I was wondering if anyone had done any work in this area or had any 
suggestions.  MobProgs seems a great tool to allow area creators to 
accomplish things that Implementors always have to hard code.

Has anyone attempted this yet?

ObCircleBug: Immortals can wizlock the game above thier level, thus 
allowing them to lock out Greater Gods and such.  Ooops.  A simple fix:

ACMD(do_wizlock)
{
   int  value;
   char *when;

   one_argument(argument, arg);
   if (*arg) {
      value = atoi(arg);
      if (value < 0 || value > LEVEL_IMPL) {
         send_to_char("Invalid wizlock value.\n\r", ch);
         return;
      }

/* do not allow people to wizlock above thier level.
 * this bug came with circle 2.2 source  -vamp
 */

      if (value > GET_LEVEL(ch)) {
         send_to_char("You may only wizlock below your level.\n\r", ch);
         return;
       }

      restrict = value;
      when = "now";
   } else
      when = "currently";

[blah, blah ... ]


Oh, and I guess here's one more for the road ... the mortal version of 
when done on a mob will show the room they are in.  Problem is that I 
dont want players seeing mobs that are located in "Mob Distribution 
Room".  So I flagged it "private" and added two extra checks into 
perform_mortal_where().


void perform_mortal_where(struct char_data *ch, char *arg)
{
   register struct char_data *i;
   register struct descriptor_data *d;

   if (!*arg) {
      send_to_char("Players in your Zone\n\r--------------------\n\r", ch);
      for (d = descriptor_list; d; d = d->next)
         if (!d->connected) {
            i = (d->original ? d->original : d->character);
            if (i && CAN_SEE(ch, i) && (i->in_room != NOWHERE) &&
             (world[ch->in_room].zone == world[i->in_room].zone)) {
                sprintf(buf, "%-20s - %s\n\r", GET_NAME(i), world[i->in_room].name);
                send_to_char(buf, ch);
            }
         }
   } else { /* print only FIRST char, not all. */
      for (i = character_list; i; i = i->next)
         if (world[i->in_room].zone == world[ch->in_room].zone &&  CAN_SEE(ch, i) &&
             (i->in_room != NOWHERE) && isname(arg, i->player.name) &&

/* added conditions to prevent mortal where from seeing mobs in 
 * private or godrooms.  no seeing mob distribution rooms     -vamp  
 */

             (!IS_SET(world[i->in_room].room_flags, PRIVATE)) &&
             (!IS_SET(world[i->in_room].room_flags, GODROOM)) ) {
            sprintf(buf, "%-25s - %s\n\r", GET_NAME(i), world[i->in_room].name);
            send_to_char(buf, ch);
            return;
         }
      send_to_char("No-one around by that name.\n\r", ch);
   }
}



_O_  Ryan L. Watkins                                     vamp@csulb.edu
 |   Academic Computing Services Cal State Long Beach - Network Support
 |   pgp key available via 'finger vamp@beach.csulb.edu' or key server



This archive was generated by hypermail 2b30 : 12/07/00 PST