rott/kf_sources/KFMod/Classes/DoorGib.uc
2026-07-14 20:27:09 +07:00

69 lines
1.7 KiB
Ucode

//-----------------------------------------------------------
//
//-----------------------------------------------------------
class DoorGib extends Actor
Abstract;
var() float DampenFactor;
var Sound HitSounds[2];
var float NewGibSize;
var() float ScaleFactor; // Scale factor < 1 = larger chunks.
simulated function PostBeginPlay()
{
RandSpin( 64000 );
}
simulated final function RandSpin(float spinRate)
{
DesiredRotation = RotRand(True);
RotationRate.Yaw = spinRate * 2 *FRand() - spinRate;
RotationRate.Pitch = spinRate * 2 *FRand() - spinRate;
RotationRate.Roll = spinRate * 2 *FRand() - spinRate;
}
simulated function Landed( Vector HitNormal )
{
HitWall( HitNormal, None );
}
simulated function HitWall( Vector HitNormal, Actor Wall )
{
local float Speed, MinSpeed;
Velocity = DampenFactor * ((Velocity dot HitNormal) * HitNormal*(-2.0) + Velocity);
RandSpin(100000);
Speed = VSize(Velocity);
if ( Level.DetailMode == DM_Low )
MinSpeed = 250;
else MinSpeed = 150;
if(Speed > MinSpeed)
{
if( (Level.NetMode != NM_DedicatedServer) && !Level.bDropDetail )
{
if ( (LifeSpan < 7.3) && (Level.DetailMode != DM_Low) )
PlaySound(HitSounds[Rand(2)]);
}
}
if( Speed < 20 )
{
bBounce = False;
SetPhysics(PHYS_None);
}
}
defaultproperties
{
DampenFactor=0.500000
HitSounds(0)=none//Sound'PlayerSounds.Final.Giblets1' KFTODO: Replace this
HitSounds(1)=none//Sound'PlayerSounds.Final.Giblets2' KFTODO: Replace this
ScaleFactor=0.700000
Physics=PHYS_Falling
RemoteRole=ROLE_None
LifeSpan=15.000000
TransientSoundVolume=100.000000
bCollideWorld=True
bBounce=True
bFixedRotationDir=True
Mass=120.000000
}