229 lines
6.9 KiB
Ucode
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)))
|
||
|
}
|
||
|
|