still more stuff

This commit is contained in:
Pao
2023-02-26 20:00:22 +01:00
parent 7c13ed30c9
commit a2e906b318
13 changed files with 149 additions and 125 deletions

View File

@@ -3,29 +3,31 @@
------------------------------------------
--------- OPERATE LIMB FUNCTIONS ---------
local 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
local function FixSingleBodyPartType(bodyPartType, useOven)
bodyPartType:setDeepWounded(false) --Basically like stitching
bodyPartType:setDeepWoundTime(0)
if useOven then
bodyPartType:AddDamage(100)
bodyPartType:setAdditionalPain(100);
bodyPartType:setBleeding(false)
bodyPartType:setBleedingTime(0) -- no bleeding since it's been cauterized
else
-- TODO Think a little better about this, do we want to trigger bleeding or not?
body_part_type:setBleeding(false)
bodyPartType:setBleeding(false)
--body_part_type:setBleedingTime(ZombRand(1, 5)) -- Reset the bleeding, maybe make it random
end
end
local function SetBodyPartsStatusAfterOperation(player, limbs_data, part_name, use_oven)
local body_part_type = player:getBodyDamage():getBodyPart(TocGetAdjacentBodyPartFromPartName(part_name))
FixSingleBodyPartType(body_part_type, use_oven)
local function SetBodyPartsStatusAfterOperation(player, limbParameters, partName, useOven)
for _, v in pairs(limbs_data[part_name].depends_on) do
local depended_body_part_type = player:getBodyDamage():getBodyPart(TocGetAdjacentBodyPartFromPartName(v))
FixSingleBodyPartType(depended_body_part_type, use_oven)
local bodyPartType = player:getBodyDamage():getBodyPart(TocGetAdjacentBodyPartFromPartName(partName))
FixSingleBodyPartType(bodyPartType, useOven)
for _, v in pairs(limbParameters[partName].dependsOn) do
local dependedBodyPartType = player:getBodyDamage():getBodyPart(TocGetAdjacentBodyPartFromPartName(v))
FixSingleBodyPartType(dependedBodyPartType, useOven)
end
end
@@ -34,33 +36,37 @@ end
---Main function to operate a limb after amputation
---@param part_name any
---@param surgeon_factor any
---@param use_oven boolean wheter using oven instead of a kit or not
function TocOperateLimb(part_name, surgeon_factor, use_oven)
---@param partName any
---@param surgeonFactor any
---@param useOven boolean wheter using oven instead of a kit or not
function JCIO.OperateLimb(partName, surgeonFactor, useOven)
local player = getPlayer()
local limbs_data = player:getModData().TOC.Limbs
if use_oven then
local jcioModData = player:getModData().JCIO
local limbParameters = jcioModData.limbParameters
local limbsData = jcioModData.limbs
if useOven then
local stats = player:getStats()
stats:setEndurance(100)
stats:setStress(100)
end
if limbs_data[part_name].is_operated == false and limbs_data[part_name].is_cut == true then
limbs_data[part_name].is_operated = true
limbs_data[part_name].cicatrization_time = limbs_data[part_name].cicatrization_time - (surgeon_factor * 200)
if use_oven then limbs_data[part_name].is_cauterized = true end
for _, depended_v in pairs(limbs_data[part_name].depends_on) do
limbs_data[depended_v].is_operated = true
limbs_data[depended_v].cicatrization_time = limbs_data[depended_v].cicatrization_time -
(surgeon_factor * 200)
if use_oven then limbs_data[depended_v].is_cauterized = true end -- TODO does this make sense?
if limbsData[partName].isOperated == false and limbsData[partName].isCut == true then
limbsData[partName].isOperated = true
limbsData[partName].cicatrizationTime = limbsData[partName].cicatrizationTime - (surgeonFactor * 200)
if useOven then limbsData[partName].is_cauterized = true end
for _, depended_v in pairs(limbParameters[partName].depends_on) do
limbsData[depended_v].isOperated = true
limbsData[depended_v].cicatrizationTime = limbsData[depended_v].cicatrizationTime -
(surgeonFactor * 200)
if useOven then limbsData[depended_v].isCauterized = true end
end
end
SetBodyPartsStatusAfterOperation(player, limbs_data, part_name, use_oven)
SetBodyPartsStatusAfterOperation(player, limbParameters, partName, useOven)
end