class WPCVetCommando extends SRVeterancyTypes
abstract;
static function int GetPerkProgressInt( ClientPerkRepLink StatOther, out int FinalInt, byte CurLevel, byte ReqNum )
{
switch( CurLevel )
{
case 0:
FinalInt = 1000;
break;
case 1:
FinalInt = 5000;
break;
case 2:
FinalInt = 100000;
break;
case 3:
FinalInt = 500000;
break;
case 4:
FinalInt = 1500000;
break;
case 5:
FinalInt = 3500000;
break;
case 6:
FinalInt = 5500000;
break;
default:
FinalInt = 5500000+GetDoubleScaling(CurLevel,500000);
}
return Min(StatOther.RBullpupDamageStat,FinalInt);
}
// Display enemy health bars
static function SpecialHUDInfo(KFPlayerReplicationInfo KFPRI, Canvas C)
{
local KFMonster KFEnemy;
local HUDKillingFloor HKF;
local float MaxDistance;
if ( KFPRI.ClientVeteranSkillLevel > 0 )
{
HKF = HUDKillingFloor(C.ViewPort.Actor.myHUD);
if ( HKF == none || Pawn(C.ViewPort.Actor.ViewTarget)==none || Pawn(C.ViewPort.Actor.ViewTarget).Health<=0 )
return;
switch ( KFPRI.ClientVeteranSkillLevel )
{
case 1:
MaxDistance = 160; // 20% (160 units)
break;
case 2:
MaxDistance = 320; // 40% (320 units)
break;
case 3:
MaxDistance = 480; // 60% (480 units)
break;
case 4:
MaxDistance = 640; // 80% (640 units)
break;
default:
MaxDistance = 800; // 100% (800 units)
break;
}
foreach C.ViewPort.Actor.VisibleCollidingActors(class'KFMonster',KFEnemy,MaxDistance,C.ViewPort.Actor.CalcViewLocation)
{
if ( KFEnemy.Health > 0 && !KFEnemy.Cloaked() )
HKF.DrawHealthBar(C, KFEnemy, KFEnemy.Health, KFEnemy.HealthMax , 50.0);
}
}
}
static function bool ShowStalkers(KFPlayerReplicationInfo KFPRI)
{
return true;
}
static function float GetStalkerViewDistanceMulti(KFPlayerReplicationInfo KFPRI)
{
switch ( KFPRI.ClientVeteranSkillLevel )
{
case 0:
return 0.0625; // 25%
case 1:
return 0.25; // 50%
case 2:
return 0.36; // 60%
case 3:
return 0.49; // 70%
case 4:
return 0.64; // 80%
}
return 1.0; // 100% of Standard Distance(800 units or 16 meters)
}
static function float GetMagCapacityMod(KFPlayerReplicationInfo KFPRI, KFWeapon Other)
{
if ( (Bullpup(Other) != none || AK47AssaultRifle(Other) != none || SCARMK17AssaultRifle(Other) != none || M4AssaultRifle(Other) != none)
&& KFPRI.ClientVeteranSkillLevel > 0 )
{
if ( KFPRI.ClientVeteranSkillLevel == 1 )
return 1.10;
else if ( KFPRI.ClientVeteranSkillLevel == 2 )
return 1.20;
return 1.25; // 25% increase in assault rifle ammo carry
}
return 1.0;
}
static function float GetAmmoPickupMod(KFPlayerReplicationInfo KFPRI, KFAmmunition Other)
{
if ( (BullpupAmmo(Other) != none || AK47Ammo(Other) != none || SCARMK17Ammo(Other) != none || M4Ammo(Other) != none )
&& KFPRI.ClientVeteranSkillLevel > 0 )
{
if ( KFPRI.ClientVeteranSkillLevel == 1 )
return 1.10;
else if ( KFPRI.ClientVeteranSkillLevel == 2 )
return 1.20;
return 1.25; // 25% increase in assault rifle ammo carry
}
return 1.0;
}
static function float AddExtraAmmoFor(KFPlayerReplicationInfo KFPRI, Class<Ammunition> AmmoType)
{
if ( (AmmoType == class'BullpupAmmo' || AmmoType == class'AK47Ammo' || AmmoType == class'SCARMK17Ammo' || AmmoType == class'M4Ammo')
&& KFPRI.ClientVeteranSkillLevel > 0 )
{
if ( KFPRI.ClientVeteranSkillLevel == 1 )
return 1.10;
else if ( KFPRI.ClientVeteranSkillLevel == 2 )
return 1.20;
return 1.25; // 25% increase in assault rifle ammo carry
}
return 1.0;
}
static function int AddDamage(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, int InDamage, class<DamageType> DmgType)
{
if ( DmgType == class'DamTypeBullpup' || DmgType == class'DamTypeAK47AssaultRifle'
|| DmgType == class'DamTypeSCARMK17AssaultRifle' || DmgType == class'DamTypeM4AssaultRifle' )
{
if ( KFPRI.ClientVeteranSkillLevel == 0 )
return float(InDamage) * 1.05;
return float(InDamage) * (1.00 + (0.10 * float(Min(KFPRI.ClientVeteranSkillLevel, 5)))); // Up to 50% increase in Damage with Bullpup
}
return InDamage;
}
static function float ModifyRecoilSpread(KFPlayerReplicationInfo KFPRI, WeaponFire Other, out float Recoil)
{
if ( Bullpup(Other.Weapon) != none || AK47AssaultRifle(Other.Weapon) != none
|| SCARMK17AssaultRifle(Other.Weapon) != none || M4AssaultRifle(Other.Weapon) != none )
{
if ( KFPRI.ClientVeteranSkillLevel <= 3 )
Recoil = 0.95 - (0.05 * float(KFPRI.ClientVeteranSkillLevel));
else if ( KFPRI.ClientVeteranSkillLevel <= 5 )
Recoil = 0.70;
else if ( KFPRI.ClientVeteranSkillLevel == 6 )
Recoil = 0.60; // Level 6 - 40% recoil reduction
else Recoil = FMax(0.9 - (0.05 * float(KFPRI.ClientVeteranSkillLevel)),0.f);
return Recoil;
}
Recoil = 1.0;
return Recoil;
}
static function float GetReloadSpeedModifier(KFPlayerReplicationInfo KFPRI, KFWeapon Other)
{
return 1.05 + (0.05 * float(KFPRI.ClientVeteranSkillLevel)); // Up to 35% faster reload speed
}
// Set number times Zed Time can be extended
static function int ZedTimeExtensions(KFPlayerReplicationInfo KFPRI)
{
if ( KFPRI.ClientVeteranSkillLevel >= 3 )
return KFPRI.ClientVeteranSkillLevel - 2; // Up to 4 Zed Time Extensions
return 0;
}
// Change the cost of particular items
static function float GetCostScaling(KFPlayerReplicationInfo KFPRI, class<Pickup> Item)
{
if ( Item == class'BullpupPickup' || Item == class'AK47Pickup' || Item == class'SCARMK17Pickup' || Item == class'M4Pickup' )
return FMax(0.9 - (0.10 * float(KFPRI.ClientVeteranSkillLevel)),0.1f); // Up to 70% discount on Assault Rifles
return 1.0;
}
// Give Extra Items as default
static function AddDefaultInventory(KFPlayerReplicationInfo KFPRI, Pawn P)
{
// If Level 5, give them Bullpup
if ( KFPRI.ClientVeteranSkillLevel == 5 )
KFHumanPawn(P).CreateInventoryVeterancy("KFMod.Bullpup", GetCostScaling(KFPRI, class'BullpupPickup'));
// If Level 6, give them an AK47
if ( KFPRI.ClientVeteranSkillLevel >= 6 )
KFHumanPawn(P).CreateInventoryVeterancy("KFMod.AK47AssaultRifle", GetCostScaling(KFPRI, class'AK47Pickup'));
}
static function string GetCustomLevelInfo( byte Level )
{
local string S;
S = Default.CustomLevelInfo;
ReplaceText(S,"%s",GetPercentStr(0.05 * float(Level)+0.05));
ReplaceText(S,"%d",GetPercentStr(0.1+FMin(0.1 * float(Level),0.8f)));
ReplaceText(S,"%z",string(Level-2));
ReplaceText(S,"%r",GetPercentStr(FMin(0.05 * float(Level)+0.1,1.f)));
return S;
}
defaultproperties
{
PerkIndex=3
OnHUDIcon=Texture'KillingFloorHUD.Perks.Perk_Commando'
OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Commando_Gold'
VeterancyName="Commando"
Requirements[0]="Deal %x damage with Bullpup/AK47/SCAR/M4"
SRLevelEffects(0)="5% more damage with Bullpup/AK47/SCAR/M4|5% less recoil with Bullpup/AK47/SCAR/M4|5% faster reload with all weapons|10% discount on Bullpup/AK47/SCAR/M4|Can see cloaked Stalkers from 4 meters"
SRLevelEffects(1)="10% more damage with Bullpup/AK47/SCAR/M4|10% less recoil with Bullpup/AK47/SCAR/M4|10% larger Bullpup/AK47/SCAR/M4 clip|10% faster reload with all weapons|20% discount on Bullpup/AK47/SCAR/M4|Can see cloaked Stalkers from 8m|Can see enemy health from 4m"
SRLevelEffects(2)="20% more damage with Bullpup/AK47/SCAR/M4|15% less recoil with Bullpup/AK47/SCAR/M4|20% larger Bullpup/AK47/SCAR/M4 clip|15% faster reload with all weapons|30% discount on Bullpup/AK47/SCAR/M4|Can see cloaked Stalkers from 10m|Can see enemy health from 7m"
SRLevelEffects(3)="30% more damage with Bullpup/AK47/SCAR/M4|20% less recoil with Bullpup/AK47/SCAR/M4|25% larger Bullpup/AK47/SCAR/M4 clip|20% faster reload with all weapons|40% discount on Bullpup/AK47/SCAR/M4|Can see cloaked Stalkers from 12m|Can see enemy health from 10m|Zed-Time can be extended by killing an enemy while in slow motion"
SRLevelEffects(4)="40% more damage with Bullpup/AK47/SCAR/M4|30% less recoil with Bullpup/AK47/SCAR/M4|25% larger Bullpup/AK47/SCAR/M4 clip|25% faster reload with all weapons|50% discount on Bullpup/AK47/SCAR/M4|Can see cloaked Stalkers from 14m|Can see enemy health from 13m|Up to 2 Zed-Time Extensions"
SRLevelEffects(5)="50% more damage with Bullpup/AK47/SCAR/M4|30% less recoil with Bullpup/AK47/SCAR/M4|25% larger Bullpup/AK47/SCAR/M4 clip|30% faster reload with all weapons|60% discount on Bullpup/AK47/SCAR/M4|Spawn with a Bullpup|Can see cloaked Stalkers from 16m|Can see enemy health from 16m|Up to 3 Zed-Time Extensions"
SRLevelEffects(6)="50% more damage with Bullpup/AK47/SCAR/M4|40% less recoil with Bullpup/AK47/SCAR/M4|25% larger Bullpup/AK47/SCAR/M4 clip|35% faster reload with all weapons|70% discount on Bullpup/AK47/SCAR/M4|Spawn with an AK47|Can see cloaked Stalkers from 16m|Can see enemy health from 16m|Up to 4 Zed-Time Extensions"
CustomLevelInfo="50% more damage with Bullpup/AK47/SCAR/M4|%r less recoil with Bullpup/AK47/SCAR/M4|25% larger Bullpup/AK47/SCAR/M4 clip|%s faster reload with all weapons|%d discount on Bullpup/AK47/SCAR/M4|Spawn with an AK47|Can see cloaked Stalkers from 16m|Can see enemy health from 16m|Up to %z Zed-Time Extensions"
}