режим предателя + UI референсы и DragonUI
This commit is contained in:
@@ -0,0 +1,439 @@
|
||||
|
||||
NUM_FACTIONS_DISPLAYED = 15;
|
||||
REPUTATIONFRAME_FACTIONHEIGHT = 26;
|
||||
FACTION_BAR_COLORS = {
|
||||
[1] = {r = 0.8, g = 0.3, b = 0.22},
|
||||
[2] = {r = 0.8, g = 0.3, b = 0.22},
|
||||
[3] = {r = 0.75, g = 0.27, b = 0},
|
||||
[4] = {r = 0.9, g = 0.7, b = 0},
|
||||
[5] = {r = 0, g = 0.6, b = 0.1},
|
||||
[6] = {r = 0, g = 0.6, b = 0.1},
|
||||
[7] = {r = 0, g = 0.6, b = 0.1},
|
||||
[8] = {r = 0, g = 0.6, b = 0.1},
|
||||
};
|
||||
-- Hard coded =(, will need to add entries for each expansion
|
||||
MAX_PLAYER_LEVEL_TABLE = {};
|
||||
MAX_PLAYER_LEVEL_TABLE[0] = 60;
|
||||
MAX_PLAYER_LEVEL_TABLE[1] = 70;
|
||||
MAX_PLAYER_LEVEL_TABLE[2] = 80;
|
||||
MAX_PLAYER_LEVEL = 0;
|
||||
REPUTATIONFRAME_ROWSPACING = 23;
|
||||
|
||||
function ReputationFrame_OnLoad(self)
|
||||
self:RegisterEvent("UPDATE_FACTION");
|
||||
-- Initialize max player level
|
||||
MAX_PLAYER_LEVEL = MAX_PLAYER_LEVEL_TABLE[GetAccountExpansionLevel()];
|
||||
--[[for i=1, NUM_FACTIONS_DISPLAYED, 1 do
|
||||
_G["ReputationBar"..i.."FactionStanding"]:SetPoint("CENTER",_G["ReputationBar"..i.."ReputationBar"]);
|
||||
end
|
||||
--]]
|
||||
end
|
||||
|
||||
function ReputationFrame_OnShow()
|
||||
ReputationFrame_Update();
|
||||
end
|
||||
|
||||
function ReputationFrame_OnEvent(self, event, ...)
|
||||
if ( event == "UPDATE_FACTION" ) then
|
||||
if ( self:IsVisible() ) then
|
||||
ReputationFrame_Update();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ReputationFrame_SetRowType(factionRow, rowType, hasRep) --rowType is a binary table of type isHeader, isChild
|
||||
local factionRowName = factionRow:GetName()
|
||||
local factionBar = _G[factionRowName.."ReputationBar"];
|
||||
local factionTitle = _G[factionRowName.."FactionName"];
|
||||
local factionButton = _G[factionRowName.."ExpandOrCollapseButton"];
|
||||
local factionStanding = _G[factionRowName.."ReputationBarFactionStanding"];
|
||||
local factionBackground = _G[factionRowName.."Background"];
|
||||
local factionLeftTexture = _G[factionRowName.."ReputationBarLeftTexture"];
|
||||
local factionRightTexture = _G[factionRowName.."ReputationBarRightTexture"];
|
||||
factionLeftTexture:SetWidth(62);
|
||||
factionRightTexture:SetWidth(42);
|
||||
factionBar:SetPoint("RIGHT", factionRow, "RIGHT", 0, 0);
|
||||
if ( rowType == 0 ) then --Not header, not child
|
||||
factionRow:SetPoint("LEFT", ReputationFrame, "LEFT", 44, 0);
|
||||
factionButton:Hide();
|
||||
factionTitle:SetPoint("LEFT", factionRow, "LEFT", 10, 0);
|
||||
factionTitle:SetFontObject(GameFontHighlightSmall);
|
||||
factionTitle:SetWidth(160);
|
||||
factionBackground:Show();
|
||||
factionLeftTexture:SetHeight(21);
|
||||
factionRightTexture:SetHeight(21);
|
||||
factionLeftTexture:SetTexCoord(0.7578125, 1.0, 0.0, 0.328125);
|
||||
factionRightTexture:SetTexCoord(0.0, 0.1640625, 0.34375, 0.671875);
|
||||
factionBar:SetWidth(101)
|
||||
elseif ( rowType == 1 ) then --Child, not header
|
||||
factionRow:SetPoint("LEFT", ReputationFrame, "LEFT", 62, 0);
|
||||
factionButton:Hide()
|
||||
factionTitle:SetPoint("LEFT", factionRow, "LEFT", 10, 0);
|
||||
factionTitle:SetFontObject(GameFontHighlightSmall);
|
||||
factionTitle:SetWidth(150);
|
||||
factionBackground:Show();
|
||||
factionLeftTexture:SetHeight(21);
|
||||
factionRightTexture:SetHeight(21);
|
||||
factionLeftTexture:SetTexCoord(0.7578125, 1.0, 0.0, 0.328125);
|
||||
factionRightTexture:SetTexCoord(0.0, 0.1640625, 0.34375, 0.671875);
|
||||
factionBar:SetWidth(101)
|
||||
elseif ( rowType == 2 ) then --Header, not child
|
||||
factionRow:SetPoint("LEFT", ReputationFrame, "LEFT", 20, 0);
|
||||
factionButton:SetPoint("LEFT", factionRow, "LEFT", 3, 0);
|
||||
factionButton:Show();
|
||||
factionTitle:SetPoint("LEFT",factionButton,"RIGHT",10,0);
|
||||
factionTitle:SetFontObject(GameFontNormalLeft);
|
||||
factionTitle:SetWidth(145);
|
||||
factionBackground:Hide()
|
||||
factionLeftTexture:SetHeight(15);
|
||||
factionLeftTexture:SetWidth(60);
|
||||
factionRightTexture:SetHeight(15);
|
||||
factionRightTexture:SetWidth(39);
|
||||
factionLeftTexture:SetTexCoord(0.765625, 1.0, 0.046875, 0.28125);
|
||||
factionRightTexture:SetTexCoord(0.0, 0.15234375, 0.390625, 0.625);
|
||||
factionBar:SetWidth(99);
|
||||
elseif ( rowType == 3 ) then --Header and child
|
||||
factionRow:SetPoint("LEFT", ReputationFrame, "LEFT", 39, 0);
|
||||
factionButton:SetPoint("LEFT", factionRow, "LEFT", 3, 0);
|
||||
factionButton:Show();
|
||||
factionTitle:SetPoint("LEFT" ,factionButton, "RIGHT", 10, 0);
|
||||
factionTitle:SetFontObject(GameFontNormalLeft);
|
||||
factionTitle:SetWidth(135);
|
||||
factionBackground:Hide()
|
||||
factionLeftTexture:SetHeight(15);
|
||||
factionLeftTexture:SetWidth(60);
|
||||
factionRightTexture:SetHeight(15);
|
||||
factionRightTexture:SetWidth(39);
|
||||
factionLeftTexture:SetTexCoord(0.765625, 1.0, 0.046875, 0.28125);
|
||||
factionRightTexture:SetTexCoord(0.0, 0.15234375, 0.390625, 0.625);
|
||||
factionBar:SetWidth(99);
|
||||
end
|
||||
|
||||
if ( (hasRep) or (rowType == 0) or (rowType == 1)) then
|
||||
factionStanding:Show();
|
||||
factionBar:Show();
|
||||
factionBar:GetParent().hasRep = true;
|
||||
else
|
||||
factionStanding:Hide();
|
||||
factionBar:Hide();
|
||||
factionBar:GetParent().hasRep = false;
|
||||
end
|
||||
end
|
||||
|
||||
function ReputationFrame_Update()
|
||||
local numFactions = GetNumFactions();
|
||||
local factionIndex, factionRow, factionTitle, factionStanding, factionBar, factionButton, factionLeftLine, factionBottomLine, factionBackground, color, tooltipStanding;
|
||||
local name, description, standingID, barMin, barMax, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild;
|
||||
local atWarIndicator, rightBarTexture;
|
||||
|
||||
local previousBigTexture = ReputationFrameTopTreeTexture; --In case we have a line going off the panel to the top
|
||||
previousBigTexture:Hide();
|
||||
local previousBigTexture2 = ReputationFrameTopTreeTexture2;
|
||||
previousBigTexture2:Hide();
|
||||
|
||||
-- Update scroll frame
|
||||
if ( not FauxScrollFrame_Update(ReputationListScrollFrame, numFactions, NUM_FACTIONS_DISPLAYED, REPUTATIONFRAME_FACTIONHEIGHT ) ) then
|
||||
ReputationListScrollFrameScrollBar:SetValue(0);
|
||||
end
|
||||
local factionOffset = FauxScrollFrame_GetOffset(ReputationListScrollFrame);
|
||||
|
||||
local gender = UnitSex("player");
|
||||
|
||||
local i;
|
||||
|
||||
local offScreenFudgeFactor = 5;
|
||||
local previousBigTextureRows = 0;
|
||||
local previousBigTextureRows2 = 0;
|
||||
for i=1, NUM_FACTIONS_DISPLAYED, 1 do
|
||||
factionIndex = factionOffset + i;
|
||||
factionRow = _G["ReputationBar"..i];
|
||||
factionBar = _G["ReputationBar"..i.."ReputationBar"];
|
||||
factionTitle = _G["ReputationBar"..i.."FactionName"];
|
||||
factionButton = _G["ReputationBar"..i.."ExpandOrCollapseButton"];
|
||||
factionLeftLine = _G["ReputationBar"..i.."LeftLine"];
|
||||
factionBottomLine = _G["ReputationBar"..i.."BottomLine"];
|
||||
factionStanding = _G["ReputationBar"..i.."ReputationBarFactionStanding"];
|
||||
factionBackground = _G["ReputationBar"..i.."Background"];
|
||||
if ( factionIndex <= numFactions ) then
|
||||
name, description, standingID, barMin, barMax, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild = GetFactionInfo(factionIndex);
|
||||
factionTitle:SetText(name);
|
||||
if ( isCollapsed ) then
|
||||
factionButton:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-Up");
|
||||
else
|
||||
factionButton:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-Up");
|
||||
end
|
||||
factionRow.index = factionIndex;
|
||||
factionRow.isCollapsed = isCollapsed;
|
||||
local factionStandingtext = GetText("FACTION_STANDING_LABEL"..standingID, gender);
|
||||
factionStanding:SetText(factionStandingtext);
|
||||
|
||||
--Normalize Values
|
||||
barMax = barMax - barMin;
|
||||
barValue = barValue - barMin;
|
||||
barMin = 0;
|
||||
|
||||
factionRow.standingText = factionStandingtext;
|
||||
factionRow.tooltip = HIGHLIGHT_FONT_COLOR_CODE.." "..barValue.." / "..barMax..FONT_COLOR_CODE_CLOSE;
|
||||
factionBar:SetMinMaxValues(0, barMax);
|
||||
factionBar:SetValue(barValue);
|
||||
local color = FACTION_BAR_COLORS[standingID];
|
||||
factionBar:SetStatusBarColor(color.r, color.g, color.b);
|
||||
|
||||
if ( isHeader and not isChild ) then
|
||||
factionLeftLine:SetTexCoord(0, 0.25, 0, 2);
|
||||
factionBottomLine:Hide();
|
||||
factionLeftLine:Hide();
|
||||
if ( previousBigTextureRows == 0 ) then
|
||||
previousBigTexture:Hide();
|
||||
end
|
||||
previousBigTexture = factionBottomLine;
|
||||
previousBigTextureRows = 0;
|
||||
elseif ( isHeader and isChild ) then
|
||||
ReputationBar_DrawHorizontalLine(factionLeftLine, 11, factionButton);
|
||||
if ( previousBigTexture2 and previousBigTextureRows2 == 0 ) then
|
||||
previousBigTexture2:Hide();
|
||||
end
|
||||
factionBottomLine:Hide();
|
||||
previousBigTexture2 = factionBottomLine;
|
||||
previousBigTextureRows2 = 0;
|
||||
previousBigTextureRows = previousBigTextureRows+1;
|
||||
ReputationBar_DrawVerticalLine(previousBigTexture, previousBigTextureRows);
|
||||
|
||||
elseif ( isChild ) then
|
||||
ReputationBar_DrawHorizontalLine(factionLeftLine, 11, factionBackground);
|
||||
factionBottomLine:Hide();
|
||||
previousBigTextureRows = previousBigTextureRows+1;
|
||||
previousBigTextureRows2 = previousBigTextureRows2+1;
|
||||
ReputationBar_DrawVerticalLine(previousBigTexture2, previousBigTextureRows2);
|
||||
else
|
||||
-- is immediately under a main category
|
||||
ReputationBar_DrawHorizontalLine(factionLeftLine, 13, factionBackground);
|
||||
factionBottomLine:Hide();
|
||||
previousBigTextureRows = previousBigTextureRows+1;
|
||||
ReputationBar_DrawVerticalLine(previousBigTexture, previousBigTextureRows);
|
||||
end
|
||||
|
||||
ReputationFrame_SetRowType(factionRow, ((isChild and 1 or 0) + (isHeader and 2 or 0)), hasRep);
|
||||
|
||||
factionRow:Show();
|
||||
|
||||
-- Update details if this is the selected faction
|
||||
if ( atWarWith ) then
|
||||
_G["ReputationBar"..i.."ReputationBarAtWarHighlight1"]:Show();
|
||||
_G["ReputationBar"..i.."ReputationBarAtWarHighlight2"]:Show();
|
||||
else
|
||||
_G["ReputationBar"..i.."ReputationBarAtWarHighlight1"]:Hide();
|
||||
_G["ReputationBar"..i.."ReputationBarAtWarHighlight2"]:Hide();
|
||||
end
|
||||
if ( factionIndex == GetSelectedFaction() ) then
|
||||
if ( ReputationDetailFrame:IsShown() ) then
|
||||
ReputationDetailFactionName:SetText(name);
|
||||
ReputationDetailFactionDescription:SetText(description);
|
||||
if ( atWarWith ) then
|
||||
ReputationDetailAtWarCheckBox:SetChecked(1);
|
||||
else
|
||||
ReputationDetailAtWarCheckBox:SetChecked(nil);
|
||||
end
|
||||
if ( canToggleAtWar and (not isHeader)) then
|
||||
ReputationDetailAtWarCheckBox:Enable();
|
||||
ReputationDetailAtWarCheckBoxText:SetTextColor(RED_FONT_COLOR.r, RED_FONT_COLOR.g, RED_FONT_COLOR.b);
|
||||
else
|
||||
ReputationDetailAtWarCheckBox:Disable();
|
||||
ReputationDetailAtWarCheckBoxText:SetTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
|
||||
end
|
||||
if ( not isHeader ) then
|
||||
ReputationDetailInactiveCheckBox:Enable();
|
||||
ReputationDetailInactiveCheckBoxText:SetTextColor(ReputationDetailInactiveCheckBoxText:GetFontObject():GetTextColor());
|
||||
else
|
||||
ReputationDetailInactiveCheckBox:Disable();
|
||||
ReputationDetailInactiveCheckBoxText:SetTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
|
||||
end
|
||||
if ( IsFactionInactive(factionIndex) ) then
|
||||
ReputationDetailInactiveCheckBox:SetChecked(1);
|
||||
else
|
||||
ReputationDetailInactiveCheckBox:SetChecked(nil);
|
||||
end
|
||||
if ( isWatched ) then
|
||||
ReputationDetailMainScreenCheckBox:SetChecked(1);
|
||||
else
|
||||
ReputationDetailMainScreenCheckBox:SetChecked(nil);
|
||||
end
|
||||
_G["ReputationBar"..i.."ReputationBarHighlight1"]:Show();
|
||||
_G["ReputationBar"..i.."ReputationBarHighlight2"]:Show();
|
||||
end
|
||||
else
|
||||
_G["ReputationBar"..i.."ReputationBarHighlight1"]:Hide();
|
||||
_G["ReputationBar"..i.."ReputationBarHighlight2"]:Hide();
|
||||
end
|
||||
else
|
||||
factionRow:Hide();
|
||||
end
|
||||
end
|
||||
if ( GetSelectedFaction() == 0 ) then
|
||||
ReputationDetailFrame:Hide();
|
||||
end
|
||||
|
||||
local i = NUM_
|
||||
for i = (NUM_FACTIONS_DISPLAYED + factionOffset + 1), numFactions, 1 do
|
||||
local name, description, standingID, barMin, barMax, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild = GetFactionInfo(i);
|
||||
if not name then break; end
|
||||
|
||||
if ( isHeader and not isChild ) then
|
||||
break;
|
||||
elseif ( (isHeader and isChild) or not(isHeader or isChild) ) then
|
||||
ReputationBar_DrawVerticalLine(previousBigTexture, previousBigTextureRows+1);
|
||||
break;
|
||||
elseif ( isChild ) then
|
||||
ReputationBar_DrawVerticalLine(previousBigTexture2, previousBigTextureRows2+1);
|
||||
break;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ReputationBar_DrawVerticalLine(texture, rows)
|
||||
-- Need to add this fudge factor because the lines are anchored to the top of the screen in this case, not another button
|
||||
local fudgeFactor = 0;
|
||||
if ( texture == ReputationFrameTopTreeTexture or texture == ReputationFrameTopTreeTexture2) then
|
||||
fudgeFactor = 5;
|
||||
end
|
||||
texture:SetHeight(rows*REPUTATIONFRAME_ROWSPACING-fudgeFactor);
|
||||
texture:SetTexCoord(0, 0.25, 0, texture:GetHeight()/2);
|
||||
texture:Show();
|
||||
end
|
||||
|
||||
function ReputationBar_DrawHorizontalLine(texture, width, anchorTo)
|
||||
texture:SetPoint("RIGHT", anchorTo, "LEFT", 3, 0);
|
||||
texture:SetWidth(width);
|
||||
texture:SetTexCoord(0, width/2, 0, 0.25);
|
||||
texture:Show();
|
||||
end
|
||||
|
||||
function ReputationBar_OnClick(self)
|
||||
if ( ReputationDetailFrame:IsShown() and (GetSelectedFaction() == self.index) ) then
|
||||
ReputationDetailFrame:Hide();
|
||||
else
|
||||
if ( self.hasRep ) then
|
||||
SetSelectedFaction(self.index);
|
||||
ReputationDetailFrame:Show();
|
||||
ReputationFrame_Update();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ReputationWatchBar_Update(newLevel)
|
||||
local name, reaction, min, max, value = GetWatchedFactionInfo();
|
||||
local visibilityChanged = nil;
|
||||
if ( not newLevel ) then
|
||||
newLevel = UnitLevel("player");
|
||||
end
|
||||
if ( name ) then
|
||||
-- See if it was already shown or not
|
||||
if ( not ReputationWatchBar:IsShown() ) then
|
||||
visibilityChanged = 1;
|
||||
end
|
||||
|
||||
-- Normalize values
|
||||
max = max - min;
|
||||
value = value - min;
|
||||
min = 0;
|
||||
ReputationWatchStatusBar:SetMinMaxValues(min, max);
|
||||
ReputationWatchStatusBar:SetValue(value);
|
||||
ReputationWatchStatusBarText:SetText(name.." "..value.." / "..max);
|
||||
local color = FACTION_BAR_COLORS[reaction];
|
||||
ReputationWatchStatusBar:SetStatusBarColor(color.r, color.g, color.b);
|
||||
ReputationWatchBar:Show();
|
||||
|
||||
-- If the player is max level then replace the xp bar with the watched reputation, otherwise stack the reputation watch bar on top of the xp bar
|
||||
ReputationWatchStatusBar:SetFrameLevel(MainMenuBarArtFrame:GetFrameLevel()-1);
|
||||
if ( newLevel < MAX_PLAYER_LEVEL and not IsXPUserDisabled() ) then
|
||||
-- Reconfigure reputation bar
|
||||
ReputationWatchStatusBar:SetHeight(8);
|
||||
ReputationWatchBar:ClearAllPoints();
|
||||
ReputationWatchBar:SetPoint("BOTTOM", MainMenuBar, "TOP", 0, -3);
|
||||
ReputationWatchStatusBarText:SetPoint("CENTER", ReputationWatchBarOverlayFrame, "CENTER", 0, 3);
|
||||
ReputationWatchBarTexture0:Show();
|
||||
ReputationWatchBarTexture1:Show();
|
||||
ReputationWatchBarTexture2:Show();
|
||||
ReputationWatchBarTexture3:Show();
|
||||
|
||||
ReputationXPBarTexture0:Hide();
|
||||
ReputationXPBarTexture1:Hide();
|
||||
ReputationXPBarTexture2:Hide();
|
||||
ReputationXPBarTexture3:Hide();
|
||||
|
||||
-- Show the XP bar
|
||||
MainMenuExpBar:Show();
|
||||
MainMenuExpBar.pauseUpdates = nil;
|
||||
-- Hide max level bar
|
||||
MainMenuBarMaxLevelBar:Hide();
|
||||
else
|
||||
-- Replace xp bar
|
||||
ReputationWatchStatusBar:SetHeight(13);
|
||||
ReputationWatchBar:ClearAllPoints();
|
||||
ReputationWatchBar:SetPoint("TOP", MainMenuBar, "TOP", 0, 0);
|
||||
ReputationWatchStatusBarText:SetPoint("CENTER", ReputationWatchBarOverlayFrame, "CENTER", 0, 1);
|
||||
ReputationWatchBarTexture0:Hide();
|
||||
ReputationWatchBarTexture1:Hide();
|
||||
ReputationWatchBarTexture2:Hide();
|
||||
ReputationWatchBarTexture3:Hide();
|
||||
|
||||
ReputationXPBarTexture0:Show();
|
||||
ReputationXPBarTexture1:Show();
|
||||
ReputationXPBarTexture2:Show();
|
||||
ReputationXPBarTexture3:Show();
|
||||
|
||||
ExhaustionTick:Hide();
|
||||
|
||||
-- Hide the XP bar
|
||||
MainMenuExpBar:Hide();
|
||||
MainMenuExpBar.pauseUpdates = true;
|
||||
-- Hide max level bar
|
||||
MainMenuBarMaxLevelBar:Hide();
|
||||
end
|
||||
|
||||
else
|
||||
if ( ReputationWatchBar:IsShown() ) then
|
||||
visibilityChanged = 1;
|
||||
end
|
||||
ReputationWatchBar:Hide();
|
||||
if ( newLevel < MAX_PLAYER_LEVEL and not IsXPUserDisabled() ) then
|
||||
MainMenuExpBar:Show();
|
||||
MainMenuExpBar.pauseUpdates = nil;
|
||||
MainMenuBarMaxLevelBar:Hide();
|
||||
else
|
||||
MainMenuExpBar:Hide();
|
||||
MainMenuExpBar.pauseUpdates = true;
|
||||
MainMenuBarMaxLevelBar:Show();
|
||||
ExhaustionTick:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
-- update the xp bar
|
||||
TextStatusBar_UpdateTextString(MainMenuExpBar);
|
||||
MainMenuExpBar_Update();
|
||||
|
||||
if ( visibilityChanged ) then
|
||||
UIParent_ManageFramePositions();
|
||||
updateContainerFrameAnchors();
|
||||
end
|
||||
end
|
||||
|
||||
function ShowWatchedReputationBarText(lock)
|
||||
if ( lock ) then
|
||||
ReputationWatchBar.cvarLocked = lock;
|
||||
end
|
||||
if ( ReputationWatchBar:IsShown() ) then
|
||||
ReputationWatchStatusBarText:Show();
|
||||
ReputationWatchBar.textLocked = 1;
|
||||
else
|
||||
HideWatchedReputationBarText();
|
||||
end
|
||||
end
|
||||
|
||||
function HideWatchedReputationBarText(unlock)
|
||||
if ( unlock or not ReputationWatchBar.cvarLocked ) then
|
||||
ReputationWatchBar.cvarLocked = nil;
|
||||
ReputationWatchStatusBarText:Hide();
|
||||
ReputationWatchBar.textLocked = nil;
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user