2020-12-13 15:01:13 +00:00
|
|
|
//=============================================================================
|
|
|
|
// KFWeap_Ice_FreezeThrower
|
|
|
|
//=============================================================================
|
|
|
|
// The cryogenic freeze gun
|
|
|
|
//=============================================================================
|
|
|
|
// Killing Floor 2
|
|
|
|
// Copyright (C) 2016 Tripwire Interactive LLC
|
|
|
|
// - Matt "Squirrlz" Farber
|
|
|
|
//=============================================================================
|
|
|
|
class KFWeap_Ice_FreezeThrower extends KFWeap_FlameBase;
|
|
|
|
|
|
|
|
/** Shoot animation to play when shooting secondary fire */
|
|
|
|
var(Animations) const editconst name FireHeavyAnim;
|
|
|
|
|
|
|
|
/** Shoot animation to play when shooting secondary fire last shot */
|
|
|
|
var(Animations) const editconst name FireLastHeavyAnim;
|
|
|
|
|
|
|
|
/** Shoot animation to play when shooting secondary fire last shot when aiming */
|
|
|
|
var(Animations) const editconst name FireLastHeavySightedAnim;
|
|
|
|
|
|
|
|
/** Alt-fire explosion template */
|
|
|
|
var() GameExplosion ExplosionTemplate;
|
|
|
|
|
|
|
|
/** How much recoil the altfire should do */
|
|
|
|
var protected const float AltFireRecoilScale;
|
|
|
|
|
|
|
|
/** Handle one-hand fire anims */
|
|
|
|
simulated function name GetWeaponFireAnim(byte FireModeNum)
|
|
|
|
{
|
|
|
|
local bool bPlayFireLast;
|
|
|
|
|
|
|
|
bPlayFireLast = ShouldPlayFireLast(FireModeNum);
|
|
|
|
|
|
|
|
if ( bUsingSights )
|
|
|
|
{
|
|
|
|
if( bPlayFireLast )
|
|
|
|
{
|
|
|
|
if ( FireModeNum == ALTFIRE_FIREMODE )
|
|
|
|
{
|
|
|
|
return FireLastHeavySightedAnim;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
return FireLastSightedAnim;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
return FireSightedAnims[FireModeNum];
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if( bPlayFireLast )
|
|
|
|
{
|
|
|
|
if ( FireModeNum == ALTFIRE_FIREMODE )
|
|
|
|
{
|
|
|
|
return FireLastHeavyAnim;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
return FireLastAnim;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if ( FireModeNum == ALTFIRE_FIREMODE )
|
|
|
|
{
|
|
|
|
return FireHeavyAnim;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
return FireAnim;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Instead of a toggle, just immediately fire alternate fire.
|
|
|
|
*/
|
|
|
|
simulated function AltFireMode()
|
|
|
|
{
|
|
|
|
// LocalPlayer Only
|
|
|
|
if ( !Instigator.IsLocallyControlled() )
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
StartFire( ALTFIRE_FIREMODE );
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Disable normal bullet spread */
|
|
|
|
simulated function rotator AddSpread( rotator BaseAim )
|
|
|
|
{
|
|
|
|
return BaseAim; // do nothing
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Disable auto-reload for alt-fire */
|
|
|
|
simulated function bool ShouldAutoReload(byte FireModeNum)
|
|
|
|
{
|
|
|
|
local bool bRequestReload;
|
|
|
|
|
|
|
|
bRequestReload = Super.ShouldAutoReload(FireModeNum);
|
|
|
|
|
|
|
|
// Must be completely empty for auto-reload or auto-switch
|
|
|
|
if ( FireModeNum == ALTFIRE_FIREMODE && AmmoCount[0] > 0 )
|
|
|
|
{
|
|
|
|
bPendingAutoSwitchOnDryFire = false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return bRequestReload;
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Notification that a weapon attack has has happened */
|
|
|
|
function HandleWeaponShotTaken( byte FireMode )
|
|
|
|
{
|
|
|
|
if( KFPlayer != none && FireMode == ALTFIRE_FIREMODE )
|
|
|
|
{
|
|
|
|
KFPlayer.AddShotsFired( GetNumProjectilesToFire(FireMode) );
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
super.HandleWeaponShotTaken( FireMode );
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Increase recoil for altfire */
|
|
|
|
simulated function ModifyRecoil( out float CurrentRecoilModifier )
|
|
|
|
{
|
|
|
|
if( CurrentFireMode == ALTFIRE_FIREMODE )
|
|
|
|
{
|
|
|
|
CurrentRecoilModifier *= AltFireRecoilScale;
|
|
|
|
}
|
|
|
|
|
|
|
|
super.ModifyRecoil( CurrentRecoilModifier );
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Can be overridden on a per-weapon or per-state basis */
|
|
|
|
simulated function bool IsHeavyWeapon()
|
|
|
|
{
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
/** No pilot light on freeze thrower */
|
|
|
|
simulated function SetPilotDynamicLightEnabled( bool bLightEnabled );
|
|
|
|
|
|
|
|
static simulated event EFilterTypeUI GetTraderFilter()
|
|
|
|
{
|
2023-09-21 19:31:11 +00:00
|
|
|
return FT_Flame;
|
2020-12-13 15:01:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
defaultproperties
|
|
|
|
{
|
|
|
|
FlameSprayArchetype=SprayActor_Flame'WEP_CryoGun_ARCH.Wep_CryoGun_IceSpray'
|
|
|
|
|
|
|
|
// FX
|
|
|
|
PSC_PilotLight=none
|
|
|
|
PilotLights.Empty
|
|
|
|
|
|
|
|
// Shooting Animations
|
|
|
|
bHasFireLastAnims=true
|
|
|
|
FireLastHeavySightedAnim=Shoot_Heavy_Iron_Last
|
|
|
|
FireHeavyAnim=Shoot_Heavy
|
|
|
|
FireLastHeavyAnim=Shoot_Heavy_Last
|
|
|
|
|
|
|
|
// Shooting Animations
|
|
|
|
FireSightedAnims[0]=Shoot
|
|
|
|
FireSightedAnims[1]=Shoot_Heavy_Iron
|
|
|
|
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="CryoGun"
|
|
|
|
FirstPersonMeshName="WEP_1P_CryoGun_MESH.Wep_1stP_CryoGun_Rig"
|
|
|
|
FirstPersonAnimSetNames(0)="wep_1p_CryoGun_anim.Wep_1stP_CryoGun_anim"
|
|
|
|
PickupMeshName="WEP_3P_CryoGun_MESH.Wep_CryoGun_Pickup"
|
|
|
|
AttachmentArchetypeName="WEP_CryoGun_ARCH.Wep_CryoGun_3P"
|
|
|
|
MuzzleFlashTemplateName="WEP_CryoGun_ARCH.Wep_CryoGun_MuzzleFlash"
|
|
|
|
|
|
|
|
// Zooming/Position
|
|
|
|
PlayerViewOffset=(X=6.0,Y=15,Z=-5)
|
|
|
|
IronSightPosition=(X=20,Y=8,Z=-3) //z=0
|
|
|
|
QuickWeaponDownRotation=(Pitch=-8192,Yaw=0,Roll=0)
|
|
|
|
|
|
|
|
//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.75
|
|
|
|
bCanBeReloaded=true
|
|
|
|
bReloadFromMagazine=true
|
|
|
|
|
|
|
|
// Recoil
|
|
|
|
maxRecoilPitch=150
|
|
|
|
minRecoilPitch=115
|
2021-03-02 11:56:51 +00:00
|
|
|
maxRecoilYaw=80 //115
|
|
|
|
minRecoilYaw=-80 //-115
|
2020-12-13 15:01:13 +00:00
|
|
|
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
|
2021-03-02 11:56:51 +00:00
|
|
|
AltFireRecoilScale=6.0f //4.0f
|
2020-12-13 15:01:13 +00:00
|
|
|
|
|
|
|
// Inventory
|
|
|
|
InventorySize=7
|
|
|
|
GroupPriority=75
|
|
|
|
WeaponSelectTexture=Texture2D'wep_ui_cryogun_tex.UI_WeaponSelect_Cryogun'
|
|
|
|
|
|
|
|
// DEFAULT_FIREMODE
|
|
|
|
FireModeIconPaths(DEFAULT_FIREMODE)=Texture2D'wep_ui_cryogun_tex.UI_FireModeSelect_Cryogun'
|
|
|
|
FiringStatesArray(DEFAULT_FIREMODE)=SprayingFire
|
|
|
|
WeaponFireTypes(DEFAULT_FIREMODE)=EWFT_Custom
|
2021-03-02 11:56:51 +00:00
|
|
|
FireInterval(DEFAULT_FIREMODE)=+0.1 //+0.07 // 850 RPM
|
2020-12-13 15:01:13 +00:00
|
|
|
FireOffset=(X=30,Y=4.5,Z=-5)
|
|
|
|
//MinFireDuration=0.25
|
2021-03-02 11:56:51 +00:00
|
|
|
MinAmmoConsumed=3 //4
|
2020-12-13 15:01:13 +00:00
|
|
|
|
|
|
|
// ALT_FIREMODE
|
|
|
|
FireModeIconPaths(ALTFIRE_FIREMODE)=Texture2D'wep_ui_cryogun_tex.UI_FireModeSelect_2nd_Cryogun'
|
|
|
|
FiringStatesArray(ALTFIRE_FIREMODE)=WeaponSingleFiring
|
|
|
|
WeaponFireTypes(ALTFIRE_FIREMODE)=EWFT_Projectile
|
|
|
|
WeaponProjectiles(ALTFIRE_FIREMODE)=class'KFProj_FreezeThrower_IceShards'
|
2021-03-02 11:56:51 +00:00
|
|
|
InstantHitDamage(ALTFIRE_FIREMODE)=35.0 //20.0
|
2020-12-13 15:01:13 +00:00
|
|
|
InstantHitDamageTypes(ALTFIRE_FIREMODE)=class'KFDT_Freeze_FreezeThrower_IceShards'
|
|
|
|
FireInterval(ALTFIRE_FIREMODE)=0.6f
|
|
|
|
PenetrationPower(ALTFIRE_FIREMODE)=4.0
|
|
|
|
AmmoCost(ALTFIRE_FIREMODE)=10
|
2021-03-02 11:56:51 +00:00
|
|
|
NumPellets(ALTFIRE_FIREMODE)=8 //12
|
|
|
|
Spread(ALTFIRE_FIREMODE)=0.12f //0.15f
|
2020-12-13 15:01:13 +00:00
|
|
|
|
|
|
|
// BASH_FIREMODE
|
|
|
|
InstantHitDamageTypes(BASH_FIREMODE)=class'KFDT_Bludgeon_Freezethrower'
|
|
|
|
InstantHitDamage(BASH_FIREMODE)=28
|
|
|
|
|
|
|
|
// Fire Effects
|
|
|
|
WeaponFireSnd(DEFAULT_FIREMODE)=(DefaultCue=AkEvent'WW_WEP_Cryo_Gun.Play_Cryo_Gun_3P_Start', FirstPersonCue=AkEvent'WW_WEP_Cryo_Gun.Play_Cryo_Gun_1P_Start')
|
|
|
|
WeaponFireLoopEndSnd(DEFAULT_FIREMODE)=(DefaultCue=AkEvent'WW_WEP_Cryo_Gun.Play_Cryo_Gun_3P_Stop', FirstPersonCue=AkEvent'WW_WEP_Cryo_Gun.Play_Cryo_Gun_1P_Stop')
|
|
|
|
WeaponFireSnd(ALTFIRE_FIREMODE)=(DefaultCue=AkEvent'WW_WEP_Cryo_Gun.Play_Cryo_Gun_3P_Alt_Fire', FirstPersonCue=AkEvent'WW_WEP_Cryo_Gun.Play_Cryo_Gun_1P_Alt_Fire')
|
|
|
|
|
|
|
|
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
|
|
|
|
bLoopingFireAnim(ALTFIRE_FIREMODE)=false
|
|
|
|
bLoopingFireSnd(ALTFIRE_FIREMODE)=false
|
|
|
|
|
|
|
|
// Attachments
|
|
|
|
bHasIronSights=true
|
|
|
|
bHasFlashlight=false
|
|
|
|
|
|
|
|
// AI Warning
|
|
|
|
bWarnAIWhenFiring=true
|
|
|
|
|
|
|
|
AssociatedPerkClasses(0)=class'KFPerk_Survivalist'
|
|
|
|
|
|
|
|
WeaponFireWaveForm=ForceFeedbackWaveform'FX_ForceFeedback_ARCH.Gunfire.Weak_Recoil'
|
|
|
|
|
|
|
|
// Weapon Upgrade stat boosts
|
|
|
|
//WeaponUpgrades[1]=(IncrementDamage=1.4f,IncrementWeight=1)
|
|
|
|
//WeaponUpgrades[2]=(IncrementDamage=1.8f,IncrementWeight=2)
|
|
|
|
|
|
|
|
WeaponUpgrades[1]=(Stats=((Stat=EWUS_Damage0, Scale=1.4f), (Stat=EWUS_Damage1, Scale=1.15f), (Stat=EWUS_Weight, Add=1)))
|
|
|
|
WeaponUpgrades[2]=(Stats=((Stat=EWUS_Damage0, Scale=1.8f), (Stat=EWUS_Damage1, Scale=1.3f), (Stat=EWUS_Weight, Add=2)))
|
|
|
|
}
|