#include "merc.h" #include "track.h" #include "interp.h" int find_first_step(RID *src, char *target); int find_first_step(RID *src, RID *target); SInt32 NamedCharInRoom (RID *room, CPtr data); SInt32 FullNameInRoom (RID *room, CPtr data); SInt32 CharInRoom (RID *room, CPtr data); SInt32 SameRoomNR (RID *room, CPtr data); struct NCIRData { char * name; CHAR_DATA * vict; }; SInt32 NamedCharInRoom(RID *room, CPtr data) { NCIRData * ncir = (NCIRData *)data; CHAR_DATA * ch; if (room == NULL) return 0; for (ch = room->people; ch; ch = ch->next_in_room) { if (isname(ncir->name, ch->name) && !AFF_FLAGGED(ch, AFF_NOTRACK)) { ncir->vict = ch; return 1; } } return 0; } Path * Path2Name(RID *start, char *name, SInt32 depth, Flags flags) { NCIRData ncir = { name, NULL }; Path * path; if ((path = PathBuild(start, NamedCharInRoom, &ncir, depth, flags))) path->victim = ncir.vict; return path; } SInt32 FullNameInRoom(RID *room, Ptr data) { NCIRData * fnir = (NCIRData *)data; CharData * ch; if (room == NULL) return 0; for (ch = room->people; ch; ch = ch->next_in_room) { if (!str_cmp(ch->name, fnir->name)) { fnir->vict = ch; return 1; } } return 0; } Path * Path2FullName(RID *start, char *name, SInt32 depth, Flags flags) { NCIRData fnir = { name, NULL }; Path * path; if ((path = PathBuild(start, FullNameInRoom, &fnir, depth, flags))) path->victim = fnir.vict; return path; } SInt32 CharInRoom(RID *room, Ptr data) { CharData *ch; if (room == -1) return 0; START_ITER(iter, ch, CharData *, world[room].people) { if (ch == (CharData *)data) { return 1; } } return 0; }