Re: [Long][Code] !PURGE flag

From: Edward Glamkowski (EGlamkowski@MATHEMATICA-MPR.COM)
Date: 11/03/97


The DGC code (publically available) has an excellent purge
command, which, if I remember correctly, it has this
feature.  Might want to take a look there to see what was
done.


Edward Glamkowski, Programmer           Mathematica Policy Research
EGlamkowski@mathematic-MPR.COM          Princeton, NJ
                http://www.mathematica-mpr.com/

            Please, please, provide me with my daily helping of
               preposterous and pretentious platitudes, waiter.


>----------
>From:  StormeRider[SMTP:silk@ICI.NET]
>Sent:  Sunday, November 02, 1997 7:42 PM
>To:    CIRCLE@post.queensu.ca
>Subject:        [Long][Code] !PURGE flag
>
>Ok, on my mud I decided that there are some things that I don't want to be
>purgeable. For example, the bulletin boards, and objects that people can
>sit on (not a good idea to free memory thats already freed when they stand
>up if its been purged). I added the item flag and changed do_purge to the
>below.
>
>Any ideas why it still purges them if just "purge" or still "purge <item
>flagged non-purge>"?
>
>/* clean a room of all mobiles and objects */
>ACMD(do_purge)
>{
>  struct char_data *vict, *next_v;
>  struct obj_data *obj, *next_o;
>
>  one_argument(argument, buf);
>
>  if (*buf) {                   /* argument supplied. destroy single object
>                                 * or char */
>    if ((vict = get_char_room_vis(ch, buf))) {
>      if (!IS_NPC(vict) && (GET_LEVEL(ch) <= GET_LEVEL(vict))) {
>        send_to_char("Fuuuuuuuuu!\r\n", ch);
>        return;
>      }
>      act("$n disintegrates $N.", FALSE, ch, 0, vict, TO_NOTVICT);
>
>      if (!IS_NPC(vict)) {
>        sprintf(buf, "(GC) %s has purged %s.", GET_NAME(ch), GET_NAME(vict));
>        mudlog(buf, BRF, LVL_GOD, TRUE);
>        if (vict->desc) {
>          close_socket(vict->desc);
>          vict->desc = NULL;
>        }
>      }
>      extract_char(vict);
>    } else
>      if ((obj = get_obj_in_list_vis(ch, buf, world[ch->in_room].contents))
>        && (!IS_OBJ_STAT(obj, ITEM_NOPURGE))) {
>      act("$n destroys $p.", FALSE, ch, obj, 0, TO_ROOM);
>      extract_obj(obj);
>    } else {
>      send_to_char("Nothing here by that name.\r\n", ch);
>      return;
>    }
>
>    send_to_char(OK, ch);
>  } else {                      /* no argument. clean out the room */
>    act("$n gestures... You are surrounded by scorching flames!",
>        FALSE, ch, 0, 0, TO_ROOM);
>    send_to_room("The world seems a little cleaner.\r\n", ch->in_room);
>
>    for (vict = world[ch->in_room].people; vict; vict = next_v) {
>      next_v = vict->next_in_room;
>      if (IS_NPC(vict))
>        extract_char(vict);
>    }
>
>    for (obj = world[ch->in_room].contents; obj; obj = next_o) {
>      next_o = obj->next_content;
>      if (!IS_OBJ_STAT(obj, ITEM_NOPURGE))
>        extract_obj(obj);
>    }
>  }
>}
>
>
>        .--.        .-----------       StormeRider
>       // / \  __  /    ------        winds@ici.net
>      ///////\(  `-,   ----
>     //// /// '~ (    ---         CircleMUD 3.0bpl11
>    // /  // :    ; ---              cmoo.com:4004
>   /     /  /)   / --
>           //..\\       http://members.tripod.com/~WindsOfStorm
>           UU   UU
>           '//||\\`
>
>
>     +------------------------------------------------------------+
>     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
>     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
>     +------------------------------------------------------------+
>


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



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