SPECIAL(watchghost) { struct obj_data *obj = NULL, *next_obj = NULL; if (cmd) return (0); switch (number(1, 3)) { case 1: do_say(ch, "I am the protector, the guardian, the destroyer of all!", 0, 0); break; case 2: if (!FIGHTING(ch)) for (obj = world[ch->in_room].contents; obj; obj = next_obj) { next_obj = obj->next_content; if (IS_CORPSE(obj)) { act("$n grabs $o and consumes it.", FALSE, ch, 0, obj, TO_ROOM); GET_MAX_HIT(ch) += number(1, 6); GET_MAX_MANA(ch) += number(1, 3); GET_MAX_MOVE(ch) += number(1, 3); extract_obj(obj); } case 3: /* If room not affected with a ward then cast a fire ward */ case 4: /* If room not affected with a ward then cast a cold ward */ case 5: /* If room not affected with a ward then cast an electrical ward */ case 6: /* If not warded from travel spells then ward it with BLOCK_TRAVEL spell */ case 7: /* same as 6 */ case 8: /* same as 7 */ case 9: /* If warded or blocked from travel then cast a spell of warding on object in room that I am protecting. See ch->mob_specials->protecting */ case 10: /* If injured then heal myself 2d6 and display message of action drawing on negative material plane energy. */ case 11: through case 15: Same as 10. } return(1); break; default: act("$n moans and wanders about the room inspecting all.", FALSE, ch, 0, 0, TO_ROOM); } } Justin P.