rott/kf_sources/KFMod/Classes/KFVetSharpshooter.uc
2026-07-14 20:27:09 +07:00

179 lines
8.0 KiB
Ucode

class KFVetSharpshooter extends KFVeterancyTypes
abstract;
// Removed all General Damage additions for the Sharpshooter in Balance Round 6 in favor of a headshot focus
//static function int AddDamage(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn Instigator, int InDamage, class<DamageType> DmgType)
static function float GetHeadShotDamMulti(KFPlayerReplicationInfo KFPRI, KFPawn P, class<DamageType> DmgType)
{
local float ret;
// Removed extra SS Crossbow headshot damage in Round 1(added back in Round 2) and Removed Single/Dualies Damage for Hell on Earth in Round 6
// Added Dual Deagles back in for Balance Round 7
if ( DmgType == class'DamTypeCrossbow' || DmgType == class'DamTypeCrossbowHeadShot' || DmgType == class'DamTypeWinchester' ||
DmgType == class'DamTypeDeagle' || DmgType == class'DamTypeDualDeagle' || DmgType == class'DamTypeM14EBR' ||
DmgType == class'DamTypeMagnum44Pistol' || DmgType == class'DamTypeDual44Magnum'
|| DmgType == class'DamTypeMK23Pistol' || DmgType == class'DamTypeDualMK23Pistol'
|| DmgType == class'DamTypeM99SniperRifle' || DmgType == class'DamTypeM99HeadShot' ||
DmgType == class'DamTypeSPSniper' ||
(DmgType == class'DamTypeDualies' && KFPRI.Level.Game.GameDifficulty < 7.0) )
{
if ( KFPRI.ClientVeteranSkillLevel <= 3 )
{
ret = 1.05 + (0.05 * float(KFPRI.ClientVeteranSkillLevel));
}
else if ( KFPRI.ClientVeteranSkillLevel == 4 )
{
ret = 1.30;
}
else if ( KFPRI.ClientVeteranSkillLevel == 5 )
{
ret = 1.50;
}
else
{
ret = 1.60; // 60% increase in Crossbow/Winchester/Handcannon damage
}
}
// Reduced extra headshot damage for Single/Dualies in Hell on Earth difficulty(added in Balance Round 6)
else if ( DmgType == class'DamTypeDualies' && KFPRI.Level.Game.GameDifficulty >= 7.0 )
{
return (1.0 + (0.08 * float(Min(KFPRI.ClientVeteranSkillLevel, 5)))); // 40% increase in Headshot Damage
}
else
{
ret = 1.0; // Fix for oversight in Balance Round 6(which is the reason for the Round 6 second attempt patch)
}
if ( KFPRI.ClientVeteranSkillLevel == 0 )
{
return ret * 1.05;
}
return ret * (1.0 + (0.10 * float(Min(KFPRI.ClientVeteranSkillLevel, 5)))); // 50% increase in Headshot Damage
}
static function float ModifyRecoilSpread(KFPlayerReplicationInfo KFPRI, WeaponFire Other, out float Recoil)
{
if ( Crossbow(Other.Weapon) != none || Winchester(Other.Weapon) != none
|| Single(Other.Weapon) != none || Dualies(Other.Weapon) != none
|| Deagle(Other.Weapon) != none || DualDeagle(Other.Weapon) != none
|| M14EBRBattleRifle(Other.Weapon) != none || M99SniperRifle(Other.Weapon) != none
|| SPSniperRifle(Other.Weapon) != none )
{
if ( KFPRI.ClientVeteranSkillLevel == 1)
{
Recoil = 0.75;
}
else if ( KFPRI.ClientVeteranSkillLevel == 2 )
{
Recoil = 0.50;
}
else
{
Recoil = 0.25; // 75% recoil reduction with Crossbow/Winchester/Handcannon
}
return Recoil;
}
Recoil = 1.0;
Return Recoil;
}
// Modify fire speed
static function float GetFireSpeedMod(KFPlayerReplicationInfo KFPRI, Weapon Other)
{
if ( Winchester(Other) != none || Crossbow(Other) != none || M99SniperRifle(Other) != none
|| SPSniperRifle(Other) != none )
{
if ( KFPRI.ClientVeteranSkillLevel == 0 )
{
return 1.0;
}
return 1.0 + (0.10 * float(KFPRI.ClientVeteranSkillLevel)); // Up to 60% faster fire rate with Winchester
}
return 1.0;
}
static function float GetReloadSpeedModifier(KFPlayerReplicationInfo KFPRI, KFWeapon Other)
{
if ( Crossbow(Other) != none || Winchester(Other) != none
|| Single(Other) != none || Dualies(Other) != none
|| Deagle(Other) != none || DualDeagle(Other) != none
|| MK23Pistol(Other) != none || DualMK23Pistol(Other) != none
|| M14EBRBattleRifle(Other) != none || Magnum44Pistol(Other) != none
|| Dual44Magnum(Other) != none || SPSniperRifle(Other) != none )
{
if ( KFPRI.ClientVeteranSkillLevel == 0 )
{
return 1.0;
}
return 1.0 + (0.10 * float(KFPRI.ClientVeteranSkillLevel)); // Up to 60% faster reload with Crossbow/Winchester/Handcannon
}
return 1.0;
}
// Change the cost of particular items
static function float GetCostScaling(KFPlayerReplicationInfo KFPRI, class<Pickup> Item)
{
if ( Item == class'DeaglePickup' || Item == class'DualDeaglePickup' ||
Item == class'MK23Pickup' || Item == class'DualMK23Pickup' ||
Item == class'Magnum44Pickup' || Item == class'Dual44MagnumPickup'
|| Item == class'M14EBRPickup' || Item == class'M99Pickup'
|| Item == class'SPSniperPickup' || Item == class'GoldenDeaglePickup'
|| Item == class'GoldenDualDeaglePickup' )
{
return 0.9 - (0.10 * float(KFPRI.ClientVeteranSkillLevel)); // Up to 70% discount on Handcannon/Dual Handcannons/EBR/44 Magnum(s)
}
return 1.0;
}
static function float GetAmmoCostScaling(KFPlayerReplicationInfo KFPRI, class<Pickup> Item)
{
if ( Item == class'CrossbowPickup' )
{
return 1.0 - (0.07 * float(KFPRI.ClientVeteranSkillLevel)); // Up to 42% discount on Crossbow Bolts(Added in Balance Round 4 at 30%, increased to 42% in Balance Round 7)
}
return 1.0;
}
// Give Extra Items as default
static function AddDefaultInventory(KFPlayerReplicationInfo KFPRI, Pawn P)
{
// If Level 5, give them a Lever Action Rifle
if ( KFPRI.ClientVeteranSkillLevel == 5 )
{
KFHumanPawn(P).CreateInventoryVeterancy("KFMod.Winchester", default.StartingWeaponSellPriceLevel5);
}
// If Level 6, give them a Crossbow
if ( KFPRI.ClientVeteranSkillLevel == 6 )
{
KFHumanPawn(P).CreateInventoryVeterancy("KFMod.Crossbow", default.StartingWeaponSellPriceLevel6);
}
}
defaultproperties
{
PerkIndex=2
OnHUDIcon=Texture'KillingFloorHUD.Perks.Perk_SharpShooter'
OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_SharpShooter_Gold'
VeterancyName="Sharpshooter"
Requirements[0]="Get %x headshot kills with Pistols, Rifle, Crossbow, M14, M99, or S.P. Musket"
LevelEffects[0]="5% more damage with Pistols, Rifle, Crossbow, M14, and M99|5% extra Headshot damage with all weapons|10% discount on Handcannon/M14/M99"
LevelEffects[1]="10% more damage with Pistols, Rifle, Crossbow, M14, and M99|25% less recoil with Pistols, Rifle, Crossbow, M14, M99, and S.P. Musket|10% faster reload with Pistols, Rifle, Crossbow, M14, M99, and S.P. Musket|10% extra headshot damage|20% discount on Handcannon/44 Magnum/M14/M99/S.P. Musket"
LevelEffects[2]="15% more damage with Pistols, Rifle, Crossbow, M14, and M99|50% less recoil with Pistols, Rifle, Crossbow, M14, M99, and S.P. Musket|20% faster reload with Pistols, Rifle, Crossbow, M14, M99, and S.P. Musket|20% extra headshot damage|30% discount on Handcannon/44 Magnum/M14/M99/S.P. Musket"
LevelEffects[3]="20% more damage with Pistols, Rifle, Crossbow, M14, and M99|75% less recoil with Pistols, Rifle, Crossbow, M14, M99, and S.P. Musket|30% faster reload with Pistols, Rifle, Crossbow, M14, M99, and S.P. Musket|30% extra headshot damage|40% discount on Handcannon/44 Magnum/M14/M99/S.P. Musket"
LevelEffects[4]="30% more damage with Pistols, Rifle, Crossbow, M14, and M99|75% less recoil with Pistols, Rifle, Crossbow, M14, M99, and S.P. Musket|40% faster reload with Pistols, Rifle, Crossbow, M14, M99, and S.P. Musket|40% extra headshot damage|50% discount on Handcannon/44 Magnum/M14/M99/S.P. Musket"
LevelEffects[5]="50% more damage with Pistols, Rifle, Crossbow, M14, and M99|75% less recoil with Pistols, Rifle, Crossbow, M14, M99, and S.P. Musket|50% faster reload with Pistols, Rifle, Crossbow, M14, M99, and S.P. Musket|50% extra headshot damage|60% discount on Handcannon/44 Magnum/M14/M99/S.P. Musket|Spawn with a Lever Action Rifle"
LevelEffects[6]="60% more damage with Pistols, Rifle, Crossbow, M14, and M99|75% less recoil with Pistols, Rifle, Crossbow, M14, M99, and S.P. Musket|60% faster reload with Pistols, Rifle, Crossbow, M14, M99, and S.P. Musket|50% extra headshot damage|70% discount on Handcannon/44 Magnum/M14/M99/S.P. Musket|Spawn with a Crossbow"
}