Сделать можно, но если хочешь качественно реализовать, то придётся не только организовать отшвыривание монстров от эпицентра взрыва, но и работать с анимацией монстров, так как отлетающие монстры, которые при этом стоят в полный рост будут смотреться убого.
Код отброса проще встроить в код взрыва, тогда ненужно будет искать монстров в нужном радиусе и определять "видимость" каждого монстра из эпицентра взрыва. Я рекомендую тебе покопаться в файле combat.cpp, конкретно в функции RadiusDamage. Там где наносится повреждение ты просто задаешь ускорение от точки взрыва через pev->velocity и всё, энтити которая попадает под взрыв получает нужное тебе ускорение, только я рекомендую сделать проверку на нужные энтити, так как без проверки от эпицентра взрыва полетят прочь не только ящики и монстры, но и например стёкла из окон (целыми в виде листа) и ещё бог знает что). Поэтому желательна проверка на возможность передвижения и на принадлежность к монстрам.
Вектор движения ты можешь получить из разности координат (pev->origin) точки взрыва и нахождения монстра.
Теперь ты владеешь всеми необходимыми данными для того чтобы реализовать то, что задумал. Если нужны подсказки, то с тебя описание того, что ты сделал для реализации своей идеи.
Творческих успехов.