class ScrnVetCombatMedic extends ScrnVetFieldMedic abstract; static function int GetStatValueInt(ClientPerkRepLink StatOther, byte ReqNum) { return StatOther.RDamageHealedStat * 50; } static function class GetNadeType(KFPlayerReplicationInfo KFPRI) { return super(ScrnVeterancyTypes).GetNadeType(KFPRI); // no healing nades } static function float GetSyringeChargeRate(KFPlayerReplicationInfo KFPRI) { return 1.00; // no better healing } static function float GetHealPotency(KFPlayerReplicationInfo KFPRI) { return 1.05; // added 5% to bypass IsMedic() check } static function float GetFireSpeedModStatic(KFPlayerReplicationInfo KFPRI, class Other) { if ( class(Other) != none && class(Other).default.Weight <= 3 && class(Other) == none && class(Other) == none ) { return 1.75; } return 1.0; } static function int ZedTimeExtensions(KFPlayerReplicationInfo KFPRI) { return Min(GetClientVeteranSkillLevel(KFPRI), 6); } static function float GetWeaponMovementSpeedBonus(KFPlayerReplicationInfo KFPRI, Weapon Weap) { return 0.0; // no speed bonus with Syringe } static function float GetMovementSpeedModifier(KFPlayerReplicationInfo KFPRI, KFGameReplicationInfo KFGRI) { // Level.TimeDilation = 1.1 * GameSpeed return 1.20 / fmin(1.0, (KFGRI.Level.TimeDilation / 1.1)); } static function int ReduceDamage(KFPlayerReplicationInfo KFPRI, KFPawn Injured, Pawn Instigator, int InDamage, class DmgType) { return InDamage; // no protection from Bloat Bile } static function int AddDamage(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, int InDamage, class DmgType) { if ( DmgType == default.DefaultDamageTypeNoBonus ) return InDamage; if ( ClassIsChildOf(DmgType, default.DefaultDamageType) || ClassIsInArray(default.PerkedDamTypes, DmgType) ) { // 30% base bonus + 5% per level InDamage *= 1.30 + 0.05 * GetClientVeteranSkillLevel(KFPRI); } return InDamage; } static function float AddExtraAmmoFor(KFPlayerReplicationInfo KFPRI, Class AmmoType) { if ( ClassIsChildOf(AmmoType, class'ScrnBalanceSrv.ScrnM79MAmmo') || ClassIsChildOf(AmmoType, class'ScrnBalanceSrv.ScrnM203MAmmo')) return 1.0 + (0.20 * GetClientVeteranSkillLevel(KFPRI)); // one extra medic nade per level if ( ClassIsChildOf(AmmoType, class'MP7MAmmo') || ClassIsChildOf(AmmoType, class'MP5MAmmo') || ClassIsChildOf(AmmoType, class'M7A3MAmmo') || ClassIsChildOf(AmmoType, class'KrissMAmmo') || ClassIsChildOf(AmmoType, class'BlowerThrowerAmmo') || ClassIsChildOf(AmmoType, class'M4203Ammo') || ClassIsInArray(default.PerkedAmmo, AmmoType) ) { return 1.0 + 0.05 * float(GetClientVeteranSkillLevel(KFPRI)); // +5% per level } return 1.0; } static function float GetCostScaling(KFPlayerReplicationInfo KFPRI, class Item) { if ( ClassIsChildOf(Item, class'KatanaPickup') ) return class'ScrnVetBerserker'.static.GetCostScaling(KFPRI, Item); return super.GetCostScaling(KFPRI, Item); } static function string GetCustomLevelInfo( byte Level ) { local string S; S = Default.CustomLevelInfo; ReplaceText(S,"%L",string(Level)); ReplaceText(S,"%x",GetPercentStr(0.30 + 0.05*Level)); ReplaceText(S,"%a",GetPercentStr(0.05*Level)); ReplaceText(S,"%v",GetPercentStr(fmin(0.60, 0.30 + 0.05*Level))); ReplaceText(S,"%z",string(clamp(Level,1,6))); ReplaceText(S,"%$",GetPercentStr(fmin(0.90, 0.30 + 0.05*Level))); return S; } static function bool OverridePerkIndex( class Pickup ) { // Field Medic and Combat medic share the same iventory return Pickup.default.CorrespondingPerkIndex == 0 || super.OverridePerkIndex(Pickup); } defaultproperties { progressArray0(0)=5000 progressArray0(1)=25000 progressArray0(2)=100000 progressArray0(3)=500000 progressArray0(4)=1500000 progressArray0(5)=3500000 progressArray0(6)=5500000 PerkedPickups(0)=Class'ScrnBalanceSrv.ScrnKatanaPickup' OnHUDIcons(0)=(PerkIcon=Texture'ScrnTex.Perks.Perk_CombatMedic_Gray') OnHUDIcons(1)=(PerkIcon=Texture'ScrnTex.Perks.Perk_CombatMedic_Gold') OnHUDIcons(2)=(PerkIcon=Texture'ScrnTex.Perks.Perk_CombatMedic_Green') OnHUDIcons(3)=(PerkIcon=Texture'ScrnTex.Perks.Perk_CombatMedic_Blue') OnHUDIcons(4)=(PerkIcon=Texture'ScrnTex.Perks.Perk_CombatMedic_Purple') OnHUDIcons(5)=(PerkIcon=Texture'ScrnTex.Perks.Perk_CombatMedic_Orange') OnHUDIcons(6)=(PerkIcon=Texture'ScrnTex.Perks.Perk_CombatMedic_Blood') SkillInfo="PERK SKILLS:|20% faster movement speed|100% larger Medic Gun clip|75% faster attacks with Machete/Katana|Moves faster in Zed Time" CustomLevelInfo="PERK BONUSES (LEVEL %L):|%x more damage with Medic Guns|%a extra Medic ammo|%v better Armor|Up to %z Zed-Time Extensions|%$ discount on Medic Guns/Armor/Katana" PerkIndex=9 OnHUDIcon=Texture'ScrnTex.Perks.Perk_CombatMedic' OnHUDGoldIcon=Texture'ScrnTex.Perks.Perk_CombatMedic_Gold' VeterancyName="Combat Medic" Requirements(0)="Deal %x damage with the Medic Guns" }