Ok, once again seen other do restore all that I've found lacking, for one, they make an entirely seperate ACMD instead of using an arg check inside do_restore. This is a blatant hack that does just that using zreset * as base for the all portion. So, anyways here's my do_restore with all the little tweaks I liked. Dylan Myers a.k.a. Ulath of Caer Dubrin telnet://cd.dubrin.net:9900 ralgith@yahoo.com ACMD(do_restore) { char buf[MAX_INPUT_LENGTH]; struct descriptor_data *k, *next_desc; struct char_data *vict, *next_force; int i; one_argument(argument, buf); if (!*buf) send_to_char(ch, "Whom do you wish to restore?\r\n"); else if ((GET_LEVEL(ch) < LVL_GOD) || (str_cmp("all", buf) && str_cmp("room", buf) && str_cmp("*", buf))) { if (!(vict = get_char_vis(ch, buf, NULL, FIND_CHAR_WORLD))) send_to_char(ch, "%s", CONFIG_NOPERSON); else if (!IS_NPC(vict) && ch != vict && GET_LEVEL(vict) >= GET_LEVEL(ch)) send_to_char(ch, "They don't need your help.\r\n"); else { GET_HIT(vict) = GET_MAX_HIT(vict); GET_MANA(vict) = GET_MAX_MANA(vict); GET_MOVE(vict) = GET_MAX_MOVE(vict); if (!IS_NPC(vict) && GET_LEVEL(ch) >= LVL_GRGOD) { if (GET_LEVEL(vict) >= LVL_IMMORT) for (i = 1; i <= MAX_SKILLS; i++) SET_SKILL(vict, i, 100); if (GET_LEVEL(vict) >= LVL_GRGOD) { vict->real_abils.str_add = 100; vict->real_abils.intel = 25; vict->real_abils.wis = 25; vict->real_abils.dex = 25; vict->real_abils.str = 25; vict->real_abils.con = 25; vict->real_abils.cha = 25; } } update_pos(vict); affect_total(vict); send_to_char(ch, "%s", CONFIG_OK); act("You have been fully healed by $N!", FALSE, vict, 0, ch, TO_CHAR); } } else if (!str_cmp("room", buf)) { send_to_char(ch, "%s", CONFIG_OK); mudlog(NRM, MAX(LVL_GOD, GET_INVIS_LEV(ch)), TRUE, "(GC) %s has restored room %d", GET_NAME(ch), GET_ROOM_VNUM(IN_ROOM(ch))); for (vict = world[IN_ROOM(ch)].people; vict; vict = next_force) { next_force = vict->next_in_room; if (!IS_NPC(vict) && GET_LEVEL(vict) >= GET_LEVEL(ch)) continue; GET_HIT(vict) = GET_MAX_HIT(vict); GET_MANA(vict) = GET_MAX_MANA(vict); GET_MOVE(vict) = GET_MAX_MOVE(vict); } } else if (!str_cmp("all", buf) || !str_cmp("*", buf)) { /* restore all */ send_to_char(ch, "%s", CONFIG_OK); mudlog(NRM, MAX(LVL_GOD, GET_INVIS_LEV(ch)), TRUE, "(GC) %s has restored all", GET_NAME(ch)); for (k = descriptor_list; k; k = next_desc) { next_desc = k->next; if (STATE(k) != CON_PLAYING || !(vict = k->character) || (!IS_NPC(vict) && GET_LEVEL(vict) >= GET_LEVEL(ch))) continue; GET_HIT(vict) = GET_MAX_HIT(vict); GET_MANA(vict) = GET_MAX_MANA(vict); GET_MOVE(vict) = GET_MAX_MOVE(vict); act("You have been fully healed by $N!", FALSE, vict, 0, ch, TO_CHAR); } } else { /* restore all as default */ send_to_char(ch, "%s", CONFIG_OK); mudlog(NRM, MAX(LVL_GOD, GET_INVIS_LEV(ch)), TRUE, "(GC) %s has restored all", GET_NAME(ch)); for (k = descriptor_list; k; k = next_desc) { next_desc = k->next; if (STATE(k) != CON_PLAYING || !(vict = k->character) || (!IS_NPC(vict) && GET_LEVEL(vict) >= GET_LEVEL(ch))) continue; GET_HIT(vict) = GET_MAX_HIT(vict); GET_MANA(vict) = GET_MAX_MANA(vict); GET_MOVE(vict) = GET_MAX_MOVE(vict); act("You have been fully healed by $N!", FALSE, vict, 0, ch, TO_CHAR); } } }