Сделай просто возможность передавать настройки "болтовни" нпс через параметры AI и запили обработку этого в базовом AI для всех нпс и в итоге не придется делать такой костыль как у тебя.
у меня это так и сделано - я могу или в шаблоне нпс прописать параметры AI или прямо в спавне конкретно нпс, чтобы он что-то говорил/кричал в чат с нужной периодичностью.
Проверки необходимости что-то произнести и само произношение проверяются в соответствующих методах AI. Для овера это thinkActive, thinkAttack, onEvtSpawn, onEvtDead.
Код:
talkOnIdle - Задает фразы, которые должен периодически произносить NPC, находясь в состоянии покоя.
Задается в виде строки с параметрами вида "key=value#key=value#key=value#...". Возможные ключи и их значения:
id - id фраз из NpcString-ru.dat клиента. Можно задавать несколько id, перечисляя их через точку с
запятой - тогда при попытке говорить будет выбираться случайное id из списка.
chance - Шанс произношения фразы, в процентах. Значение по умолчанию: 100.
period - Период произношения фраз. Необходимо указывать 1 или 2 значения: 1 - основной период с которым
произносятся фразы, 2 - в каких пределах дополнительно рандомизировать это время. Если не
задавать второе значение то оно будет равно 0. Значения задаются в секундах.
Значение по умолчанию: 60;0.
shout - Указывает признак того, что NPC должен заданные фразы кричать. Значение по умолчанию: false.
talkOnAttack - Задает фразы, которые должен периодически произносить NPC, находясь в состоянии атаки.
Формат аналогичен параметру talkOnIdle.
talkOnSpawn - Задает фразы, которые должен произносить NPC при своем появлении.
Формат аналогичен параметру talkOnIdle, за исключением отсутствия ключа period.
talkOnDead - Задает фразы, которые должен произносить NPC при своей смерти.
Формат аналогичен параметру talkOnIdle, за исключением отсутствия ключа period.
например тут нпс будет с периодичностью 30-45 сек. пытаться произнести случайно одну из двух фраз с шансом 25%.
XML:
<spawn>
<npc id="8540" count="1"> <!-- Джейс [Учитель Астрологии] / Jayce [Fortunetelling Mentor] / [g_luckygame_jason] -->
<set name="talkOnIdle" value="id=2000156;2000157#chance=25#period=30;15" />
</npc>
<point x="148040" y="26650" z="-2200" h="8191" />
</spawn>