aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSubv <s.v.h21@hotmail.com>2012-11-14 16:55:47 -0500
committerSubv <s.v.h21@hotmail.com>2012-11-14 17:00:21 -0500
commit7bee7d3a9a8b007fc3f5b62b55cb893d92c963ee (patch)
treeaef768b67d16bab4dba342befed3f318793fee84
parent792e636a32ed194adf6bc77d366e9ce01aed4cfd (diff)
Core/Maps: Set correct phase flag from DBC when using phases.
Fixes AreaTriggers and some other things. Thanks @lehtola for the tip.
-rw-r--r--src/server/game/DataStores/DBCStores.cpp2
-rwxr-xr-xsrc/server/game/DataStores/DBCStores.h1
-rw-r--r--src/server/game/DataStores/DBCStructure.h7
-rw-r--r--src/server/game/DataStores/DBCfmt.h1
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp7
5 files changed, 17 insertions, 1 deletions
diff --git a/src/server/game/DataStores/DBCStores.cpp b/src/server/game/DataStores/DBCStores.cpp
index 8a647bacfea..9dc60c33328 100644
--- a/src/server/game/DataStores/DBCStores.cpp
+++ b/src/server/game/DataStores/DBCStores.cpp
@@ -58,6 +58,7 @@ static WMOAreaInfoByTripple sWMOAreaInfoByTripple;
DBCStorage <AchievementEntry> sAchievementStore(Achievementfmt);
DBCStorage <AchievementCriteriaEntry> sAchievementCriteriaStore(AchievementCriteriafmt);
DBCStorage <AreaTriggerEntry> sAreaTriggerStore(AreaTriggerEntryfmt);
+DBCStorage <PhaseEntry> sPhaseStore(PhaseEntryfmt);
DBCStorage <ArmorLocationEntry> sArmorLocationStore(ArmorLocationfmt);
DBCStorage <AuctionHouseEntry> sAuctionHouseStore(AuctionHouseEntryfmt);
DBCStorage <BankBagSlotPricesEntry> sBankBagSlotPricesStore(BankBagSlotPricesEntryfmt);
@@ -328,6 +329,7 @@ void LoadDBCStores(const std::string& dataPath)
LoadDBC(availableDbcLocales, bad_dbc_files, sAchievementStore, dbcPath, "Achievement.dbc"/*, &CustomAchievementfmt, &CustomAchievementIndex*/);//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sAchievementCriteriaStore, dbcPath, "Achievement_Criteria.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sAreaTriggerStore, dbcPath, "AreaTrigger.dbc");//14545
+ LoadDBC(availableDbcLocales, bad_dbc_files, sPhaseStore, dbcPath, "Phase.dbc");
LoadDBC(availableDbcLocales, bad_dbc_files, sAreaGroupStore, dbcPath, "AreaGroup.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sAreaPOIStore, dbcPath, "AreaPOI.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sAuctionHouseStore, dbcPath, "AuctionHouse.dbc");//14545
diff --git a/src/server/game/DataStores/DBCStores.h b/src/server/game/DataStores/DBCStores.h
index c4e012c62c1..80bed703c84 100755
--- a/src/server/game/DataStores/DBCStores.h
+++ b/src/server/game/DataStores/DBCStores.h
@@ -81,6 +81,7 @@ extern DBCStorage <AreaTableEntry> sAreaStore;// recommend access
extern DBCStorage <AreaGroupEntry> sAreaGroupStore;
extern DBCStorage <AreaPOIEntry> sAreaPOIStore;
extern DBCStorage <AreaTriggerEntry> sAreaTriggerStore;
+extern DBCStorage <PhaseEntry> sPhaseStore;
extern DBCStorage <ArmorLocationEntry> sArmorLocationStore;
extern DBCStorage <AuctionHouseEntry> sAuctionHouseStore;
extern DBCStorage <BankBagSlotPricesEntry> sBankBagSlotPricesStore;
diff --git a/src/server/game/DataStores/DBCStructure.h b/src/server/game/DataStores/DBCStructure.h
index 87e77ad491e..31e1817d0ad 100644
--- a/src/server/game/DataStores/DBCStructure.h
+++ b/src/server/game/DataStores/DBCStructure.h
@@ -609,6 +609,13 @@ struct AreaTriggerEntry
float box_orientation; // 12 m_box_yaw
};
+struct PhaseEntry
+{
+ uint32 Id;
+ char* Name;
+ uint32 Flag;
+}
+
struct ArmorLocationEntry
{
uint32 InventoryType; // 0
diff --git a/src/server/game/DataStores/DBCfmt.h b/src/server/game/DataStores/DBCfmt.h
index c1430c7bef0..17d036e6e59 100644
--- a/src/server/game/DataStores/DBCfmt.h
+++ b/src/server/game/DataStores/DBCfmt.h
@@ -30,6 +30,7 @@ char const AreaTableEntryfmt[]="iiinixxxxxisiiiiifxxxxxxxx";
char const AreaGroupEntryfmt[]="niiiiiii";
char const AreaPOIEntryfmt[]="niiiiiiiiiiiffixixxixx";
char const AreaTriggerEntryfmt[]="nifffxxxfffff";
+char const PhaseEntryfmt[]="isi";
char const ArmorLocationfmt[]="nfffff";
char const AuctionHouseEntryfmt[]="niiix";
char const BankBagSlotPricesEntryfmt[]="ni";
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index d1bf36b885b..38e3a56985b 100644
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -1756,7 +1756,12 @@ void WorldSession::SendSetPhaseShift(std::set<uint32> const& phaseIds, std::set<
data.WriteByteSeq(guid[1]);
- data << uint32(0); // flags (not phasemask)
+ uint32 flag = 8;
+ for (std::set<uint32>::const_iterator itr = phaseIds.begin(); itr != phaseIds.end(); ++itr)
+ if (PhaseEntry const* phaseEntry = sPhaseStore.LookupEntry(*itr))
+ flag |= phaseEntry->Flag;
+
+ data << uint32(flag); // flags (not phasemask)
data.WriteByteSeq(guid[2]);
data.WriteByteSeq(guid[6]);