According to ZDoom Wiki, the PoisonCloud actor has a radius of 20 units and the A_PoisonBagDamage function deals 4 damage in a 40 unit radius.
And here's the original Hexen source code's A_Explode function from GitHub:
Code: Select all
void A_Explode(mobj_t *actor)
{
int damage;
int distance;
boolean damageSelf;
damage = 128;
distance = 128;
damageSelf = true;
switch(actor->type)
{
case MT_FIREBOMB: // Time Bombs
actor->z += 32*FRACUNIT;
actor->flags &= ~MF_SHADOW;
break;
case MT_MNTRFX2: // Minotaur floor fire
damage = 24;
break;
case MT_BISHOP: // Bishop radius death
damage = 25+(P_Random()&15);
break;
case MT_HAMMER_MISSILE: // Fighter Hammer
damage = 128;
damageSelf = false;
break;
case MT_FSWORD_MISSILE: // Fighter Runesword
damage = 64;
damageSelf = false;
break;
case MT_CIRCLEFLAME: // Cleric Flame secondary flames
damage = 20;
damageSelf = false;
break;
case MT_SORCBALL1: // Sorcerer balls
case MT_SORCBALL2:
case MT_SORCBALL3:
distance = 255;
damage = 255;
actor->args[0] = 1; // don't play bounce
break;
case MT_SORCFX1: // Sorcerer spell 1
damage = 30;
break;
case MT_SORCFX4: // Sorcerer spell 4
damage = 20;
break;
case MT_TREEDESTRUCTIBLE:
damage = 10;
break;
case MT_DRAGON_FX2:
damage = 80;
damageSelf = false;
break;
case MT_MSTAFF_FX:
damage = 64;
distance = 192;
damageSelf = false;
break;
case MT_MSTAFF_FX2:
damage = 80;
distance = 192;
damageSelf = false;
break;
case MT_POISONCLOUD:
damage = 4;
distance = 40;
break;
case MT_ZXMAS_TREE:
case MT_ZSHRUB2:
damage = 30;
distance = 64;
break;
default:
break;
}
P_RadiusAttack(actor, actor->target, damage, distance, damageSelf);
if(actor->z <= actor->floorz+(distance<<FRACBITS)
&& actor->type != MT_POISONCLOUD)
{
P_HitFloor(actor);
}
}