cleaned naming for StaticData

This commit is contained in:
ZioPao
2023-11-14 10:20:58 +01:00
parent 81be27561d
commit 65795cbe79
8 changed files with 118 additions and 93 deletions

View File

@@ -76,7 +76,7 @@ function AmputationHandler:damageAfterAmputation(surgeonFactor)
local patientStats = self.patientPl:getStats() local patientStats = self.patientPl:getStats()
local bd = self.patientPl:getBodyDamage() local bd = self.patientPl:getBodyDamage()
local bodyPart = bd:getBodyPart(self.bodyPartType) local bodyPart = bd:getBodyPart(self.bodyPartType)
local baseDamage = StaticData.LIMBS_BASE_DAMAGE[self.limbName] local baseDamage = StaticData.LIMBS_BASE_DAMAGE_IND_NUM[self.limbName]
bodyPart:AddDamage(baseDamage - surgeonFactor) bodyPart:AddDamage(baseDamage - surgeonFactor)
bodyPart:setAdditionalPain(baseDamage - surgeonFactor) bodyPart:setAdditionalPain(baseDamage - surgeonFactor)

View File

@@ -22,8 +22,8 @@ CachedDataHandler.amputatedLimbs = {}
function CachedDataHandler.CalculateAmputatedLimbs(username) function CachedDataHandler.CalculateAmputatedLimbs(username)
CachedDataHandler.amputatedLimbs[username] = {} CachedDataHandler.amputatedLimbs[username] = {}
local modDataHandler = ModDataHandler.GetInstance(username) local modDataHandler = ModDataHandler.GetInstance(username)
for i=1, #StaticData.LIMBS_STRINGS do for i=1, #StaticData.LIMBS_STR do
local limbName = StaticData.LIMBS_STRINGS[i] local limbName = StaticData.LIMBS_STR[i]
if modDataHandler:getIsCut(limbName) then if modDataHandler:getIsCut(limbName) then
CachedDataHandler.AddAmputatedLimb(username, limbName) CachedDataHandler.AddAmputatedLimb(username, limbName)
end end

View File

@@ -58,7 +58,7 @@ end
---@param limbName string ---@param limbName string
function ItemsHandler.DeleteOldAmputationItem(playerObj, limbName) function ItemsHandler.DeleteOldAmputationItem(playerObj, limbName)
local side = CommonMethods.GetSide(limbName) local side = CommonMethods.GetSide(limbName)
for partName, _ in pairs(StaticData.PARTS_STRINGS) do for partName, _ in pairs(StaticData.PARTS_IND_STR) do
local othLimbName = partName .. "_" .. side local othLimbName = partName .. "_" .. side
local othClothingItemName = StaticData.AMPUTATION_CLOTHING_ITEM_BASE .. othLimbName local othClothingItemName = StaticData.AMPUTATION_CLOTHING_ITEM_BASE .. othLimbName
@@ -76,8 +76,8 @@ end
---@param playerObj IsoPlayer ---@param playerObj IsoPlayer
function ItemsHandler.DeleteAllOldAmputationItems(playerObj) function ItemsHandler.DeleteAllOldAmputationItems(playerObj)
for i=1, #StaticData.LIMBS_STRINGS do for i=1, #StaticData.LIMBS_STR do
local limbName = StaticData.LIMBS_STRINGS[i] local limbName = StaticData.LIMBS_STR[i]
local clothItemName = StaticData.AMPUTATION_CLOTHING_ITEM_BASE .. limbName local clothItemName = StaticData.AMPUTATION_CLOTHING_ITEM_BASE .. limbName
local clothItem = playerObj:getInventory():FindAndReturn(clothItemName) local clothItem = playerObj:getInventory():FindAndReturn(clothItemName)
---@cast clothItem InventoryItem ---@cast clothItem InventoryItem

View File

@@ -61,15 +61,15 @@ function ModDataHandler:setup(key)
-- Initialize limbs -- Initialize limbs
for i=1, #StaticData.LIMBS_STRINGS do for i=1, #StaticData.LIMBS_STR do
local limbName = StaticData.LIMBS_STRINGS[i] local limbName = StaticData.LIMBS_STR[i]
self.tocData.limbs[limbName] = {} self.tocData.limbs[limbName] = {}
self:setLimbParams(StaticData.LIMBS_STRINGS[i], defaultParams, 0) self:setLimbParams(StaticData.LIMBS_STR[i], defaultParams, 0)
end end
local prosthesesGroups = {"top", "bottom"} -- Initialize prostheses stuff
for i=1, #prosthesesGroups do for i=1, #StaticData.PROSTHESES_GROUPS do
local group = prosthesesGroups[i] local group = StaticData.PROSTHESES_GROUPS[i]
self.tocData.prostheses[group] = { self.tocData.prostheses[group] = {
isEquipped = false, isEquipped = false,
prostFactor = 0 prostFactor = 0
@@ -181,15 +181,15 @@ end
function ModDataHandler:setCutLimb(limbName, isOperated, isCicatrized, isCauterized, surgeonFactor) function ModDataHandler:setCutLimb(limbName, isOperated, isCicatrized, isCauterized, surgeonFactor)
local cicatrizationTime = 0 local cicatrizationTime = 0
if isCicatrized == false or isCauterized == false then if isCicatrized == false or isCauterized == false then
cicatrizationTime = StaticData.LIMBS_CICATRIZATION_TIME[limbName] - surgeonFactor cicatrizationTime = StaticData.LIMBS_CICATRIZATION_TIME_IND_NUM[limbName] - surgeonFactor
end end
---@type partData ---@type partData
local params = {isCut = true, isInfected = false, isOperated = isOperated, isCicatrized = isCicatrized, isCauterized = isCauterized, isVisible = true} local params = {isCut = true, isInfected = false, isOperated = isOperated, isCicatrized = isCicatrized, isCauterized = isCauterized, isVisible = true}
self:setLimbParams(limbName, params, cicatrizationTime) self:setLimbParams(limbName, params, cicatrizationTime)
for i=1, #StaticData.LIMBS_DEPENDENCIES[limbName] do for i=1, #StaticData.LIMBS_DEPENDENCIES_IND_STR[limbName] do
local dependedLimbName = StaticData.LIMBS_DEPENDENCIES[limbName][i] local dependedLimbName = StaticData.LIMBS_DEPENDENCIES_IND_STR[limbName][i]
-- We don't care about isOperated, isCicatrized, isCauterized since this is depending on another limb -- We don't care about isOperated, isCicatrized, isCauterized since this is depending on another limb
-- Same story for cicatrizationTime, which will be 0 -- Same story for cicatrizationTime, which will be 0
@@ -213,8 +213,6 @@ function ModDataHandler:setLimbParams(limbName, ampStatus, cicatrizationTime)
if ampStatus.isCicatrized ~= nil then limbData.isCicatrized = ampStatus.isCicatrized end if ampStatus.isCicatrized ~= nil then limbData.isCicatrized = ampStatus.isCicatrized end
if ampStatus.isCauterized ~= nil then limbData.isCauterized = ampStatus.isCauterized end if ampStatus.isCauterized ~= nil then limbData.isCauterized = ampStatus.isCauterized end
if ampStatus.isVisible ~= nil then limbData.isVisible = ampStatus.isVisible end if ampStatus.isVisible ~= nil then limbData.isVisible = ampStatus.isVisible end
if ampStatus.isProstEquipped ~= nil then limbData.isProstEquipped = ampStatus.isProstEquipped end
if ampStatus.prostFactor ~= nil then limbData.prostFactor = ampStatus.prostFactor end
if cicatrizationTime ~= nil then limbData.cicatrizationTime = cicatrizationTime end if cicatrizationTime ~= nil then limbData.cicatrizationTime = cicatrizationTime end
end end

View File

@@ -64,9 +64,9 @@ function PlayerHandler.CheckInfection(character)
local bd = character:getBodyDamage() local bd = character:getBodyDamage()
local modDataHandler = ModDataHandler.GetInstance() local modDataHandler = ModDataHandler.GetInstance()
for i=1, #StaticData.LIMBS_STRINGS do for i=1, #StaticData.LIMBS_STR do
local limbName = StaticData.LIMBS_STRINGS[i] local limbName = StaticData.LIMBS_STR[i]
local bptEnum = StaticData.BODYPARTSTYPES_ENUM[limbName] local bptEnum = StaticData.BODYLOCS_IND_BPT[limbName]
local bodyPart = bd:getBodyPart(bptEnum) local bodyPart = bd:getBodyPart(bptEnum)
if bodyPart:bitten() or bodyPart:IsInfected() then if bodyPart:bitten() or bodyPart:IsInfected() then
@@ -82,8 +82,8 @@ function PlayerHandler.CheckInfection(character)
-- We can skip this loop if the player has been infected. The one before we kinda need it to handle correctly the bites in case the player wanna cut stuff off anyway -- We can skip this loop if the player has been infected. The one before we kinda need it to handle correctly the bites in case the player wanna cut stuff off anyway
if ModDataHandler.GetInstance():getIsIgnoredPartInfected() then return end if ModDataHandler.GetInstance():getIsIgnoredPartInfected() then return end
for i=1, #StaticData.IGNORED_PARTS_STRINGS do for i=1, #StaticData.IGNORED_BODYLOCS_IND_BPT do
local bodyPartType = BodyPartType[StaticData.IGNORED_PARTS_STRINGS[i]] local bodyPartType = StaticData.IGNORED_BODYLOCS_IND_BPT[i]
local bodyPart = bd:getBodyPart(bodyPartType) local bodyPart = bd:getBodyPart(bodyPartType)
if bodyPart and (bodyPart:bitten() or bodyPart:IsInfected()) then if bodyPart and (bodyPart:bitten() or bodyPart:IsInfected()) then
ModDataHandler.GetInstance():setIsIgnoredPartInfected(true) ModDataHandler.GetInstance():setIsIgnoredPartInfected(true)
@@ -124,7 +124,7 @@ function ISBaseTimedAction:adjustMaxTime(maxTime)
local perkLevel = pl:getPerkLevel(perk) local perkLevel = pl:getPerkLevel(perk)
local perkLevelScaled local perkLevelScaled
if perkLevel ~= 0 then perkLevelScaled = perkLevel / 10 else perkLevelScaled = 0 end if perkLevel ~= 0 then perkLevelScaled = perkLevel / 10 else perkLevelScaled = 0 end
time = time * (StaticData.LIMBS_TIME_MULTIPLIER[limbName] - perkLevelScaled) time = time * (StaticData.LIMBS_TIME_MULTIPLIER_IND_NUM[limbName] - perkLevelScaled)
end end
end end
end end
@@ -138,7 +138,7 @@ function ISBaseTimedAction:perform()
og_ISBaseTimedAction_perform(self) og_ISBaseTimedAction_perform(self)
if ModDataHandler.GetInstance():getIsAnyLimbCut() then if ModDataHandler.GetInstance():getIsAnyLimbCut() then
for side, _ in pairs(StaticData.SIDES_STRINGS) do for side, _ in pairs(StaticData.SIDES_IND_STR) do
local limbName = "Hand_" .. side local limbName = "Hand_" .. side
if ModDataHandler.GetInstance():getIsCut(limbName) then if ModDataHandler.GetInstance():getIsCut(limbName) then
PlayerHandler.playerObj:getXp():AddXP(Perks["Side_" .. side], 2) -- TODO Make it dynamic PlayerHandler.playerObj:getXp():AddXP(Perks["Side_" .. side], 2) -- TODO Make it dynamic

View File

@@ -7,7 +7,7 @@ local CachedDataHandler = require("TOC/Handlers/CachedDataHandler")
---@class ProsthesisHandler ---@class ProsthesisHandler
local ProsthesisHandler = {} local ProsthesisHandler = {}
local bodyLocArmProst = StaticData.BODYLOCATIONS_BASE_STRINGS.TOC_ArmProst local bodyLocArmProst = StaticData.MOD_BODYLOCS_BASE_IND_STR.TOC_ArmProst
---comment ---comment
---@param item InventoryItem ---@param item InventoryItem

View File

@@ -28,8 +28,8 @@ local function AddInventoryAmputationOptions(surgeonNum, context, item)
local option = context:addOption(getText("ContextMenu_Amputate"), nil) local option = context:addOption(getText("ContextMenu_Amputate"), nil)
local subMenu = context:getNew(context) local subMenu = context:getNew(context)
context:addSubMenu(option, subMenu) context:addSubMenu(option, subMenu)
for i = 1, #StaticData.LIMBS_STRINGS do for i = 1, #StaticData.LIMBS_STR do
local limbName = StaticData.LIMBS_STRINGS[i] local limbName = StaticData.LIMBS_STR[i]
if not ModDataHandler.GetInstance():getIsCut(limbName) then if not ModDataHandler.GetInstance():getIsCut(limbName) then
local limbTranslatedName = getText("ContextMenu_Limb_" .. limbName) local limbTranslatedName = getText("ContextMenu_Limb_" .. limbName)
subMenu:addOption(limbTranslatedName, surgeonObj, PerformAction, surgeonObj, limbName, item) -- TODO Should be patient, not surgeon subMenu:addOption(limbTranslatedName, surgeonObj, PerformAction, surgeonObj, limbName, item) -- TODO Should be patient, not surgeon
@@ -82,7 +82,7 @@ end
---@param context ISContextMenu ---@param context ISContextMenu
function CutLimbHandler:addToMenu(context) function CutLimbHandler:addToMenu(context)
local types = self:getAllItemTypes(self.items.ITEMS) local types = self:getAllItemTypes(self.items.ITEMS)
if #types > 0 and StaticData.BODYPARTSTYPES_ENUM[self.limbName] then if #types > 0 and StaticData.BODYLOCS_IND_BPT[self.limbName] then
TOC_DEBUG.print("addToMenu, types > 0") TOC_DEBUG.print("addToMenu, types > 0")
if not ModDataHandler.GetInstance():getIsCut(self.limbName) then if not ModDataHandler.GetInstance():getIsCut(self.limbName) then
context:addOption(getText("ContextMenu_Amputate"), self, self.onMenuOptionSelected) context:addOption(getText("ContextMenu_Amputate"), self, self.onMenuOptionSelected)
@@ -92,7 +92,7 @@ end
function CutLimbHandler:dropItems(items) function CutLimbHandler:dropItems(items)
local types = self:getAllItemTypes(items) local types = self:getAllItemTypes(items)
if #self.items.ITEMS > 0 and #types == 1 and StaticData.BODYPARTSTYPES_ENUM[self.limbName] then if #self.items.ITEMS > 0 and #types == 1 and StaticData.BODYLOCS_IND_BPT[self.limbName] then
self:onMenuOptionSelected(types[1]) self:onMenuOptionSelected(types[1])
return true return true
end end

View File

@@ -1,43 +1,112 @@
---@alias partData { isCut : boolean?, isInfected : boolean?, isOperated : boolean?, isCicatrized : boolean?, isCauterized : boolean?, isVisible : boolean?, cicatrizationTime : number, isProstEquipped : boolean, prostFactor : number} ---@alias partData { isCut : boolean?, isInfected : boolean?, isOperated : boolean?, isCicatrized : boolean?, isCauterized : boolean?, isVisible : boolean?, cicatrizationTime : number }
---@alias limbsTable {Hand_L : partData, ForeArm_L : partData, UpperArm_L : partData, Hand_R : partData, ForeArm_R : partData, UpperArm_R : partData,} ---@alias limbsTable {Hand_L : partData, ForeArm_L : partData, UpperArm_L : partData, Hand_R : partData, ForeArm_R : partData, UpperArm_R : partData }
---@alias prosthesisData {isEquipped : boolean, prostFactor : number } ---@alias prosthesisData {isEquipped : boolean, prostFactor : number }
---@alias prosthesesTable {top : table, bottom : table } ---@alias prosthesesTable {top : table, bottom : table }
---@alias tocModData { limbs : limbsTable, prostheses : prosthesesTable, isIgnoredPartInfected : boolean, isAnyLimbCut : boolean } ---@alias tocModData { limbs : limbsTable, prostheses : prosthesesTable, isIgnoredPartInfected : boolean, isAnyLimbCut : boolean }
--------------------------- ---------------------------
-- _STR = Only strings, no index
-- _IND_STR = indexed Strings
-- _IND_BPT = Indexed BodyPartType
-- PART = Single part, could be hand, forearm, etc
-- LIMB = Part + side
-- BODYLOCS = Body Locations
local StaticData = {} local StaticData = {}
---Mod name, used to setup Global Mod Data and various stuff
StaticData.MOD_NAME = "TOC" StaticData.MOD_NAME = "TOC"
-------------------------
--* Base
StaticData.PARTS_STRINGS = { StaticData.SIDES_IND_STR = {
R = "R",
L = "L"
}
StaticData.PARTS_IND_STR = {
Hand = "Hand", Hand = "Hand",
ForeArm = "ForeArm", ForeArm = "ForeArm",
UpperArm = "UpperArm" UpperArm = "UpperArm"
} }
StaticData.MOD_BODYLOCS_BASE_IND_STR = {
StaticData.BODYLOCATIONS_BASE_STRINGS = {
TOC_ArmProst = "TOC_ArmProst", TOC_ArmProst = "TOC_ArmProst",
TOC_Arm = "TOC_Arm", TOC_Arm = "TOC_Arm",
} }
-- No "MAX" here. -- 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" } StaticData.IGNORED_BODYLOCS_IND_BPT = {
BodyPartType.Foot_L, BodyPartType.Foot_R, BodyPartType.Groin, BodyPartType.Head,
StaticData.SIDES_STRINGS = { BodyPartType.LowerLeg_L, BodyPartType.LowerLeg_R, BodyPartType.Neck, BodyPartType.Torso_Lower,
R = "R", BodyPartType.Torso_Upper, BodyPartType.UpperLeg_L, BodyPartType.UpperLeg_R
L = "L"
} }
-- Assembled BodyParts string
---@enum
StaticData.LIMBS_STRINGS = {}
StaticData.BODYPARTSTYPES_ENUM = {}
StaticData.LIMBS_DEPENDENCIES = {}
StaticData.LIMBS_CICATRIZATION_TIME = {}
StaticData.LIMBS_BASE_DAMAGE = {}
StaticData.LIMBS_TIME_MULTIPLIER = {}
-- Assembled BodyParts string
StaticData.LIMBS_STR = {}
StaticData.LIMBS_DEPENDENCIES_IND_STR = {}
StaticData.LIMBS_CICATRIZATION_TIME_IND_NUM = {}
StaticData.LIMBS_BASE_DAMAGE_IND_NUM = {}
StaticData.LIMBS_TIME_MULTIPLIER_IND_NUM = {}
StaticData.BODYLOCS_IND_BPT = {}
local function AssembleHandData(assembledName)
StaticData.LIMBS_BASE_DAMAGE_IND_NUM[assembledName] = 60
StaticData.LIMBS_CICATRIZATION_TIME_IND_NUM[assembledName] = 1700
StaticData.LIMBS_TIME_MULTIPLIER_IND_NUM[assembledName] = 2
StaticData.LIMBS_DEPENDENCIES_IND_STR[assembledName] = {}
end
local function AssembleForearmData(assembledName, side)
StaticData.LIMBS_BASE_DAMAGE_IND_NUM[assembledName] = 80
StaticData.LIMBS_CICATRIZATION_TIME_IND_NUM[assembledName] = 1800
StaticData.LIMBS_TIME_MULTIPLIER_IND_NUM[assembledName] = 3
StaticData.LIMBS_DEPENDENCIES_IND_STR[assembledName] = { StaticData.PARTS_IND_STR.Hand .. "_" .. side }
end
local function AssembleUpperarmData(assembledName, side)
StaticData.LIMBS_BASE_DAMAGE_IND_NUM[assembledName] = 100
StaticData.LIMBS_CICATRIZATION_TIME_IND_NUM[assembledName] = 2000
StaticData.LIMBS_TIME_MULTIPLIER_IND_NUM[assembledName] = 4
StaticData.LIMBS_DEPENDENCIES_IND_STR[assembledName] = { StaticData.PARTS_IND_STR.Hand .. "_" .. side,
StaticData.PARTS_IND_STR.ForeArm .. "_" .. side }
end
for side, _ in pairs(StaticData.SIDES_IND_STR) do
for part, _ in pairs(StaticData.PARTS_IND_STR) do
local assembledName = part .. "_" .. side
-- Assembled strings
table.insert(StaticData.LIMBS_STR, assembledName) -- We need a table like this to cycle through it easily
StaticData.BODYLOCS_IND_BPT[assembledName] = BodyPartType[assembledName]
-- Dependencies and cicatrization time
if part == StaticData.PARTS_IND_STR.Hand then
AssembleHandData(assembledName)
elseif part == StaticData.PARTS_IND_STR.ForeArm then
AssembleForearmData(assembledName, side)
elseif part == StaticData.PARTS_IND_STR.UpperArm then
AssembleUpperarmData(assembledName, side)
end
end
end
-----------------
--* Prostheses
StaticData.PROSTHESES_GROUPS = {
top = "top",
bottom = "bottom"
}
-----------------
--* Traits
-- Link a trait to a specific body part -- Link a trait to a specific body part
StaticData.TRAITS_BP = { StaticData.TRAITS_BP = {
AmputeeHand = "Hand_L", AmputeeHand = "Hand_L",
@@ -45,50 +114,8 @@ StaticData.TRAITS_BP = {
AmputeeUpeerArm = "UpperArm_L" AmputeeUpeerArm = "UpperArm_L"
} }
local function AssembleHandData(assembledName)
StaticData.LIMBS_BASE_DAMAGE[assembledName] = 60
StaticData.LIMBS_CICATRIZATION_TIME[assembledName] = 1700
StaticData.LIMBS_TIME_MULTIPLIER[assembledName] = 2
StaticData.LIMBS_DEPENDENCIES[assembledName] = {}
end
local function AssembleForearmData(assembledName, side)
StaticData.LIMBS_BASE_DAMAGE[assembledName] = 80
StaticData.LIMBS_CICATRIZATION_TIME[assembledName] = 1800
StaticData.LIMBS_TIME_MULTIPLIER[assembledName] = 3
StaticData.LIMBS_DEPENDENCIES[assembledName] = { StaticData.PARTS_STRINGS.Hand .. "_" .. side }
end
local function AssembleUpperarmData(assembledName, side)
StaticData.LIMBS_BASE_DAMAGE[assembledName] = 100
StaticData.LIMBS_CICATRIZATION_TIME[assembledName] = 2000
StaticData.LIMBS_TIME_MULTIPLIER[assembledName] = 4
StaticData.LIMBS_DEPENDENCIES[assembledName] = { StaticData.PARTS_STRINGS.Hand .. "_" .. side,
StaticData.PARTS_STRINGS.ForeArm .. "_" .. side }
end
for side, _ in pairs(StaticData.SIDES_STRINGS) do
for part, _ in pairs(StaticData.PARTS_STRINGS) do
local assembledName = part .. "_" .. side
-- Assembled strings
table.insert(StaticData.LIMBS_STRINGS, assembledName) -- We need a table like this to cycle through it easily
StaticData.BODYPARTSTYPES_ENUM[assembledName] = BodyPartType[assembledName]
-- Dependencies and cicatrization time
if part == StaticData.PARTS_STRINGS.Hand then
AssembleHandData(assembledName)
elseif part == StaticData.PARTS_STRINGS.ForeArm then
AssembleForearmData(assembledName, side)
elseif part == StaticData.PARTS_STRINGS.UpperArm then
AssembleUpperarmData(assembledName, side)
end
end
end
----------------- -----------------
-- Visuals and clothing --* Visuals and clothing
--- Textures --- Textures
-- TODO We need male variations -- TODO We need male variations