Leaf Getter: 6 questions

For Mihai + Cristi. Pick an answer for each, add notes, then press Copy answers and paste them to Claude. The images are from today's viral games (2026-10-04 chart), watched by Gemini. We copy the pattern, not the art.

Already built (pushed, not in Studio yet)

1

Launch package

Launch with these 4: Golden Pile Run (a glowing pile spawns, everyone races to rake it and carry it to their own bin before a 30 s bar runs out) + big pets by rarity with a kg label + Friend Boost % + a server-wide "X rolled a Mythic!" banner. Keep all 4, or swap one?

Steal An Egg, 1.9M players: carry it home, "RUN!!"
Steal An Egg, 1.9M players: carry it home, "RUN!!"
Drill for Eggs: giant pet, "9,563 kg"
Drill for Eggs: giant pet, "9,563 kg"
Ride A Pet: "1 in 1T" hatch everyone sees
Ride A Pet: "1 in 1T" hatch everyone sees
2

Golden Pile reward

What does landing a Golden Pile in your bin give?

Ride A Pet: hatch + a big "+$254,129"
Ride A Pet: hatch + a big "+$254,129"
+1 Loot To Forge: huge number pops
+1 Loot To Forge: huge number pops
Steal An Egg: hatch in the pen, light beam
Steal An Egg: hatch in the pen, light beam
3

Bonk

Bonk = a rake swing knocks the Golden Pile sack off someone; anyone can grab it. It never touches coins, pets or backpack leaves. In at launch (more drama, more clips) or in Update 1 (safer)?

Steal a Brainrot: the bat
Steal a Brainrot: the bat
Steal An Egg: being chased while carrying
Steal An Egg: being chased while carrying
4

Pet size

Pets grow with rarity. How big can a Mythic get before it blocks the yard on a phone?

Drill for Eggs: a farm full of giant pets
Drill for Eggs: a farm full of giant pets
Steal An Egg: a screen-tall pet
Steal An Egg: a screen-tall pet
5

Name

Keep "Leaf Getter", or go with the chart style? The title + icon carry about half of the clicks. On today's chart: Steal An Egg, Ride A Pet, +1 Stone Skipping, Drill for Eggs, Build the Pyramid!

6

Filming

Clips sell the game. Do you two film by hand, or do I first build the filming kit: an owner-only dev panel (spawn a Golden Pile, force a Mythic hatch in a private server), a hide-HUD button and a free camera? About one evening of work. Rule: what we film must be reachable by real players, no fake rewards, no "free Robux".

Build the Pyramid: cinematic shot
Build the Pyramid: cinematic shot
Build the Pyramid: a clean HUD for clips
Build the Pyramid: a clean HUD for clips
⚙

Codex prompt: FX + 3D model pack

Paste this into Codex/GPT working on the repo. It builds leaf-themed versions of the viral moments (hatch beam, giant pets + kg, server banner, big number pops, bin tiers, rebirth aura, optional Golden Pile) as new files only, on a branch, nothing wired in. Item 7 waits for your answer to question 1.

You are working in the Roblox game repo `D:\joc roblox\PACHET-ROBLOX-PRIETEN\1-leafgetter-roblox-leafraker` (Luau, Rojo-style layout, disk is the source of truth). The game is **Leaf Getter**: kids rake falling leaves into a backpack, pour them into a bin on their plot for coins, upgrade a tree, hatch pets from eggs, rebirth.

## Goal
Build a **visual FX + model pack** so the game "speaks the same visual language" as today's viral Roblox games (Steal An Egg, Ride A Pet, Drill for Eggs, Build the Pyramid, +1 Loot To Forge), so new players recognise the moments instantly. **But it stays OUR identity: every effect is made of LEAVES.** Where they use a plain light beam, we use a leaf tornado. Where they throw confetti, we throw leaves. Palette = ours (leaf green, gold, autumn orange/red, rainbow for Mythic).

You build **standalone presentation modules only**. You do NOT wire them into the game: no edits to existing files. Integration happens later, after review.

## Read first (only these)
- `CLAUDE.md` (repo rules), `docs/DESIGN.md` (palette, fonts, motion timings, 3D model rules: part-built, `Material = Plastic`, stud surfaces, NO MeshPart / Union / uploaded assets, part caps)
- `docs/LUAU-STANDARDS.md` (LF line endings, no BOM, `task.*`, no `wait()`, no `Debris`)
- `src/client/ReplicatedStorage/UIKit.luau`: reuse `UIKit.rarityColor(rarity)`, `UIKit.short(n)`, `UIKit.topbarY()`, `UIKit.Colors`, `UIKit.punch`, `UIKit.shake`
- `src/server/Server/LeafGameServer.luau`, ONLY the function `setupTrashBin` (~line 225) for the bin's footprint, its `RimAbove` attribute and its invisible mouth cap. Do not read the rest of this 200 KB file.
- Look at `docs/research/viral-frames/*.jpg` for the viral look we're echoing (steal-an-egg-01-27 = hatch beam, drill-for-eggs-09-42 = giant pet + kg, build-the-pyramid-00-01 = server bar, loot-to-forge-07-54 = big number pops, drill-for-eggs-04-36 = aura).

## Hard rules
- New files ONLY, under `src/client/ReplicatedStorage/LeafFx/` (ModuleScripts, `.luau`) and `src/client/ReplicatedStorage/LeafModels/`. Plus one preview test `tests/studio/fx-showcase.luau`. Edit NO existing file.
- Rarities are exactly: `Common, Rare, Epic, Legendary, Mythic`. Colours come from `UIKit.rarityColor`, never hard-coded.
- No new asset ids (you can't upload). Allowed: parts, `ParticleEmitter` with Roblox built-in textures (`rbxasset://textures/particles/sparkles_main.dds`, `.../smoke_main.dds`, `.../fire_main.dds`), `Beam`, `PointLight`, `BillboardGui`, `ScreenGui`, `TweenService`.
- Every effect cleans up after itself (`task.delay(t, inst.Destroy, inst)`), has a max duration, and caps its part count (state the cap in the module header). Mobile-friendly: ≤ 60 transient parts per effect.
- Fonts: `Enum.Font.FredokaOne` for numbers and titles. Motion: follow DESIGN.md "Motion" (Back ease for pops, Quad for falls).
- Each module starts with a 5-10 line header: what it is, which viral pattern it echoes, the public API, caps.
- Never open or drive Roblox Studio. Never send mouse/keyboard input. Never commit to `main`. Never publish.
- Line endings LF, no BOM. Don't write files with PowerShell `Set-Content`.

## What to build (one git commit per item, on a new branch `codex/leaf-fx`)

1. **`LeafFx/HatchBeam.luau`**: the hatch moment.
   `HatchBeam.play(origin: CFrame, rarity: string, pet: Model?) -> ()`
   A spiralling **leaf tornado** column (stud leaf parts, 0.9x0.18x0.62) rising 25-40 studs in the rarity colour (taller for rarer), a `PointLight` flash, a burst of falling leaves around the base, then the pet (if given) rises 4 studs out of it with a Back scale-in and a slow spin. Mythic = the rainbow cycle. Total ≤ 2.5 s, skippable (return a `stop()` handle is fine).

2. **`LeafFx/PetFlex.luau`**: big pets by rarity.
   `PetFlex.scaleFor(rarity) -> number` (start with Common 1, Rare 1.35, Epic 1.9, Legendary 2.8, Mythic 4.2; one table at the top, easy to tune)
   `PetFlex.weightKg(rarity, seed: number) -> number` (deterministic from the seed; Common 1-20 kg ... Mythic 2,000-12,000 kg)
   `PetFlex.attachAura(model: Model, rarity) -> Instance` (Common/Rare none; Epic 3, Legendary 5, Mythic 8 leaves orbiting the pet + a soft PointLight; returns a folder to destroy)
   `PetFlex.weightLabel(model: Model, kg: number, rarity) -> BillboardGui` ("2,340 kg" over the pet, rarity colour, stroke)
   `PetFlex.apply(model, rarity, seed)` = scale (`Model:ScaleTo`) + aura + label in one call.

3. **`LeafFx/Banner.luau`**: the server-wide announcement (client).
   `Banner.show(text: string, rarity: string?, seconds: number?)`
   A top-centre strip under the Roblox top bar (`UIKit.topbarY()`), slides down, rarity-gradient fill (rainbow scroll for Mythic), a little shake, holds 3.5 s, slides out. Queue: max 3 waiting, the rest dropped. Fits an 812x375 phone (max width 90% of the screen). Its own ScreenGui, `DisplayOrder` 30, `IgnoreGuiInset = true`.
   Example texts: "🍂 Mihai hatched a MYTHIC Leaf Dragon!", "✨ A GOLDEN PILE fell in the grove!"

4. **`LeafFx/NumberPop.luau`**: big "+N" numbers and flying coins.
   `NumberPop.world(position: Vector3, amount: number, color: Color3?)`: a BillboardGui "+1.2M 💰" that grows with the amount (text size from 24 at <1K up to 72 at ≥1T, by log10), rises 4 studs and fades in 0.9 s. Use `UIKit.short`.
   `NumberPop.flyCoins(from: Vector2, to: GuiObject, count: number)`: up to 12 coin icons (gold circles with a stroke) fly in an arc from a screen point into the coin pill, then `UIKit.punch(to)`.

5. **`LeafModels/BinTiers.luau`**: the bin that visibly evolves.
   `BinTiers.build(tier: number) -> Model` for tiers 1-4: **wood → metal → gold → crystal**. Same footprint and the same `RimAbove` attribute + invisible mouth-cap rule as `setupTrashBin`. ≤ 12 parts each, Plastic, studs, PrimaryPart = ground-centre, pivot at ground. Crystal = light-blue Plastic at transparency 0.15 + a PointLight (still Plastic, per DESIGN.md).
   `BinTiers.swapFx(oldModel: Model, newModel: Model)`: the old one shrinks out, the new one pops in (Back) with a leaf burst.

6. **`LeafFx/RebirthAura.luau`**: status that walks around the hub.
   `RebirthAura.titleFor(rebirths: number) -> (string, Color3)`: 0 Raker, 1-2 Sweeper, 3-4 Groundskeeper, 5-7 Gardener, 8-11 Leaf Lord, 12+ Autumn King (one table at the top).
   `RebirthAura.attach(character: Model, rebirths: number) -> Instance`: a title BillboardGui over the head + an aura that grows with tier (0-2 none, 3-4 a few orbiting leaves, 5-7 more + a light, 8+ a slow leaf tornado around the feet). Returns a folder to destroy.

7. **(Only if Mihai says so: question 1, the Golden Pile)** `LeafModels/GoldenPile.luau` + `LeafFx/GoldenPile.luau`.
   `GoldenPile.build() -> Model`: a glowing heap of gold + a few rainbow stud leaves, ≤ 20 parts.
   `GoldenPileFx.pillar(model) -> Instance`: a gold light pillar (Beam) ~120 studs tall, visible across the map.
   `GoldenPileFx.sackOnBack(character) -> Model`: a glowing leaf sack welded to the back.
   `GoldenPileFx.timerBar(character, seconds) -> { set: (frac: number) -> (), destroy: () -> () }`: a bar over the head, green → amber → red, with a small leaf blowing off as it empties.

8. **`tests/studio/fx-showcase.luau`**: one Studio chunk (header `-- datamodel: Client`, see the other `tests/studio/*.luau` for the header style) that requires every module and plays each one in a row, spaced 12 studs apart in front of the local character, with a 3 s gap: hatch beams for all 5 rarities, PetFlex on 5 neutral test parts, 3 banners, number pops at 50 / 12K / 3.4M / 1.6T, the 4 bin tiers side by side then a swap, the rebirth titles 0/3/5/8/12 on dummy parts. It prints `PASS <item>` per module that loaded and ran without error, `FAIL <item>: <error>` otherwise.

## Done means
- `D:\temp\leafgetter-lune-0.10.5\lune.exe run .scratch/compilecheck.luau` → all files OK (it collects every `.luau` under `src` automatically).
- `D:\temp\leafgetter-lune-0.10.5\lune.exe run tests/gamecore.test.luau` → still all green (you touched no logic, so it must be).
- `git diff main --stat` shows ONLY new files under `src/client/ReplicatedStorage/LeafFx/`, `src/client/ReplicatedStorage/LeafModels/` and `tests/studio/fx-showcase.luau`.
- A short report: each file, its API, its part cap, anything you weren't sure about. Don't claim it looks good; nobody has seen it in Studio yet. Claude runs the showcase in Studio, takes screenshots, and Mihai + Cristi pick.