diff --git a/apps/web/src/app/features/combat/combat-page/combat-page.component.html b/apps/web/src/app/features/combat/combat-page/combat-page.component.html
index 72c221b..29bd2c1 100644
--- a/apps/web/src/app/features/combat/combat-page/combat-page.component.html
+++ b/apps/web/src/app/features/combat/combat-page/combat-page.component.html
@@ -140,10 +140,6 @@
-
-
- Erfahrung
- - +{{ rewards.experience }} XP
-
- Silber
- +{{ rewards.silver }}
diff --git a/apps/web/src/app/features/combat/combat-page/combat-page.component.spec.ts b/apps/web/src/app/features/combat/combat-page/combat-page.component.spec.ts
index 880c1ad..8b92845 100644
--- a/apps/web/src/app/features/combat/combat-page/combat-page.component.spec.ts
+++ b/apps/web/src/app/features/combat/combat-page/combat-page.component.spec.ts
@@ -426,7 +426,7 @@ describe('CombatPageComponent', () => {
...activeCombat,
status: 'WON',
monster: { ...activeCombat.monster, currentHp: 0 },
- rewards: { experience: 8, silver: 6, items: [] },
+ rewards: { silver: 6, items: [] },
events: [
...activeCombat.events,
{ round: 2, sequence: 3, type: 'DAMAGE', source: 'PLAYER', target: 'MONSTER', amount: 31 },
@@ -526,16 +526,18 @@ describe('CombatPageComponent', () => {
...activeCombat,
status: 'WON',
monster: { ...activeCombat.monster, currentHp: 0 },
- rewards: { experience: 8, silver: 6, items: [] },
+ rewards: { silver: 6, items: [] },
};
- it('shows the granted XP and silver on the victory screen', async () => {
+ it('shows the granted silver on the victory screen', async () => {
const fixture = await setup(wonWithRewards);
const element = fixture.nativeElement as HTMLElement;
expect(element.querySelector('[data-combat-rewards]')).toBeTruthy();
- expect(element.querySelector('[data-reward-experience]')?.textContent).toContain('8');
expect(element.querySelector('[data-reward-silver]')?.textContent).toContain('6');
+ // R16: the XP block is removed entirely, not hidden -- guard against it
+ // reappearing in the markup.
+ expect(element.querySelector('[data-reward-experience]')).toBeNull();
});
it('renders a dropped item with its icon, name, and rarity', async () => {
@@ -543,7 +545,6 @@ describe('CombatPageComponent', () => {
...wonWithRewards,
monster: { ...activeCombat.monster, key: 'road-bandit', name: 'Straßenräuber', currentHp: 0 },
rewards: {
- experience: 16,
silver: 12,
items: [
{
@@ -577,8 +578,6 @@ describe('CombatPageComponent', () => {
'Keine besondere Beute gefunden.',
);
expect(element.querySelector('[role="alert"]')).toBeNull();
- // XP and silver still carry the screen.
- expect(element.querySelector('[data-reward-experience]')).toBeTruthy();
});
it('renders the persisted rewards of an already-won combat loaded from the server', async () => {
@@ -586,12 +585,11 @@ describe('CombatPageComponent', () => {
// exactly what the server persisted, without rerolling anything.
const fixture = await setup({
...wonWithRewards,
- rewards: { experience: 16, silver: 12, items: [] },
+ rewards: { silver: 12, items: [] },
});
const element = fixture.nativeElement as HTMLElement;
expect(combatStore.loadCombat).toHaveBeenCalledWith('combat-1');
- expect(element.querySelector('[data-reward-experience]')?.textContent).toContain('16');
expect(element.querySelector('[data-reward-silver]')?.textContent).toContain('12');
});
diff --git a/apps/web/src/app/features/combat/combat-page/combat-page.component.ts b/apps/web/src/app/features/combat/combat-page/combat-page.component.ts
index e4cea29..66e7907 100644
--- a/apps/web/src/app/features/combat/combat-page/combat-page.component.ts
+++ b/apps/web/src/app/features/combat/combat-page/combat-page.component.ts
@@ -105,7 +105,7 @@ export class CombatPageComponent implements OnInit {
}
if (after.status === 'WON') {
- // The server already granted XP and silver; pull the authoritative
+ // The server already granted silver and renown; pull the authoritative
// character so the HUD matches (spec §35).
void this.worldStore.refreshCharacter();
}