diff --git a/KFGame/Classes/KFGFxHUD_ObjectiveConatiner.uc b/KFGame/Classes/KFGFxHUD_ObjectiveConatiner.uc index 81b6868..099a80f 100644 --- a/KFGame/Classes/KFGFxHUD_ObjectiveConatiner.uc +++ b/KFGame/Classes/KFGFxHUD_ObjectiveConatiner.uc @@ -13,6 +13,8 @@ var name SoundCueName; var float LastProgress; var bool bLastMissionCritical; +var bool bPrevCompleted; + function InitializeHUD() { KFPC = KFPlayerController(GetPC()); @@ -77,10 +79,16 @@ function SetCompleted(bool bComplete) DataObject.SetString("completeString", bComplete ? Localize("Objectives", "SuccessString", "KFGame") : ""); SetObject("completeStatus", DataObject); + if (!bComplete) + { + bPrevCompleted = false; + } + //play sound queue - if (KFPC != none && KFPC.MyGFxHUD != none && bComplete) + if (KFPC != none && KFPC.MyGFxHUD != none && bComplete && bComplete != bPrevCompleted) { KFPC.MyGFxHUD.PlaySoundFromTheme(SoundCueName, SoundThemeName); + bPrevCompleted = true; } } @@ -192,7 +200,7 @@ DefaultProperties { LastProgress=-0.0f UpdateRate=0.1f - + bPrevCompleted=false SoundThemeName=UI SoundCueName=TraderTime_Countdown } \ No newline at end of file diff --git a/KFGame/Classes/KFGFxHUD_ScoreboardWidget.uc b/KFGame/Classes/KFGFxHUD_ScoreboardWidget.uc index 40907db..a945711 100644 --- a/KFGame/Classes/KFGFxHUD_ScoreboardWidget.uc +++ b/KFGame/Classes/KFGFxHUD_ScoreboardWidget.uc @@ -177,17 +177,18 @@ function UpdatePlayerData() local GFxObject DataProvider,TempData, PerkIconObject; local int i; local KFPlayerReplicationinfo KFPRI; + local KFGameReplicationInfo KFGRI; local KFPlayerController KFPC; local int PlayerIndex; KFPC = KFPlayerController(GetPC()); - + KFGRI = KFGameReplicationInfo(GetPC().Worldinfo.GRI); PlayerIndex=0; DataProvider = CreateArray(); for(i = 0 ; i < CurrentPlayerList.length; i ++) { KFPRI = CurrentPlayerList[i]; - if(KFPRI.GetTeamNum() != 255 && KFPRI.bHasSpawnedIn) + if(KFPRI.GetTeamNum() != 255 && (KFPRI.bHasSpawnedIn || (KFGRI != none && KFGRI.bVersusGame))) { TempData = CreateObject("Object"); diff --git a/KFGame/Classes/KFGFxPostGameContainer_MapVote.uc b/KFGame/Classes/KFGFxPostGameContainer_MapVote.uc index 5f46457..73b22e8 100644 --- a/KFGame/Classes/KFGFxPostGameContainer_MapVote.uc +++ b/KFGame/Classes/KFGFxPostGameContainer_MapVote.uc @@ -52,7 +52,7 @@ function SetMapOptions() if(KFGRI != none && KFGRI.VoteCollector != none) { ServerMapList = KFGRI.VoteCollector.MapList; - IsBrokenTrader = class'KFGameEngine'.static.GetWeeklyEventIndex() == 11; + IsBrokenTrader = KFGRI.IsA('KFGameReplicationInfo_WeeklySurvival') && class'KFGameEngine'.static.GetWeeklyEventIndexMod() == 11; //gfx MapList = CreateArray(); diff --git a/KFGame/Classes/KFGFxStartGameContainer_Options.uc b/KFGame/Classes/KFGFxStartGameContainer_Options.uc index a7e904d..1d5ac6c 100644 --- a/KFGame/Classes/KFGFxStartGameContainer_Options.uc +++ b/KFGame/Classes/KFGFxStartGameContainer_Options.uc @@ -270,7 +270,7 @@ function FilterWeeklyMaps(out array List) } // Scavenger index = 11 - if (class'KFGameEngine'.static.GetWeeklyEventIndex() == 11) + if (class'KFGameEngine'.static.GetWeeklyEventIndexMod() == 11) { List.RemoveItem("KF-Biolapse"); List.RemoveItem("KF-Nightmare"); diff --git a/KFGame/Classes/KFGameEngine.uc b/KFGame/Classes/KFGameEngine.uc index 470290a..e3ae6a8 100644 --- a/KFGame/Classes/KFGameEngine.uc +++ b/KFGame/Classes/KFGameEngine.uc @@ -470,6 +470,7 @@ function ClearOnlineDelegates() /** Static because these are both called on default object */ native static function int GetSeasonalEventID(); native static function int GetWeeklyEventIndex(); +native static function int GetWeeklyEventIndexMod(); native static function bool IsSalesEventActive(); native static function bool IsSalesEventChecked(); /*********************************************************************************** diff --git a/KFGame/Classes/KFGameInfo.uc b/KFGame/Classes/KFGameInfo.uc index 9959169..17da05d 100644 --- a/KFGame/Classes/KFGameInfo.uc +++ b/KFGame/Classes/KFGameInfo.uc @@ -436,6 +436,11 @@ enum EMonsterProperties var int SpawnedMonsterProperties[EMonsterProperties]; +/************************************************************************************ +* @name Force to sort maps by name +***********************************************************************************/ +var bool bForceMapSorting; + /************************************************************************************ * @name Native ***********************************************************************************/ @@ -2890,6 +2895,21 @@ function string GetNextMap() for (i = 0; i < GameMapCycles[ActiveMapCycle].Maps.length; ++i) { MapCycleIndex = MapCycleIndex + 1 < GameMapCycles[ActiveMapCycle].Maps.length ? (MapCycleIndex + 1) : 0; + + if (class'KFGameEngine'.static.GetWeeklyEventIndexMod() == 11) + { + if (MyKFGRI.IsA('KFGameReplicationInfo_WeeklySurvival') && + GameMapCycles[ActiveMapCycle].Maps[MapCycleIndex] == "KF-Biolapse" || + GameMapCycles[ActiveMapCycle].Maps[MapCycleIndex] == "KF-Nightmare" || + GameMapCycles[ActiveMapCycle].Maps[MapCycleIndex] == "KF-PowerCore_Holdout" || + GameMapCycles[ActiveMapCycle].Maps[MapCycleIndex] == "KF-TheDescent" || + GameMapCycles[ActiveMapCycle].Maps[MapCycleIndex] == "KF-KrampusLair") + { + continue; + } + } + + if ( IsMapAllowedInCycle(GameMapCycles[ActiveMapCycle].Maps[MapCycleIndex]) ) { SaveConfig(); @@ -3875,4 +3895,6 @@ defaultproperties DebugForcedOutbreakIdx=INDEX_NONE DebugForceSpecialWaveZedType=INDEX_NONE + + bForceMapSorting=True } diff --git a/KFGame/Classes/KFGameReplicationInfo.uc b/KFGame/Classes/KFGameReplicationInfo.uc index 57738c8..264068b 100644 --- a/KFGame/Classes/KFGameReplicationInfo.uc +++ b/KFGame/Classes/KFGameReplicationInfo.uc @@ -802,7 +802,7 @@ exec reliable client function ShowPreGameServerWelcomeScreen() } -simulated function GetKFPRIArray(out array KFPRIArray, optional bool bGetSpectators, optional bool bGetZedPlayers) +simulated function GetKFPRIArray(out array KFPRIArray, optional bool bGetSpectators, optional bool bGetZedPlayers = true) { local int i; local int Num; diff --git a/KFGame/Classes/KFPerk_Berserker.uc b/KFGame/Classes/KFPerk_Berserker.uc index 8082cdd..12ce9af 100644 --- a/KFGame/Classes/KFPerk_Berserker.uc +++ b/KFGame/Classes/KFPerk_Berserker.uc @@ -973,7 +973,7 @@ static function PrepareExplosive( Pawn ProjOwner, KFProjectile Proj, optional fl DefaultProperties { - ParryDuration=6.f //10.f + ParryDuration=8.f //6.f //10.f ParrySpeed=0.05 FurySpeed=0.05 NinjaSprintModifer=0.25 @@ -982,7 +982,7 @@ DefaultProperties SpeedDamageModifier=0.2 SmashHeadDamageModifier=0.25 VampireAttackSpeedModifier=0.2f - ParryDamageReduction=0.25f //0.4f //0.75 + ParryDamageReduction=0.3f //0.25f //0.4f //0.75 RageRadius=1000 //300 RageFleeDuration=5.f //3 RageFleeDistance=2500 //5000 diff --git a/KFGame/Classes/KFVoteCollector.uc b/KFGame/Classes/KFVoteCollector.uc index c07e35a..4a33f33 100644 --- a/KFGame/Classes/KFVoteCollector.uc +++ b/KFGame/Classes/KFVoteCollector.uc @@ -465,7 +465,7 @@ function ServerStartVoteSkipTrader(PlayerReplicationInfo PRI) CurrentVoteTime = min(VoteTime, TraderTimeRemaining - SkipTraderVoteLimit); - GetKFPRIArray(PRIs); + GetKFPRIArray(PRIs, , false); for (i = 0; i < PRIs.Length; i++) { PRIs[i].ShowSkipTraderVote(PRI, CurrentVoteTime, !(PRIs[i] == PRI) && PRI.GetTeamNum() != 255); @@ -491,7 +491,7 @@ reliable server function UpdateTimer() local int i; CurrentVoteTime -= 1; - GetKFPRIArray(PRIs); + GetKFPRIArray(PRIs, , false); for (i = 0; i < PRIs.Length; i++) { PRIs[i].UpdateSkipTraderTime(CurrentVoteTime); @@ -586,7 +586,7 @@ function bool ShouldConcludeSkipTraderVote() local array PRIs; local int NumPRIs; - GetKFPRIArray(PRIs); + GetKFPRIArray(PRIs, , false); NumPRIs = PRIs.Length; if( YesVotes + NoVotes >= NumPRIs || NoVotes > 0 ) @@ -607,7 +607,7 @@ reliable server function ConcludeVoteSkipTrader() if(bIsSkipTraderVoteInProgress) { - GetKFPRIArray(PRIs); + GetKFPRIArray(PRIs, , false); for (i = 0; i < PRIs.Length; i++) { @@ -680,7 +680,7 @@ function ResetSkipTraderBeforeWaveStarts() local array PRIs; local int i; - GetKFPRIArray(PRIs); + GetKFPRIArray(PRIs, , false); for (i = 0; i < PRIs.Length; i++) { PRIs[i].bAlreadyStartedASkipTraderVote = false; diff --git a/KFGame/Classes/KFWeeklyOutbreakInformation.uc b/KFGame/Classes/KFWeeklyOutbreakInformation.uc index 73c250a..217e39c 100644 --- a/KFGame/Classes/KFWeeklyOutbreakInformation.uc +++ b/KFGame/Classes/KFWeeklyOutbreakInformation.uc @@ -24,9 +24,12 @@ var localized array DescriptionStrings; //List of any modifer information we need specific to the mode var localized array ModifierDescriptions; - - +cpptext +{ + /** Num of Weekly events available */ + static const int NumWeeklyEvents = 12; +} DefaultProperties { - + } \ No newline at end of file diff --git a/KFGameContent/Classes/KFExplosion_Thermite.uc b/KFGameContent/Classes/KFExplosion_Thermite.uc index 2fad611..9ebd298 100644 --- a/KFGameContent/Classes/KFExplosion_Thermite.uc +++ b/KFGameContent/Classes/KFExplosion_Thermite.uc @@ -16,7 +16,7 @@ var() ParticleSystem LoopingParticleEffectWall; DefaultProperties { Interval=0.5 - MaxTime=10 + MaxTime=7 //10 bDoFullDamage=true diff --git a/KFGameContent/Classes/KFOutbreakEvent_Weekly.uc b/KFGameContent/Classes/KFOutbreakEvent_Weekly.uc index bb2c402..b206553 100644 --- a/KFGameContent/Classes/KFOutbreakEvent_Weekly.uc +++ b/KFGameContent/Classes/KFOutbreakEvent_Weekly.uc @@ -475,7 +475,7 @@ defaultproperties TraderWeaponList=KFGFxObject_TraderItems'GP_Trader_ARCH.BrokenTraderWeeklyTraderList', PickupResetTime=PRS_Wave, bDisableTraders=false, - DroppedItemLifespan=10.0f, // 300 default + DroppedItemLifespan=20.0f, //10.0f, // 300 default DoshOnKillGlobalModifier=0.2, //Pickup Notes for when you're modifying: // NumPickups = Actors * OverridePickupModifer * WavePickupModifier diff --git a/KFGameContent/Classes/KFProj_Rocket_ThermiteBore.uc b/KFGameContent/Classes/KFProj_Rocket_ThermiteBore.uc index 612ba29..b3c6a30 100644 --- a/KFGameContent/Classes/KFProj_Rocket_ThermiteBore.uc +++ b/KFGameContent/Classes/KFProj_Rocket_ThermiteBore.uc @@ -65,8 +65,6 @@ simulated event PostBeginPlay() { SetTimer(FuseTime, false, 'Timer_Detonate'); } - - AdjustCanDisintigrate(); } /** @@ -181,14 +179,6 @@ simulated function Disintegrate( rotator InDisintegrateEffectRotation ) super.Disintegrate(InDisintegrateEffectRotation); } -// for nukes && concussive force -simulated protected function PrepareExplosionTemplate() -{ - class'KFPerk_Demolitionist'.static.PrepareExplosive(Instigator, self); - - super.PrepareExplosionTemplate(); -} - simulated function SyncOriginalLocation() { // IMPORTANT NOTE: We aren't actually syncing to the original location (or calling the super). diff --git a/KFGameContent/Classes/KFWeap_AssaultRifle_FAMAS.uc b/KFGameContent/Classes/KFWeap_AssaultRifle_FAMAS.uc index b8878a5..a78ad3b 100644 --- a/KFGameContent/Classes/KFWeap_AssaultRifle_FAMAS.uc +++ b/KFGameContent/Classes/KFWeap_AssaultRifle_FAMAS.uc @@ -419,7 +419,7 @@ simulated state AltReloading extends Reloading /** Make sure we can inturrupt secondary reload with anything. */ simulated function bool CanOverrideMagReload(byte FireModeNum) { - return false; + return true; } /** Returns animation to play based on reload type and status */ @@ -553,6 +553,23 @@ simulated function ModifyRecoil( out float CurrentRecoilModifier ) super.ModifyRecoil( CurrentRecoilModifier ); } +/** Spawn projectile is called once for each shot pellet fired */ +simulated function KFProjectile SpawnAllProjectiles(class KFProjClass, vector RealStartLoc, vector AimDir) +{ + local KFPerk InstigatorPerk; + + if (CurrentFireMode == ALTFIRE_FIREMODE) + { + InstigatorPerk = GetPerk(); + if (InstigatorPerk != none) + { + Spread[CurrentFireMode] = default.Spread[CurrentFireMode] * InstigatorPerk.GetTightChokeModifier(); + } + } + + return super.SpawnAllProjectiles(KFProjClass, RealStartLoc, AimDir); +} + defaultproperties { bCanRefillSecondaryAmmo = true; @@ -592,7 +609,7 @@ defaultproperties IronSightPosition=(X=0,Y=0,Z=0) // Ammo - MagazineCapacity[0]=24 + MagazineCapacity[0]=30 //24 SpareAmmoCapacity[0]=240 InitialSpareMags[0]=3 bCanBeReloaded=true @@ -632,6 +649,7 @@ defaultproperties WeaponFireTypes(DEFAULT_FIREMODE)=EWFT_InstantHit WeaponProjectiles(DEFAULT_FIREMODE)=class'KFProj_Bullet_AssaultRifle' InstantHitDamageTypes(DEFAULT_FIREMODE)=class'KFDT_Ballistic_FAMAS_Rifle' + PenetrationPower(DEFAULT_FIREMODE)=1.0 FireInterval(DEFAULT_FIREMODE)=+0.0667 // 900 RPM InstantHitDamage(DEFAULT_FIREMODE)=35.0 Spread(DEFAULT_FIREMODE)=0.005 //0.0085 @@ -649,11 +667,11 @@ defaultproperties WeaponFireTypes(ALTFIRE_FIREMODE)=EWFT_Projectile WeaponProjectiles(ALTFIRE_FIREMODE)=class'KFProj_Bullet_Pellet' InstantHitDamageTypes(ALTFIRE_FIREMODE)=class'KFDT_Ballistic_FAMAS_Shotgun' - InstantHitDamage(ALTFIRE_FIREMODE)=25.0 - PenetrationPower(DEFAULT_FIREMODE)=2.0 - FireInterval(ALTFIRE_FIREMODE)=+1.2 //0.5 //0.7 //85 RPM - NumPellets(ALTFIRE_FIREMODE)=6 - Spread(ALTFIRE_FIREMODE)=0.12 //0.07 + InstantHitDamage(ALTFIRE_FIREMODE)=30.0 //25.0 + PenetrationPower(ALTFIRE_FIREMODE)=2.0 + FireInterval(ALTFIRE_FIREMODE)=+1.2 //50 RPM + NumPellets(ALTFIRE_FIREMODE)=7 //6 + Spread(ALTFIRE_FIREMODE)=0.10 //0.12 SecondaryAmmoTexture=Texture2D'ui_firemodes_tex.UI_FireModeSelect_ShotgunSingle' // BASH_FIREMODE diff --git a/KFGameContent/Classes/KFWeap_HRG_BarrierRifle.uc b/KFGameContent/Classes/KFWeap_HRG_BarrierRifle.uc index f99f3c0..1710994 100644 --- a/KFGameContent/Classes/KFWeap_HRG_BarrierRifle.uc +++ b/KFGameContent/Classes/KFWeap_HRG_BarrierRifle.uc @@ -80,7 +80,7 @@ var protected transient float OverlayDelta; var WeaponFireSndInfo ShieldActivateSound; var WeaponFireSndInfo ShieldDeactivateSound; -var (Shield) AkBaseSoundObject ShieldEndSound; +var WeaponFireSndInfo ShieldEndSound; var repnotify byte ShieldAmmo; @@ -170,7 +170,7 @@ simulated function CustomFire() simulated function ActivateShield() { - PlaySoundBase(ShieldActivateSound.FirstPersonCue); + WeaponPlayFireSound(ShieldActivateSound.DefaultCue, ShieldActivateSound.FirstPersonCue); bActivatingShield = true; bDeactivatingShield = false; bNetDirty = true; @@ -180,7 +180,7 @@ simulated function ActivateShield() simulated function DeactivateShield() { - PlaySoundBase(ShieldDeactivateSound.FirstPersonCue); + WeaponPlayFireSound(ShieldDeactivateSound.DefaultCue, ShieldDeactivateSound.FirstPersonCue); bDeactivatingShield = true; bActivatingShield = false; bCanRechargeShield = false; @@ -304,7 +304,7 @@ simulated function OnShieldDepleted() ShieldAmmo = 0; bNetDirty = true; NotifyShieldActive(false); - PlaySoundBase(ShieldEndSound); + WeaponPlayFireSound(ShieldEndSound.DefaultCue, ShieldEndSound.FirstPersonCue); SetTimer(CooldownAfterShieldDepleted, false, nameof(ShieldRepletedTimerCompleted)); } @@ -325,7 +325,7 @@ simulated function OnShieldDestroyed() ShieldAmmo = 0; bNetDirty = true; NotifyShieldActive(false); - PlaySoundBase(ShieldEndSound); + WeaponPlayFireSound(ShieldEndSound.DefaultCue, ShieldEndSound.FirstPersonCue); SetTimer(CooldownAfterShieldDestroyed, false, nameof(ShieldDestroyedTimerCompleted)); } @@ -519,6 +519,8 @@ simulated state WeaponEquipping { simulated function BeginState(Name PreviousStateName) { + UpdateShieldFXValue(0.0f); + FXDelta = 0.0f; bShieldActionAvailable = true; super.BeginState(PreviousStateName); } @@ -689,9 +691,9 @@ defaultproperties CooldownAfterShieldDepleted=3.0f //3.0f CooldownAfterShieldDestroyed=3.0f //5.0f - ShieldActivateSound=(DefaultCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_On', FirstPersonCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_On') - ShieldDeactivateSound=(DefaultCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_Off', FirstPersonCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_Off') - ShieldEndSound=AKEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_End'; + ShieldActivateSound=(DefaultCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_3P_Shield_On', FirstPersonCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_On') + ShieldDeactivateSound=(DefaultCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_3P_Shield_Off', FirstPersonCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_Off') + ShieldEndSound=(DefaultCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_3P_Shield_End', FirstPersonCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_End') BlockSound=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_Impact' BlockParticleSystem=ParticleSystem'FX_Impacts_EMIT.FX_Block_melee_01' diff --git a/KFGameContent/Classes/KFWeap_HRG_BlastBrawlers.uc b/KFGameContent/Classes/KFWeap_HRG_BlastBrawlers.uc index 4c55d51..fd301f7 100644 --- a/KFGameContent/Classes/KFWeap_HRG_BlastBrawlers.uc +++ b/KFGameContent/Classes/KFWeap_HRG_BlastBrawlers.uc @@ -416,7 +416,7 @@ defaultproperties // Shotgun Ammo MagazineCapacity[0]=4 //3 - SpareAmmoCapacity[0]=36 //28 + SpareAmmoCapacity[0]=40 //36 //28 InitialSpareMags[0]=2 AmmoPickupScale[0]=1.5 //2.0 @@ -438,12 +438,13 @@ defaultproperties WeaponProjectiles(CUSTOM_FIREMODE)=class'KFProj_Bullet_BlastBrawlers' FireInterval(CUSTOM_FIREMODE)=0.1f InstantHitDamageTypes(CUSTOM_FIREMODE)=class'KFDT_Ballistic_BlastBrawlersShotgun' - InstantHitDamage(CUSTOM_FIREMODE)=36.0 //30.0 + InstantHitDamage(CUSTOM_FIREMODE)=39.0 //36.0 //30.0 AmmoCost(CUSTOM_FIREMODE)=0 NumPellets(CUSTOM_FIREMODE)=5 - Spread(CUSTOM_FIREMODE)=0.1 //0.15 + Spread(CUSTOM_FIREMODE)=0.12 //0.1 //0.15 WeaponFireSnd(CUSTOM_FIREMODE)=(DefaultCue=AkEvent'WW_WEP_HRG_BlastBrawlers.Play_WEP_HRG_BlastBrawlers_Shoot_3P', FirstPersonCue=AkEvent'WW_WEP_HRG_BlastBrawlers.Play_WEP_HRG_BlastBrawlers_Shoot_1P') InstantHitMomentum(CUSTOM_FIREMODE)=1.0 + PenetrationPower(CUSTOM_FIREMODE)=2.0 PenetrationDamageReductionCurve(CUSTOM_FIREMODE)=(Points=((InVal=0.f,OutVal=0.f),(InVal=1.f, OutVal=1.f))) FireModeIconPaths(DEFAULT_FIREMODE)=Texture2D'ui_firemodes_tex.UI_FireModeSelect_ShotgunSingle' @@ -467,7 +468,7 @@ defaultproperties ParryStrength=5 ParryDamageMitigationPercent=0.40 - BlockDamageMitigation=0.40 + BlockDamageMitigation=0.50 //0.40 bWaitingForSecondShot = false NumAttacks = 0 diff --git a/KFGameContent/Classes/KFWeap_RocketLauncher_ThermiteBore.uc b/KFGameContent/Classes/KFWeap_RocketLauncher_ThermiteBore.uc index b924ad0..702e3c9 100644 --- a/KFGameContent/Classes/KFWeap_RocketLauncher_ThermiteBore.uc +++ b/KFGameContent/Classes/KFWeap_RocketLauncher_ThermiteBore.uc @@ -252,7 +252,7 @@ defaultproperties // Zooming/Position PlayerViewOffset=(X=11.0,Y=8,Z=-2) - IronSightPosition=(X=10,Y=0,Z=0) + IronSightPosition=(X=10,Y=-0.15,Z=0.7) // AI warning system bWarnAIWhenAiming=true