diff options
author | Ovahlord <dreadkiller@gmx.de> | 2024-11-03 13:56:09 +0100 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-11-03 13:56:09 +0100 |
commit | 77e82b20bc08f9c9e12895fc37d9924885dc1725 (patch) | |
tree | 12accf59e1ad91d429ba8782b67fe80027676a14 /src | |
parent | 73aa788b2c17725c0452b50ac0b7d2730d0fe083 (diff) |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Entities/Creature/Creature.h | 1 | ||||
-rw-r--r-- | src/server/game/Entities/Object/Updates/ViewerDependentValues.h | 3 |
3 files changed, 9 insertions, 0 deletions
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<Creature>, 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; |