Making it a bit neater
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user