Files
The-Only-Cure/media/lua/client/TOC_PlayerHandler.lua
2023-11-06 12:57:33 +01:00

74 lines
2.1 KiB
Lua

local ModDataHandler = require("TOC_ModDataHandler")
local StaticData = require("TOC_StaticData")
-----------
---@class PlayerHandler
local PlayerHandler = {}
---Setup player modData
---@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
-- Once we find one, we should be done.
PlayerHandler.ForceCutLimb(v)
return
end
end
end
---comment
---@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