52 lines
2.6 KiB
Ucode
52 lines
2.6 KiB
Ucode
class NiceBossHPNeedle extends Decoration
|
|
NotPlaceable;
|
|
#exec obj load file="NewPatchSM.usx"
|
|
simulated function DroppedNow()
|
|
{
|
|
SetCollision(True);
|
|
SetPhysics(PHYS_Falling);
|
|
bFixedRotationDir = True;
|
|
RotationRate = RotRand(True);
|
|
}
|
|
simulated function HitWall( vector HitNormal, actor HitWall )
|
|
{
|
|
local rotator R;
|
|
if( VSize(Velocity)<40 )
|
|
{
|
|
SetPhysics(PHYS_none);
|
|
R.Roll = Rand(65536);
|
|
R.Yaw = Rand(65536);
|
|
SetRotation(R);
|
|
Return;
|
|
}
|
|
Velocity = MirrorVectorByNormal(Velocity,HitNormal)*0.75;
|
|
if( HitWall!=none && HitWall.Physics!=PHYS_none )
|
|
Velocity+=HitWall.Velocity;
|
|
}
|
|
simulated function Landed( vector HitNormal )
|
|
{
|
|
HitWall(HitNormal,none);
|
|
}
|
|
function TakeDamage( int NDamage, Pawn instigatedBy, Vector hitlocation,
|
|
Vector momentum, class<DamageType> damageType, optional int HitIndex)
|
|
{
|
|
if( Physics==PHYS_none )
|
|
{
|
|
SetPhysics(PHYS_Falling);
|
|
bFixedRotationDir = True;
|
|
RotationRate = RotRand(True);
|
|
Velocity = vect(0,0,0);
|
|
}
|
|
Velocity+=momentum/10;
|
|
}
|
|
simulated function Destroyed();
|
|
function Bump( actor Other );
|
|
singular function PhysicsVolumeChange( PhysicsVolume NewVolume );
|
|
// Overriden so it doesn't damage the patriarch when he drops a needle!
|
|
singular function BaseChange()
|
|
{
|
|
if( Velocity.Z < -500 )
|
|
TakeDamage( (1-Velocity.Z/30),Instigator,Location,vect(0,0,0) , class'Crushed');
|
|
if( base == none )
|
|
{
|
|
if ( !bInterpolating && bPushable && (Physics == PHYS_none) )
|
|
SetPhysics(PHYS_Falling);
|
|
}
|
|
else if( Pawn(Base) != none )
|
|
{
|
|
//Base.TakeDamage( (1-Velocity.Z/400)* mass/Base.Mass,Instigator,Location,0.5 * Velocity , class'Crushed');
|
|
Velocity.Z = 100;
|
|
if (FRand() < 0.5)
|
|
Velocity.X += 70;
|
|
else
|
|
Velocity.Y += 70;
|
|
SetPhysics(PHYS_Falling);
|
|
}
|
|
else if( Decoration(Base)!=none && Velocity.Z<-500 )
|
|
{
|
|
Base.TakeDamage((1 - Mass/Base.Mass * Velocity.Z/30), Instigator, Location, 0.2 * Velocity, class'Crushed');
|
|
Velocity.Z = 100;
|
|
if (FRand() < 0.5)
|
|
Velocity.X += 70;
|
|
else
|
|
Velocity.Y += 70;
|
|
SetPhysics(PHYS_Falling);
|
|
}
|
|
else
|
|
instigator = none;
|
|
}
|
|
defaultproperties
|
|
{
|
|
DrawType=DT_StaticMesh
|
|
StaticMesh=StaticMesh'NewPatchSM.BossSyringe'
|
|
bStatic=False
|
|
RemoteRole=ROLE_None
|
|
LifeSpan=300.000000
|
|
CollisionRadius=4.000000
|
|
CollisionHeight=4.000000
|
|
bCollideWorld=True
|
|
bProjTarget=True
|
|
bBounce=True
|
|
}
|