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

179 lines
5.4 KiB
Ucode

class SVDAttachment extends KFWeaponAttachment;
simulated function vector GetTracerStart()
{
local Pawn p;
p = Pawn(Owner);
if ( (p != None) && p.IsFirstPerson() && p.Weapon != None )
return p.Weapon.GetEffectStart();
if( Instigator!=None && (Level.TimeSeconds-LastRenderTime)>2 )
Return Instigator.Location;
// 3rd person
if ( mMuzFlash3rd != None )
return mMuzFlash3rd.Location;
else return Location;
}
simulated function DoFlashEmitter()
{
if (mMuzFlash3rd == None)
{
mMuzFlash3rd = Spawn(mMuzFlashClass);
AttachToBone(mMuzFlash3rd, 'tip');
}
if(mMuzFlash3rd != None)
mMuzFlash3rd.SpawnParticle(1);
}
simulated event ThirdPersonEffects()
{
local PlayerController PC;
if ( (Level.NetMode == NM_DedicatedServer) || (Instigator == None) )
return;
if (FiringMode == 0)
{
if ( OldSpawnHitCount != SpawnHitCount )
{
OldSpawnHitCount = SpawnHitCount;
GetHitInfo();
PC = Level.GetLocalPlayerController();
if ( ((Instigator != None) && (Instigator.Controller == PC)) || (VSize(PC.ViewTarget.Location - mHitLocation) < 4000) )
{
if( mHitActor!=None )
Spawn(class'ROBulletHitEffect',,, mHitLocation, Rotator(-mHitNormal));
CheckForSplash();
SpawnTracer();
}
}
}
if( FiringMode==1 )
{
if ( FlashCount>0 )
{
if( KFPawn(Instigator)!=None )
{
if (FiringMode == 0)
{
KFPawn(Instigator).StartFiringX(false,bRapidFire);
}
else
{
KFPawn(Instigator).StartFiringX(true,bRapidFire);
}
}
}
else
{
GotoState('');
if( KFPawn(Instigator)!=None )
KFPawn(Instigator).StopFiring();
}
}
else
{
if ( FlashCount>0 )
{
if( KFPawn(Instigator)!=None )
{
if (FiringMode == 0)
{
KFPawn(Instigator).StartFiringX(false,bRapidFire);
}
else
{
KFPawn(Instigator).StartFiringX(true,bRapidFire);
}
}
if( bDoFiringEffects )
{
PC = Level.GetLocalPlayerController();
if ( (Level.TimeSeconds - LastRenderTime > 0.2) && (Instigator.Controller != PC) )
return;
WeaponLight();
DoFlashEmitter();
if ( (mShellCaseEmitter == None) && (Level.DetailMode != DM_Low) && !Level.bDropDetail )
{
mShellCaseEmitter = Spawn(mShellCaseEmitterClass);
if ( mShellCaseEmitter != None )
AttachToBone(mShellCaseEmitter, ShellEjectBoneName);
}
if (mShellCaseEmitter != None)
mShellCaseEmitter.mStartParticles++;
}
}
else
{
GotoState('');
if( KFPawn(Instigator)!=None )
KFPawn(Instigator).StopFiring();
}
}
}
defaultproperties
{
mMuzFlashClass=Class'ScrnWeaponPack.MuzzleFlash3rdSVD'
mTracerClass=Class'KFMod.KFNewTracer'
mShellCaseEmitterClass=Class'ScrnWeaponPack.KFShellSpewerSVD'
MovementAnims(0)="JogF_AK47"
MovementAnims(1)="JogB_AK47"
MovementAnims(2)="JogL_AK47"
MovementAnims(3)="JogR_AK47"
TurnLeftAnim="TurnL_AK47"
TurnRightAnim="TurnR_AK47"
CrouchAnims(0)="CHWalkF_AK47"
CrouchAnims(1)="CHWalkB_AK47"
CrouchAnims(2)="CHWalkL_AK47"
CrouchAnims(3)="CHWalkR_AK47"
WalkAnims(0)="WalkF_AK47"
WalkAnims(1)="WalkB_AK47"
WalkAnims(2)="WalkL_AK47"
WalkAnims(3)="WalkR_AK47"
CrouchTurnRightAnim="CH_TurnR_AK47"
CrouchTurnLeftAnim="CH_TurnL_AK47"
IdleCrouchAnim="CHIdle_AK47"
IdleWeaponAnim="Idle_AK47"
IdleRestAnim="Idle_AK47"
IdleChatAnim="Idle_AK47"
IdleHeavyAnim="Idle_AK47"
IdleRifleAnim="Idle_AK47"
FireAnims(0)="Fire_AK47"
FireAnims(1)="Fire_AK47"
FireAnims(2)="Fire_AK47"
FireAnims(3)="Fire_AK47"
FireAltAnims(0)="FastAttack2_Knife"
FireAltAnims(1)="FastAttack2_Knife"
FireAltAnims(2)="FastAttack2_Knife"
FireAltAnims(3)="FastAttack2_Knife"
FireCrouchAnims(0)="CHFire_AK47"
FireCrouchAnims(1)="CHFire_AK47"
FireCrouchAnims(2)="CHFire_AK47"
FireCrouchAnims(3)="CHFire_AK47"
FireCrouchAltAnims(0)="CHFastAttack2_Knife"
FireCrouchAltAnims(1)="CHFastAttack2_Knife"
FireCrouchAltAnims(2)="CHFastAttack2_Knife"
FireCrouchAltAnims(3)="CHFastAttack2_Knife"
HitAnims(0)="HitF_AK47"
HitAnims(1)="HitB_AK47"
HitAnims(2)="HitL_AK47"
HitAnims(3)="HitR_AK47"
PostFireBlendStandAnim="Blend_AK47"
PostFireBlendCrouchAnim="CHBlend_AK47"
MeshRef="ScrnWeaponPack_A.SVD_3rd"
WeaponAmbientScale=2.000000
bRapidFire=True
bAltRapidFire=True
SplashEffect=Class'ROEffects.BulletSplashEmitter'
LightBrightness=0.000000
}