still more stuff
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user