Commit 819e0b70 authored by TOM_RUS's avatar TOM_RUS
Browse files

WOW-36512patch9.0.2_Beta

parent b8655359
......@@ -105,6 +105,7 @@ local CovenantPreview =
{ Name = "uiTextureKit", Type = "string", Nilable = false },
{ Name = "name", Type = "string", Nilable = false },
{ Name = "description", Type = "string", Nilable = false },
{ Name = "sortOrder", Type = "number", Nilable = false },
},
},
},
......
......@@ -146,8 +146,8 @@ local CurrencyConstants =
{ Name = "GarrisonTalentTreeReset", Type = "CurrencySource", EnumValue = 44 },
{ Name = "DailyReset", Type = "CurrencySource", EnumValue = 45 },
{ Name = "AddConduitToCollection", Type = "CurrencySource", EnumValue = 46 },
{ Name = "Last", Type = "CurrencySource", EnumValue = 47 },
{ Name = "Barbershop", Type = "CurrencySource", EnumValue = 48 },
{ Name = "Barbershop", Type = "CurrencySource", EnumValue = 47 },
{ Name = "Last", Type = "CurrencySource", EnumValue = 48 },
},
},
{
......
......@@ -357,14 +357,6 @@ local GarrisonConstants =
{ Name = "Type_9_0", Type = "GarrisonType", EnumValue = 111 },
},
},
{
Name = "GarrisonConstsExposed",
Type = "Constants",
Values =
{
{ Name = "GARRISON_AUTO_COMBATANT_FULL_HEAL_COST", Type = "number", Value = 100 },
},
},
},
};
......
......@@ -560,6 +560,15 @@ local GarrisonInfo =
{ Name = "followerDurability", Type = "number", Nilable = false },
},
},
{
Name = "GarrisonFollowerHealed",
Type = "Event",
LiteralName = "GARRISON_FOLLOWER_HEALED",
Payload =
{
{ Name = "followerID", Type = "string", Nilable = false },
},
},
{
Name = "GarrisonFollowerListUpdate",
Type = "Event",
......@@ -1086,6 +1095,7 @@ local GarrisonInfo =
{ Name = "maxHealth", Type = "number", Nilable = false },
{ Name = "attack", Type = "number", Nilable = false },
{ Name = "healingTimestamp", Type = "number", Nilable = false },
{ Name = "healCost", Type = "number", Nilable = false },
},
},
{
......
......@@ -60,6 +60,11 @@ local PlayerMentorship =
Events =
{
{
Name = "MentorshipStatusChanged",
Type = "Event",
LiteralName = "MENTORSHIP_STATUS_CHANGED",
},
{
Name = "NewcomerGraduation",
Type = "Event",
......
......@@ -89,9 +89,9 @@ local ScenarioInfo =
{
Name = "JailersTowerType",
Type = "Enumeration",
NumValues = 11,
NumValues = 12,
MinValue = 0,
MaxValue = 10,
MaxValue = 11,
Fields =
{
{ Name = "TwistingCorridors", Type = "JailersTowerType", EnumValue = 0 },
......@@ -105,6 +105,7 @@ local ScenarioInfo =
{ Name = "TormentChamberJaina", Type = "JailersTowerType", EnumValue = 8 },
{ Name = "TormentChamberThrall", Type = "JailersTowerType", EnumValue = 9 },
{ Name = "TormentChamberAnduin", Type = "JailersTowerType", EnumValue = 10 },
{ Name = "AdamantVaults", Type = "JailersTowerType", EnumValue = 11 },
},
},
},
......
......@@ -28,7 +28,7 @@ function AdventureMap_MissionDataProviderMixin:OnEvent(event, ...)
end
elseif event == "GARRISON_MISSION_LIST_UPDATE" then
local followerType = ...;
if followerType == Enum.GarrisonFollowerType.FollowerType_7_0 then
if followerType == Enum.GarrisonFollowerType.FollowerType_7_0 or followerType == Enum.GarrisonFollowerType.FollowerType_9_0 then
self:RefreshAllData();
end
elseif event == "GARRISON_MISSION_FINISHED" then
......
......@@ -173,11 +173,13 @@ function BarberShopMixin:ResetCharacterRotation()
end
function BarberShopMixin:SetViewingAlteredForm(viewingAlteredForm, resetCategory)
self:RegisterEvent("BARBER_SHOP_CAMERA_VALUES_UPDATED");
C_BarberShop.SetViewingAlteredForm(viewingAlteredForm);
self:UpdateCharCustomizationFrame(resetCategory);
end
function BarberShopMixin:SetViewingShapeshiftForm(formID)
self:RegisterEvent("BARBER_SHOP_CAMERA_VALUES_UPDATED");
C_BarberShop.SetViewingShapeshiftForm(formID);
self.Sexes:SetShown(formID == nil);
end
......
......@@ -757,6 +757,8 @@ end
QuickKeybindFrameMixin = {};
function QuickKeybindFrameMixin:OnShow()
EventRegistry:TriggerEvent("QuickKeybindFrame.QuickKeybindModeEnabled");
self.characterSpecificButton:SetChecked(KeyBindingFrame.characterSpecificButton:GetChecked());
self.mouseOverButton = nil;
Enable_BagButtons();
......@@ -769,6 +771,8 @@ function QuickKeybindFrameMixin:OnShow()
end
function QuickKeybindFrameMixin:OnHide()
EventRegistry:TriggerEvent("QuickKeybindFrame.QuickKeybindModeDisabled");
KeybindFrames_ClearOutputText();
if ( not GameMenuFrame:IsShown() ) then
ShowUIPanel(KeyBindingFrame);
......
......@@ -166,6 +166,8 @@ function ChannelFrameMixin:OnEvent(event, ...)
self:MarkDirty("UpdateChannelList");
elseif event == "CHAT_MSG_CHANNEL_NOTICE" then
self:OnChannelNotice(...);
elseif event == "MENTORSHIP_STATUS_CHANGED" then
self:OnMentorshipStatusChanged();
end
end
......@@ -638,16 +640,33 @@ function ChannelFrameMixin:OnChannelNotice(...)
local channelIndex = select(8, ...);
if eventType == "YOU_CHANGED" and C_ChatInfo.GetChannelRuleset(channelIndex) == Enum.ChatChannelRuleset.Mentor then
local channelSlashCommand = GetSlashCommandForChannelOpenChat(channelIndex);
if IsActivePlayerNewcomer() then
ChatFrame_DisplaySystemMessageInPrimary(NPEV2_CHAT_WELCOME_TO_CHANNEL_NEWCOMER:format(channelSlashCommand));
ChatFrame_DisplaySystemMessageInPrimary(NPEV2_CHAT_WELCOME_TO_CHANNEL_NEWCOMER1:format(channelSlashCommand));
ChatFrame_DisplaySystemMessageInPrimary(NPEV2_CHAT_WELCOME_TO_CHANNEL_NEWCOMER2:format(channelSlashCommand));
else
-- NOTE: Guide flags won't be set at this point if the user is joining from the NPC, assume that if the channel join is happening,
-- then if you're not a newcomer, you must be a guide.
ChatFrame_DisplaySystemMessageInPrimary(NPEV2_CHAT_WELCOME_TO_CHANNEL_GUIDE:format(channelSlashCommand));
end
self:CheckNewcomerChannelJoin(channelIndex);
end
end
function ChannelFrameMixin:OnMentorshipStatusChanged()
if self.pendingNewcomerChannelIndex then
local channelIndex = self.pendingNewcomerChannelIndex;
self.pendingNewcomerChannelIndex = nil;
self:UnregisterEvent("MENTORSHIP_STATUS_CHANGED");
self:CheckNewcomerChannelJoin(channelIndex);
end
end
function ChannelFrameMixin:CheckNewcomerChannelJoin(channelIndex)
local channelSlashCommand = GetSlashCommandForChannelOpenChat(channelIndex);
if IsActivePlayerNewcomer() then
ChatFrame_DisplaySystemMessageInPrimary(NPEV2_CHAT_WELCOME_TO_CHANNEL_NEWCOMER:format(channelSlashCommand));
ChatFrame_DisplaySystemMessageInPrimary(NPEV2_CHAT_WELCOME_TO_CHANNEL_NEWCOMER1:format(channelSlashCommand));
ChatFrame_DisplaySystemMessageInPrimary(NPEV2_CHAT_WELCOME_TO_CHANNEL_NEWCOMER2:format(channelSlashCommand));
elseif IsActivePlayerMentor() then
-- NOTE: Guide flags won't be set at this point if the user is joining from the NPC, assume that if the channel join is happening,
-- then if you're not a newcomer, you must be a guide.
ChatFrame_DisplaySystemMessageInPrimary(NPEV2_CHAT_WELCOME_TO_CHANNEL_GUIDE:format(channelSlashCommand));
else
self.pendingNewcomerChannelIndex = channelIndex;
self:RegisterEvent("MENTORSHIP_STATUS_CHANGED");
end
end
......
......@@ -195,7 +195,7 @@ local rafHelpTipInfo = {
function CharacterCreateMixin:UpdateRecruitInfo()
local active, faction = C_RecruitAFriend.GetRecruitInfo();
if active and not self.paidServiceType and C_CharacterCreation.IsNewPlayerRestricted() then
if active and not self.paidServiceType and C_CharacterCreation.UseBeginnerMode() then
local recruiterIsHorde = (PLAYER_FACTION_GROUP[faction] == "Horde");
rafHelpTipInfo.text = recruiterIsHorde and RECRUIT_A_FRIEND_FACTION_SUGGESTION_HORDE or RECRUIT_A_FRIEND_FACTION_SUGGESTION_ALLIANCE;
rafHelpTipInfo.targetPoint = recruiterIsHorde and HelpTip.Point.RightEdgeCenter or HelpTip.Point.LeftEdgeCenter;
......@@ -448,7 +448,7 @@ function CharacterCreateMixin:SetMode(mode, instantRotate)
ClassTrialSpecs:SetShown(mode == CHAR_CREATE_MODE_CUSTOMIZE and (C_CharacterCreation.GetCharacterCreateType() == Enum.CharacterCreateType.TrialBoost));
NameChoiceFrame:SetShown(mode == CHAR_CREATE_MODE_CUSTOMIZE);
ZoneChoiceFrame:SetShown(mode == CHAR_CREATE_MODE_ZONE_CHOICE);
NewPlayerTutorial:SetShown(mode == CHAR_CREATE_MODE_CUSTOMIZE and C_CharacterCreation.IsNewPlayerRestricted());
NewPlayerTutorial:SetShown(mode == CHAR_CREATE_MODE_CUSTOMIZE and C_CharacterCreation.UseBeginnerMode());
self.currentMode = mode;
self.creatingCharacter = false;
......@@ -747,7 +747,7 @@ function CharacterCreateClassButtonMixin:SetClass(classData, selectedClassID)
local validAllianceRaceNames = {};
local validHordeRaceNames = {};
for _, raceData in ipairs(validRaces) do
if not raceData.isAlliedRace or not C_CharacterCreation.IsNewPlayerRestricted() then
if not raceData.isAlliedRace or not C_CharacterCreation.UseBeginnerMode() then
if raceData.isNeutralRace or (raceData.factionInternalName == "Alliance") then
tinsert(validAllianceRaceNames, raceData.name);
end
......@@ -865,10 +865,10 @@ function CharacterCreateRaceButtonMixin:SetRace(raceData, selectedSexID, selecte
end
self.RaceName.Text:SetText(raceData.name);
self.RaceName:SetShown(C_CharacterCreation.IsNewPlayerRestricted());
self.RaceName:SetShown(C_CharacterCreation.UseBeginnerMode());
if not raceData.isAlliedRace then
if C_CharacterCreation.IsNewPlayerRestricted() then
if C_CharacterCreation.UseBeginnerMode() then
self.tooltipXOffset = 16;
else
self.tooltipXOffset = 113;
......@@ -1021,8 +1021,9 @@ end
function CharacterCreateRaceAndClassMixin:OnShow()
local isNewPlayerRestricted = C_CharacterCreation.IsNewPlayerRestricted();
self.AllianceAlliedRaces:SetShown(not isNewPlayerRestricted);
self.HordeAlliedRaces:SetShown(not isNewPlayerRestricted);
local useNewPlayerMode = C_CharacterCreation.UseBeginnerMode();
self.AllianceAlliedRaces:SetShown(not useNewPlayerMode);
self.HordeAlliedRaces:SetShown(not useNewPlayerMode);
self.ClassTrialCheckButton:ClearTooltipLines();
self.ClassTrialCheckButton:AddTooltipLine(CHARACTER_TYPE_FRAME_TRIAL_BOOST_CHARACTER_TOOLTIP:format(C_CharacterCreation.GetTrialBoostStartingLevel()));
......
......@@ -1231,7 +1231,7 @@ end
function CardRightClickOptionsMenuInitialize(self, level)
if(self:GetParent():IsReported()) then
if(self:GetParent():IsReported() or not self:GetParent().cardInfo) then
return;
end
......
......@@ -362,8 +362,9 @@ function CommunitiesListMixin:OnCommunitiesFrameDisplayModeChanged()
end
function CommunitiesListMixin:OnCommunityInviteDeclined(invitationId, clubId)
local communitiesFrame = self:GetCommunitiesFrame();
self.declinedInvitationIds[#self.declinedInvitationIds + 1] = invitationId;
communitiesFrame:UpdateClubSelection();
self:GetCommunitiesFrame():UpdateClubSelection();
self:UpdateInvitations();
self:Update();
end
......
......@@ -169,6 +169,13 @@ function CovenantPreviewFrameMixin:TryShow(covenantInfo)
end);
end
if (covenantInfo.covenantSoulbinds and #covenantInfo.covenantSoulbinds > 1) then
table.sort(covenantInfo.covenantSoulbinds, function(a, b)
return CovenantPreviewSortFunction(a.sortOrder, b.sortOrder);
end);
end
self:SetupAbilityButtons(covenantInfo.covenantAbilities);
self:SetupSoulbindButtons(covenantInfo.covenantSoulbinds);
self:SetupCovenantInfoPanel(covenantInfo);
......@@ -248,6 +255,7 @@ end
CovenantAbilityButtonMixin = { };
function CovenantAbilityButtonMixin:OnEnter()
EmbeddedItemTooltip:Hide();
GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
GameTooltip:SetSpellByID(self.spellID);
GameTooltip:Show();
......@@ -274,6 +282,7 @@ function CovenantFeatureButtonMixin:Setup(covenantFeatureInfo)
end
function CovenantFeatureButtonMixin:OnEnter()
EmbeddedItemTooltip:Hide();
GameTooltip:SetOwner(self, "ANCHOR_RIGHT", -30, -30);
GameTooltip_AddHighlightLine(GameTooltip, self.name);
GameTooltip_AddNormalLine(GameTooltip, self.description);
......@@ -296,6 +305,8 @@ function CovenantSoulbindButtonMixin:OnEnter()
return;
end
GameTooltip:Hide();
local spell = Spell:CreateFromSpellID(self.spellID);
spell:ContinueOnSpellLoad(function()
EmbeddedItemTooltip:SetOwner(self, "ANCHOR_RIGHT", -12, -10);
......
......@@ -486,8 +486,8 @@ CovenantRenownTrackFrameMixin = {
elementTemplate = "CovenantRenownLevelTemplate",
scrollStartSound = SOUNDKIT.UI_COVENANT_RENOWN_SLIDE_START,
scrollLoopSound = SOUNDKIT.UI_COVENANT_RENOWN_SLIDE_LOOP,
scrollStopSound = SOUNDKIT.UI_COVENANT_RENOWN_SLIDE_STOP,
scrollCenterChangeSound = SOUNDKIT.UI_COVENANT_RENOWN_SLIDE_START,
};
function CovenantRenownTrackFrameMixin:OnLoad()
......@@ -588,6 +588,9 @@ function CovenantRenownTrackFrameMixin:RefreshView()
local leftIndex = math.max(1, centerIndex - self.numElementsPerHalf);
local rightIndex = math.min(centerIndex + self.numElementsPerHalf, self.numElements);
self:GetParent():OnTrackUpdate(leftIndex, centerIndex, rightIndex, self.moving);
if self.moving and self.scrollCenterChangeSound then
PlaySound(self.scrollCenterChangeSound, nil, SOUNDKIT_ALLOW_DUPLICATES);
end
end
self.LeftButton:SetEnabled(self.offset > 0);
......@@ -680,7 +683,7 @@ function CovenantRenownTrackButtonMixin:OnMouseDown()
local track = self:GetParent();
track:StartScroll(self.direction);
if track.scrollStartSound then
PlaySound(track.scrollStartSound);
PlaySound(track.scrollStartSound, nil, SOUNDKIT_ALLOW_DUPLICATES);
end
end
end
......
......@@ -86,10 +86,10 @@ end
local SOUND_KIT_BY_TEXTURE_KIT =
{
Kyrian = { default = 172612, [20] = 172613, [40] = 172614, },
Venthyr = { default = 172642, [20] = 172645, [40] = 172649, },
NightFae = { default = 172643, [20] = 172646, [40] = 172650, },
Necrolord = { default = 172644, [20] = 172648, [40] = 172651, },
Kyrian = { default = 172612, milestone = 172613, final = 172614, },
Venthyr = { default = 172642, milestone = 172645, final = 172649, },
NightFae = { default = 172643, milestone = 172646, final = 172650, },
Necrolord = { default = 172644, milestone = 172648, final = 172651, },
};
function CovenantRenownToastMixin:PlayBanner(data)
......@@ -118,7 +118,15 @@ function CovenantRenownToastMixin:PlayBanner(data)
self:SetupRewardVisuals(data.covenantID, data.renownLevel);
local soundKitData = SOUND_KIT_BY_TEXTURE_KIT[data.textureKit]
PlaySound(soundKitData[data.renownLevel] or soundKitData.default)
local levels = C_CovenantSanctumUI.GetRenownLevels(data.covenantID);
local levelInfo = levels[data.renownLevel];
local soundID = soundKitData.default;
if data.renownLevel == #levels then
soundID = soundKitData.final;
elseif levelInfo.isMilestone then
soundID = soundKitData.milestone;
end
PlaySound(soundID);
self.bannerData = data;
......
......@@ -1806,7 +1806,7 @@ function EncounterJournal_SetLootButton(item)
if itemInfo.weaponTypeError then
item.armorType:SetText(INVALID_EQUIPMENT_COLOR:WrapTextInColorCode(itemInfo.armorType));
else
item.armorType:SetText(itemInfo.slot);
item.armorType:SetText(itemInfo.armorType);
end
local numEncounters = EJ_GetNumEncountersForLootByIndex(item.index);
......@@ -2843,7 +2843,7 @@ end
function EJSuggestFrame_OnEvent(self, event, ...)
if ( event == "AJ_REFRESH_DISPLAY" ) then
if self:GetParent().selectedTab == self.id then
if self:GetParent().selectedTab == EncounterJournal.instanceSelect.suggestTab.id then
EJSuggestFrame_RefreshDisplay();
local newAdventureNotice = ...;
if ( newAdventureNotice ) then
......
......@@ -3,12 +3,19 @@ UIPanelWindows["FlightMapFrame"] = { area = "center", pushable = 1, showFailedFu
FlightMapMixin = {};
function FlightMapMixin:SetupTitle()
self.BorderFrame.TitleText:SetText(FLIGHT_MAP);
self.BorderFrame.Bg:SetColorTexture(0, 0, 0, 1);
self.BorderFrame.Bg:SetParent(self);
self.BorderFrame.TopTileStreaks:Hide();
self:ResetTitleAndPortraitIcon();
end
function FlightMapMixin:ResetTitleAndPortraitIcon()
self:UpdateTitleAndPortraitIcon(FLIGHT_MAP, [[Interface/Icons/icon_petfamily_flying]]);
end
self.BorderFrame:SetPortraitToAsset([[Interface/Icons/icon_petfamily_flying]]);
function FlightMapMixin:UpdateTitleAndPortraitIcon(titleText, portraitIcon)
self.BorderFrame.TitleText:SetText(titleText);
self.BorderFrame:SetPortraitToAsset(portraitIcon);
end
function FlightMapMixin:OnLoad()
......
......@@ -7,6 +7,7 @@ end
function FlightMap_FlightPathDataProviderMixin:RemoveAllData()
self:GetMap():RemoveAllPinsByTemplate("FlightMap_FlightPointPinTemplate");
self:GetMap():ResetTitleAndPortraitIcon();
if self.highlightLinePool then
self.highlightLinePool:ReleaseAll();
end
......@@ -22,10 +23,19 @@ function FlightMap_FlightPathDataProviderMixin:RefreshAllData(fromOnShow)
self:CalculateLineThickness();
local bastionNodeFound = false;
local mapID = self:GetMap():GetMapID();
local taxiNodes = C_TaxiMap.GetAllTaxiNodes(mapID);
for i, taxiNodeData in ipairs(taxiNodes) do
self:AddFlightNode(taxiNodeData);
if taxiNodeData.textureKit == "FlightMaster_Bastion" then
bastionNodeFound = true;
end
end
if bastionNodeFound then
self:GetMap():UpdateTitleAndPortraitIcon(FLIGHT_MAP_BASTION, [[Interface/Icons/achievement_guildperk_havegroup willtravel]]);
end
self:ShowBackgroundRoutesFromCurrent();
......@@ -171,9 +181,6 @@ FlightMap_FlightPointPinMixin = CreateFromMixins(MapCanvasPinMixin);
function FlightMap_FlightPointPinMixin:OnLoad()
self:SetScalingLimits(1.25, 0.9625, 1.275);
-- Flight points nudge other pins away.
self:SetNudgeSourceRadius(1);
self:UseFrameLevelType("PIN_FRAME_LEVEL_FLIGHT_POINT");
end
......@@ -256,8 +263,8 @@ end
function FlightMap_FlightPointPinMixin:SetFlightPathStyle(textureKit, taxiNodeType)
self.textureKit = textureKit;
self:SetNudgeSourceMagnitude(nil, nil);
self:SetNudgeSourceRadius(1);
self:SetNudgeSourceMagnitude(1, 2);
if textureKit then
self.atlasFormat = textureKit.."-%s";
......
......@@ -100,11 +100,6 @@ end
function CovenantFollowerTabMixin:UpdateValidSpellHighlightOnAbilityFrame()
end
function CovenantFollowerTabMixin:CalculateHealCost()
local followerStats = self.followerInfo.autoCombatantStats;
return math.ceil(((followerStats.maxHealth - followerStats.currentHealth) / followerStats.maxHealth) * Constants.GarrisonConstsExposed.GARRISON_AUTO_COMBATANT_FULL_HEAL_COST);
end
function CovenantFollowerTabMixin:UpdateHealCost()
self.HealFollowerFrame.HealFollowerButton.tooltip = nil;
self:HideHealFollowerTutorial();
......@@ -114,16 +109,23 @@ function CovenantFollowerTabMixin:UpdateHealCost()
return;
end
local buttonCost = self:CalculateHealCost();
self.HealFollowerFrame.CostFrame.Cost:SetText(buttonCost);
local buttonCost = self.followerInfo.autoCombatantStats.healCost;
if (buttonCost == 0) then
self.HealFollowerFrame.CostFrame.Cost:SetText(buttonCost);
self.HealFollowerFrame.HealFollowerButton:SetEnabled(false);
self.HealFollowerFrame.HealFollowerButton.tooltip = COVENANT_MISSIONS_HEAL_ERROR_FULL_HEALTH;
StaticPopup_Hide("COVENANT_MISSIONS_HEAL_CONFIRMATION");
else
local _, secondaryCurrency = C_Garrison.GetCurrencyTypes(GarrisonFollowerOptions[self.followerInfo.followerTypeID].garrisonType);
local currencyInfo = C_CurrencyInfo.GetCurrencyInfo(secondaryCurrency);
if (currencyInfo.quantity < buttonCost) then
self.HealFollowerFrame.CostFrame.Cost:SetText(RED_FONT_COLOR_CODE..buttonCost..FONT_COLOR_CODE_CLOSE);
else
self.HealFollowerFrame.CostFrame.Cost:SetText(buttonCost);
end
if (buttonCost > currencyInfo.quantity) then
self.HealFollowerFrame.HealFollowerButton:SetEnabled(false);
self.HealFollowerFrame.HealFollowerButton.tooltip = COVENANT_MISSIONS_HEAL_ERROR_RESOURCES;
......@@ -703,8 +705,8 @@ function CovenantPortraitMixin:SetupPortrait(followerInfo)
self.HealthBar:Show();
self.HealthBar:SetScale(0.7);
self.LevelText:SetText(followerInfo.level);
self.HealthBar:SetMaxHealth(followerInfo.autoCombatantStats.maxHealth);
self.HealthBar:SetHealth(followerInfo.autoCombatantStats.currentHealth);
self.HealthBar:SetMaxHealth(followerInfo.autoCombatantStats and followerInfo.autoCombatantStats.maxHealth or 1);
self.HealthBar:SetHealth(followerInfo.autoCombatantStats and followerInfo.autoCombatantStats.currentHealth or 1);
self.HealthBar:SetRole(followerInfo.role);
local puckBorderAtlas = followerInfo.isAutoTroop and "Adventurers-Followers-Frame-Troops" or "Adventurers-Followers-Frame";
self.PuckBorder:SetAtlas(puckBorderAtlas);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment