Divergent/mods/Hunter's Kit - A Butchery E.../gamedata/scripts/tbHuntKit_Monkeypatches.script

99 lines
3.1 KiB
Plaintext
Raw Normal View History

--[[Utils_Ui.script
The vanilla Reinit() attempted to sort the arrays by default which caused some issues with
the display of mutant loot when the amount increased in the window. I've made the no-sorting
an optional feature instead of the default. This is only called during mutant looting anyway,
but better safe than sorry.]]
function utils_ui.UICellContainer:Reinit(t, tf, nosort)
self:Reset()
-- If no inventory is passed, this function will just clear cells
if (not t) then
return
end
-- Create cells
self.ignore_scroll = true
self:Print(nil, "Reset | START Number of cells: %s", #self.cell)
local sort_order = self:GetSortMethod()
if(nosort) then
if self.showcase then
for i,sec in pairs(t) do
self:AddItem(nil,sec, tf and tf[i])
end
else
for i,obj in pairs(t) do
self:AddItem(obj, nil, tf and tf[i])
end
end
else
if self.showcase then
for i,sec in spairs(t, sort_order) do
self:AddItem(nil,sec, tf and tf[i])
end
else
for i,obj in spairs(t, sort_order) do
self:AddItem(obj, nil, tf and tf[i])
end
end
end
self.ignore_scroll = false
self:Print(nil, "Reset | END Number of cells: %s", #self.cell)
self:Scroll_Reinit()
end
--[[bind_crow.script
Vanilla update() used a flawed method that would always return false and prevent crows
from being lootable at all. It also was significalty less robust than Faustle's updated
bind_monster update() function, but was checking all the exact same things so I simply
ported it over. Considering my mod would have made existing fixes to crow looting
fail I implemented it myself.]]
function bind_crow.crow_binder:update(delta)
-- standart update
object_binder.update(self, delta)
if not (self.object:alive()) then
if (self.body_timer<=time_global()-120000) and (self.body_timer~=0) then
printf("releasing object ["..self.object:name().."]")
local se_obj = alife_object(self.object:id())
if (se_obj) then
safe_release_manager.release(se_obj)
end
end
--Alundaio
-- By Faustle - Cloned over from bind_monster.script with minimial edits-tB
if not (self.object:alive()) then
local looted = se_load_var(self.object:id(),self.object:name(),"looted")
if (not looted) then
if (item_knife.is_equipped()) then
if (item_knife.get_condition() < 0.15) then
self.object:set_callback(callback.use_object, nil)
self.object:set_tip_text(game.translate_string("st_body_knife_bad"))
return
end
if (not item_knife.can_loot(self.object:section())) then
self.object:set_callback(callback.use_object, nil)
self.object:set_tip_text(game.translate_string("st_body_knife_weak"))
else
self.object:set_callback(callback.use_object, self.use_callback, self)
self.object:set_tip_text(game.translate_string("st_body_loot"))
end
else
self.object:set_callback(callback.use_object, nil)
self.object:set_tip_text(game.translate_string("st_body_knife_needed"))
return
end
else
self.object:set_callback(callback.use_object, nil)
self.object:set_tip_text("")
end
return
end
--
--Alundaio
end
end