117 lines
2.6 KiB
Ucode
117 lines
2.6 KiB
Ucode
//=============================================================================
|
|
// KFProj_Bullet_MatriarchTeslaBlast
|
|
//=============================================================================
|
|
// Killing Floor 2
|
|
// Copyright (C) 2019 Tripwire Interactive LLC
|
|
//=============================================================================
|
|
|
|
class KFProj_Bullet_MatriarchTeslaBlast extends KFProj_Bullet
|
|
hidedropdown;
|
|
|
|
var ParticleSystem BeamPS, BeamHitPS;
|
|
var transient ParticleSystemComponent BeamPSC, BeamHitPSC;
|
|
var transient repnotify Pawn SourcePawn;
|
|
var transient repnotify Pawn TargetPawn;
|
|
|
|
replication
|
|
{
|
|
if (bNetInitial)
|
|
SourcePawn, TargetPawn;
|
|
}
|
|
|
|
simulated event ReplicatedEvent(name VarName)
|
|
{
|
|
switch (VarName)
|
|
{
|
|
case nameof(SourcePawn):
|
|
case nameof(TargetPawn):
|
|
ActivateVFX();
|
|
break;
|
|
|
|
default:
|
|
super.ReplicatedEvent(VarName);
|
|
};
|
|
}
|
|
|
|
simulated event PostBeginPlay()
|
|
{
|
|
super.PostBeginPlay();
|
|
StopSimulating();
|
|
SetTickIsDisabled(true);
|
|
}
|
|
|
|
simulated function ActivateVFX()
|
|
{
|
|
local vector TargetLocation;
|
|
|
|
if (BeamPSC == none)
|
|
{
|
|
if (KFPawn_ZedMatriarch(SourcePawn) != none)
|
|
{
|
|
BeamPSC = WorldInfo.MyEmitterPool.SpawnEmitterMeshAttachment(BeamPS, SourcePawn.Mesh, 'Hand_FX_End_L', true);
|
|
}
|
|
else
|
|
{
|
|
BeamPSC = WorldInfo.MyEmitterPool.SpawnEmitter(BeamPS, Location,, SourcePawn);
|
|
}
|
|
|
|
TargetLocation = TargetPawn.Mesh.GetBoneLocation(class'KFPawn_ZedMatriarch'.default.GunTargetBoneName);
|
|
BeamHitPSC = WorldInfo.MyEmitterPool.SpawnEmitter(BeamHitPS, TargetLocation,, TargetPawn);
|
|
|
|
BeamPSC.SetBeamTargetPoint(0, TargetLocation, 0);
|
|
SetTickIsDisabled(false);
|
|
}
|
|
}
|
|
|
|
simulated function DeactivateVFX()
|
|
{
|
|
if (BeamPSC != none)
|
|
{
|
|
BeamPSC.DeactivateSystem();
|
|
BeamPSC = none;
|
|
}
|
|
|
|
if (BeamHitPSC != none)
|
|
{
|
|
BeamHitPSC.DeactivateSystem();
|
|
BeamHitPSC = none;
|
|
}
|
|
}
|
|
|
|
simulated function Tick(float DeltaTime)
|
|
{
|
|
super.Tick(DeltaTime);
|
|
|
|
if (BeamPSC != none)
|
|
{
|
|
BeamPSC.SetBeamTargetPoint(0, TargetPawn.Mesh.GetBoneLocation(class'KFPawn_ZedMatriarch'.default.GunTargetBoneName), 0);
|
|
}
|
|
}
|
|
|
|
simulated function Destroyed()
|
|
{
|
|
super.Destroyed();
|
|
DeactivateVFX();
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
MaxSpeed=0
|
|
Speed=0
|
|
|
|
DamageRadius=0
|
|
|
|
BeamPS=ParticleSystem'ZED_Matriarch_EMIT.FX_Teslablast_Beam_01'
|
|
BeamHitPS=ParticleSystem'ZED_Matriarch_EMIT.FX_Tesla_Blast_Impact_01'
|
|
|
|
ProjFlightTemplate=none
|
|
ImpactEffects=none
|
|
|
|
ProjEffectsFadeOutDuration=0.5f
|
|
|
|
bSyncToOriginalLocation=true
|
|
bSyncToThirdPersonMuzzleLocation=true
|
|
bRotationFollowsVelocity=false
|
|
bNoReplicationToInstigator=true
|
|
bUseClientSideHitDetection=false
|
|
} |