Code for two new mob flags - if someone can use it :) Lars Juul -- Software is like sex; it's better when it's free. - Linus Torvalds MOB_IQ_FIGHT ------------ Add the MOB_IQ_FIGHT flag in struch.h and constants.c - in fight.c in perform_violence add a vict and tch var and insert the following after the call for MOB_SPEC: if (MOB_FLAGGED(ch, MOB_IQ_FIGHT)) { /* LJ IQ fight */ vict = NULL; for (tch = world[ch->in_room].people; tch; tch = tch->next_in_room) if (FIGHTING(tch) == ch && !IS_NPC(tch)) if (vict == NULL || GET_HIT(tch) < GET_HIT(vict)) vict = tch; if (vict != NULL && FIGHTING(ch) != vict) { stop_fighting(ch); hit(ch, vict, TYPE_UNDEFINED); } } MOB_FAST_AGGR ------------- Add the MOB_FAST_AGGR flag in struch.h and constants.c - in act.movement.c change do_move to: ACMD(do_move) { register struct char_data *vict, *tmob; int found; /* * This is basically a mapping of cmd numbers to perform_move indices. * It cannot be done in perform_move because perform_move is called * by other functions which do not require the remapping. */ perform_move(ch, cmd - 1, 0); /* LJ Fast Aggressive */ for (tmob = world[ch->in_room].people; tmob; tmob = tmob->next_in_room) { if (!IS_NPC(tmob) || !MOB_FLAGGED(tmob, MOB_FAST_AGGR)) continue; found = FALSE; for (vict = world[tmob->in_room].people; vict && !found; vict = vict->next_in_room) { if (IS_NPC(vict) || !CAN_SEE(tmob, vict) || PRF_FLAGGED(vict, PRF_NOHASSLE)) continue; if (MOB_FLAGGED(tmob, MOB_WIMPY) && AWAKE(vict)) continue; if (MOB_FLAGGED(tmob, MOB_AGGRESSIVE) || (MOB_FLAGGED(tmob, MOB_AGGR_EVIL) && IS_EVIL(vict)) || (MOB_FLAGGED(tmob, MOB_AGGR_NEUTRAL) && IS_NEUTRAL(vict)) || (MOB_FLAGGED(tmob, MOB_AGGR_GOOD) && IS_GOOD(vict))) { hit(tmob, vict, TYPE_UNDEFINED); found = TRUE; } } } } +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST