Mysidia wrote: > > Oh.. you're actually extracting every beat, so the character > will only remain for a fraction of a second, and doing everything > else the same I can't imagine that breaking anything; the only thing > evil about it is the scroll through the entire player list, needing > to extract a character is IMO a thing common enough to warrant creation > of its own list, even if it means adding another variable to the > char_data structure -- deaths are fairly common, particularly of mobs, > and if all the players are out there killin' mobs successfully, unless > they happen to all die at once there'll be a buncha traverses of the > entire character list to extract 'em... ... the cost of that, depends > on how many characters there are in the game, but it would seem to > warrant the tradeoff of adding a variable. This is actually a good idea, it'll allow you to get rid of the PLR_ and MOB_ flags that you're proposing, plus the extractions_pending global. Something like this added to struct char_data: struct char_data *extract_next; Then you have a global: struct char_data *extract_list = NULL; Then the new extract_char() would look like this... void extract_char(struct char_data *ch) { /* This check will not work for the last char on the list, but it's better than nothing */ if (ch->extract_next) { log("SYSERR: extract_char() called for already extracted character."); return; } ch->extract_next = extract_list; extract_list = ch; } Then the new extract_pending_chars(): void extract_pending_chars(void) { struct char_data *vict; while (extract_list) { vict = extract_list; extract_list = extract_list->extract_next; extract_char_final(vict); } } Regards, Peter -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/04/01 PST