diff --git a/media/lua/client/TOC_Checks.lua b/media/lua/client/TOC_Checks.lua index cc9359a..603a69a 100644 --- a/media/lua/client/TOC_Checks.lua +++ b/media/lua/client/TOC_Checks.lua @@ -7,7 +7,6 @@ end ----------------------------------------- -- MP HANDLING CHECKS function CheckIfCanBeCut(part_name) - -- This is just for MP handling... Not enough to check everything local toc_data = getPlayer():getModData().TOC local check = (not toc_data.Limbs[part_name].is_cut) and (not CheckIfProsthesisAlreadyInstalled(toc_data.Limbs, part_name)) diff --git a/media/lua/client/TOC_Client.lua b/media/lua/client/TOC_Client.lua index a77ae5e..064f3ed 100644 --- a/media/lua/client/TOC_Client.lua +++ b/media/lua/client/TOC_Client.lua @@ -9,7 +9,7 @@ Commands["ResponseCanAct"] = function(arg) ui.responsePartName = arg["toSend"][1] ui.responseCan = arg["toSend"][3] ui.responseUserName = getPlayerByOnlineID(arg["From"]):getUsername() - ui.responseActionIsBitten = getPlayerByOnlineID(arg["From"]):getBodyDamage():getBodyPart(TocGetBodyPartTypeFromBodyPart(ui.responsePartName)):bitten() + ui.responseActionIsBitten = getPlayerByOnlineID(arg["From"]):getBodyDamage():getBodyPart(TocGetBodyPartTypeFromPartName(ui.responsePartName)):bitten() end diff --git a/media/lua/client/TOC_CommonFunctions.lua b/media/lua/client/TOC_CommonFunctions.lua index ed978f5..2840a08 100644 --- a/media/lua/client/TOC_CommonFunctions.lua +++ b/media/lua/client/TOC_CommonFunctions.lua @@ -4,6 +4,16 @@ function GetBodyParts() return bodyparts end +function GetProsthesisList() + return {"TOC.WoodenHook", "TOC.MetalHook", "TOC.MetalHand"} + +end + +function TocFindAmputatedClothingFromPartName(part_name) + return "TOC.Amputation_" .. part_name +end + + function GetLimbsBodyPartTypes() return {BodyPartType.Hand_R, BodyPartType.ForeArm_R, BodyPartType.UpperArm_R, @@ -52,3 +62,14 @@ function FindTocBodyPartNameFromBodyPartType(bodyPartType) end end +function TocGetBodyPartTypeFromPartName(part_name) + if part_name == "Right_Hand" then return BodyPartType.Hand_R end + if part_name == "Right_LowerArm" then return BodyPartType.ForeArm_R end + if part_name == "Right_UpperArm" then return BodyPartType.UpperArm_R end + if part_name == "Left_Hand" then return BodyPartType.Hand_L end + if part_name == "Left_LowerArm" then return BodyPartType.ForeArm_L end + if part_name == "Left_UpperArm" then return BodyPartType.UpperArm_L end +end + + + diff --git a/media/lua/client/TOC_Compatibility.lua b/media/lua/client/TOC_Compatibility.lua index a46f588..d5764b6 100644 --- a/media/lua/client/TOC_Compatibility.lua +++ b/media/lua/client/TOC_Compatibility.lua @@ -30,10 +30,6 @@ function TocMapOldDataToNew(mod_data) local backup_old_data = mod_data.TOC - - - - -- for _, v in ipairs(map_names) do -- print("TOC: Looping old names...") -- print(k) diff --git a/media/lua/client/TOC_HelperFunctions.lua b/media/lua/client/TOC_HelperFunctions.lua index 23ab9ed..15b282f 100644 --- a/media/lua/client/TOC_HelperFunctions.lua +++ b/media/lua/client/TOC_HelperFunctions.lua @@ -59,11 +59,11 @@ function SetBodyPartsStatusAfterOperation(player, part_data, part_name, use_oven --for _, v in ipairs(GetBodyParts()) do - local body_part_type = player:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromBodyPart(part_name)) + local body_part_type = player:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromPartName(part_name)) FixSingleBodyPartType(body_part_type, use_oven) for _, v in ipairs(part_data[part_name].depends_on) do - local depended_body_part_type = player:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromBodyPart(v)) + local depended_body_part_type = player:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromPartName(v)) FixSingleBodyPartType(depended_body_part_type, use_oven) end diff --git a/media/lua/client/TOC_LocalActions.lua b/media/lua/client/TOC_LocalActions.lua index a054fd9..7a6662b 100644 --- a/media/lua/client/TOC_LocalActions.lua +++ b/media/lua/client/TOC_LocalActions.lua @@ -29,7 +29,7 @@ function TocEquipProsthesisLocal(_, patient, surgeon, part_name) surgeon_inventory:getItemFromType('TOC.MetalHook') or surgeon_inventory:getItemFromType('TOC.WoodenHook') if prosthesis_to_equip then - ISTimedActionQueue.add(ISInstallProsthesis:new(patient, prosthesis_to_equip, patient:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromBodyPart(part_name)))) + ISTimedActionQueue.add(ISInstallProsthesis:new(patient, prosthesis_to_equip, patient:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromPartName(part_name)))) else surgeon:Say("I need a prosthesis") end @@ -37,5 +37,5 @@ end function TocUnequipProsthesisLocal(_, patient, part_name) local equipped_prosthesis = FindTocItemWorn(part_name, patient) - ISTimedActionQueue.add(ISUninstallProsthesis:new(patient, equipped_prosthesis, patient:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromBodyPart(part_name)))) + ISTimedActionQueue.add(ISUninstallProsthesis:new(patient, equipped_prosthesis, patient:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromPartName(part_name)))) end \ No newline at end of file diff --git a/media/lua/client/TOC_Test.lua2 b/media/lua/client/TOC_Test.lua2 deleted file mode 100644 index 769e296..0000000 --- a/media/lua/client/TOC_Test.lua2 +++ /dev/null @@ -1,192 +0,0 @@ --- TODO Rewrite how all prosthesis are handled - -function TestStuffToc() - - local mod_data = player:getModData().TOC - - - if mod_data.TOC == nil then - mod_data.TOC = {} - - mod_data.TOC = { - - Limbs = {}, - Prosthesis = {}, - Generic = {}, - } - - - - - -------- - -- NEW NAMING SCHEME - - ---- Amputations - - -- Amputation_Left_Hand - -- Amputation_Right_UpperArm - - - ---- Prosthesis to equip - -- Prost_Left_Hand_MetalHook - -- Prost_Right_Forearm_WoodenHook - - --- Objects - -- Prost_Object_WoddenHook - - - local sides = {"Left", "Right"} - local limbs = {"Hand", "LowerArm", "UpperArm"} -- Let's follow their naming - - - local prosthesis_list = {"WoodenHook", "MetalHook", "MetalHand"} - - - - local accepted_prosthesis_hand = {"WoodenHook", "MetalHook", "MetalHand"} - local accepted_prosthesis_lowerarm = {"WoodenHook", "MetalHook", "MetalHand"} - local accepted_prosthesis_upperarm = {} -- For future stuff - - - - - - for _, side in ipairs(sides) do - for _, limb in ipairs(limbs) do - - local part_name = side .. "_" .. limb - - mod_data.TOC.Limbs[part_name].is_cut = false - mod_data.TOC.Limbs[part_name].is_infected = false - mod_data.TOC.Limbs[part_name].is_operated = false - mod_data.TOC.Limbs[part_name].is_cicatrized = false - mod_data.TOC.Limbs[part_name].is_cauterized = false - mod_data.TOC.Limbs[part_name].is_amputation_shown = false - - mod_data.TOC.Limbs[part_name].cicatrization_time = 0 - - - mod_data.TOC.Limbs[part_name].is_prosthesis_equipped = false - mod_data.TOC.Limbs[part_name].prosthesis_factor = 1.0 - mod_data.TOC.Limbs[part_name].prosthesis_material_id = nil - - - -- Even if there are some duplicates, this is just easier in the end since we're gonna get fairly easily part_name - - - 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.AcceptedProsthesis[part_name] = accepted_prosthesis_hand - mod_data.TOC.Prosthesis["WoodenHook"][part_name].prosthesis_factor = 1.5 - mod_data.TOC.Prosthesis["MetalHook"][part_name].prosthesis_factor = 1.3 - mod_data.TOC.Prosthesis["MetalHand"][part_name].prosthesis_factor = 1.1 - - - 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.AcceptedProsthesis[part_name] = accepted_prosthesis_lowerarm - - mod_data.TOC.Prosthesis["WoodenHook"][part_name].prosthesis_factor = 1.65 - mod_data.TOC.Prosthesis["MetalHook"][part_name].prosthesis_factor = 1.45 - mod_data.TOC.Prosthesis["MetalHand"][part_name].prosthesis_factor = 1.25 - 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.AcceptedProsthesis[part_name] = accepted_prosthesis_upperarm - end - - end - end - - -- Setup traits - if player:HasTrait("Amputee_Hand") then - - -- TODO override AddItem so we can change the texture dynamically based on skin color - local amputation_clothing = player:getInventory():AddItem("TOC.Amputation_Left_Hand") - player:setWornItem(amputation_clothing:getBodyLocation(), amputation_clothing) - mod_data.TOC.Left_Hand.is_cut = true - mod_data.TOC.Left_Hand.is_operated = true - mod_data.TOC.Left_Hand.is_amputation_shown = true - mod_data.TOC.Left_Hand.is_cicatrized = true - elseif player:HasTrait("Amputee_LowerArm") then - local amputation_clothing = player:getInventory():AddItem("TOC.Amputation_Left_LowerArm") - player:setWornItem(amputation_clothing:getBodyLocation(), amputation_clothing) - mod_data.TOC.Left_LowerArm.is_cut = true - mod_data.TOC.Left_LowerArm.is_operated = true - mod_data.TOC.Left_LowerArm.is_amputation_shown = true - mod_data.TOC.Left_LowerArm.is_cicatrized = true - elseif player:HasTrait("Amputee_UpperArm") then - local amputation_clothing = player:getInventory():AddItem("TOC.Amputation_Left_UpperArm") - player:setWornItem(amputation_clothing:getBodyLocation(), amputation_clothing) - mod_data.TOC.Left_UpperArm.is_cut = true - mod_data.TOC.Left_UpperArm.is_operated = true - mod_data.TOC.Left_UpperArm.is_amputation_shown = true - mod_data.TOC.Left_UpperArm.is_cicatrized = true - end - - end - - -end - - -function TheOnlyCure.DeclareTraits2() - local amp1 = TraitFactory.addTrait("Amputee_Hand", getText("UI_trait_Amputee_Hand"), -8, getText("UI_trait_Amputee_Hand_desc"), false, false) - amp1:addXPBoost(Perks.LeftHand, 4) - - local amp2 = TraitFactory.addTrait("Amputee_LowerArm", getText("UI_trait_Amputee_LowerArm"), -10, getText("UI_trait_Amputee_LowerArm_desc"), false, false) - amp2:addXPBoost(Perks.LeftHand, 4) - - local amp3 = TraitFactory.addTrait("Amputee_UpperArm", getText("UI_trait_Amputee_UpperArm"), -20, getText("UI_trait_Amputee_UpperArm_desc"), false, false) - amp3:addXPBoost(Perks.LeftHand, 4) - - TraitFactory.addTrait("Insensitive", getText("UI_trait_Insensitive"), 6, getText("UI_trait_Insensitivedesc"), false, false) - TraitFactory.setMutualExclusive("Amputee_Hand", "Amputee_LowerArm") - TraitFactory.setMutualExclusive("Amputee_Hand", "Amputee_UpperArm") - TraitFactory.setMutualExclusive("Amputee_LowerArm", "Amputee_UpperArm") -end - - - - - - - - - - -function Test2Toc(part_name, prosthetic_name) - - -------- - -- NEW NAMING SCHEME - - ---- Amputations - - -- Amputation_Left_Hand - -- Amputation_Right_UpperArm - - - ---- Prosthesis to equip - -- Prost_Left_Hand_MetalHook - -- Prost_Right_Forearm_WoodenHook - - --- Objects - -- Prost_Object_WoddenHook - - - -- First value side, second value limb - local part_name_table = {} - - for v in part_name:gmatch("([^_]+)") do - table.insert(part_name_table, v) - end - - -- TODO Probably add TOC. before prost_ - local prost_to_equip_name = "Prost_" .. part_name_table[1] .. "_" .. part_name_table[2] .. "_" .. prosthetic_name - return prost_to_equip_name - - -end \ No newline at end of file diff --git a/media/lua/client/TOC_UI.lua b/media/lua/client/TOC_UI.lua index fc16909..5698302 100644 --- a/media/lua/client/TOC_UI.lua +++ b/media/lua/client/TOC_UI.lua @@ -53,7 +53,7 @@ local function GetImageName(part_name, toc_data) name = "media/ui/TOC/" .. part_name .. "/Operate.png" elseif part_data.is_cut and not part_data.is_amputation_shown then -- Empty (like hand if forearm cut) name = "media/ui/TOC/Empty.png" - elseif not part_data.is_cut and getPlayer():getBodyDamage():getBodyPart(TocGetBodyPartTypeFromBodyPart(part_name)):bitten() then -- Not cut but bitten + elseif not part_data.is_cut and getPlayer():getBodyDamage():getBodyPart(TocGetBodyPartTypeFromPartName(part_name)):bitten() then -- Not cut but bitten name = "media/ui/TOC/" .. part_name .. "/Bite.png" else -- Not cut name = "media/ui/TOC/" .. part_name .. "/Base.png" @@ -96,7 +96,7 @@ end local function IsPartBitten(part_data, part_name) - return not part_data.is_cut and getPlayer():getBodyDamage():getBodyPart(TocGetBodyPartTypeFromBodyPart(part_name)):bitten() + return not part_data.is_cut and getPlayer():getBodyDamage():getBodyPart(TocGetBodyPartTypeFromPartName(part_name)):bitten() end diff --git a/media/lua/client/TOC_Update.lua b/media/lua/client/TOC_Update.lua index 3f90d95..d5cfcd7 100644 --- a/media/lua/client/TOC_Update.lua +++ b/media/lua/client/TOC_Update.lua @@ -83,7 +83,7 @@ function TheOnlyCure.HealSpecificPart(part_data, part_name, player) local body_damage = player:getBodyDamage() - local body_part_type = body_damage:getBodyPart(TocGetBodyPartTypeFromBodyPart(part_name)) + local body_part_type = body_damage:getBodyPart(TocGetBodyPartTypeFromPartName(part_name)) if not body_part_type then print("TOC ERROR : Can't update health of " .. part_name); return false diff --git a/media/lua/client/TOC_main.lua b/media/lua/client/TOC_main.lua index f8568a9..ac9c921 100644 --- a/media/lua/client/TOC_main.lua +++ b/media/lua/client/TOC_main.lua @@ -218,7 +218,7 @@ function TheOnlyCure.CutLimb(part_name, surgeon_factor, bandage_table, painkille local toc_data = player:getModData().TOC local part_data = toc_data.Limbs - local body_part = player:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromBodyPart(part_name)) + local body_part = player:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromPartName(part_name)) local stats = player:getStats() -- Set damage, stress, and low endurance after amputation @@ -365,7 +365,7 @@ function TryTocAction(_, part_name, action, surgeon, patient) surgeon_inventory:getItemFromType('TOC.MetalHook') or surgeon_inventory:getItemFromType('TOC.WoodenHook') if prosthesis_to_equip then - ISTimedActionQueue.add(ISInstallProsthesis:new(patient, prosthesis_to_equip, patient:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromBodyPart(part_name)))) + ISTimedActionQueue.add(ISInstallProsthesis:new(patient, prosthesis_to_equip, patient:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromPartName(part_name)))) else surgeon:Say("I need a prosthesis") end @@ -377,7 +377,7 @@ function TryTocAction(_, part_name, action, surgeon, patient) elseif action == "Unequip" then --AskCanUnequipProsthesis(patient, part_name) local equipped_prosthesis = FindTocItemWorn(part_name, patient) - ISTimedActionQueue.add(ISUninstallProsthesis:new(patient, equipped_prosthesis, patient:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromBodyPart(part_name)))) + ISTimedActionQueue.add(ISUninstallProsthesis:new(patient, equipped_prosthesis, patient:getBodyDamage():getBodyPart(TocGetBodyPartTypeFromPartName(part_name)))) end ui.actionAct = action ui.partNameAct = part_name diff --git a/media/lua/client/TimedActions/ISCutLimb.lua b/media/lua/client/TimedActions/ISCutLimb.lua index 6d64d46..bc5d8ef 100644 --- a/media/lua/client/TimedActions/ISCutLimb.lua +++ b/media/lua/client/TimedActions/ISCutLimb.lua @@ -44,7 +44,7 @@ function ISCutLimb:start() -- TODO this doesn't work when doing it on another player - local body_part_type = TocGetBodyPartTypeFromBodyPart(self.part_name) + local body_part_type = TocGetBodyPartTypeFromPartName(self.part_name) local body_damage = self.patient:getBodyDamage() local body_damage_part = body_damage:getBodyPart(body_part_type)