From afaceac86ef65bea8281c2d6cdec4370c3d5d184 Mon Sep 17 00:00:00 2001 From: ZioPao Date: Mon, 18 Mar 2024 18:35:43 +0100 Subject: [PATCH] Cleaning stuff --- .../TOC/Controllers/ItemsController.lua | 45 ++------- .../client/TOC/Handlers/CachedDataHandler.lua | 4 +- .../client/TOC/Zombies/ZombiesAmputation.lua | 98 ++++++++++++++++--- media/lua/shared/TOC/Debug.lua | 8 +- media/lua/shared/TOC/StaticData.lua | 1 - 5 files changed, 95 insertions(+), 61 deletions(-) diff --git a/media/lua/client/TOC/Controllers/ItemsController.lua b/media/lua/client/TOC/Controllers/ItemsController.lua index abe1305..d906681 100644 --- a/media/lua/client/TOC/Controllers/ItemsController.lua +++ b/media/lua/client/TOC/Controllers/ItemsController.lua @@ -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 diff --git a/media/lua/client/TOC/Handlers/CachedDataHandler.lua b/media/lua/client/TOC/Handlers/CachedDataHandler.lua index e958546..5a34487 100644 --- a/media/lua/client/TOC/Handlers/CachedDataHandler.lua +++ b/media/lua/client/TOC/Handlers/CachedDataHandler.lua @@ -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 diff --git a/media/lua/client/TOC/Zombies/ZombiesAmputation.lua b/media/lua/client/TOC/Zombies/ZombiesAmputation.lua index 1c96fdc..18f730d 100644 --- a/media/lua/client/TOC/Zombies/ZombiesAmputation.lua +++ b/media/lua/client/TOC/Zombies/ZombiesAmputation.lua @@ -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) \ No newline at end of file +-- Events.OnHitZombie.Add(test) \ No newline at end of file diff --git a/media/lua/shared/TOC/Debug.lua b/media/lua/shared/TOC/Debug.lua index c028ce9..82b7747 100644 --- a/media/lua/shared/TOC/Debug.lua +++ b/media/lua/shared/TOC/Debug.lua @@ -13,10 +13,10 @@ end ---Print debug ---@param string string function TOC_DEBUG.print(string) - if isDebugEnabled() then - local runningFile = TOC_DEBUG.getRunningFile() - print("[TOC]" .. "[" .. runningFile .. "] " .. tostring(string)) - end + --if isDebugEnabled() then + local runningFile = TOC_DEBUG.getRunningFile() + print("[TOC]" .. "[" .. runningFile .. "] " .. tostring(string)) + --end end ---Horrendous but I don't really care about performance for this diff --git a/media/lua/shared/TOC/StaticData.lua b/media/lua/shared/TOC/StaticData.lua index f27d2da..518b150 100644 --- a/media/lua/shared/TOC/StaticData.lua +++ b/media/lua/shared/TOC/StaticData.lua @@ -174,7 +174,6 @@ StaticData.TRAITS_BP = { --* Visuals and clothing --- Textures --- TODO We need male variations StaticData.HEALTH_PANEL_TEXTURES = { Female = {