This issue occurs when a monster throws a frag grenade. The explosion type should be fiery, but instead it appears as magical. This issue is not present whenever the player throws a grenade.
The issue is fairly clearly the fault of the grenade_explode code in zap.c, reproduced here:
/*
* Note: obj is not valid after return
*/
void
grenade_explode(struct obj *obj, int x, int y, boolean isyou)
{
int ztype;
int otyp = obj->otyp;
int yours = isyou ? 1 : -1;
boolean save_mon_moving = g.context.mon_moving;
g.context.mon_moving = yours ? FALSE : TRUE;
if (obj->oartifact == ART_HAND_GRENADE_OF_ANTIOCH) {
ztype = isyou * ZT_SPELL(ZT_MAGIC_MISSILE);
explode(x, y, ztype, d(50,6), WEAPON_CLASS,
isyou * -1 * EXPL_FIERY);
} else if (otyp == FRAG_GRENADE) {
ztype = isyou * ZT_SPELL(EXPL_FIERY);
explode(x, y, ztype, d(3,6), WEAPON_CLASS,
isyou * -1 * EXPL_FIERY);
} else if (otyp == GAS_GRENADE) {
ztype = isyou * ZT_SPELL(ZT_POISON_GAS);
explode(x, y, ztype, d(3,6), WEAPON_CLASS,
isyou * -1 * EXPL_NOXIOUS);
}
g.context.mon_moving = save_mon_moving;
wake_nearto(x, y, 400);
}