Не правильно. Узнать купил или не купил можно в пост триггере, сравнив армию до и после. Так что нужно делать один перехватчик вызова функции диалога найма героя. Сперва генерируешь событие открытия, затем выполняешь геройскую функцию, затем событие закрытия. После этого возвращаешь управление игре.