This commit is contained in:
ZioPao
2024-03-19 12:25:19 +01:00
parent 95f1aa304e
commit 6c5276aff2
2 changed files with 22 additions and 161 deletions

View File

@@ -1,22 +1,19 @@
local ItemsController = require("TOC/Controllers/ItemsController")
local StaticData = require("TOC/StaticData")
local CommandsData = require("TOC/CommandsData")
-------------------------------
local trackedZombies = {
[412412] = {
"FullTypeTest"
}
}
local function predicate(item)
return (item:getType():contains("Amputation_"))
---@param item InventoryItem
local function PredicateAmputationItems(item)
return item:getType():contains("Amputation_")
end
---@param zombie IsoZombie|IsoGameCharacter|IsoMovingObject|IsoObject
---@return integer trueID
local function GetZombieID(zombie)
-- Big love to Chuck and Sir Doggy Jvla for this code
local pID = zombie:getPersistentOutfitID()
local bits = string.split(string.reverse(Long.toUnsignedString(pID, 2)), "")
while #bits < 16 do bits[#bits+1] = 0 end
@@ -28,30 +25,12 @@ local function GetZombieID(zombie)
return trueID
end
-------------------------------
---@param zombie IsoZombie
---@param fullType string
local function AddZombieAmp(zombie, fullType)
local texId = ItemsController.Zombie.GetAmputationTexturesIndex(zombie)
local zombieVisuals = zombie:getItemVisuals()
local itemVisual = ItemVisual:new()
itemVisual:setItemType(fullType)
itemVisual:setTextureChoice(texId)
zombieVisuals:add(itemVisual)
zombie:resetModelNextFrame()
function HandleZombiesAmputations(zombie, character, bodyPartType, handWeapon)
local zombieInv = zombie:getInventory()
zombieInv:AddItem(fullType)
end
---@param zombie IsoZombie
function TestZombieThing(zombie)
local zombieInv = zombie:getInventory()
local foundItem = zombieInv:containsEvalRecurse(predicate)
local foundItem = zombieInv:containsEvalRecurse(PredicateAmputationItems)
if foundItem then
print("Item already in")
@@ -67,54 +46,26 @@ function TestZombieThing(zombie)
end
local index = ZombRand(1, #clothingItemFullTypes)
local randomFullType = clothingItemFullTypes[index]
local amputationFullType = clothingItemFullTypes[index]
AddZombieAmp(zombie, randomFullType)
ItemsController.Zombie.SpawnAmputationItem(zombie, amputationFullType)
-- TODO Add reference and transmit it to server
local pID = GetZombieID(zombie)
local zombieKey = CommandsData.GetZombieKey()
local zombiesMD = ModData.getOrCreate(zombieKey)
zombiesMD[pID] = randomFullType
zombiesMD[pID] = amputationFullType
ModData.add(zombieKey, zombiesMD)
ModData.transmit(zombieKey)
end
end
Events.OnHitZombie.Add(HandleZombiesAmputations)
---@param zombie IsoZombie
---@param character any
---@param bodyPartType any
---@param handWeapon any
local function test(zombie, character, bodyPartType, handWeapon)
TestZombieThing(zombie)
end
Events.OnHitZombie.Add(test)
-----------------------------
---@param zombie IsoZombie
@@ -128,7 +79,7 @@ local function ReapplyAmputation(zombie)
-- check if zombie has amputation
local fullType = zombiesMD[pID]
local zombieInv = zombie:getInventory()
local foundItem = zombieInv:containsEvalRecurse(predicate)
local foundItem = zombieInv:containsEvalRecurse(PredicateAmputationItems)
if foundItem then
return
@@ -139,96 +90,4 @@ local function ReapplyAmputation(zombie)
end
end
Events.OnZombieUpdate.Add(ReapplyAmputation)
-- ---@param zombie IsoZombie
-- ---@param character IsoPlayer
-- ---@param bodyPartType any
-- ---@param handWeapon any
-- local function test(zombie, character, bodyPartType, handWeapon)
-- -- 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
-- 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
-- local index = ZombRand(1, #clothingItemFullTypes)
-- local randomFullType = clothingItemFullTypes[index]
-- local texId = ItemsController.Zombie.GetAmputationTexturesIndex(zombie)
-- local clothingInventoryItem = zombieInv:AddItem(randomFullType)
-- ---@cast clothingInventoryItem InventoryItem
-- clothingInventoryItem:getVisual():setTextureChoice(texId)
-- zombie:setWornItem(clothingInventoryItem:getBodyLocation(), clothingInventoryItem)
-- 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