Hah, yeah I guess I could read your problem well before spouting off answeres, heh. Ok, lemme re-try this. It sounds like the *ch pointer being passed to this spec is equal to the PC and not the mob. How does this spec proc fire? If a player does something to case the spec to fire, then *ch != the mob. The best way to re-write this would be: SPECIAL(wacky_teleporting_mob) { struct char_data *mob = (struct char_data *) me; struct char_data *vict; static round; static max_rounds; vict = FIGHTING(mob); if(!vict || vict == mob) // Invalid target or mob fighting itself return FALSE; if(max_rounds == 0) max_rounds = number(3,6); if ((GET_POS(mob) == POS_FIGHTING)) { if(round < max_rounds) { { round++; return FALSE; } else { send_to_char("\r\nI like pink bunny slippers!\r\n", vict); round = 0; max_rounds = 0; char_from_room(vict); char_to_room(vict, real_room(30004)); look_at_room(vict, 0); } } else { round = 0; max_rounds = 0; act("Some special room action is done here.... :)", FALSE, ch, 0, 0, TO_ROOM); } return FALSE; } +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST