Дадж, я просто не заметил в логе что ты уже выполнял такие действия.
А Сиддха прав.
Еще раз пересмотрел как это все работает....
Ситуация вот в чем. В начале смотрим возможных мобов в комнате, если не нашли, а для случая 2.тальник не найдут, то смотрят всех мобов, что есть в мире. И тут как раз камень претконовения, а именно, если наш тальник, который нам не нужен, в списке глобальных мобов действительно стоит вторым по сечту, то на него и приведут следы.
Поэтому Сиддха прав, надо отойти в локацию, где нет моба что мы ищем и повторить поиск.
Можно ли исправить ситуацию, в принципе можно, если поменять алгоритм поиска мобов (get_char_world).
В части кода, где мы начинаем поиск по всему списку персонажей в мире, ставить проверку, что моб не должен находиться в этой комнате.
Ну, короче тот кто захочет просмотреть ту функцию, поймет что к чему....
(Добавление)
поэкспериментировал я немного с этим куском кода...
вот, что должно быть в get_char_world
часть 1, поиск по полному названию
поиск в комнате
for ( wch = ch->in_room->first_person; wch; wch = wch->next_in_room )
/* пропускаем, ползет ниже */
count = 0;
меняем на
/* count = 0; */
т.е. счетчик поиска не обнуляем
for ( wch = first_char; wch; wch = wch->next )
добавляем в условия
&& wch->in_room != ch->in_room
часть 2, посик по сокращенному названию
поиск в комнате пропускаем
/* count = 0; */
счетчки не анулируем
поиск по всему списку
for ( wch = first_char; wch; wch = wch->next )
добавлем условие
if ( wch->in_room == ch->in_room )
continue;
проверил, работает
к слову, это изменение не относится к конкретно к track xx.name_mob
а вообще к поиску мобов в мире, например для функции mstat, mset для иммортлов
аналогично стоит сделать для поиска предметов в мире
get_obj_world