diff --git a/src/characters/character-block.ts b/src/characters/character-block.ts
index 66552bf1..ebf3e459 100644
--- a/src/characters/character-block.ts
+++ b/src/characters/character-block.ts
@@ -210,7 +210,13 @@ class CharacterRenderer extends TrackedEntityRenderer<
- - ${this.plugin.settings.enableIronsworn ? "Alias" : "Callsign"}
+ -
+ ${this.plugin.settings.enableIronsworn
+ ? "Alias"
+ : this.plugin.settings.enableSunderedIsles
+ ? "Moniker"
+ : "Callsign"}
+
-
- - XP earned
- -
+
- Player
+ -
+
+
+ - XP From Tracks
+ -
${Object.values(lens.special_tracks).reduce((acc, track) => {
return acc + legacyTrackXpEarned(track.get(raw));
}, 0)}
+ - XP added
+ -
+
+
+ - Total XP earned
+ -
+ ${(lens.xp_added.get(raw) ?? 0) +
+ Object.values(lens.special_tracks).reduce((acc, track) => {
+ return acc + legacyTrackXpEarned(track.get(raw));
+ }, 0)}
+
- XP spent
-
{
shadow: 0,
heart: 0,
edge: 0,
+ xp_added: 0,
xp_spent: 0,
Bonds_Progress: 0,
Bonds_XPEarned: 0,
diff --git a/src/characters/lens.ts b/src/characters/lens.ts
index 86654975..4c1aa172 100644
--- a/src/characters/lens.ts
+++ b/src/characters/lens.ts
@@ -53,7 +53,9 @@ export const baseIronVaultSchema = z
callsign: z.string().optional(),
pronouns: z.string().optional(),
description: z.string().optional(),
+ player: z.string().optional(),
xp_spent: z.number().int().nonnegative().default(0),
+ xp_added: z.number().int().nonnegative().default(0),
// Starting momentum is 2 according to Starforged p111
momentum: z.number().int().gte(-10).lte(10).default(2),
@@ -74,7 +76,9 @@ export interface CharacterLens {
callsign: Lens;
pronouns: Lens;
description: Lens;
+ player: Lens;
xp_spent: Lens;
+ xp_added: Lens;
momentum: Lens;
stats: Record>;
condition_meters: Record>;
@@ -520,12 +524,24 @@ export function characterLens(ruleset: Ruleset): {
schema: baseIronVaultSchema.shape.description,
}),
),
+ player: v(
+ lensForSchemaProp({
+ path: "player",
+ schema: baseIronVaultSchema.shape.player,
+ }),
+ ),
xp_spent: v(
lensForSchemaProp({
path: "xp_spent",
schema: baseIronVaultSchema.shape.xp_spent,
}),
),
+ xp_added: v(
+ lensForSchemaProp({
+ path: "xp_added",
+ schema: baseIronVaultSchema.shape.xp_added,
+ }),
+ ),
momentum: v(
lensForSchemaProp({
path: "momentum",