1
0
KF2-Dev-Scripts/KFGameContent/Classes/KFWeap_Flame_Flamethrower.uc

310 lines
9.3 KiB
Ucode
Raw Normal View History

2020-12-13 15:01:13 +00:00
//=============================================================================
// KFWeap_Flame_Flamethrower
//=============================================================================
// The "Incinerator" flamethrower
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
// John "Ramm-Jaeger" Gibson
//=============================================================================
class KFWeap_Flame_Flamethrower extends KFWeap_FlameBase;
/** Effect for the pilot light. */
var() protected KFParticleSystemComponent PSC_SpineLights[4];
/** Socket to attach the pilot light to. */
var() name SpineLightSocketNames[4];
simulated protected function TurnOnPilot()
{
local int i;
local float OwnerMeshFOV;
if (bPilotLightOn)
return;
OwnerMeshFOV = MySkelMesh.FOV;
// Attach and start up the pilot light
for (i = 0; i < 4; i++)
{
if( PSC_SpineLights[i] != None )
{
MySkelMesh.AttachComponentToSocket( PSC_SpineLights[i], SpineLightSocketNames[i] );
PSC_SpineLights[i].ActivateSystem();
// Turn on the low flame, turn off the high flame
PSC_SpineLights[i].SetFloatParameter('Pilotlow', 1.0);
PSC_SpineLights[i].SetFloatParameter('Pilothigh', 0.0);
PSC_SpineLights[i].SetFOV(OwnerMeshFOV);
}
}
super.TurnOnPilot();
}
simulated protected function TurnOffPilot()
{
local int i;
Super.TurnOffPilot();
for (i = 0; i < 4; i++)
{
if( PSC_SpineLights[i] != None )
{
PSC_SpineLights[i].DeActivateSystem();
}
}
}
simulated protected function TurnOnFireSpray()
{
local int i;
if (!bFireSpraying)
{
// Attach and start up the pilot light
for (i = 0; i < 4; i++)
{
if( PSC_SpineLights[i] != None )
{
// Turn off the low flame, turn on the high flame
PSC_SpineLights[i].SetFloatParameter('Pilotlow', 0.0);
PSC_SpineLights[i].SetFloatParameter('Pilothigh', 1.0);
}
}
}
Super.TurnOnFireSpray();
}
simulated protected function TurnOffFireSpray()
{
local int i;
for (i = 0; i < 4; i++)
{
if( PSC_SpineLights[i] != None )
{
// Turn on the low flame, turn off the high flame
PSC_SpineLights[i].SetFloatParameter('Pilotlow', 1.0);
PSC_SpineLights[i].SetFloatParameter('Pilothigh', 0.0);
}
}
Super.TurnOffFireSpray();
}
/**
* Adjust the FOV for the first person weapon and arms.
*/
simulated event SetFOV( float NewFOV )
{
local int i;
Super.SetFOV(NewFOV);
// Set the light emitter to the same FOV as the weapon mesh
if( MySkelMesh != none )
{
for (i = 0; i < 4; i++)
{
if( PSC_SpineLights[i] != None )
{
PSC_SpineLights[i].SetFOV(MySkelMesh.FOV);
}
}
}
}
defaultproperties
{
FlameSprayArchetype=SprayActor_Flame'WEP_Flamethrower_ARCH.WEP_Flamethrower_Flame'
Begin Object Name=PilotLight0
Template=ParticleSystem'WEP_Flamethrower_EMIT.FX_pilot_light_01'
End Object
PilotLightSocketName=FXPilot1
Begin Object Class=KFParticleSystemComponent Name=SpineLight0
Template=ParticleSystem'WEP_Flamethrower_EMIT.FX_pilot_light_01'
DepthPriorityGroup=SDPG_Foreground
bAutoActivate=TRUE
TickGroup=TG_PostUpdateWork
End Object
PSC_SpineLights(0)=SpineLight0
Begin Object Class=KFParticleSystemComponent Name=SpineLight1
Template=ParticleSystem'WEP_Flamethrower_EMIT.FX_pilot_light_01'
DepthPriorityGroup=SDPG_Foreground
bAutoActivate=TRUE
TickGroup=TG_PostUpdateWork
End Object
PSC_SpineLights(1)=SpineLight1
Begin Object Class=KFParticleSystemComponent Name=SpineLight2
Template=ParticleSystem'WEP_Flamethrower_EMIT.FX_pilot_light_01'
DepthPriorityGroup=SDPG_Foreground
bAutoActivate=TRUE
TickGroup=TG_PostUpdateWork
End Object
PSC_SpineLights(2)=SpineLight2
Begin Object Class=KFParticleSystemComponent Name=SpineLight3
Template=ParticleSystem'WEP_Flamethrower_EMIT.FX_pilot_light_01'
DepthPriorityGroup=SDPG_Foreground
bAutoActivate=TRUE
TickGroup=TG_PostUpdateWork
End Object
PSC_SpineLights(3)=SpineLight3
SpineLightSocketNames(0)=FXPilot2
SpineLightSocketNames(1)=FXPilot3
SpineLightSocketNames(2)=FXPilot4
SpineLightSocketNames(3)=FXPilot5
PilotLightPlayEvent=AkEvent'WW_WEP_SA_Flamethrower.Play_WEP_SA_Flamethrower_PilotLight_Loop'
PilotLightStopEvent=AkEvent'WW_WEP_SA_Flamethrower.Stop_WEP_SA_Flamethrower_PilotLight_Loop'
// Muzzle Flash point light
// want this light to illuminate characters only, so Marcus gets the glow
Begin Object Class=PointLightComponent Name=PilotPointLight0
LightColor=(R=250,G=150,B=85,A=255)
Brightness=0.25f
FalloffExponent=4.f
Radius=128.f
CastShadows=False
CastStaticShadows=FALSE
CastDynamicShadows=TRUE
bCastPerObjectShadows=false
bEnabled=FALSE
LightingChannels=(Indoor=TRUE,Outdoor=TRUE,bInitialized=TRUE)
End Object
Begin Object Class=PointLightComponent Name=PilotPointLight1
LightColor=(R=250,G=150,B=85,A=255)
Brightness=3.f
FalloffExponent=8.f
Radius=32.f
CastShadows=False
CastStaticShadows=FALSE
CastDynamicShadows=TRUE
bCastPerObjectShadows=false
bEnabled=FALSE
LightingChannels=(Indoor=TRUE,Outdoor=TRUE,bInitialized=TRUE)
End Object
PilotLights(0)=(Light=PilotPointLight0,FlickerIntensity=1.5f,FlickerInterpSpeed=0.5f,LightAttachBone=FXPilot1)
PilotLights(1)=(Light=PilotPointLight1,FlickerIntensity=4.f,FlickerInterpSpeed=3.f,LightAttachBone=FXPilot3)
// Shooting Animations
FireSightedAnims[0]=Shoot
FireLoopSightedAnim=ShootLoop
// Advanced Looping (High RPM) Fire Effects
FireLoopStartSightedAnim=ShootLoop_Start
FireLoopEndSightedAnim=ShootLoop_End
// FOV
MeshIronSightFOV=52
PlayerIronSightFOV=80
// Depth of field
DOF_FG_FocalRadius=150
DOF_FG_MaxNearBlurSize=1
// Content
PackageKey="Flamethrower"
FirstPersonMeshName="WEP_1P_Flamethrower_MESH.Wep_1stP_Flamethrower_Rig"
FirstPersonAnimSetNames(0)="wep_1p_flamethrower_anim.Wep_1stP_Flamethrower_anim"
PickupMeshName="WEP_3P_Flamethrower_MESH.Wep_FlameThrower_Pickup"
AttachmentArchetypeName="WEP_Flamethrower_ARCH.Wep_Flamethrower_3P"
MuzzleFlashTemplateName="WEP_Flamethrower_ARCH.Wep_Flamethrower_MuzzleFlash"
// Zooming/Position
PlayerViewOffset=(X=3.0,Y=9,Z=-3)
IronSightPosition=(X=3,Y=6,Z=-1)
// Ammo
MagazineCapacity[0]=100
SpareAmmoCapacity[0]=500
InitialSpareMags[0]=1
AmmoPickupScale[0]=0.4
bCanBeReloaded=true
bReloadFromMagazine=true
// Recoil
maxRecoilPitch=150
minRecoilPitch=115
maxRecoilYaw=115
minRecoilYaw=-115
RecoilRate=0.085
RecoilMaxYawLimit=500
RecoilMinYawLimit=65035
RecoilMaxPitchLimit=900
RecoilMinPitchLimit=65035
RecoilISMaxYawLimit=75
RecoilISMinYawLimit=65460
RecoilISMaxPitchLimit=375
RecoilISMinPitchLimit=65460
RecoilViewRotationScale=0.25
IronSightMeshFOVCompensationScale=1.5
HippedRecoilModifier=1.5
// Inventory
InventorySize=7 //8
GroupPriority=75
WeaponSelectTexture=Texture2D'ui_weaponselect_tex.UI_WeaponSelect_Flamethrower'
// DEFAULT_FIREMODE
FireModeIconPaths(DEFAULT_FIREMODE)=Texture2D'ui_firemodes_tex.UI_FireModeSelect_Flamethrower'
FiringStatesArray(DEFAULT_FIREMODE)=SprayingFire
WeaponFireTypes(DEFAULT_FIREMODE)=EWFT_Custom
FireInterval(DEFAULT_FIREMODE)=+0.07 // 850 RPM
FireOffset=(X=30,Y=4.5,Z=-5)
//MinFireDuration=0.25
MinAmmoConsumed=4
// ALT_FIREMODE
FiringStatesArray(ALTFIRE_FIREMODE)=WeaponSingleFiring
WeaponFireTypes(ALTFIRE_FIREMODE)=EWFT_None
// BASH_FIREMODE
InstantHitDamageTypes(BASH_FIREMODE)=class'KFDT_Bludgeon_Flamethrower'
InstantHitDamage(BASH_FIREMODE)=28
// Fire Effects
WeaponFireSnd(DEFAULT_FIREMODE)=(DefaultCue=AkEvent'WW_WEP_SA_Flamethrower.Play_WEP_SA_Flamethrower_Fire_3P_Loop', FirstPersonCue=AkEvent'WW_WEP_SA_Flamethrower.Play_WEP_SA_Flamethrower_Fire_1P_Loop')
WeaponFireLoopEndSnd(DEFAULT_FIREMODE)=(DefaultCue=AkEvent'WW_WEP_SA_Flamethrower.Play_WEP_SA_Flamethrower_Fire_3P_LoopEnd', FirstPersonCue=AkEvent'WW_WEP_SA_Flamethrower.Play_WEP_SA_Flamethrower_Fire_1P_LoopEnd')
//@todo: add akevents when we have them
WeaponDryFireSnd(DEFAULT_FIREMODE)=AkEvent'WW_WEP_SA_Flamethrower.Play_WEP_SA_Flamethrower_Handling_DryFire'
WeaponDryFireSnd(ALTFIRE_FIREMODE)=AkEvent'WW_WEP_SA_Flamethrower.Play_WEP_SA_Flamethrower_Handling_DryFire'
// Advanced (High RPM) Fire Effects
bLoopingFireAnim(DEFAULT_FIREMODE)=true
bLoopingFireSnd(DEFAULT_FIREMODE)=true
SingleFireSoundIndex=FIREMODE_NONE
// Attachments
bHasIronSights=true
bHasFlashlight=false
// AI Warning
bWarnAIWhenFiring=true
AssociatedPerkClasses(0)=class'KFPerk_Firebug'
WeaponFireWaveForm=ForceFeedbackWaveform'FX_ForceFeedback_ARCH.Gunfire.Weak_Recoil'
// Weapon Upgrade stat boosts
//WeaponUpgrades[1]=(IncrementDamage=1.15f,IncrementWeight=1)
//WeaponUpgrades[2]=(IncrementDamage=1.2f,IncrementWeight=2)
WeaponUpgrades[1]=(Stats=((Stat=EWUS_Damage0, Scale=1.15f), (Stat=EWUS_Weight, Add=1)))
WeaponUpgrades[2]=(Stats=((Stat=EWUS_Damage0, Scale=1.2f), (Stat=EWUS_Weight, Add=2)))
}