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); }