Fixes
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
-- CutLimb
|
-- CutLimb
|
||||||
-- TODO if TheONlyCure. triggers an errors
|
-- TODO if TheONlyCure. triggers an errors
|
||||||
function TocCheckIfStillInfected(part_data)
|
function TocCheckIfStillInfected(limbs_data)
|
||||||
if part_data == nil then
|
if limbs_data == nil then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
-- Check ALL body part types to check if the player is still gonna die
|
-- Check ALL body part types to check if the player is still gonna die
|
||||||
@@ -9,26 +9,26 @@ function TocCheckIfStillInfected(part_data)
|
|||||||
|
|
||||||
|
|
||||||
for _, v in ipairs(GetBodyParts()) do
|
for _, v in ipairs(GetBodyParts()) do
|
||||||
if part_data[v].is_infected then
|
if limbs_data[v].is_infected then
|
||||||
check = true
|
check = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if part_data.is_other_bodypart_infected then
|
if limbs_data.is_other_bodypart_infected then
|
||||||
check = true
|
check = true
|
||||||
end
|
end
|
||||||
|
|
||||||
return check
|
return check
|
||||||
end
|
end
|
||||||
|
|
||||||
function TocCureInfection(body_damage, part_data, part_name)
|
function TocCureInfection(body_damage, limbs_data, part_name)
|
||||||
|
|
||||||
local body_part_type = body_damage:getBodyPart(TocGetBodyPartTypeFromPartName(part_name))
|
local body_part_type = body_damage:getBodyPart(TocGetBodyPartTypeFromPartName(part_name))
|
||||||
|
|
||||||
-- Check if we can heal the infection
|
-- Check if we can heal the infection
|
||||||
local is_other_bodypart_infected = getPlayer():getModData().TOC.Limbs.is_other_bodypart_infected
|
local is_other_bodypart_infected = getPlayer():getModData().TOC.Limbs.is_other_bodypart_infected
|
||||||
|
|
||||||
if not is_other_bodypart_infected and not TheOnlyCure.CheckIfOtherLimbsAreInfected(part_data, part_name) then
|
if not is_other_bodypart_infected and not TheOnlyCure.CheckIfOtherLimbsAreInfected(limbs_data, part_name) then
|
||||||
body_damage:setInfected(false)
|
body_damage:setInfected(false)
|
||||||
body_part_type:SetInfected(false)
|
body_part_type:SetInfected(false)
|
||||||
body_damage:setInfectionMortalityDuration(-1)
|
body_damage:setInfectionMortalityDuration(-1)
|
||||||
@@ -91,14 +91,14 @@ function TocGetSawInInventory(surgeon)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- OperateLimb
|
-- OperateLimb
|
||||||
function SetBodyPartsStatusAfterOperation(player, part_data, part_name, use_oven)
|
function SetBodyPartsStatusAfterOperation(player, limbs_data, part_name, use_oven)
|
||||||
--for _, v in ipairs(GetBodyParts()) do
|
--for _, v in ipairs(GetBodyParts()) do
|
||||||
|
|
||||||
|
|
||||||
local body_part_type = player:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromPartName(part_name))
|
local body_part_type = player:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromPartName(part_name))
|
||||||
FixSingleBodyPartType(body_part_type, use_oven)
|
FixSingleBodyPartType(body_part_type, use_oven)
|
||||||
|
|
||||||
for _, v in ipairs(part_data[part_name].depends_on) do
|
for _, v in ipairs(limbs_data[part_name].depends_on) do
|
||||||
local depended_body_part_type = player:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromPartName(v))
|
local depended_body_part_type = player:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromPartName(v))
|
||||||
FixSingleBodyPartType(depended_body_part_type, use_oven)
|
FixSingleBodyPartType(depended_body_part_type, use_oven)
|
||||||
|
|
||||||
@@ -169,37 +169,6 @@ function CheckIfItemIsAmputatedLimb(item)
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- function CheckIfItemIsAmputatedLimb(item)
|
|
||||||
|
|
||||||
|
|
||||||
-- local item_full_type = item:getFullType()
|
|
||||||
|
|
||||||
-- local sides = {"Left", "Right"}
|
|
||||||
-- local limbs_to_check = {"Hand", "LowerArm", "UpperArm"}
|
|
||||||
|
|
||||||
-- local is_amputated_limb = false
|
|
||||||
|
|
||||||
-- for _, part in ipairs(limbs_to_check) do
|
|
||||||
-- for _, side in ipairs(sides) do
|
|
||||||
|
|
||||||
-- local part_name = side .. "_" .. part
|
|
||||||
|
|
||||||
-- local check_name = "TOC.Amputation_" .. part_name
|
|
||||||
-- print(check_name)
|
|
||||||
-- if item_full_type == check_name then
|
|
||||||
-- is_amputated_limb = true
|
|
||||||
-- break
|
|
||||||
-- end
|
|
||||||
|
|
||||||
-- end
|
|
||||||
|
|
||||||
-- end
|
|
||||||
|
|
||||||
|
|
||||||
-- return is_amputated_limb
|
|
||||||
|
|
||||||
-- end
|
|
||||||
|
|
||||||
function CheckIfItemIsProsthesis(item)
|
function CheckIfItemIsProsthesis(item)
|
||||||
|
|
||||||
-- TODO find a cleaner way
|
-- TODO find a cleaner way
|
||||||
|
|||||||
@@ -125,14 +125,14 @@ function TheOnlyCure.SetHealthStatusForBodyPart(part_data, part_name, player)
|
|||||||
end
|
end
|
||||||
|
|
||||||
--Helper function for UpdatePlayerHealth
|
--Helper function for UpdatePlayerHealth
|
||||||
function TheOnlyCure.CheckIfOtherLimbsAreInfected(part_data, part_name)
|
function TheOnlyCure.CheckIfOtherLimbsAreInfected(limbs_data, part_name)
|
||||||
|
|
||||||
|
|
||||||
local body_parts = GetBodyParts()
|
local body_parts = GetBodyParts()
|
||||||
body_parts[part_name] = nil
|
body_parts[part_name] = nil
|
||||||
|
|
||||||
for _, v in pairs(body_parts) do
|
for _, v in pairs(body_parts) do
|
||||||
if part_data[v].is_infected then
|
if limbs_data[v].is_infected then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -228,7 +228,7 @@ function TheOnlyCure.CutLimb(part_name, surgeon_factor, bandage_table, painkille
|
|||||||
|
|
||||||
local player = getPlayer()
|
local player = getPlayer()
|
||||||
local toc_data = player:getModData().TOC
|
local toc_data = player:getModData().TOC
|
||||||
local part_data = toc_data.Limbs
|
local limbs_data = toc_data.Limbs
|
||||||
|
|
||||||
local body_part = player:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromPartName(part_name))
|
local body_part = player:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromPartName(part_name))
|
||||||
local stats = player:getStats()
|
local stats = player:getStats()
|
||||||
@@ -261,21 +261,21 @@ function TheOnlyCure.CutLimb(part_name, surgeon_factor, bandage_table, painkille
|
|||||||
-- Use a tourniquet if available
|
-- Use a tourniquet if available
|
||||||
-- TODO add tourniquet
|
-- TODO add tourniquet
|
||||||
|
|
||||||
if part_data[part_name].is_cut == false then
|
if limbs_data[part_name].is_cut == false then
|
||||||
part_data[part_name].is_cut = true
|
limbs_data[part_name].is_cut = true
|
||||||
part_data[part_name].is_amputation_shown = true
|
limbs_data[part_name].is_amputation_shown = true
|
||||||
part_data[part_name].cicatrization_time = part_data[part_name].cicatrization_base_time - surgeon_factor * 50
|
limbs_data[part_name].cicatrization_time = limbs_data[part_name].cicatrization_base_time - surgeon_factor * 50
|
||||||
|
|
||||||
-- Heal the infection here
|
-- Heal the infection here
|
||||||
local body_damage = player:getBodyDamage()
|
local body_damage = player:getBodyDamage()
|
||||||
if part_data[part_name].is_infected and body_damage:getInfectionLevel() < 20 then
|
if limbs_data[part_name].is_infected and body_damage:getInfectionLevel() < 20 then
|
||||||
part_data[part_name].is_infected = false
|
limbs_data[part_name].is_infected = false
|
||||||
body_part:SetBitten(false)
|
body_part:SetBitten(false)
|
||||||
body_part:setBiteTime(0)
|
body_part:setBiteTime(0)
|
||||||
|
|
||||||
-- Second check, let's see if there is any other infected limb.
|
-- Second check, let's see if there is any other infected limb.
|
||||||
if TocCheckIfStillInfected(part_data) == false then
|
if TocCheckIfStillInfected(limbs_data) == false then
|
||||||
TocCureInfection(body_damage, part_data, part_name)
|
TocCureInfection(body_damage, limbs_data, part_name)
|
||||||
getPlayer():Say("I'm gonna be fine...")
|
getPlayer():Say("I'm gonna be fine...")
|
||||||
else
|
else
|
||||||
getPlayer():Say("I'm still gonna die...")
|
getPlayer():Say("I'm still gonna die...")
|
||||||
@@ -283,10 +283,10 @@ function TheOnlyCure.CutLimb(part_name, surgeon_factor, bandage_table, painkille
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Cut the depended part
|
-- Cut the depended part
|
||||||
for _, depended_v in pairs(part_data[part_name].depends_on) do
|
for _, depended_v in pairs(limbs_data[part_name].depends_on) do
|
||||||
part_data[depended_v].is_cut = true
|
limbs_data[depended_v].is_cut = true
|
||||||
part_data[depended_v].is_amputation_shown = false
|
limbs_data[depended_v].is_amputation_shown = false
|
||||||
part_data[depended_v].cicatrization_time = part_data[part_name].cicatrization_base_time - surgeon_factor * 50
|
limbs_data[depended_v].cicatrization_time = limbs_data[part_name].cicatrization_base_time - surgeon_factor * 50
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@@ -303,9 +303,6 @@ function TheOnlyCure.CutLimb(part_name, surgeon_factor, bandage_table, painkille
|
|||||||
|
|
||||||
-- Set blood on the amputated limb
|
-- Set blood on the amputated limb
|
||||||
TocSetBloodOnAmputation(getPlayer(), body_part)
|
TocSetBloodOnAmputation(getPlayer(), body_part)
|
||||||
|
|
||||||
player:transmitModData()
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@@ -316,7 +313,7 @@ end
|
|||||||
function TheOnlyCure.OperateLimb(part_name, surgeon_factor, use_oven)
|
function TheOnlyCure.OperateLimb(part_name, surgeon_factor, use_oven)
|
||||||
|
|
||||||
local player = getPlayer()
|
local player = getPlayer()
|
||||||
local part_data = player:getModData().TOC.Limbs
|
local limbs_data = player:getModData().TOC.Limbs
|
||||||
|
|
||||||
if use_oven then
|
if use_oven then
|
||||||
local stats = player:getStats()
|
local stats = player:getStats()
|
||||||
@@ -324,20 +321,20 @@ function TheOnlyCure.OperateLimb(part_name, surgeon_factor, use_oven)
|
|||||||
stats:setStress(100)
|
stats:setStress(100)
|
||||||
end
|
end
|
||||||
|
|
||||||
if part_data[part_name].is_operated == false and part_data[part_name].is_cut == true then
|
if limbs_data[part_name].is_operated == false and limbs_data[part_name].is_cut == true then
|
||||||
part_data[part_name].is_operated = true
|
limbs_data[part_name].is_operated = true
|
||||||
part_data[part_name].cicatrization_time = part_data[part_name].cicatrization_time - (surgeon_factor * 200)
|
limbs_data[part_name].cicatrization_time = limbs_data[part_name].cicatrization_time - (surgeon_factor * 200)
|
||||||
if use_oven then part_data[part_name].is_cauterized = true end
|
if use_oven then limbs_data[part_name].is_cauterized = true end
|
||||||
for _, depended_v in pairs(part_data[part_name].depends_on) do
|
for _, depended_v in pairs(limbs_data[part_name].depends_on) do
|
||||||
part_data[depended_v].is_operated = true
|
limbs_data[depended_v].is_operated = true
|
||||||
part_data[depended_v].cicatrization_time = part_data[depended_v].cicatrization_time - (surgeon_factor * 200)
|
limbs_data[depended_v].cicatrization_time = limbs_data[depended_v].cicatrization_time - (surgeon_factor * 200)
|
||||||
if use_oven then part_data[depended_v].is_cauterized = true end -- TODO does this make sense?
|
if use_oven then limbs_data[depended_v].is_cauterized = true end -- TODO does this make sense?
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
SetBodyPartsStatusAfterOperation(player, part_data, part_name, use_oven)
|
SetBodyPartsStatusAfterOperation(player, limbs_data, part_name, use_oven)
|
||||||
player:transmitModData()
|
player:transmitModData()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user