From 29f21decb41d0155c595df08f5eb719d60b4fba4 Mon Sep 17 00:00:00 2001 From: ZioPao Date: Fri, 31 May 2024 10:37:39 +0200 Subject: [PATCH] hotfix to traits --- media/lua/client/TOC/Controllers/DataController.lua | 10 ++++++++++ .../client/TOC/Controllers/LocalPlayerController.lua | 8 +++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/media/lua/client/TOC/Controllers/DataController.lua b/media/lua/client/TOC/Controllers/DataController.lua index 9db7f12..9c89188 100644 --- a/media/lua/client/TOC/Controllers/DataController.lua +++ b/media/lua/client/TOC/Controllers/DataController.lua @@ -97,6 +97,14 @@ function DataController:setup(key) -- self.tocData.isInitializing = false -- ModData.add(key, self.tocData) + + + -- FIX THIS THING HERE ISN'T REALLY CORRECT BUT IT'S A WORKAROUND UNTIL WE FIGURE IT OUT + -- The issue is that we need to do this once, not every single time we load data. + -- Manage their traits + local LocalPlayerController = require("TOC/Controller/LocalPlayerController") + LocalPlayerController.ManageTraits(getPlayer()) + end ---In case of desync between the table on ModData and the table here @@ -417,6 +425,8 @@ function DataController.ReceiveData(key, data) triggerEvent("OnReceivedTocData", handler.username) + -- TODO We need an event to track if initialization has been finalized + -- if username == getPlayer():getUsername() and not handler.isResetForced then diff --git a/media/lua/client/TOC/Controllers/LocalPlayerController.lua b/media/lua/client/TOC/Controllers/LocalPlayerController.lua index 5f66489..b4b8a3b 100644 --- a/media/lua/client/TOC/Controllers/LocalPlayerController.lua +++ b/media/lua/client/TOC/Controllers/LocalPlayerController.lua @@ -6,6 +6,8 @@ require("TOC/Events") ----------- + + -- Handle ONLY stuff for the local client ---@class LocalPlayerController @@ -33,9 +35,6 @@ function LocalPlayerController.InitializePlayer(isForced) Events.OnAmputatedLimb.Add(LocalPlayerController.ToggleUpdateAmputations) LocalPlayerController.ToggleUpdateAmputations() - -- Manage their traits - LocalPlayerController.ManageTraits(playerObj) - -- Since isForced is used to reset an existing player data, we're gonna clean their ISHealthPanel table too if isForced then local ItemsController = require("TOC/Controllers/ItemsController") @@ -50,6 +49,9 @@ end ---Handles the traits ---@param playerObj IsoPlayer function LocalPlayerController.ManageTraits(playerObj) + + -- FIX This can fail if we haven't initialized TOC in time` + local AmputationHandler = require("TOC/Handlers/AmputationHandler") for k, v in pairs(StaticData.TRAITS_BP) do if playerObj:HasTrait(k) then