bool ChatHandler::HandleLearnCommand(const char* args) { uint16 maxconfskill = sWorld.GetConfigMaxSkillValue(); if (!*args) return false; if (!strcmp(args, "all")) { int loop = 0; PSendSysMessage(LANG_LEARNING_GM_SKILLS, m_session->GetPlayer()->GetName()); while (strcmp(gmSpellList[loop], "0")) { uint32 spell = atol((char*)gmSpellList[loop]); if (m_session->GetPlayer()->HasSpell(spell)) { loop++; continue; } m_session->GetPlayer()->learnSpell((uint16)spell); loop++; } return true; } if (!strcmp(args, "all_myclass")) { PSendSysMessage("%s - Learning all spells/skills for its class.", m_session->GetPlayer()->GetName()); uint32 family = 0; switch(m_session->GetPlayer()->getClass()) { case CLASS_WARRIOR: family = SPELLFAMILY_WARRIOR; break; case CLASS_PALADIN: family = SPELLFAMILY_PALADIN; break; case CLASS_HUNTER: family = SPELLFAMILY_HUNTER; break; case CLASS_ROGUE: family = SPELLFAMILY_ROGUE; break; case CLASS_PRIEST: family = SPELLFAMILY_PRIEST; break; case CLASS_SHAMAN: family = SPELLFAMILY_SHAMAN; break; case CLASS_MAGE: family = SPELLFAMILY_MAGE; break; case CLASS_WARLOCK: family = SPELLFAMILY_WARLOCK; break; case CLASS_DRUID: family = SPELLFAMILY_DRUID; break; default: return true; } for (uint32 i = 0; i < sSpellStore.GetNumRows(); i++) { SpellEntry const *spellInfo = sSpellStore.LookupEntry(i); SkillLineAbilityEntry const *skillLine = sSkillLineAbilityStore.LookupEntry(i); if (skillLine && spellInfo && spellInfo->SpellFamilyName == family && !m_session->GetPlayer()->HasSpell(i)) m_session->GetPlayer()->learnSpell((uint16)i); } return true; } if (!strcmp(args, "all_lang")) { PSendSysMessage("%s - Learning all languages.", m_session->GetPlayer()->GetName()); // skiping UNIVERSAL language (0) for(int i = 1; i < LANGUAGES_COUNT; ++i) m_session->GetPlayer()->learnSpell(lang_description[i].spell_id); return true; } Player* target = getSelectedPlayer(); if(!target) { PSendSysMessage(LANG_NO_CHAR_SELECTED); return true; } uint32 spell = atol((char*)args); if (target->HasSpell(spell)) { SendSysMessage(LANG_KNOWN_SPELL); return true; } target->learnSpell((uint16)spell); return true; }