режим предатель, преезд всего GlueXML в patch-ruRU-4

This commit is contained in:
2026-04-07 23:27:24 +04:00
parent e4a0cc2c36
commit 0dbe8c95a2
395 changed files with 10324 additions and 21739 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -16,6 +16,9 @@ PAID_FACTION_CHANGE = 3;
PAID_SERVICE_CHARACTER_ID = nil;
PAID_SERVICE_TYPE = nil;
GAME_MODE_NORMAL = 0;
GAME_MODE_TRAITOR = 1;
FACTION_BACKDROP_COLOR_TABLE = {
["Alliance"] = {0.5, 0.5, 0.5, 0.09, 0.09, 0.19},
["Horde"] = {0.5, 0.2, 0.2, 0.19, 0.05, 0.05},
@@ -81,6 +84,10 @@ local raceTooltips = {};
local classTooltips = {};
local detailedRaceTooltips = {};
local detailedClassTooltips = {};
local GAME_MODE_TILE_BACKGROUNDS = {
[GAME_MODE_NORMAL] = "Interface\\GluesVideo\\Assets\\RealmSelection\\Realm1.blp",
[GAME_MODE_TRAITOR] = "Interface\\GluesVideo\\Assets\\RealmSelection\\Realm2.blp",
};
local function UTF8Chars(text)
return string.gmatch(text or "", "[%z\1-\127\194-\244][\128-\191]*")
@@ -636,6 +643,129 @@ function CharacterCreate_PositionAllButtons()
CharacterCreate_PositionGenderButtons()
end
function CharacterCreate_CreateWithGameMode(modeId)
if PAID_SERVICE_TYPE then
return;
end
if modeId ~= GAME_MODE_NORMAL and modeId ~= GAME_MODE_TRAITOR then
modeId = GAME_MODE_NORMAL;
end
-- The patched Wow.exe reads the second argument as outfitId
-- and writes it into the CMSG_CHAR_CREATE packet.
local name = CharacterCreateNameEdit:GetText();
message("DEBUG: CreateCharacter('" .. tostring(name) .. "', " .. tostring(modeId) .. ")");
CreateCharacter(name, modeId);
CharacterCreate.personalizationMode = false;
CharacterCreate.gameModeSelectionMode = false;
PlaySound("gsCharacterCreationCreateChar");
end
function CharacterCreate_UpdateGameModeVisibility()
if not CharacterCreateGameModeFrame then
return;
end
if CharacterCreate.personalizationMode and CharacterCreate.gameModeSelectionMode and not PAID_SERVICE_TYPE then
CharacterCreateGameModeFrame:Show();
else
CharacterCreateGameModeFrame:Hide();
end
end
local function CharacterCreate_GetEnteredName()
local text = "";
if CharacterCreateNameEdit and CharacterCreateNameEdit.GetText then
text = CharacterCreateNameEdit:GetText() or "";
end
text = string.gsub(text, "^%s+", "");
text = string.gsub(text, "%s+$", "");
return text;
end
local function CharacterCreate_HasEnteredName()
return UTF8Length(CharacterCreate_GetEnteredName()) >= MIN_CHAR_NAME_LENGTH;
end
local function CharacterCreate_UpdatePersonalizationStep()
if not CharacterCreate.personalizationMode then
return;
end
if CharacterCreate.gameModeSelectionMode and not CharacterCreate_HasEnteredName() then
CharacterCreate.gameModeSelectionMode = false;
end
local showGameModes = CharacterCreate.gameModeSelectionMode and not PAID_SERVICE_TYPE;
if showGameModes then
CharacterCreateRotateLeft:Hide();
CharacterCreateRotateRight:Hide();
CharacterCreateRotateLeft30:Hide();
CharacterCreateRotateRight30:Hide();
CharCreateRandomizeButton:Hide();
CharacterCreateNameEdit:Hide();
CharacterCreateRandomName:Hide();
CharCreateOkayButton:Hide();
for i=1, NUM_CHAR_CUSTOMIZATIONS do
_G["CharacterCustomizationButtonFrame"..i]:Hide();
end
else
CharacterCreateRotateLeft:Show();
CharacterCreateRotateRight:Show();
CharacterCreateRotateLeft30:Show();
CharacterCreateRotateRight30:Show();
CharCreateRandomizeButton:Show();
CharacterCreateNameEdit:Show();
CharacterCreateRandomName:Show();
CharCreateOkayButton:Show();
for i=1, NUM_CHAR_CUSTOMIZATIONS do
_G["CharacterCustomizationButtonFrame"..i]:Show();
end
end
CharacterCreate_UpdateGameModeVisibility();
end
local function CharacterCreate_InitGameModeTiles()
-- Background textures
CharacterCreateGameModeNormalBg:SetTexture(GAME_MODE_TILE_BACKGROUNDS[GAME_MODE_NORMAL]);
CharacterCreateGameModeTraitorBg:SetTexture(GAME_MODE_TILE_BACKGROUNDS[GAME_MODE_TRAITOR]);
-- Tile titles (MORPHEUS font)
CharacterCreateGameModeNormalTitle:SetFont("Fonts\\MORPHEUS.TTF", 24, "");
CharacterCreateGameModeNormalTitle:SetText("Обычный");
CharacterCreateGameModeNormalTitle:SetTextColor(0.96, 0.94, 0.88);
CharacterCreateGameModeTraitorTitle:SetFont("Fonts\\MORPHEUS.TTF", 24, "");
CharacterCreateGameModeTraitorTitle:SetText("Предатель");
CharacterCreateGameModeTraitorTitle:SetTextColor(0.96, 0.94, 0.88);
-- Frame header
CharacterCreateGameModeFrameTitle:SetFont("Fonts\\MORPHEUS.TTF", 28, "");
CharacterCreateGameModeFrameTitle:SetText("ВЫБОР РЕЖИМА");
CharacterCreateGameModeFrameTitle:SetTextColor(1.0, 0.82, 0.0);
CharacterCreateGameModeFrameSubtitle:SetText("Выберите режим для нового персонажа");
CharacterCreateGameModeFrameSubtitle:SetTextColor(0.78, 0.72, 0.55);
-- Play buttons
CharacterCreateGameModeNormalPlayButton:SetText("Играть");
CharacterCreateGameModeNormalPlayButton:SetScript("OnClick", function()
CharacterCreate_CreateWithGameMode(GAME_MODE_NORMAL);
end);
CharacterCreateGameModeTraitorPlayButton:SetText("Играть");
CharacterCreateGameModeTraitorPlayButton:SetScript("OnClick", function()
CharacterCreate_CreateWithGameMode(GAME_MODE_TRAITOR);
end);
end
function CharacterCreate_OnLoad(self)
self:SetSequence(0)
self:SetCamera(0)
@@ -646,9 +776,11 @@ function CharacterCreate_OnLoad(self)
CharacterCreate.numClasses = 0
CharacterCreate.selectedClass = 0
CharacterCreate.selectedGender = 0
CharacterCreate.gameModeSelectionMode = false
CharacterCreate.personalizationMode = false
CharacterCreate_MoveTexturesToBackground()
CharacterCreate_SetupCustomButtons()
CharacterCreate_InitGameModeTiles()
for i=1, NUM_CHAR_CUSTOMIZATIONS, 1 do
_G["CharacterCustomizationButtonFrame"..i.."Text"]:SetText(_G["CHAR_CUSTOMIZATION"..i.."_DESC"])
@@ -778,15 +910,12 @@ function CharacterCreate_TogglePersonalization()
CharCreatePersonalizeButton:Hide();
CharCreateOkayButton:Show();
CharacterCreate_UpdateHairCustomization();
CharCreateRandomizeButton:Show();
CharacterCreateNameEdit:Show();
CharacterCreateRandomName:Show();
CharacterCreate.gameModeSelectionMode = false;
CharacterCreate_UpdatePersonalizationStep();
for i=1, NUM_CHAR_CUSTOMIZATIONS do
_G["CharacterCustomizationButtonFrame"..i]:Show();
end
else
CharacterCreate.personalizationMode = false;
CharacterCreate.gameModeSelectionMode = false;
PlaySound("gsCharacterCreationCancel");
CharacterCreateRaceButtonsContainer:Show();
CharacterCreateClassButtonsContainer:Show();
@@ -804,6 +933,7 @@ function CharacterCreate_TogglePersonalization()
CharacterCreateRandomName:Hide();
CharCreatePersonalizeButton:Show();
CharCreateOkayButton:Hide();
CharacterCreate_UpdateGameModeVisibility();
for i=1, NUM_CHAR_CUSTOMIZATIONS do
_G["CharacterCustomizationButtonFrame"..i]:Hide();
@@ -844,6 +974,7 @@ function CharacterCreate_OnShow()
end
CharacterCreate.personalizationMode = false;
CharacterCreate.gameModeSelectionMode = false;
CharCreateOkayButton:Hide();
for i=1, NUM_CHAR_CUSTOMIZATIONS do
@@ -865,6 +996,8 @@ function CharacterCreate_OnShow()
hideScheduled = true
HideNameEditFrame:Show()
CharacterCreate.gameModeSelectionMode = false;
CharacterCreate_UpdateGameModeVisibility();
CharacterCreate_PositionAllButtons()
end
@@ -1316,6 +1449,9 @@ function SetCharacterClass(id)
end
function CharacterCreate_OnChar()
if CharacterCreate.personalizationMode then
CharacterCreate_UpdatePersonalizationStep();
end
end
function CharacterCreate_UpdateButtonCheckedStates()
@@ -1363,11 +1499,7 @@ end
function CharacterCreate_OnKeyDown(key)
if ( key == "ESCAPE" ) then
if (CharacterCreate.personalizationMode == true) then
CharacterCreate_TogglePersonalization();
else
CharacterCreate_Back();
end
CharacterCreate_Back();
elseif ( key == "ENTER" ) then
CharacterCreate_Okay();
elseif ( key == "PRINTSCREEN" ) then
@@ -1381,18 +1513,42 @@ function CharacterCreate_UpdateModel(self)
end
function CharacterCreate_Okay()
if ( not PAID_SERVICE_TYPE and CharacterCreate.personalizationMode and not CharacterCreate.gameModeSelectionMode ) then
if ( not CharacterCreate_HasEnteredName() ) then
CharacterCreateNameEdit:SetFocus();
return;
end
CharacterCreate.gameModeSelectionMode = true;
CharacterCreate_UpdatePersonalizationStep();
return;
end
-- In game mode selection — tile buttons handle character creation
if ( not PAID_SERVICE_TYPE and CharacterCreate.gameModeSelectionMode ) then
return;
end
if ( PAID_SERVICE_TYPE ) then
GlueDialog_Show("CONFIRM_PAID_SERVICE");
else
message("DEBUG: old path CreateCharacter (no outfitId!)");
CreateCharacter(CharacterCreateNameEdit:GetText());
end
CharacterCreate.personalizationMode = false;
CharacterCreate.gameModeSelectionMode = false;
PlaySound("gsCharacterCreationCreateChar");
end
function CharacterCreate_Back()
if (CharacterCreate.personalizationMode == true) then
if (CharacterCreate.gameModeSelectionMode == true) then
CharacterCreate.gameModeSelectionMode = false;
CharacterCreate_UpdatePersonalizationStep();
return;
end
CharacterCreate_TogglePersonalization();
CharacterCreate.personalizationMode = false;
return;
@@ -1482,6 +1638,7 @@ end
function CharacterCreate_ResetState()
CharacterCreate.personalizationMode = false;
CharacterCreate.gameModeSelectionMode = false;
CharacterCreateRaceButtonsContainer:Show();
CharacterCreateClassButtonsContainer:Show();
CharacterCreateGenderButtonsContainer:Show();
@@ -1498,6 +1655,7 @@ function CharacterCreate_ResetState()
CharacterCreateRandomName:Hide();
CharCreatePersonalizeButton:Show();
CharCreateOkayButton:Hide();
CharacterCreate_UpdateGameModeVisibility();
for i=1, NUM_CHAR_CUSTOMIZATIONS do
_G["CharacterCustomizationButtonFrame"..i]:Hide();
@@ -187,6 +187,57 @@
</Button>
</Frames>
</Frame>
<!-- Game mode tile template -->
<Frame name="CharacterCreateGameModeTileTemplate" virtual="true" enableMouse="false">
<Size x="220" y="126"/>
<Layers>
<Layer level="BACKGROUND">
<Texture name="$parentBg">
<Anchors>
<Anchor point="TOPLEFT" x="4" y="-4"/>
<Anchor point="BOTTOMRIGHT" x="-4" y="4"/>
</Anchors>
</Texture>
</Layer>
<Layer level="ARTWORK">
<Texture name="$parentShade" file="Interface\Tooltips\UI-Tooltip-Background">
<Anchors>
<Anchor point="TOPLEFT" x="4" y="-4"/>
<Anchor point="BOTTOMRIGHT" x="-4" y="4"/>
</Anchors>
<Color r="0" g="0" b="0" a="0.18"/>
</Texture>
</Layer>
<Layer level="OVERLAY">
<FontString name="$parentTitle" inherits="GlueFontNormalLarge" justifyH="CENTER">
<Anchors>
<Anchor point="CENTER" x="0" y="16"/>
</Anchors>
</FontString>
</Layer>
</Layers>
<Frames>
<Button name="$parentPlayButton" inherits="GlueButtonSmallTemplate">
<Size x="120" y="26"/>
<Anchors>
<Anchor point="BOTTOM" x="0" y="12"/>
</Anchors>
</Button>
</Frames>
<Scripts>
<OnLoad>
self:SetBackdrop({
edgeFile = "Interface\\tooltips\\ui-tooltip-border-maw",
tile = true,
tileSize = 16,
edgeSize = 16,
insets = { left = 5, right = 5, top = 5, bottom = 5 }
});
self:SetBackdropBorderColor(0.92, 0.92, 0.92, 0.95);
</OnLoad>
</Scripts>
</Frame>
<ModelFFX name="CharacterCreate" toplevel="true" parent="GlueParent" setAllPoints="true" enableKeyboard="true" hidden="true">
<Frames>
<Frame name="CharacterCreateFrame" setAllPoints="true" enableMouse="true">
@@ -683,6 +734,40 @@
</HighlightTexture>
</Button>
<!-- Game mode selection -->
<Frame name="CharacterCreateGameModeFrame" hidden="true">
<Size x="520" y="190"/>
<Anchors>
<Anchor point="BOTTOM" relativeTo="CharacterCreateNameEdit" relativePoint="TOP" x="0" y="26"/>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<FontString name="CharacterCreateGameModeFrameTitle" inherits="GlueFontNormalLarge" justifyH="CENTER">
<Anchors>
<Anchor point="TOP" x="0" y="0"/>
</Anchors>
</FontString>
<FontString name="CharacterCreateGameModeFrameSubtitle" inherits="GlueFontHighlightSmall" justifyH="CENTER">
<Anchors>
<Anchor point="TOP" relativeTo="CharacterCreateGameModeFrameTitle" relativePoint="BOTTOM" x="0" y="-6"/>
</Anchors>
</FontString>
</Layer>
</Layers>
<Frames>
<Frame name="CharacterCreateGameModeNormal" inherits="CharacterCreateGameModeTileTemplate">
<Anchors>
<Anchor point="TOP" x="-120" y="-54"/>
</Anchors>
</Frame>
<Frame name="CharacterCreateGameModeTraitor" inherits="CharacterCreateGameModeTileTemplate">
<Anchors>
<Anchor point="TOP" x="120" y="-54"/>
</Anchors>
</Frame>
</Frames>
</Frame>
<Button name="CharCreatePersonalizeButton" inherits="GlueButtonTemplate" text="CHARACTER_CREATE_CUSTOMIZE">
<Anchors>
<Anchor point="BOTTOMRIGHT" x="-40" y="20"/>
@@ -8,6 +8,163 @@ CHARACTER_ROTATION_CONSTANT = 0.6;
MAX_CHARACTERS_DISPLAYED = 8;
MAX_CHARACTERS_PER_REALM = 8;
GAMEMODE_CHARACTER_FLAG_TRAITOR = 0x40000000;
CHARACTER_SELECT_DEBUG_CHARFLAGS = true;
local function CharacterSelect_HasFlag(charFlags, flagMask)
if ( type(charFlags) ~= "number" or type(flagMask) ~= "number" ) then
return false;
end
if ( bit and bit.band ) then
return bit.band(charFlags, flagMask) ~= 0;
end
if ( bit32 and bit32.band ) then
return bit32.band(charFlags, flagMask) ~= 0;
end
return math.floor(charFlags / flagMask) % 2 == 1;
end
local function CharacterSelect_IsTraitorCharacter(charFlags)
return CharacterSelect_HasFlag(charFlags, GAMEMODE_CHARACTER_FLAG_TRAITOR);
end
local function CharacterSelect_FormatCharFlags(charFlags)
if ( type(charFlags) ~= "number" ) then
return "nil";
end
charFlags = math.floor(charFlags);
return tostring(charFlags).." ("..format("0x%X", charFlags)..")";
end
local function CharacterSelect_GetCharacterInfoDebug(index)
local info = { GetCharacterInfo(index) };
local count = table.getn(info);
local parts = {};
for i = 1, count do
parts[i] = tostring(info[i]);
end
return info, count, table.concat(parts, " | ");
end
local function CharacterSelect_GetDisplayName(index)
local info = { GetCharacterInfo(index) };
local name = info[1];
local charFlags = info[11];
if ( not name ) then
return "";
end
if ( CharacterSelect_IsTraitorCharacter(charFlags) ) then
return name.." |cffd9534f[Предатель]|r";
end
return name;
end
local function CharacterSelect_ResetTraitorVisuals(button, buttonIndex)
if ( not button ) then
return;
end
local generalBg = _G["CharSelectCharacterButton"..buttonIndex.."GeneralBackground"];
if ( generalBg ) then
generalBg:SetVertexColor(1, 1, 1);
end
local background = _G["CharSelectCharacterButton"..buttonIndex.."Background"];
if ( background ) then
background:SetVertexColor(1, 1, 1);
end
local traitorGlow = _G["CharSelectCharacterButton"..buttonIndex.."TraitorGlow"];
if ( traitorGlow ) then
traitorGlow:Hide();
end
local traitorBadge = _G["CharSelectCharacterButton"..buttonIndex.."TraitorBadge"];
if ( traitorBadge ) then
traitorBadge:Hide();
end
local debugFlagsText = _G["CharSelectCharacterButton"..buttonIndex.."DebugFlags"];
if ( debugFlagsText ) then
debugFlagsText:Hide();
end
end
local function CharacterSelect_UpdateTraitorVisuals(button, buttonIndex, isTraitor)
if ( not button ) then
return;
end
CharacterSelect_ResetTraitorVisuals(button, buttonIndex);
if ( not isTraitor ) then
return;
end
local generalBg = _G["CharSelectCharacterButton"..buttonIndex.."GeneralBackground"];
if ( generalBg ) then
generalBg:SetVertexColor(1, 0.78, 0.78);
end
local background = _G["CharSelectCharacterButton"..buttonIndex.."Background"];
if ( background ) then
background:SetVertexColor(1, 0.72, 0.72);
end
local traitorGlow = _G["CharSelectCharacterButton"..buttonIndex.."TraitorGlow"];
if ( not traitorGlow ) then
traitorGlow = button:CreateTexture("CharSelectCharacterButton"..buttonIndex.."TraitorGlow", "OVERLAY", nil, 4);
traitorGlow:ClearAllPoints();
traitorGlow:SetPoint("TOPLEFT", button, "TOPLEFT", -18, 6);
traitorGlow:SetSize(256, 70);
traitorGlow:SetTexture("Interface\\Glues\\CharacterSelect\\Glue-CharacterSelect-Highlight");
traitorGlow:SetBlendMode("ADD");
end
traitorGlow:SetVertexColor(1, 0.18, 0.18);
traitorGlow:SetAlpha(0.55);
traitorGlow:Show();
local traitorBadge = _G["CharSelectCharacterButton"..buttonIndex.."TraitorBadge"];
if ( not traitorBadge ) then
traitorBadge = button:CreateFontString("CharSelectCharacterButton"..buttonIndex.."TraitorBadge", "OVERLAY", "GlueFontNormalSmall");
traitorBadge:ClearAllPoints();
traitorBadge:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -18, 10);
traitorBadge:SetFont("Fonts\\FRIZQT__.TTF", 10, "OUTLINE");
end
traitorBadge:SetText("ПРЕДАТЕЛЬ");
traitorBadge:SetTextColor(1, 0.25, 0.25);
traitorBadge:Show();
end
local function CharacterSelect_UpdateDebugCharFlags(button, buttonIndex, charFlags)
local debugFlagsText = _G["CharSelectCharacterButton"..buttonIndex.."DebugFlags"];
if ( not debugFlagsText ) then
debugFlagsText = button:CreateFontString("CharSelectCharacterButton"..buttonIndex.."DebugFlags", "OVERLAY", "GlueFontDisableSmall");
debugFlagsText:ClearAllPoints();
debugFlagsText:SetPoint("BOTTOMLEFT", button, "BOTTOMLEFT", 0, 8);
debugFlagsText:SetWidth(170);
debugFlagsText:SetJustifyH("LEFT");
debugFlagsText:SetWordWrap(false);
debugFlagsText:SetFont("Fonts\\FRIZQT__.TTF", 8, "OUTLINE");
end
if ( CHARACTER_SELECT_DEBUG_CHARFLAGS ) then
debugFlagsText:SetText("flags="..CharacterSelect_FormatCharFlags(charFlags));
debugFlagsText:SetTextColor(0.8, 0.8, 0.8);
debugFlagsText:Show();
else
debugFlagsText:Hide();
end
end
function CharacterSelect_OnLoad(self)
@@ -339,13 +496,13 @@ function CharacterSelect_OnEvent(self, event, ...)
UpdateAddonButton();
elseif ( event == "CHARACTER_LIST_UPDATE" ) then
UpdateCharacterList();
CharSelectCharacterName:SetText(GetCharacterInfo(self.selectedIndex));
CharSelectCharacterName:SetText(CharacterSelect_GetDisplayName(self.selectedIndex));
elseif ( event == "UPDATE_SELECTED_CHARACTER" ) then
local index = ...;
if ( index == 0 ) then
CharSelectCharacterName:SetText("");
else
CharSelectCharacterName:SetText(GetCharacterInfo(index));
CharSelectCharacterName:SetText(CharacterSelect_GetDisplayName(index));
self.selectedIndex = index;
end
UpdateCharacterSelection(self);
@@ -393,10 +550,12 @@ function UpdateCharacterList()
local numChars = GetNumCharacters();
local index = 1;
local coords;
local debugCharFlagsLines = {};
for i = 1, MAX_CHARACTERS_DISPLAYED do
local button = _G["CharSelectCharacterButton"..i];
button:Show();
CharacterSelect_ResetTraitorVisuals(button, i);
end
_G["CharacterSelectCharacterFrame"]:SetHeight(620);
@@ -532,7 +691,18 @@ function UpdateCharacterList()
};
for i=1, numChars, 1 do
local name, race, class, level, zone, sex, ghost, PCC, PRC, PFC = GetCharacterInfo(i);
local info, infoCount, infoDebug = CharacterSelect_GetCharacterInfoDebug(i);
local name = info[1];
local race = info[2];
local class = info[3];
local level = info[4];
local zone = info[5];
local sex = info[6];
local ghost = info[7];
local PCC = info[8];
local PRC = info[9];
local PFC = info[10];
local charFlags = info[11];
local button = _G["CharSelectCharacterButton"..index];
if ( not name ) then
@@ -581,6 +751,18 @@ function UpdateCharacterList()
factionIcon:SetTexture(FACTION_ICONS["Horde"]);
end
factionIcon:Show();
CharacterSelect_UpdateTraitorVisuals(button, index, CharacterSelect_IsTraitorCharacter(charFlags));
CharacterSelect_UpdateDebugCharFlags(button, index, charFlags);
if ( CHARACTER_SELECT_DEBUG_CHARFLAGS ) then
table.insert(
debugCharFlagsLines,
"#" .. tostring(i) ..
" " .. tostring(name) ..
" returns=" .. tostring(infoCount) ..
" flags=" .. CharacterSelect_FormatCharFlags(charFlags) ..
" raw=[" .. infoDebug .. "]"
);
end
-- Nombre
local nameText = _G["CharSelectCharacterButton"..index.."ButtonTextName"];
@@ -741,6 +923,15 @@ function UpdateCharacterList()
_G["CharSelectFactionChange"..i]:Hide();
button:Show();
CharacterSelect_ResetTraitorVisuals(button, i);
end
if ( CHARACTER_SELECT_DEBUG_CHARFLAGS and table.getn(debugCharFlagsLines) > 0 ) then
local debugCharFlagsMessage = table.concat(debugCharFlagsLines, "\n");
if ( CharacterSelect.lastCharFlagsDebugMessage ~= debugCharFlagsMessage ) then
CharacterSelect.lastCharFlagsDebugMessage = debugCharFlagsMessage;
message("CHAR_ENUM charFlags debug:\n" .. debugCharFlagsMessage);
end
end
if ( numChars == 0 ) then
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 136 KiB

Some files were not shown because too many files have changed in this diff Show More