fix poly resetting wand fire counts

This commit is contained in:
bgkillas 2024-08-26 09:22:13 -04:00
parent 515ca94358
commit 16bc21332e
4 changed files with 25 additions and 5 deletions

View file

@ -58,7 +58,7 @@ function rpc.add_nickname(id)
end
end
function remove_healthbar_locally()
local function remove_healthbar_locally()
local player_components = EntityGetAllComponents(ctx.my_player.entity)
if player_components ~= nil then
for _, comp in ipairs(player_components) do

View file

@ -29,7 +29,8 @@ function wandfinder.find_attack_wand(dont_do)
return nil
end
local largest = {-1, -1}
for entity, fire_count in pairs(ctx.my_player.wand_fire_count) do
for entity, tuple in pairs(ctx.my_player.wand_fire_count) do
local fire_count, _ = tuple[1], tuple[2]
for _, wand in ipairs(wands) do
if wand == entity then
goto here
@ -48,4 +49,20 @@ function wandfinder.find_attack_wand(dont_do)
return largest[1]
end
function wandfinder.set_wands_after_poly()
local wands = get_all_wands({})
for entity, tuple in pairs(ctx.my_player.wand_fire_count) do
local _, slot = tuple[1], tuple[2]
for _, wand in ipairs(wands) do
local item = EntityGetFirstComponentIncludingDisabled(wand, "ItemComponent")
local slot2 = ComponentGetValue2(item, "inventory_slot")
if slot == slot2 then
ctx.my_player.wand_fire_count[wand] = ctx.my_player.wand_fire_count[entity]
table.remove(ctx.my_player.wand_fire_count, entity)
break
end
end
end
end
return wandfinder

View file

@ -2,6 +2,7 @@ local util = dofile_once("mods/quant.ew/files/core/util.lua")
local ctx = dofile_once("mods/quant.ew/files/core/ctx.lua")
local net = dofile_once("mods/quant.ew/files/core/net.lua")
local player_fns = dofile_once("mods/quant.ew/files/core/player_fns.lua")
local wandfinder = dofile_once("mods/quant.ew/files/system/notplayer_ai/wandfinder.lua")
local np = require("noitapatcher")
local rpc = net.new_rpc_namespace()
@ -19,6 +20,7 @@ local function entity_changed()
rpc.change_entity({data = np.SerializeEntity(ctx.my_player.entity)})
else
rpc.change_entity(nil)
wandfinder.set_wands_after_poly()
end
end

View file

@ -115,12 +115,13 @@ function OnProjectileFired(shooter_id, projectile_id, initial_rng, position_x, p
-- If it was an initial shot by host
if is_suitable_target(ctx.my_player.entity) then
local inventory = EntityGetFirstComponent(ctx.my_player.entity, "Inventory2Component")
local wand = ComponentGetValue2(inventory, "mActiveItem")
local wand = ComponentGetValue2(inventory, "mActualActiveItem")
local item = EntityGetFirstComponentIncludingDisabled(wand, "ItemComponent")
local wands = ctx.my_player.wand_fire_count
if wands[wand] == nil then
wands[wand] = 0
wands[wand] = {0, {-1, -1}}
end
wands[wand] = wands[wand] + 1
wands[wand] = {wands[wand][1] + 1, ComponentGetValue2(item, "inventory_slot")}
end
if (entity_that_shot == 0 and multicast_index ~= -1 and unknown3 == 0) then