if you say w/o orpheu: then you need to hook Think for "grenade" classname (with Hamsandwich is most suitable method), than check if (entity_get_float(grenade, EV_FL_dmgtime) <= get_gametime()) - this is the explosion moment.
As for hegrenade/flashbang detection - there are various ways:
1) by checking the grenade model
2) by checking pev_dmg, but I am not sure if it's safe enough (it might catch smokegrenade)