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

172 lines
6.0 KiB
Ucode
Raw Normal View History

2020-12-13 15:01:13 +00:00
//=============================================================================
// KFWeap_Bow_Crossbow
//=============================================================================
// A crossbow
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
//=============================================================================
class KFWeap_Bow_Crossbow extends KFWeap_ScopedBase;
/** Return true if this weapon should play the fire last animation for this shoot animation */
simulated function bool ShouldPlayFireLast(byte FireModeNum)
{
if( SpareAmmoCount[GetAmmoType(FireModeNum)] == 0 )
{
return true;
}
return false;
}
/** Returns animation to play based on reload type and status */
simulated function name GetReloadAnimName( bool bTacticalReload )
{
if ( AmmoCount[0] > 0 )
{
// Disable half-reloads for now. This can happen if server gets out
// of sync, but choosing the wrong animation will just make it worse!
`warn("Grenade launcher reloading with non-empty mag");
}
return bTacticalReload ? ReloadEmptyMagEliteAnim : ReloadEmptyMagAnim;
}
/** Returns trader filter index based on weapon type (copied from riflebase) */
static simulated event EFilterTypeUI GetTraderFilter()
{
return FT_Projectile;
}
2021-03-02 11:56:51 +00:00
simulated function float GetUpgradedAfflictionPower(EAfflictionType AfflictionType, float InPower, optional int FireMode = INDEX_NONE, optional int UpgradeIndex = INDEX_NONE)
{
local class<KFDT_Piercing_Crossbow> DT;
local KFPerk Perk;
Perk = GetPerk();
if(AfflictionType == AF_Stun && Perk != none && Perk.bWasLastHitAHeadshot)
{
DT = class<KFDT_Piercing_Crossbow>(InstantHitDamageTypes[DEFAULT_FIREMODE]);
if (DT != none)
{
return super.GetUpgradedAfflictionPower(AfflictionType, DT.default.HeadStunPower, FireMode, UpgradeIndex);
}
}
return super.GetUpgradedAfflictionPower(AfflictionType, InPower, FireMode, UpgradeIndex);
}
2020-12-13 15:01:13 +00:00
defaultproperties
{
// Inventory
InventorySize=6
GroupPriority=50
WeaponSelectTexture=Texture2D'WEP_UI_Crossbow_TEX.UI_WeaponSelect_Crossbow'
AssociatedPerkClasses(0)=class'KFPerk_Sharpshooter'
// FOV / Position
MeshFOV=70
MeshIronSightFOV=52
PlayerIronSightFOV=70
PlayerViewOffset=(X=1,Y=8,Z=-5)
IronSightPosition=(X=-13,Y=0,Z=0)
// AI warning system
bWarnAIWhenAiming=true
MaxAIWarningDistSQ=4000000
AimWarningDelay=(X=0.4f, Y=0.8f)
AimWarningCooldown=0.0f
// 2D scene capture
Begin Object Name=SceneCapture2DComponent0
TextureTarget=TextureRenderTarget2D'Wep_Mat_Lib.WEP_ScopeLense_Target'
FieldOfView=18.5 // "2.0X" = 37(our real world FOV determinant)/2.0
End Object
ScopedSensitivityMod=12.0
ScopeLenseMICTemplate=MaterialInstanceConstant'WEP_1P_Crossbow_MAT.WEP_1P_Crossbow_Scope_MAT'
// Depth of field
DOF_BlendInSpeed=3.0
DOF_FG_FocalRadius=0.0
DOF_FG_MaxNearBlurSize=3.5
// Content
PackageKey="Crossbow"
FirstPersonMeshName="WEP_1P_Crossbow_MESH.Wep_1stP_Crossbow_Rig"
FirstPersonAnimSetNames(0)="WEP_1P_Crossbow_ANIM.Wep_1stP_Crossbow_Anim"
PickupMeshName="WEP_3P_Crossbow_MESH.Wep_Crossbow_Pickup"
AttachmentArchetypeName="WEP_Crossbow_ARCH.Wep_Crossbow_3P"
MuzzleFlashTemplateName="WEP_Crossbow_ARCH.Wep_Crossbow_MuzzleFlash"
// Ammo
MagazineCapacity[0]=1
SpareAmmoCapacity[0]=34
InitialSpareMags[0]=13
AmmoPickupScale[0]=3.0 // 3 arrows
bCanBeReloaded=true
bReloadFromMagazine=true // reloading from mag is one step, while NOT reloading from mag is multi-step (open bolt, load ammo, close bolt) and not applicable for bow
// Recoil
maxRecoilPitch=200
minRecoilPitch=150
maxRecoilYaw=100
minRecoilYaw=-100
RecoilRate=0.06
RecoilMaxYawLimit=500
RecoilMinYawLimit=65035
RecoilMaxPitchLimit=900
RecoilMinPitchLimit=64785
RecoilISMaxYawLimit=50
RecoilISMinYawLimit=65485
RecoilISMaxPitchLimit=375
RecoilISMinPitchLimit=65460
// DEFAULT_FIREMODE
FireModeIconPaths(DEFAULT_FIREMODE)=Texture2D'ui_firemodes_tex.UI_FireModeSelect_BulletArrow'
FiringStatesArray(DEFAULT_FIREMODE)=WeaponSingleFireAndReload
WeaponFireTypes(DEFAULT_FIREMODE)=EWFT_Projectile
WeaponProjectiles(DEFAULT_FIREMODE)=class'KFProj_Bolt_Crossbow'
InstantHitDamage(DEFAULT_FIREMODE)=350.0
InstantHitDamageTypes(DEFAULT_FIREMODE)=class'KFDT_Piercing_Crossbow'
PenetrationPower(DEFAULT_FIREMODE)=4.0
FireInterval(DEFAULT_FIREMODE)=0.3 // For this weapon, this is not the fire rate, but the time when the auto reload anim kicks in
Spread(DEFAULT_FIREMODE)=0.007 //0.007
FireOffset=(X=25,Y=3.0,Z=-4.0)
// ALT_FIREMODE
FiringStatesArray(ALTFIRE_FIREMODE)=WeaponSingleFiring
WeaponFireTypes(ALTFIRE_FIREMODE)=EWFT_None
// Fire Effects
WeaponFireSnd(DEFAULT_FIREMODE)=(DefaultCue=AkEvent'WW_WEP_SA_Crossbow.Play_WEP_SA_Crossbow_Fire_3P', FirstPersonCue=AkEvent'WW_WEP_SA_Crossbow.Play_WEP_SA_Crossbow_Fire_1P')
WeaponDryFireSnd(DEFAULT_FIREMODE)=AkEvent'WW_WEP_SA_Crossbow.Play_WEP_SA_Crossbow_DryFire'
// BASH_FIREMODE
InstantHitDamageTypes(BASH_FIREMODE)=class'KFDT_Bludgeon_Crossbow'
InstantHitDamage(BASH_FIREMODE)=26
// Custom animations
FireSightedAnims=(Shoot_Iron, Shoot_Iron2, Shoot_Iron3)
BonesToLockOnEmpty=(RW_Cable_Parent)
// Attachments
bHasIronSights=true
bHasFlashlight=false
// Just like the launchers, this weapon has mag size of 1 and force reload which
// causes significant ammo sync issues. This fix is far from perfect, but it helps.
bAllowClientAmmoTracking=true
// Weapon Upgrade stat boosts
//WeaponUpgrades[1]=(IncrementDamage=1.2f,IncrementWeight=1)
//WeaponUpgrades[2]=(IncrementDamage=1.4f,IncrementWeight=2)
//WeaponUpgrades[3]=(IncrementDamage=1.6f,IncrementWeight=3)
WeaponUpgrades[1]=(Stats=((Stat=EWUS_Damage0, Scale=1.2f), (Stat=EWUS_Weight, Add=1)))
WeaponUpgrades[2]=(Stats=((Stat=EWUS_Damage0, Scale=1.4f), (Stat=EWUS_Weight, Add=2)))
WeaponUpgrades[3]=(Stats=((Stat=EWUS_Damage0, Scale=1.6f), (Stat=EWUS_Weight, Add=3)))
}