Using the 8.x versions of ArkInventory, CanIMogIt's icons are not displayed unless the bank or guild bank is opened.
CIMI_ArkInventoryAddFrame() is triggered from "PLAYER_LOGIN", "BANKFRAME_OPENED", and "GUILDBANKFRAME_OPENED" however ArkInventory's itemobjects do not seem to be built at PLAYER_LOGIN (except for the first item in each bag) until ArkInventory is first opened.
I created a workaround to call CIMI_ArkInventoryAddFrame() when the ArkInventory frame is shown, it's excessive but it seems to work reliably in the interim.
ArkInventory now has its own Transmog icons, but I prefer those used by Can I Mog It? and ALL THE THINGS.
ArkInventory -> Config -> Settings -> Designs -> Default - Bag -> Items -> Status Icons -> Transmogrify -> Enabled.
Maybe instead of the current method used by CanIMogIt's arkinventory plugin, it could modify functions in ArkInventory to do the drawing (if that were more efficient/performant).
same issue here, i prefers can i mog it icons to arks and even if i disable arks icons can i mog its will not show. this just ahppened recently as ive been using these two for months without issue
Here's my quick-and-dirty-solution should anyone want to try it before AmiYuy and company find a better solution
if event == "PLAYER_LOGIN" then -- MouseUI Workaround for lazyloading in ArkInventory
local frame = ArkInventory.Frame_Main_Get( ArkInventory.Const.Location.Bag )
hooksecurefunc(frame, "Show", function()
if not frame.faux_CIMI_PLAYER_LOGIN_RUN then
frame.faux_CIMI_PLAYER_LOGIN_RUN = true
the reason its no longer working is probably because i no longer to pre-build 50 of the item frames for each bag to get around loading while in-combat issues, they get created as required now. if youre in-combat then a temporary frame is created, and replaced once you leave combat.
secure hook the ArkInventory.Frame_Item_OnLoad function
its called when i need to create a new item frame, regardless of location so its the safest way to ensure whatever you need gets added to every item
function args are ( frame, tainted )
frame is the item frame
tainted is a boolean. if true dont do anything as the frame was created in combat (thus tainted) and is only temporary, it will get replaced when out of combat, if its false then do what you need to do
note: when displaying the icons you should probably check if the location being displayed is offline or not in arkinventory as youre using bag/slot ids which wont work when AI is displaying another characters data.
i think this should work, but not sure as i dont use mogit
replace existing lines with these where they overlap, the rest of the code underneath this probably doesnt need to be changed (its not the best way to do it but it works so im not touching it)
the event functions section only has one change, the second line is commented out, thats it
-- UpdateIcon functions --
if not self or not self:GetParent() then return end
local frame = self:GetParent( )
if not frame.ARK_Data then return end
if not CIMI_CheckOverlayIconEnabled(self) then
local h, sb, bag, slot
if ArkInventory.Global.Location[frame.ARK_Data.loc_id].isOffline then
local i = ArkInventory.Frame_Item_GetDB(frame)
h = i.h
bag = self.ARK_Data.blizzard_id
slot = self.ARK_Data.slot_id
CIMI_SetIcon(self, ArkInventoryItemButton_CIMIUpdateIcon, CanIMogIt:GetTooltipText(h, bag, slot))
-- Begin adding to frames --
if not tainted then
-- Add to frames
hooksecurefunc(ArkInventory, "Frame_Item_OnLoad", CIMI_ArkInventoryAddFrame)
-- Event functions --
-- Make sure all CIMI frames exist
for i=1,NUM_CONTAINER_FRAMES do
for j=1,MAX_CONTAINER_ITEMS do
Thanks @Arkayenro for the reply! Hopefully the author or one of the maintainers will see it and update accordingly!
Thank you all for the reports. This is fixed in 8.0.0v1.10.
Also thank you Arkayenro for the help getting it working again and for the offline bags code.
GitLab ticket: https://gitlab.com/toreltwiddler/CanIMogIt/issues/190
To post a comment, please
or register a new account.