On Fri, 7 Jun 1996, Eduardo Gutierrez de Oliveira wrote: > Ok, this (I think) is not mentioned in the docs anywhere. > > The mayor has a special procedure assigned to it, that makes it wander on > the town and say dumb things... > > The thing is that he never wakes up, he is always asleep in his chair, > but if I wake him up he'll make his round as normal and fo back to his > chair and sleep again... and never wake up again unless I force him to do. He must be tired :) > > Besides the obviuous opinions about the efficiency of our mayor... How > can I make him to do his thing by himself. I tried changing some > boooleans in his spec_proc, but the mud would core dump as soon as he > made his first move... But seriously, you have to change this line in the mobact.c file: void mobile_activity(void) { [blah] for (ch = character_list; ch; ch = next_ch) { next_ch = ch->next; if (!IS_MOB(ch) || FIGHTING(ch) || !AWAKE(ch)) continue; ^^^^^^^^^^---Spec_proc not called if he's asleep so he never wakes up. [blah] > > Also, how is the movement of the mayor defined? I saw a sequence of > characters but my head started aching, maybe it is ways too simple but I > need someone to explain it to me. > SPECIAL(mayor) { static char open_path[] = "W3a3003b33000c111d0d111Oe333333Oe22c222112212111a1S."; static char close_path[] = "W3a3003b33000c111d0d111CE333333CE22c222112212111a1S."; [snip] switch (path[index]) { case '0':\ case '1': \ If the current character is a 0-3, go either north, east, west, case '2': / or south, determined by the order in the array of dirs case '3':/ perform_move(ch, path[index] - '0', 1); break; case 'W': <---- If it's "W", wake up and groan. GET_POS(ch) = POS_STANDING; act("$n awakens and groans loudly.", FALSE, ch, 0, 0, TO_ROOM); break; case 'S': <---- If it's "S" now, go sleepy GET_POS(ch) = POS_SLEEPING; act("$n lies down and instantly falls asleep.", FALSE, ch, 0, 0, TO_ROOM); break; case 'a': <---- if "a" is the character, say hi honey. act("$n says 'Hello Honey!'", FALSE, ch, 0, 0, TO_ROOM); act("$n smirks.", FALSE, ch, 0, 0, TO_ROOM); break; case 'b': <---- if "b", then say what a view act("$n says 'What a view! I must get something done about that dump!'", FALSE, ch, 0, 0, TO_ROOM); break; [blah blah blah] case 'O': <-- open doors do_gen_door(ch, "gate", 0, SCMD_UNLOCK); do_gen_door(ch, "gate", 0, SCMD_OPEN); break; case 'C': <-- close gates do_gen_door(ch, "gate", 0, SCMD_CLOSE); do_gen_door(ch, "gate", 0, SCMD_LOCK); break; If you want to add your own, just add a CASE and put the letter in the path strings > BTW, flame me if you will, but I warned about it being a NEWBIE thing..:) > if you do, please do it to my account, if you answer me do it to the > list..:) there may be other newbies wondering the same thing and you are > saving yourself repeated postings..:) > > Greets > > Mythago > > --------------------------------------------------------------------------- > Eduardo Gutierrez de Oliveira eduo@sparc.ciateq.conacyt.mx > Administrador de Internet Internet Administrator > Proveedor de Servicio Internet Internet Service Provider > CIATEQ, A.C. > Centro de Investigacion y Asistencia Tecnica del Estado de Queretaro, A.C. > http://sparc.ciateq.conacyt.mx/ > --------------------------------------------------------------------------- >
This archive was generated by hypermail 2b30 : 12/18/00 PST