A radius of 1 can cause projectiles to clip through walls.

This commit is contained in:
Mari the Deer 2021-05-23 10:31:53 +02:00
commit 2b1687b0f8
7 changed files with 22 additions and 21 deletions

View file

@ -1291,8 +1291,8 @@ Class LampMoth : Actor
Default
{
Tag "$T_MOTH";
Radius 1;
Height 2;
Radius 2;
Height 4;
Speed 2;
DamageFunction 1;
MeleeRange 16;

View file

@ -1119,8 +1119,8 @@ Class InvisibleSplasher : Actor
{
Mass 100;
VSpeed -2;
Radius 1;
Height 2;
Radius 2;
Height 4;
+NOBLOCKMAP; // needed to prevent infinite loops with some 3D floor water (yes, you read that right)
FloatBobPhase 0;
}

View file

@ -10,8 +10,8 @@ Class SWWMCasing : Actor abstract
Default
{
Radius 1;
Height 2;
Radius 2;
Height 4;
+NOBLOCKMAP;
+MISSILE;
+DROPOFF;

View file

@ -145,8 +145,8 @@ Class EvisceratorChunk : Actor
Default
{
Obituary "$O_EVISCERATOR";
Radius 1;
Height 2;
Radius 2;
Height 4;
Speed 50;
DamageFunction int(clamp((vel.length()-8)*.2+max(0,1.-lifetime)*2.,0,15));
DamageType 'shot';
@ -236,7 +236,7 @@ Class EvisceratorChunk : Actor
void A_HandleBounce()
{
Vector3 HitNormal = -vel.unit();
Vector3 HitNormal = (0,0,0);
F3DFloor ff;
if ( BlockingFloor )
{
@ -275,6 +275,7 @@ Class EvisceratorChunk : Actor
Vector3 diff = level.Vec3Diff(BlockingMobj.Vec3Offset(0,0,BlockingMobj.Height/2),pos);
HitNormal = diff.unit();
}
else if ( vel.length() > 0. ) HitNormal = vel.unit();
if ( swwm_omnibust ) BusterWall.ProjectileBust(self,GetMissileDamage(0,0),oldvel.unit());
// undo the bounce, we need to hook in our own
vel = oldvel;
@ -288,8 +289,8 @@ Class EvisceratorChunk : Actor
if ( (vel.length() > 20) && !Random[Eviscerator](0,2) )
{
let l = Spawn("ChunkImpact",pos);
l.angle = atan2(HitNormal.y,HitNormal.x);
l.pitch = asin(-HitNormal.z);
l.angle = atan2(RealHitNormal.y,RealHitNormal.x);
l.pitch = asin(-RealHitNormal.z);
A_StartSound("eviscerator/hith",CHAN_WEAPON,CHANF_OVERLAP,.5);
}
A_Gravity();

View file

@ -1146,8 +1146,8 @@ Class TheBall : Actor
Speed 80;
Gravity 0.1;
BounceFactor 1.0;
Radius 1;
Height 2;
Radius 2;
Height 4;
}
override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack )
{

View file

@ -388,8 +388,8 @@ Class BigBiospark : Actor
DamageType "Plasma";
RenderStyle "Add";
Health 1200;
Radius 1;
Height 2;
Radius 2;
Height 4;
Speed 1;
BounceFactor 1.;
WallBounceFactor 1.;
@ -432,8 +432,8 @@ Class BiosparkBall : Actor
Obituary "$O_SPARKSTER";
DamageType "Plasma";
RenderStyle "Add";
Radius 1;
Height 2;
Radius 2;
Height 4;
Speed 20;
PROJECTILE;
+FOILINVUL;
@ -1730,8 +1730,8 @@ Class BiosparkCore : Actor
Gravity .1;
BounceFactor 1.;
WallBounceFactor 1.;
Radius 1;
Height 2;
Radius 2;
Height 4;
ReactionTime 25;
}
override void PostBeginPlay()