Ilot,
//------------- Этот блок не работает !!! ----------------------
Как написан - так и работает.
Разберем по порядку:
1. надо украсть овцу
например, если мы ближе чем 5м к овце if (Npc_GetDistToNpc (Baran_1001, hero):
Npc_ExchangeRoutine (Baran_1001, "Follow");
PrintScreen ("Я украл овцу!!! Пора делать ноги...", -1, YPOS_LOGENTRY, FONT_ScreenSmall_Rot, 4);
varBarFollow = true; //переменная - баран идет за ГГ
И не надо "странных диалогов" с овцой.
2 обработка восприятий сторожа:
Npc_CanSeeNpc (c_npc npc1, c_npc npc2); - видит
или Npc_HasDetectedNpc (c_npc self, c_npc other); - чувствует (видит, сышит и т.д.)
на вкус.
И не надо привязывать к расстоянию, куча непоняток может быть при игре.
Если не увидел - уводим барана из-под носа, дальше - по сюжету.
Если увидел и varBarFollow = true;:
Npc_ExchangeRoutine (BAU_5000_Ardan, "Follow");
PrintScreen ("Похоже Ардан меня заметил!", -1, YPOS_LOGENTRY, FONT_ScreenSmall_Rot, 4);
varPresled = true; //переменная - Ардан преследует ГГ
Отдельная проверка:
1.Если преследует и ГГ с овцой смотался (превышение дальности преследования) - возврат Ардана на старую рутину
Npc_ExchangeRoutine (BAU_5000_Ardan, "Start");
можно и восприятия почистить если это надо далее по квестам
2. Если пытался украсть, но спалили - проверка текущей рутины через переменные и смена ее на
Npc_ExchangeRoutine (BAU_5000_Ardan, "Start"); обнуление переменных или что там еще согласно квесту.
3. закрыл квест - обнуление переменных отвечающих за проверку кражи и преследование.
Возможно еще нужны будут отдельные проверки (типа баран - труп, сторож - труп), от сюжета зависит.
Можно добавить кражу через сник, нарисовать сетку из 3-4 WP для сторожа и пустить его гулять по ней и т.д., чтоб хоть кража - на кражу похожа была. А не "привет, баран, я тебя украл..."
Не надо использовать то, о чем не имеете представления как оно работает и зачем вообще надо. Все регулируется через простые переменные, надо только представлять что должен делать НПС в определенный игровой момент и вовремя возвращать в исходное состояние.
ЗЫ. и циклический триггер для восприятий не нужен, реакцию на кражу можно обработать через B_AssessPlayer(), более корректно будет.