diff --git a/Localization/CHT/ServerExt.CHT b/Localization/CHT/ServerExt.CHT index 354e93c..d66b345 100644 Binary files a/Localization/CHT/ServerExt.CHT and b/Localization/CHT/ServerExt.CHT differ diff --git a/Localization/INT/ServerExt.int b/Localization/INT/ServerExt.int index 48e24e7..ebae823 100644 Binary files a/Localization/INT/ServerExt.int and b/Localization/INT/ServerExt.int differ diff --git a/Localization/JPN/ServerExt.jpn b/Localization/JPN/ServerExt.jpn index 3ba629d..ad32395 100644 Binary files a/Localization/JPN/ServerExt.jpn and b/Localization/JPN/ServerExt.jpn differ diff --git a/Localization/RUS/ServerExt.rus b/Localization/RUS/ServerExt.rus index e568932..f6de036 100644 Binary files a/Localization/RUS/ServerExt.rus and b/Localization/RUS/ServerExt.rus differ diff --git a/ServerExt/Classes/ExtPerkManager.uc b/ServerExt/Classes/ExtPerkManager.uc index 6b431ac..4919efb 100644 --- a/ServerExt/Classes/ExtPerkManager.uc +++ b/ServerExt/Classes/ExtPerkManager.uc @@ -898,12 +898,19 @@ simulated function float GetPenetrationModifier(byte Level, class { return (Ext_PerkSupport(CurrentPerk)!=None ? Ext_PerkSupport(CurrentPerk).GetPenetrationModifier(Level, DamageType, bForce) : 0.f); } - + simulated function float GetTightChokeModifier() { return (CurrentPerk!=None ? CurrentPerk.GetTightChokeModifier() : 1.f); } +// SwitchSpeed +simulated function ModifyWeaponSwitchTime(out float ModifiedSwitc) +{ + if (CurrentPerk != None) + CurrentPerk.ModifyWeaponSwitchTime(ModifiedSwitchTime); +} + // Other function ApplySkillsToPawn() { diff --git a/ServerExt/Classes/Ext_PerkBase.uc b/ServerExt/Classes/Ext_PerkBase.uc index ef0cc4a..5f9485d 100644 --- a/ServerExt/Classes/Ext_PerkBase.uc +++ b/ServerExt/Classes/Ext_PerkBase.uc @@ -109,6 +109,7 @@ var localized string StatFireDmg; var localized string StatAllDmg; var localized string StatHeadDamage; var localized string StatHealRecharge; +var localized string StatSwitch; reliable client simulated function string UIName(FDefPerkStat DefPerkStat) { @@ -135,6 +136,7 @@ reliable client simulated function string UIName(FDefPerkStat DefPerkStat) case name("AllDmg"): return StatAllDmg; case name("HeadDamage"): return StatHeadDamage; case name("HealRecharge"): return StatHealRecharge; + case name("Switch"): return StatSwitch; } return ""; } @@ -710,6 +712,8 @@ static function UpdateConfigs(int OldVer) AddStatsCfg(18); // Add all damage. else if (OldVer<=13) AddStatsCfg(19); // Add HeadDamage and HealRecharge + else if (OldVer<=14) + AddStatsCfg(21); // Add WeaponSwitch if (OldVer<=5) { // Add prestige @@ -1237,6 +1241,9 @@ simulated function float ApplyEffect(name Type, float Value, float Progress) case 'HealRecharge': Modifiers[20] = 1.f / (1.f+Value*Progress); break; + case 'Switch': + Modifiers[21] = 1.f / (1.f+Value*Progress); + break; } return (Value*Progress); } @@ -1477,6 +1484,11 @@ simulated function float GetIronSightSpeedModifier(KFWeapon KFW) return 1.f; } +simulated function ModifyWeaponSwitchTime(out float ModifiedSwitchTime) +{ + ModifiedSwitchTime *= Modifiers[21]; +} + function OnWaveEnded(); function NotifyZedTimeStarted(); @@ -1492,7 +1504,7 @@ simulated function float GetTightChokeModifier() defaultproperties { - CurrentConfigVer=14 + CurrentConfigVer=15 bOnlyRelevantToOwner=true bCanBeGrabbed=true NetUpdateFrequency=1 @@ -1563,6 +1575,7 @@ defaultproperties DefPerkStats(18)=(MaxValue=500,CostPerValue=1,StatType="AllDmg",Progress=0.25) DefPerkStats(19)=(MaxValue=500,CostPerValue=1,StatType="HeadDamage",Progress=1,bHiddenConfig=true) DefPerkStats(20)=(MaxValue=200,CostPerValue=1,StatType="HealRecharge",Progress=0.5,bHiddenConfig=true) + DefPerkStats(21)=(MaxValue=100,CostPerValue=1,StatType="Switch",Progress=1) Modifiers.Add(1.f) Modifiers.Add(1.f) @@ -1585,6 +1598,7 @@ defaultproperties Modifiers.Add(1.f) Modifiers.Add(0.f) Modifiers.Add(1.f) + Modifiers.Add(1.f) EnemyDistDraw.Add(500) EnemyDistDraw.Add(700)