Updated to Risa's changes

This commit is contained in:
2025-08-10 12:48:02 +03:00
parent 0a0ae4bee9
commit 9730de1ba4
59 changed files with 302 additions and 2810 deletions

View File

@@ -1,4 +1,4 @@
<Project Sdk="Dalamud.NET.Sdk/12.0.2">
<Project Sdk="Dalamud.NET.Sdk/13.0.0">
<PropertyGroup>
<ImplicitUsings>enable</ImplicitUsings>

View File

@@ -0,0 +1,14 @@
using Penumbra.GameData.Interop;
namespace CustomizePlus.GameData.Extensions;
public static unsafe class ActorExtensions
{
/// <summary>
/// Returns if this actor is currently being rendered by the game or only exists as invisible object table entry.
/// </summary>
public static bool IsRenderedByGame(this Actor actor)
{
return actor.AsCharacter->DrawObject != null && actor.Model.AsCharacterBase != null;
}
}

View File

@@ -6,20 +6,23 @@ using System.Collections.Frozen;
using System.Diagnostics.CodeAnalysis;
using CustomizePlus.GameData.ReverseSearchDictionaries.Bases;
using Lumina.Excel.Sheets;
using Dalamud.Game.ClientState.Objects.Enums;
namespace CustomizePlus.GameData.ReverseSearchDictionaries;
#pragma warning disable SeStringEvaluator
/// <summary> A dictionary that matches names to battle npc ids. </summary>
public sealed class ReverseSearchDictBNpc(IDalamudPluginInterface pluginInterface, Logger log, IDataManager gameData)
: ReverseNameDictionary(pluginInterface, log, gameData, "ReverseSearchBNpcs", Penumbra.GameData.DataContainers.Version.DictBNpc, () => CreateBNpcData(gameData))
public sealed class ReverseSearchDictBNpc(IDalamudPluginInterface pluginInterface, Logger log, IDataManager gameData, ISeStringEvaluator evaluator)
: ReverseNameDictionary(pluginInterface, log, gameData, "ReverseSearchBNpcs", Penumbra.GameData.DataContainers.Version.DictBNpc, () => CreateBNpcData(gameData, evaluator))
{
/// <summary> Create the data. </summary>
private static IReadOnlyDictionary<string, uint> CreateBNpcData(IDataManager gameData)
private static IReadOnlyDictionary<string, uint> CreateBNpcData(IDataManager gameData, ISeStringEvaluator evaluator)
{
var sheet = gameData.GetExcelSheet<BNpcName>(gameData.Language)!;
var dict = new Dictionary<string, uint>((int)sheet.Count);
foreach (var n in sheet.Where(n => n.Singular.ByteLength > 0))
dict.TryAdd(DataUtility.ToTitleCaseExtended(n.Singular, (Dalamud.Game.ClientLanguage)n.Article), n.RowId);
dict.TryAdd(evaluator.EvaluateObjStr(ObjectKind.BattleNpc, n.RowId, gameData.Language), n.RowId);
return dict.ToFrozenDictionary();
}

View File

@@ -6,20 +6,23 @@ using System.Collections.Frozen;
using System.Diagnostics.CodeAnalysis;
using CustomizePlus.GameData.ReverseSearchDictionaries.Bases;
using Lumina.Excel.Sheets;
using Dalamud.Game.ClientState.Objects.Enums;
namespace CustomizePlus.GameData.ReverseSearchDictionaries;
#pragma warning disable SeStringEvaluator
/// <summary> A dictionary that matches companion names to their ids. </summary>
public sealed class ReverseSearchDictCompanion(IDalamudPluginInterface pluginInterface, Logger log, IDataManager gameData)
: ReverseNameDictionary(pluginInterface, log, gameData, "ReverseSearchCompanions", Penumbra.GameData.DataContainers.Version.DictCompanion, () => CreateCompanionData(gameData))
public sealed class ReverseSearchDictCompanion(IDalamudPluginInterface pluginInterface, Logger log, IDataManager gameData, ISeStringEvaluator evaluator)
: ReverseNameDictionary(pluginInterface, log, gameData, "ReverseSearchCompanions", Penumbra.GameData.DataContainers.Version.DictCompanion, () => CreateCompanionData(gameData, evaluator))
{
/// <summary> Create the data. </summary>
private static IReadOnlyDictionary<string, uint> CreateCompanionData(IDataManager gameData)
private static IReadOnlyDictionary<string, uint> CreateCompanionData(IDataManager gameData, ISeStringEvaluator evaluator)
{
var sheet = gameData.GetExcelSheet<Companion>(gameData.Language)!;
var dict = new Dictionary<string, uint>((int)sheet.Count);
foreach (var c in sheet.Where(c => c.Singular.ByteLength > 0 && c.Order < ushort.MaxValue))
dict.TryAdd(DataUtility.ToTitleCaseExtended(c.Singular, (Dalamud.Game.ClientLanguage)c.Article), c.RowId);
dict.TryAdd(evaluator.EvaluateObjStr(ObjectKind.Companion, c.RowId, gameData.Language), c.RowId);
return dict.ToFrozenDictionary();
}

View File

@@ -6,20 +6,23 @@ using System.Collections.Frozen;
using System.Diagnostics.CodeAnalysis;
using CustomizePlus.GameData.ReverseSearchDictionaries.Bases;
using Lumina.Excel.Sheets;
using Dalamud.Game.ClientState.Objects.Enums;
namespace CustomizePlus.GameData.ReverseSearchDictionaries;
#pragma warning disable SeStringEvaluator
/// <summary> A dictionary that matches names to event npc ids. </summary>
public sealed class ReverseSearchDictENpc(IDalamudPluginInterface pluginInterface, Logger log, IDataManager gameData)
: ReverseNameDictionary(pluginInterface, log, gameData, "ReverseSearchENpcs", Penumbra.GameData.DataContainers.Version.DictENpc, () => CreateENpcData(gameData))
public sealed class ReverseSearchDictENpc(IDalamudPluginInterface pluginInterface, Logger log, IDataManager gameData, ISeStringEvaluator evaluator)
: ReverseNameDictionary(pluginInterface, log, gameData, "ReverseSearchENpcs", Penumbra.GameData.DataContainers.Version.DictENpc, () => CreateENpcData(gameData, evaluator))
{
/// <summary> Create the data. </summary>
private static IReadOnlyDictionary<string, uint> CreateENpcData(IDataManager gameData)
private static IReadOnlyDictionary<string, uint> CreateENpcData(IDataManager gameData, ISeStringEvaluator evaluator)
{
var sheet = gameData.GetExcelSheet<ENpcResident>(gameData.Language)!;
var dict = new Dictionary<string, uint>((int)sheet.Count);
foreach (var n in sheet.Where(e => e.Singular.ByteLength > 0))
dict.TryAdd(DataUtility.ToTitleCaseExtended(n.Singular, (Dalamud.Game.ClientLanguage)n.Article), n.RowId);
dict.TryAdd(evaluator.EvaluateObjStr(ObjectKind.EventNpc, n.RowId, gameData.Language), n.RowId);
return dict.ToFrozenDictionary();
}

View File

@@ -29,7 +29,7 @@ public sealed class ReverseSearchDictMount(IDalamudPluginInterface pluginInterfa
{
if (m.Singular.ByteLength > 0 && m.Order >= 0)
{
dict.TryAdd(DataUtility.ToTitleCaseExtended(m.Singular, (Dalamud.Game.ClientLanguage)m.Article), m.RowId);
dict.TryAdd(DataUtility.ToTitleCaseExtended(m.Singular, gameData.Language), m.RowId);
}
else if (m.Unknown1.ByteLength > 0)
{