diff --git a/packages/greenbox-data/data/items.ts b/packages/greenbox-data/data/items.ts
index 182149d..2a5cbd9 100644
--- a/packages/greenbox-data/data/items.ts
+++ b/packages/greenbox-data/data/items.ts
@@ -1,4 +1,97 @@
export const specialItems = [
+ //// Quest Rewards
+ // Marty's Quest
+ 2719, // hand-carved bokken
+ 2720, // hand-carved bow
+ 2721, // hand-carved staff
+
+ // secret from the future
+ 4108, // monstrous monocle
+ 4109, // musty moccasins
+ 4110, // molten medallion
+ 4111, // brazen bracelet
+ 4112, // bitter bowtie
+ 4113, // bewitching boots
+
+ // Reflection of a Map
+ 4510, // walrus ice cream
+ 4511, // beautiful soup
+ 4512, // eggman noodles
+ 4513, // Vial of jus de larmes
+ 4515, // Lobster qua Grill
+ 4516, // missing wine
+ 4519, // ittah bittah hookah
+
+ // psychoanalytic jar
+ 6057, // Meatcleaver
+ 6067, // Truthsayer
+ 6108, // Ginsu™
+ 6133, // White Dragon Fang
+ 6146, // Sword of Procedural Generation
+ 6157, // Byte
+ 6168, // Bloodbath
+
+ // We All Wear Masks
+ 7131, // silver cow creamer
+ 7134, // wolf whistle
+ 7137, // witch's bra
+ 7140, // spinning wheel
+ 7143, // hare pin
+
+ //// Other Items
+ // Chefstaves
+ 2578, // Staff of the Short Order Cook
+ 2601, // Staff of the Midnight Snack
+ 2602, // Staff of Blood and Pudding
+ 2722, // Staff of the Greasefire
+ 2723, // Staff of the Grand Flambé
+ 2740, // Staff of the Walk-In Freezer
+ 2749, // Staff of the Grease Trap
+ 2826, // Staff of the Kitchen Floor
+ 3390, // Staff of the Deepest Freeze
+ 3436, // Staff of the Teapot Tempest
+ 3437, // Staff of the Black Kettle
+ 3438, // Staff of the Well-Tempered Cauldron
+ 4165, // Staff of the Soupbone
+ 5758, // Staff of Holiday Sensations
+ 5761, // Staff of the Scummy Sink
+ 6482, // Staff of the Roaring Hearth
+ 7351, // Staff of the Electric Range
+ 9894, // Staff of Kitchen Royalty
+ 10035, // Staff of Frozen Lard
+ 10424, // Staff of the Peppermint Twist
+
+ // Jack's Swagger Shack
+ 5656, // Huggler Radio
+ 5659, // insulting hat
+ 5660, // offensive moustache
+ 5661, // hairshirt
+ 5663, // cursed microwave
+ 5664, // cursed pony keg
+ 5668, // bagged stuffed "L"
+ 5669, // stuffed club
+ 5674, // stuffed "L"
+ 8283, // The Cocktail Shaker
+ 9123, // School of Hard Knocks Diploma
+ 10207, // [glitch season reward name]
+ 10325, // Law of Averages
+ 10640, // Universal Seasoning
+
+ // Ultra rares
+ 875, // crazy bastard sword
+ 876, // incredibly dense meat gem
+ 877, // Talisman of Baio
+ 878, // hypnodisk
+ 1236, // hockey stick of furious angry rage
+ 1519, // Talisman of Bakula
+ 1687, // Platinum Yendorian Express Card
+ 1795, // Counterclockwise Watch
+ 2097, // 17-ball
+ 2847, // Dallas Dynasty Falcon Crest shield
+ 6592, // optimal spreadsheet
+ 7201, // The Nuge's favorite crossbow
+ 9117, // repaid diaper
+
//// Hobopolis
// Hobo Nickles
3220, // hobo code binder
@@ -63,7 +156,6 @@ export const specialItems = [
3387, // Zombo's skull ring
3388, // Zombo's empty eye
3389, // Frosty's arm
- 3390, // Staff of the Deepest Freeze
3391, // Frosty's iceball
3392, // Oscus's garbage can lid
3393, // Oscus's neverending soda
diff --git a/packages/greenbox-web/src/components/ItemGridSection.tsx b/packages/greenbox-web/src/components/ItemGridSection.tsx
new file mode 100644
index 0000000..5fc29f1
--- /dev/null
+++ b/packages/greenbox-web/src/components/ItemGridSection.tsx
@@ -0,0 +1,24 @@
+import { useAppSelector } from "../hooks";
+import { selectIdToPlayerItems } from "../store";
+
+import ItemGrid from "./ItemGrid";
+import Section from "./Section";
+
+type Props = {
+ title: string;
+ icon: string;
+ items: number[];
+};
+
+export default function ItemGridSection({ title, icon, items }: Props) {
+ const playerItems = useAppSelector(selectIdToPlayerItems);
+
+ return (
+
+ playerItems[id]?.[1] ?? 0)}
+ />
+
+ );
+}
diff --git a/packages/greenbox-web/src/components/MainPage.tsx b/packages/greenbox-web/src/components/MainPage.tsx
index 286bcf2..1e96988 100644
--- a/packages/greenbox-web/src/components/MainPage.tsx
+++ b/packages/greenbox-web/src/components/MainPage.tsx
@@ -17,6 +17,8 @@ import { fetchAll, fetchPlayerData, loadPlayerData } from "../store";
import ClanDungeons from "./ClanDungeons";
import General from "./General";
import Header from "./Header";
+import OtherItems from "./OtherItems";
+import QuestRewards from "./QuestRewards";
export default function MainPage() {
const [directValue] = useQueryParam("d", StringParam);
@@ -87,6 +89,8 @@ export default function MainPage() {
General
Clan Dungeons
+ Quest Rewards
+ Miscellaneous
@@ -95,6 +99,12 @@ export default function MainPage() {
+
+
+
+
+
+
diff --git a/packages/greenbox-web/src/components/OtherItems.tsx b/packages/greenbox-web/src/components/OtherItems.tsx
new file mode 100644
index 0000000..47af13a
--- /dev/null
+++ b/packages/greenbox-web/src/components/OtherItems.tsx
@@ -0,0 +1,81 @@
+import { Accordion } from "@chakra-ui/react";
+
+import ItemGridSection from "./ItemGridSection";
+
+const RODORIC = [
+ 2578, // Staff of the Short Order Cook
+ 2601, // Staff of the Midnight Snack
+ 2602, // Staff of Blood and Pudding
+ 2722, // Staff of the Greasefire
+ 2723, // Staff of the Grand Flambé
+ 2740, // Staff of the Walk-In Freezer
+ 2749, // Staff of the Grease Trap
+ 2826, // Staff of the Kitchen Floor
+ 3390, // Staff of the Deepest Freeze
+ 3436, // Staff of the Teapot Tempest
+ 3437, // Staff of the Black Kettle
+ 3438, // Staff of the Well-Tempered Cauldron
+ 4165, // Staff of the Soupbone
+ 5758, // Staff of Holiday Sensations
+ 5761, // Staff of the Scummy Sink
+ 6482, // Staff of the Roaring Hearth
+ 7351, // Staff of the Electric Range
+ 9894, // Staff of Kitchen Royalty
+ 10035, // Staff of Frozen Lard
+ 10424, // Staff of the Peppermint Twist
+];
+
+const SWAGGER = [
+ 5656, // Huggler Radio
+ 5659, // insulting hat
+ 5660, // offensive moustache
+ 5661, // hairshirt
+ 5663, // cursed microwave
+ 5664, // cursed pony keg
+ 5668, // bagged stuffed "L"
+ 5669, // stuffed club
+ 5674, // stuffed "L"
+ 8283, // The Cocktail Shaker
+ 9123, // School of Hard Knocks Diploma
+ 10207, // [glitch season reward name]
+ 10325, // Law of Averages
+ 10640, // Universal Seasoning
+];
+
+const ULTRA_RARE = [
+ 875, // crazy bastard sword
+ 876, // incredibly dense meat gem
+ 877, // Talisman of Baio
+ 878, // hypnodisk
+ 1236, // hockey stick of furious angry rage
+ 1519, // Talisman of Bakula
+ 1687, // Platinum Yendorian Express Card
+ 1795, // Counterclockwise Watch
+ 2097, // 17-ball
+ 2847, // Dallas Dynasty Falcon Crest shield
+ 6592, // optimal spreadsheet
+ 7201, // The Nuge's favorite crossbow
+ 9117, // repaid diaper
+];
+
+export default function OtherItems() {
+ return (
+
+
+
+
+
+ );
+}
diff --git a/packages/greenbox-web/src/components/QuestRewards.tsx b/packages/greenbox-web/src/components/QuestRewards.tsx
new file mode 100644
index 0000000..481ec48
--- /dev/null
+++ b/packages/greenbox-web/src/components/QuestRewards.tsx
@@ -0,0 +1,78 @@
+import { Accordion } from "@chakra-ui/react";
+
+import ItemGridSection from "./ItemGridSection";
+
+const MARTY = [
+ 2719, // hand-carved bokken
+ 2720, // hand-carved bow
+ 2721, // hand-carved staff
+];
+
+const FUTURE = [
+ 4108, // monstrous monocle
+ 4109, // musty moccasins
+ 4110, // molten medallion
+ 4111, // brazen bracelet
+ 4112, // bitter bowtie
+ 4113, // bewitching boots
+];
+
+const REFLECTION = [
+ 4510, // walrus ice cream
+ 4511, // beautiful soup
+ 4512, // eggman noodles
+ 4513, // Vial of jus de larmes
+ 4515, // Lobster qua Grill
+ 4516, // missing wine
+ 4519, // ittah bittah hookah
+];
+
+const PSYCHOANALYTIC = [
+ 6057, // Meatcleaver
+ 6067, // Truthsayer
+ 6108, // Ginsu™
+ 6133, // White Dragon Fang
+ 6146, // Sword of Procedural Generation
+ 6157, // Byte
+ 6168, // Bloodbath
+];
+
+const GRIMSTONE = [
+ 7131, // silver cow creamer
+ 7134, // wolf whistle
+ 7137, // witch's bra
+ 7140, // spinning wheel
+ 7143, // hare pin
+];
+
+export default function QuestRewards() {
+ return (
+
+
+
+
+
+
+
+ );
+}