From b62e86157f0884cc657e87a23f39d57710abbbdb Mon Sep 17 00:00:00 2001 From: Jesper Date: Wed, 13 Apr 2022 18:33:36 +0200 Subject: [PATCH] Feat: Conjured items degrade twice as quickly in quality --- TypeScript/app/gilded-rose.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/TypeScript/app/gilded-rose.ts b/TypeScript/app/gilded-rose.ts index faf17748..a9a7f4a3 100644 --- a/TypeScript/app/gilded-rose.ts +++ b/TypeScript/app/gilded-rose.ts @@ -24,11 +24,15 @@ export class GildedRose { } } -function updateItems(items: readonly Readonly[]): readonly Readonly[] { +function updateItems(items: readonly Readonly[]): readonly Readonly[] { return items .map(item => ({ ...item, quality: updateItemQuality(item) })) .map(item => ({ ...item, sellIn: updateItemSellIn(item) })) .map(item => ({ ...item, quality: updateExpiredItemQuality(item) })) + .map((item, i) => { + const previousItem = items[i] + return ({ ...item, quality: updateConjuredItemQuality(previousItem, item) }) + }) } function updateItemQuality({ name, quality, sellIn, ...rest }: Readonly): number { @@ -73,4 +77,13 @@ function decrementQuality({ quality }: Readonly>): number function incrementQuality({ quality }: Readonly>): number { if (quality >= 50) return quality return quality + 1 +} + +function updateConjuredItemQuality(previousItem: Item, currentItem: Item | ConjuredItem): number { + const isConjured = 'conjured' in currentItem && currentItem.conjured + if (!isConjured) return currentItem.quality + const diff = previousItem.quality - currentItem.quality + if (diff >= 0) return currentItem.quality + + return previousItem.quality - (diff * 2) } \ No newline at end of file