Skip to content

Commit 361e8aa

Browse files
committed
feat: rotary phone achievements
1 parent 7900d22 commit 361e8aa

File tree

5 files changed

+290
-46
lines changed

5 files changed

+290
-46
lines changed

public/logs/music/johnny-ps-caddy.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ The track is a testament to lyrical prowess and authentic storytelling, resonati
3030
## Trivia
3131

3232
* **Nikki Grier's Vocals:** The distinctive, **soulful** background vocals by Nikki Grier were an original creation by the renowned producer **DJ Khalil**,
33-
adding a unique layer to The Alchemist's production.
34-
33+
adding a unique layer to The Alchemist's production. `Me quieres y tu, called and I just missed you...`
3534
* **Production:** The track was produced by the legendary Alchemist, known for his signature dusty, sample-heavy sound.
3635
* **Critical Acclaim:** J. Cole's verse on "Johnny P's Caddy" received widespread critical acclaim, with many hailing it as one of his best guest verses to date.

src/components/AnimatedRoutes.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -819,6 +819,10 @@ function AnimatedRoutes() {
819819
path="/apps::topo"
820820
element={<Navigate to="/apps/topographic-maps" replace />}
821821
/>
822+
<Route
823+
path="/apps::phone"
824+
element={<Navigate to="/apps/rotary-phone" replace />}
825+
/>
822826
{/* End of hardcoded redirects */}
823827
<Route
824828
path="/apps/ip"

src/components/DigitalDisplay.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import React from 'react';
2+
import { motion, AnimatePresence } from 'framer-motion';
3+
4+
const DigitalDisplay = ({
5+
text,
6+
colorClass = 'text-green-400 drop-shadow-[0_0_8px_rgba(74,222,128,0.6)]',
7+
showCursor = true,
8+
className = '',
9+
}) => {
10+
return (
11+
<div
12+
className={`bg-green-900/20 border border-green-800/50 rounded-xl p-4 h-24 flex items-center justify-end overflow-hidden relative shadow-[inset_0_0_20px_rgba(0,0,0,0.5)] ${className}`}
13+
>
14+
<AnimatePresence mode="popLayout">
15+
<motion.span
16+
key={text?.toString()} // Ensure key is a string or primitive
17+
initial={{ opacity: 0.5, y: 5 }}
18+
animate={{ opacity: 1, y: 0 }}
19+
className={`text-4xl sm:text-5xl font-mono tracking-widest font-bold ${colorClass}`}
20+
>
21+
{text}
22+
</motion.span>
23+
</AnimatePresence>
24+
25+
{/* Cursor/Caret */}
26+
{showCursor && (
27+
<motion.div
28+
animate={{ opacity: [0, 1, 0] }}
29+
transition={{ repeat: Infinity, duration: 1 }}
30+
className="w-3 h-10 bg-green-400/50 ml-1"
31+
/>
32+
)}
33+
</div>
34+
);
35+
};
36+
37+
export default DigitalDisplay;

src/config/achievements.js

Lines changed: 142 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ import {
1818
MartiniIcon,
1919
TimerIcon,
2020
LogIcon,
21-
KanbanIcon
21+
KanbanIcon,
22+
PhoneIcon,
2223
} from '@phosphor-icons/react';
2324

2425
export const ACHIEVEMENTS = [
@@ -205,4 +206,144 @@ export const ACHIEVEMENTS = [
205206
icon: <GhostIcon size={32} weight="duotone" />,
206207
category: 'Secret',
207208
},
209+
{
210+
id: 'the_emergency',
211+
title: 'The Emergency',
212+
description: 'Is everything okay?',
213+
icon: <PhoneIcon size={32} weight="duotone" />,
214+
category: 'Secret',
215+
},
216+
{
217+
id: 'operator',
218+
title: 'Operator',
219+
description: 'Looking for assistance?',
220+
icon: <PhoneIcon size={32} weight="duotone" />,
221+
category: 'Secret',
222+
},
223+
{
224+
id: 'speaking_clock',
225+
title: 'Speaking Clock',
226+
description: 'A Speaking Clock that does not really tell time.',
227+
icon: <PhoneIcon size={32} weight="duotone" />,
228+
category: 'Secret',
229+
},
230+
{
231+
id: 'galatasaray',
232+
title: 'Galatasaray',
233+
description: '1905',
234+
icon: <PhoneIcon size={32} weight="duotone" />,
235+
category: 'Secret',
236+
},
237+
{
238+
id: 'm_for_murder',
239+
title: 'M for Murder',
240+
description: 'Murder on the line.',
241+
icon: <PhoneIcon size={32} weight="duotone" />,
242+
category: 'Secret',
243+
},
244+
{
245+
id: 'trinity_calling',
246+
title: 'Trinity Calling',
247+
description: 'A Matrix reference, in this day and age...',
248+
icon: <PhoneIcon size={32} weight="duotone" />,
249+
category: 'Secret',
250+
},
251+
{
252+
id: 'immersive_sim_door_code',
253+
title: 'Immersive Sim Door Code',
254+
description: 'Looking Glass Studios loves Fahrenheit',
255+
icon: <PhoneIcon size={32} weight="duotone" />,
256+
category: 'Secret',
257+
},
258+
{
259+
id: 'call_me_generic',
260+
title: 'Call Me Generic',
261+
description: 'It is just 3 number repeating...',
262+
icon: <PhoneIcon size={32} weight="duotone" />,
263+
category: 'Secret',
264+
},
265+
{
266+
id: 'mr_halo_himself',
267+
title: 'Mr. Halo Himself',
268+
description: 'The SPARTAN is calling...',
269+
icon: <PhoneIcon size={32} weight="duotone" />,
270+
category: 'Secret',
271+
},
272+
{
273+
id: 'barcode_man',
274+
title: 'Barcode Man',
275+
description: 'Beep beep on the back of the head',
276+
icon: <PhoneIcon size={32} weight="duotone" />,
277+
category: 'Secret',
278+
},
279+
{
280+
id: 'skyrim',
281+
title: 'Skyrim',
282+
description: 'Cannot get a better day to release the most released game',
283+
icon: <PhoneIcon size={32} weight="duotone" />,
284+
category: 'Secret',
285+
},
286+
{
287+
id: 'new_dc_universe',
288+
title: 'New DC Universe',
289+
description: 'Let me reset the DC Universe',
290+
icon: <PhoneIcon size={32} weight="duotone" />,
291+
category: 'Secret',
292+
},
293+
{
294+
id: 'kobe',
295+
title: 'Kobe',
296+
description: 'Kobe...',
297+
icon: <PhoneIcon size={32} weight="duotone" />,
298+
category: 'Secret',
299+
},
300+
{
301+
id: 'the_answer',
302+
title: 'The Answer',
303+
description: 'The Answer to the Ultimate Question of Life, the Universe, and Everything',
304+
icon: <PhoneIcon size={32} weight="duotone" />,
305+
category: 'Secret',
306+
},
307+
{
308+
id: 'dealing_with_a_kid',
309+
title: 'Dealing With a Kid',
310+
description: 'Oh, grow up...',
311+
icon: <PhoneIcon size={32} weight="duotone" />,
312+
category: 'Secret',
313+
},
314+
{
315+
id: 'dystopian_are_we',
316+
title: 'Dystopian, Are We',
317+
description: 'Is Big Brother still watching...',
318+
icon: <PhoneIcon size={32} weight="duotone" />,
319+
category: 'Secret',
320+
},
321+
{
322+
id: 'not_found',
323+
title: 'Not Found',
324+
description: 'Not Found',
325+
icon: <PhoneIcon size={32} weight="duotone" />,
326+
category: 'Secret',
327+
},
328+
{
329+
id: 'devil',
330+
title: 'Devil',
331+
description: 'Did you try to summon more evil? What the hell...',
332+
icon: <PhoneIcon size={32} weight="duotone" />,
333+
category: 'Secret',
334+
},
335+
{
336+
id: 'the_worst_agent',
337+
title: 'The Worst Agent',
338+
description: 'If 1.5 is the answer, What is the question?',
339+
icon: <PhoneIcon size={32} weight="duotone" />,
340+
category: 'Secret',
341+
},
342+
{
343+
id: 'pie',
344+
title: 'Pie',
345+
description: '3 is just enough.',
346+
icon: <PhoneIcon size={32} weight="duotone" />,
347+
category: 'Secret',
348+
},
208349
];

0 commit comments

Comments
 (0)