From 150772e252d3344a3c4d56bdc60231f3ac12fb2c Mon Sep 17 00:00:00 2001 From: ZioPao Date: Tue, 14 Nov 2023 01:46:12 +0100 Subject: [PATCH] pushing before fucking everything up --- .../client/TOC/Handlers/ModDataHandler.lua | 13 ++++++- .../lua/client/TOC/Handlers/PlayerHandler.lua | 2 +- .../client/TOC/Handlers/ProsthesisHandler.lua | 38 +++++++++++++++++-- media/lua/shared/TOC/StaticData.lua | 5 +++ 4 files changed, 51 insertions(+), 7 deletions(-) diff --git a/media/lua/client/TOC/Handlers/ModDataHandler.lua b/media/lua/client/TOC/Handlers/ModDataHandler.lua index 372b2ac..c8c799e 100644 --- a/media/lua/client/TOC/Handlers/ModDataHandler.lua +++ b/media/lua/client/TOC/Handlers/ModDataHandler.lua @@ -47,16 +47,25 @@ function ModDataHandler:setup(key) self.tocData = { -- Generic stuff that does not belong anywhere else isIgnoredPartInfected = false, - isAnyLimbCut = false + isAnyLimbCut = false, + + prosthesis = { + top = {}, + bottom = {} + } } ---@type partData local defaultParams = { isCut = false, isInfected = false, isOperated = false, isCicatrized = false, - isCauterized = false, isVisible = false, isProstEquipped = false, prostFactor = 0 + isCauterized = false, isVisible = false } + + -- TODO Set this up for legs crap -- Initialize limbs + --self.tocData.limbs = {} + for i=1, #StaticData.LIMBS_STRINGS do local limbName = StaticData.LIMBS_STRINGS[i] self.tocData[limbName] = {} diff --git a/media/lua/client/TOC/Handlers/PlayerHandler.lua b/media/lua/client/TOC/Handlers/PlayerHandler.lua index 07a7ad4..6c7a437 100644 --- a/media/lua/client/TOC/Handlers/PlayerHandler.lua +++ b/media/lua/client/TOC/Handlers/PlayerHandler.lua @@ -94,7 +94,6 @@ end Events.OnPlayerGetDamage.Add(PlayerHandler.CheckInfection) ---* Events *-- ---Updates the cicatrization process, run when a limb has been cut function PlayerHandler.UpdateCicatrization() if ModDataHandler.GetInstance():getIsAnyLimbCut() == false then return end @@ -103,6 +102,7 @@ function PlayerHandler.UpdateCicatrization() end + ------------------------------------------ --* OVERRIDES *-- diff --git a/media/lua/client/TOC/Handlers/ProsthesisHandler.lua b/media/lua/client/TOC/Handlers/ProsthesisHandler.lua index f946222..49db2c7 100644 --- a/media/lua/client/TOC/Handlers/ProsthesisHandler.lua +++ b/media/lua/client/TOC/Handlers/ProsthesisHandler.lua @@ -1,10 +1,21 @@ local CommonMethods = require("TOC/CommonMethods") +local StaticData = require("TOC/StaticData") +local ModDataHandler = require("TOC/Handlers/ModDataHandler") local CachedDataHandler = require("TOC/Handlers/CachedDataHandler") ------------------------- ---@class ProsthesisHandler local ProsthesisHandler = {} +local bodyLocArmProst = StaticData.BODYLOCATIONS_BASE_STRINGS.TOC_ArmProst + +---comment +---@param item InventoryItem +function ProsthesisHandler.CheckIfProst(item) + return item:getBodyLocation():contains(bodyLocArmProst) +end + + ---Cache the correct texture for the Health Panel for the currently equipped prosthesis function ProsthesisHandler.SetHealthPanelTexture() -- TODO do it @@ -18,7 +29,7 @@ function ProsthesisHandler.CheckIfEquippable(bodyLocation) local side = CommonMethods.GetSide(bodyLocation) local amputatedLimbs = CachedDataHandler.GetAmputatedLimbs(getPlayer():getUsername()) - for i=1, #amputatedLimbs do + for i = 1, #amputatedLimbs do local limbName = amputatedLimbs[i] if string.contains(limbName, side) and not string.contains(limbName, "UpperArm") then return true @@ -29,13 +40,19 @@ function ProsthesisHandler.CheckIfEquippable(bodyLocation) getPlayer():Say("I can't equip this") return false end +------------------------- +--* Events *-- + + + +------------------------- --* Overrides *-- ---@diagnostic disable-next-line: duplicate-set-field function ISWearClothing:isValid() local bodyLocation = self.item:getBodyLocation() - if not string.contains(bodyLocation, "TOC_ArmProst") then + if not string.contains(bodyLocation, bodyLocArmProst) then return true else return ProsthesisHandler.CheckIfEquippable(bodyLocation) @@ -47,7 +64,7 @@ local og_ISClothingExtraAction_isValid = ISClothingExtraAction.isValid function ISClothingExtraAction:isValid() local bodyLocation = self.item:getBodyLocation() local isEquippable = false - if og_ISClothingExtraAction_isValid(self) and not string.contains(bodyLocation, "TOC_ArmProst") then + if og_ISClothingExtraAction_isValid(self) and not string.contains(bodyLocation, bodyLocArmProst) then isEquippable = true else isEquippable = ProsthesisHandler.CheckIfEquippable(bodyLocation) @@ -57,4 +74,17 @@ function ISClothingExtraAction:isValid() end -return ProsthesisHandler \ No newline at end of file +local og_ISClothingExtraAction_perform = ISClothingExtraAction.perform +function ISClothingExtraAction:perform() + og_ISClothingExtraAction_perform(self) + + if ProsthesisHandler.CheckIfProst(self.item) then + local modDataHandler = ModDataHandler.GetInstance() + --modDataHandler:setIsProstEquipped + end + +end + + + +return ProsthesisHandler diff --git a/media/lua/shared/TOC/StaticData.lua b/media/lua/shared/TOC/StaticData.lua index 0ee7b4e..ed73ca4 100644 --- a/media/lua/shared/TOC/StaticData.lua +++ b/media/lua/shared/TOC/StaticData.lua @@ -13,6 +13,11 @@ StaticData.PARTS_STRINGS = { UpperArm = "UpperArm" } +StaticData.BODYLOCATIONS_BASE_STRINGS = { + TOC_ArmProst = "TOC_ArmProst", + TOC_Arm = "TOC_Arm", +} + -- No "MAX" here. StaticData.IGNORED_PARTS_STRINGS = { "Foot_L", "Foot_R", "Groin", "Head", "LowerLeg_L", "LowerLeg_R", "Neck", "Torso_Lower", "Torso_Upper", "UpperLeg_L", "UpperLeg_R" }