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

62 lines
1.4 KiB
Ucode

class BodyEffect extends Effects;
var class<DamageType> DamageType;
var vector HitLoc;
function PostBeginPlay()
{
local ColorModifier Alpha;
local float frame, rate;
local name seq;
Super.PostBeginPlay();
LinkMesh(Owner.Mesh);
Owner.GetAnimParams( 0, seq, frame, rate );
PlayAnim(seq, 0, 0);
SetAnimFrame(frame);
StopAnimating();
Alpha = ColorModifier(Level.ObjectPool.AllocateObject(class'ColorModifier'));
Alpha.Material = Skins[0];
Alpha.AlphaBlend = true;
Alpha.RenderTwoSided = true;
Alpha.Color.A = 128;
Skins[0] = Alpha;
Skins[1] = Alpha;
Skins[2] = Alpha;
}
simulated function Tick(float deltaTime)
{
SetDrawScale(DrawScale * (1 + 0.5*DeltaTime));
ColorModifier(Skins[0]).Color.A = int(128.f * (LifeSpan / default.LifeSpan));
}
simulated function Destroyed()
{
if ( xPawn(Owner) != None )
{
xPawn(Owner).bFrozenBody = false;
xPawn(Owner).PlayDyingAnimation(DamageType, HitLoc);
}
Level.ObjectPool.FreeObject(Skins[0]);
Skins[0] = None;
Skins[1] = None;
Skins[2] = None;
Super.Destroyed();
}
defaultproperties
{
RemoteRole==ROLE_None
Physics=PHYS_None
ScaleGlow=+1.0
bCollideActors=false
bCollideWorld=false
DrawType=DT_Mesh
LifeSpan=0.65
// ifndef _RO_
// Skins(0)=Material'XGameShaders.PlayerShaders.LinkHit'
// Skins(1)=Material'XGameShaders.PlayerShaders.LinkHit'
// Skins(2)=Material'XGameShaders.PlayerShaders.LinkHit'
}