aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/DataStores/DB2Structure.h2
-rw-r--r--src/server/game/DataStores/DBCEnums.h17
-rw-r--r--src/server/game/Phasing/PhaseShift.cpp11
-rw-r--r--src/server/game/Phasing/PhasingHandler.cpp4
4 files changed, 22 insertions, 12 deletions
diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h
index 7a3e476542e..b4d68c2930d 100644
--- a/src/server/game/DataStores/DB2Structure.h
+++ b/src/server/game/DataStores/DB2Structure.h
@@ -2707,6 +2707,8 @@ struct PhaseEntry
{
uint32 ID;
uint16 Flags;
+
+ EnumFlag<PhaseEntryFlags> GetFlags() const { return static_cast<PhaseEntryFlags>(Flags); }
};
struct PhaseXPhaseGroupEntry
diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h
index 5f752cfe715..705ad1a0444 100644
--- a/src/server/game/DataStores/DBCEnums.h
+++ b/src/server/game/DataStores/DBCEnums.h
@@ -1365,13 +1365,22 @@ enum MountFlags
MOUNT_FLAG_HIDE_IF_UNKNOWN = 0x40
};
-enum PhaseEntryFlags : uint16
+enum class PhaseEntryFlags : uint16
{
- PHASE_FLAG_NORMAL = 0x08,
- PHASE_FLAG_COSMETIC = 0x10,
- PHASE_FLAG_PERSONAL = 0x20
+ ReadOnly = 0x001,
+ InternalPhase = 0x002,
+ Normal = 0x008,
+ Cosmetic = 0x010,
+ Personal = 0x020,
+ Expensive = 0x040,
+ EventsAreObservable = 0x080,
+ UsesPreloadConditions = 0x100,
+ UnshareablePersonal = 0x200,
+ ObjectsAreVisible = 0x400,
};
+DEFINE_ENUM_FLAG(PhaseEntryFlags);
+
// PhaseUseFlags fields in different db2s
enum PhaseUseFlagsValues : uint8
{
diff --git a/src/server/game/Phasing/PhaseShift.cpp b/src/server/game/Phasing/PhaseShift.cpp
index c5c0bba5549..f9753226918 100644
--- a/src/server/game/Phasing/PhaseShift.cpp
+++ b/src/server/game/Phasing/PhaseShift.cpp
@@ -124,8 +124,8 @@ bool PhaseShift::CanSee(PhaseShift const& other) const
auto checkInversePhaseShift = [excludePhasesWithFlag](PhaseShift const& phaseShift, PhaseShift const& excludedPhaseShift)
{
- if (phaseShift.Flags.HasFlag(PhaseShiftFlags::Unphased) && !excludedPhaseShift.Flags.HasFlag(PhaseShiftFlags::InverseUnphased))
- return true;
+ if (phaseShift.Flags.HasFlag(PhaseShiftFlags::Unphased) && excludedPhaseShift.Flags.HasFlag(PhaseShiftFlags::InverseUnphased))
+ return false;
for (PhaseRef const& phase : phaseShift.Phases)
{
@@ -133,11 +133,10 @@ bool PhaseShift::CanSee(PhaseShift const& other) const
continue;
auto itr2 = std::find(excludedPhaseShift.Phases.begin(), excludedPhaseShift.Phases.end(), phase);
- if (itr2 == excludedPhaseShift.Phases.end() || itr2->Flags.HasFlag(excludePhasesWithFlag))
- return true;
+ if (itr2 != excludedPhaseShift.Phases.end() && !itr2->Flags.HasFlag(excludePhasesWithFlag))
+ return false;
}
-
- return false;
+ return true;
};
if (other.Flags.HasFlag(PhaseShiftFlags::Inverse))
diff --git a/src/server/game/Phasing/PhasingHandler.cpp b/src/server/game/Phasing/PhasingHandler.cpp
index 57260d54c18..7ac874c16c6 100644
--- a/src/server/game/Phasing/PhasingHandler.cpp
+++ b/src/server/game/Phasing/PhasingHandler.cpp
@@ -38,10 +38,10 @@ inline PhaseFlags GetPhaseFlags(uint32 phaseId)
{
if (PhaseEntry const* phase = sPhaseStore.LookupEntry(phaseId))
{
- if (phase->Flags & PHASE_FLAG_COSMETIC)
+ if (phase->GetFlags().HasFlag(PhaseEntryFlags::Cosmetic))
return PhaseFlags::Cosmetic;
- if (phase->Flags & PHASE_FLAG_PERSONAL)
+ if (phase->GetFlags().HasFlag(PhaseEntryFlags::Personal))
return PhaseFlags::Personal;
}