From e1769e8048e7f80884a7880af09e66a5d874ced5 Mon Sep 17 00:00:00 2001 From: Anton Tarasenko Date: Wed, 27 Nov 2024 03:04:37 +0700 Subject: [PATCH] Change enforcer's heavy rifles' balance via burst fire parameters This patch dramatically reduces recoil on all guns and lets XMV850 accumulate way more damage that previously possible. --- .../BaseWeaponClasses/Heavy/NiceHeavyFire.uc | 3 ++- sources/Weapons/NiceFire.uc | 23 ++++++++++++++----- .../Playable/Heavy/M249/NiceM249Fire.uc | 4 ++-- .../Playable/Heavy/RPK47/NiceRPK47Fire.uc | 4 ++-- .../Playable/Heavy/SA80LSW/NiceSA80LSWFire.uc | 4 ++-- .../Playable/Heavy/XMV/NiceXMV850Fire.uc | 6 ++--- 6 files changed, 28 insertions(+), 16 deletions(-) diff --git a/sources/Weapons/BaseWeaponClasses/Heavy/NiceHeavyFire.uc b/sources/Weapons/BaseWeaponClasses/Heavy/NiceHeavyFire.uc index 9077bf8..59b48a3 100644 --- a/sources/Weapons/BaseWeaponClasses/Heavy/NiceHeavyFire.uc +++ b/sources/Weapons/BaseWeaponClasses/Heavy/NiceHeavyFire.uc @@ -2,5 +2,6 @@ class NiceHeavyFire extends NiceFire; defaultproperties { - maxBonusContLenght=3 + maxBonusContLenght = 3 + aimingSpreadReductionCoefficient = 0.0 } diff --git a/sources/Weapons/NiceFire.uc b/sources/Weapons/NiceFire.uc index 82812b9..969d8ec 100644 --- a/sources/Weapons/NiceFire.uc +++ b/sources/Weapons/NiceFire.uc @@ -20,6 +20,7 @@ var() bool bSemiMustBurst; var() int MaxBurstLength; var() int burstShotsMade; var bool bResetRecoil; // Set this flag to 'true' to disable recoil for the next shot; flag will be automatically reset to 'false' after that +var float aimingSpreadReductionCoefficient; var bool zoomOutOnShot; var bool bShouldBounce; var bool bCausePain; @@ -487,7 +488,7 @@ simulated function HandleRecoil(float Rec) KFW= KFWeapon(Weapon); if (KFW.bAimingRifle) { - Rec *= 0.5; + Rec *= aimingSpreadReductionCoefficient; } if (nicePawn.stationaryTime > 0.0 && class'NiceVeterancyTypes'.static.hasSkill(nicePlayer, class'NiceSkillHeavyStablePosition')) { @@ -697,7 +698,8 @@ simulated function UpdateFireSpeed(){ ReloadAnimRate = default.ReloadAnimRate * fireSpeedMod; } // This function is called when next fire time needs to be updated -simulated function float UpdateNextFireTime(float fireTimeVar){ +simulated function float UpdateNextFireTime(float fireTimeVar) { + local float usedFireRate; local float burstSlowDown; local NiceHumanPawn nicePawn; local class niceVet; @@ -705,11 +707,19 @@ simulated function float UpdateNextFireTime(float fireTimeVar){ if(nicePawn != none) niceVet = class'NiceVeterancyTypes'.static.GetVeterancy(nicePawn.PlayerReplicationInfo); fireTimeVar = FMax(fireTimeVar, Level.TimeSeconds); + usedFireRate = fireRate; + if (maxBonusContLenght > 1) { + if (currentContLenght <= maxBonusContLenght) { + usedFireRate *= 0.8 + 0.2 * (maxBonusContLenght - currentContLenght); + } else { + usedFireRate *= 0.8; + } + } if(bFireOnRelease){ if(bIsFiring) - fireTimeVar += MaxHoldTime + FireRate; + fireTimeVar += MaxHoldTime + usedFireRate; else - fireTimeVar = Level.TimeSeconds + FireRate; + fireTimeVar = Level.TimeSeconds + usedFireRate; } else{ if(currentContext.bIsBursting && GetBurstLength() > 1){ @@ -720,10 +730,10 @@ simulated function float UpdateNextFireTime(float fireTimeVar){ burstSlowDown = 1.0; else burstSlowDown = 1.3; - fireTimeVar += FireRate * burstSlowDown; + fireTimeVar += usedFireRate * burstSlowDown; } else - fireTimeVar += FireRate; + fireTimeVar += usedFireRate; fireTimeVar = FMax(fireTimeVar, Level.TimeSeconds); } return fireTimeVar; @@ -745,4 +755,5 @@ defaultproperties spreadGainedPerShot=0 spreadLostPerSecond=0 RecoilVelocityScale = 0 + aimingSpreadReductionCoefficient = 0.5 } diff --git a/sources/Weapons/Playable/Heavy/M249/NiceM249Fire.uc b/sources/Weapons/Playable/Heavy/M249/NiceM249Fire.uc index f531707..536e2ad 100644 --- a/sources/Weapons/Playable/Heavy/M249/NiceM249Fire.uc +++ b/sources/Weapons/Playable/Heavy/M249/NiceM249Fire.uc @@ -4,8 +4,8 @@ defaultproperties ProjectileSpeed=48250.000000 FireAimedAnim="Fire" RecoilRate=0.040000 - maxVerticalRecoilAngle=550 - maxHorizontalRecoilAngle=225 + maxVerticalRecoilAngle=115 + maxHorizontalRecoilAngle=0 ShellEjectClass=Class'ROEffects.KFShellEjectAK' ShellEjectBoneName="Shell_eject" bAccuracyBonusForSemiAuto=True diff --git a/sources/Weapons/Playable/Heavy/RPK47/NiceRPK47Fire.uc b/sources/Weapons/Playable/Heavy/RPK47/NiceRPK47Fire.uc index 79b5528..0bbd5bb 100644 --- a/sources/Weapons/Playable/Heavy/RPK47/NiceRPK47Fire.uc +++ b/sources/Weapons/Playable/Heavy/RPK47/NiceRPK47Fire.uc @@ -5,8 +5,8 @@ defaultproperties contBonus=1.400000 FireAimedAnim="Fire_Iron" RecoilRate=0.050000 - maxVerticalRecoilAngle=400 - maxHorizontalRecoilAngle=200 + maxVerticalRecoilAngle=100 + maxHorizontalRecoilAngle=0 ShellEjectClass=Class'ROEffects.KFShellEjectAK' ShellEjectBoneName="Shell_eject" bAccuracyBonusForSemiAuto=True diff --git a/sources/Weapons/Playable/Heavy/SA80LSW/NiceSA80LSWFire.uc b/sources/Weapons/Playable/Heavy/SA80LSW/NiceSA80LSWFire.uc index 5108bae..033030e 100644 --- a/sources/Weapons/Playable/Heavy/SA80LSW/NiceSA80LSWFire.uc +++ b/sources/Weapons/Playable/Heavy/SA80LSW/NiceSA80LSWFire.uc @@ -4,8 +4,8 @@ defaultproperties ProjectileSpeed=46500.000000 FireAimedAnim="Iron_Idle" RecoilRate=0.050000 - maxVerticalRecoilAngle=300 - maxHorizontalRecoilAngle=150 + maxVerticalRecoilAngle=75 + maxHorizontalRecoilAngle=0 ShellEjectClass=Class'ROEffects.KFShellEjectBullpup' ShellEjectBoneName="Shell_eject" bAccuracyBonusForSemiAuto=True diff --git a/sources/Weapons/Playable/Heavy/XMV/NiceXMV850Fire.uc b/sources/Weapons/Playable/Heavy/XMV/NiceXMV850Fire.uc index d266c98..1042ce3 100644 --- a/sources/Weapons/Playable/Heavy/XMV/NiceXMV850Fire.uc +++ b/sources/Weapons/Playable/Heavy/XMV/NiceXMV850Fire.uc @@ -12,12 +12,12 @@ simulated function HandleRecoil(float Rec) defaultproperties { ProjectileSpeed=42650.000000 - maxBonusContLenght=5 + maxBonusContLenght=10 contBonusReset=false FireAimedAnim="FireLoop" RecoilRate=0.040000 - maxVerticalRecoilAngle=450 - maxHorizontalRecoilAngle=225 + maxVerticalRecoilAngle=25 + maxHorizontalRecoilAngle=0 ShellEjectClass=Class'ROEffects.KFShellEjectSCAR' ShellEjectBoneName="ejector" FireSoundRef="HMG_S.XMV.XMV-Fire-1"