Patch 3.3.5/API changes

New API functions

 * BNAcceptFriendInvite(inviteId)
 * isConnected = BNConnected
 * BNCreateConversation(player1, player2)
 * BNDeclineFriendInvite(inviteId)
 * isEnabled = BNFeaturesEnabled
 * isEnabledAndConnected = BNFeaturesEnabledAndConnected
 * presenceId, blockName = BNGetBlockedInfo(blockId)
 * blockID, blockName = BNGetBlockedToonInfo(blockId or index)
 * conversationType = BNGetConversationInfo(conversationId)
 * accountId, toonId, name = BNGetConversationMemberInfo(conversationId, participantId)
 * BNetBroadcasts, numOnlineBroadcasts, numOfflineBroadcasts = BNGetCustomMessageTable([BNetBroadcasts])
 * friendID, givenName, surname, isMutual = BNGetFOFInfo(presenceId, showMutual, showPotential, friendsIndex)
 * presenceID, givenName, surname = BNGetFriendInfo(friendId)
 * presenceID, givenName, surname, toonName, toonID, client, isOnline, lastOnline, isAFK, isDND, messageText, noteText = BNGetFriendInfoByID(presenceID)
 * inviteId, name, surname, message, timeSent, days = BNGetFriendInviteInfo(offset);
 * hasFocus, toonName, client, realmName, faction, race, class, guild, zoneName, level, gameText = BNGetFriendToonInfo(friendId, toonIdx)
 * presenceID, toonID, broadcastText, bnetAFK, bnetDND = BNGetInfo
 * isEnabled = BNGetMatureLanguageFilter
 * maxPlayers = BNGetMaxPlayersInConversation;
 * numBlocks = BNGetNumBlocked;
 * numToonBlocks = BNGetNumBlockedToons
 * numMembers = BNGetNumConversationMembers(conversationId)
 * numMutual, numPotential = BNGetNumFOF(presenceId)
 * numPendingInvites = BNGetNumFriendInvites;
 * numToons = BNGetNumFriendToons(friendId)
 * numTotal, numOnline = BNGetNumFriends;
 * friendId = BNGetSelectedFriend;
 * blockIndex = BNGetSelectedToonBlock;
 * hasFocus, toonName, client, realmName, faction, race, class, guild, zoneName, level, gameText, broadcastText, broadcastTime, ? = BNGetToonInfo(toonId);
 * BNInviteToConversation(conversationId, player)
 * BNIsBlocked
 * isFriend = BNIsFriend(presenceId)
 * isSelf = BNIsSelf(presenceId)
 * isBlocked = BNIsToonBlocked(presenceId)
 * BNLeaveConversation(conversationId)
 * BNListConversation(conversationId)
 * BNRemoveFriend(presenceId)
 * BNReportFriendInvite(inviteId)
 * BNReportPlayer(presenceId, reportType, comments)
 * BNRequestFOFInfo(presenceId)
 * BNSendConversationMessage(target, text)
 * BNSendFriendInvite(name, note)
 * BNSendFriendInviteByID(presenceId, note)
 * BNSendWhisper(presenceId, text)
 * BNSetAFK(isAFK)
 * BNSetBlocked(presenceId, isBlocked)
 * BNSetCustomMessage(text)
 * BNSetDND(isDND)
 * BNSetFocus
 * BNSetFriendNote(presenceId, note)
 * BNSetMatureLanguageFilter(enable)
 * BNSetSelectedFriend(id)
 * BNSetSelectedToonBlock(id)
 * BNSetToonBlocked(presenceId, block)
 * CommentatorGetSkirmishMode
 * CommentatorGetSkirmishQueueCount
 * CommentatorGetSkirmishQueuePlayerInfo
 * CommentatorRequestSkirmishMode
 * CommentatorRequestSkirmishQueueData
 * CommentatorSetSkirmishMatchmakingMode
 * CommentatorStartSkirmishMatch
 * GetAutoCompletePresenceID(name)
 * width, height = GetChatWindowSavedDimensions(chatFrameId)
 * point, xOfs, yOfs = GetChatWindowSavedPosition(chatFrameId)
 * IsBNLogin
 * SendSystemMessage(message)
 * SetChatWindowSavedDimensions(chatFrameId, width, height)
 * SetChatWindowSavedPosition(chatFrameId, point, xOfs, yOfs)

New FrameXML API

 * ignoreId = BNGetSelectedBlock
 * BNSetSelectedBlock(id)
 * CanCooperateWithToon(toonId)
 * SynchronizeBNetStatus
 * BetterDate(format, time)
 * link = GetFixedLink(text)

New Events

 * (presenceId)
 * (presenceId)
 * (presenceId)
 * (presenceId)
 * (presenceId, name)
 * (presenceId, name)
 * (presenceId)
 * (presenceId)
 * (presenceId)
 * (presenceId)
 * (presenceId, name)
 * (presenceId, name)
 * (presenceId)
 * (presenceId)
 * (presenceId)
 * (presenceId)
 * (presenceId, name)
 * (presenceId, name)
 * (presenceId)
 * (presenceId)
 * (presenceId)
 * (presenceId, name)
 * (presenceId, name)
 * (presenceId, name)
 * (presenceId, name)
 * (presenceId, name)
 * (presenceId, name)
 * (presenceId, name)
 * (presenceId, name)
 * (presenceId, name)
 * (presenceId, name)
 * (presenceId, name)
 * (presenceId, name)
 * (presenceId, name)
 * (presenceId, name)
 * (presenceId, name)

API Changes

 * It is no longer guaranteed that the server will provide inventory information for every request; should the server choose to throttle a particular request, events indicating availability of inspection data will not fire.

Removed FrameXML API

 * UIFrameFlashSwitch
 * ToggleCombatLog