From 2cd351d816b7dad8c3251fcd640ff697335598a6 Mon Sep 17 00:00:00 2001
From: Linnea Gräf <nea@nea.moe>
Date: Sat, 21 Dec 2024 01:54:06 +0100
Subject: feat: Add support for chocolate and copper to npc buys

---
 src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt       | 9 +++++++++
 src/main/kotlin/moe/nea/ledger/modules/NpcDetection.kt | 6 ++++++
 2 files changed, 15 insertions(+)

(limited to 'src')

diff --git a/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt b/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt
index 72f1d09..7fe0206 100644
--- a/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt
+++ b/src/main/kotlin/moe/nea/ledger/ItemIdProvider.kt
@@ -106,6 +106,7 @@ class ItemIdProvider {
 	private val coinRegex = "(?<amount>$SHORT_NUMBER_PATTERN) Coins?".toPattern()
 	private val stackedItemRegex = "(?<name>.*) x(?<count>$SHORT_NUMBER_PATTERN)".toPattern()
 	private val essenceRegex = "(?<essence>.*) Essence x(?<count>$SHORT_NUMBER_PATTERN)".toPattern()
+	private val numberedItemRegex = "(?<count>$SHORT_NUMBER_PATTERN) (?<what>.*)".toPattern()
 
 	fun findCostItemsFromSpan(lore: List<String>): List<Pair<ItemId, Double>> {
 		return lore.iterator().asSequence()
@@ -161,6 +162,14 @@ class ItemIdProvider {
 				return Pair(item, count)
 			}
 		}
+		numberedItemRegex.useMatcher(properName) {
+			val item = findForName(group("what"), fallbackToGenerated)
+			if (item != null) {
+				val count = parseShortNumber(group("count"))
+				return Pair(item, count)
+			}
+		}
+
 		return findForName(properName, fallbackToGenerated)?.let { Pair(it, 1.0) }
 	}
 
diff --git a/src/main/kotlin/moe/nea/ledger/modules/NpcDetection.kt b/src/main/kotlin/moe/nea/ledger/modules/NpcDetection.kt
index c17cdc8..95b8aa5 100644
--- a/src/main/kotlin/moe/nea/ledger/modules/NpcDetection.kt
+++ b/src/main/kotlin/moe/nea/ledger/modules/NpcDetection.kt
@@ -10,6 +10,7 @@ import moe.nea.ledger.TransactionType
 import moe.nea.ledger.asIterable
 import moe.nea.ledger.events.BeforeGuiAction
 import moe.nea.ledger.events.ChatReceived
+import moe.nea.ledger.events.ExtraSupplyIdEvent
 import moe.nea.ledger.getDisplayNameU
 import moe.nea.ledger.getInternalId
 import moe.nea.ledger.getLore
@@ -46,6 +47,11 @@ class NpcDetection @Inject constructor(val ledger: LedgerLogger, val ids: ItemId
 			}
 	}
 
+	@SubscribeEvent
+	fun addChocolate(event: ExtraSupplyIdEvent) {
+		event.store("Chocolate", ItemId("SKYBLOCK_CHOCOLATE"))
+	}
+
 	@Inject
 	lateinit var errorUtil: ErrorUtil
 
-- 
cgit