aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOvahlord <dreadkiller@gmx.de>2024-11-03 13:56:09 +0100
committerOvahlord <dreadkiller@gmx.de>2024-11-03 13:56:09 +0100
commit77e82b20bc08f9c9e12895fc37d9924885dc1725 (patch)
tree12accf59e1ad91d429ba8782b67fe80027676a14 /src
parent73aa788b2c17725c0452b50ac0b7d2730d0fe083 (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.cpp5
-rw-r--r--src/server/game/Entities/Creature/Creature.h1
-rw-r--r--src/server/game/Entities/Object/Updates/ViewerDependentValues.h3
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;