Разбег Бары — это модификатор
modifier_spirit_breaker_charge_of_darkness_vision. Бегаешь по энтити листу, получаешь (условным вектором) все его модификаторы, ну и чекаешь наличие нужных.
Санстрайк— это модификатор
modifier_invoker_sun_strike. Но он не на героя накладывается, а на
npc_dota_thinker.
Он появляется в момент каста скилла и живет до тех пор, пока скилл не закончится.
В итерации энтитей в самом начале (чем раньше, тем больше времени на реакцию, очевидно) делай что-то типа такого:
if (current_ent->is_thinker()) {
if (current_ent->modifier_manager()->find_by_name("modifier_invoker_sun_strike")) {
}
}
class CEntityIdentity {
public:
optional<string> internal_name() const {
const auto name_ptr = Memory::read_memory<uintptr_t>(this + 0x18);
return !name_ptr ? nullopt : Memory::read_string(name_ptr.value());
}
bool is_thinker() const {
const auto name = this->internal_name();
return name.value_or("") == "npc_dota_thinker";
}
}