Skip to content

Commit

Permalink
Sanity check equipment ids coming from lumina
Browse files Browse the repository at this point in the history
Fixes #353
  • Loading branch information
Yuki-Codes committed May 13, 2021
1 parent be3c0d2 commit 19587be
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion Anamnesis/Extensions/LuminaExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,19 @@ namespace Lumina
using System.Windows.Media.Imaging;
using Anamnesis.Character.Utilities;
using Anamnesis.GameData;

using global::Lumina.Data.Files;
using global::Lumina.Excel.GeneratedSheets;
using global::Lumina.Extensions;
using Serilog;
using LuminaData = global::Lumina.GameData;

public static class LuminaExtensions
{
public static IItem GetItem(ItemSlots slot, ulong val)
{
if (val == 0)
return ItemUtility.NoneItem;

short modelSet;
short modelBase;
short modelVariant;
Expand All @@ -37,6 +40,16 @@ public static IItem GetItem(ItemSlots slot, ulong val)
modelVariant = (short)(val >> 16);
}

// Some NPC's seem to have invalid equipment ids? or atleast ids that dont work as we expect.
if (modelSet < 0 || modelBase < 0 || modelVariant < 0)
{
Log.Information($"Invalid item value: {val}");

modelSet = 0;
modelBase = 0;
modelVariant = 0;
}

return ItemUtility.GetItem(slot, (ushort)modelSet, (ushort)modelBase, (ushort)modelVariant);
}

Expand Down

0 comments on commit 19587be

Please sign in to comment.