Example #1
0
        static bool HandleResetTalentsCommand(StringArguments args, CommandHandler handler)
        {
            Player     target;
            ObjectGuid targetGuid;
            string     targetName;

            if (!handler.extractPlayerTarget(args, out target, out targetGuid, out targetName))
            {
                /* TODO: 6.x remove/update pet talents
                 * // Try reset talents as Hunter Pet
                 * Creature* creature = handler.getSelectedCreature();
                 * if (!*args && creature && creature.IsPet())
                 * {
                 *  Unit* owner = creature.GetOwner();
                 *  if (owner && owner.GetTypeId() == TYPEID_PLAYER && creature.ToPet().IsPermanentPetFor(owner.ToPlayer()))
                 *  {
                 *      creature.ToPet().resetTalents();
                 *      owner.ToPlayer().SendTalentsInfoData(true);
                 *
                 *      ChatHandler(owner.ToPlayer().GetSession()).SendSysMessage(LANG_RESET_PET_TALENTS);
                 *      if (!handler.GetSession() || handler.GetSession().GetPlayer() != owner.ToPlayer())
                 *          handler.PSendSysMessage(LANG_RESET_PET_TALENTS_ONLINE, handler.GetNameLink(owner.ToPlayer()).c_str());
                 *  }
                 *  return true;
                 * }
                 */

                handler.SendSysMessage(CypherStrings.NoCharSelected);
                return(false);
            }

            if (target)
            {
                target.ResetTalents(true);
                target.ResetTalentSpecialization();
                target.SendTalentsInfoData();
                target.SendSysMessage(CypherStrings.ResetTalents);
                if (handler.GetSession() == null || handler.GetSession().GetPlayer() != target)
                {
                    handler.SendSysMessage(CypherStrings.ResetTalentsOnline, handler.GetNameLink(target));
                }

                /* TODO: 6.x remove/update pet talents
                 * Pet* pet = target.GetPet();
                 * Pet.resetTalentsForAllPetsOf(target, pet);
                 * if (pet)
                 *  target.SendTalentsInfoData(true);
                 */
                return(true);
            }
            else if (!targetGuid.IsEmpty())
            {
                PreparedStatement stmt = DB.Characters.GetPreparedStatement(CharStatements.UPD_ADD_AT_LOGIN_FLAG);
                stmt.AddValue(0, (ushort)(AtLoginFlags.None | AtLoginFlags.ResetPetTalents));
                stmt.AddValue(1, targetGuid.GetCounter());
                DB.Characters.Execute(stmt);

                string nameLink = handler.playerLink(targetName);
                handler.SendSysMessage(CypherStrings.ResetTalentsOffline, nameLink);
                return(true);
            }

            handler.SendSysMessage(CypherStrings.NoCharSelected);
            return(false);
        }