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 |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST