From 77e82b20bc08f9c9e12895fc37d9924885dc1725 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Sun, 3 Nov 2024 13:56:09 +0100 Subject: Core/Creature: turn UNIT_NPC_FLAG_TRAINER_CLASS into a viewer depending flag and show it only for players which can be trained by the creature --- src/server/game/Entities/Creature/Creature.cpp | 5 +++++ src/server/game/Entities/Creature/Creature.h | 1 + src/server/game/Entities/Object/Updates/ViewerDependentValues.h | 3 +++ 3 files changed, 9 insertions(+) (limited to 'src/server') diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index d75ed789006..2504ba9993d 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -1251,6 +1251,11 @@ bool Creature::CanResetTalents(Player* player) const && player->GetClass() == GetCreatureTemplate()->trainer_class; } +bool Creature::IsClassTrainerFor(Player const* player) const +{ + return GetCreatureTemplate()->trainer_class == player->GetClass(); +} + uint32 Creature::GetLootId() const { if (m_lootId) diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index d8fd4447ecb..fb3f2bfb495 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -179,6 +179,7 @@ class TC_GAME_API Creature : public Unit, public GridObject, public Ma /// @todo Rename these properly bool isCanInteractWithBattleMaster(Player* player, bool msg) const; bool CanResetTalents(Player* player) const; + bool IsClassTrainerFor(Player const* player) const; bool CanCreatureAttack(Unit const* victim, bool force = true) const; void LoadTemplateImmunities(int32 creatureImmunitiesId); bool IsImmunedToSpellEffect(SpellInfo const* spellInfo, SpellEffectInfo const& spellEffectInfo, WorldObject const* caster, bool requireImmunityPurgesEffectAttribute = false) const override; diff --git a/src/server/game/Entities/Object/Updates/ViewerDependentValues.h b/src/server/game/Entities/Object/Updates/ViewerDependentValues.h index 7aa0b13cfaf..f17c19e3eec 100644 --- a/src/server/game/Entities/Object/Updates/ViewerDependentValues.h +++ b/src/server/game/Entities/Object/Updates/ViewerDependentValues.h @@ -364,6 +364,9 @@ public: if (!receiver->CanSeeSpellClickOn(creature)) npcFlag &= ~UNIT_NPC_FLAG_SPELLCLICK; + + if (!creature->IsClassTrainerFor(receiver)) + npcFlag &= ~UNIT_NPC_FLAG_TRAINER_CLASS; } } return npcFlag; -- cgit v1.2.3