diff --git a/Mappy/Classes/DrawHelpers.cs b/Mappy/Classes/DrawHelpers.cs index 19e5338..8772576 100644 --- a/Mappy/Classes/DrawHelpers.cs +++ b/Mappy/Classes/DrawHelpers.cs @@ -127,6 +127,12 @@ private static void DrawIcon(MarkerInfo markerInfo) { var iconScale = System.SystemConfig.IconScale; + // Make boss markers a bit chonkier because it looks better that way + if (markerInfo.IconId is 60401 or 60402) { + scale *= 3.0f; + scale /= GetMapScaleFactor(); + } + // Fixed scale not supported for map region markers if (IsRegionIcon(markerInfo.IconId)) { scale = markerInfo.Scale; diff --git a/Mappy/MapRenderer/MapRenderer.GameObject.cs b/Mappy/MapRenderer/MapRenderer.GameObject.cs index 328d002..062d67b 100644 --- a/Mappy/MapRenderer/MapRenderer.GameObject.cs +++ b/Mappy/MapRenderer/MapRenderer.GameObject.cs @@ -8,6 +8,7 @@ using FFXIVClientStructs.FFXIV.Client.Game.Object; using FFXIVClientStructs.FFXIV.Client.UI.Agent; using ImGuiNET; +using Lumina.Excel.GeneratedSheets2; using Mappy.Classes; using Mappy.Extensions; using ObjectKind = Dalamud.Game.ClientState.Objects.Enums.ObjectKind; @@ -39,6 +40,8 @@ private unsafe void DrawGameObjects() { IconId = obj.ObjectKind switch { ObjectKind.Player when GroupManager.Instance()->MainGroup.MemberCount is 0 && System.SystemConfig.ShowPlayers => 60421, ObjectKind.Player when System.SystemConfig.ShowPlayers => 60444, + ObjectKind.BattleNpc when IsBoss(obj) && obj.TargetObject is null => 60402, + ObjectKind.BattleNpc when IsBoss(obj) && obj.TargetObject is not null => 60401, ObjectKind.BattleNpc when obj is { SubKind: (int) BattleNpcSubKind.Enemy, TargetObject: not null } => 60422, ObjectKind.BattleNpc when obj is { SubKind: (int) BattleNpcSubKind.Enemy, TargetObject: null } => 60424, ObjectKind.BattleNpc when obj.SubKind == (int) BattleNpcSubKind.Pet => 60961, @@ -52,6 +55,7 @@ ObjectKind.EventObj when IsAetherCurrent(obj) => 60653, }); } } + private void DrawRadar(IPlayerCharacter gameObjectCenter) { var position = ImGui.GetWindowPos() + DrawPosition + @@ -85,4 +89,7 @@ private unsafe bool IsAetherCurrent(IGameObject gameObject) { if (csEventObject->EventHandler is null) return false; return csEventObject->EventHandler->Info.EventId.ContentId == EventHandlerType.AetherCurrent; } + + private bool IsBoss(IGameObject chara) + => Service.DataManager.GetExcelSheet()!.GetRow(chara.DataId)?.Rank is 1 or 2 or 6; }