Fix Eviscerator chunks passing through solids.

This commit is contained in:
Mari the Deer 2022-12-08 14:42:13 +01:00
commit dc2e3d0a55
3 changed files with 6 additions and 12 deletions

View file

@ -163,8 +163,6 @@ Class SWWMDamageAccumulator : Inventory
if ( inflictor ) inflictor.bEXTREMEDEATH = true;
else type = 'Extreme';
}
// make sure accumulation isn't reentrant
if ( inflictor && (inflictor is 'EvisceratorChunk') ) inflictor.bAMBUSH = true;
// 何?
foreach ( dmg:amounts )
{
@ -172,11 +170,7 @@ Class SWWMDamageAccumulator : Inventory
Owner.DamageMobj(inflictor,source,dmg,type,DMG_THRUSTLESS|flags);
}
// clean up
if ( inflictor )
{
if ( inflictor is 'EvisceratorChunk' ) inflictor.bAMBUSH = false;
inflictor.bEXTREMEDEATH = false;
}
if ( inflictor ) inflictor.bEXTREMEDEATH = inflictor.default.bEXTREMEDEATH;
Destroy();
}

View file

@ -297,17 +297,17 @@ Class EvisceratorChunk : Actor
override bool CanCollideWith( Actor other, bool passive )
{
// safer to do here
if ( !(other.bSHOOTABLE && other.bSOLID) || ((vel.length() <= 5) && other.bSHOOTABLE) || ((other == target) && !bHITOWNER) || (other == lasthit) )
if ( !(other.bSHOOTABLE || other.bSOLID) || ((vel.length() <= 5) && other.bSHOOTABLE) || ((other == target) && !bHITOWNER) || (other == lasthit) )
return false;
return true;
}
override int SpecialMissileHit( Actor victim )
{
// directly bounce off shootable solids
// directly bounce off non-shootable solids
if ( !victim.bSHOOTABLE )
{
if ( bSOLID )
if ( victim.bSOLID )
{
BlockingMobj = victim;
A_HandleBounce();