diff --git a/.vscode/settings.json b/.vscode/settings.json index 206a0e1..d7dccb0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -54,6 +54,7 @@ "getClassFieldVal", "SandboxVars", "getClassField", - "ISWearClothing" + "ISWearClothing", + "SyncXp" ] } \ No newline at end of file diff --git a/media/lua/client/ActionsMethods/TOC_CutLimb.lua b/media/lua/client/ActionsMethods/JCIO_CutLimb.lua similarity index 88% rename from media/lua/client/ActionsMethods/TOC_CutLimb.lua rename to media/lua/client/ActionsMethods/JCIO_CutLimb.lua index 56d433e..3e3bd8f 100644 --- a/media/lua/client/ActionsMethods/TOC_CutLimb.lua +++ b/media/lua/client/ActionsMethods/JCIO_CutLimb.lua @@ -1,8 +1,15 @@ ------------------------------------------ --------- JUST CUT IT OFF -------- +------------- JUST CUT IT OFF ------------ ------------------------------------------ ----------- CUT LIMB FUNCTIONS ----------- + + + + + + + local function TocCheckIfStillInfected(limbs_data) if limbs_data == nil then return @@ -125,12 +132,17 @@ local function FindTourniquetInWornItems(patient, side) end ---------------------------------------------------------------------------------- + + + + + --- Main function for cutting a limb ---@param partName string the part name to amputate ---@param surgeonFactor any the surgeon factor, which will determine some stats for the inflicted wound ---@param bandageTable any bandages info ----@param painkiller_table any painkillers info, not used -function TocCutLimb(partName, surgeonFactor, bandageTable, painkiller_table) +---@param painkillerTable any painkillers info, not used +JCIO.CutLimb = function(partName, surgeonFactor, bandageTable, painkillerTable) -- TODO Separate Cut Limb in side and limb instead of single part_name @@ -202,24 +214,24 @@ function TocCutLimb(partName, surgeonFactor, bandageTable, painkiller_table) -- A check for is_cut shouldn't be necessary here since if we've got here we've already checked it out enough - if limbsData[partName].is_cut == false then - limbsData[partName].is_cut = true - limbsData[partName].is_amputation_shown = true - limbsData[partName].cicatrization_time = partsParameters[partName].cicatrization_base_time - surgeonFactor * 50 + if limbsData[partName].isCut == false then + limbsData[partName].isCut = true + limbsData[partName].isAmputationShown = true + limbsData[partName].cicatrizationTime = partsParameters[partName].cicatrizationBaseTime - surgeonFactor * 50 for _, depended_v in pairs(limbsData[partName].depends_on) do - limbsData[depended_v].is_cut = true - limbsData[depended_v].is_amputation_shown = false - limbsData[depended_v].cicatrization_time = partsParameters[partName].cicatrization_base_time - + limbsData[depended_v].isCut = true + limbsData[depended_v].isAmputationShown = false + limbsData[depended_v].cicatrizationTime = partsParameters[partName].cicatrizationBaseTime - surgeonFactor * 50 - local should_depended_v_be_healed_of_bite = limbsData[depended_v].is_infected and + local canHealDependedV = limbsData[depended_v].isInfected and bodyDamage:getInfectionLevel() < 20 local depended_body_part = bodyDamage:getBodyPart(TocGetBodyPartFromPartName(depended_v)) - TocSetParametersForMissingLimb(depended_body_part, should_depended_v_be_healed_of_bite) + TocSetParametersForMissingLimb(depended_body_part, canHealDependedV) - if should_depended_v_be_healed_of_bite then - limbsData[depended_v].is_infected = false + if canHealDependedV then + limbsData[depended_v].isInfected = false end @@ -229,8 +241,8 @@ function TocCutLimb(partName, surgeonFactor, bandageTable, painkiller_table) -- Heal the infection here local body_damage = player:getBodyDamage() - if limbsData[partName].is_infected and body_damage:getInfectionLevel() < 20 then - limbsData[partName].is_infected = false + if limbsData[partName].isInfected and body_damage:getInfectionLevel() < 20 then + limbsData[partName].isInfected = false -- NOT THE ADIACENT ONE!!! bodyPart:SetBitten(false) @@ -264,7 +276,7 @@ function TocCutLimb(partName, surgeonFactor, bandageTable, painkiller_table) TocSetBloodOnAmputation(getPlayer(), adjacentBodyPart) if partName == "Left_Foot" or partName == "Right_Foot" then - SetMissingFootAnimation(true) + JCIOAnims.SetMissingFootAnimation(true) end end diff --git a/media/lua/client/TOC_Animations.lua b/media/lua/client/JCIO_Animations.lua similarity index 55% rename from media/lua/client/TOC_Animations.lua rename to media/lua/client/JCIO_Animations.lua index 766d32a..9db99fc 100644 --- a/media/lua/client/TOC_Animations.lua +++ b/media/lua/client/JCIO_Animations.lua @@ -1,8 +1,11 @@ -- Thanks to Glytcher and Matías N. Salas for helping out with this -function SetMissingFootAnimation(check) +if JCIOAnims == nil then + JCIOAnims = {} +end +JCIOAnims.SetMissingFootAnimation = function(check) local player = getPlayer() player:setVariable("IsCrawling", tostring(check)) @@ -12,7 +15,11 @@ function SetMissingFootAnimation(check) sendClientCommand(player, "TOC", "NotifyNewCrawlAnimation", {id = player:getOnlineID(), check = check}) end - end +JCIOAnims.CheckAndSetMissingFootAnims = function(modData) + if modData.JCIO.limbs["Left_Foot"].isCut or modData.JCIO.limbs["Right_Foot"].isCut then + JCIOAnims.SetMissingFootAnimation(true) + end +end \ No newline at end of file diff --git a/media/lua/client/JCIO_Init.lua b/media/lua/client/JCIO_Init.lua index 4b0fb1d..461bdc9 100644 --- a/media/lua/client/JCIO_Init.lua +++ b/media/lua/client/JCIO_Init.lua @@ -8,7 +8,7 @@ Rewritten by: Pao --]] -local function InitializeTraits() +JCIO.InitializeTraits = function() local amp1 = TraitFactory.addTrait("Amputee_Hand", getText("UI_trait_Amputee_Hand"), -8, getText("UI_trait_Amputee_Hand_desc"), false, false) amp1:addXPBoost(Perks.Left_Hand, 4) @@ -34,89 +34,29 @@ local function InitializeTraits() TraitFactory.setMutualExclusive("Amputee_LowerArm", "Amputee_UpperArm") end -- TODO Refactor this -local function TocUpdateBaseData(mod_data) - -- TODO Gonna delete this soon, overhauling the whole init thing - -- TODO The prosthetic knife needs to be a weapon first and foremost, so other than a - -- clothing item it needs to be a weapon too (an invisible one maybe?) +JCIO.CutLimbForTrait = function(player, jcioModData, partName) - --local prosthesis_list = { "WoodenHook", "MetalHook", "MetalHand", "ProstheticKnife" } + local limbParameters = jcioModData.limbParameters + local limbsData = jcioModData.limbs - local accepted_prosthesis_hand = { "WoodenHook", "MetalHook", "MetalHand", "ProstheticKnife" } - local accepted_prosthesis_lowerarm = { "WoodenHook", "MetalHook", "MetalHand", "ProstheticKnife" } - local accepted_prosthesis_upperarm = {} -- For future stuff - local accepted_prosthesis_foot = {} + local amputationClothingItem = player:getInventory():AddItem("TOC.Amputation_" .. partName) + JCIOVisuals.SetTextureForAmputation(amputationClothingItem, player, true) - for _, side in pairs(JCIO.sideNames) do - for _, limb in pairs(JCIO.limbNames) do + player:setWornItem(amputationClothingItem:getBodyLocation(), amputationClothingItem) + limbsData[partName].isCut = true + limbsData[partName].isOperated = true + limbsData[partName].isAmputationShown = true + limbsData[partName].isCicatrized = true - local part_name = side .. "_" .. limb - - - -- Check if part was initialized, in case of previous errors - if mod_data.TOC.Limbs[part_name] == nil then - JCIO.InitPart(mod_data.TOC.Limbs, part_name) - end - - - if limb == "Hand" then - mod_data.TOC.Limbs[part_name].cicatrization_base_time = 1700 - mod_data.TOC.Limbs[part_name].depends_on = {} - - - mod_data.TOC.Prosthesis.Accepted_Prosthesis[part_name] = accepted_prosthesis_hand - mod_data.TOC.Prosthesis["WoodenHook"][part_name].prosthesis_factor = 1.3 - mod_data.TOC.Prosthesis["MetalHook"][part_name].prosthesis_factor = 1.2 - mod_data.TOC.Prosthesis["MetalHand"][part_name].prosthesis_factor = 1.1 - --mod_data.TOC.Prosthesis["ProstheticKnife"][part_name].prosthesis_factor = 1.5 - - - elseif limb == "LowerArm" then - mod_data.TOC.Limbs[part_name].cicatrization_base_time = 1800 - mod_data.TOC.Limbs[part_name].depends_on = { side .. "_Hand", } - mod_data.TOC.Prosthesis.Accepted_Prosthesis[part_name] = accepted_prosthesis_lowerarm - - mod_data.TOC.Prosthesis["WoodenHook"][part_name].prosthesis_factor = 1.35 - mod_data.TOC.Prosthesis["MetalHook"][part_name].prosthesis_factor = 1.25 - mod_data.TOC.Prosthesis["MetalHand"][part_name].prosthesis_factor = 1.15 - --mod_data.TOC.Prosthesis["ProstheticKnife"][part_name].prosthesis_factor = 1.6 - - elseif limb == "UpperArm" then - mod_data.TOC.Limbs[part_name].cicatrization_base_time = 2000 - mod_data.TOC.Limbs[part_name].depends_on = { side .. "_Hand", side .. "_LowerArm", } - mod_data.TOC.Prosthesis.Accepted_Prosthesis[part_name] = accepted_prosthesis_upperarm - elseif limb == "Foot" then - mod_data.TOC.Limbs[part_name].cicatrization_base_time = 1700 - mod_data.TOC.Limbs[part_name].depends_on = {} - mod_data.TOC.Prosthesis.Accepted_Prosthesis[part_name] = accepted_prosthesis_foot - - end - - end - end - - - - -end - -JCIO.CutLimbForTrait = function(player, limbs_data, part_name) - local amputation_clothing_item = player:getInventory():AddItem("TOC.Amputation_" .. part_name) - TocSetCorrectTextureForAmputation(amputation_clothing_item, player, true) - - player:setWornItem(amputation_clothing_item:getBodyLocation(), amputation_clothing_item) - limbs_data[part_name].is_cut = true - limbs_data[part_name].is_operated = true - limbs_data[part_name].is_amputation_shown = true - limbs_data[part_name].is_cicatrized = true - - for _, v in pairs(limbs_data[part_name].depends_on) do - limbs_data[v].is_cut = true - limbs_data[v].is_operated = true - limbs_data[v].is_amputation_shown = false - limbs_data[v].is_cicatrized = true + for _, v in pairs(limbParameters[partName].dependsOn) do + limbsData[v].isCut = true + limbsData[v].isOperated = true + limbsData[v].isAmputationShown = false + limbsData[v].isCicatrized = true end end + JCIO.InitPart = function(limbs_data, part_name) limbs_data[part_name].is_cut = false @@ -132,6 +72,7 @@ JCIO.InitPart = function(limbs_data, part_name) limbs_data[part_name].equipped_prosthesis = {} end + JCIO.SetInitData = function(modData, player) print("TOC: Creating mod_data.TOC") -------- @@ -221,20 +162,17 @@ JCIO.SetInitData = function(modData, player) end end - -- Set data like prosthesis lists, cicatrization time etc - -- TODO Change this - TocUpdateBaseData(modData) - -- Setup traits if player:HasTrait("Amputee_Hand") then - JCIO.CutLimbForTrait(player, modData.JCIO.limbs, "Left_Hand") + JCIO.CutLimbForTrait(player, modData.JCIO, "Left_Hand") elseif player:HasTrait("Amputee_LowerArm") then - JCIO.CutLimbForTrait(player, modData.TOC.limbs, "Left_LowerArm") + JCIO.CutLimbForTrait(player, modData.JCIO, "Left_LowerArm") elseif player:HasTrait("Amputee_UpperArm") then - JCIO.CutLimbForTrait(player, modData.TOC.limbs, "Left_UpperArm") + JCIO.CutLimbForTrait(player, modData.JCIO, "Left_UpperArm") end end + JCIO.Init = function(_, player) local modData = player:getModData() @@ -242,10 +180,8 @@ JCIO.Init = function(_, player) JCIO.SetInitData(modData, player) else JCIOCompat.CheckCompatibilityWithOlderVersions(modData) - - -- TODO This is gonna be deleted and moved directly to TOC - TocUpdateBaseData(modData) -- Since it's gonna be common to update stuff - TocCheckLegsAmputations(modData) + JCIOAnims.CheckAndSetMissingFootAnims(modData) + end -- Compat fix with older versions @@ -277,24 +213,24 @@ local function InitializeJustCutItOff() JCIO.limbParameters[partName] = {} if limb == "Hand" then - JCIO.limbParameters[partName].cicatrization_base_time = 1700 - JCIO.limbParameters[partName].depends_on = {} + JCIO.limbParameters[partName].cicatrizationBaseTime = 1700 + JCIO.limbParameters[partName].dependsOn = {} elseif limb == "LowerArm" then - JCIO.limbParameters[partName].cicatrization_base_time = 1800 - JCIO.limbParameters[partName].depends_on = { side .. "_Hand", } + JCIO.limbParameters[partName].cicatrizationBaseTime = 1800 + JCIO.limbParameters[partName].dependsOn = { side .. "_Hand", } elseif limb == "UpperArm" then - JCIO.limbParameters[partName].cicatrization_base_time = 2000 - JCIO.limbParameters[partName].depends_on = { side .. "_Hand", side .. "_LowerArm", } + JCIO.limbParameters[partName].cicatrizationBaseTime = 2000 + JCIO.limbParameters[partName].dependsOn = { side .. "_Hand", side .. "_LowerArm", } elseif limb == "Foot" then - JCIO.limbParameters[partName].cicatrization_base_time = 1700 - JCIO.limbParameters[partName].depends_on = {} + JCIO.limbParameters[partName].cicatrizationBaseTime = 1700 + JCIO.limbParameters[partName].dependsOn = {} end end end -------------------------- - InitializeTraits() + JCIO.InitializeTraits() Events.OnCreatePlayer.Add(JCIO.Init) -- Setup updates diff --git a/media/lua/client/JCIO_Visuals.lua b/media/lua/client/JCIO_Visuals.lua new file mode 100644 index 0000000..a157fbc --- /dev/null +++ b/media/lua/client/JCIO_Visuals.lua @@ -0,0 +1,112 @@ +------------------------------------------ +------------- JUST CUT IT OFF ------------ +------------------------------------------ +------------ VISUALS FUNCTIONS ----------- + + +if JCIOVisuals == nil then + JCIOVisuals = {} +end + + +JCIOVisuals.SetTextureForAmputation = function(item, player, cicatrized) + local humanVisual = player:getHumanVisual() + local textureString = humanVisual:getSkinTexture() + + local isHairy = string.find(textureString, "a$") + -- Hairy bodies + if isHairy then + textureString = textureString:sub(1, -2) -- Removes b at the end to make it compatible + end + + + local matchedIndex = string.match(textureString, "%d$") + + if isHairy then + matchedIndex = matchedIndex + 5 + end + + + if cicatrized then + if isHairy then + matchedIndex = matchedIndex + 5 -- to use the cicatrized texture on hairy bodies + else + matchedIndex = matchedIndex + 10 -- cicatrized texture only, no hairs + end + end + + --print("TOC: Setting texture " .. matched_index) + item:getVisual():setTextureChoice(tonumber(matchedIndex - 1)) -- it counts from 0, so we have to subtract 1 + +end + +JCIOVisuals.SetBloodOnAmputation = function(player, bodyPart) + + local bodyPartType = bodyPart:getType() + local bloodBodyPartType + + if bodyPartType == BodyPartType.Hand_R then + bloodBodyPartType = BloodBodyPartType.ForeArm_R + elseif bodyPartType == BodyPartType.Hand_L then + bloodBodyPartType = BloodBodyPartType.ForeArm_L + elseif bodyPartType == BodyPartType.Forearm_L or bodyPartType == BodyPartType.UpperArm_L then + bloodBodyPartType = BloodBodyPartType.UpperArm_L + elseif bodyPartType == BodyPartType.Forearm_R or bodyPartType == BodyPartType.UpperArm_R then + bloodBodyPartType = BloodBodyPartType.UpperArm_R + end + + player:addBlood(bloodBodyPartType, false, true, false) + player:addBlood(BloodBodyPartType.Torso_Lower, false, true, false) +end + +function TocSetCorrectTextureForAmputation(item, player, cicatrized) + local human_visual = player:getHumanVisual() + local texture_string = human_visual:getSkinTexture() + + local is_hairy = string.find(texture_string, "a$") + -- Hairy bodies + if is_hairy then + texture_string = texture_string:sub(1, -2) -- Removes b at the end to make it compatible + end + + + local matched_index = string.match(texture_string, "%d$") + + if is_hairy then + matched_index = matched_index + 5 + end + + + if cicatrized then + if is_hairy then + matched_index = matched_index + 5 -- to use the cicatrized texture on hairy bodies + else + matched_index = matched_index + 10 -- cicatrized texture only, no hairs + end + end + + --print("TOC: Setting texture " .. matched_index) + item:getVisual():setTextureChoice(tonumber(matched_index - 1)) -- it counts from 0, so we have to subtract 1 +end + + +function TocSetBloodOnAmputation(player, body_part) + local body_part_type = body_part:getType() + local blood_body_part_type + if body_part_type == BodyPartType.Hand_R then + blood_body_part_type = BloodBodyPartType.ForeArm_R + elseif body_part_type == BodyPartType.Hand_L then + blood_body_part_type = BloodBodyPartType.ForeArm_L + elseif body_part_type == BodyPartType.Forearm_L or body_part_type == BodyPartType.UpperArm_L then + blood_body_part_type = BloodBodyPartType.UpperArm_L + elseif body_part_type == BodyPartType.Forearm_R or body_part_type == BodyPartType.UpperArm_R then + blood_body_part_type = BloodBodyPartType.UpperArm_R + end + + + --print("TOC: Adding blood based on " .. tostring(body_part_type)) + + player:addBlood(blood_body_part_type, false, true, false) + player:addBlood(BloodBodyPartType.Torso_Lower, false, true, false) + +end \ No newline at end of file diff --git a/media/lua/client/TOC_ClientCommands.lua b/media/lua/client/TOC_ClientCommands.lua index 02bc5a6..36ada5f 100644 --- a/media/lua/client/TOC_ClientCommands.lua +++ b/media/lua/client/TOC_ClientCommands.lua @@ -33,7 +33,14 @@ end ServerCommands.CutLimb = function(arg) local data = arg["toSend"] - TocCutLimb(data[1], data[2], data[3], data[4]) + + local partName = data[1] + local surgeonFactor = data[2] + local bandageTable = data[3] + local painkillerTable = data[4] + + + JCIO.CutLimb(partName, surgeonFactor, bandageTable, painkillerTable) end diff --git a/media/lua/client/TOC_Debug.lua b/media/lua/client/TOC_Debug.lua index 0a4542a..61fad68 100644 --- a/media/lua/client/TOC_Debug.lua +++ b/media/lua/client/TOC_Debug.lua @@ -77,45 +77,44 @@ function TocResetEverything() -- Reset special flag for legs amputations - SetMissingFootAnimation(false) + JCIOAnims.SetMissingFootAnimation(false) end -- Set correct body locations for items in inventory function TocResetClothingItemBodyLocation(player, side, limb) - local player_inventory = player:getInventory() - local limbs_data = player:getModData().TOC.Limbs - local amputation_item_name = TocGetAmputationFullTypeFromInventory(player, side, limb) - local equipped_prosthesis_item_name = TocGetEquippedProsthesisFullTypeFromInventory(player, side, limb) - print(amputation_item_name) - print(equipped_prosthesis_item_name) - if amputation_item_name ~= nil then + local playerInv = player:getInventory() + local limbsData = player:getModData().JCIO.limbs - local amputation_item = player_inventory:FindAndReturn(amputation_item_name) - if amputation_item ~= nil then - player:removeWornItem(amputation_item) - player:getInventory():Remove(amputation_item) - amputation_item = player_inventory:AddItem(amputation_item_name) - TocSetCorrectTextureForAmputation(amputation_item, player, limbs_data[side .. "_" .. limb].is_cicatrized) + local amputationItemName = TocGetAmputationFullTypeFromInventory(player, side, limb) + local equippedProsthesisItemName = TocGetEquippedProsthesisFullTypeFromInventory(player, side, limb) - player:setWornItem(amputation_item:getBodyLocation(), amputation_item) + if amputationItemName ~= nil then + + local amputationItem = playerInv:FindAndReturn(amputationItemName) + if amputationItem ~= nil then + player:removeWornItem(amputationItem) + player:getInventory():Remove(amputationItem) + amputationItem = playerInv:AddItem(amputationItemName) + JCIOVisuals.SetTextureForAmputation(amputationItem, player, limbsData[side .. "_" .. limb].is_cicatrized) + player:setWornItem(amputationItem:getBodyLocation(), amputationItem) end - amputation_item = nil -- reset it + amputationItem = nil -- reset it end - if equipped_prosthesis_item_name ~= nil then - local prosthesis_item = player_inventory:FindAndReturn(equipped_prosthesis_item_name) - if prosthesis_item ~= nil then - print("Resetting " .. prosthesis_item:getName()) - player:removeWornItem(prosthesis_item) - player:getInventory():Remove(prosthesis_item) - prosthesis_item = player_inventory:AddItem(equipped_prosthesis_item_name) - player:setWornItem(prosthesis_item:getBodyLocation(), prosthesis_item) + if equippedProsthesisItemName ~= nil then + local prosthesisItem = playerInv:FindAndReturn(equippedProsthesisItemName) + if prosthesisItem ~= nil then + print("Resetting " .. prosthesisItem:getName()) + player:removeWornItem(prosthesisItem) + player:getInventory():Remove(prosthesisItem) + prosthesisItem = playerInv:AddItem(equippedProsthesisItemName) + player:setWornItem(prosthesisItem:getBodyLocation(), prosthesisItem) end - prosthesis_item = nil -- reset it + prosthesisItem = nil -- reset it end end diff --git a/media/lua/client/TOC_HelperFunctions.lua b/media/lua/client/TOC_HelperFunctions.lua index 54378f9..852496e 100644 --- a/media/lua/client/TOC_HelperFunctions.lua +++ b/media/lua/client/TOC_HelperFunctions.lua @@ -93,13 +93,3 @@ end - ------------------------------------------ -function TocCheckLegsAmputations(mod_data) - - if mod_data.TOC.Limbs["Left_Foot"].is_cut or mod_data.TOC.Limbs["Right_Foot"].is_cut then - SetMissingFootAnimation(true) - end - - -end \ No newline at end of file diff --git a/media/lua/client/TOC_Visuals.lua b/media/lua/client/TOC_Visuals.lua deleted file mode 100644 index 008c011..0000000 --- a/media/lua/client/TOC_Visuals.lua +++ /dev/null @@ -1,51 +0,0 @@ -function TocSetCorrectTextureForAmputation(item, player, cicatrized) - local human_visual = player:getHumanVisual() - local texture_string = human_visual:getSkinTexture() - - local is_hairy = string.find(texture_string, "a$") - -- Hairy bodies - if is_hairy then - texture_string = texture_string:sub(1, -2) -- Removes b at the end to make it compatible - end - - - local matched_index = string.match(texture_string, "%d$") - - if is_hairy then - matched_index = matched_index + 5 - end - - - if cicatrized then - if is_hairy then - matched_index = matched_index + 5 -- to use the cicatrized texture on hairy bodies - else - matched_index = matched_index + 10 -- cicatrized texture only, no hairs - end - end - - --print("TOC: Setting texture " .. matched_index) - item:getVisual():setTextureChoice(tonumber(matched_index - 1)) -- it counts from 0, so we have to subtract 1 -end - - -function TocSetBloodOnAmputation(player, body_part) - local body_part_type = body_part:getType() - local blood_body_part_type - if body_part_type == BodyPartType.Hand_R then - blood_body_part_type = BloodBodyPartType.ForeArm_R - elseif body_part_type == BodyPartType.Hand_L then - blood_body_part_type = BloodBodyPartType.ForeArm_L - elseif body_part_type == BodyPartType.Forearm_L or body_part_type == BodyPartType.UpperArm_L then - blood_body_part_type = BloodBodyPartType.UpperArm_L - elseif body_part_type == BodyPartType.Forearm_R or body_part_type == BodyPartType.UpperArm_R then - blood_body_part_type = BloodBodyPartType.UpperArm_R - end - - - --print("TOC: Adding blood based on " .. tostring(body_part_type)) - - player:addBlood(blood_body_part_type, false, true, false) - player:addBlood(BloodBodyPartType.Torso_Lower, false, true, false) - -end \ No newline at end of file diff --git a/media/lua/client/TimedActions/ISCutLimb.lua b/media/lua/client/TimedActions/ISCutLimb.lua index 8ad4203..31aae88 100644 --- a/media/lua/client/TimedActions/ISCutLimb.lua +++ b/media/lua/client/TimedActions/ISCutLimb.lua @@ -122,7 +122,7 @@ function ISCutLimb:perform() SendCutLimb(self.patient, self.part_name, surgeon_factor, bandage_table, painkiller_table) sendClientCommand(self.surgeon, "TOC", "AskStopAmputationSound", {surgeon_id = self.surgeon:getOnlineID()}) else - TocCutLimb(self.part_name, surgeon_factor, bandage_table, painkiller_table) + JCIO.CutLimb(self.part_name, surgeon_factor, bandage_table, painkiller_table) end self.surgeon:getEmitter():stopSoundByName("Amputation_Sound")