Files
The-Only-Cure/media/lua/client/TOC_HelperFunctions.lua
2023-01-13 03:37:17 +01:00

72 lines
2.1 KiB
Lua

-- CutLimb
-- TODO if TheONlyCure. triggers an errors
function CheckIfStillInfected(toc_data)
if toc_data == nil then
return
end
-- Check ALL body part types to check if the player is still gonna die
local check = false
for _, v in ipairs(GetBodyParts()) do
if toc_data[v].is_infected then
check = true
end
end
if toc_data.is_other_bodypart_infected then
check = true
end
return check
end
-- TODO this triggers an error
function CureInfection(body_damage)
body_damage:setInfected(false)
body_damage:setInfectionMortalityDuration(-1)
body_damage:setInfectionTime(-1)
body_damage:setInfectionLevel(0)
local body_part_types = body_damage:getBodyParts()
for i=body_part_types:size()-1, 0, -1 do
local bodyPart = body_part_types:get(i)
bodyPart:SetInfected(false)
end
getPlayer().Say("I'm gonna be fine")
end
-- OperateLimb
function SetBodyPartsStatusAfterOperation(player, toc_data, part_name, use_oven)
--for _, v in ipairs(GetBodyParts()) do
local body_part_type = player:getBodyDamage():getBodyPart(TheOnlyCure.GetBodyPartTypeFromBodyPart(part_name))
FixSingleBodyPartType(body_part_type, use_oven)
for _, v in ipairs(toc_data[part_name].depends_on) do
local depended_body_part_type = player:getBodyDamage():getBodyPart(TheOnlyCure.GetBodyPartTypeFromBodyPart(v))
FixSingleBodyPartType(depended_body_part_type, use_oven)
end
end
function FixSingleBodyPartType(body_part_type, use_oven)
body_part_type:setDeepWounded(false) --Basically like stitching
body_part_type:setDeepWoundTime(0)
if use_oven then
body_part_type:AddDamage(100)
body_part_type:setAdditionalPain(100);
body_part_type:setBleeding(false)
body_part_type:setBleedingTime(0) -- no bleeding since it's been cauterized
else
-- TODO Think a little better about this
body_part_type:setBleeding(false)
--body_part_type:setBleedingTime(ZombRand(1, 5)) -- Reset the bleeding, maybe make it random
end
end