aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormegamage <none@none>2009-03-28 17:50:36 -0600
committermegamage <none@none>2009-03-28 17:50:36 -0600
commitb1c5d4c59352d6030e0869775f2b439d58cd436d (patch)
tree2755214e8137d09f3bb770aa962b325eb8432ceb /src
parentf69c48202febf28b1a7dddf147d0e1ad0a3e6052 (diff)
Implement initial known taxi nodes for DK. Author: Lightguard, VladimirMangos
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/DBCStores.cpp11
-rw-r--r--src/game/DBCStores.h1
-rw-r--r--src/game/Player.cpp19
3 files changed, 22 insertions, 9 deletions
diff --git a/src/game/DBCStores.cpp b/src/game/DBCStores.cpp
index 018b361616f..eed2e2c8a50 100644
--- a/src/game/DBCStores.cpp
+++ b/src/game/DBCStores.cpp
@@ -131,6 +131,7 @@ static uint32 sTalentTabPages[12/*MAX_CLASSES*/][3];
DBCStorage <TaxiNodesEntry> sTaxiNodesStore(TaxiNodesEntryfmt);
TaxiMask sTaxiNodesMask;
+TaxiMask sOldContinentsNodesMask;
// DBC used only for initialization sTaxiPathSetBySource at startup.
TaxiPathSetBySource sTaxiPathSetBySource;
@@ -456,9 +457,11 @@ void LoadDBCStores(const std::string& dataPath)
spellPaths.insert(sInfo->EffectMiscValue[j]);
memset(sTaxiNodesMask,0,sizeof(sTaxiNodesMask));
+ memset(sOldContinentsNodesMask,0,sizeof(sTaxiNodesMask));
for(uint32 i = 1; i < sTaxiNodesStore.GetNumRows(); ++i)
{
- if(!sTaxiNodesStore.LookupEntry(i))
+ TaxiNodesEntry const* node = sTaxiNodesStore.LookupEntry(i);
+ if(!node)
continue;
TaxiPathSetBySource::const_iterator src_i = sTaxiPathSetBySource.find(i);
@@ -479,10 +482,14 @@ void LoadDBCStores(const std::string& dataPath)
continue;
}
- // valid taxi netowrk node
+ // valid taxi network node
uint8 field = (uint8)((i - 1) / 32);
uint32 submask = 1<<((i-1)%32);
sTaxiNodesMask[field] |= submask;
+
+ // old continent node (+ nodes virtually at old continents, check explicitly to avoid loading map files for zone info)
+ if (node->map_id < 2 || i == 82 || i == 83 || i == 93 || i == 94)
+ sOldContinentsNodesMask[field] |= submask;
}
}
diff --git a/src/game/DBCStores.h b/src/game/DBCStores.h
index 4cad2b106c5..e79cb44a534 100644
--- a/src/game/DBCStores.h
+++ b/src/game/DBCStores.h
@@ -134,6 +134,7 @@ extern DBCStorage <TalentTabEntry> sTalentTabStore;
extern DBCStorage <TaxiNodesEntry> sTaxiNodesStore;
extern DBCStorage <TaxiPathEntry> sTaxiPathStore;
extern TaxiMask sTaxiNodesMask;
+extern TaxiMask sOldContinentsNodesMask;
extern TaxiPathSetBySource sTaxiPathSetBySource;
extern TaxiPathNodesByPath sTaxiPathNodesByPath;
extern DBCStorage <TotemCategoryEntry> sTotemCategoryStore;
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index e439f4bebfe..d0742c76faa 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -134,7 +134,18 @@ PlayerTaxi::PlayerTaxi()
void PlayerTaxi::InitTaxiNodesForLevel(uint32 race, uint32 chrClass, uint32 level)
{
- // capital and taxi hub masks
+ // class specific initial known nodes
+ switch(chrClass)
+ {
+ case CLASS_DEATH_KNIGHT:
+ {
+ for(int i = 0; i < TaxiMaskSize; ++i)
+ m_taximask[i] |= sOldContinentsNodesMask[i];
+ break;
+ }
+ }
+
+ // race specific initial known nodes: capital and taxi hub masks
switch(race)
{
case RACE_HUMAN: SetTaximaskNode(2); break; // Human
@@ -150,12 +161,6 @@ void PlayerTaxi::InitTaxiNodesForLevel(uint32 race, uint32 chrClass, uint32 leve
case RACE_DRAENEI: SetTaximaskNode(94); break; // Draenei
}
- switch(chrClass)
- {
- case CLASS_DEATH_KNIGHT: // TODO: figure out initial known nodes
- break;
- }
-
// new continent starting masks (It will be accessible only at new map)
switch(Player::TeamForRace(race))
{