diff --git a/src/server/game/BattlePets/PetBattle.cpp b/src/server/game/BattlePets/PetBattle.cpp index 4d80736e1..7ec583d97 100644 --- a/src/server/game/BattlePets/PetBattle.cpp +++ b/src/server/game/BattlePets/PetBattle.cpp @@ -1430,8 +1430,16 @@ namespace PetBattles break; } default: - TC_LOG_WARN("server.loading", "PetBattle ProcessEffect: UNHANDLED effectCategory={} basePower={} defenderAlive={}", - effectCategory, basePower, defender.IsAlive()); + { + std::string labels; + if (effectProps) + for (uint8 i = 0; i < 6; ++i) + if (effectProps->ParamLabel[i] && effectProps->ParamLabel[i][0] != '\0') + labels += Trinity::StringFormat("[{}]={} ", i, effectProps->ParamLabel[i]); + TC_LOG_WARN("server.loading", "PetBattle ProcessEffect: UNHANDLED effectCategory={} basePower={} defenderAlive={} params=[{},{},{},{},{},{}] labels={}", + effectCategory, basePower, defender.IsAlive(), + effect->Param[0], effect->Param[1], effect->Param[2], effect->Param[3], effect->Param[4], effect->Param[5], + labels); // Unhandled effect category - treat as damage if basePower > 0 if (basePower > 0 && defender.IsAlive()) { @@ -1458,6 +1466,7 @@ namespace PetBattles } break; } + } } // ============================================================================ diff --git a/src/server/game/BattlePets/PetBattleMgr.cpp b/src/server/game/BattlePets/PetBattleMgr.cpp index 8c436cf12..550524830 100644 --- a/src/server/game/BattlePets/PetBattleMgr.cpp +++ b/src/server/game/BattlePets/PetBattleMgr.cpp @@ -114,6 +114,31 @@ namespace PetBattles TC_LOG_INFO("server.loading", ">> Loaded {} breed quality entries, {} breed stat entries", uint32(_breedQualityMultipliers.size()), uint32(_breedBaseStats.size())); + // Dump all BattlePetEffectProperties IDs used by ability effects for mapping + { + std::map propsIdUsageCount; + for (BattlePetAbilityEffectEntry const* entry : sBattlePetAbilityEffectStore) + propsIdUsageCount[entry->BattlePetEffectPropertiesID]++; + + TC_LOG_INFO("server.loading", ">> BattlePetEffectProperties mapping ({} unique IDs used by {} effects):", + uint32(propsIdUsageCount.size()), turnEffectCount); + for (auto const& [propsID, count] : propsIdUsageCount) + { + BattlePetEffectPropertiesEntry const* props = sBattlePetEffectPropertiesStore.LookupEntry(propsID); + if (props) + { + std::string labels; + for (uint8 i = 0; i < 6; ++i) + if (props->ParamLabel[i] && props->ParamLabel[i][0] != '\0') + labels += Trinity::StringFormat("[{}]={} ", i, props->ParamLabel[i]); + TC_LOG_INFO("server.loading", " PropsID={:3d} count={:3d} visual={} labels: {}", + propsID, count, props->BattlePetVisualID, labels); + } + else + TC_LOG_INFO("server.loading", " PropsID={:3d} count={:3d} (NO DB2 ENTRY)", propsID, count); + } + } + LoadNPCTeams(); TC_LOG_INFO("server.loading", ">> Pet Battle system initialized");