1
0
KF2-Dev-Scripts/KFGameContent/Classes/KFWeap_Pistol_Bladed.uc
2021-09-03 00:46:08 +03:00

229 lines
6.9 KiB
Ucode

//=============================================================================
// KFWeap_Pistol_Bladed
//=============================================================================
//=============================================================================
// Killing Floor 2
// Copyright (C) 2021 Tripwire Interactive LLC
//=============================================================================
class KFWeap_Pistol_Bladed extends KFWeap_MeleeBase;
/** Returns trader filter index based on weapon type */
static simulated event EFilterTypeUI GetTraderFilter()
{
return FT_Pistol;
}
/** Override melee SetIronSights (which sends to heavy attack) so that this weapon ironsights normally*/
simulated function SetIronSights(bool bNewIronSights)
{
super(KFWeapon).SetIronSights(bNewIronSights);
}
/** Override melee ShouldOwnerWalk which doesn't account for walking when in ironsights */
simulated function bool ShouldOwnerWalk()
{
return super(KFWeapon).ShouldOwnerWalk();
}
/** Override to drop the player out of ironsights first */
simulated function AltFireMode()
{
if (!Instigator.IsLocallyControlled())
{
return;
}
// break out of ironsights when starting to block
if (bUsingSights)
{
SetIronSights(false);
}
StartFire(BLOCK_FIREMODE);
}
simulated state MeleeBlocking
{
simulated function bool AllowIronSights() { return false; }
}
/** Called during reload state */
simulated function bool CanOverrideMagReload(byte FireModeNum)
{
if (FireModeNum == BLOCK_FIREMODE)
{
return true;
}
return super.CanOverrideMagReload(FireModeNum);
}
simulated function StartFire(byte FireModeNum)
{
if( FireModeNum == DEFAULT_FIREMODE )
{
if ( ShouldAutoReload(FireModeNum) )
{
BeginFire(RELOAD_FIREMODE);
return;
}
}
super.StartFire(FireModeNum);
}
/*********************************************************************************************
* @name Firing / Projectile
********************************************************************************************* */
/**
* See Pawn.ProcessInstantHit
* @param DamageReduction: Custom KF parameter to handle penetration damage reduction
*/
simulated function ProcessInstantHitEx(byte FiringMode, ImpactInfo Impact, optional int NumHits, optional out float out_PenetrationVal, optional int ImpactNum )
{
local KFPerk InstigatorPerk;
InstigatorPerk = GetPerk();
if( InstigatorPerk != none )
{
InstigatorPerk.UpdatePerkHeadShots( Impact, InstantHitDamageTypes[FiringMode], ImpactNum );
}
super.ProcessInstantHitEx( FiringMode, Impact, NumHits, out_PenetrationVal, ImpactNum );
}
defaultproperties
{
// MeleeBase
bMeleeWeapon=false
// FOV
MeshFOV=96
MeshIronSightFOV=77
PlayerIronSightFOV=77
// Depth of field
DOF_FG_FocalRadius=40
DOF_FG_MaxNearBlurSize=3.5
// Zooming/Position
PlayerViewOffset=(X=-15,Y=12,Z=-6)
IronSightPosition=(X=0,Y=0,Z=1.0) //(X=-3,Y=-0.38,Z=-0.2)
// Content
PackageKey="BladedPistol"
FirstPersonMeshName="WEP_1P_BladedPistol_MESH.WEP_1stP_BladedPistol_Rig"
FirstPersonAnimSetNames(0)="WEP_1P_BladedPistol_ANIM.WEP_1stP_BladedPistol_Anim"
PickupMeshName="WEP_3P_BladedPistol_MESH.Wep_BladedPistol_Pickup"
AttachmentArchetypeName="WEP_BladedPistol_ARCH.Wep_BladedPistol_3P"
MuzzleFlashTemplateName="WEP_BladedPistol_ARCH.Wep_BladedPistol_MuzzleFlash"
// Ammo
MagazineCapacity[0]=6
SpareAmmoCapacity[0]=72 //96
InitialSpareMags[0]=2
AmmoPickupScale[0]=1.0 //2.0
bCanBeReloaded=true
bReloadFromMagazine=true
// Recoil
maxRecoilPitch=330 //400 //250
minRecoilPitch=300 //350 //200
maxRecoilYaw=90 //120 //100
minRecoilYaw=-90 //-120 //-100
RecoilRate=0.07
RecoilMaxYawLimit=500
RecoilMinYawLimit=65035
RecoilMaxPitchLimit=900
RecoilMinPitchLimit=65035
RecoilISMaxYawLimit=50
RecoilISMinYawLimit=65485
RecoilISMaxPitchLimit=250
RecoilISMinPitchLimit=65485
// DEFAULT_FIREMODE
FiringStatesArray(DEFAULT_FIREMODE)=WeaponSingleFiring
WeaponFireTypes(DEFAULT_FIREMODE)=EWFT_Projectile
WeaponProjectiles(DEFAULT_FIREMODE)=class'KFProj_Blade_BladedPistol'
PenetrationPower(DEFAULT_FIREMODE)=3.0
FireInterval(DEFAULT_FIREMODE)=+0.25 //+0.3
InstantHitDamage(DEFAULT_FIREMODE)=115.0
InstantHitDamageTypes(DEFAULT_FIREMODE)=class'KFDT_Slashing_BladedPistol'
Spread(DEFAULT_FIREMODE)=0.005 //0.015
AmmoCost(DEFAULT_FIREMODE)=1
FireOffset=(X=30,Y=5,Z=-4)
FireModeIconPaths(DEFAULT_FIREMODE)=Texture2D'ui_firemodes_tex.UI_FireModeSelect_Sawblade'
// ALT_FIREMODE
// FiringStatesArray(ALTFIRE_FIREMODE)=WeaponSingleFiring
// WeaponFireTypes(ALTFIRE_FIREMODE)=EWFT_None
// BASH_FIREMODE
InstantHitDamageTypes(BASH_FIREMODE)=class'KFDT_Bludgeon_BladedPistol'
InstantHitDamage(BASH_FIREMODE)=75 //26
FiringStatesArray(BASH_FIREMODE)=MeleeAttackBasic
WeaponFireTypes(BASH_FIREMODE)=EWFT_Custom
InstantHitMomentum(BASH_FIREMODE)=10000.f
// Fire Effects
WeaponFireSnd(DEFAULT_FIREMODE)=(DefaultCue=AkEvent'WW_WEP_BladedPistol.Play_WEP_BladedPistol_Fire_3P', FirstPersonCue=AkEvent'WW_WEP_BladedPistol.Play_WEP_BladedPistol_Fire_1P')
WeaponDryFireSnd(DEFAULT_FIREMODE)=AkEvent'WW_WEP_BladedPistol.Play_WEP_BladedPistol_Handling_DryFire'
// RELOAD_FIREMODE
FiringStatesArray(RELOAD_FIREMODE)="Reloading"
WeaponFireTypes(RELOAD_FIREMODE)=EWFT_InstantHit
// Attachments
bHasIronSights=true
bHasFlashlight=true
AssociatedPerkClasses(0)=class'KFPerk_Gunslinger'
AssociatedPerkClasses(1)=class'KFPerk_Berserker'
// Inventory
InventoryGroup=IG_Secondary
InventorySize=3
GroupPriority=25
bCanThrow=true
bDropOnDeath=true
WeaponSelectTexture=Texture2D'WEP_UI_BladedPistol_TEX.UI_WeaponSelect_BladedPistol'
bIsBackupWeapon=false
DualClass=class'KFWeap_Pistol_DualBladed'
// Custom animations
FireSightedAnims=(Shoot_Iron)
IdleFidgetAnims=(Guncheck_v1, Guncheck_v2, Guncheck_v3)
bHasFireLastAnims=true
BonesToLockOnEmpty=(RW_FrontPivot)
// default MIC param names
BlockEffectsSocketName=BlockEffect
// Defensive
BlockDamageMitigation=0.60f
ParryDamageMitigationPercent=0.5
ParryStrength=4
BlockHitAnimCooldownTime=0.5f
BlockTypes.Add((DmgType=class'KFDT_Bludgeon'))
BlockTypes.Add((DmgType=class'KFDT_Slashing'))
// Block Sounds
BlockSound=AkEvent'WW_WEP_Bullet_Impacts.Play_Block_MEL_Crovel'
ParrySound=AkEvent'WW_WEP_Bullet_Impacts.Play_Parry_Metal'
BlockParticleSystem=ParticleSystem'FX_Impacts_EMIT.FX_Block_melee_01'
ParryParticleSystem=ParticleSystem'FX_Impacts_EMIT.FX_Parry_melee_01'
MeleeBlockHitAnims=(Block_Hit_V1, Block_Hit_V2, Block_Hit_V3);
//Upgrades
WeaponUpgrades[1]=(Stats=((Stat=EWUS_Damage0, Scale=1.15f), (Stat=EWUS_Damage1, Scale=1.15f), (Stat=EWUS_Damage2, Scale=1.15f), (Stat=EWUS_Weight, Add=1)))
WeaponUpgrades[2]=(Stats=((Stat=EWUS_Damage0, Scale=1.3f), (Stat=EWUS_Damage1, Scale=1.3f), (Stat=EWUS_Damage2, Scale=1.3f), (Stat=EWUS_Weight, Add=2)))
}