Cicatrization texture swap implemented

This commit is contained in:
Pao
2023-01-31 23:30:22 +01:00
parent 86a74915d5
commit 4bba6654cf
11 changed files with 59 additions and 10 deletions

View File

@@ -13,4 +13,10 @@
<textureChoices>Amputations\skin03b</textureChoices>
<textureChoices>Amputations\skin04b</textureChoices>
<textureChoices>Amputations\skin05b</textureChoices>
<textureChoices>Amputations\skin01</textureChoices>
<textureChoices>Amputations\skin02</textureChoices>
<textureChoices>Amputations\skin03</textureChoices>
<textureChoices>Amputations\skin04</textureChoices>
<textureChoices>Amputations\skin05</textureChoices>
</clothingItem>

View File

@@ -14,4 +14,10 @@
<textureChoices>Amputations\skin03b</textureChoices>
<textureChoices>Amputations\skin04b</textureChoices>
<textureChoices>Amputations\skin05b</textureChoices>
<textureChoices>Amputations\skin01</textureChoices>
<textureChoices>Amputations\skin02</textureChoices>
<textureChoices>Amputations\skin03</textureChoices>
<textureChoices>Amputations\skin04</textureChoices>
<textureChoices>Amputations\skin05</textureChoices>
</clothingItem>

View File

@@ -14,4 +14,10 @@
<textureChoices>Amputations\skin03b</textureChoices>
<textureChoices>Amputations\skin04b</textureChoices>
<textureChoices>Amputations\skin05b</textureChoices>
<textureChoices>Amputations\skin01</textureChoices>
<textureChoices>Amputations\skin02</textureChoices>
<textureChoices>Amputations\skin03</textureChoices>
<textureChoices>Amputations\skin04</textureChoices>
<textureChoices>Amputations\skin05</textureChoices>
</clothingItem>

View File

@@ -12,4 +12,10 @@
<textureChoices>Amputations\skin03b</textureChoices>
<textureChoices>Amputations\skin04b</textureChoices>
<textureChoices>Amputations\skin05b</textureChoices>
<textureChoices>Amputations\skin01</textureChoices>
<textureChoices>Amputations\skin02</textureChoices>
<textureChoices>Amputations\skin03</textureChoices>
<textureChoices>Amputations\skin04</textureChoices>
<textureChoices>Amputations\skin05</textureChoices>
</clothingItem>

View File

@@ -14,4 +14,10 @@
<textureChoices>Amputations\skin03b</textureChoices>
<textureChoices>Amputations\skin04b</textureChoices>
<textureChoices>Amputations\skin05b</textureChoices>
<textureChoices>Amputations\skin01</textureChoices>
<textureChoices>Amputations\skin02</textureChoices>
<textureChoices>Amputations\skin03</textureChoices>
<textureChoices>Amputations\skin04</textureChoices>
<textureChoices>Amputations\skin05</textureChoices>
</clothingItem>

View File

@@ -14,4 +14,10 @@
<textureChoices>Amputations\skin03b</textureChoices>
<textureChoices>Amputations\skin04b</textureChoices>
<textureChoices>Amputations\skin05b</textureChoices>
<textureChoices>Amputations\skin01</textureChoices>
<textureChoices>Amputations\skin02</textureChoices>
<textureChoices>Amputations\skin03</textureChoices>
<textureChoices>Amputations\skin04</textureChoices>
<textureChoices>Amputations\skin05</textureChoices>
</clothingItem>

View File

@@ -10,7 +10,7 @@ local function TocReapplyAmputationClothingItem(mod_data)
local amputated_clothing_name = "TOC.Amputation_" .. part_name
if player_inv:FindAndReturn(amputated_clothing_name) == nil then
local amputation_clothing_item = player:getInventory():AddItem(TocFindAmputatedClothingFromPartName(part_name))
TocSetCorrectTextureForAmputation(amputation_clothing_item, player)
TocSetCorrectTextureForAmputation(amputation_clothing_item, player, mod_data.TOC.Limbs[part_name].is_cicatrized)
player:setWornItem(amputation_clothing_item:getBodyLocation(), amputation_clothing_item)
end

View File

@@ -48,7 +48,7 @@ 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 = TocFindAmputationInInventory(player, side, limb)
local equipped_prosthesis_item_name = TocFindEquippedProsthesisInInventory(player, side, limb)
print(amputation_item_name)
@@ -61,7 +61,7 @@ function TocResetClothingItemBodyLocation(player, side, limb)
player:removeWornItem(amputation_item)
player:getInventory():Remove(amputation_item)
amputation_item = player_inventory:AddItem(amputation_item_name)
TocSetCorrectTextureForAmputation(amputation_item, player)
TocSetCorrectTextureForAmputation(amputation_item, player, limbs_data[side .. "_" .. limb].is_cicatrized)
player:setWornItem(amputation_item:getBodyLocation(), amputation_item)
end

View File

@@ -121,9 +121,14 @@ local function SetHealthStatusForBodyPart(part_data, part_name, player)
if not part_data[part_name].is_cicatrized then
if part_data[part_name].cicatrization_time < 0 then
part_data[part_name].is_cicatrized = true
local player_inventory = player:getInventory()
local amputated_clothing_item_name = TocFindAmputationOrProsthesisName(part_name, player, "Amputation")
local amputated_clothing_item = player_inventory:FindAndReturn(amputated_clothing_item_name)
-- TODO make this random if the player gets it or not
player:removeWornItem(amputated_clothing_item)
TocSetCorrectTextureForAmputation(amputated_clothing_item, player, true)
player:setWornItem(amputated_clothing_item:getBodyLocation(), amputated_clothing_item)
if (not player:HasTrait("Brave")) and ZombRand(1, 11) > 5 then
player:getTraits():add("Brave")
@@ -203,6 +208,9 @@ local function TocUpdateEveryTenMinutes()
for _, part_name in pairs(GetBodyParts()) do
if part_data[part_name].is_cut and not part_data[part_name].is_cicatrized then
part_data[part_name].cicatrization_time = part_data[part_name].cicatrization_time - SandboxVars.TOC.CicatrizationSpeedMultiplier
end
end

View File

@@ -1,4 +1,4 @@
function TocSetCorrectTextureForAmputation(item, player)
function TocSetCorrectTextureForAmputation(item, player, cicatrized)
local human_visual = player:getHumanVisual()
local texture_string = human_visual:getSkinTexture()
@@ -9,8 +9,13 @@ function TocSetCorrectTextureForAmputation(item, player)
local matched_index = string.match(texture_string, "%d$")
if cicatrized then
matched_index = matched_index + 5 -- to use the cicatrized texture
end
print("TOC: Setting texture " .. matched_index)
item:getVisual():setTextureChoice(tonumber(matched_index - 1)) -- TODO why is it correct with -1?
item:getVisual():setTextureChoice(tonumber(matched_index - 1)) -- it counts from 0, so we have to subtract 1
end
function TocSetBloodOnAmputation(player, body_part)

View File

@@ -132,7 +132,7 @@ function TocSetInitData(mod_data, player)
if player:HasTrait("Amputee_Hand") then
local amputation_clothing_item = player:getInventory():AddItem("TOC.Amputation_Left_Hand")
TocSetCorrectTextureForAmputation(amputation_clothing_item, player)
TocSetCorrectTextureForAmputation(amputation_clothing_item, player, true)
player:setWornItem(amputation_clothing_item:getBodyLocation(), amputation_clothing_item)
mod_data.TOC.Limbs.Left_Hand.is_cut = true
@@ -141,7 +141,7 @@ function TocSetInitData(mod_data, player)
mod_data.TOC.Limbs.Left_Hand.is_cicatrized = true
elseif player:HasTrait("Amputee_LowerArm") then
local amputation_clothing_item = player:getInventory():AddItem("TOC.Amputation_Left_LowerArm")
TocSetCorrectTextureForAmputation(amputation_clothing_item, player)
TocSetCorrectTextureForAmputation(amputation_clothing_item, player, true)
player:setWornItem(amputation_clothing_item:getBodyLocation(), amputation_clothing_item)
mod_data.TOC.Limbs.Left_LowerArm.is_cut = true
@@ -157,7 +157,7 @@ function TocSetInitData(mod_data, player)
end
elseif player:HasTrait("Amputee_UpperArm") then
local amputation_clothing_item = player:getInventory():AddItem("TOC.Amputation_Left_UpperArm")
TocSetCorrectTextureForAmputation(amputation_clothing_item, player)
TocSetCorrectTextureForAmputation(amputation_clothing_item, player, true)
player:setWornItem(amputation_clothing_item:getBodyLocation(), amputation_clothing_item)
mod_data.TOC.Limbs.Left_UpperArm.is_cut = true