Core/Units: defined all faction template flags and properly implemented FactionTemplateFlags::HatesAllExceptFriends
*refactored FactionTemplateEntry helpers to use pointers instead of references since we use datastore pointers in all cases so there is no need to create references
This commit is contained in:
1 parent
45af6bbd4b
commit
fd27f0020d
7 files changed
+69
-55
No files matched your search
@@ -5522,7 +5522,7 @@ ReputationRank Unit::GetReactionTo(Unit const* target) const
|
||||
if (targetFactionEntry->CanHaveReputation())
|
||||
{
|
||||
// check contested flags
|
||||
if (targetFactionTemplateEntry->Flags & FACTION_TEMPLATE_FLAG_CONTESTED_GUARD
|
||||
if (targetFactionTemplateEntry->IsHostileToPvpActivePlayers()
|
||||
&& selfPlayerOwner->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_CONTESTED_PVP))
|
||||
return REP_HOSTILE;
|
||||
|
||||
@@ -5552,7 +5552,7 @@ ReputationRank Unit::GetFactionReactionTo(FactionTemplateEntry const* factionTem
|
||||
if (Player const* targetPlayerOwner = target->GetAffectingPlayer())
|
||||
{
|
||||
// check contested flags
|
||||
if (factionTemplateEntry->Flags & FACTION_TEMPLATE_FLAG_CONTESTED_GUARD
|
||||
if (factionTemplateEntry->IsHostileToPvpActivePlayers()
|
||||
&& targetPlayerOwner->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_CONTESTED_PVP))
|
||||
return REP_HOSTILE;
|
||||
if (ReputationRank const* repRank = targetPlayerOwner->GetReputationMgr().GetForcedRankIfAny(factionTemplateEntry))
|
||||
@@ -5574,14 +5574,12 @@ ReputationRank Unit::GetFactionReactionTo(FactionTemplateEntry const* factionTem
|
||||
}
|
||||
|
||||
// common faction based check
|
||||
if (factionTemplateEntry->IsHostileTo(*targetFactionTemplateEntry))
|
||||
if (factionTemplateEntry->IsHostileTo(targetFactionTemplateEntry))
|
||||
return REP_HOSTILE;
|
||||
if (factionTemplateEntry->IsFriendlyTo(*targetFactionTemplateEntry))
|
||||
if (factionTemplateEntry->IsFriendlyTo(targetFactionTemplateEntry))
|
||||
return REP_FRIENDLY;
|
||||
if (targetFactionTemplateEntry->IsFriendlyTo(*factionTemplateEntry))
|
||||
if (targetFactionTemplateEntry->IsFriendlyTo(factionTemplateEntry))
|
||||
return REP_FRIENDLY;
|
||||
if (factionTemplateEntry->Flags & FACTION_TEMPLATE_FLAG_HOSTILE_BY_DEFAULT)
|
||||
return REP_HOSTILE;
|
||||
// neutral by default
|
||||
return REP_NEUTRAL;
|
||||
}
|
||||
@@ -12671,7 +12669,7 @@ void Unit::GetPartyMembers(std::list<Unit*> &TagUnitMap)
|
||||
bool Unit::IsContestedGuard() const
|
||||
{
|
||||
if (FactionTemplateEntry const* entry = GetFactionTemplateEntry())
|
||||
return entry->IsContestedGuardFaction();
|
||||
return entry->IsHostileToPvpActivePlayers();
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -14750,7 +14748,7 @@ void Unit::BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player* target)
|
||||
{
|
||||
FactionTemplateEntry const* ft1 = GetFactionTemplateEntry();
|
||||
FactionTemplateEntry const* ft2 = target->GetFactionTemplateEntry();
|
||||
if (ft1 && ft2 && !ft1->IsFriendlyTo(*ft2))
|
||||
if (ft1 && ft2 && !ft1->IsFriendlyTo(ft2))
|
||||
{
|
||||
if (index == UNIT_FIELD_BYTES_2)
|
||||
// Allow targetting opposite faction in party when enabled in config
|
||||
|
||||
Reference in new issue
Block a user