diff --git a/server/src/badges.ts b/server/src/badges.ts
index aebee239..cd403fff 100644
--- a/server/src/badges.ts
+++ b/server/src/badges.ts
@@ -319,6 +319,16 @@ export const UnlockableBadges: Badge[] = [
emoji: 'π',
description: 'Employees ONLY?',
category: BadgeCategories.Year2023
+ },
+ {
+ emoji: 'π',
+ description: 'A much better food than a color scheme',
+ category: BadgeCategories.Year2023
+ },
+ {
+ emoji: 'π',
+ description: 'Happy Crawloween!',
+ category: BadgeCategories.Year2023
}
]
diff --git a/server/src/generators/bodyWorksCharacter.ts b/server/src/generators/bodyWorksCharacter.ts
new file mode 100644
index 00000000..1ddc6315
--- /dev/null
+++ b/server/src/generators/bodyWorksCharacter.ts
@@ -0,0 +1,25 @@
+/* eslint-disable quotes */
+
+import tracery from 'tracery-grammar'
+
+export const actionString = (bodyWorksCharacter: string) => {
+ return `${bodyWorksCharacter}`
+}
+
+export const generate = () => {
+ const grammar = tracery.createGrammar({
+ origin: [
+ 'They look at you with a mischievous grin as they mix two smoking fluids together.',
+ 'The sudden smell of perfume slams into your senses, temporarily blinding you.',
+ 'A flash of light comes from the cauldron in front of them as they add some mysterious powder into a bubbling concoction of some kind.',
+ 'They stir a cauldron and you hear muttered words in some language you don't understand.',
+ 'You notice a new growth of mushrooms pop up from the ground in the wake of their footsteps.',
+ 'Their hand flashes out and snatches a bottle off a shelf, adding its contents to the cauldron.'
+ ]
+ })
+
+ grammar.addModifiers(tracery.baseEngModifiers)
+
+ return grammar.flatten('#origin#')
+}
+/* eslint-enable quotes */
diff --git a/server/src/generators/hotDogGuy.ts b/server/src/generators/hotDogGuy.ts
new file mode 100644
index 00000000..bf476e35
--- /dev/null
+++ b/server/src/generators/hotDogGuy.ts
@@ -0,0 +1,26 @@
+/* eslint-disable quotes */
+
+import tracery from 'tracery-grammar'
+
+export const actionString = (hotDogGuy: string) => {
+ return `${hotDogGuy}`
+}
+
+export const generate = () => {
+ const grammar = tracery.createGrammar({
+ origin: [
+ 'A young man stares at you, wearing a floppy, multicolored hat, his eyes pleading for your mercy.',
+ 'He glances at you as he dips a battered hotdog into hot oil.',
+ 'His outfit's bright colors seem to leap out at you, no matter where you turn.',
+ 'He looks out into the food court at all the trays left haphazardly about, and sighs.',
+ 'A beeping sound rings out from behind him, but he does not move.',
+ 'You catch him maliciously slapping the side of an ice cream machine, cursing loudly.',
+ 'You notice a small notepad on the side of the cash register, filled with sketches.'
+ ]
+ })
+
+ grammar.addModifiers(tracery.baseEngModifiers)
+
+ return grammar.flatten('#origin#')
+}
+/* eslint-enable quotes */
diff --git a/server/src/generators/index.ts b/server/src/generators/index.ts
index 1adb9e4a..2d1a3fe5 100644
--- a/server/src/generators/index.ts
+++ b/server/src/generators/index.ts
@@ -16,7 +16,14 @@ import * as drinkSkeletons from './drinkSkeletons'
import * as drinkVessels from './drinkVessels'
import * as drinkContents from './drinkContents'
import * as drinkNames from './drinkNames'
+// begin 2023
import * as craneGame from './craneGame'
+import * as bodyWorksCharacter from './bodyWorksCharacter'
+import * as seersCatalog from './seersCatalog'
+import * as zara from './zara'
+import * as hotDogGuy from './hotDogGuy'
+import * as ray from './ray'
+import * as loudRobert from './loudRobert'
interface Generator {
generate(): string
@@ -42,7 +49,13 @@ const generators: {[name: string]: Generator} = {
drinkVessels,
drinkContents,
drinkNames,
- craneGame
+ craneGame,
+ bodyWorksCharacter,
+ seersCatalog,
+ zara,
+ hotDogGuy,
+ ray,
+ loudRobert
}
export default generators
diff --git a/server/src/generators/loudRobert.ts b/server/src/generators/loudRobert.ts
new file mode 100644
index 00000000..6846aeaa
--- /dev/null
+++ b/server/src/generators/loudRobert.ts
@@ -0,0 +1,23 @@
+/* eslint-disable quotes */
+
+import tracery from 'tracery-grammar'
+
+export const actionString = (loudRobert: string) => {
+ return `${loudRobert}`
+}
+
+export const generate = () => {
+ const grammar = tracery.createGrammar({
+ origin: [
+ 'His short, bulky frame is supporting an enormous green coat that hangs down to his feet.',
+ 'On his head rests a backwards baseball cap which no longer seems to serve any purpose.',
+ 'The two men stand facing each other and all you hear are expletives, but somehow they seem to understand each other.',
+ 'He stares at you intensely, but doesnβt say anything.'
+ ]
+ })
+
+ grammar.addModifiers(tracery.baseEngModifiers)
+
+ return grammar.flatten('#origin#')
+}
+/* eslint-enable quotes */
diff --git a/server/src/generators/ray.ts b/server/src/generators/ray.ts
new file mode 100644
index 00000000..f4a63ecb
--- /dev/null
+++ b/server/src/generators/ray.ts
@@ -0,0 +1,24 @@
+/* eslint-disable quotes */
+
+import tracery from 'tracery-grammar'
+
+export const actionString = (ray: string) => {
+ return `${ray}`
+}
+
+export const generate = () => {
+ const grammar = tracery.createGrammar({
+ origin: [
+ 'His tall, lanky frame is wrapped in a bright yellow jacket 2 sizes too large.',
+ 'A grey beanie sits atop his long mane of dirty blond hair, and all of it is haphazardly put together with little concern for fashion.',
+ 'You get a whiff of a strange plant smell any time you so much as glance at him.',
+ 'The two men stand facing each other and all you hear are expletives, but somehow they seem to understand each other.',
+ 'As you look at him, he breaks into an impromptu fit of rap.'
+ ]
+ })
+
+ grammar.addModifiers(tracery.baseEngModifiers)
+
+ return grammar.flatten('#origin#')
+}
+/* eslint-enable quotes */
diff --git a/server/src/generators/seersCatalog.ts b/server/src/generators/seersCatalog.ts
new file mode 100644
index 00000000..b6c6ed65
--- /dev/null
+++ b/server/src/generators/seersCatalog.ts
@@ -0,0 +1,57 @@
+import tracery from 'tracery-grammar'
+
+export const actionString = (item: string) => {
+ return `You make the mistake of reading the catalog out loud. Coins vanish from your purse, and ${item} appears at your feet as ominous laughter echoes in the distance.`
+}
+
+export const generate = () => {
+ var grammar = tracery.createGrammar({
+ origin: [
+ '#pillType# Pills for #malady#',
+ '#person#'s #cureType# Cure',
+ '#cureType# cure for #malady#',
+ 'System Builder and Lung Restorer',
+ 'Giant Power Electric Belt',
+ 'Griffons' Plush Cape',
+ 'Maternity Outfit For Mother',
+ 'Seer' Motor Buggy',
+ 'Saving Plan For Upper Planes Home Buyer',
+ 'A Chicken',
+ 'Wide Cuffed Pants +1',
+ '#person#' #item#'
+ ],
+ person: [
+ 'Syzygyrior',
+ 'Dr Mandelbrot',
+ 'Brown',
+ 'Xanthar',
+ 'Tasha'
+ ],
+ pillType: [
+ 'Goblin',
+ 'Wizard',
+ 'Cursed',
+ 'Blessed',
+ 'Definitely Not Cursed'
+ ],
+ cureType: [
+ 'Consumption',
+ 'Quick',
+ 'Vegetable'
+ ],
+ malady: [
+ 'Weak Goblins',
+ 'Low T (Treasure)',
+ 'Collapsed Wave Functions',
+ 'Kobold Weakness',
+ 'Persistent Undeath'
+ ],
+ item: [
+ 'Guide to Everything in the Mall',
+ 'Hideous Sweater'
+ ]
+ })
+
+ grammar.addModifiers(tracery.baseEngModifiers)
+ return grammar.flatten('#origin#')
+}
diff --git a/server/src/generators/zara.ts b/server/src/generators/zara.ts
new file mode 100644
index 00000000..3d6fde0e
--- /dev/null
+++ b/server/src/generators/zara.ts
@@ -0,0 +1,25 @@
+/* eslint-disable quotes */
+
+import tracery from 'tracery-grammar'
+
+export const actionString = (zara: string) => {
+ return `${zara}`
+}
+
+export const generate = () => {
+ const grammar = tracery.createGrammar({
+ origin: [
+ 'She flashes you a charming smile around her two enormous fangs and braided muttonchops.',
+ 'She stands only three and a half feet tall, but it's the most imposing, muscular three feet you've ever seen.',
+ 'Zara looks at you with a mischievous grin. The twinkle in her eye says she would bench press you, if given a chance.',
+ 'You catch her eye for an instant before she runs off to break up a pair of feral teens arguing about obscure funk bands.',
+ 'She stands looking over the food court with absolute authority, a twisted orc axeβs handle extending far over her left shoulder.',
+ 'You notice a slight gleam in her immaculate, braided muttonchops. A feature she clearly devotes much of her time towards.'
+ ]
+ })
+
+ grammar.addModifiers(tracery.baseEngModifiers)
+
+ return grammar.flatten('#origin#')
+}
+/* eslint-enable quotes */
diff --git a/server/src/moveToRoom.ts b/server/src/moveToRoom.ts
index 006ff467..26ac0535 100644
--- a/server/src/moveToRoom.ts
+++ b/server/src/moveToRoom.ts
@@ -158,7 +158,9 @@ function awardBadges (user: User, roomId: string) {
['procedural', 'nega_ticket'],
['underlab', 'undermuffin'],
// begin 2023
- ['lockedDoor', 'π']
+ ['lockedDoor', 'π'],
+ ['hotDogStand', 'π'],
+ ['emptyStore', 'π']
]
const unlockedEmoji: Badge[] = []
diff --git a/src/App.tsx b/src/App.tsx
index 50a703c9..86c1c191 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -295,6 +295,7 @@ const App = () => {