diff --git a/src/p_inter.c b/src/p_inter.c
index 0fab3353cbc7e987c797bff7fda81431223080e1..3dfdb7587e371c88aaa3143c18a09d3b8bc9fce3 100644
--- a/src/p_inter.c
+++ b/src/p_inter.c
@@ -3464,14 +3464,10 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
 				return true;
 			}
 		}
-		else if (player->powers[pw_invulnerability] || player->powers[pw_flashing] // ignore bouncing & such in invulnerability
-			|| player->powers[pw_super])
+		else if (player->powers[pw_invulnerability] || player->powers[pw_flashing] || player->powers[pw_super]) // ignore bouncing & such in invulnerability
 		{
 			if (force
-			|| (player->powers[pw_super]
-			 && inflictor && inflictor->flags & MF_MISSILE && inflictor->flags2 & MF2_SUPERFIRE) // Super Sonic is stunned!
-			|| (player->powers[pw_flashing]
-			 && source && source->type == MT_FANG && inflictor && inflictor->type == MT_CORK)) // Fang's cork bullets knock you back even when flashing
+			|| (inflictor && inflictor->flags & MF_MISSILE && inflictor->flags2 & MF2_SUPERFIRE)) // Super Sonic is stunned!
 			{
 #ifdef HAVE_BLUA
 				if (!LUAh_MobjDamage(target, inflictor, source, damage, damagetype))
diff --git a/src/p_mobj.c b/src/p_mobj.c
index 38bc7ed9685c3226d72af7b29a94f4cfac3cb178..fc6f5cede7a58bfea5c1ec961f8aec7dd629cc5e 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -9329,6 +9329,9 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
 			if (nummaprings >= 0)
 				nummaprings++;
 			break;
+		case MT_CORK:
+			mobj->flags2 |= MF2_SUPERFIRE;
+			break;
 		case MT_FBOMB:
 			mobj->flags2 |= MF2_EXPLOSION;
 			break;