Another restore all command syntax: restore Examples: restore player restores player if the immortal is invis to the player he will get a "An Immortal has restored you." message else he gets "Immortalsname has restored you." restore player A Beagle restores player and the player will see "A Beagle has restored you." restore all restores all players if the immortal is invis to the player they will get a "An Immortal has restored you." message else he gets "Immortalsname has restored you." restore all A beagle restores all players and they see "A Beagle has restored you." author of the snippet its based on William R. Sloop, a.k.a. "Robert" wrsloop@longwood.lwc.edu If you want to credit anyone credit him, he gave me the inspiration. Didn't like the way he implemented this (sorry mate) so heres my version with a twist. Standard Disclaimers. Might have a bugs in haven't tested this fully yet (Note: I dont have a live MUD). basically replace your do_restore with this lot........ void restore_character(struct char_data *vict, struct char_data *ch, char *emote) { int i; GET_HIT(vict) = GET_MAX_HIT(vict); GET_MANA(vict) = GET_MAX_MANA(vict); GET_MOVE(vict) = GET_MAX_MOVE(vict); if ((GET_LEVEL(ch) >= LVL_GRGOD) && (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.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; } vict->aff_abils = vict->real_abils; } update_pos(vict); if (!*emote){ if (!CAN_SEE(vict,ch)){ strcpy(emote,"An Immortal"); }else sprintf(emote,"%s",GET_NAME(ch)); /* Use strcpy? */ } sprintf(buf,"%s has restored you.\r\n", emote); send_to_char(buf, vict); } ACMD(do_restore) { struct char_data *vict; struct descriptor_data *pt; char *name = arg, *emote = buf2; half_chop(argument, name, emote); if (!*name) send_to_char("Whom do you wish to restore?\r\n", ch); else if (!strcmp(name, "all")){ if (GET_LEVEL(ch)=>LVL_QUESTOR){ /*or whoever you want to be able to do this */ for (pt = descriptor_list; pt; pt = pt->next){ if (STATE(pt) == CON_PLAYING && pt->character && pt->character != ch){ restore_character(pt->character, ch, emote); } } send_to_char(OK, ch); }else send_to_char("You Do not have that priveledge\r\n",ch); }else{ if (!(vict = get_char_vis(ch, name, NULL, FIND_CHAR_WORLD))) send_to_char(NOPERSON, ch); else { restore_character(vict, ch, emote); send_to_char(OK, ch); } } }