Hallo
If anyone is using function hunt_victim() in file graph.c this is a small
fix for some small bugs...
First it adds a check for ROOM_PEACEFUL, also for ROOM_NOMOB (mob can't
track down a player and go to a room which forbidds mobs.
Second, it fixes a stupid bud which caused mob to say:
Guard says ' Guard says ' Guars says '
(Fix is to use some other variable than buf ie. bufffff)
Finally, mob can now hit a player if he comes to him! Check in code for
BFS_ALREADY_THERE, that will explain it for you ( I hope :))
Kresimir
Here is a complete finction:
-------------------CUT HERE-------------------------------
void hunt_victim(struct char_data * ch)
{
ACMD(do_say);
extern struct char_data *character_list;
int dir;
byte found;
struct char_data *tmp;
char buffff[160];
if (!ch || !HUNTING(ch))
return;
if (GET_POS(ch) <= POS_FIGHTING)
return;
/* make sure the char still exists */
for (found = 0, tmp = character_list; tmp && !found; tmp = tmp->next)
if (HUNTING(ch) == tmp)
found = 1;
if (!found) {
do_say(ch, "Damn! My prey is gone!!", 0, 0);
HUNTING(ch) = 0;
return;
}
dir = find_first_step(ch->in_room, HUNTING(ch)->in_room);
if (dir < 0) {
if (dir == BFS_ALREADY_THERE)
if ((ch->in_room == HUNTING(ch)->in_room)) {
if (!ROOM_FLAGGED(ch->in_room, ROOM_PEACEFUL)) {
hit(ch, HUNTING(ch), TYPE_UNDEFINED);
do_say(ch, "You son of a bitch! I found you at last! Die!!", 0, 0);
return;
} else
return;
}
buffff[0] = '\0';
sprintf(buffff, "Damn! Lost %s!", HMHR(HUNTING(ch)));
do_say(ch, buffff, 0, 0);
HUNTING(ch) = 0;
return;
} else {
if (ROOM_FLAGGED(EXIT(ch, dir)->to_room, ROOM_NOMOB))
return;
perform_move(ch, dir, 1);
if ((ch->in_room == HUNTING(ch)->in_room) &&
(!ROOM_FLAGGED(ch->in_room, ROOM_PEACEFUL))) {
hit(ch, HUNTING(ch), TYPE_UNDEFINED);
do_say(ch, "You son of a bitch! I found you at last! Die!!", 0, 0);
}
return;
}
}
This archive was generated by hypermail 2b30 : 12/07/00 PST