rendered paste bodyIndex: src/game/Player.cpp
===================================================================
--- src/game/Player.cpp (revision 5663)
+++ src/game/Player.cpp (working copy)
@@ -350,27 +350,6 @@
m_taximask[0] = rEntry->startingTaxiMask;
*/
- // capital and taxi hub masks
- switch(race)
- {
- case 1: m_taximask[0]= 1 << ( 2-1); break; // Human
- case 2: m_taximask[0]= 1 << (23-1); break; // Orc
- case 3: m_taximask[0]= 1 << ( 6-1); break; // Dwarf
- // Night Elf
- case 4: m_taximask[0]= (1 << (26-1)) | (1 << (27-1)); break;
- case 5: m_taximask[0]= 1 << (11-1); break; // Undead
- case 6: m_taximask[0]= 1 << (22-1); break; // Tauren
- case 7: m_taximask[0]= 1 << ( 6-1); break; // Gnome
- case 8: m_taximask[0]= 1 << (23-1); break; // Troll
- //case 10: m_taximask[0]= 1 << (1-1); break; // Blood Elf
- case 11: m_taximask[0+94/32]= 1 << (94%32-1); break;// Draenei
- }
- // new continent starting masks (It will be accessible only at new map
- switch(TeamForRace(race))
- {
- case ALLIANCE: m_taximask[3]= 1 << (4-1); break;
- case HORDE: m_taximask[3]= 1 << (3-1); break;
- }
ChrClassesEntry const* cEntry = sChrClassesStore.LookupEntry(class_);
if(!cEntry)
@@ -1941,6 +1920,10 @@
Pet* pet = GetPet();
if(pet && pet->getPetType()==SUMMON_PET)
pet->GivePetLevel(level);
+
+ // level dependent taxi hubs
+ if(level >= 65)
+ SetTaximaskNode(213); //Shattered Sun Staging Area
}
void Player::InitTalentForLevel()
@@ -2131,6 +2114,31 @@
SetPower(POWER_RAGE, GetMaxPower(POWER_RAGE));
SetPower(POWER_FOCUS, 0);
SetPower(POWER_HAPPINESS, 0);
+
+ // capital and taxi hub masks
+ switch(getRace())
+ {
+ case RACE_HUMAN: SetTaximaskNode(2); break; // Human
+ case RACE_ORC: SetTaximaskNode(23); break; // Orc
+ case RACE_DWARF: SetTaximaskNode(6); break; // Dwarf
+ case RACE_NIGHTELF: SetTaximaskNode(26);
+ SetTaximaskNode(27); break; // Night Elf
+ case RACE_UNDEAD_PLAYER: SetTaximaskNode(11); break;// Undead
+ case RACE_TAUREN: SetTaximaskNode(22); break; // Tauren
+ case RACE_GNOME: SetTaximaskNode(6); break; // Gnome
+ case RACE_TROLL: SetTaximaskNode(23); break; // Troll
+ case RACE_BLOODELF: SetTaximaskNode(82); break; // Blood Elf
+ case RACE_DRAENEI: SetTaximaskNode(94); break; // Draenei
+ }
+ // new continent starting masks (It will be accessible only at new map)
+ switch(TeamForRace(getRace()))
+ {
+ case ALLIANCE: SetTaximaskNode(100); break;
+ case HORDE: SetTaximaskNode(99); break;
+ }
+ // level dependent taxi hubs
+ if(getLevel()>=65)
+ SetTaximaskNode(213); //Shattered Sun Staging Area
}
void Player::SendInitialSpells()
@@ -13567,6 +13575,14 @@
// load and set bits only for existed taxi nodes
m_taximask[index] = sTaxiNodesMask[index] & uint32(atol((*iter).c_str()));
}
+ if(getLevel()>=65)
+ {
+ uint32 curloc = 213; //Shattered Sun Staging Area
+ uint8 field = (uint8)((curloc - 1) / 32);
+ uint32 submask = 1<<((curloc-1)%32);
+ if ( (m_taximask[field] & submask) != submask )
+ m_taximask[field] = (submask | m_taximask[field]);
+ }
}
void Player::_LoadTutorials(QueryResult *result)
Index: src/game/Player.h
===================================================================
--- src/game/Player.h (revision 5662)
+++ src/game/Player.h (working copy)
@@ -914,6 +914,13 @@
uint32 GetTaximask( uint8 index ) const { return m_taximask[index]; }
void SetTaximask( uint8 index, uint32 value ) { m_taximask[index] = value; }
+ void SetTaximaskNode(uint32 nodeidx)
+ {
+ uint8 field = uint8((nodeidx - 1) / 32);
+ uint32 submask = 1<<((nodeidx-1)%32);
+ if ((m_taximask[field] & submask) != submask )
+ m_taximask[field] = (submask | m_taximask[field]);
+ }
void ClearTaxiDestinations() { m_TaxiDestinations.clear(); }
void AddTaxiDestination(uint32 dest) { m_TaxiDestinations.push_back(dest); }
uint32 GetTaxiSource() const { return m_TaxiDestinations.empty() ? 0 : m_TaxiDestinations.front(); }