enable playerhousing and bpet fix

This commit is contained in:
luis
2026-09-10 15:06:02 -03:00
parent b69cf5cd63
commit f68b6796fd
2 changed files with 4 additions and 36 deletions
-32
View File
@@ -167,10 +167,6 @@ namespace PetBattles
if (!creature) if (!creature)
return; return;
// Retail sends the wild creature's GUID as the enemy team's CharacterGUID so the
// client can identify the opponent; a null GUID here breaks the combat log too.
wildTeam.PlayerGUID = wildCreatureGUID;
// Wild team size: 1-3 pets, but never more than the player's available pets // Wild team size: 1-3 pets, but never more than the player's available pets
uint8 playerPetCount = _teams[PET_BATTLE_TEAM_1].PetCount; uint8 playerPetCount = _teams[PET_BATTLE_TEAM_1].PetCount;
uint8 maxWildSize = std::min(uint8(3), playerPetCount); uint8 maxWildSize = std::min(uint8(3), playerPetCount);
@@ -197,10 +193,6 @@ namespace PetBattles
// First pet is always the targeted creature // First pet is always the targeted creature
{ {
PetBattlePetData& wildPet = wildTeam.Pets[0]; PetBattlePetData& wildPet = wildTeam.Pets[0];
// Wild pets need a real GUID: the client's pet-battle combat log keys every
// ability cast on caster/target BattlePetGUID, and a null GUID crashes it
// (CombatLogEntry::PushEvent(casterGuidType, targetGuidType): 0, 0).
wildPet.BattlePetGUID = ObjectGuid::Create<HighGuid::BattlePet>(sObjectMgr->GetGenerator<HighGuid::BattlePet>().Generate());
wildPet.CreatureID = creature->GetEntry(); wildPet.CreatureID = creature->GetEntry();
wildPet.DisplayID = creature->GetDisplayId(); wildPet.DisplayID = creature->GetDisplayId();
wildPet.Level = getWildLevel(); wildPet.Level = getWildLevel();
@@ -221,7 +213,6 @@ namespace PetBattles
for (uint8 i = 1; i < wildTeamSize; ++i) for (uint8 i = 1; i < wildTeamSize; ++i)
{ {
PetBattlePetData& wildPet = wildTeam.Pets[i]; PetBattlePetData& wildPet = wildTeam.Pets[i];
wildPet.BattlePetGUID = ObjectGuid::Create<HighGuid::BattlePet>(sObjectMgr->GetGenerator<HighGuid::BattlePet>().Generate());
wildPet.CreatureID = creature->GetEntry(); wildPet.CreatureID = creature->GetEntry();
wildPet.DisplayID = creature->GetDisplayId(); wildPet.DisplayID = creature->GetDisplayId();
@@ -908,21 +899,6 @@ namespace PetBattles
return; return;
} }
// Additional safety check: validate abilityID exists in DB2
if (!sBattlePetAbilityStore.LookupEntry(abilityID))
{
TC_LOG_ERROR("server.loading", "PetBattle ApplyAbilityEffects: abilityID={} does not exist in BattlePetAbility.db2! Preventing crash.", abilityID);
PetBattleRoundEffect effect;
effect.AbilityEffectID = abilityID;
effect.EffectType = PET_BATTLE_EFFECT_STATUS_CHANGE;
effect.SourceTeam = attackerTeam;
effect.SourcePet = attackerPet;
effect.TargetTeam = attackerTeam;
effect.TargetPet = attackerPet;
_roundEffects.push_back(effect);
return;
}
// Determine which turn in the sequence to execute // Determine which turn in the sequence to execute
uint8 turnIndex = 0; uint8 turnIndex = 0;
if (attacker.IsLockedByMultiTurn && attacker.MultiTurnAbilityID == int32(abilityID)) if (attacker.IsLockedByMultiTurn && attacker.MultiTurnAbilityID == int32(abilityID))
@@ -2822,19 +2798,11 @@ namespace PetBattles
PetBattleTeamData& trainerTeam = _teams[PET_BATTLE_TEAM_2]; PetBattleTeamData& trainerTeam = _teams[PET_BATTLE_TEAM_2];
trainerTeam.PetCount = 0; trainerTeam.PetCount = 0;
// Retail sends the trainer's GUID as the NPC team's CharacterGUID (same reasoning
// as wild battles: the client's combat log keys ability casts on these GUIDs).
trainerTeam.PlayerGUID = trainer->GetGUID();
for (size_t i = 0; i < npcTeam.size() && i < MAX_PET_BATTLE_TEAM_SIZE; ++i) for (size_t i = 0; i < npcTeam.size() && i < MAX_PET_BATTLE_TEAM_SIZE; ++i)
{ {
NPCTeamPetInfo const& info = npcTeam[i]; NPCTeamPetInfo const& info = npcTeam[i];
PetBattlePetData& pet = trainerTeam.Pets[i]; PetBattlePetData& pet = trainerTeam.Pets[i];
// NPC pets need a real GUID so the client's combat log (which is keyed on
// caster/target BattlePetGUID) doesn't dereference a null GUID when an
// ability resolves.
pet.BattlePetGUID = ObjectGuid::Create<HighGuid::BattlePet>(sObjectMgr->GetGenerator<HighGuid::BattlePet>().Generate());
pet.Species = info.SpeciesID; pet.Species = info.SpeciesID;
pet.Level = info.Level; pet.Level = info.Level;
pet.Breed = info.BreedID; pet.Breed = info.BreedID;
+4 -4
View File
@@ -197,10 +197,10 @@ void WorldSession::SendFeatureSystemStatusGlueScreen()
// Housing game rules ? ALL values verified against 12.0.1.65940 sniff packet data (Feb 2026) // Housing game rules ? ALL values verified against 12.0.1.65940 sniff packet data (Feb 2026)
// Service & feature flags (read from config, default true) // Service & feature flags (read from config, default true)
{ "performHousingExpansionCheckClient"sv, "0"sv }, { "performHousingExpansionCheckClient"sv, "0"sv },
{ "housingServiceEnabled"sv, "0"sv }, { "housingServiceEnabled"sv, "1"sv },
{ "housingEnableBuyHouse"sv, "0"sv }, { "housingEnableBuyHouse"sv, "1"sv },
{ "housingEnableDeleteHouse"sv, "0" }, { "housingEnableDeleteHouse"sv, "1"sv },
{ "housingEnableMoveHouse"sv, "0"sv }, { "housingEnableMoveHouse"sv, "1"sv },
{ "housingEnableCreateCharterNeighborhood"sv, "0"sv }, { "housingEnableCreateCharterNeighborhood"sv, "0"sv },
{ "housingEnableCreateGuildNeighborhood"sv, "0"sv }, { "housingEnableCreateGuildNeighborhood"sv, "0"sv },
}; };