//=============================================================================
// KFSprayActorArcGenerator
//=============================================================================
// Base class for spray actor that zaps enemies
//=============================================================================
// Killing Floor 2
// Copyright (C) 2019 Tripwire Interactive LLC
//=============================================================================
class KFSprayActor_ArcGenerator extends KFSprayActor
    hidecategories(Object, Movement, Display, Attachment, Collision, Physics, Advanced, Debug, Mobile)
	placeable;


/** Transient PSCs to workaround issue with setting the BonePSC in an archetype */
var transient array<KFParticleSystemComponent> BoneChainComponents;
var transient array<KFParticleSystemComponent> BoneChainComponents_1stP;

/** Firebug Perk can modify the flame length, we need an alternative anim for that */
var(SprayMesh) AnimSet 	AltSprayAnimSet;

var(ZapConfiguration) int MaxNumberOfZedsZapped;
var(ZapConfiguration) int MaxDistanceToBeZapped;
var(ZapConfiguration) float ZapInterval;
var(ZapConfiguration) int ChainDamage;

var KFWeap_HRG_EMP_ArcGenerator OwnerWeapon;

/***************************************

	INHERITED FROM SPRAY AND NOT MODIFIED

 ***************************************/

event PreBeginPlay()
{
	super.PreBeginPlay();
	SetBoneChainComponents();
}

/**
 * Set (or create) PSC's for the BoneChain.  Use this when creating an archetype template spray
 * effect to workaround an issue where assigning a transient default BoneChain PSC doesn't work.
 */
simulated function SetBoneChainComponents()
{
	local int Idx;

	for (Idx = 0; Idx < BoneChain.length; ++Idx)
	{
		if ( Idx < BoneChainComponents.Length )
		{
			BoneChain[Idx].BonePSC0 = BoneChainComponents[Idx];
		}
		if ( Idx < BoneChainComponents_1stP.Length )
		{
			BoneChain[Idx].BonePSC1 = BoneChainComponents_1stP[Idx];
		}
	}
}



simulated function BeginSpray()
{
	local KFPerk InstigatorPerk;

	if( bDeleteMe )
	{
		return;
	}

	super.BeginSpray();

	if( OwningKFPawn != none )
	{
		InstigatorPerk = OwningKFPawn.GetPerk();
		if( InstigatorPerk != none )
		{
			SplashDamage = default.SplashDamage;
		}

		//SetSprayLength();
	}
}

/***************************************

	END INHERITED FROM SPRAY AND NOT MODIFIED

 ***************************************/


/**
 * Overridden to handle the rotation sound pitching for the flamethrower sound
 */
simulated event Tick(float DeltaTime)
{
	super.Tick(DeltaTime);
	
    // Set the rotation speed for the flamethrower sound
	if( !bDetached && OwningKFPawn != none && WorldInfo.NetMode != NM_DedicatedServer )
	{
        OwningKFPawn.SetWeaponComponentRTPCValue( "FlamethrowerRotation", RotationSpeed);
	}
}

simulated function CleanupEndFire()
{
	super.CleanupEndFire();
	SprayMeshExitCollision();
}


simulated event SprayMeshHit(Actor _TouchActor)
{
	local KFPawn_Monster TouchActor;
	//if (Role == ROLE_Authority)
	//{
		//`Warn("TOUCHED IN: "$_TouchActor.Location$"");
		//if the sprayed actor is a monster, then we start zapping enemies

			if(_TouchActor.IsA('KFPawn_Monster'))
			{
				TouchActor = KFPawn_Monster(_TouchActor);
				if(TouchActor != OwnerWeapon.oZedCurrentlyBeingSprayed)
				{
					OwnerWeapon.SetCurrentSprayedZed(TouchActor);
					OwnerWeapon.ChainNearZeds(_TouchActor);
				}
			}
			else
			{
				SprayMeshExitCollision();
			}
		
	//}
		/*if (!CheckRecentlyZapped(_TouchActor))
		{
			NewActorInfo.HitActor = _TouchActor;
			NewActorInfo.HitTime = WorldInfo.TimeSeconds;
			vRecentlyZappedActors.AddItem(NewActorInfo);
		}*/

	super.SprayMeshHit(_TouchActor);
}



simulated event SprayMeshExitCollision()
{
	OwnerWeapon.SetCurrentSprayedZed(none);
}
/**
 * @brief Changes the flame's length if the Firebug's Range skill is selected
 * 
 * @param InstigatorPerk Instigator's current perk
 */
/*simulated function SetSprayLength()
{
	local AnimSet TempAnimSet;
	local KFPlayerReplicationInfo OwningPawnPRI;

	if ( default.AltSprayAnimSet == None )
	{
		return; // only once length available
	}

	// Firebug range skill can affect the flame weapons range
	OwningPawnPRI = KFPlayerReplicationInfo(OwningKFPawn.PlayerReplicationInfo);
	if( OwningPawnPRI != none )
	{
		TempAnimSet = OwningPawnPRI.bExtraFireRange ? default.AltSprayAnimSet : default.SprayAnimSet;
	}
	
	// Don't set the anim set to nothing if the archetype is screwed up
	// Don't set the anim set and tree if they do not need to be changed
	if( TempAnimSet == none || TempAnimSet == SkeletalSprayMesh.AnimSets[0] )	
	{
		return;
	}

	SkeletalSprayMesh.AnimSets[0] = TempAnimSet;
	SkeletalSprayMesh.UpdateAnimations();
	SetupFX();	
}*/

DefaultProperties
{
    Physics=PHYS_Interpolating
	TickGroup=TG_PostAsyncWork
	bStatic=false
	bCollideActors=TRUE
	bBlockActors=false
	bWorldGeometry=false
	// This must not be bCollideWorld or it will get pushed around in FarMoveActor
	bCollideWorld=false
	bProjTarget=false
	bIgnoreEncroachers=FALSE
	bNoEncroachCheck=TRUE
	RemoteRole=ROLE_None
	GravityScaleRange=(X=0.f,Y=-15.f)
	GravityScaleInTime=0.5f
	MomentumScale=0.15f
	MyDamageType=class'KFDT_EMP'

	// ---------------------------------------------
	// Splash damage
	SplashGlancingDotLimit=-0.9f
	SplashRotInterpSpeed=8.f
	SplashLocInterpSpeed=40.f
	bDoCollideComplex=TRUE
	SprayDamageScaleDistRange=(X=300,Y=300)
	SprayDamage=(X=10,Y=10)
	SplashDamageRadius=300.f
	SplashDamage=10
	SplashDamageFalloffExponent=1.f

	// ---------------------------------------------
	// Per-bone Fire FX
	PerBoneSprayFXGlobalScale=1.f
	bDoPerBoneSprayFX=TRUE

	// ---------------------------------------------
	// Material params
	MaterialHeatRampTime=0.65f
	MaterialHeatRange=(X=0.f,Y=0.8f)
	MaterialFadeOutTime=0.2f
	MaterialCurrentFadeVal=1.f
	MatFadePow=2.f

	// ---------------------------------------------
	// Content
    Begin Object Class=KFSkeletalMeshComponent Name=FlameCore0
        CollideActors=true
        BlockActors=false
        BlockZeroExtent=true
        BlockNonZeroExtent=true
        bUpdateSkelWhenNotRendered=TRUE
        bIgnoreControllersWhenNotRendered=FALSE
        bOverrideAttachmentOwnerVisibility=TRUE
        CastShadow=FALSE
        bAcceptsStaticDecals=FALSE
        bAcceptsDynamicDecals=FALSE
        Rotation=(Roll=-16384)
		SkeletalMesh=SkeletalMesh'FX_Flamethrower_MESH.WEP_Flamethrower_Flame_A'
		AnimTreeTemplate=AnimTree'FX_Flamethrower_ANIM.WEP_Flamethrower_Flame_AT'
		AnimSets(0)=AnimSet'FX_Flamethrower_ANIM.WEP_Flamethrower_Flame_Anim'
    End Object
    SkeletalSprayMesh=FlameCore0
    CollisionComponent=FlameCore0
    Components.Add(FlameCore0)

    SkelMesh=SkeletalMesh'FX_Flamethrower_MESH.WEP_Flamethrower_Flame_A'
    SprayAnimSet=AnimSet'FX_Flamethrower_ANIM.WEP_Flamethrower_Flame_Anim'
    SprayAnimTreeTemplate=AnimTree'FX_Flamethrower_ANIM.WEP_Flamethrower_Flame_AT'

    AltSprayAnimSet=AnimSet'FX_Flamethrower_ANIM.Wep_Caulk_Flame_Anim'

//	bLeaveStickyFire=FALSE
// 	StickyFireMinTimeBetweenSpawns=0.25f
// 	StickyFireOwnerSafeRadius=64
// 	StickyFireInitialDelay=0.5f
// 	StickyFireTestLocInterpSpeed=5.f
// 	StickyFireTestLocThreshold=64.f

    ImpactEffects=KFImpactEffectInfo'WEP_Flamethrower_ARCH.Flame_Impacts'

    SprayEndEffect=ParticleSystem'WEP_Flamethrower_EMIT.FX_End_muzzleflash_01'
    SprayStartEffect=ParticleSystem'WEP_Flamethrower_EMIT.FX_Start_muzzleflash'

    SplashGlancingEffect=ParticleSystem'WEP_Flamethrower_EMIT.FX_flame_deflect_01'
	Begin Object Class=KFParticleSystemComponent Name=SplashGlancingPSC0
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object
	SplashGlancingPSC=SplashGlancingPSC0
	Components.Add(SplashGlancingPSC0)

	SplashDirectEffect=ParticleSystem'WEP_Flamethrower_EMIT.FX_Flame_impact_01'
    Begin Object Class=KFParticleSystemComponent Name=SplashDirectPSC0
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object
	SplashDirectPSC=SplashDirectPSC0
	Components.Add(SplashDirectPSC0)

	SplashPawnEffect=ParticleSystem'WEP_Flamethrower_EMIT.FX_Flame_impact_player_01'
    Begin Object Class=KFParticleSystemComponent Name=SplashPawnPSC0
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object
	SplashPawnPSC=SplashPawnPSC0
	Components.Add(SplashPawnPSC0)

	Begin Object Class=KFParticleSystemComponent Name=SplashMaterialBasedPSC0
		bAutoActivate=FALSE
		Template=None		// filled in by the code based on what was hit
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object
	SplashMaterialBasedPSC=SplashMaterialBasedPSC0
	Components.Add(SplashMaterialBasedPSC0)

	// per-bone fire fx
	LastBoneChainIndexThatCanSpawnSplashEffects=11

	// bone01
	// 3rd person
	Begin Object Class=KFParticleSystemComponent Name=Bone01_PSC0
    	bOwnerNoSee=TRUE
		bAutoActivate=FALSE
		Rotation=(Yaw=32768)
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object
    // first person
	Begin Object Class=KFParticleSystemComponent Name=Bone01_PSC1
		bOnlyOwnerSee=TRUE
		bAutoActivate=FALSE
		Rotation=(Yaw=32768)
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object

	// bone02
	// 3rd person
	Begin Object Class=KFParticleSystemComponent Name=Bone02_PSC0
		bOwnerNoSee=TRUE
        bAutoActivate=FALSE
		Rotation=(Yaw=32768)
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object
    // first person
	Begin Object Class=KFParticleSystemComponent Name=Bone02_PSC1
		bOnlyOwnerSee=TRUE
		bAutoActivate=FALSE
		Rotation=(Yaw=32768)
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object

	// bone03
	// 3rd person
	Begin Object Class=KFParticleSystemComponent Name=Bone03_PSC0
		bOwnerNoSee=TRUE
        bAutoActivate=FALSE
        Rotation=(Yaw=32768)
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object
    // first person
	Begin Object Class=KFParticleSystemComponent Name=Bone03_PSC1
		bOnlyOwnerSee=TRUE
		bAutoActivate=FALSE
		Rotation=(Yaw=32768)
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object

	// bone04
	// 3rd person
	Begin Object Class=KFParticleSystemComponent Name=Bone04_PSC0
		bOwnerNoSee=TRUE
        bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object
    // first person
	Begin Object Class=KFParticleSystemComponent Name=Bone04_PSC1
		bOnlyOwnerSee=TRUE
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object

	// bone05
	Begin Object Class=KFParticleSystemComponent Name=Bone05_PSC0
		bOwnerNoSee=TRUE
        bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object
    // first person
	Begin Object Class=KFParticleSystemComponent Name=Bone05_PSC1
		bOnlyOwnerSee=TRUE
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object

	// bone06
	// 3rd person
	Begin Object Class=KFParticleSystemComponent Name=Bone06_PSC0
		bOwnerNoSee=TRUE
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object
    // first person
	Begin Object Class=KFParticleSystemComponent Name=Bone06_PSC1
		bOnlyOwnerSee=TRUE
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object

	// bone07
	// 3rd person
	Begin Object Class=KFParticleSystemComponent Name=Bone07_PSC0
		bOwnerNoSee=TRUE
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object
    // first person
	Begin Object Class=KFParticleSystemComponent Name=Bone07_PSC1
		bOnlyOwnerSee=TRUE
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object

	// bone08
	// 3rd person
	Begin Object Class=KFParticleSystemComponent Name=Bone08_PSC0
		bOwnerNoSee=TRUE
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object
	// first person
	Begin Object Class=KFParticleSystemComponent Name=Bone08_PSC1
		bOnlyOwnerSee=TRUE
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object

	// bone09
	// 3rd person
	Begin Object Class=KFParticleSystemComponent Name=Bone09_PSC0
		bOwnerNoSee=TRUE
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object
	// first person
    Begin Object Class=KFParticleSystemComponent Name=Bone09_PSC1
		bOnlyOwnerSee=TRUE
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object

	// bone10
	// 3rd person
    Begin Object Class=KFParticleSystemComponent Name=Bone10_PSC0
		bOwnerNoSee=TRUE
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object
	// first person
    Begin Object Class=KFParticleSystemComponent Name=Bone10_PSC1
		bOnlyOwnerSee=TRUE
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object

	// bone11
	// 3rd person
    Begin Object Class=KFParticleSystemComponent Name=Bone11_PSC0
		bOwnerNoSee=TRUE
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object
	// first person
    Begin Object Class=KFParticleSystemComponent Name=Bone11_PSC1
		bOnlyOwnerSee=TRUE
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object

	// bone12
	// 3rd person
    Begin Object Class=KFParticleSystemComponent Name=Bone12_PSC0
		bOwnerNoSee=TRUE
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object
	// first person
    Begin Object Class=KFParticleSystemComponent Name=Bone12_PSC1
		bOnlyOwnerSee=TRUE
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object

	// bone13
	// 3rd person
	Begin Object Class=KFParticleSystemComponent Name=Bone13_PSC0
		bOwnerNoSee=TRUE
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object
	// first person
    Begin Object Class=KFParticleSystemComponent Name=Bone13_PSC1
		bOnlyOwnerSee=TRUE
		bAutoActivate=FALSE
		TranslucencySortPriority=1
		SecondsBeforeInactive=0
	End Object

	BoneChain(0)={(BoneName=Bone01,
                MaterialParam=0.0,
                BoneScale=1.f,
                EffectScale=1.0f,
                ParticleSystemTemplate=none,
                ParticleSystemTemplate1P=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_Initial_spawn_01_1P',
                ParticleActivationDelay=0.0f,
                BonePSC0=Bone01_PSC0,
                BonePSC1=Bone01_PSC1)}
	BoneChain(1)={(BoneName=Bone02,
                MaterialParam=0.04,
                BoneScale=1.f,
                EffectScale=1.0f,
                ParticleSystemTemplate=none,
                ParticleSystemTemplate1P=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_Initial_spawn_01_1P',
                ParticleActivationDelay=0.0f,
                BonePSC0=Bone01_PSC0,
                BonePSC1=Bone01_PSC1)}
	BoneChain(2)={(BoneName=Bone03,
                MaterialParam=0.080000,
                BoneScale=1.f,
                EffectScale=0.250000,
                ParticleSystemTemplate=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_reverse_01_3P',
                ParticleSystemTemplate1P=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_reverse_01_1P',
                ParticleActivationDelay=0.0f,
                BonePSC0=Bone02_PSC0,
                BonePSC1=Bone02_PSC1)}
	BoneChain(3)={(BoneName=Bone04,
                MaterialParam=0.130000,
                BoneScale=1.f,
                EffectScale=0.250000,
                ParticleSystemTemplate=None,
                ParticleSystemTemplate1P=None,
                ParticleActivationDelay=0.0f,
                BonePSC0=Bone03_PSC0,
                BonePSC1=Bone03_PSC1)}
	BoneChain(4)={(BoneName=Bone05,
                MaterialParam=0.190000,
                BoneScale=1.f,
                EffectScale=0.500000,
                ParticleSystemTemplate=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_3P',
                ParticleSystemTemplate1P=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_1P',
                ParticleActivationDelay=0.0f,
                BonePSC0=Bone04_PSC0,
                BonePSC1=Bone04_PSC1)}
	BoneChain(5)={(BoneName=Bone06,
                MaterialParam=0.240000,
                BoneScale=1.f,
                EffectScale=0.500000,
                ParticleSystemTemplate=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_3P',
                ParticleSystemTemplate1P=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_1P',
                ParticleActivationDelay=0.0f,
                BonePSC0=Bone05_PSC0,
                BonePSC1=Bone05_PSC1)}
	BoneChain(6)={(BoneName=Bone07,
                MaterialParam=0.310000,
                BoneScale=1.f,
                EffectScale=1.800000,
                ParticleSystemTemplate=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_3P',
                ParticleSystemTemplate1P=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_1P',
                ParticleActivationDelay=0.0f,
                BonePSC0=Bone06_PSC0,
                BonePSC1=Bone06_PSC1)}
	BoneChain(7)={(BoneName=Bone08,
                MaterialParam=0.370000,
                BoneScale=1.f,
                EffectScale=0.500000,
                ParticleSystemTemplate=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_3P',
                ParticleSystemTemplate1P=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_1P',
                ParticleActivationDelay=0.0f,
                BonePSC0=Bone07_PSC0,
                BonePSC1=Bone07_PSC1)}
	BoneChain(8)={(BoneName=Bone09,
                MaterialParam=0.440000,
                BoneScale=1.f,
                EffectScale=1.000000,
                ParticleSystemTemplate=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_3P',
                ParticleSystemTemplate1P=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_1P',
                ParticleActivationDelay=0.0f,
                BonePSC0=Bone08_PSC0,
                BonePSC1=Bone08_PSC1)}
	BoneChain(9)={(BoneName=Bone10,
                MaterialParam=0.500000,
                BoneScale=1.f,
                EffectScale=1.000000,
                ParticleSystemTemplate=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_3P',
                ParticleSystemTemplate1P=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_1P',
                ParticleActivationDelay=0.0f,
                BonePSC0=Bone09_PSC0,
                BonePSC1=Bone09_PSC1)}
	BoneChain(10)={(BoneName=Bone11,
                MaterialParam=0.560000,
                BoneScale=1.f,
                EffectScale=1.000000,
                ParticleSystemTemplate=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_3P',
                ParticleSystemTemplate1P=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_1P',
                ParticleActivationDelay=0.0f,
                BonePSC0=Bone10_PSC0,
                BonePSC1=Bone10_PSC1)}
	BoneChain(11)={(BoneName=Bone12,
                MaterialParam=0.620000,
                BoneScale=1.f,
                EffectScale=1.000000,
                ParticleSystemTemplate=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_3P',
                ParticleSystemTemplate1P=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_1P',
                ParticleActivationDelay=0.0f,
                BonePSC0=Bone11_PSC0,
                BonePSC1=Bone11_PSC1)}
	BoneChain(12)={(BoneName=Bone13,
                MaterialParam=0.690000,
                BoneScale=1.f,
                EffectScale=1.000000,
                ParticleSystemTemplate=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_3P',
                ParticleSystemTemplate1P=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_1P',
                ParticleActivationDelay=0.0f,
                BonePSC0=Bone12_PSC0,
                BonePSC1=Bone12_PSC1)}
	BoneChain(13)={(BoneName=Bone14,
                MaterialParam=0.760000,
                BoneScale=1.f,
                EffectScale=1.000000,
                ParticleSystemTemplate=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_End_01_3P',
                ParticleSystemTemplate1P=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_1P',
                ParticleActivationDelay=0.0f,
                BonePSC0=Bone13_PSC0,
                BonePSC1=Bone13_PSC1)}
	BoneChain(14)={(BoneName=Bone15,
                MaterialParam=0.820000,
                BoneScale=0.f,
                EffectScale=1.000000,
                ParticleSystemTemplate=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_End_01_3P',
                ParticleSystemTemplate1P=ParticleSystem'WEP_Flamethrower_EMIT.Materials.FX_Flamethrower_BSpawns_01_1P',
                ParticleActivationDelay=0.0f)}

	BoneChainComponents={(Bone01_PSC0, Bone01_PSC0, Bone02_PSC0, Bone03_PSC0, Bone04_PSC0, Bone05_PSC0, Bone06_PSC0,
						Bone07_PSC0, Bone08_PSC0, Bone09_PSC0, Bone10_PSC0, Bone11_PSC0, Bone12_PSC0, Bone13_PSC0)}
	BoneChainComponents_1stP={(Bone01_PSC1, Bone01_PSC1, Bone02_PSC1, Bone03_PSC1, Bone04_PSC1, Bone05_PSC1, Bone06_PSC1,
						Bone07_PSC1, Bone08_PSC1, Bone09_PSC1, Bone10_PSC1, Bone11_PSC1, Bone12_PSC1, Bone13_PSC1)}

	// pointlight at far end of spray
	Begin Object Class=PointLightComponent Name=FlamePointLight2
	    LightColor=(R=245,G=190,B=140,A=255)
		Brightness=4.f
		Radius=500.f
		FalloffExponent=10.f
		CastShadows=False
		CastStaticShadows=FALSE
		CastDynamicShadows=TRUE
		bCastPerObjectShadows=false
		bEnabled=FALSE
		LightingChannels=(Indoor=TRUE,Outdoor=TRUE,bInitialized=TRUE)
	End Object

	// Muzzle Flash point light
	// want this light to illuminate characters only, so Marcus gets the glow
    Begin Object Class=PointLightComponent Name=FlamePointLight0
		LightColor=(R=250,G=150,B=85,A=255)
		Brightness=6.0f
		FalloffExponent=10.f
		Radius=750.f
		CastShadows=False
		CastStaticShadows=FALSE
		CastDynamicShadows=TRUE
		bCastPerObjectShadows=false
		bEnabled=FALSE
		LightingChannels=(Indoor=TRUE,Outdoor=TRUE,bInitialized=TRUE)
	End Object

	SprayLights(0)=(Light=FlamePointLight0,BoneChainIndex=1,FlickerIntensity=5.f,FlickerInterpSpeed=15.f)
	SprayLights(1)=(Light=FlamePointLight2,BoneChainIndex=9,FlickerIntensity=5.f,FlickerInterpSpeed=15.f)

// 	MaterialHeatRampTime=0.65f
// 	MaterialHeatRange=(X=0.f,Y=0.8f)
// 	MaterialFadeOutTime=0.2f
// 	MaterialCurrentFadeVal=1.f
// 	MatFadePow=2.f
// 	Begin Object Class=AudioComponent Name=SplashMaterialBasedAC0
// 		// cue will be filled in from physicalmaterial data
// 		SoundCue=None
// 		bStopWhenOwnerDestroyed=TRUE
// 		bUseOwnerLocation=FALSE
// 	End Object
// 	SplashMaterialBasedAC=SplashMaterialBasedAC0

	// Splash audio
    Begin Object Class=AkComponent name=CurrentSplashAkSoundComponent
    	bStopWhenOwnerDestroyed=true
    	bForceOcclusionUpdateInterval=true
        OcclusionUpdateInterval=0.2;
    End Object
    CurrentSplashAKC=CurrentSplashAkSoundComponent
    Components.Add(CurrentSplashAkSoundComponent)

    SplashPawnAKEvent=AkEvent'WW_WEP_SA_Flamethrower.Play_WEP_SA_Flamethrower_Impact_Flesh'
    SplashDirectAKEvent=AkEvent'WW_WEP_SA_Flamethrower.Play_WEP_SA_Flamethrower_Impact_Default'
    SplashGlancingAKEvent=AkEvent'WW_WEP_SA_Flamethrower.Play_WEP_SA_Flamethrower_Impact_Default'

    SplashPawnStopAKEvent=AkEvent'WW_WEP_SA_Flamethrower.Stop_WEP_SA_Flamethrower_Impact_Flesh_Loop'
    SplashDirectStopAKEvent=AkEvent'WW_WEP_SA_Flamethrower.Stop_WEP_SA_Flamethrower_Impact_Default_Loop'
    SplashGlancingStopAKEvent=AkEvent'WW_WEP_SA_Flamethrower.Stop_WEP_SA_Flamethrower_Impact_Default_Loop'

 	Begin Object Class=KFParticleSystemComponent Name=StartFirePSC0
 		bAutoActivate=TRUE
 		TickGroup=TG_PostUpdateWork
 	End Object
 	SprayStartPSC=StartFirePSC0

	SeedSprayVel=10000.f//5000.f
	SeedDecel=28000.f//13000.f
	SeedMaxAge=0.4f
	SeedMinChainLength=0.f
	SeedSimFreq=60.f
	SeedWarmupTime=0.25f
	VelocityScaleZ=0.3f//0.15f

	bUseExtentTracing=true
	SpraySocketName=MuzzleFlash

	//ImpactProjectileClass=class'KFProj_GroundFire'

	ImpactProjectileInterval=0.099


}