Fix Eviscerator chunks passing through solids.
This commit is contained in:
parent
64a748541e
commit
dc2e3d0a55
3 changed files with 6 additions and 12 deletions
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue