I think I figured out the reason why this happens and it doesn't look to be a client issue after-all. The problem seems to be from the code here:
client_packet.cpp line 8700:
Code:
for(uint32 spellInt= 0; spellInt < MAX_PP_SPELLBOOK; spellInt++)
{
if (m_pp.spell_book[spellInt] < 3 || m_pp.spell_book[spellInt] > 20000)
m_pp.spell_book[spellInt] = 0xFFFFFFFF;
}
I think we just need to change the 20000 there to something more like 30000.