rendered paste bodybool 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;
}