Quoting Thomas Arp <t_arp@stofanet.dk>: > From: "Edward J Glamkowski" <eglamkowski@angelfire.com> > > So clearly we need: > > send_to_zone > > You mean like this ? > <<snip>> > if (IN_ROOM(i->character) == NOWHERE || > world[IN_ROOM(i->character)].zone != zrnum) > continue; <<<snip>> Looking at this, there apepars to be a small bug in it. Namely, you disregard rooms which may be part of more than one zone. Your method would prevent a zone which is wholly contained inside of another zone from being sent anything. Upon further research, the same bug exists in is_empty() in db.c, causing a "reset only when empty" zone in the same state to always reset when time is due, even if it is not empty. In your case, the above (non-snipped) code would have to be replaced by: if (world[IN_ROOM(i->character)].number > zone_table[zrnum].top || world[IN_ROOM(i->character)].number < zone_table[zrnum].bot) continue; For is_empty(): - if (world[IN_ROOM(i->character)].zone != zone_nr) - continue; + if (world[IN_ROOM(i->character)].number > zone_table[zone_nr].top || + world[IN_ROOM(i->character)].number < zone_table[zone_nr].bot) + continue; Feel free to correct me. Otherwise, change should probably be added to next revision of Circle. -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | | Newbie List: http://groups.yahoo.com/group/circle-newbies/ | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/26/03 PDT