diff --git a/Dalamud/Game/Text/Evaluator/SeStringEvaluator.cs b/Dalamud/Game/Text/Evaluator/SeStringEvaluator.cs
index 47c4b5899..6c768cfa1 100644
--- a/Dalamud/Game/Text/Evaluator/SeStringEvaluator.cs
+++ b/Dalamud/Game/Text/Evaluator/SeStringEvaluator.cs
@@ -1744,7 +1744,7 @@ internal class SeStringEvaluator : IServiceType, ISeStringEvaluator
return false;
case TextParameterType.String:
- this.EvaluateAndAppendTo(builder, p.StringValue.AsReadOnlySeStringSpan(), null, language);
+ this.EvaluateAndAppendTo(builder, p.StringValue.AsSpan(), null, language);
return false;
case TextParameterType.Uninitialized:
diff --git a/Dalamud/Utility/CStringExtensions.cs b/Dalamud/Utility/CStringExtensions.cs
index a1848c512..f025ee85c 100644
--- a/Dalamud/Utility/CStringExtensions.cs
+++ b/Dalamud/Utility/CStringExtensions.cs
@@ -1,4 +1,6 @@
-using InteropGenerator.Runtime;
+using Dalamud.Game.Text.SeStringHandling;
+
+using InteropGenerator.Runtime;
using Lumina.Text.ReadOnly;
@@ -7,6 +9,9 @@ namespace Dalamud.Utility;
///
/// A set of helpful utilities for working with s from ClientStructs.
///
+///
+/// WARNING: Will break if a custom ClientStructs is used. These are here for CONVENIENCE ONLY!
+///
public static class CStringExtensions
{
///
@@ -14,11 +19,34 @@ public static class CStringExtensions
///
/// The pointer to convert.
/// A span.
- public static unsafe ReadOnlySeStringSpan AsReadOnlySeStringSpan(this CStringPointer ptr)
+ public static ReadOnlySeStringSpan AsReadOnlySeStringSpan(this CStringPointer ptr)
{
return ptr.AsSpan();
}
+ ///
+ /// Convert a CStringPointer to a Dalamud SeString.
+ ///
+ /// The pointer to convert.
+ /// A Dalamud-flavored SeString.
+ public static SeString AsDalamudSeString(this CStringPointer ptr)
+ {
+ return ptr.AsReadOnlySeStringSpan().ToDalamudString();
+ }
+
+ ///
+ /// Get a new SeString that's a copy of the text in this CStringPointer.
+ ///
+ /// The pointer to copy.
+ /// A new Lumina SeString.
+ public static Lumina.Text.SeString AsLuminaSeString(this CStringPointer ptr)
+ {
+ var ssb = new Lumina.Text.SeStringBuilder();
+ ssb.Append(ptr.AsSpan());
+
+ return ssb.ToSeString();
+ }
+
///
/// Extract text from this CStringPointer following 's rules. Only
/// useful for SeStrings.