Skip to content
Browse files

Merge branch 'release/1.6.0'

  • Loading branch information...
Solanya committed Apr 27, 2019
2 parents 3c007ba + ba60d1d commit 6334db5c4c32d38518ae13d06e22effa33cd62dd
Showing with 885 additions and 599 deletions.
  1. +1 −0 .luacheckrc
  2. +21 −58
  3. +1 −1 totalRP3/__version.lua
  4. +10 −1 totalRP3/core/impl/CommunicationProtocol.lua
  5. +1 −1 totalRP3/core/impl/globals.lua
  6. +31 −20 totalRP3/core/impl/ui_tools.lua
  7. +1 −0 totalRP3/core/impl/utils.lua
  8. +0 −1 totalRP3/core/ui/widgets.xml
  9. +1 −1 totalRP3/libs/LibMSP
  10. +1 −4 totalRP3/modules/dashboard/WhatsNewTabView.lua
  11. +4 −29 totalRP3/modules/register/characters/ReportProfileButton.lua
  12. +84 −19 totalRP3/modules/register/characters/register_about.lua
  13. +26 −22 totalRP3/modules/register/characters/register_main.lua
  14. +137 −0 totalRP3/modules/register/characters/register_notes.lua
  15. +0 −200 totalRP3/modules/register/characters/register_score.lua
  16. +75 −63 totalRP3/modules/register/characters/register_ui_about.xml
  17. +1 −1 totalRP3/modules/register/characters/register_ui_main.xml
  18. +120 −0 totalRP3/modules/register/characters/register_ui_notes.xml
  19. +0 −48 totalRP3/modules/register/characters/register_ui_score.xml
  20. +1 −2 totalRP3/modules/register/main/register_exchange.lua
  21. +13 −3 totalRP3/modules/register/main/register_list.lua
  22. +1 −41 totalRP3/modules/register/main/register_tooltip.lua
  23. +8 −3 totalRP3/modules/register/main/register_ui_list.xml
  24. +281 −0 totalRP3/modules/register/msp/Fields.lua
  25. +13 −9 totalRP3/modules/register/msp/register_msp.lua
  26. +8 −7 totalRP3/modules/register/register_includes.xml
  27. BIN totalRP3/resources/160-1.tga
  28. BIN totalRP3/resources/160-2.tga
  29. BIN totalRP3/resources/160-3.tga
  30. BIN totalRP3/resources/160-4.tga
  31. BIN totalRP3/resources/RIO.tga
  32. +44 −64 totalRP3/tools/Locale.lua
  33. +1 −1 totalRP3/totalRP3.toc
@@ -44,6 +44,7 @@ globals = {

-- Global methods
@@ -1,76 +1,39 @@
# Changelog version 1.5.4
# Changelog version 1.6.0

## Added

- Added a relationship status dropdown in the Characteristics tab to display (if you wish) if your character is in a relationship. **This is unrelated to the relationship update planned at a later date.**
- Added compatibility with the MSP protocol to share trial flag and music theme with other RP addons users.
- Added new default icons for Kul Tirans and Zandalaris (sorry KT females, couldn't find a better icon).
- Added 2 images, 36 musics and 46 icons from patch 8.1.5.

## Fixed

- Fixed an issue with map scans tooltips not working properly.
- Fixed a bug occuring when scrolling down the music list if it passed over specific invalid musics.
- Fixed an issue that would stop displaying a profile using template 3 halfway through.
- Fixed an issue that would create duplicate profiles in the directory.
- Fixed an issue that would not reload a profile coming from MSP properly after deleting it from the register.
## Personal notes

# Changelog version 1.5.3
You can now write personal notes inside the addon !

## Added

- Added 562 icons, 51 images and 56 musics to Total RP 3's resources browsers for patch 8.1.
These notes can either be written on your own profile (if you wish to take generic notes for your character), or on someone else's profile (the top field being tied to your current profile, the bottom field being common to all your profiles). These notes are obviously private, nobody else but you can see them.

## Fixed
![The new personal notes tab](

- Fixed a Lua error that could sometimes appear when trying to request data from one of your friends while your status is set to appear offline.
To access personal notes, simply click on the new Notes button on the target frame, or open a profile and click on the Notes tab.

# Changelog version 1.5.2
![The target frame button to access notes](

- Fixed invalid game version check on login. We cannot properly check the game build number in the current 8.1 build.
The register also received a checkbox to only display profiles on which you wrote notes.

# Changelog version 1.5.1

## Fixed
![The register new notes filter checkbox](

- Fixed an issue that would make users still send their map location when the option to not send it when your roleplaying status is set to "Out of character" was enabled and they were indeed "Out of character".
- Fixed an issue that would prevent the `/trp3 roll` command to work properly when in a group or a raid.
- Other players' characters information without a profile attached to them are now correctly purged on startup to avoid storing them indefinitely.
- Profiles received from links are now correctly applied a "Last seen" timestamp so they are correctly treated by the automatic directory purge instead of being always deleted because of the lack of timestamp.
- The add-on will now warn you with a different message than the regular one if you are several versions behind and are at risk of issues because of that.
- The advanced settings would not get the user selected localization applied to their texts.
- Fixed issues related to upcoming API changes in patch 8.1.

# Changelog version 1.5.0

## Re-implemented map scans feature

You can now once again scan for Total RP 3 users on the world map.

![Location of players in a different War Mode](

- Added support for War Mode. Players that are not in the same War Mode as you will not appear on the world map by default.
- In the Location settings (Register settings tab) you can enable the option to show people who are in a different War Mode, they will appear greyed out and semi-transparent on the world map, and will be grouped separately when displayed in the tooltip.
- You can opt in to not be visible to other players while you are in War Mode.
- Map scans now differentiate between levels of a same zone (like Dalaran), and setting your home to a specific level of map will now correctly show on that level when users click on the home button on your profile.

Please note: Only players with Total RP 3 version 1.5.0 and above will show up. Total RP 3: Extended's scans will be updated to work with this new system.
## Added

## Profile reporting
- Added HTML support for About templates 2 and 3. You can now use the full array of HTML tags while using those templates to format their fields, using the toolbar which is now visible for all templates.

Since patch 8.0.1 you are able to report profiles that violate Blizzard's Terms of Service by opening a support ticket.
![A template 2 profile using HTML](

- Following Blizzard's guidance, you can now report a player who has a profile that goes against the Code of Conduct via Total RP 3's target frame. A standard game report window will open pre-filled with information about the player you are reporting.
- Added compatibility with other RP addons for personality traits and HTML tags.

![The target frame report button](
## Changed

![Prefilled message when reporting a player](
- The "Report profile" buttons will now both link to the [support website](, as the in-game report feature previously added was an invalid method to report addon abuse. The popup will still show a timestamp for the profile's reception, which you can provide to Blizzard CS to help them track the offense.

- Since it is not technically possible to report a player you cannot target, we have added a button to the profile page when opening a profile that opens up a link to a Blizzard support page on how to report add-on text.
## Fixed

![The profile page report button](
- Fixed an error which could prevent the addon from loading.
- Fixed a compatibility issue for template 3 if the addon locale was not English.

## Added
## Removed

- Added a workaround against a current game bug that will always reset the language currently selected after a loading screen. You can disable this workaround in case of issues in the advanced settings.
- Added a workaround to make sure Total RP 3's broadcast channel (xtensionxtooltip2) is always at the bottom of the channel list. This should fix issues where it would be the first channel and move all other channels you have joined down in the list. You can disable this workaround in case of issues in the advanced settings.
- Removed auto-highlighting of the full text when entering focus of a text area (About fields, Currently, OOC Info...)
- Removed April Fools' code (including the forgotten rainbow companion names).
@@ -40,4 +40,4 @@ TRP3_API.VERSION_DISPLAY = "-dev";

--- Legacy version number (we keep it for now, it should go in the long term)
@@ -181,7 +181,16 @@ local function onIncrementalMessageReceived(_, data, _, sender, _, _, _, _, _, _
local messageToken = extractMessageTokenFromData(data);
internalMessageIDToChompSessionIDMatching[sessionID] = messageToken;
subSystemsOnProgressDispatcher:TriggerEvent(internalMessageIDToChompSessionIDMatching[sessionID], sender, msgTotal, msgID);

local event = internalMessageIDToChompSessionIDMatching[sessionID];
if not event then
-- This can be the case if a message is received out-of-order (unlikely!) or
-- if the first part of a multipart message we receive is after the first part,
-- for example due to us logging in or changing zones or whatever.

subSystemsOnProgressDispatcher:TriggerEvent(event, sender, msgTotal, msgID);
PROTOCOL_SETTINGS.rawCallback = onIncrementalMessageReceived;

@@ -50,7 +50,7 @@ TRP3_API.globals = {
addon_name_me = "Total RP 3",
addon_id_length = 15,

version = 64,
version = 65,

version_display = "-dev",
@@ -930,37 +930,48 @@ function TRP3_API.ui.text.setupToolbar(toolbar, textFrame, parentFrame, point, p
toolbar.textFrame = textFrame;
toolbar.h1.tagIndex = 1;
toolbar.h2.tagIndex = 2;
toolbar.h3.tagIndex = 3;
toolbar.p.tagIndex = 4;
toolbar.h1:SetScript("OnClick", function(button) onContainerTagClicked(button, textFrame) end);
toolbar.h2:SetScript("OnClick", function(button) onContainerTagClicked(button, textFrame) end);
toolbar.h3:SetScript("OnClick", function(button) onContainerTagClicked(button, textFrame) end);
toolbar.p:SetScript("OnClick", function(button) onContainerTagClicked(button, textFrame, true) end);
toolbar.h1:SetScript("OnClick", function(button) if toolbar.textFrame then onContainerTagClicked(button, toolbar.textFrame) end end);
toolbar.h2:SetScript("OnClick", function(button) if toolbar.textFrame then onContainerTagClicked(button, toolbar.textFrame) end end);
toolbar.h3:SetScript("OnClick", function(button) if toolbar.textFrame then onContainerTagClicked(button, toolbar.textFrame) end end);
toolbar.p:SetScript("OnClick", function(button) if toolbar.textFrame then onContainerTagClicked(button, toolbar.textFrame, true) end end);
toolbar.icon:SetScript("OnClick", function()
{parent = parentFrame, point = point, parentPoint = parentPoint},
{function(icon) onIconTagSelected(icon, textFrame) end});
toolbar.color:SetScript("OnClick", function()
if shiftDown() or (getConfigValue and getConfigValue("default_color_picker")) then
TRP3_API.popup.showDefaultColorPicker({function(red, green, blue) onColorTagSelected(red, green, blue, textFrame) end});
if toolbar.textFrame then
{parent = parentFrame, point = point, parentPoint = parentPoint},
{function(red, green, blue) onColorTagSelected(red, green, blue, textFrame) end});
{function(icon) onIconTagSelected(icon, toolbar.textFrame) end});
toolbar.color:SetScript("OnClick", function()
if toolbar.textFrame then
if shiftDown() or (getConfigValue and getConfigValue("default_color_picker")) then
TRP3_API.popup.showDefaultColorPicker({function(red, green, blue) onColorTagSelected(red, green, blue, toolbar.textFrame) end});
{parent = parentFrame, point = point, parentPoint = parentPoint},
{function(red, green, blue) onColorTagSelected(red, green, blue, toolbar.textFrame) end});
toolbar.image:SetScript("OnClick", function()
{parent = parentFrame, point = point, parentPoint = parentPoint},
{function(image) onImageTagSelected(image, textFrame) end});
if toolbar.textFrame then
{parent = parentFrame, point = point, parentPoint = parentPoint},
{function(image) onImageTagSelected(image, toolbar.textFrame) end});
end);"OnClick", function() onLinkTagClicked(textFrame) end);"OnClick", function() if toolbar.textFrame then onLinkTagClicked(toolbar.textFrame) end end);

function TRP3_API.ui.text.changeToolbarTextFrame(toolbar, textFrame)
toolbar.textFrame = textFrame;

@@ -422,6 +422,7 @@ local escapes = {
["|r"] = "", -- color end
["|H.-|h(.-)|h"] = "%1", -- links
["|T.-|t"] = "", -- textures
["|A.-|a"] = "", -- atlas textures
function Utils.str.sanitize(text)
if not text then return end
@@ -463,7 +463,6 @@
@@ -39,10 +39,7 @@ local strhtml = TRP3_API.utils.str.toHTML;
--- List of "What's new" segments to concatenate and display together when
--- this view is activated.
local SEGMENTS = {

--- Returns the fully formatted localized text for this view.
@@ -21,12 +21,6 @@ local Ellyb = Ellyb(...);

local loc = TRP3_API.loc;

local function slightlyCustomizeReportingFrame()

local REPORT_ICON = Ellyb.Icon([[Interface\HelpFrame\HelpIcon-OpenTicket]]);

TRP3_API.Events.registerCallback(TRP3_API.Events.WORKFLOW_ON_LOADED, function()
@@ -38,34 +32,15 @@ TRP3_API.Events.registerCallback(TRP3_API.Events.WORKFLOW_ON_LOADED, function()
return UnitIsPlayer("target") and unitID ~= TRP3_API.globals.player_id
onClick = function()
local DATE_FORMAT = "%Y-%m-%d around %H:%M";
local playerID = TRP3_API.utils.str.getUnitID("target");
local player = AddOn_TotalRP3.Player.CreateFromCharacterID(playerID);
local profile = TRP3_API.register.getUnitIDProfile(playerID)
local characterInfo = TRP3_API.register.getUnitIDCharacter(playerID);

assert(profile, "Something went wrong, could not retrieve the profile.")
assert(characterInfo, "Something went wrong, could not retrieve the information about the player linked to this profile.")
assert( and Ellyb.Tables.size( > 0, "Something went wrong, could not retrieve the players linked to this profile.")

local playerLocation = PlayerLocation:CreateFromUnit("target");

PlayerReportFrame:InitiateReport(PLAYER_REPORT_TYPE_LANGUAGE, playerID, playerLocation);

-- Use reporting template
local commentText = loc.REG_REPORT_PLAYER_TEMPLATE:format(characterInfo.client);

-- Add information about the last time we saw this profile, if we have the info
local reportText = loc.REG_REPORT_PLAYER_OPEN_URL_160:format(playerID);
if profile.time then
commentText = commentText .. "\n" .. loc.REG_REPORT_PLAYER_TEMPLATE_DATE:format(date(DATE_FORMAT, profile.time));

-- Indicate if this was a trial account if we have that info
if player:IsOnATrialAccount() then
commentText = commentText .. "\n" .. loc.REG_REPORT_PLAYER_TEMPLATE_TRIAL_ACCOUNT;
local DATE_FORMAT = "%Y-%m-%d around %H:%M";
reportText = reportText .. "\n\n" .. loc.REG_REPORT_PLAYER_TEMPLATE_DATE:format(date(DATE_FORMAT, profile.time));
Ellyb.Popups:OpenURL("", reportText);
tooltip = REPORT_ICON:GenerateString(25) .. loc.REG_REPORT_PLAYER_PROFILE,

0 comments on commit 6334db5

Please sign in to comment.
You can’t perform that action at this time.