Giter Club home page Giter Club logo

masque's Introduction

Build API_VERSION Discord Twitter Sponsor PayPal Ko-fi

Masque is an add-on for World of Warcraft that provides a skinning engine for button-based add-ons through a library-based API.

Library

  • Easy-to-use API accessible through LibStub
  • Group-based skinning engine
  • Independent saved-variables
  • Support for most button types and regions
  • Support for third-party skins

GUI

  • Load-on-demand settings panel
  • Global, per-add-on and per-group settings
  • Skin, Color, Gloss and Shadow options
  • Full profile support, including per-spec profiles (Retail only)
  • An action bar, aura or inventory add-on that supports Masque.
  • All required libraries are included.

To access Masque's options, use the /msq or /masque chat commands. You can also access the options via the Interface Options Window or by clicking on Masque's icon in a DataBroker display.

Install the package through your preferred add-on manager or extract the archive to your add-ons directory.

  • Retail: World of Warcraft\_retail_\Interface\AddOns
  • Classic: World of Warcraft\_classic_era_\Interface\AddOns
  • Cataclysm Classic: World of Warcraft\_classic_\Interface\AddOns

For bug reports and suggestions, use the issue tracker. Direct any questions or comments to Discord.

To help translate this add-on, use the localization system. Alternatively, you can use the issue tracker.

masque's People

Contributors

adavak avatar nevcairiel avatar stormfx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

masque's Issues

Bug: Error When Loading Settings

Hi,

I'm getting the below error when trying to load Masque settings. None of my skins are showing.

Message: Interface\AddOns\Masque\Options\Skins.lua:457: attempt to index field 'Skins' (a nil value) Time: Mon Oct 28 10:18:31 2019 Count: 1 Stack: Interface\AddOns\Masque\Options\Skins.lua:457: attempt to index field 'Skins' (a nil value) Interface\AddOns\Masque\Options\Skins.lua:457: in function UpdateSkinOptions'
Interface\AddOns\Masque\Core\Group.lua:417: in function __Update' Interface\AddOns\Masque\Core\Groups.lua:84: in function <Interface\AddOns\Masque\Core\Groups.lua:58> Interface\AddOns\Masque\Core\Groups.lua:91: in function GetGroup'
Interface\AddOns\Masque\Options\Skins.lua:425: in function func' Interface\AddOns\Masque\Options\Core.lua:34: in function <Interface\AddOns\Masque\Options\Core.lua:31> Interface\AddOns\Masque\Options\Core.lua:118: in function func'
Interface\AddOns\Masque\Options\Core.lua:34: in function <Interface\AddOns\Masque\Options\Core.lua:31>
Interface\AddOns\Masque\Options\Core.lua:132: in function ToggleOptions' Interface\AddOns\Masque\Masque.lua:115: in function ?'
Interface\FrameXML\ChatFrame.lua:4839: in function ChatEdit_ParseText' Interface\FrameXML\ChatFrame.lua:4502: in function ChatEdit_SendText'
Interface\FrameXML\ChatFrame.lua:4538: in function `ChatEdit_OnEnterPressed'
[string ":OnEnterPressed"]:1: in function <[string ":OnEnterPressed"]:1>

Locals: self =

{
SkinShadow = defined @interface\AddOns\Masque\Core\Regions\Shadow.lua:90
GetID = defined @interface\AddOns\Masque\Core\Groups.lua:40
SkinTexture = defined @interface\AddOns\Masque\Core\Regions\Texture.lua:39
OptionsLoaded = true
Callback =
{
}
WOW_RETAIL = true
Locale =
{
}
SkinIcon = defined @interface\AddOns\Masque\Core\Regions\Icon.lua:33
GetColor = defined @interface\AddOns\Masque\Core\Utility.lua:74
Skins =
{
}
AddSkin = defined @interface\AddOns\Masque\Skins\Skins.lua:40
API_VERSION = 80200
SkinNewItem = defined @interface\AddOns\Masque\Core\Regions\NewItem.lua:73
GetSize = defined @interface\AddOns\Masque\Core\Utility.lua:26
ToggleOptions = defined @interface\AddOns\Masque\Options\Core.lua:131
GetRegion = defined @interface\AddOns\Masque\Core\Core.lua:87
API =
{
}
Group_MT =
{
}
GetOptions = defined @interface\AddOns\Masque\Options\Skins.lua:159
Setup =
{
}
GetType = defined @interface\AddOns\Masque\Core\Core.lua:37
LDBI =
{
}
UpdateSkinOptions = defined @interface\AddOns\Masque\Options\Skins.lua:453
RegTypes =
{
}
SkinNormal = defined @interface\AddOns\Masque\Core\Regions\Normal.lua:127
Authors =
{
}
LDBO =
{
}
OptionsPanel = {
}
SkinGloss = defined @interface\AddOns\Masque\Core\Regions\Gloss.lua:90
GetStandAlone = defined @interface\AddOns\Masque\Options\Core.lua:165
GetScale = defined @interface\AddOns\Masque\Core\Utility.lua:100
Update = defined @interface\AddOns\Masque\Masque.lua:163
SkinIconBorder = defined @interface\AddOns\Masque\Core\Regions\IconBorder.lua:73
SkinList =
{
}
GetArg = defined @interface\AddOns\Masque\Options\Core.lua:170
OLD_VERSION = 70200
SkinButton = defined @interface\AddOns\Masque\Core\Button.lua:61
db =
{
}
CleanDB = defined @interface\AddOns\Masque\Core\Groups.lua:103
GetGroup = defined @interface\AddOns\Masque\Core\Groups.lua:89
Groups =
{
}
Websites =
{
}
SkinMask = defined @interface\AddOns\Masque\Core\Regions\Mask.lua:27
Options =
{
}
SkinCooldown = defined @interface\AddOns\Masque\Core\Regions\Frame.lua:105
SkinFrame = defined @interface\AddOns\Masque\Core\Regions\Frame.lua:57
SkinText = defined @interface\AddOns\Masque\Core\Regions\Text.lua:47
GetTexCoords = defined @Interfac`

Switch to Unified Builds

Switch to unified packages that support all official game versions.

  • Create Classic and Burning Crusade Classic .toc files. (Retail will use the default .toc)
  • Move the LibDualSpec-1.0 external to the Retail .toc.
  • Update the workflows.

Bug: Pixel Alignment Issue

Verison: 8.2.0-Beta
Addons/Skins: Weakauras + Masque

The latest 8.2 version of Masque is causing a 1 pixel misalignment between the cooldown sweep animation and the icon. The 8.1.5-Alpha-3 version is working correctly. This is present with all of the default Masque skins, and is especially bad for the "Classic" skin.

Notice the top part of the icon is showing, as well as the cooldown sweep extending 1 pixel too far down.
Zoomed skin example
Classic skin example

Feature Request: Delay Skinning Until All Add-Ons are Loaded

I noticed I have some issues with Masque not applying the skin properly at login. After some tests, I found it was related to custom skins and the order in which addon are loaded.

I have made a reproducible test case, using an addon written for this (whose files are there: https://gist.github.com/Adirelle/9b6f2078996305045824e74db8927953).

To do the test, I enabled only these addons :

  • !MasqueTest
  • Masque
  • Masque_Caith

Here is the output (sorry for the guild MOTD):
image

Please notice that:

  • !MasqueTest is loaded before Masque_Caith, and Caith skins are not available at that time.
  • when the callback is called with "Caith" as skinID, the said skin is not available ("my skin: nil"). It means !MasqueTest is not skinned with its configured skin.

This happens because addons without dependency relationships are loaded in alphabetical order on Windows. Please note, that even if they were loaded in random order, this bug could still happen.

Would it be possible to reskin the groups when custom skins are added ?

Bug: Cooldown Count Strata

I just realized I posted this on wowinterface and the correct method is to go through Github. Apologize for that!

I am having an issue with the strata of the CD text using blizzards in game cd text on action bars. https://i.imgur.com/EHxT6rn.png
The count of the item has a higher strata than the CD text. Without masque, dominos shows the cooldown above the count.

Bug: Backdrop Transparency Issue

When changing from a texture to a color texture, the color and alpha must be reset to prevent a blending of two, resulting in the wrong color and/or alpha.

Bug: Help with Masque and Bartender

hi first put the error

Message: ...\LibKeyBound-1.0\LibKeyBound-1.0\LibKeyBound-1.0.lua:68: attempt to call method 'CreateTitleRegion' (a nil value)
Time: Sat Jul 21 15:13:52 2018
Count: 1
Stack: ...\LibKeyBound-1.0\LibKeyBound-1.0\LibKeyBound-1.0.lua:68: attempt to call method 'CreateTitleRegion' (a nil value)
...\LibKeyBound-1.0\LibKeyBound-1.0\LibKeyBound-1.0.lua:68: in function `Initialize'
...\LibKeyBound-1.0\LibKeyBound-1.0\LibKeyBound-1.0.lua:662: in function <...\LibKeyBound-1.0\LibKeyBound-1.0\LibKeyBound-1.0.lua:656>

Locals: self =

{
Activate = defined @interface\AddOns\LibKeyBound-1.0\LibKeyBound-1.0\LibKeyBound-1.0.lua:265
EventButton = {
}
Deactivate = defined @interface\AddOns\LibKeyBound-1.0\LibKeyBound-1.0\LibKeyBound-1.0.lua:290
PLAYER_REGEN_ENABLED = defined @interface\AddOns\LibKeyBound-1.0\LibKeyBound-1.0\LibKeyBound-1.0.lua:224
Toggle = defined @interface\AddOns\LibKeyBound-1.0\LibKeyBound-1.0\LibKeyBound-1.0.lua:248
L =
{
}
UnregisterAllCallbacks = defined @interface\AddOns\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:200
Set = defined @interface\AddOns\LibKeyBound-1.0\LibKeyBound-1.0\LibKeyBound-1.0.lua:336
ToShortKey = defined @interface\AddOns\LibKeyBound-1.0\LibKeyBound-1.0\LibKeyBound-1.0.lua:375
PLAYER_REGEN_DISABLED = defined @interface\AddOns\LibKeyBound-1.0\LibKeyBound-1.0\LibKeyBound-1.0.lua:231
RegisterCallback = defined @interface\AddOns\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:116
IsShown = defined @interface\AddOns\LibKeyBound-1.0\LibKeyBound-1.0\LibKeyBound-1.0.lua:317
SetColorKeyBoundMode = defined @interface\AddOns\LibKeyBound-1.0\LibKeyBound-1.0\LibKeyBound-1.0.lua:192
UnregisterCallback = defined @interface\AddOns\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:179
Initialize = defined @interface\AddOns\LibKeyBound-1.0\LibKeyBound-1.0\LibKeyBound-1.0.lua:46
events =
{
}
GetColorKeyBoundMode = defined @interface\AddOns\LibKeyBound-1.0\LibKeyBound-1.0\LibKeyBound-1.0.lua:219
colorKeyBoundMode =
{
}
Binder =
{
}
}
f = KeyboundDialog {
0 =
}
(*temporary) = nil
(*temporary) = KeyboundDialog {
0 =
}
(*temporary) = "attempt to call method 'CreateTitleRegion' (a nil value)"
L =
{
Alt = "A"
Button19 = "B19"
BindingsHelp = "Hover over a button, then press a key to set its binding. To clear a button's current keybinding, press %s."
Backspace = "BS"
End = "En"
BASEREVISION = 90092
CombatBindingsEnabled = "Exiting combat, keybinding mode enabled"
Button17 = "B17"
Page Up = "PU"
CannotBindInCombat = "Cannot bind keys in combat"
Capslock = "Cp"
REVISION = 0
Down Arrow = "Dn"
Button9 = "B9"
Disabled = "Bindings mode disabled"
ClearedBindings = "Removed all bindings from %s"
NoKeysBoundTip = "No current bindings"
UnboundKey = "Unbound %s from %s"
Button25 = "B25"
Button28 = "B28"
Button26 = "B26"
Insert = "Ins"
Button21 = "B21"
Page Down = "PD"
Button30 = "B30"
Right Arrow = "Rt"
BindingMode = "Binding Mode"
Button3 = "B3"
BoundKey = "Set %s to %s"
Button20 = "B20"
ClearTip = "Press Esc to clear all bindings"
Scroll Lock = "SL"
Button10 = "B10"
Button2 = "B2"
Button24 = "B24"
Button1 = "B1"
Button22 = "B22"
NumPad = "N"
Ctrl = "C"
Button7 = "B7"
Button23 = "B23"
Up Arrow = "Up"
Left Arrow = "Lf"
Button16 = "B16"
Button8 = "B8"
Button14 = "B14"
Button29 = "B29"
Tab = "Tb"
Shift = "S"
Spacebar = "Sp"
Button4 = "B4"
Button18 = "B18"
Enabled = "Bindings mode enabled"
Num Lock = "NL"
Mouse Wheel Up = "WU"
Mouse Wheel Down = "WD"
Home = "HM"
Delete = "Del"
Clear = "Cl"
Button31 = "B31"
Button5 = "B5"
Button15 = "B15"
Button6 = "B6"
Button12 = "B12"
CombatBindingsDisabled = "Entering combat, keybinding mode disabled"
Button11 = "B11"
Button13 = "B13"
Button27 = "B27"
}
_G =
{
UpdateOnBar

Locale: `zhTW` Update

Language

  • zhTW

Phrases

L["This action will increase memory usage."] = "這個動作會增加記憶體的使用量。"

Feature Request: Improve Chargecooldown Skinning

The yellow charge cooldown spirale remains squared even when picking a round skin.
Additionaly, trying to set this in the skin lua does not seem to change anything at all

ChargeCooldown = { Width = 0, Height = 0, Color = {0, 0, 0, 0}, },

Bug: HotKey Offsets are not Being Applied

Imgur

When I updated from 7.2.0 to 7.2.3, the hotkey text no longer gets placed where defined in my skin. No matter what values I use for HotKey.OffsetX or HotKey.OffsetY, it always ends up in the wrong place.

I am using Bartender with this skin (this happens even after setting Masque_Version = 70200)

Feature Request: Ability to Set and Copy Profile Settings

I am currently trying to finish a new update to my UI, and for this i have a simple setup addon that simply sets a AceDB profile and copy settings from a profile i've made.

My Lua capabilities are very limited, but i managed to get the above behavior working for all addons i use, expect Masque.

local PrankUISetup = {};

local MasqueDB = LibStub("AceAddon-3.0"):GetAddon("Masque");

PrankUISetup.DB = function(addon)
    addon.db:SetProfile(UnitName("player").." - "..GetRealmName());
    addon.db:CopyProfile(ProfileName.."-default", true);
end

PrankUISetup.DB(MasqueDB);

This code, which i has just isolated to show an example, is how i do it for other addons.

Can you look into a solution where i can use :SetProfile() and :CopyProfile() for Masque?

Kind Regards
Dennis aka. Prankstar

Bug: `nil` Index Error

Since Masque 8.1.2-Alpha, I'm getting the following error whenever a buff runs out.

Message: Interface\AddOns\Masque\Core\Regions\Normal.lua:50: attempt to index local 'Normal' (a nil value)
Time: Sun Apr  7 19:15:32 2019
Count: 3
Stack: Interface\AddOns\Masque\Core\Regions\Normal.lua:50: attempt to index local 'Normal' (a nil value)
[C]: ?
Interface\AddOns\Masque\Core\Regions\Normal.lua:50: in function <Interface\AddOns\Masque\Core\Regions\Normal.lua:45>
[C]: in function `SetNormalTexture'
Interface\AddOns\PitBull4\Modules\Aura\Controls.lua:220: in function `onDelete'
Interface\AddOns\PitBull4\Controls\Controls.lua:130: in function `Delete'
Interface\AddOns\PitBull4\Modules\Aura\Update.lua:650: in function <Interface\AddOns\PitBull4\Modules\Aura\Update.lua:582>
Interface\AddOns\PitBull4\Modules\Aura\Update.lua:758: in function `UpdateAuras'
Interface\AddOns\PitBull4\Modules\Aura\Aura.lua:77: in function `UpdateFrame'
Interface\AddOns\PitBull4\Modules\Aura\Update.lua:952: in function `OnUpdate'
Interface\AddOns\PitBull4\Modules\Aura\Aura.lua:21: in function <Interface\AddOns\PitBull4\Modules\Aura\Aura.lua:18>

Locals: 

Enhancement: Trim the Icons of the Classic Skin

Version:
8.2.5-beta

Settings:
Classic theme + Dominos + Clean Icons: Thin

Descriptions:

  1. black pixels around the corner of buttons on action bars, which makes buttons looking aliased.
  2. GCD cooldown animation would cover the GLOW effect, which just ruins the action bar in combat.

Something else:
The old "Blizzard" masque theme + dominos is just perfect for me. In fact, I haven't changed my action bar style since 2011. With this re-worked beta version, I have to retune Masque and Dominos and end up very SAD. Everything seems off and weird. The borders in Classic theme aren't as bright as Blizzard theme and with the increased size of Classic theme, I have to shrink action bar buttons via Dominos, which makes the borders thin and stack texts on buttons small.

Is it too much to ask for a built-in "Blizzard" legacy theme? Or a "Masque: Blizzard" standalone plug-in?

Masque not Working

Hi Storm. I have a problem whit your creation . I use Bartender4 but, after the reset complete of pc, doesn't work. Sorry for my english, i'm italian guy. I need your big Addon and i belive in you. Help me, please!

The error:

e: Interface\AddOns\Masque\Core\Options.lua:237: bad argument #2 to 'format' (string expected, got no value)
Time: 02/14/18 21:43:30
Count: 1
Stack: Interface\AddOns\Masque\Core\Options.lua:237: bad argument #2 to 'format' (string expected, got no value)
[C]: ?
[C]: in function format' Interface\AddOns\Masque\Core\Options.lua:237: in function GetOptions'
Interface\AddOns\Masque\Core\Options.lua:131: in function UpdateOptions' Interface\AddOns\Masque\Core\Options.lua:77: in function LoadOptions'
Interface\AddOns\Masque\Core\Options.lua:99: in function ShowOptions' Interface\AddOns\Masque\Masque.lua:121: in function OnClick'
...e\AddOns\Masque\Libs\LibDBIcon-1.0\LibDBIcon-1.0.lua:116: in function <...e\AddOns\Masque\Libs\LibDBIcon-1.0\LibDBIcon-1.0.lua:116>

Locals:

Message: Interface\FrameXML\InterfaceOptionsFrame.lua:434: Usage: InterfaceOptionsFrame_OpenToCategory("categoryName" or panel)
Time: 02/14/18 21:43:38
Count: 11
Stack: Interface\FrameXML\InterfaceOptionsFrame.lua:434: Usage: InterfaceOptionsFrame_OpenToCategory("categoryName" or panel)
[C]: ?
[C]: in function assert' Interface\FrameXML\InterfaceOptionsFrame.lua:434: in function InterfaceOptionsFrame_OpenToCategory'
Interface\AddOns\Masque\Core\Options.lua:103: in function ShowOptions' Interface\AddOns\Masque\Masque.lua:121: in function OnClick'
...e\AddOns\Masque\Libs\LibDBIcon-1.0\LibDBIcon-1.0.lua:116: in function <...e\AddOns\Masque\Libs\LibDBIcon-1.0\LibDBIcon-1.0.lua:116>

Locals:

Enhancement: HotKey SetPoint Update

Remove the SetPoint replacement function for the HotKey region since the game hasn't used it since build 14732.

Note to self: Pay attention to API changes.

Move .docs Contents to Wiki

The contents of .docs should be moved to the Wiki to clean up the repository and to make them more accessible.

  • .docs/History.md
  • .docs/Regions.lua

Feature Request: Add a Background to the Zoomed Skin

In the 'Zoomed' skin, the tick box for 'Background' is already ticked, but the option is greyed out and can not be changed. This means it is not possible to have a dark background like the other skins for empty parts of the action bars (in a similar way to the default bar option to 'Always show action bars'. Would it be possible to change it so that you can have the dark background for empty slots?

Bug: Twitch App is Installing `AceGUI-3.0: SFX-Widgets`

Game Version
Retail - 8.3.7

Add-On Version
8.3.0

Describe the Issue
Fresh install/update of of Masque via Twitch App. AceGUI-3.0: SFX-Widgets gets installed as a separate addon and thus gets loaded by default. I wasn't aware that it would be installed, so I was greeted with a Lua-error.

Error Message

1x ...dOns\AceGUI-3.0_SFX-Widgets\Widgets\SFX-Info-URL.lua:18: Cannot find a library instance of "AceGUI-3.0".
[string "=[C]"]: in function `error'
[string "@AceGUI-3.0_SFX-Widgets\LibStub\LibStub.lua"]:38: in function `LibStub'
[string "@AceGUI-3.0_SFX-Widgets\Widgets\SFX-Info-URL.lua"]:18: in main chunk

Locals:
(*temporary) = "Cannot find a library instance of "AceGUI-3.0"."

I know that you've set SFX-Widgets as an external, but it is also present in Libs\ and gets loaded by Libs\Libs.xml . I don't load AceGUI separately either. What is the intention here?

Update Packager and CI

Switch to BigWigs packager and GitHub actions.

  • CI
    • Disable Travis CI
    • Remove .travis.yaml.
  • Packager
    • Remove Webhooks
    • Disable Curse Packager
    • Add .pkgmeta-classic
    • Add manual-lint.yml, pre-release and release.yml Files
  • ToC
    • Add Conditional Interface Version

Update Files

Update various files in the repo.

  • Move CONTRIBUTING to .github
  • Update .gitattributes
  • Update .pkgmeta
  • Update CHANGELOG.md.
  • Update LICENSE.txt
  • Update README.md

Bug: Masque Causing `LibDualSpec-1.0` Error on BCC PTR

Is there a planned TBC update? I tried using the current 9.0 or 1.13 versions of the addon on the Beta but im getting this errors:

2x ...dOns\Masque\Libs\LibDualSpec-1.0\LibDualSpec-1.0-19.lua:77: attempt to call global 'GetNumSpecializationsForClassID' (a nil value)
[string "@Masque\Libs\LibDualSpec-1.0\LibDualSpec-1.0-19.lua"]:77: in main chunk

Locals:
MAJOR = "LibDualSpec-1.0"
MINOR = 19
lib = <table> {
 registry = <table> {
 }
 options = <table> {
 }
 upgrades = <table> {
 }
 currentSpec = 0
 eventFrame = <unnamed> {
 }
 mixin = <table> {
 }
}
minor = nil
registry = <table> {
}
options = <table> {
}
mixin = <table> {
}
upgrades = <table> {
}
AceDB3 = <table> {
 db_registry = <table> {
 }
 frame = <unnamed> {
 }
 New = <function> defined @AtlasLootClassic\Libs\AceDB-3.0\AceDB-3.0.lua:709
}
AceDBOptions3 = <table> {
 optionTables = <table> {
 }
 handlers = <table> {
 }
 GetOptionsTable = <function> defined @Masque\Libs\AceDBOptions-3.0\AceDBOptions-3.0.lua:442
}
AceConfigRegistry3 = <table> {
 RegisterOptionsTable = <function> defined @Masque\Libs\AceConfig-3.0\AceConfigRegistry-3.0\AceConfigRegistry-3.0.lua:315
 validated = <table> {
 }
 tables = <table> {
 }
 callbacks = <table> {
 }
 RegisterCallback = <function> defined @AtlasLootClassic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:90
 GetOptionsTable = <function> defined @Masque\Libs\AceConfig-3.0\AceConfigRegistry-3.0\AceConfigRegistry-3.0.lua:360
 UnregisterCallback = <function> defined @AtlasLootClassic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:153
 IterateOptionsTables = <function> defined @Masque\Libs\AceConfig-3.0\AceConfigRegistry-3.0\AceConfigRegistry-3.0.lua:346
 NotifyChange = <function> defined @Masque\Libs\AceConfig-3.0\AceConfigRegistry-3.0\AceConfigRegistry-3.0.lua:289
 ValidateOptionsTable = <function> defined @Masque\Libs\AceConfig-3.0\AceConfigRegistry-3.0\AceConfigRegistry-3.0.lua:276
 UnregisterAllCallbacks = <function> defined @AtlasLootClassic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:174
}
_ = "Warlock"
_ = "WARLOCK"
classId = 9
(*temporary) = nil
(*temporary) = 9
(*temporary) = "attempt to call global 'GetNumSpecializationsForClassID' (a nil value)"

2x Masque\Masque-90002.lua:107: attempt to call method 'EnhanceDatabase' (a nil value)
[string "@Masque\Masque-90002.lua"]:107: in function <Masque\Masque.lua:73>
[string "=[C]"]: ?
[string "@Masque\Libs\AceAddon-3.0\AceAddon-3.0-13.lua"]:70: in function <...aceMasque\Libs\AceAddon-3.0\AceAddon-3.0.lua:65>
[string "@Masque\Libs\AceAddon-3.0\AceAddon-3.0-13.lua"]:498: in function `InitializeAddon'
[string "@Masque\Libs\AceAddon-3.0\AceAddon-3.0-13.lua"]:623: in function <...aceMasque\Libs\AceAddon-3.0\AceAddon-3.0.lua:615>

Bug: Action Bar Errors

Since I guess the release was 7.2.1 and now 7.2.2 I am occasionally getting errors using masque to skin my action bars with the dominos addon

This error will pop up randomly

1x [ADDON_ACTION_BLOCKED] AddOn 'Masque' tried to call the protected function 'MultiBarRightButton11:Show()'.
!BugGrabber\BugGrabber.lua:573: in function <!BugGrabber\BugGrabber.lua:573>
[C]: in function Show' FrameXML\ActionButton.lua:363: in function <FrameXML\ActionButton.lua:337> [C]: in function ActionButton_Update'
FrameXML\ActionButton.lua:812: in function `ActionButton_OnEvent'
FrameXML\ActionButton.lua:252: in function <FrameXML\ActionButton.lua:244>

Locals:

Bug: Stack Overflows with the Latest Alpha

Hi StormFX,

I've tested the latest alpha version and as soon as I enabled Masque I get a lot of error including stack overflow errors and the game freezes when icons or frames are shown where Masque is activated.
If I disable Masque the errors are gone.

Just as an additional information:
I am using the Masque:Caith skin with the following addons being skinned:

AdiButtonAuras
Bartender4
flyPlateBuffs
Raven
TellMeWhen

Thank you very much for your effort in advance.

Please see the errors in the code blocks:

2x OmniCC\core\display-Display.lua:216: stack overflow OmniCC\core\display-Display.lua:216: in function GetCooldownWithHighestPriority'
OmniCC\core\display-Display.lua:131: in function UpdatePrimaryCooldown' OmniCC\core\display-Display.lua:124: in function RemoveCooldown'
OmniCC\core\cooldown.lua:86: in function <OmniCC\core\cooldown.lua:82>
OmniCC\core\cooldown.lua:96: in function <OmniCC\core\cooldown.lua:92>
OmniCC\core\cooldown.lua:117: in function <OmniCC\core\cooldown.lua:114>
[C]: in function Hide' flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:420: in function <flyPlateBuffs\flyPlateBuffs.lua:415> flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:685: in function <flyPlateBuffs\flyPlateBuffs.lua:620> flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:708: in function <flyPlateBuffs\flyPlateBuffs.lua:701> flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:960: in function func'
Masque\Core\Callback.lua:44: in function <Masque\Core\Callback.lua:37>
...
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:259: in function <flyPlateBuffs\flyPlateBuffs.lua:214>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:698: in function <flyPlateBuffs\flyPlateBuffs.lua:620>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:708: in function <flyPlateBuffs\flyPlateBuffs.lua:701>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:960: in function func' Masque\Core\Callback.lua:44: in function <Masque\Core\Callback.lua:37> Masque\Core\Group-Group.lua:59: in function <Masque\Core\Group.lua:52> Masque\Core\Group-Group.lua:192: in function ReSkin'
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:259: in function <flyPlateBuffs\flyPlateBuffs.lua:214>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:698: in function <flyPlateBuffs\flyPlateBuffs.lua:620>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:985: in function <flyPlateBuffs\flyPlateBuffs.lua:948>

Locals:
InCombatSkipped`

27x OmniCC\core\cooldown.lua:86: stack overflow OmniCC\core\cooldown.lua:86: in function <OmniCC\core\cooldown.lua:82> OmniCC\core\cooldown.lua:96: in function <OmniCC\core\cooldown.lua:92> OmniCC\core\cooldown.lua:117: in function <OmniCC\core\cooldown.lua:114> [C]: in function Hide'
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:420: in function <flyPlateBuffs\flyPlateBuffs.lua:415>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:685: in function <flyPlateBuffs\flyPlateBuffs.lua:620>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:708: in function <flyPlateBuffs\flyPlateBuffs.lua:701>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:960: in function func' Masque\Core\Callback.lua:44: in function <Masque\Core\Callback.lua:37> Masque\Core\Group-Group.lua:59: in function <Masque\Core\Group.lua:52> Masque\Core\Group-Group.lua:192: in function ReSkin'
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:259: in function <flyPlateBuffs\flyPlateBuffs.lua:214>
...
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:259: in function <flyPlateBuffs\flyPlateBuffs.lua:214>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:698: in function <flyPlateBuffs\flyPlateBuffs.lua:620>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:708: in function <flyPlateBuffs\flyPlateBuffs.lua:701>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:960: in function func' Masque\Core\Callback.lua:44: in function <Masque\Core\Callback.lua:37> Masque\Core\Group-Group.lua:59: in function <Masque\Core\Group.lua:52> Masque\Core\Group-Group.lua:192: in function ReSkin'
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:259: in function <flyPlateBuffs\flyPlateBuffs.lua:214>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:698: in function <flyPlateBuffs\flyPlateBuffs.lua:620>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:985: in function <flyPlateBuffs\flyPlateBuffs.lua:948>

Locals:
InCombatSkipped`

2x OmniCC\core\timer.lua:197: stack overflow OmniCC\core\timer.lua:197: in function GetTimerText'
OmniCC\core\timer.lua:119: in function Update' OmniCC\core\timer.lua:65: in function GetOrCreate'
OmniCC\core\display-Display.lua:147: in function UpdateTimer' OmniCC\core\display-Display.lua:116: in function AddCooldown'
OmniCC\core\cooldown.lua:76: in function <OmniCC\core\cooldown.lua:67>
OmniCC\core\cooldown.lua:94: in function <OmniCC\core\cooldown.lua:92>
OmniCC\core\cooldown.lua:117: in function <OmniCC\core\cooldown.lua:114>
[C]: ?
[C]: in function SetCooldown' flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:453: in function <flyPlateBuffs\flyPlateBuffs.lua:415> flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:685: in function <flyPlateBuffs\flyPlateBuffs.lua:620> ... flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:698: in function <flyPlateBuffs\flyPlateBuffs.lua:620> flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:708: in function <flyPlateBuffs\flyPlateBuffs.lua:701> flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:960: in function func'
Masque\Core\Callback.lua:44: in function <Masque\Core\Callback.lua:37>
Masque\Core\Group-Group.lua:59: in function <Masque\Core\Group.lua:52>
Masque\Core\Group-Group.lua:192: in function `ReSkin'
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:259: in function <flyPlateBuffs\flyPlateBuffs.lua:214>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:698: in function <flyPlateBuffs\flyPlateBuffs.lua:620>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:725: in function <flyPlateBuffs\flyPlateBuffs.lua:714>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:980: in function <flyPlateBuffs\flyPlateBuffs.lua:948>

Locals:
self =

{
endTime = 4780842.000000
callback = defined @Omnicc\core\timer.lua:84
settings =
{
}
kind = "default"
key = "4780842-default-base"
subscribers =
{
}
}
remain = 4786
tenthsThreshold = 1000
mmSSThreshold = 0
sets =
{
styles =
{
}
minDuration = 3
tenthsDuration = 1
fontOutline = "OUTLINE"
minSize = 0.150000
mmSSDuration = 0
enabled = true
effect = "pulse"
xOff = 0
spiralOpacity = 1.010000
yOff = -2
font = "Calibri"
version = "3.1.4"
fontFace = "Addons\SharedMedia_MyMedia\font\CalibriBold.ttf"
anchor = "CENTER"
minEffectDuration = 30
fontSize = 26
scaleText = true
}
seconds = 5000
(*temporary) = defined =[C]:-1
(*temporary) = 4500
(*temporary) = 1000
(*temporary) = "stack overflow"
SECOND = 1000
HALF_TENTHS = 50
TENTHS = 100
L =
{
MMSSFormat = "%d:%02d"
Flare = "Flare"
PulseTip = "Pulses the cooldown icon."
Pulse = "Pulse"
ActivateTip = "Applies the ability triggering effect to the cooldown icon."
AlertTip = "Pulses the finished cooldown icon
at the center of the screen."
ConfigMissing = "%s could not be loaded because the addon is %s"
TenthsFormat = "%0.1f"
HourFormat = "%dh"
DayFormat = "%dd"
SecondsFormat = "%d"
Version = "You are using |cffFCF75EOmniCC Version (%s)|r"
MinuteFormat = "%dm"
Shine = "Shine"
Activate = "Activate"
Alert = "Alert"
None = "None"
}
SECONDS_THRESHOLD = 59500
HALF_SECOND = 500
max = defined =[C]:-1
MINUTE = 60000
MINUTES_THRESHOLD = 3570000
HALF_MINUTE = 30000
HOURS_THRESHOLD = 84600000
HALF_HOUR = 1800000
HOUR = 3600000
HALF_DAY = 43200000
DAY = 86400000
`

29x OmniCC\core\cooldown.lua:93: stack overflow OmniCC\core\cooldown.lua:93: in function <OmniCC\core\cooldown.lua:92> OmniCC\core\cooldown.lua:117: in function <OmniCC\core\cooldown.lua:114> [C]: in function Hide'
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:420: in function <flyPlateBuffs\flyPlateBuffs.lua:415>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:685: in function <flyPlateBuffs\flyPlateBuffs.lua:620>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:708: in function <flyPlateBuffs\flyPlateBuffs.lua:701>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:960: in function func' Masque\Core\Callback.lua:44: in function <Masque\Core\Callback.lua:37> Masque\Core\Group-Group.lua:59: in function <Masque\Core\Group.lua:52> Masque\Core\Group-Group.lua:192: in function ReSkin'
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:259: in function <flyPlateBuffs\flyPlateBuffs.lua:214>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:698: in function <flyPlateBuffs\flyPlateBuffs.lua:620>
...
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:698: in function <flyPlateBuffs\flyPlateBuffs.lua:620>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:708: in function <flyPlateBuffs\flyPlateBuffs.lua:701>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:960: in function func' Masque\Core\Callback.lua:44: in function <Masque\Core\Callback.lua:37> Masque\Core\Group-Group.lua:59: in function <Masque\Core\Group.lua:52> Masque\Core\Group-Group.lua:192: in function ReSkin'
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:259: in function <flyPlateBuffs\flyPlateBuffs.lua:214>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:698: in function <flyPlateBuffs\flyPlateBuffs.lua:620>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:725: in function <flyPlateBuffs\flyPlateBuffs.lua:714>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:980: in function <flyPlateBuffs\flyPlateBuffs.lua:948>

Locals:
cooldown = {
0 =
_occ_priority = 1
_occ_show = true
_occ_kind = "default"
_occ_duration = 5
_occ_start = 4775.842000
_occ_settings =

{
}
}
(*temporary) = defined =[C]:-1
(*temporary) = {
0 =
_occ_priority = 1
_occ_show = true
_occ_kind = "default"
_occ_duration = 5
_occ_start = 4775.842000
_occ_settings =
{
}
}
(*temporary) = "stack overflow"
cooldown_ShowText = defined @Omnicc\core\cooldown.lua:67
cooldown_HideText = defined @Omnicc\core\cooldown.lua:82
`

28x Masque\Core\Regions\Backdrop.lua:122: stack overflow Masque\Core\Regions\Backdrop.lua:122: in function func'
Masque\Core\Core.lua:127: in function <Masque\Core\Core.lua:124>
Masque\Core\Button.lua:84: in function <Masque\Core\Button.lua:59>
Masque\Core\Group-Group.lua:188: in function ReSkin' flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:259: in function <flyPlateBuffs\flyPlateBuffs.lua:214> flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:698: in function <flyPlateBuffs\flyPlateBuffs.lua:620> flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:708: in function <flyPlateBuffs\flyPlateBuffs.lua:701> flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:960: in function func'
Masque\Core\Callback.lua:44: in function <Masque\Core\Callback.lua:37>
Masque\Core\Group-Group.lua:59: in function <Masque\Core\Group.lua:52>
Masque\Core\Group-Group.lua:192: in function ReSkin' flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:259: in function <flyPlateBuffs\flyPlateBuffs.lua:214> ... flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:259: in function <flyPlateBuffs\flyPlateBuffs.lua:214> flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:698: in function <flyPlateBuffs\flyPlateBuffs.lua:620> flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:708: in function <flyPlateBuffs\flyPlateBuffs.lua:701> flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:960: in function func'
Masque\Core\Callback.lua:44: in function <Masque\Core\Callback.lua:37>
Masque\Core\Group-Group.lua:59: in function <Masque\Core\Group.lua:52>
Masque\Core\Group-Group.lua:192: in function `ReSkin'
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:259: in function <flyPlateBuffs\flyPlateBuffs.lua:214>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:698: in function <flyPlateBuffs\flyPlateBuffs.lua:620>
flyPlateBuffs\flyPlateBuffs-8.0.1.06.lua:985: in function <flyPlateBuffs\flyPlateBuffs.lua:948>

Locals:
Enabled = false
Button = {
0 =
__MSQ_Shape = "Square"
durationSize = 18
__MSQ_NormalHook = true
duration = 5
border = {
}
__MSQ_bType = "Button"
__MSQ_oType = "Button"
stacktext = {
}
expiration = 4780.842000
__MSQ_Normal = {
}
icon = 463284
texture = {
}
stackSize = 18
stackBg = {
}
id = 1
__MSQ_NormalSkin =

{
}
durationBg = {
}
width = 32
durationtext = {
}
__MSQ_NormalColor =
{
}
type = "HELPFUL"
height = 32
stack = 0
cooldown = {
}
SetNormalTexture = defined =[C]:-1
}
Skin =
{
Height = 42
Texture = "Masque_Caith\Textures\Backdrop"
Width = 42
}
Color = nil
xScale = 0.888889
yScale = 0.888889
(*temporary) = defined @Masque\Core\Regions\Backdrop.lua:43
(*temporary) = {
0 =
__MSQ_Shape = "Square"
durationSize = 18
__MSQ_NormalHook = true
duration = 5
border = {
}
__MSQ_bType = "Button"
__MSQ_oType = "Button"
stacktext = {
}
expiration = 4780.842000
__MSQ_Normal = {
}
icon = 463284
texture = {
}
stackSize = 18
stackBg = {
}
id = 1
__MSQ_NormalSkin =
{
}
durationBg = {
}
width = 32
durationtext = {
}
__MSQ_NormalColor =
{
}
type = "HELPFUL"
height = 32
stack = 0
cooldown = {
}
SetNormalTexture = defined =[C]:-1
}
(*temporary) = "stack overflow"
AddBackdrop = defined @Masque\Core\Regions\Backdrop.lua:59
RemoveBackdrop = defined @Masque\Core\Regions\Backdrop.lua:43
`

Masque Sometimes not Applying to WeakAuras

I installed Masque today to use it on WeakAuras. I applied Clean Icons - Square to my WeakAuras.
As you can see on the following picture it is working most of the time. But sometimes when new Auras (in this case - Buffs) appear masque is not applied to them. You can see that on the 14 seconds blue buff on the image.

auras

Feature Request: Static ChargeCooldowns

https://github.com/Zinoh/Masque/commit/09482effd86b29b4443bdb9f998d1c3d9dca75c5#diff-29640bbe49e3344125235d5c78a95054L155

Simple fix.

Also, is it intended that the chargeCooldown region only be usable by Action buttons? Due to the line above:

155: if bType ~= "Action" then return end

In my local copy I simply moved that line to below the chargeCooldown related stuff to test it out in my local copy of TellMeWhen (which hasn't updated to the new parameters yet so using the Legacy setting). Wasn't sure of your intention though.

Feature: Add ChargeCooldown Support

A new feature was added that gives charged abilities their own cooldown. Masque should catch-and-resize those that use the native API and provide a method for those that don't.

Bug: AddButton not Applying the Correct Skin

WeakAuras is not only dynamically creating groups based on the installed auras, but also is reusing buttons. That is we have a pool of buttons that gets reused between different groups. I recently fixed that we never informed MSQ that a button moved to a new group.

But due to user reports of that leading to bugs, we need to revert that:
WeakAuras/WeakAuras2#1131

The user has configured masque to be globally disabled.

If I read the code correctly, what is happening is that on the RemoveButton (which was entirely superflous since AddButton does that already), the Button is skinned with a "Blizzard" skin.

This is typically not a problem since that skin would later be overriden by the correct skin.

Except if the new group is disabled.

This can be reproduced by with the above PR reverted, and with these two auras, which show the buffs on the player's target/focus. Applying buffs with/without target/focus should show the issues pretty much immediately.

!nBvuZjUnq4Fn9Xmd2hbsEmHyAOtodf5KR9fLtylB0eBjFwYqipC)27URSbooAA60x6mmeLvR2D1333UcEapHZSC2DYnCwfNLHFatfnMTG15FjMZEDEEUv64tVy84HdUC0WbdgpiC0OXxZZVy4LC2UEhUCu41xgmACWWbxf(PGRW9VIZe601MMfgL2XztIItIwcjTwKk5XHC2kr6lq(A1qYJnAjCGuNYOTuT5enoybCYCLwzx7xdl9wH1UgvrHSbDpMUpDgWLzYvT55j7QHOEF0dlM(4dW(0)kABeHyDillNLz9X12UsUrQDm4uQx5SNNCdl5zwYnlHG1IjLvxk2bbFVRlAKKRSfrpabNSbjtkkDR5mTOsA7R0w9HsZ5n1iYuTwahgmacPSmVdMsMVakXsvH(aK1yCcey4XGVLgbXuTw5ZPLcRLVIUmPOXQ2sNQpR(Dp1Qv9M8uJoKRuvcNKcwQOuIqkBLPjdVYE2PrwafHhtZ2bxqvksF1WjmaxX0KxYxRf6mzg)wOcaY0j0UPaXAG4S8M7M9iRpUDQN4GraVcAGPav3aWgWJcNGkaVcAkA1Nx2KLrrXK8GWterGSKRk884bn1mnfCy)wm4jB(ZR)TXlE6Q6)avrozJwu(eOEiCniGctMQx)HisRdY986JnrGeEIJuOSmqqHgF2RVSsms2E5gHkWzRek9h379A(pM)E(EFJqrj0fdmPt(QlyQbK1iPhheEONfbMZ2FMAmLzMTA2wfKaKeBTotvceQhRZqjcRT7V9UgLvqcN)DTVGagRZjMsqA0xSrAXQsV45fPS(guy7wIaaLG))I)WehRWH(sqXHBgXj4Nq67prFpe)21DN7iGBNNKm)ZlN9R3N43iezUPLIciBZFm5HzXrC2APQynqFJgEwfA)0H)7deoBpYrdQovVGcKJyp6cmbUaaSxrtgNfZMDxKhA8nZRADoJE(gzdmATdm(aGw6hXLdJe6QK)XZC84nfeGdpaI9kBvzWyDc23Zn(UQqKjkRx7NyTVL7uIJ2GZ(f7rbaM51OE77F93Bfz4mVV)1KKFEi4BgtLVFT1z2JTqOQ9ZnZnql6rz(8rLoupbT6DgTsoEcjtJqd)wRO6llUDR4juEa0ML06V37W21qFqj0KyPc)hEa(9EY9Kxt)BEZ9hFd)WtUDVy3bmN73cCMhLPXxBKjEJF2KbC7fbdOEbuoC7p)eH1PsFz3DDti2pe7CYEkdBaaAyiQ24)1d

!nBvxVjoou0Fn7JvIKY225rGgMbjMaloDhP9bZ4K4eSQJDuSdu6dZV99ETtGSSSDz1(YiHOP3C)YNZ5En0aAcLyOKN57PKkkjh)aMkB0haRR(wmL82QIcd3sNF3Jp9uq4J3)Rp(0Opn(HWhPf3n(bk5yNdXb3tjmv2oDZATqzPKzrXjrBGkuZY404qkjLL9kK8wfuPyTIdbKzfALX1iwwJfEaISqOeMD(NHh9wHNTnIYsEd6ESR57mGpMZtBlksowdz9lrlxp)LLW7D)lRTHfI9bxkxKB8510MY3ZvwceL4nkz7SjKKTKKjBGK1IfLulzhHKtuSkExuUqGcWzs7UZjzDd3LeY6OLlr)AvNBnRV5By5IwdGdJgbbYLfDWuYQ1qlkfLQZqwJ2YqGHgd(k1mhT0A4BZKmJHM6omzOXQwPv0Jp(3EPvJ4D(LgTixjQywUlzzmjhHusQUjhpYE2PHxcnHhtZpcWGidPVAicnWveLZl(B1mvopNof6aGmTmLDoqSAipBM88Ixi959Kub0ncqdanvrdaUapYSmxd4vqZrR(6sMTjkk2jpC4jIiqvkeLEg5SMAHYLC49TyYFAA(SnYpLoLeGQilVrXK)oOEC4AqGln5IE9hIiTwO2RQhAYbsyeduOKCqqHg361xgoMjtVCZHkqSvmH629(KM)283Z3NgekLWilWKw(B2G5AqwJKECq4Gb0r)dZNzATmxFqroiGcGKyRXQRsGu9sDokriTD)T31O8sNW5)24liGX(CMwcsJ(MnsXsLEXZRCE9euyB3GaGRa)8I)WghdZI(6GIZNmhNGFcDFFV77X432UZChbmDvsYQVUzXN)sI)fHiZnxYkHQT6LKLlIJOKDCr5oG(Ey8vvO9Bh()Vq4QZidwuDPEbfidyp3bygCaayVYTLCrmzXZrEOXpmN2ATA1Q98gy1AhyCdGw2T4Y5vcDDY)AmdxVjGeC(2oCw5GihwX7G9tCJFQkezcz9o)gRtJCxsCUxqj)IzqcOK5nI3)X3)TwwoUZ7hFp5klbFxRR8ZRTw9jSfsvTFVjmhuYTdk91tRlQEgk9d2T6C8cw2TdLuzN)hhMoE04jO(a4nJtS)rxeB2bdcsykX468)YnWF0DU30vRxCj(GBM9xz3Jmx7xdCLRLDlW2Zt8g)Qohy37cg5MgqbX0)(LegRi71Jp3TJ40ASRj8DvypGqJdr9g9p)

Bug: Borders not Being Skinned

In the alpha, skins with borders are no longer creating the border on target frames. This includes:

TellMeWhen above, ShadowedUF buffs left, Dominos below (which is working correctly); Using skin "Renaitre: Square":
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.