Index: src/game/Player.cpp =================================================================== --- src/game/Player.cpp (revision 706) +++ src/game/Player.cpp (working copy) @@ -2661,6 +2661,35 @@ } OnlineTime = time(NULL); + + + QueryResult * result2 = sDatabase.Query("SELECT reset FROM characters WHERE guid = %u", guid); + if(!result2) return false; + + Field * fields2 = result2->Fetch(); + if(fields2[0].GetUInt8() > 0) + { + Reset_Spells(); + for(uint32 i = PLAYER_SKILL_INFO_1_1; i < PLAYER_CHARACTER_POINTS1; ++i) + SetUInt32Value(i, 0); + + // Load skills from create info. + PlayerCreateInfo * info = objmgr.GetPlayerCreateInfo(getRace(), getClass()); + if(!info) return false; // wtf? + + for(std::list::iterator ss = info->skills.begin(); ss!=info->skills.end(); ss++) + { + if(ss->skillid && ss->currentval && ss->maxval) + AddSkillLine(ss->skillid, ss->currentval, ss->maxval); + } + UpdateStats(); + UpdateChances(); + sDatabase.Query("UPDATE characters SET reset = 0 WHERE guid = %u", guid); + } + delete fields2; + + return true; }