From 9420515c6457c39903093771e8b02548c36811a1 Mon Sep 17 00:00:00 2001 From: GenZmeY Date: Sun, 7 Jan 2024 19:40:23 +0300 Subject: [PATCH] replace KFGFxObject_TraderItems only if the patch is applied --- CTI/Classes/CTI.uc | 11 ++++++++--- CTI/Classes/CTI_AutoPurchaseHelper.uc | 6 +++++- CTI/Classes/CTI_GFxMenu_Trader.uc | 2 -- CTI/Classes/CTI_RepInfo.uc | 2 +- CTI/Classes/Trader.uc | 10 +++++++++- 5 files changed, 23 insertions(+), 8 deletions(-) diff --git a/CTI/Classes/CTI.uc b/CTI/Classes/CTI.uc index 1af2144..2245386 100644 --- a/CTI/Classes/CTI.uc +++ b/CTI/Classes/CTI.uc @@ -215,7 +215,7 @@ private function PostInit() ServerPatch(); } - Trader.static.OverwriteTraderItems(KFGRI, WeapDefs, LogLevel); + Trader.static.OverwriteTraderItems(KFGRI, WeapDefs, bApplyPatch, LogLevel); `Log_Info("Trader items:" @ WeapDefs.Length); @@ -257,16 +257,21 @@ private function ServerPatch() } } + if (KFGRI.TraderItems.class != class'KFGFxObject_TraderItems') + { + `Log_Warn("Custom TraderItems detected:" @ String(KFGRI.TraderItems.class) $ ". There may be compatibility issues."); + } + AutoPurchaseHelper = class(KFGI.PlayerControllerClass).default.PurchaseHelperClass; if (AutoPurchaseHelper != class'KFPlayerController'.default.PurchaseHelperClass) { - `Log_Warn("Custom PurchaseHelperClass detected:" @ String(AutoPurchaseHelper) $ ". There may be compatibility issues."); + `Log_Warn("Custom PurchaseHelper detected:" @ String(AutoPurchaseHelper) $ ". There may be compatibility issues."); } InventoryManager = class(KFGI.DefaultPawnClass.default.InventoryManagerClass); if (InventoryManager != class'KFPawn'.default.InventoryManagerClass) { - `Log_Warn("Custom InventoryManagerClass detected:" @ String(InventoryManager) $ ". There may be compatibility issues."); + `Log_Warn("Custom InventoryManager detected:" @ String(InventoryManager) $ ". There may be compatibility issues."); } } diff --git a/CTI/Classes/CTI_AutoPurchaseHelper.uc b/CTI/Classes/CTI_AutoPurchaseHelper.uc index 4fe2775..29362a5 100644 --- a/CTI/Classes/CTI_AutoPurchaseHelper.uc +++ b/CTI/Classes/CTI_AutoPurchaseHelper.uc @@ -248,7 +248,11 @@ public function SetWeaponInformation(KFWeapon KFW) { local int i; - GetCTI_TraderItems(); + if (GetCTI_TraderItems() == None) + { + Super.SetWeaponInformation(KFW); + return; + } for (i = 0; i < CTI_TraderItems.AllItems.Length; i++) { diff --git a/CTI/Classes/CTI_GFxMenu_Trader.uc b/CTI/Classes/CTI_GFxMenu_Trader.uc index d00f198..fd12601 100644 --- a/CTI/Classes/CTI_GFxMenu_Trader.uc +++ b/CTI/Classes/CTI_GFxMenu_Trader.uc @@ -155,9 +155,7 @@ public function Callback_BuyOrSellItem() } else { - `log("Callback_BuyOrSellItem: SelectedItemIndex="$SelectedItemIndexInt, MyKFIM.bLogInventory); ItemInfo = OwnedItemList[SelectedItemIndexInt]; - `log("Callback_BuyOrSellItem: ItemInfo="$ItemInfo.DefaultItem.ClassName, MyKFIM.bLogInventory); MyKFPC.GetPurchaseHelper().SellWeapon(ItemInfo, SelectedItemIndexInt); SetNewSelectedIndex(OwnedItemList.length); diff --git a/CTI/Classes/CTI_RepInfo.uc b/CTI/Classes/CTI_RepInfo.uc index a9b2dc7..1fd3880 100644 --- a/CTI/Classes/CTI_RepInfo.uc +++ b/CTI/Classes/CTI_RepInfo.uc @@ -179,7 +179,7 @@ private simulated function Finished() if (KFGRI != None) { `Log_Debug("Finished: Trader.static.OverwriteTraderItems"); - Trader.static.OverwriteTraderItems(KFGRI, RepArray, LogLevel); + Trader.static.OverwriteTraderItems(KFGRI, RepArray, PatchRequired, LogLevel); `Log_Info("Trader items successfully synchronized!"); } else diff --git a/CTI/Classes/Trader.uc b/CTI/Classes/Trader.uc index 4f93721..92998a4 100644 --- a/CTI/Classes/Trader.uc +++ b/CTI/Classes/Trader.uc @@ -152,6 +152,7 @@ public static simulated function Array< class > GenerateWeap public static simulated function OverwriteTraderItems( KFGameReplicationInfo KFGRI, const out Array > WeapDefs, + bool ApplyPatch, E_LogLevel LogLevel) { local CTI_GFxObject_TraderItems TraderItemsCTI; @@ -188,7 +189,14 @@ public static simulated function OverwriteTraderItems( TraderItemsCTI.SetItemsInfo(TraderItemsCTI.SaleItems); TraderItemsCTI.SetItemsInfo(TraderItemsCTI.AllItems); - KFGRI.TraderItems = TraderItemsCTI; + if (ApplyPatch) + { + KFGRI.TraderItems = TraderItemsCTI; + } + else + { + KFGRI.TraderItems.SaleItems = TraderItemsCTI.SaleItems; + } } private static function bool WeaponClassIsUnique(String WeaponClassPath, const out Array > WeapDefs, E_LogLevel LogLevel)