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

154 lines
4.5 KiB
Ucode

//=============================================================================
// HuskGunAttachment
//=============================================================================
// Husk Gun third person attachment class
//=============================================================================
// Killing Floor Source
// Copyright (C) 2011 Tripwire Interactive LLC
// - John "Ramm-Jaeger" Gibson
//=============================================================================
class HuskGunAttachment extends KFWeaponAttachment;
var byte HuskGunCharge, OldHuskGunCharge;
var() class<Emitter> ChargeEmitterClass;
var() Emitter ChargeEmitter;
replication
{
// Things the server should send to the client.
reliable if( bNetDirty && (!bNetOwner || bDemoRecording || bRepClientDemo) && (Role==ROLE_Authority) )
HuskGunCharge;
}
simulated function PostNetReceive()
{
if( HuskGunCharge!=OldHuskGunCharge )
{
OldHuskGunCharge = HuskGunCharge;
UpdateHuskGunCharge();
}
}
simulated function UpdateHuskGunCharge()
{
local float ChargeScale;
if( Level.NetMode == NM_DedicatedServer )
{
return;
}
if( HuskGunCharge == 0 )
{
DestroyChargeEffect();
}
else
{
InitChargeEffect();
ChargeScale = float(HuskGunCharge)/255.0;
ChargeEmitter.Emitters[0].SizeScale[1].RelativeSize = Lerp( ChargeScale, 1, 3 );
ChargeEmitter.Emitters[1].StartVelocityRadialRange.Min = Lerp( ChargeScale, 10, 75 );
ChargeEmitter.Emitters[1].StartVelocityRadialRange.Max = Lerp( ChargeScale, 10, 75 );
ChargeEmitter.Emitters[1].SizeScale[0].RelativeSize = Lerp( ChargeScale, 1, 3 );
}
}
simulated function Destroyed()
{
DestroyChargeEffect();
Super.Destroyed();
}
simulated function InitChargeEffect()
{
// don't even spawn on server
if ( Level.NetMode == NM_DedicatedServer)
return;
if ( (ChargeEmitterClass != None) && ((ChargeEmitter == None) || ChargeEmitter.bDeleteMe) )
{
ChargeEmitter = Spawn(ChargeEmitterClass);
if ( ChargeEmitter != None )
AttachToBone(ChargeEmitter, 'tip');
}
}
simulated function DestroyChargeEffect()
{
if (ChargeEmitter != None)
ChargeEmitter.Destroy();
}
defaultproperties
{
mMuzFlashClass=Class'ROEffects.MuzzleFlash3rdNadeL'
MeshRef="KF_Weapons3rd3_Trip.HuskGun_3rd"
ChargeEmitterClass=Class'ROEffects.ChargeUp3rdHusk'
MovementAnims(0)=JogF_HuskGun
MovementAnims(1)=JogB_HuskGun
MovementAnims(2)=JogL_HuskGun
MovementAnims(3)=JogR_HuskGun
CrouchAnims(0)=CHwalkF_HuskGun
CrouchAnims(1)=CHwalkB_HuskGun
CrouchAnims(2)=CHwalkL_HuskGun
CrouchAnims(3)=CHwalkR_HuskGun
WalkAnims(0)=WalkF_HuskGun
WalkAnims(1)=WalkB_HuskGun
WalkAnims(2)=WalkL_HuskGun
WalkAnims(3)=WalkR_HuskGun
AirStillAnim=JumpF_Mid
AirAnims(0)=JumpF_Mid
AirAnims(1)=JumpF_Mid
AirAnims(2)=JumpL_Mid
AirAnims(3)=JumpR_Mid
TakeoffStillAnim=JumpF_Takeoff
TakeoffAnims(0)=JumpF_Takeoff
TakeoffAnims(1)=JumpF_Takeoff
TakeoffAnims(2)=JumpL_Takeoff
TakeoffAnims(3)=JumpR_Takeoff
LandAnims(0)=JumpF_Land
LandAnims(1)=JumpF_Land
LandAnims(2)=JumpL_Land
LandAnims(3)=JumpR_Land
TurnRightAnim=TurnR_HuskGun
TurnLeftAnim=TurnL_HuskGun
CrouchTurnRightAnim=CH_TurnR_HuskGun
CrouchTurnLeftAnim=CH_TurnL_HuskGun
IdleRestAnim=Idle_HuskGun//Idle_Rest
IdleCrouchAnim=CHIdle_HuskGun
IdleSwimAnim=Swim_Tread
IdleWeaponAnim=Idle_HuskGun//Idle_Rifle
IdleHeavyAnim=Idle_HuskGun//Idle_Biggun
IdleRifleAnim=Idle_HuskGun//Idle_Rifle
IdleChatAnim=Idle_HuskGun
FireAnims(0)=Fire_HuskGun
FireAnims(1)=Fire_HuskGun
FireAnims(2)=Fire_HuskGun
FireAnims(3)=Fire_HuskGun
FireAltAnims(0)=Fire_HuskGun
FireAltAnims(1)=Fire_HuskGun
FireAltAnims(2)=Fire_HuskGun
FireAltAnims(3)=Fire_HuskGun
FireCrouchAnims(0)=CHFire_HuskGun
FireCrouchAnims(1)=CHFire_HuskGun
FireCrouchAnims(2)=CHFire_HuskGun
FireCrouchAnims(3)=CHFire_HuskGun
FireCrouchAltAnims(0)=CHFire_HuskGun
FireCrouchAltAnims(1)=CHFire_HuskGun
FireCrouchAltAnims(2)=CHFire_HuskGun
FireCrouchAltAnims(3)=CHFire_HuskGun
HitAnims(0)=HitF_HuskGun
HitAnims(1)=HitB_HuskGun
HitAnims(2)=HitL_HuskGun
HitAnims(3)=HitR_HuskGun
PostFireBlendStandAnim=Blend_HuskGun
PostFireBlendCrouchAnim=CHBlend_HuskGun
WeaponAmbientScale=2.0
}