Repository: runelite/runelite (java)

Issue:
Bank `clue` search does not include items when multiple of said item are required
### Type

Incorrect behavior

### Operating System

Windows

### OS Version

10

### Bug description

1. Type `::clue Create a barrows teleport tablet.` into chat
2. Open the bank
3. Click and search `clue`
4. Notice that `Law rune` & `Soul rune` do not come up
5. Build the client, change the values for law&soul rune found here to `1`, open the client, follow step 1-3, see all 3 rune types appear https://github.com/runelite/runelite/blob/e5de4d49f534ecfab1976bfe42b170a9f7fb439f/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/SkillChallengeClue.java#L202 

### Screenshots or videos

<details>
  <summary>stable</summary>

![image](https://github.com/runelite/runelite/assets/41973452/4b0a81ab-c648-4822-9f0c-7ca80df965b3)

</details>

<details>
  <summary>changing the xOfItem values</summary>

![image](https://github.com/runelite/runelite/assets/41973452/bd3a0cde-8401-4db6-abb2-e23994e54609)

</details>


### RuneLite version

tested on `1.10.16.2` & e5de4d4

### Logs

_No response_

Pull request:
cluescroll: remove quantity check
Removes quantity check for MultipleOfItemRequirement

Fixes #17186


<details>
<summary>
Before:
</summary>

![image](https://github.com/runelite/runelite/assets/15935660/d8ebeb8b-c667-499d-9907-f1b9c969bb32)

</details>

<details>
<summary>
After: (i do not have an ensouled abyssal head)
</summary>

![image](https://github.com/runelite/runelite/assets/15935660/31d57d54-a2fe-4524-9f9b-736857ff066f)

</details>

Note: As far as I can tell this doesn't affect other things

Patch:
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/item/MultipleOfItemRequirement.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/item/MultipleOfItemRequirement.java
index 88432a4ca..34ff9907a 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/item/MultipleOfItemRequirement.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/item/MultipleOfItemRequirement.java
@@ -42,7 +42,7 @@ public class MultipleOfItemRequirement implements ItemRequirement
 	@Override
 	public boolean fulfilledBy(int itemId)
 	{
-		return itemId == this.itemId && this.quantity == 1;
+		return itemId == this.itemId;
 	}
 
 	@Override


Test patch:
diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/cluescrolls/clues/SkillChallengeClueTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/cluescrolls/clues/SkillChallengeClueTest.java
index d359bed2f..be20d5149 100644
--- a/runelite-client/src/test/java/net/runelite/client/plugins/cluescrolls/clues/SkillChallengeClueTest.java
+++ b/runelite-client/src/test/java/net/runelite/client/plugins/cluescrolls/clues/SkillChallengeClueTest.java
@@ -24,7 +24,14 @@
  */
 package net.runelite.client.plugins.cluescrolls.clues;
 
+import static net.runelite.api.ItemID.BLOOD_RUNE;
+import static net.runelite.api.ItemID.DARK_ESSENCE_BLOCK;
+import static net.runelite.api.ItemID.LAW_RUNE;
+import static net.runelite.api.ItemID.SOUL_RUNE;
+import net.runelite.client.plugins.cluescrolls.clues.item.ItemRequirement;
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 import org.junit.Test;
 
 public class SkillChallengeClueTest
@@ -34,4 +41,23 @@ public class SkillChallengeClueTest
 	{
 		assertNull(SkillChallengeClue.forText("", ""));
 	}
+
+	@Test
+	public void itemRequirementsCreateABarrowsTeleportTablet()
+	{
+		String clueText = "Create a Barrows teleport tablet.";
+		SkillChallengeClue barrowsClue = SkillChallengeClue.forText(clueText.toLowerCase(), clueText.toLowerCase());
+		ItemRequirement[] requirements = barrowsClue.getItemRequirements();
+
+		assertEquals(4, requirements.length);
+		ItemRequirement darkEssenceBlock = requirements[0];
+		ItemRequirement bloodRune = requirements[1];
+		ItemRequirement lawRune = requirements[2];
+		ItemRequirement soulRune = requirements[3];
+
+		assertTrue("Dark Essence Block", darkEssenceBlock.fulfilledBy(DARK_ESSENCE_BLOCK));
+		assertTrue("Blood Rune x1", bloodRune.fulfilledBy(BLOOD_RUNE));
+		assertTrue("Law Rune x2", lawRune.fulfilledBy(LAW_RUNE));
+		assertTrue("Soul Rune x2", soulRune.fulfilledBy(SOUL_RUNE));
+	}
 }