diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/DBCStores.cpp | 11 | ||||
-rw-r--r-- | src/game/DBCStores.h | 1 | ||||
-rw-r--r-- | src/game/Player.cpp | 19 |
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)) { |