Cleaning stuff

This commit is contained in:
ZioPao
2024-03-18 18:35:43 +01:00
parent 5180a2cbfb
commit afaceac86e
5 changed files with 95 additions and 61 deletions

View File

@@ -102,46 +102,15 @@ ItemsController.Zombie = {}
---Set an amputation to a zombie
---@param zombie IsoZombie
function ItemsController.Zombie.SpawnAmputationItem(zombie)
-- TODO Set texture ID
local itemVisualsList = zombie:getItemVisuals()
local ignoredLimbs = {}
if itemVisualsList == nil then return end
for i=0, itemVisualsList:size() - 1 do
local itemVisual = itemVisualsList:get(i)
-- TODO Check body location of item and deletes potential amputation to apply
local clothingName = itemVisual:getClothingItemName()
--print(clothingName)
if clothingName and luautils.stringStarts(clothingName, StaticData.AMPUTATION_CLOTHING_ITEM_BASE) then
TOC_DEBUG.print("added " .. clothingName .. " to ignoredLimbs")
ignoredLimbs[clothingName] = clothingName
end
end
-- TODO Consider highest amputation
local usableClothingAmputations = {}
for i=1, #StaticData.LIMBS_STR do
local limbName = StaticData.LIMBS_STR[i]
local clothingName = StaticData.AMPUTATION_CLOTHING_ITEM_BASE .. limbName
if ignoredLimbs[clothingName] == nil then
table.insert(usableClothingAmputations, clothingName)
end
end
-- TODO Random index
local index = ZombRand(1, #usableClothingAmputations)
local itemVisual = ItemVisual:new()
itemVisual:setItemType(usableClothingAmputations[index])
---@param amputationFullType string Full Type
function ItemsController.Zombie.SpawnAmputationItem(zombie, amputationFullType)
local texId = ItemsController.Zombie.GetAmputationTexturesIndex(zombie)
local itemVisual = ItemVisual:new()
itemVisual:setItemType(amputationFullType)
itemVisual:setTextureChoice(texId)
local clothingItem = zombie:getInventory():AddItem(amputationFullType)
zombie:setWornItem(clothingItem:getBodyLocation(), clothingItem)
zombie:getItemVisuals():add(itemVisual)
zombie:resetModelNextFrame()
end

View File

@@ -85,10 +85,10 @@ function CachedDataHandler.CalculateHighestAmputatedLimbs(username)
for k, _ in pairs(amputatedLimbs) do
local limbName = k
local index = CommonMethods.GetSide(limbName)
local side = CommonMethods.GetSide(limbName)
if dcInst:getIsCut(limbName) and dcInst:getIsVisible(limbName) then
TOC_DEBUG.print("Added Highest Amputation: " .. limbName)
CachedDataHandler.highestAmputatedLimbs[username][index] = limbName
CachedDataHandler.highestAmputatedLimbs[username][side] = limbName
end
end
end

View File

@@ -1,33 +1,99 @@
local ItemsController = require("TOC/Controllers/ItemsController")
-- local ItemsController = require("TOC/Controllers/ItemsController")
-- local StaticData = require("TOC/StaticData")
--------------------
-- --------------------
-- TODO This is low priority, work on it AFTER everything else is ok
-- This is low priority, work on it AFTER everything else is ok
-- I doubt I can get this working, too many limitations
-- -------------------
-------------------
-- ---@param zombie IsoZombie
-- ---@param character IsoPlayer
-- ---@param bodyPartType any
-- ---@param handWeapon any
-- local function test(zombie, character, bodyPartType, handWeapon)
local function test(zombie, character, bodyPartType, handWeapon)
-- -- LOCAL ONLY!!!
-- if character ~= getPlayer() then return end
-- LOCAL ONLY!!!
if character ~= getPlayer() then return end
-- -- For now, if there's a single TOC item on it don't go any further
-- local zombieVisuals = zombie:getItemVisuals()
-- if zombieVisuals == nil then return end
-- local zombieInv = zombie:getInventory()
-- local function predicate(item)
-- return (item:getType():contains("Amputation_"))
-- end
-- local foundItem = zombieInv:containsEvalRecurse(predicate)
-- if foundItem then
-- print("Item already in")
-- return
-- end
-- TODO Check damage and weapon type
--ItemsController.Zombie.GetAmputationTexturesIndex(zombie)
ItemsController.Zombie.SpawnAmputationItem(zombie)
end
-- local clothingItemFullTypes = {}
-- -- Common function?
-- for i=1, #StaticData.LIMBS_STR do
-- local limbName = StaticData.LIMBS_STR[i]
-- local clothingName = StaticData.AMPUTATION_CLOTHING_ITEM_BASE .. limbName
-- table.insert(clothingItemFullTypes, clothingName)
-- end
Events.OnHitZombie.Add(test)
-- local index = ZombRand(1, #clothingItemFullTypes)
-- local randomFullType = clothingItemFullTypes[index]
-- local function test2(zombie, player, handWeapon, damage)
-- if not instanceof(zombie, "IsoZombie") then return end
-- local texId = ItemsController.Zombie.GetAmputationTexturesIndex(zombie)
-- local clothingInventoryItem = zombieInv:AddItem(randomFullType)
-- ---@cast clothingInventoryItem InventoryItem
-- clothingInventoryItem:getVisual():setTextureChoice(texId)
-- zombie:setWornItem(clothingInventoryItem:getBodyLocation(), clothingInventoryItem)
-- print(zombie)
-- local itemVisual = ItemVisual:new()
-- itemVisual:setItemType(randomFullType)
-- itemVisual:setTextureChoice(texId)
-- zombieVisuals:add(itemVisual)
-- zombie:resetModelNextFrame()
-- --zombieInv = zombie:getInventory():add
-- -- foundItem = zombieInv:containsEvalRecurse(predicate)
-- -- print(foundItem)
-- -- zombieInv = zombie:getInventory()
-- --ItemsController.Zombie.SpawnAmputationItem(zombie, randomFullType)
-- -- local usableClothingAmputations = {}
-- -- local index = ZombRand(1, #usableClothingAmputations)
-- -- local amputationFullType = usableClothingAmputations[index]
-- end
-- Events.OnWeaponHitCharacter.Add(test2)
-- Events.OnHitZombie.Add(test)