diff --git a/Engine/Classes/GameInfo.uc b/Engine/Classes/GameInfo.uc index e565cb2..1cf2781 100644 --- a/Engine/Classes/GameInfo.uc +++ b/Engine/Classes/GameInfo.uc @@ -1619,6 +1619,12 @@ function StartBots() } } } + +function bool CanAssignDefaultWeaponsToPlayer(Controller NewPlayer) +{ + return true; +} + // // Restart a player. // @@ -1687,7 +1693,10 @@ function RestartPlayer(Controller NewPlayer) if (!WorldInfo.bNoDefaultInventoryForPlayer) { - AddDefaultInventory(NewPlayer.Pawn); + if (CanAssignDefaultWeaponsToPlayer(NewPlayer)) + { + AddDefaultInventory(NewPlayer.Pawn); + } } SetPlayerDefaults(NewPlayer.Pawn); diff --git a/Engine/Classes/Weapon.uc b/Engine/Classes/Weapon.uc index 3e9575a..181875f 100644 --- a/Engine/Classes/Weapon.uc +++ b/Engine/Classes/Weapon.uc @@ -1456,6 +1456,11 @@ simulated event vector GetMuzzleLoc() */ simulated native event vector GetPhysicalFireStartLoc(optional vector AimDir); +/** + * This function returns the world location for spawning the projectile. + */ +simulated native event vector GetFixedPhysicalFireStartLoc(); + /** * Put Down current weapon * Once the weapon is put down, the InventoryManager will switch to InvManager.PendingWeapon. diff --git a/KFGame/Classes/KFAutoPurchaseHelper.uc b/KFGame/Classes/KFAutoPurchaseHelper.uc index cb152c7..64892bc 100644 --- a/KFGame/Classes/KFAutoPurchaseHelper.uc +++ b/KFGame/Classes/KFAutoPurchaseHelper.uc @@ -457,31 +457,32 @@ function int GetChunkArmorCost() function int FillArmor( ) { - local float ArmorPricePerPercent, FillCost; - local float PercentBoughtUnit, PercentArmorBought; + local float FillCost, PercentBoughtUnit, PercentArmorBought; local int ActualArmorPointsAvailable; FillCost = GetFillArmorCost(); - ActualArmorPointsAvailable = ArmorItem.MaxSpareAmmo - ArmorItem.SpareAmmoCount; - - PercentBoughtUnit = float(ActualArmorPointsAvailable) / float(ArmorItem.MaxSpareAmmo); - PercentArmorBought = PercentBoughtUnit * 100.f; // Buy as much armor as we possibly can if (FillCost > TotalDosh) { - ArmorPricePerPercent = ArmorItem.AmmoPricePerMagazine; - // Because we are using ints this will round down and we can get how much we actually spent - PercentArmorBought = TotalDosh / ArmorPricePerPercent; - PercentBoughtUnit = PercentArmorBought / 100.f; - FillCost = ArmorPricePerPercent * PercentArmorBought; - } - PercentArmorBought = (PercentArmorBought > 0.f && PercentArmorBought < 1.f) ? 1.f : PercentArmorBought; + ActualArmorPointsAvailable = FFloor(float(TotalDosh) / float(ArmorItem.AmmoPricePerMagazine)); + + FillCost = ArmorItem.AmmoPricePerMagazine * ActualArmorPointsAvailable; + } + else + { + ActualArmorPointsAvailable = ArmorItem.MaxSpareAmmo - ArmorItem.SpareAmmoCount; + } + + PercentBoughtUnit = float(ActualArmorPointsAvailable) / float(ArmorItem.MaxSpareAmmo); + PercentArmorBought = PercentBoughtUnit * 100.f; + ArmorItem.SpareAmmoCount = FMin( float(ArmorItem.SpareAmmoCount) + (PercentBoughtUnit * float(ArmorItem.MaxSpareAmmo)), float(ArmorItem.MaxSpareAmmo) ); BoughtAmmo(PercentArmorBought, FillCost, EIT_Armor); + return FillCost; } diff --git a/KFGame/Classes/KFGFxTraderContainer_Store.uc b/KFGame/Classes/KFGFxTraderContainer_Store.uc index 0e16eac..31af3a2 100644 --- a/KFGame/Classes/KFGFxTraderContainer_Store.uc +++ b/KFGame/Classes/KFGFxTraderContainer_Store.uc @@ -290,6 +290,15 @@ function SetItemInfo(out GFxObject ItemDataArray, STraderItem TraderItem, int Sl /** returns true if this item should not be displayed */ function bool IsItemFiltered(STraderItem Item, optional bool bDebug) { + if(!class'GameEngine'.Static.IsGameFullyInstalled() && Item.WeaponDef.default.IsPlayGoHidden) + { + if (bDebug) + { + `log("is not fully installed this weapon is not available"); + } + return true; + } + if (KFPC.GetPurchaseHelper().IsInOwnedItemList(Item.ClassName)) { if (bDebug) diff --git a/KFGame/Classes/KFPlayerController.uc b/KFGame/Classes/KFPlayerController.uc index 2ea8ebc..cea47a6 100644 --- a/KFGame/Classes/KFPlayerController.uc +++ b/KFGame/Classes/KFPlayerController.uc @@ -755,7 +755,7 @@ var byte StormCannonIDCounter; var transient bool bShotgunJumping; -var int iAllowSeasonalSkins; +var bool bAllowSeasonalSkins; cpptext @@ -1008,7 +1008,7 @@ reliable server event PushV() } -simulated function int GetAllowSeasonalSkins() +simulated function bool GetAllowSeasonalSkins() { local KFGameReplicationInfo KFGRI; local bool bIsWWLWeekly, bIsAllowSeasonalSkins; // Situations that shouldn't allow seasonal overrides @@ -1017,22 +1017,20 @@ simulated function int GetAllowSeasonalSkins() bIsWWLWeekly = KFGRI != none && KFGRI.bIsWeeklyMode && KFGRI.CurrentWeeklyIndex == 12; bIsAllowSeasonalSkins = KFGRI != none && KFGRI.bAllowSeasonalSkins; + //`Log("GetAllowSeasonalSkins: AllowSeasonalSkins: "$bIsAllowSeasonalSkins$" WWLWeekly "$bIsWWLWeekly); if(bIsWWLWeekly || bIsAllowSeasonalSkins == false) { - return 0; + return false; } - return 1; + return true; } simulated event name GetSeasonalStateName() { local int EventId, MapModifiedEventId; local KFMapInfo KFMI; - local bool bIsWWLWeekly, bIsAllowSeasonalSkins ; // Situations that shouldn't allow seasonal overrides - local KFGameReplicationInfo KFGRI; EventId = class'KFGameEngine'.static.GetSeasonalEventID(); - `Log("GetSeasonalStateName: "$EventId); MapModifiedEventId = SEI_None; @@ -1042,16 +1040,13 @@ simulated event name GetSeasonalStateName() KFMI.ModifySeasonalEventId(MapModifiedEventId); } + bAllowSeasonalSkins = GetAllowSeasonalSkins(); + + `Log("GetSeasonalStateName: "$EventId$" AllowSeasonalSkins: "$bAllowSeasonalSkins); + if (MapModifiedEventId == SEI_None) { - KFGRI = KFGameReplicationInfo(WorldInfo.GRI); - - bIsWWLWeekly = KFGRI != none && KFGRI.bIsWeeklyMode && KFGRI.CurrentWeeklyIndex == 12; - - bIsAllowSeasonalSkins = KFGRI != none && KFGRI.bAllowSeasonalSkins; - - `Log("GetSeasonalStateName: AllowSeasonalSkins: "$bIsAllowSeasonalSkins$" WWLWeekly "$bIsWWLWeekly); - if (bIsWWLWeekly || bIsAllowSeasonalSkins == false) + if (bAllowSeasonalSkins == false) { EventId = SEI_None; } @@ -5289,9 +5284,8 @@ event PlayerTick( float DeltaTime ) { super.PlayerTick(DeltaTime); - if(iAllowSeasonalSkins != GetAllowSeasonalSkins()) + if(bAllowSeasonalSkins != GetAllowSeasonalSkins()) { - iAllowSeasonalSkins = GetAllowSeasonalSkins(); UpdateSeasonalState(); } @@ -12382,5 +12376,5 @@ defaultproperties StormCannonIDCounter = 0 bShotgunJumping = false - iAllowSeasonalSkins = -1 + bAllowSeasonalSkins = false } diff --git a/KFGame/Classes/KFProj_Bullet.uc b/KFGame/Classes/KFProj_Bullet.uc index c0dca9c..734159d 100644 --- a/KFGame/Classes/KFProj_Bullet.uc +++ b/KFGame/Classes/KFProj_Bullet.uc @@ -42,6 +42,8 @@ simulated function ProcessTouch(Actor Other, Vector HitLocation, Vector HitNorma local InterpCurveFloat PenetrationCurve; local KFWeapon KFW; + bPassThrough = false; + if (Other != Instigator) { if(IgnoreTouchActor == Other) diff --git a/KFGame/Classes/KFWeapDef_AutoTurret.uc b/KFGame/Classes/KFWeapDef_AutoTurret.uc index d673124..c337e5c 100644 --- a/KFGame/Classes/KFWeapDef_AutoTurret.uc +++ b/KFGame/Classes/KFWeapDef_AutoTurret.uc @@ -16,6 +16,8 @@ DefaultProperties AmmoPricePerMag=60 // 27 ImagePath="WEP_UI_AutoTurret_TEX.UI_WeaponSelect_AutoTurret" + IsPlayGoHidden=true; + EffectiveRange=18 UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_BladedPistol.uc b/KFGame/Classes/KFWeapDef_BladedPistol.uc index 55bdfce..6637376 100644 --- a/KFGame/Classes/KFWeapDef_BladedPistol.uc +++ b/KFGame/Classes/KFWeapDef_BladedPistol.uc @@ -16,6 +16,8 @@ DefaultProperties AmmoPricePerMag=38 //32 ImagePath="WEP_UI_BladedPistol_TEX.UI_WeaponSelect_BladedPistol" + IsPlayGoHidden=true; + EffectiveRange=25 UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_Blunderbuss.uc b/KFGame/Classes/KFWeapDef_Blunderbuss.uc index 739257f..732c0d4 100644 --- a/KFGame/Classes/KFWeapDef_Blunderbuss.uc +++ b/KFGame/Classes/KFWeapDef_Blunderbuss.uc @@ -22,6 +22,8 @@ defaultproperties ImagePath="WEP_UI_Blunderbuss_TEX.UI_WeaponSelect_BlunderBluss" + IsPlayGoHidden=true; + EffectiveRange=95 // Based on comment Slightly less than M79 Grenade Launcher UpgradePrice[0]=1500 diff --git a/KFGame/Classes/KFWeapDef_ChainBat.uc b/KFGame/Classes/KFWeapDef_ChainBat.uc index 1045cb3..bae92b4 100644 --- a/KFGame/Classes/KFWeapDef_ChainBat.uc +++ b/KFGame/Classes/KFWeapDef_ChainBat.uc @@ -16,6 +16,8 @@ DefaultProperties BuyPrice=850 ImagePath="Wep_UI_ChainBat_TEX.UI_WeaponSelect_RRChainbat" + IsPlayGoHidden=true; + EffectiveRange=2 UpgradePrice[0]=600 diff --git a/KFGame/Classes/KFWeapDef_ChiappaRhino.uc b/KFGame/Classes/KFWeapDef_ChiappaRhino.uc index bc43678..cb9931b 100644 --- a/KFGame/Classes/KFWeapDef_ChiappaRhino.uc +++ b/KFGame/Classes/KFWeapDef_ChiappaRhino.uc @@ -18,6 +18,9 @@ DefaultProperties AmmoPricePerMag=17 ImagePath="wep_ui_chiapparhino_tex.UI_WeaponSelect_ChiappaRhinos" + IsPlayGoHidden=true; + + EffectiveRange=50 UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_ChiappaRhinoDual.uc b/KFGame/Classes/KFWeapDef_ChiappaRhinoDual.uc index 8f74316..55d7298 100644 --- a/KFGame/Classes/KFWeapDef_ChiappaRhinoDual.uc +++ b/KFGame/Classes/KFWeapDef_ChiappaRhinoDual.uc @@ -18,6 +18,8 @@ DefaultProperties AmmoPricePerMag=34 ImagePath="wep_ui_chiapparhino_tex.UI_WeaponSelect_DualChiappaRhinos" + IsPlayGoHidden=true; + EffectiveRange=50 UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_CompoundBow.uc b/KFGame/Classes/KFWeapDef_CompoundBow.uc index cfa7cb9..b23ce81 100644 --- a/KFGame/Classes/KFWeapDef_CompoundBow.uc +++ b/KFGame/Classes/KFWeapDef_CompoundBow.uc @@ -22,6 +22,8 @@ defaultproperties ImagePath="WEP_UI_CompoundBow_TEX.UI_WeaponSelect_Compound_Bow" + IsPlayGoHidden=true; + EffectiveRange=80 SharedUnlockId=SCU_CompoundBow diff --git a/KFGame/Classes/KFWeapDef_Doshinegun.uc b/KFGame/Classes/KFWeapDef_Doshinegun.uc index 5ee1432..568c04c 100644 --- a/KFGame/Classes/KFWeapDef_Doshinegun.uc +++ b/KFGame/Classes/KFWeapDef_Doshinegun.uc @@ -17,6 +17,8 @@ DefaultProperties BuyPrice=400 //600 //750 ImagePath="WEP_UI_Doshinegun_TEX.UI_Weapon_Select_Doshinegun" + IsPlayGoHidden=true; + EffectiveRange=68 UpgradePrice[0]=600 diff --git a/KFGame/Classes/KFWeapDef_DualBladed.uc b/KFGame/Classes/KFWeapDef_DualBladed.uc index 083631a..766ee07 100644 --- a/KFGame/Classes/KFWeapDef_DualBladed.uc +++ b/KFGame/Classes/KFWeapDef_DualBladed.uc @@ -16,6 +16,8 @@ DefaultProperties AmmoPricePerMag=76 //64 ImagePath="WEP_UI_Dual_BladedPistol_TEX.UI_WeaponSelect_Dual_BladedPistol" + IsPlayGoHidden=true; + EffectiveRange=50 UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_FAMAS.uc b/KFGame/Classes/KFWeapDef_FAMAS.uc index 3f2f590..a83d629 100644 --- a/KFGame/Classes/KFWeapDef_FAMAS.uc +++ b/KFGame/Classes/KFWeapDef_FAMAS.uc @@ -23,6 +23,8 @@ defaultproperties ImagePath="WEP_UI_Famas_TEX.UI_WeaponSelect_Famas" + IsPlayGoHidden=true; + EffectiveRange=67 // @TODO: ¿?¿?¿? UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_G18.uc b/KFGame/Classes/KFWeapDef_G18.uc index 6c9e961..3a4770e 100644 --- a/KFGame/Classes/KFWeapDef_G18.uc +++ b/KFGame/Classes/KFWeapDef_G18.uc @@ -17,6 +17,8 @@ DefaultProperties AmmoPricePerMag=24 ImagePath="WEP_UI_RiotShield_TEX.UI_WeaponSelect_RiotShield" + IsPlayGoHidden=true; + EffectiveRange=70 UpgradePrice[0]=1500 diff --git a/KFGame/Classes/KFWeapDef_G36C.uc b/KFGame/Classes/KFWeapDef_G36C.uc index 976169f..02dcde0 100644 --- a/KFGame/Classes/KFWeapDef_G36C.uc +++ b/KFGame/Classes/KFWeapDef_G36C.uc @@ -18,6 +18,8 @@ DefaultProperties AmmoPricePerMag=36 ImagePath="wep_ui_g36c_tex.UI_WeaponSelect_G36C" + IsPlayGoHidden=true; + EffectiveRange=70 UpgradePrice[0]=1500 diff --git a/KFGame/Classes/KFWeapDef_GravityImploder.uc b/KFGame/Classes/KFWeapDef_GravityImploder.uc index daf86ca..2d07502 100644 --- a/KFGame/Classes/KFWeapDef_GravityImploder.uc +++ b/KFGame/Classes/KFWeapDef_GravityImploder.uc @@ -21,6 +21,8 @@ defaultproperties ImagePath="WEP_UI_Gravity_Imploder_TEX.UI_WeaponSelect_Gravity_Imploder" + IsPlayGoHidden=true; + EffectiveRange=95 // Based on comment Slightly less than M79 Grenade Launcher SharedUnlockId=SCU_GravityImploder diff --git a/KFGame/Classes/KFWeapDef_HRGIncendiaryRifle.uc b/KFGame/Classes/KFWeapDef_HRGIncendiaryRifle.uc index 8306bab..6fd7f64 100644 --- a/KFGame/Classes/KFWeapDef_HRGIncendiaryRifle.uc +++ b/KFGame/Classes/KFWeapDef_HRGIncendiaryRifle.uc @@ -20,6 +20,8 @@ DefaultProperties ImagePath="WEP_UI_HRG_IncendiaryRifle_TEX.UI_WeaponSelect_HRG_IncendiaryRifle" + IsPlayGoHidden=true; + EffectiveRange=68 SecondaryAmmoMagSize=1 diff --git a/KFGame/Classes/KFWeapDef_HRGIncision.uc b/KFGame/Classes/KFWeapDef_HRGIncision.uc index 6d22d01..002c865 100644 --- a/KFGame/Classes/KFWeapDef_HRGIncision.uc +++ b/KFGame/Classes/KFWeapDef_HRGIncision.uc @@ -16,6 +16,8 @@ DefaultProperties AmmoPricePerMag=14 ImagePath="WEP_UI_HRG_Incision_Item_TEX.UI_WeaponSelect_HRG_Incision" + IsPlayGoHidden=true; + EffectiveRange=100 UpgradePrice[0]=1500 diff --git a/KFGame/Classes/KFWeapDef_HRGScorcher.uc b/KFGame/Classes/KFWeapDef_HRGScorcher.uc index 121fc53..fce6b53 100644 --- a/KFGame/Classes/KFWeapDef_HRGScorcher.uc +++ b/KFGame/Classes/KFWeapDef_HRGScorcher.uc @@ -19,6 +19,8 @@ DefaultProperties AmmoPricePerMag= 12 //14 ImagePath="WEP_UI_HRGScorcher_Pistol_TEX.UI_WeaponSelect_HRGScorcher" + IsPlayGoHidden=true; + EffectiveRange=100 // Based on comment Slightly less than M79 Grenade Launcher UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_HRGTeslauncher.uc b/KFGame/Classes/KFWeapDef_HRGTeslauncher.uc index c41a44b..bff2fac 100644 --- a/KFGame/Classes/KFWeapDef_HRGTeslauncher.uc +++ b/KFGame/Classes/KFWeapDef_HRGTeslauncher.uc @@ -19,6 +19,8 @@ DefaultProperties AmmoPricePerMag=62 //30 ImagePath="WEP_UI_HRG_Teslauncher_TEX.UI_WeaponSelect_HRG_Teslauncher" + IsPlayGoHidden=true; + EffectiveRange=68 SecondaryAmmoMagSize=1 diff --git a/KFGame/Classes/KFWeapDef_HRGWinterbite.uc b/KFGame/Classes/KFWeapDef_HRGWinterbite.uc index a4dd050..49a6cca 100644 --- a/KFGame/Classes/KFWeapDef_HRGWinterbite.uc +++ b/KFGame/Classes/KFWeapDef_HRGWinterbite.uc @@ -15,6 +15,8 @@ DefaultProperties AmmoPricePerMag=13 //12 ImagePath="WEP_UI_HRG_Winterbite_Item_TEX.UI_WeaponSelect_HRG_Winterbite" + IsPlayGoHidden=true; + EffectiveRange=50 UpgradePrice[0]=600 diff --git a/KFGame/Classes/KFWeapDef_HRGWinterbiteDual.uc b/KFGame/Classes/KFWeapDef_HRGWinterbiteDual.uc index 17beae9..e09455f 100644 --- a/KFGame/Classes/KFWeapDef_HRGWinterbiteDual.uc +++ b/KFGame/Classes/KFWeapDef_HRGWinterbiteDual.uc @@ -15,6 +15,8 @@ DefaultProperties AmmoPricePerMag=26 //24 ImagePath="WEP_UI_Dual_Winterbite_Item_TEX.UI_WeaponSelect_HRG_DualWinterbite" + IsPlayGoHidden=true; + EffectiveRange=50 UpgradePrice[0]=600 diff --git a/KFGame/Classes/KFWeapDef_HRG_BallisticBouncer.uc b/KFGame/Classes/KFWeapDef_HRG_BallisticBouncer.uc index 9a6a956..2e36d41 100644 --- a/KFGame/Classes/KFWeapDef_HRG_BallisticBouncer.uc +++ b/KFGame/Classes/KFWeapDef_HRG_BallisticBouncer.uc @@ -16,6 +16,8 @@ DefaultProperties AmmoPricePerMag=40 ImagePath="WEP_UI_HRG_BallisticBouncer_TEX.UI_WeaponSelect_HRG_BallisticBouncer" + IsPlayGoHidden=true; + EffectiveRange=70 UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_HRG_BarrierRifle.uc b/KFGame/Classes/KFWeapDef_HRG_BarrierRifle.uc index be48ea9..ae0b951 100644 --- a/KFGame/Classes/KFWeapDef_HRG_BarrierRifle.uc +++ b/KFGame/Classes/KFWeapDef_HRG_BarrierRifle.uc @@ -17,6 +17,8 @@ DefaultProperties AmmoPricePerMag=55 ImagePath="wep_ui_hrg_barrierrifle_tex.UI_WeaponSelect_HRG_BarrierRifle" + IsPlayGoHidden=true; + EffectiveRange=68 //UpgradePrice[0]=1500 diff --git a/KFGame/Classes/KFWeapDef_HRG_BlastBrawlers.uc b/KFGame/Classes/KFWeapDef_HRG_BlastBrawlers.uc index e8aaabb..fd96887 100644 --- a/KFGame/Classes/KFWeapDef_HRG_BlastBrawlers.uc +++ b/KFGame/Classes/KFWeapDef_HRG_BlastBrawlers.uc @@ -18,6 +18,8 @@ DefaultProperties ImagePath="WEP_UI_HRG_BlastBrawlers_TEX.UI_WeaponSelect_HRG_BlastBrawlers" + IsPlayGoHidden=true; + EffectiveRange=15 UpgradePrice[0]=1500 diff --git a/KFGame/Classes/KFWeapDef_HRG_Boomy.uc b/KFGame/Classes/KFWeapDef_HRG_Boomy.uc index 5e1402a..563bfdd 100644 --- a/KFGame/Classes/KFWeapDef_HRG_Boomy.uc +++ b/KFGame/Classes/KFWeapDef_HRG_Boomy.uc @@ -17,6 +17,8 @@ DefaultProperties AmmoPricePerMag=30 //50 ImagePath="WEP_UI_HRG_Boomy_TEX.UI_WeaponSelect_HRG_Boomy" + IsPlayGoHidden=true; + EffectiveRange=50 UpgradePrice[0]=600 diff --git a/KFGame/Classes/KFWeapDef_HRG_CranialPopper.uc b/KFGame/Classes/KFWeapDef_HRG_CranialPopper.uc index 8a87de7..5e2dd49 100644 --- a/KFGame/Classes/KFWeapDef_HRG_CranialPopper.uc +++ b/KFGame/Classes/KFWeapDef_HRG_CranialPopper.uc @@ -17,6 +17,8 @@ DefaultProperties ImagePath="wep_ui_hrg_cranialpopper_tex.UI_WeaponSelect_HRG_CranialPopper" EffectiveRange=90 + IsPlayGoHidden=true; + UpgradePrice[0]=700 UpgradePrice[1]=1500 diff --git a/KFGame/Classes/KFWeapDef_HRG_Crossboom.uc b/KFGame/Classes/KFWeapDef_HRG_Crossboom.uc index 1c2f721..04a8599 100644 --- a/KFGame/Classes/KFWeapDef_HRG_Crossboom.uc +++ b/KFGame/Classes/KFWeapDef_HRG_Crossboom.uc @@ -17,6 +17,8 @@ DefaultProperties AmmoPricePerMag=14 ImagePath="WEP_UI_HRG_Crossboom_TEX.UI_WeaponSelect_Crossboom" + IsPlayGoHidden=true; + EffectiveRange=80 UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_HRG_Dragonbreath.uc b/KFGame/Classes/KFWeapDef_HRG_Dragonbreath.uc index 62aa50e..836f68b 100644 --- a/KFGame/Classes/KFWeapDef_HRG_Dragonbreath.uc +++ b/KFGame/Classes/KFWeapDef_HRG_Dragonbreath.uc @@ -16,6 +16,8 @@ DefaultProperties AmmoPricePerMag=25 ImagePath="WEP_UI_HRG_MegaDragonsbreath_TEX.UI_WeaponSelect_HRG_MegaDragonsbreath" + IsPlayGoHidden=true; + EffectiveRange=25 UpgradePrice[0]=1500 diff --git a/KFGame/Classes/KFWeapDef_HRG_EMP_ArcGenerator.uc b/KFGame/Classes/KFWeapDef_HRG_EMP_ArcGenerator.uc index e163c1c..24b3803 100644 --- a/KFGame/Classes/KFWeapDef_HRG_EMP_ArcGenerator.uc +++ b/KFGame/Classes/KFWeapDef_HRG_EMP_ArcGenerator.uc @@ -15,6 +15,8 @@ DefaultProperties AmmoPricePerMag=110 //66 ImagePath="WEP_UI_HRG_ArcGenerator_TEX.UI_WeaponSelect_HRG_ArcGenerator" + IsPlayGoHidden=true; + EffectiveRange=70 UpgradePrice[0]=1500 diff --git a/KFGame/Classes/KFWeapDef_HRG_Energy.uc b/KFGame/Classes/KFWeapDef_HRG_Energy.uc index ae4c93f..4045cb7 100644 --- a/KFGame/Classes/KFWeapDef_HRG_Energy.uc +++ b/KFGame/Classes/KFWeapDef_HRG_Energy.uc @@ -18,6 +18,8 @@ DefaultProperties AmmoPricePerMag=70 //65 ImagePath="WEP_UI_HRG_Energy_TEX.UI_WeaponSelect_HRG_Energy" + IsPlayGoHidden=true; + EffectiveRange=50 UpgradePrice[0]=1500 diff --git a/KFGame/Classes/KFWeapDef_HRG_Kaboomstick.uc b/KFGame/Classes/KFWeapDef_HRG_Kaboomstick.uc index b9d88b5..657ef57 100644 --- a/KFGame/Classes/KFWeapDef_HRG_Kaboomstick.uc +++ b/KFGame/Classes/KFWeapDef_HRG_Kaboomstick.uc @@ -20,6 +20,8 @@ DefaultProperties AmmoPricePerMag=15 ImagePath="WEP_UI_HRG_Kaboomstick_TEX.UI_WeaponSelect_HRG_Kaboomstick" + IsPlayGoHidden=true; + EffectiveRange=40 //15 UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_HRG_Locust.uc b/KFGame/Classes/KFWeapDef_HRG_Locust.uc index ed63eb3..7d3b625 100644 --- a/KFGame/Classes/KFWeapDef_HRG_Locust.uc +++ b/KFGame/Classes/KFWeapDef_HRG_Locust.uc @@ -18,6 +18,8 @@ DefaultProperties AmmoPricePerMag=40 ImagePath="wep_ui_hrg_locust_tex.UI_WeaponSelect_HRG_Locust" + IsPlayGoHidden=true; + EffectiveRange=100 UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_HRG_MedicMissile.uc b/KFGame/Classes/KFWeapDef_HRG_MedicMissile.uc index 6181bb3..0d9390e 100644 --- a/KFGame/Classes/KFWeapDef_HRG_MedicMissile.uc +++ b/KFGame/Classes/KFWeapDef_HRG_MedicMissile.uc @@ -16,6 +16,8 @@ DefaultProperties AmmoPricePerMag=25 ImagePath="WEP_UI_HRG_MedicMissile_TEX.UI_WeaponSelect_HRG_MedicMissile" + IsPlayGoHidden=true; + EffectiveRange=100 UpgradePrice[0]=1500 diff --git a/KFGame/Classes/KFWeapDef_HRG_SonicGun.uc b/KFGame/Classes/KFWeapDef_HRG_SonicGun.uc index d5d1d5d..da7ffae 100644 --- a/KFGame/Classes/KFWeapDef_HRG_SonicGun.uc +++ b/KFGame/Classes/KFWeapDef_HRG_SonicGun.uc @@ -15,6 +15,8 @@ DefaultProperties AmmoPricePerMag=65 //75 ImagePath="WEP_UI_HRG_SonicGun_TEX.UI_WeaponSelect_HRG_SonicGun" + IsPlayGoHidden=true; + EffectiveRange=70 UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_HRG_Stunner.uc b/KFGame/Classes/KFWeapDef_HRG_Stunner.uc index 6baa26c..fd4be18 100644 --- a/KFGame/Classes/KFWeapDef_HRG_Stunner.uc +++ b/KFGame/Classes/KFWeapDef_HRG_Stunner.uc @@ -17,6 +17,8 @@ DefaultProperties AmmoPricePerMag=36 ImagePath="ui_weaponselect_tex.UI_WeaponSelect_AA12" + IsPlayGoHidden=true; + EffectiveRange=70 UpgradePrice[0]=1500 diff --git a/KFGame/Classes/KFWeapDef_HRG_Vampire.uc b/KFGame/Classes/KFWeapDef_HRG_Vampire.uc index 922049e..6d2ff14 100644 --- a/KFGame/Classes/KFWeapDef_HRG_Vampire.uc +++ b/KFGame/Classes/KFWeapDef_HRG_Vampire.uc @@ -15,6 +15,8 @@ DefaultProperties AmmoPricePerMag=60 //70 ImagePath="WEP_UI_HRG_Vampire_TEX.UI_WeaponSelect_HRG_Vampire" + IsPlayGoHidden=true; + EffectiveRange=70 UpgradePrice[0]=1500 diff --git a/KFGame/Classes/KFWeapDef_HVStormCannon.uc b/KFGame/Classes/KFWeapDef_HVStormCannon.uc index 4b73694..75b7e9a 100644 --- a/KFGame/Classes/KFWeapDef_HVStormCannon.uc +++ b/KFGame/Classes/KFWeapDef_HVStormCannon.uc @@ -15,6 +15,9 @@ DefaultProperties BuyPrice=1400 AmmoPricePerMag=40 ImagePath="wep_ui_hvstormcannon_tex.UI_WeaponSelect_HVStormCannon" + + IsPlayGoHidden=true; + EffectiveRange=100 UpgradePrice[0]=1500 diff --git a/KFGame/Classes/KFWeapDef_Healthrower_HRG.uc b/KFGame/Classes/KFWeapDef_Healthrower_HRG.uc index 5e13e40..b458341 100644 --- a/KFGame/Classes/KFWeapDef_Healthrower_HRG.uc +++ b/KFGame/Classes/KFWeapDef_Healthrower_HRG.uc @@ -18,6 +18,8 @@ DefaultProperties AmmoPricePerMag=70 ImagePath="Wep_UI_HRG_Healthrower_TEX.UI_WeaponSelect_HRG_Healthrower" + IsPlayGoHidden=true; + EffectiveRange=17 UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_IonThruster.uc b/KFGame/Classes/KFWeapDef_IonThruster.uc index 0812251..e518f85 100644 --- a/KFGame/Classes/KFWeapDef_IonThruster.uc +++ b/KFGame/Classes/KFWeapDef_IonThruster.uc @@ -14,6 +14,9 @@ DefaultProperties BuyPrice=2000 ImagePath="WEP_UI_Ion_Sword_TEX.UI_WeaponSelect_IonSword" + IsPlayGoHidden=true; + + EffectiveRange=5 SharedUnlockId=SCU_IonThruster diff --git a/KFGame/Classes/KFWeapDef_Mine_Reconstructor.uc b/KFGame/Classes/KFWeapDef_Mine_Reconstructor.uc index d280e7f..05d19dc 100644 --- a/KFGame/Classes/KFWeapDef_Mine_Reconstructor.uc +++ b/KFGame/Classes/KFWeapDef_Mine_Reconstructor.uc @@ -17,6 +17,8 @@ DefaultProperties AmmoPricePerMag =36 //42 ImagePath = "WEP_UI_Mine_Reconstructor_TEX.UI_WeaponSelect_HMTechMineReconstructor" + IsPlayGoHidden=true; + EffectiveRange = 50 UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_Minigun.uc b/KFGame/Classes/KFWeapDef_Minigun.uc index f60be81..f41f676 100644 --- a/KFGame/Classes/KFWeapDef_Minigun.uc +++ b/KFGame/Classes/KFWeapDef_Minigun.uc @@ -17,6 +17,8 @@ DefaultProperties AmmoPricePerMag= 90//125 //175 //250 ImagePath="WEP_UI_Minigun_TEX.UI_WeaponSelect_Minigun" + IsPlayGoHidden=true; + EffectiveRange=68 // Stoner63A Range SharedUnlockId=SCU_Minigun diff --git a/KFGame/Classes/KFWeapDef_MosinNagant.uc b/KFGame/Classes/KFWeapDef_MosinNagant.uc index 7ba98b2..09a22fc 100644 --- a/KFGame/Classes/KFWeapDef_MosinNagant.uc +++ b/KFGame/Classes/KFWeapDef_MosinNagant.uc @@ -18,6 +18,8 @@ DefaultProperties AmmoPricePerMag=42 ImagePath="wep_ui_mosin_tex.UI_WeaponSelect_MosinNagant" + IsPlayGoHidden=true; + EffectiveRange=90 UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_NailGun_HRG.uc b/KFGame/Classes/KFWeapDef_NailGun_HRG.uc index 0bc8ce4..777c2aa 100644 --- a/KFGame/Classes/KFWeapDef_NailGun_HRG.uc +++ b/KFGame/Classes/KFWeapDef_NailGun_HRG.uc @@ -19,6 +19,8 @@ DefaultProperties AmmoPricePerMag=45 ImagePath="WEP_UI_HRG_Nailgun_PDW_TEX.UI_WeaponSelect_HRG_Nailgun_PDW" + IsPlayGoHidden=true; + EffectiveRange=55 UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_ParasiteImplanter.uc b/KFGame/Classes/KFWeapDef_ParasiteImplanter.uc index a354b3d..ebab5e8 100644 --- a/KFGame/Classes/KFWeapDef_ParasiteImplanter.uc +++ b/KFGame/Classes/KFWeapDef_ParasiteImplanter.uc @@ -14,6 +14,8 @@ defaultproperties WeaponClassPath="KFGameContent.KFWeap_Rifle_ParasiteImplanter" ImagePath="wep_ui_parasiteimplanter_tex.UI_WeaponSelect_ParasiteImplanter" + IsPlayGoHidden=true; + BuyPrice=1500 AmmoPricePerMag=42 EffectiveRange=90 diff --git a/KFGame/Classes/KFWeapDef_Pistol_DualG18.uc b/KFGame/Classes/KFWeapDef_Pistol_DualG18.uc index 20fb731..d2ca6d2 100644 --- a/KFGame/Classes/KFWeapDef_Pistol_DualG18.uc +++ b/KFGame/Classes/KFWeapDef_Pistol_DualG18.uc @@ -21,6 +21,8 @@ DefaultProperties ImagePath="WEP_UI_Dual_G18C_TEX.UI_WeaponSelect_Dual_G18C" + IsPlayGoHidden=true; + UpgradePrice[0]=1500 UpgradeSellPrice[0]=1125 diff --git a/KFGame/Classes/KFWeapDef_Pistol_G18C.uc b/KFGame/Classes/KFWeapDef_Pistol_G18C.uc index 0a09526..2a26d7d 100644 --- a/KFGame/Classes/KFWeapDef_Pistol_G18C.uc +++ b/KFGame/Classes/KFWeapDef_Pistol_G18C.uc @@ -21,6 +21,8 @@ DefaultProperties ImagePath="WEP_UI_G18C_TEX.UI_WeaponSelect_G18C" + IsPlayGoHidden=true; + UpgradePrice[0]=1500 UpgradeSellPrice[0]=1125 diff --git a/KFGame/Classes/KFWeapDef_Rifle_FrostShotgunAxe.uc b/KFGame/Classes/KFWeapDef_Rifle_FrostShotgunAxe.uc index adabcf5..a0b5b10 100644 --- a/KFGame/Classes/KFWeapDef_Rifle_FrostShotgunAxe.uc +++ b/KFGame/Classes/KFWeapDef_Rifle_FrostShotgunAxe.uc @@ -17,6 +17,8 @@ DefaultProperties AmmoPricePerMag=39 //36 ImagePath="WEP_UI_Frost_Shotgun_Axe_TEX.UI_WeaponSelect_FrostGun" + IsPlayGoHidden=true; + EffectiveRange=35 UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_SW500Dual_HRG.uc b/KFGame/Classes/KFWeapDef_SW500Dual_HRG.uc index 5bdbe48..b6a4bce 100644 --- a/KFGame/Classes/KFWeapDef_SW500Dual_HRG.uc +++ b/KFGame/Classes/KFWeapDef_SW500Dual_HRG.uc @@ -18,6 +18,8 @@ DefaultProperties AmmoPricePerMag=42 ImagePath="WEP_UI_Dual_HRG_SW_500_TEX.UI_WeaponSelect_HRG_DualSW500" + IsPlayGoHidden=true; + EffectiveRange=15 UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_SW500_HRG.uc b/KFGame/Classes/KFWeapDef_SW500_HRG.uc index 7fb9c9d..00b6ea2 100644 --- a/KFGame/Classes/KFWeapDef_SW500_HRG.uc +++ b/KFGame/Classes/KFWeapDef_SW500_HRG.uc @@ -18,6 +18,8 @@ DefaultProperties AmmoPricePerMag=21 ImagePath="WEP_UI_HRG_SW_500_TEX.UI_WeaponSelect_HRG_SW500" + IsPlayGoHidden=true; + EffectiveRange=15 UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_Scythe.uc b/KFGame/Classes/KFWeapDef_Scythe.uc index 55c4588..a508003 100644 --- a/KFGame/Classes/KFWeapDef_Scythe.uc +++ b/KFGame/Classes/KFWeapDef_Scythe.uc @@ -15,6 +15,8 @@ DefaultProperties BuyPrice=1500 ImagePath="WEP_UI_Scythe_TEX.UI_WeaponSelect_Scythe" + IsPlayGoHidden=true; + EffectiveRange=5 UpgradePrice[0]=1500 diff --git a/KFGame/Classes/KFWeapDef_ShrinkRayGun.uc b/KFGame/Classes/KFWeapDef_ShrinkRayGun.uc index f6b15ae..1a14067 100644 --- a/KFGame/Classes/KFWeapDef_ShrinkRayGun.uc +++ b/KFGame/Classes/KFWeapDef_ShrinkRayGun.uc @@ -16,6 +16,8 @@ DefaultProperties AmmoPricePerMag=50 ImagePath="WEP_UI_ShrinkRay_Gun_TEX.UI_Weapon_Select_Shrink_Ray_Gun" + IsPlayGoHidden=true; + EffectiveRange=12 UpgradePrice[0]=700 diff --git a/KFGame/Classes/KFWeapDef_ThermiteBore.uc b/KFGame/Classes/KFWeapDef_ThermiteBore.uc index 3bb606b..37473a3 100644 --- a/KFGame/Classes/KFWeapDef_ThermiteBore.uc +++ b/KFGame/Classes/KFWeapDef_ThermiteBore.uc @@ -16,6 +16,8 @@ DefaultProperties AmmoPricePerMag=78 ImagePath="WEP_UI_Thermite_TEX.UI_WeaponSelect_Thermite" + IsPlayGoHidden=true; + EffectiveRange=78 UpgradePrice[0]=1500 diff --git a/KFGame/Classes/KFWeapDef_ZedMKIII.uc b/KFGame/Classes/KFWeapDef_ZedMKIII.uc index be9c47b..39df8fe 100644 --- a/KFGame/Classes/KFWeapDef_ZedMKIII.uc +++ b/KFGame/Classes/KFWeapDef_ZedMKIII.uc @@ -16,6 +16,8 @@ DefaultProperties AmmoPricePerMag=75 ImagePath="wep_ui_zedmkiii_tex.UI_WeaponSelect_ZEDMKIII" + IsPlayGoHidden=true; + EffectiveRange=100 SharedUnlockId=SCU_ZedMKIII diff --git a/KFGame/Classes/KFWeapDef_Zweihander.uc b/KFGame/Classes/KFWeapDef_Zweihander.uc index b53a0d1..dc444fa 100644 --- a/KFGame/Classes/KFWeapDef_Zweihander.uc +++ b/KFGame/Classes/KFWeapDef_Zweihander.uc @@ -17,6 +17,8 @@ DefaultProperties BuyPrice=1300 ImagePath="WEP_UI_Zweihander_TEX.UI_WeaponSelect_Zweihander" + IsPlayGoHidden=true; + EffectiveRange=3 SharedUnlockId=SCU_Zweihander diff --git a/KFGame/Classes/KFWeapon.uc b/KFGame/Classes/KFWeapon.uc index 7f4f1bf..7f316b5 100644 --- a/KFGame/Classes/KFWeapon.uc +++ b/KFGame/Classes/KFWeapon.uc @@ -858,6 +858,8 @@ var config bool bLogAmmo; /** Log weapon upgrade system. */ var const bool bLogWeaponUpgrade; +var const bool UseFixedPhysicalFireLocation; + /********************************************************************************************* * @name Weapon Upgrade System *********************************************************************************************/ @@ -3938,7 +3940,14 @@ static simulated function class GetKFProjectileClassByFiringMode(i AimDir = Vector(GetAdjustedAim( StartTrace )); // this is the location where the projectile is spawned. - RealStartLoc = GetPhysicalFireStartLoc(AimDir); + if (UseFixedPhysicalFireLocation) + { + RealStartLoc = GetFixedPhysicalFireStartLoc(); + } + else + { + RealStartLoc = GetPhysicalFireStartLoc(AimDir); + } if( StartTrace != RealStartLoc ) { @@ -8047,5 +8056,7 @@ defaultproperties bUsesSecondaryAmmoAltHUD=false bForceHandleImpacts=false + + UseFixedPhysicalFireLocation=false } diff --git a/KFGame/Classes/KFWeaponDefinition.uc b/KFGame/Classes/KFWeaponDefinition.uc index cc3b9ef..3532626 100644 --- a/KFGame/Classes/KFWeaponDefinition.uc +++ b/KFGame/Classes/KFWeaponDefinition.uc @@ -20,6 +20,9 @@ var string AttachmentArchtypePath; /** Path to the UI thumbnail texture */ var protected string ImagePath; +/** Is Weapong Hidden in PS4 Initial Chunk PlayGO PS4 */ +var bool IsPlayGoHidden; + /** The cost of this weapon ( Sold for .75 this amount ) */ var(Trader) int BuyPrice; /** Price per magazine */ diff --git a/KFGameContent/Classes/KFDT_EMP_HVStormCannon.uc b/KFGameContent/Classes/KFDT_EMP_HVStormCannon.uc index 99fc025..6736228 100644 --- a/KFGameContent/Classes/KFDT_EMP_HVStormCannon.uc +++ b/KFGameContent/Classes/KFDT_EMP_HVStormCannon.uc @@ -47,7 +47,7 @@ defaultproperties GoreDamageGroup=DGT_EMP EffectGroup=FXG_Electricity - ForceImpactEffect=ParticleSystem'WEP_HVStormCannon_EMIT.FX_HVStormCannon_Impact' + ForceImpactEffect=ParticleSystem'WEP_HVStormCannon_EMIT.FX_HVStormCannon_Impact_Zed' ForceImpactSound=AkEvent'WW_WEP_HVStormCannon.Play_WEP_HVStormCannon_Impact' WeaponDef=class'KFWeapDef_HVStormCannon' diff --git a/KFGameContent/Classes/KFGameInfo_WeeklySurvival.uc b/KFGameContent/Classes/KFGameInfo_WeeklySurvival.uc index 8e9eac3..a9f86ee 100644 --- a/KFGameContent/Classes/KFGameInfo_WeeklySurvival.uc +++ b/KFGameContent/Classes/KFGameInfo_WeeklySurvival.uc @@ -31,6 +31,8 @@ struct PerkRoulette_PlayerMessageDelegate var array PerkRoulette_PlayersDelegateData; +var array PerkRoulette_PlayersDelegateInventory; + //----------------------------------------------------------------------------- // Statics static event class SetGameType(string MapName, string Options, string Portal) @@ -1177,6 +1179,14 @@ function NotifyKilled(Controller Killer, Controller Killed, Pawn KilledPawn, cla SetTimer(1.5f, false, 'OnVIPDiesEndMatch'); } } + + if (MyKFGRI.IsRandomPerkMode()) + { + if (KFPC_WS_Killed != none) + { + PerkRoulette_PlayersDelegateInventory.AddItem(KFPC_WS_Killed); + } + } } function GunGameLevelGrantWeapon(KFPlayerController_WeeklySurvival KFPC_WS, class ToGrantWeaponDefinition) @@ -1603,8 +1613,79 @@ function ChooseInitialRandomPerk(KFPlayerController_WeeklySurvival KFPC_WS) KFPC_WS.InitialRandomPerk = PerkRouletteRandomInitialIndex; PerkRouletteRandomInitialIndex = (PerkRouletteRandomInitialIndex + 1) % PerkRouletteRandomList.Length; - `Log("PLAYER : " $KFPC_WS); - `Log("InitialRandomPerk : " $KFPC_WS.InitialRandomPerk); + //`Log("PLAYER : " $KFPC_WS); + //`Log("InitialRandomPerk : " $KFPC_WS.InitialRandomPerk); + } +} + +function bool CanAssignDefaultWeaponsToPlayer(Controller NewPlayer) +{ + local KFPlayerController_WeeklySurvival KFPC_WS; + local int i; + + // We can't assign default weapons if we have to wait to assign the New Perk + + KFPC_WS = KFPlayerController_WeeklySurvival(NewPlayer); + if (KFPC_WS != none) + { + for (i = 0; i < PerkRoulette_PlayersDelegateInventory.Length ; ++i) + { + if (KFPC_WS == PerkRoulette_PlayersDelegateInventory[i]) + { + return false; + } + } + } + + return true; +} + +function PerkRoulette_InventoryCustomDelegate() +{ + local KFPlayerController_WeeklySurvival KFPC_WS; + local KFPerk Perk; + local int i; + local byte NewPerk; + + for (i = PerkRoulette_PlayersDelegateInventory.Length - 1 ; i >= 0 ; --i) + { + KFPC_WS = PerkRoulette_PlayersDelegateInventory[i]; + + if (KFPC_WS == none) + { + PerkRoulette_PlayersDelegateInventory.Remove(i, 1); + continue; + } + + Perk = KFPC_WS.GetPerk(); + + // While the new Perk is not valid, or is not the one we expect continue + + if (Perk == none) + { + continue; + } + else + { + NewPerk = (KFPC_WS.InitialRandomPerk + PerkRouletteRandomWaveNum) % PerkRouletteRandomList.Length; + + if (KFPC_WS.Perklist[PerkRouletteRandomList[NewPerk]].PerkClass != Perk.Class) + { + continue; + } + } + + if (KFPC_WS.Pawn != none) + { + AddDefaultInventory(KFPC_WS.Pawn); + + PerkRoulette_PlayersDelegateInventory.Remove(i, 1); + } + } + + if (PerkRoulette_PlayersDelegateInventory.Length == 0) + { + ClearTimer(nameof(PerkRoulette_InventoryCustomDelegate)); } } @@ -1612,7 +1693,17 @@ function ChooseRandomPerks(bool isEndWave) { local KFPlayerController_WeeklySurvival KFPC_WS; local byte NewPerk; + + if (isEndWave) + { + ClearTimer(nameof(PerkRoulette_InventoryCustomDelegate)); + if (PerkRoulette_PlayersDelegateInventory.Length > 0) + { + SetTimer(0.5f, true, nameof(PerkRoulette_InventoryCustomDelegate)); + } + } + foreach WorldInfo.AllControllers(class'KFPlayerController_WeeklySurvival', KFPC_WS) { if (KFPC_WS.InitialRandomPerk == 255 || KFPC_WS.PlayerReplicationInfo.bOnlySpectator || KFPC_WS.IsInState('Spectating')) diff --git a/KFGameContent/Classes/KFProj_Bullet_HVStormCannon.uc b/KFGameContent/Classes/KFProj_Bullet_HVStormCannon.uc index 98e2c7f..2675293 100644 --- a/KFGameContent/Classes/KFProj_Bullet_HVStormCannon.uc +++ b/KFGameContent/Classes/KFProj_Bullet_HVStormCannon.uc @@ -14,6 +14,8 @@ defaultproperties MaxSpeed=22500.0 Speed=22500.0 + ProjEffectsFadeOutDuration=0 + DamageRadius=0 ProjFlightTemplate = ParticleSystem'WEP_HVStormCannon_EMIT.FX_HVStormCannon_Projectile' diff --git a/KFGameContent/Classes/KFProj_HRG_BallisticBouncer.uc b/KFGameContent/Classes/KFProj_HRG_BallisticBouncer.uc index 2222042..ce8c15b 100644 --- a/KFGameContent/Classes/KFProj_HRG_BallisticBouncer.uc +++ b/KFGameContent/Classes/KFProj_HRG_BallisticBouncer.uc @@ -340,6 +340,8 @@ simulated function ProcessBulletTouch(Actor Other, Vector HitLocation, Vector Hi if ( HitZoneImpactList.length > 0 ) { + IncrementNumImpacts(Victim); + HitZoneImpactList[0].RayDir = Direction; if( Owner != none ) @@ -351,8 +353,6 @@ simulated function ProcessBulletTouch(Actor Other, Vector HitLocation, Vector Hi } } - IncrementNumImpacts(Victim); - BounceNoCheckRepeatingTouch(HitNormal, Other); } } @@ -363,7 +363,15 @@ simulated function IncrementNumImpacts(Pawn Victim) local int i; local KFPlayerController KFPC; - if (WorldInfo.NetMode == NM_Client) + if (WorldInfo.NetMode != NM_Standalone) + { + if (WorldInfo.NetMode == NM_Client) + { + return; + } + } + + if (Victim == none) { return; } diff --git a/KFGameContent/Classes/KFSeasonalEventStats_Xmas2022.uc b/KFGameContent/Classes/KFSeasonalEventStats_Xmas2022.uc index b084786..e66ad92 100644 --- a/KFGameContent/Classes/KFSeasonalEventStats_Xmas2022.uc +++ b/KFGameContent/Classes/KFSeasonalEventStats_Xmas2022.uc @@ -26,7 +26,7 @@ private event Initialize(string MapName) bObjectiveIsValidForMap[0] = 1; // Freeze 500 Zeds using ice arsenal bObjectiveIsValidForMap[1] = 0; // Complete the Weekly on Crash bObjectiveIsValidForMap[2] = 0; // Use 4 Boomstick Jumps in a same match on Crash - bObjectiveIsValidForMap[3] = 1; // Hit 3 Zeds with a shot of HRG Ballistic Bouncer (15 times) + bObjectiveIsValidForMap[3] = 1; // Hit 2 Zeds with a shot of HRG Ballistic Bouncer (30 times) bObjectiveIsValidForMap[4] = 0; // Complete wave 15 on Endless Hard or higher difficulty on Crash if (CapsMapName == "KF-CRASH") diff --git a/KFGameContent/Classes/KFWeapAttach_HRG_BallisticBouncer.uc b/KFGameContent/Classes/KFWeapAttach_HRG_BallisticBouncer.uc index 7ac7709..2782e61 100644 --- a/KFGameContent/Classes/KFWeapAttach_HRG_BallisticBouncer.uc +++ b/KFGameContent/Classes/KFWeapAttach_HRG_BallisticBouncer.uc @@ -37,6 +37,8 @@ simulated function StartFire() if (WeapMesh != none) { + ChargeMIC = ChargeAttachment.CreateAndSetMaterialInstanceConstant(0); + WeapMesh.AttachComponentToSocket(ChargeAttachment, 'MuzzleFlash'); } else @@ -57,7 +59,7 @@ simulated event Tick(float DeltaTime) { local float ChargeValue; - if(bIsCharging && !bIsFullyCharged) + if (bIsCharging && !bIsFullyCharged) { ChargeValue = FMin(class'KFWeap_HRG_BallisticBouncer'.default.MaxChargeTime, WorldInfo.TimeSeconds - StartFireTime) / class'KFWeap_HRG_BallisticBouncer'.default.MaxChargeTime; @@ -67,6 +69,12 @@ simulated event Tick(float DeltaTime) ChargeValue = 1.0f; } + if (ChargeMIC != none) + { + // Change Color + ChargeMIC.SetScalarParameterValue('Charge', ChargeValue); + } + if( ChargeAttachment != none) { ChargeAttachment.SetScale(MinProjPlaceholderScale + (MaxProjPlaceHolderScale - MinProjPlaceholderScale) * ChargeValue); diff --git a/KFGameContent/Classes/KFWeap_HRG_BallisticBouncer.uc b/KFGameContent/Classes/KFWeap_HRG_BallisticBouncer.uc index a30e887..0e25831 100644 --- a/KFGameContent/Classes/KFWeap_HRG_BallisticBouncer.uc +++ b/KFGameContent/Classes/KFWeap_HRG_BallisticBouncer.uc @@ -483,7 +483,6 @@ simulated state MineReconstructorCharge extends WeaponFiring NotifyWeaponFinishedFiring(CurrentFireMode); super.HandleFinishedFiring(); - //`Log("ChargePercentage"@ChargePercentage); } simulated function PutDownWeapon() @@ -577,6 +576,7 @@ simulated function KFProjectile SpawnProjectile(class KFProjClass, BouncingProj.SetInheritedScale(FXScalingFactorByCharge, ChargePercentage); return BouncingProj; } + return none; } @@ -645,8 +645,8 @@ defaultproperties ValueIncreaseTime=0.1 //FOR LERPING DAMANGE - MaxDamageByCharge=200 - MinDamageByCharge=10 + MaxDamageByCharge=300 + MinDamageByCharge=15 // FOV Meshfov=80 MeshIronSightFOV=65 //52 @@ -768,4 +768,6 @@ defaultproperties ChargeStaticMesh = StaticMesh'WEP_HRG_BallisticBouncer_EMIT.HRG_BallisticBouncer_ball_MESH' MinProjPlaceholderScale = 2.0f; MaxProjPlaceholderScale = 3.0f; + + UseFixedPhysicalFireLocation=true } \ No newline at end of file diff --git a/KFGameContent/Classes/KFWeap_HVStormCannon.uc b/KFGameContent/Classes/KFWeap_HVStormCannon.uc index 6dcc073..e4810b3 100644 --- a/KFGameContent/Classes/KFWeap_HVStormCannon.uc +++ b/KFGameContent/Classes/KFWeap_HVStormCannon.uc @@ -70,10 +70,11 @@ simulated function KFProjectile SpawnAllProjectiles(class KFProjCl // 0.32 is a value the artists found that was needed to balance the aim in order to match the iron sight with the bullet impact position R = QuatFromAxisAndAngle(Y, -0.32f * DegToRad); AimDir = QuatRotateVector(R, AimDir); + return SpawnProjectile(KFProjClass, RealStartLoc, AimDir); } } - return SpawnProjectile(KFProjClass, RealStartLoc, AimDir); + return super.SpawnAllProjectiles(KFProjClass, RealStartLoc, AimDir); } simulated function ProcessInstantHitEx(byte FiringMode, ImpactInfo Impact, optional int NumHits, optional out float out_PenetrationVal, optional int ImpactNum ) @@ -382,7 +383,7 @@ defaultproperties FireInterval(DEFAULT_FIREMODE)=0.4 // 150 RPM // 0.8 // 75 RPM Spread(DEFAULT_FIREMODE)=0.005 PenetrationPower(DEFAULT_FIREMODE)=0 - FireOffset=(X=30,Y=16,Z=-8) + //FireOffset=(X=30,Y=16,Z=-8) // BASH_FIREMODE InstantHitDamageTypes(BASH_FIREMODE)=class'KFDT_Bludgeon_HVStormCannon'