v1.0.0.15: Top/Bottom Info Bars, Repair %, order, fonts, colors

Made-with: Cursor
This commit is contained in:
2026-03-01 11:49:46 -05:00
parent b4638eb60b
commit e160af2ab5
9 changed files with 430 additions and 16 deletions
+43
View File
@@ -0,0 +1,43 @@
using System;
using FFXIVClientStructs.FFXIV.Client.Game;
namespace Mappy.Data;
/// <summary>
/// Returns the condition percentage of the player's most damaged equipped item.
/// Uses the same logic as RepairMe (chalkos/RepairMe): raw condition / 300.
/// </summary>
public static class EquipmentConditionHelper
{
private const uint EquipmentContainerSize = 13;
/// <summary>
/// Gets the lowest condition percent among equipped items (0100+).
/// Returns 100 if no gear or unavailable (e.g. not logged in).
/// </summary>
public static unsafe float GetLowestConditionPercent()
{
var inventoryManager = InventoryManager.Instance();
if (inventoryManager == null) return 100f;
var equipmentContainer = inventoryManager->GetInventoryContainer(InventoryType.EquippedItems);
if (equipmentContainer == null) return 100f;
var inventoryItem = equipmentContainer->GetInventorySlot(0);
if (inventoryItem == null) return 100f;
ushort lowestCondition = 60000; // max raw condition is 30000
var foundAny = false;
for (var i = 0; i < EquipmentContainerSize; i++, inventoryItem++)
{
if (inventoryItem->ItemId == 0) continue;
foundAny = true;
if (lowestCondition > inventoryItem->Condition)
lowestCondition = inventoryItem->Condition;
}
return foundAny ? lowestCondition / 300f : 100f;
}
}