> > "continue", but if the mob actually does something it will "go to next > > character." This means that if its a true, the mob did something and > > thus shouldn't go pick up some trash or attack someone if its scavenger or > > aggro. correct? > > No, scavenger and aggr. flags on mobs have nothing to do with the > spec_procs. If you want to find the actions regarding those, go to > mobact.c and look around. You will also find that there is also another from mobact.c, begining at line 42 for (ch = character_list; ch; ch = next_ch) { next_ch = ch->next; if (!IS_MOB(ch) || FIGHTING(ch) || !AWAKE(ch)) continue; /* Examine call for special procedure */ if (MOB_FLAGGED(ch, MOB_SPEC) && !no_specials) { if (mob_index[GET_MOB_RNUM(ch)].func == NULL) { sprintf(buf, "%s (#%d): Attempting to call non-existing mob func", GET_NAME(ch), GET_MOB_VNUM(ch)); log(buf); REMOVE_BIT(MOB_FLAGS(ch), MOB_SPEC); } else { if ((mob_index[GET_MOB_RNUM(ch)].func) (ch, ch, 0, "")) continue; /* go to next char */ } } /* Scavenger (picking up objects) */ if (MOB_FLAGGED(ch, MOB_SCAVENGER) && !FIGHTING(ch) && AWAKE(ch)) if (world[ch->in_room].contents && !number(0, 10)) { max = 1; ... etc .. rest of flags My understanding of how this code block works is: 1: Cycle through the mobs 2: If its not a mob, not a player, or fighting, don't do anything. "Continue", step to the next character in the for loop 3: If mob is flagged to have a spec_proc, check to see if it exists. a: if no spec_proc exists, log and remove the bit 4: if not, do if ((mob_index[GET_MOB_RNUM(ch)].func) (ch, ch, 0, "")) continue; /* go to next char */ and continue to the next char. 5: If we didn't continue, (mob wasn't fighting, didn't have spec_proc), then go on to check if the mob is flagged Scavenger, aggro, or whatever. Do I have this right? Or is this calling something else. If it matters, this is from bpl11. thanks for your help. I already have code for some customized guards and am working on a captian that simulates the mayor and follows a path around the city. Another person emailed me and told me having 100-150 spec_procs on a mud with a large amount of playes would lag the mud to badly. I guess I will try it and see the results. But I found a page that may be of use to me in coding spec_procs that don't preform unneeded code. http://seka.nacs.net/~heller/optimize/ run by one of my admins :) Maybe it will be of use to someone. +-----------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://cspo.queensu.ca/~fletcher/Circle/list_faq.html | +-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/18/00 PST