LUA error when clicking on humanoid battle pet

I am getting an lua error whenever I click on any humanoid battle pet. (For example, Curious Wolvar Pup).

Message: Interface/FrameXML/TargetFrame.lua:373: attempt to concatenate field '?' (a nil value)
Time: Sat Nov 11 09:27:28 2023
Count: 3
Stack: Interface/FrameXML/TargetFrame.lua:373: attempt to concatenate field '?' (a nil value)
[string "@Interface/FrameXML/TargetFrame.lua"]:373: in function `CheckBattlePet'
[string "@Interface/FrameXML/TargetFrame.lua"]:154: in function `Update'
[string "@Interface/FrameXML/TargetFrame.lua"]:169: in function `OnEvent'
[string "@Interface/FrameXML/UnitFrame.lua"]:1086: in function <Interface/FrameXML/UnitFrame.lua:1084>
[string "=[C]"]: in function `CameraOrSelectOrMoveStop'
[string "CAMERAORSELECTORMOVE"]:4: in function <[string "CAMERAORSELECTORMOVE"]:1>

Locals: self = TargetFrame {
 0 = <userdata>
 CreateSpellbar = <function> defined @Interface/FrameXML/TargetFrame.lua:984
 GetSnapOffsets = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:609
 systemInfo = <table> {
 }
 IsFrameAnchoredToMe = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:694
 TrySetCompositeNumberSettingValue = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:212
 downKeys = <table> {
 }
 CheckDead = <function> defined @Interface/FrameXML/TargetFrame.lua:468
 GetSelectionOffset = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:540
 ResetToDefaultPosition = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:254
 GetScaledSelectionSides = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:532
 overHealAbsorbGlow = Texture {
 }
 SelectSystem = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:763
 GetFrameMagneticEligibility = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:714
 healAbsorbBar = Texture {
 }
 UpdateSystemSettingUseLargerFrame = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:1224
 Update = <function> defined @Interface/FrameXML/TargetFrame.lua:126
 unit = "target"
 IsBelowFrame = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:499
 SetScaleBase = <function> defined =[C]:-1
 HasActiveChanges = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:381
 GetScaledCenter = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:525
 IsToTheRightOfFrame = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:487
 OnLoad = <function> defined @Interface/FrameXML/TargetFrame.lua:32
 UpdateDisplayInfoOptions = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:456
 unitHPPercent = 1
 GetSystemName = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:822
 ProcessMovementKey = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:39
 GetSettingValueBool = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:436
 HasCompositeNumberSetting = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:385
 otherHealPredictionBar = Texture {
 }
 UpdateRaidTargetIcon = <function> defined @Interface/FrameXML/TargetFrame.lua:955
 GetTargetPingGUID = <function> defined @Interface/SharedXML/PingableType.lua:21
 DoesSettingValueEqual = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:440
 portrait = Texture {
 }
 UpdateSelectionVerticalState = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:1339
 healAbsorbBarLeftShadow = Texture {
 }
 IsToTheLeftOfFrame = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:481
 GetSettingsDialogAnchor = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:465
 hasActiveChanges = false
 OnSystemLoad = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:3
 ClearFrameSnap = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:653
 GetCombinedCenterOffset = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:596
 SetupSettingsDialogAnchor = <function> defined @Interface/FrameXML/EditModeSystemTemplates.lua:1199
 o

From reading the code, it looks like there’s an off by one error when converting the battle pet unit type to a suffix string.

local petType = UnitBattlePetType(self.unit);
self.TargetFrameContent.TargetFrameContentContextual.PetBattleIcon:SetTexture(Interface\\TargetingFrame\\PetBadge-..PET_TYPE_SUFFIX[petType]);

PET_TYPE_SUFFIX = {
[1] = "Humanoid",
[2] = "Dragon",
[3] = "Flying",
[4] = "Undead",
[5] = "Critter",
[6] = "Magical",
[7] = "Elemental",
[8] = "Beast",
[9] = "Water",
[10] = "Mechanical",
};

I tested this using a macro and confirmed that the return value of UnitBattlePetType for humanoid battle pets is 0, when the lua expects it to be 1.

2 Likes

I’ve noticed this as well, mainly with Enok in the Azure Span.

Had this happening to me last week. This appears to have been corrected with this week’s patch on 11/14.