Beispiel #1
0
        static bool HandleRemoveDualSpecCommand(ChatHandler* handler, const char* args)
        {
            std::string name;
            Player *player;
            char *TargetName = strtok((char*)args, " ");
            if (!TargetName)
            {
                player = handler->getSelectedPlayer();
                if (player)
                {
                    name = player->GetName();
                    normalizePlayerName(name);
                }
            }
            else
            {
                name = TargetName;
                normalizePlayerName(name);
                player = sObjectAccessor->FindPlayerByName(name.c_str());
            }

            if (!player)
            {
                // Try reset talents as Hunter Pet
                Creature* creature = handler->getSelectedCreature();
                if (creature && creature->isPet())
                {
                    Unit *owner = creature->GetOwner();
                    if (owner && owner->GetTypeId() == TYPEID_PLAYER && ((Pet *)creature)->IsPermanentPetFor(owner->ToPlayer()))
                    {
                        ((Pet *)creature)->resetTalents(true);
                        owner->ToPlayer()->SendTalentsInfoData(true);

                        ChatHandler(owner->ToPlayer()).SendSysMessage(LANG_RESET_PET_TALENTS);
                        return true;
                    }
                }
            }
            else
            {
                player->ActivateSpec(1);
                player->resetTalents(true);
                player->SendTalentsInfoData(false);
                player->ActivateSpec(0);
                player->CastSpell(player, SPELL_DUAL_SPEC, true);
                ChatHandler(player).SendSysMessage(LANG_RESET_TALENTS);

                Pet* pet = player->GetPet();
                Pet::resetTalentsForAllPetsOf(player, pet);

                if (pet)
                    player->SendTalentsInfoData(true);

                return true;
            }

            handler->SendSysMessage(LANG_NO_CHAR_SELECTED);
            return false;
        }