@@ -371,8 +371,8 @@ function TLM:GetNodeAndEntryBySpellID(spellID, classID, specID)
371371 end
372372end
373373
374- --- @param nodeID number
375- --- @return boolean
374+ --- @param nodeID number ?
375+ --- @return boolean ? # nil if nodeID or configID is nil
376376function TLM :IsChoiceNode (nodeID )
377377 local configID = C_ClassTalents .GetActiveConfigID ();
378378 if configID == nil or nodeID == nil then return ; end
@@ -653,9 +653,21 @@ function TLM:LoadoutInfoToEntryInfo(loadoutInfo)
653653 local nodeID , entryID = loadoutNodeInfo .nodeID , loadoutNodeInfo .entryID ;
654654 if not nodeInfoExists then
655655 nodeID , entryID = self :GetNodeAndEntryBySpellID (loadoutNodeInfo .spellID , self .playerClassID , self .playerSpecID );
656- isChoiceNode = self :IsChoiceNode (nodeID );
656+ isChoiceNode = self :IsChoiceNode (nodeID ) or false ;
657657 end
658658 if nodeID and entryID then
659+ if entryInfo [nodeID ] then -- duplicate nodeID
660+ if
661+ entryInfo [nodeID ].selectionEntryID == entryID
662+ and entryInfo [nodeID ].ranksPurchased == loadoutNodeInfo .rank
663+ and entryInfo [nodeID ].isChoiceNode == isChoiceNode
664+ then
665+ -- duplicate entry, ignore
666+ totalEntries = totalEntries - 1 ;
667+ else
668+ foundIssues = foundIssues + 1 ;
669+ end
670+ end
659671 --- @type TLM_LoadoutEntryInfo
660672 entryInfo [nodeID ] = {
661673 selectionEntryID = entryID ,
0 commit comments