View Single Post
11-22-20, 11:32 AM   #7
DahkCeles
A Cliff Giant
 
DahkCeles's Avatar
AddOn Author - Click to view addons
Join Date: Jun 2020
Posts: 73
Option 1: Add a safeguard to RecordPet() so that it doesn't try to execute when information is missing.

Lua Code:
  1. function BattleDex.RecordPet(species, level, quality, primary)
  2.     if (species) then
  3.         --print(string.format("s=%d, l=%d, q=%d, p=%d", species, level, quality, primary));
  4.  
  5.         _G.BattleDexDB.pets[species] = _G.BattleDexDB.pets[species] or {};
  6.  
  7.         local key = primary.."_"..level.."_"..quality;
  8.  
  9.         _G.BattleDexDB.pets[species][key] = _G.BattleDexDB.pets[species][key] or 0;
  10.         _G.BattleDexDB.pets[species][key] = _G.BattleDexDB.pets[species][key] + 1;
  11.     end
  12. end

Option 2: Change RecordBattle() so it is smart enough to know you sometimes have fewer than three pets.

I think you can do it using C_PetBattles.GetNumPets() but its probably also doable with a simple if (s2) then ... end

Lua Code:
  1. function BattleDex.RecordBattle()
  2.  
  3.     if (not C_PetBattles.IsWildBattle()) then
  4.         return;
  5.     end
  6.  
  7.     -- first pet
  8.     local s1 = C_PetBattles.GetPetSpeciesID(2, 1);
  9.     local l1 = C_PetBattles.GetLevel(2, 1);
  10.     local r1 = C_PetBattles.GetBreedQuality(2, 1);
  11.     BattleDex.RecordPet(s1, l1, r1, 0); -- 4th arg means self is primary
  12.    
  13.     -- second pet
  14.     if (C_PetBattles.GetNumPets(2) >= 2) then
  15.         local s2 = C_PetBattles.GetPetSpeciesID(2, 2);
  16.         local l2 = C_PetBattles.GetLevel(2, 2);    
  17.         local r2 = C_PetBattles.GetBreedQuality(2, 2);
  18.         BattleDex.RecordPet(s2, l2, r2, s1);    -- 4th arg points to first pet
  19.     end
  20.    
  21.     -- third pet
  22.     if (C_PetBattles.GetNumPets(2) >= 3) then
  23.         local s3 = C_PetBattles.GetPetSpeciesID(2, 3);
  24.         local l3 = C_PetBattles.GetLevel(2, 3);
  25.         local r3 = C_PetBattles.GetBreedQuality(2, 3); 
  26.         BattleDex.RecordPet(s3, l3, r3, s1);    -- 4th arg points to first pet
  27.     end
  28. end

Last edited by DahkCeles : 11-23-20 at 04:48 PM. Reason: "then" on line 22
  Reply With Quote