cleaned naming for StaticData
This commit is contained in:
@@ -76,7 +76,7 @@ function AmputationHandler:damageAfterAmputation(surgeonFactor)
|
||||
local patientStats = self.patientPl:getStats()
|
||||
local bd = self.patientPl:getBodyDamage()
|
||||
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:setAdditionalPain(baseDamage - surgeonFactor)
|
||||
|
||||
@@ -22,8 +22,8 @@ CachedDataHandler.amputatedLimbs = {}
|
||||
function CachedDataHandler.CalculateAmputatedLimbs(username)
|
||||
CachedDataHandler.amputatedLimbs[username] = {}
|
||||
local modDataHandler = ModDataHandler.GetInstance(username)
|
||||
for i=1, #StaticData.LIMBS_STRINGS do
|
||||
local limbName = StaticData.LIMBS_STRINGS[i]
|
||||
for i=1, #StaticData.LIMBS_STR do
|
||||
local limbName = StaticData.LIMBS_STR[i]
|
||||
if modDataHandler:getIsCut(limbName) then
|
||||
CachedDataHandler.AddAmputatedLimb(username, limbName)
|
||||
end
|
||||
|
||||
@@ -58,7 +58,7 @@ end
|
||||
---@param limbName string
|
||||
function ItemsHandler.DeleteOldAmputationItem(playerObj, 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 othClothingItemName = StaticData.AMPUTATION_CLOTHING_ITEM_BASE .. othLimbName
|
||||
|
||||
@@ -76,8 +76,8 @@ end
|
||||
---@param playerObj IsoPlayer
|
||||
function ItemsHandler.DeleteAllOldAmputationItems(playerObj)
|
||||
|
||||
for i=1, #StaticData.LIMBS_STRINGS do
|
||||
local limbName = StaticData.LIMBS_STRINGS[i]
|
||||
for i=1, #StaticData.LIMBS_STR do
|
||||
local limbName = StaticData.LIMBS_STR[i]
|
||||
local clothItemName = StaticData.AMPUTATION_CLOTHING_ITEM_BASE .. limbName
|
||||
local clothItem = playerObj:getInventory():FindAndReturn(clothItemName)
|
||||
---@cast clothItem InventoryItem
|
||||
|
||||
@@ -61,15 +61,15 @@ function ModDataHandler:setup(key)
|
||||
|
||||
-- Initialize limbs
|
||||
|
||||
for i=1, #StaticData.LIMBS_STRINGS do
|
||||
local limbName = StaticData.LIMBS_STRINGS[i]
|
||||
for i=1, #StaticData.LIMBS_STR do
|
||||
local limbName = StaticData.LIMBS_STR[i]
|
||||
self.tocData.limbs[limbName] = {}
|
||||
self:setLimbParams(StaticData.LIMBS_STRINGS[i], defaultParams, 0)
|
||||
self:setLimbParams(StaticData.LIMBS_STR[i], defaultParams, 0)
|
||||
end
|
||||
|
||||
local prosthesesGroups = {"top", "bottom"}
|
||||
for i=1, #prosthesesGroups do
|
||||
local group = prosthesesGroups[i]
|
||||
-- Initialize prostheses stuff
|
||||
for i=1, #StaticData.PROSTHESES_GROUPS do
|
||||
local group = StaticData.PROSTHESES_GROUPS[i]
|
||||
self.tocData.prostheses[group] = {
|
||||
isEquipped = false,
|
||||
prostFactor = 0
|
||||
@@ -181,15 +181,15 @@ end
|
||||
function ModDataHandler:setCutLimb(limbName, isOperated, isCicatrized, isCauterized, surgeonFactor)
|
||||
local cicatrizationTime = 0
|
||||
if isCicatrized == false or isCauterized == false then
|
||||
cicatrizationTime = StaticData.LIMBS_CICATRIZATION_TIME[limbName] - surgeonFactor
|
||||
cicatrizationTime = StaticData.LIMBS_CICATRIZATION_TIME_IND_NUM[limbName] - surgeonFactor
|
||||
end
|
||||
|
||||
---@type partData
|
||||
local params = {isCut = true, isInfected = false, isOperated = isOperated, isCicatrized = isCicatrized, isCauterized = isCauterized, isVisible = true}
|
||||
self:setLimbParams(limbName, params, cicatrizationTime)
|
||||
|
||||
for i=1, #StaticData.LIMBS_DEPENDENCIES[limbName] do
|
||||
local dependedLimbName = StaticData.LIMBS_DEPENDENCIES[limbName][i]
|
||||
for i=1, #StaticData.LIMBS_DEPENDENCIES_IND_STR[limbName] do
|
||||
local dependedLimbName = StaticData.LIMBS_DEPENDENCIES_IND_STR[limbName][i]
|
||||
|
||||
-- We don't care about isOperated, isCicatrized, isCauterized since this is depending on another limb
|
||||
-- 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.isCauterized ~= nil then limbData.isCauterized = ampStatus.isCauterized 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
|
||||
end
|
||||
|
||||
@@ -64,9 +64,9 @@ function PlayerHandler.CheckInfection(character)
|
||||
local bd = character:getBodyDamage()
|
||||
local modDataHandler = ModDataHandler.GetInstance()
|
||||
|
||||
for i=1, #StaticData.LIMBS_STRINGS do
|
||||
local limbName = StaticData.LIMBS_STRINGS[i]
|
||||
local bptEnum = StaticData.BODYPARTSTYPES_ENUM[limbName]
|
||||
for i=1, #StaticData.LIMBS_STR do
|
||||
local limbName = StaticData.LIMBS_STR[i]
|
||||
local bptEnum = StaticData.BODYLOCS_IND_BPT[limbName]
|
||||
local bodyPart = bd:getBodyPart(bptEnum)
|
||||
|
||||
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
|
||||
if ModDataHandler.GetInstance():getIsIgnoredPartInfected() then return end
|
||||
|
||||
for i=1, #StaticData.IGNORED_PARTS_STRINGS do
|
||||
local bodyPartType = BodyPartType[StaticData.IGNORED_PARTS_STRINGS[i]]
|
||||
for i=1, #StaticData.IGNORED_BODYLOCS_IND_BPT do
|
||||
local bodyPartType = StaticData.IGNORED_BODYLOCS_IND_BPT[i]
|
||||
local bodyPart = bd:getBodyPart(bodyPartType)
|
||||
if bodyPart and (bodyPart:bitten() or bodyPart:IsInfected()) then
|
||||
ModDataHandler.GetInstance():setIsIgnoredPartInfected(true)
|
||||
@@ -124,7 +124,7 @@ function ISBaseTimedAction:adjustMaxTime(maxTime)
|
||||
local perkLevel = pl:getPerkLevel(perk)
|
||||
local perkLevelScaled
|
||||
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
|
||||
@@ -138,7 +138,7 @@ function ISBaseTimedAction:perform()
|
||||
og_ISBaseTimedAction_perform(self)
|
||||
|
||||
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
|
||||
if ModDataHandler.GetInstance():getIsCut(limbName) then
|
||||
PlayerHandler.playerObj:getXp():AddXP(Perks["Side_" .. side], 2) -- TODO Make it dynamic
|
||||
|
||||
@@ -7,7 +7,7 @@ local CachedDataHandler = require("TOC/Handlers/CachedDataHandler")
|
||||
---@class ProsthesisHandler
|
||||
local ProsthesisHandler = {}
|
||||
|
||||
local bodyLocArmProst = StaticData.BODYLOCATIONS_BASE_STRINGS.TOC_ArmProst
|
||||
local bodyLocArmProst = StaticData.MOD_BODYLOCS_BASE_IND_STR.TOC_ArmProst
|
||||
|
||||
---comment
|
||||
---@param item InventoryItem
|
||||
|
||||
@@ -28,8 +28,8 @@ local function AddInventoryAmputationOptions(surgeonNum, context, item)
|
||||
local option = context:addOption(getText("ContextMenu_Amputate"), nil)
|
||||
local subMenu = context:getNew(context)
|
||||
context:addSubMenu(option, subMenu)
|
||||
for i = 1, #StaticData.LIMBS_STRINGS do
|
||||
local limbName = StaticData.LIMBS_STRINGS[i]
|
||||
for i = 1, #StaticData.LIMBS_STR do
|
||||
local limbName = StaticData.LIMBS_STR[i]
|
||||
if not ModDataHandler.GetInstance():getIsCut(limbName) then
|
||||
local limbTranslatedName = getText("ContextMenu_Limb_" .. limbName)
|
||||
subMenu:addOption(limbTranslatedName, surgeonObj, PerformAction, surgeonObj, limbName, item) -- TODO Should be patient, not surgeon
|
||||
@@ -82,7 +82,7 @@ end
|
||||
---@param context ISContextMenu
|
||||
function CutLimbHandler:addToMenu(context)
|
||||
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")
|
||||
if not ModDataHandler.GetInstance():getIsCut(self.limbName) then
|
||||
context:addOption(getText("ContextMenu_Amputate"), self, self.onMenuOptionSelected)
|
||||
@@ -92,7 +92,7 @@ end
|
||||
|
||||
function CutLimbHandler:dropItems(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])
|
||||
return true
|
||||
end
|
||||
|
||||
@@ -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 limbsTable {Hand_L : partData, ForeArm_L : partData, UpperArm_L : partData, Hand_R : partData, ForeArm_R : partData, UpperArm_R : partData,}
|
||||
---@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 prosthesisData {isEquipped : boolean, prostFactor : number }
|
||||
---@alias prosthesesTable {top : table, bottom : table }
|
||||
---@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 = {}
|
||||
|
||||
---Mod name, used to setup Global Mod Data and various stuff
|
||||
StaticData.MOD_NAME = "TOC"
|
||||
|
||||
-------------------------
|
||||
--* Base
|
||||
|
||||
StaticData.PARTS_STRINGS = {
|
||||
StaticData.SIDES_IND_STR = {
|
||||
R = "R",
|
||||
L = "L"
|
||||
}
|
||||
StaticData.PARTS_IND_STR = {
|
||||
Hand = "Hand",
|
||||
ForeArm = "ForeArm",
|
||||
UpperArm = "UpperArm"
|
||||
}
|
||||
|
||||
StaticData.BODYLOCATIONS_BASE_STRINGS = {
|
||||
StaticData.MOD_BODYLOCS_BASE_IND_STR = {
|
||||
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" }
|
||||
|
||||
StaticData.SIDES_STRINGS = {
|
||||
R = "R",
|
||||
L = "L"
|
||||
StaticData.IGNORED_BODYLOCS_IND_BPT = {
|
||||
BodyPartType.Foot_L, BodyPartType.Foot_R, BodyPartType.Groin, BodyPartType.Head,
|
||||
BodyPartType.LowerLeg_L, BodyPartType.LowerLeg_R, BodyPartType.Neck, BodyPartType.Torso_Lower,
|
||||
BodyPartType.Torso_Upper, BodyPartType.UpperLeg_L, BodyPartType.UpperLeg_R
|
||||
}
|
||||
-- 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
|
||||
StaticData.TRAITS_BP = {
|
||||
AmputeeHand = "Hand_L",
|
||||
@@ -45,50 +114,8 @@ StaticData.TRAITS_BP = {
|
||||
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
|
||||
-- TODO We need male variations
|
||||
|
||||
Reference in New Issue
Block a user