310 lines
9.3 KiB
Ucode
310 lines
9.3 KiB
Ucode
|
//=============================================================================
|
||
|
// 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)))
|
||
|
}
|