Making it a bit neater

This commit is contained in:
ZioPao
2023-11-06 12:57:33 +01:00
parent f39bc5c36e
commit 16c510c79f
5 changed files with 122 additions and 102 deletions

View File

@@ -11,36 +11,63 @@ local PlayerHandler = {}
---@param _ nil
---@param playerObj IsoPlayer
function PlayerHandler.InitializePlayer(_, playerObj)
PlayerHandler.modDataHandler = ModDataHandler:new(playerObj)
PlayerHandler.modDataHandler:setup()
end
---...
---Cut a limb for a trait
---@param playerObj IsoPlayer
function PlayerHandler.ManageTraits(playerObj)
for k,v in pairs(StaticData.TRAITS_BP) do
if playerObj:HasTrait(k) then PlayerHandler.ForceCutLimb(v) end
for k, v in pairs(StaticData.TRAITS_BP) do
if playerObj:HasTrait(k) then
-- Once we find one, we should be done.
PlayerHandler.ForceCutLimb(v)
return
end
end
-- -- Setup traits
-- if player:HasTrait("Amputee_Hand") then
-- TOC.CutLimbForTrait(player, modData.TOC, "Left_Hand")
-- elseif player:HasTrait("Amputee_LowerArm") then
-- TOC.CutLimbForTrait(player, modData.TOC, "Left_LowerArm")
-- elseif player:HasTrait("Amputee_UpperArm") then
-- TOC.CutLimbForTrait(player, modData.TOC, "Left_UpperArm")
-- end
end
---comment
---@param limbName string
---@param patient IsoPlayer
---@param surgeon IsoPlayer
---@param limbName string
---@param surgeryHelpItems table
function PlayerHandler.CutLimb(patient, surgeon, limbName, surgeryHelpItems)
-- TODO Start bleeding and crap like that
local patientStats = patient:getStats()
-- TODO Get surgeon ability from his aid skill
local surgeonSkill = 50
local bd = patient:getBodyDamage()
local bodyPart = bd:getBodyPart(BodyPartType[limbName])
local baseDamage = StaticData.LIMBS_BASE_DAMAGE[limbName]
-- Set the bleeding and all the damage stuff in that part
bodyPart:AddDamage(baseDamage - surgeonSkill)
bodyPart:setAdditionalPain(baseDamage - surgeonSkill)
bodyPart:setBleeding(true)
bodyPart:setBleedingTime(baseDamage - surgeonSkill)
bodyPart:setDeepWounded(true)
bodyPart:setDeepWoundTime(baseDamage - surgeonSkill)
patientStats:setEndurance(surgeonSkill)
patientStats:setStress(baseDamage - surgeonSkill)
---@type amputationTable
local amputationValues = {isOperated = false, isCicatrized = false, isCauterized = false}
PlayerHandler.modDataHandler:setCutLimb(limbName, amputationValues)
end
---Set an already cut limb, for example for a trait.
---@param limbName string
function PlayerHandler.ForceCutLimb(limbName)
PlayerHandler.modDataHandler:setCutLimb(limbName, true, true, true)
-- TODO Spawn amputation item
end
return PlayerHandler
return PlayerHandler