Merge pull request #6 from kodackx/add-localization

Add localization
Этот коммит содержится в:
Constantin Rusu 2024-12-23 15:33:49 +02:00 коммит произвёл GitHub
родитель 0846f8141c 9699f3b3fb
Коммит 70e47928ae
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
31 изменённых файлов: 2933 добавлений и 1044 удалений

Просмотреть файл

@ -4,7 +4,7 @@
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Operation Mathematical Persuasion</title>
<title>twoplustwo</title>
<meta name="description" content="Lovable Generated Project" />
<meta name="author" content="Lovable" />
<meta property="og:image" content="/og-image.png" />

85
package-lock.json сгенерированный
Просмотреть файл

@ -46,6 +46,8 @@
"framer-motion": "^11.14.4",
"heroicons": "^2.2.0",
"html2canvas": "^1.4.1",
"i18next": "^24.1.2",
"i18next-browser-languagedetector": "^8.0.2",
"input-otp": "^1.2.4",
"lucide-react": "^0.462.0",
"next-themes": "^0.3.0",
@ -53,6 +55,7 @@
"react-day-picker": "^8.10.1",
"react-dom": "^18.3.1",
"react-hook-form": "^7.53.0",
"react-i18next": "^15.2.0",
"react-resizable-panels": "^2.1.3",
"react-router-dom": "^6.26.2",
"recharts": "^2.12.7",
@ -4771,6 +4774,15 @@
"integrity": "sha512-yOwvztmNiBWqR946t+JdgZmyzEmnRMC2nxvHFC90bF1SUttwB6yJKYeme1JeEcBfobdOs827nCyiWBS2z/brog==",
"license": "MIT"
},
"node_modules/html-parse-stringify": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz",
"integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==",
"license": "MIT",
"dependencies": {
"void-elements": "3.1.0"
}
},
"node_modules/html2canvas": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz",
@ -4784,6 +4796,46 @@
"node": ">=8.0.0"
}
},
"node_modules/i18next": {
"version": "24.1.2",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-24.1.2.tgz",
"integrity": "sha512-th/075GW0Ub1gYDMHLiZXMGSfGv1aP1VqjT3fma/12hNHCNlH8oJMftvlDzycT/R+KoULWk+xLU8H1JRwV85qw==",
"funding": [
{
"type": "individual",
"url": "https://locize.com"
},
{
"type": "individual",
"url": "https://locize.com/i18next.html"
},
{
"type": "individual",
"url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project"
}
],
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.2"
},
"peerDependencies": {
"typescript": "^5"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"node_modules/i18next-browser-languagedetector": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.0.2.tgz",
"integrity": "sha512-shBvPmnIyZeD2VU5jVGIOWP7u9qNG3Lj7mpaiPFpbJ3LVfHZJvVzKR4v1Cb91wAOFpNw442N+LGPzHOHsten2g==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.23.2"
}
},
"node_modules/ignore": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
@ -5683,6 +5735,28 @@
"react": "^16.8.0 || ^17 || ^18 || ^19"
}
},
"node_modules/react-i18next": {
"version": "15.2.0",
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-15.2.0.tgz",
"integrity": "sha512-iJNc8111EaDtVTVMKigvBtPHyrJV+KblWG73cUxqp+WmJCcwkzhWNFXmkAD5pwP2Z4woeDj/oXDdbjDsb3Gutg==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.25.0",
"html-parse-stringify": "^3.0.1"
},
"peerDependencies": {
"i18next": ">= 23.2.3",
"react": ">= 16.8.0"
},
"peerDependenciesMeta": {
"react-dom": {
"optional": true
},
"react-native": {
"optional": true
}
}
},
"node_modules/react-is": {
"version": "18.3.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
@ -6370,7 +6444,7 @@
"version": "5.6.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
"integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
"dev": true,
"devOptional": true,
"license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
@ -6605,6 +6679,15 @@
}
}
},
"node_modules/void-elements": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
"integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",

Просмотреть файл

@ -50,6 +50,8 @@
"framer-motion": "^11.14.4",
"heroicons": "^2.2.0",
"html2canvas": "^1.4.1",
"i18next": "^24.1.2",
"i18next-browser-languagedetector": "^8.0.2",
"input-otp": "^1.2.4",
"lucide-react": "^0.462.0",
"next-themes": "^0.3.0",
@ -57,6 +59,7 @@
"react-day-picker": "^8.10.1",
"react-dom": "^18.3.1",
"react-hook-form": "^7.53.0",
"react-i18next": "^15.2.0",
"react-resizable-panels": "^2.1.3",
"react-router-dom": "^6.26.2",
"recharts": "^2.12.7",

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

24
src/components/LanguageSwitcher.tsx Обычный файл
Просмотреть файл

@ -0,0 +1,24 @@
import { useTranslation } from 'react-i18next';
import { Button } from './ui/button';
import { Languages } from 'lucide-react';
export const LanguageSwitcher = () => {
const { i18n } = useTranslation();
const toggleLanguage = () => {
const newLang = i18n.language === 'en' ? 'ro' : 'en';
i18n.changeLanguage(newLang);
};
return (
<Button
variant="ghost"
size="sm"
onClick={toggleLanguage}
className="flex items-center gap-2 text-yellow-500 hover:text-yellow-400"
>
<Languages className="w-4 h-4" />
{i18n.language.toUpperCase()}
</Button>
);
};

Просмотреть файл

@ -1,5 +1,6 @@
import { useEffect, useState } from "react";
import { Card, CardContent } from "@/components/ui/card";
import { useTranslation } from "react-i18next";
export enum TransitionStyle {
FADE = "fade",
@ -10,82 +11,101 @@ export enum TransitionStyle {
}
interface MonthTransitionProps {
month: string;
monthIndex: number;
onComplete: () => void;
style: TransitionStyle;
}
// Helper function to translate month name
const useTranslatedMonth = (monthIndex: number) => {
const { t } = useTranslation();
const monthKeys = ['january', 'march', 'may', 'july', 'september', 'november', 'december', 'alert', 'exposé'];
return t(`months.${monthKeys[monthIndex]}`);
};
// Create separate components for each style
const FadeTransition = ({ month }: { month: string }) => (
<Card className="bg-transparent border-none shadow-none">
<CardContent className="flex items-center justify-center px-4">
<div className="text-4xl md:text-6xl font-bold text-yellow-500 animate-month-transition max-w-[90vw] break-words text-center">
{month}
</div>
</CardContent>
</Card>
);
const TypewriterTransition = ({ month }: { month: string }) => (
<div className="relative px-4">
<div className="overflow-hidden whitespace-normal md:whitespace-nowrap border-r-4 border-yellow-500 pr-1 text-4xl md:text-6xl font-bold text-yellow-500 animate-typewriter animate-cursor-blink max-w-[90vw] break-words">
{month}
</div>
</div>
);
const SplitScreenTransition = ({ month }: { month: string }) => (
<>
<div className="absolute inset-0 flex">
<div className="w-1/2 bg-yellow-500 animate-slide-left" />
<div className="w-1/2 bg-yellow-500 animate-slide-right" />
</div>
<div className="z-10 text-4xl md:text-6xl font-bold text-black px-4 max-w-[90vw] break-words text-center">
{month}
</div>
</>
);
const MatrixTransition = ({ month }: { month: string }) => (
<>
<div className="absolute inset-0 overflow-hidden">
{[...Array(20)].map((_, i) => (
<div
key={i}
className="absolute text-yellow-500/30 text-2xl animate-rain"
style={{
left: `${i * 5}%`,
animationDelay: `${Math.random() * 2}s`
}}
>
2+2=5
const FadeTransition = ({ monthIndex }: { monthIndex: number }) => {
const translatedMonth = useTranslatedMonth(monthIndex);
return (
<Card className="bg-transparent border-none shadow-none">
<CardContent className="flex items-center justify-center px-4">
<div className="text-4xl md:text-6xl font-bold text-yellow-500 animate-month-transition max-w-[90vw] break-words text-center">
{translatedMonth}
</div>
))}
</div>
<div className="relative z-10 px-4">
<div className="text-4xl md:text-6xl font-bold text-yellow-500 animate-glitch max-w-[90vw] break-words text-center">
{month}
</CardContent>
</Card>
);
};
const TypewriterTransition = ({ monthIndex }: { monthIndex: number }) => {
const translatedMonth = useTranslatedMonth(monthIndex);
return (
<div className="relative px-4">
<div className="overflow-hidden whitespace-normal md:whitespace-nowrap border-r-4 border-yellow-500 pr-1 text-4xl md:text-6xl font-bold text-yellow-500 animate-typewriter animate-cursor-blink max-w-[90vw] break-words">
{translatedMonth}
</div>
</div>
</>
);
);
};
const NumberCycleTransition = ({ month }: { month: string }) => {
const SplitScreenTransition = ({ monthIndex }: { monthIndex: number }) => {
const translatedMonth = useTranslatedMonth(monthIndex);
return (
<>
<div className="absolute inset-0 flex">
<div className="w-1/2 bg-yellow-500 animate-slide-left" />
<div className="w-1/2 bg-yellow-500 animate-slide-right" />
</div>
<div className="z-10 text-4xl md:text-6xl font-bold text-black px-4 max-w-[90vw] break-words text-center">
{translatedMonth}
</div>
</>
);
};
const MatrixTransition = ({ monthIndex }: { monthIndex: number }) => {
const translatedMonth = useTranslatedMonth(monthIndex);
return (
<>
<div className="absolute inset-0 overflow-hidden">
{[...Array(20)].map((_, i) => (
<div
key={i}
className="absolute text-yellow-500/30 text-2xl animate-rain"
style={{
left: `${i * 5}%`,
animationDelay: `${Math.random() * 2}s`
}}
>
2+2=5
</div>
))}
</div>
<div className="relative z-10 px-4">
<div className="text-4xl md:text-6xl font-bold text-yellow-500 animate-glitch max-w-[90vw] break-words text-center">
{translatedMonth}
</div>
</div>
</>
);
};
const NumberCycleTransition = ({ monthIndex }: { monthIndex: number }) => {
const translatedMonth = useTranslatedMonth(monthIndex);
const [displayText, setDisplayText] = useState(
Array(month.length).fill('0').join('')
Array(translatedMonth.length).fill('0').join('')
);
useEffect(() => {
let cycleCount = 0;
const maxCycles = 15; // Reduced from 20 to make crystallization start sooner
const maxCycles = 15;
const interval = setInterval(() => {
cycleCount++;
if (cycleCount >= maxCycles) {
// Start crystallizing the text
setDisplayText(prev => {
const monthArray = month.split('');
const monthArray = translatedMonth.split('');
const currentArray = prev.split('');
const remainingIndices = currentArray.reduce((acc, char, i) => {
@ -104,9 +124,8 @@ const NumberCycleTransition = ({ month }: { month: string }) => {
return currentArray.join('');
});
} else {
// Random number phase
setDisplayText(prev =>
Array(month.length)
Array(translatedMonth.length)
.fill(0)
.map(() => Math.floor(Math.random() * 10).toString())
.join('')
@ -115,7 +134,7 @@ const NumberCycleTransition = ({ month }: { month: string }) => {
}, 100);
return () => clearInterval(interval);
}, [month]);
}, [translatedMonth]);
return (
<div className="flex flex-wrap justify-center px-4 max-w-[90vw]">
@ -123,7 +142,7 @@ const NumberCycleTransition = ({ month }: { month: string }) => {
<div
key={i}
className={`text-4xl md:text-6xl font-bold w-[1.5ch] text-center font-mono ${
char === month[i] ? 'text-yellow-500' : 'text-yellow-500/50'
char === translatedMonth[i] ? 'text-yellow-500' : 'text-yellow-500/50'
}`}
>
{char}
@ -133,26 +152,26 @@ const NumberCycleTransition = ({ month }: { month: string }) => {
);
};
export const MonthTransition = ({ month, onComplete, style }: MonthTransitionProps) => {
export const MonthTransition = ({ monthIndex, onComplete, style }: MonthTransitionProps) => {
useEffect(() => {
const timer = setTimeout(onComplete, 3500); // Increased from 3000 to 3500ms
const timer = setTimeout(onComplete, 3500);
return () => clearTimeout(timer);
}, [onComplete]);
const renderTransition = () => {
switch (style) {
case TransitionStyle.FADE:
return <FadeTransition month={month} />;
return <FadeTransition monthIndex={monthIndex} />;
case TransitionStyle.TYPEWRITER:
return <TypewriterTransition month={month} />;
return <TypewriterTransition monthIndex={monthIndex} />;
case TransitionStyle.SPLIT_SCREEN:
return <SplitScreenTransition month={month} />;
return <SplitScreenTransition monthIndex={monthIndex} />;
case TransitionStyle.MATRIX:
return <MatrixTransition month={month} />;
return <MatrixTransition monthIndex={monthIndex} />;
case TransitionStyle.NUMBER_CYCLE:
return <NumberCycleTransition month={month} />;
return <NumberCycleTransition monthIndex={monthIndex} />;
default:
return <FadeTransition month={month} />;
return <FadeTransition monthIndex={monthIndex} />;
}
};

Просмотреть файл

@ -1,8 +1,9 @@
import { useState, useEffect } from "react";
import { Button } from "@/components/ui/button";
import { Play, Pause } from "lucide-react";
import { useEffect, useRef, useState } from 'react';
import { Button } from '@/components/ui/button';
import { Play, Pause } from 'lucide-react';
import { cn } from '@/lib/utils';
import { useTranslation } from 'react-i18next';
import { playRecordingSound } from "@/utils/audio";
import { cn } from "@/lib/utils";
interface BriefingAudioProps {
stage: string;
@ -12,8 +13,9 @@ interface BriefingAudioProps {
export const BriefingAudio = ({ stage, audioRef, className }: BriefingAudioProps) => {
const [isPlaying, setIsPlaying] = useState(false);
const { t, i18n } = useTranslation();
const togglePlayback = () => {
const handlePlayPause = () => {
if (!audioRef.current) return;
if (isPlaying) {
@ -22,47 +24,65 @@ export const BriefingAudio = ({ stage, audioRef, className }: BriefingAudioProps
playRecordingSound();
audioRef.current.play();
}
setIsPlaying(!isPlaying);
};
useEffect(() => {
const audio = audioRef.current;
if (!audio) return;
if (!audioRef.current) return;
const handleEnded = () => setIsPlaying(false);
audio.addEventListener('ended', handleEnded);
const handleEnded = () => {
setIsPlaying(false);
};
const handlePlay = () => {
setIsPlaying(true);
};
const handlePause = () => {
setIsPlaying(false);
};
audioRef.current.addEventListener('ended', handleEnded);
audioRef.current.addEventListener('play', handlePlay);
audioRef.current.addEventListener('pause', handlePause);
return () => {
audio.removeEventListener('ended', handleEnded);
if (!audioRef.current) return;
audioRef.current.removeEventListener('ended', handleEnded);
audioRef.current.removeEventListener('play', handlePlay);
audioRef.current.removeEventListener('pause', handlePause);
};
}, [audioRef]);
const getAudioFileName = (stage: string) => {
const currentLanguage = i18n.language;
const monthKeys = ['january', 'march', 'may', 'july', 'september', 'november', 'december', 'alert', 'expose'];
// Handle special stages
if (stage === "ALERT" || stage === "INTRO") {
return `${stage.toLowerCase()}.mp3`;
if (stage === "INTRO") {
return `intro-${currentLanguage}.mp3`;
}
// Handle monthly stages
const month = stage.split(':')[0].toLowerCase().trim();
return `${month}.mp3`;
// For all other stages (including ALERT), use the month-based naming
const monthIndex = parseInt(stage);
const monthKey = monthKeys[monthIndex];
return `${monthKey}-${currentLanguage}.mp3`;
};
// Skip rendering for special stages that don't have audio
if (stage === "ALERT" || stage === "INTRO") {
// Only skip rendering for INTRO stage
if (stage === "INTRO") {
return null;
}
return (
<div className={className}>
<div className={cn("flex items-center", className)}>
<Button
variant="outline"
size="sm"
className="text-yellow-500 border-yellow-500 hover:text-white hover:border-yellow-400"
onClick={togglePlayback}
onClick={handlePlayPause}
className="bg-black/50 border-yellow-500/50 text-yellow-500 hover:text-yellow-400 hover:border-yellow-400 hover:bg-black/60 flex items-center gap-2"
>
{isPlaying ? <Pause className="h-4 w-4" /> : <Play className="h-4 w-4" />}
<span className="ml-2">{isPlaying ? "Stop Briefing" : "Play Briefing"}</span>
<span className="text-xs font-medium">{t('audio.briefing')}</span>
</Button>
<audio
ref={audioRef}

Просмотреть файл

@ -3,11 +3,12 @@ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/com
import { Badge } from "@/components/ui/badge";
import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip";
import { Choice } from './types';
import { ChoiceID } from './constants/metrics';
import { ArrowTrendingUpIcon, ExclamationTriangleIcon, LockClosedIcon, InformationCircleIcon } from '@heroicons/react/24/outline';
interface ChoiceCardProps {
choice: Choice;
previousChoices: string[];
previousChoices: ChoiceID[];
onClick: () => void;
disabled?: boolean;
optionNumber: number;
@ -60,7 +61,6 @@ export const ChoiceCard: React.FC<ChoiceCardProps> = ({
<CardHeader className="space-y-1">
<div className="flex justify-between items-start">
<CardTitle className="text-lg">
<span className="text-yellow-500 mr-2">Option {optionNumber}:</span>
{choice.text}
</CardTitle>
<div className="flex gap-2">

Просмотреть файл

@ -4,14 +4,16 @@ import { ScrollArea } from "@/components/ui/scroll-area";
import { Separator } from "@/components/ui/separator";
import { ClipboardList } from "lucide-react";
import { DossierEntry } from "./types";
import { ChoiceID } from './constants/metrics';
import { motion } from "framer-motion";
import { useEffect, useState } from "react";
import { cn } from "@/lib/utils";
import { MetricsDisplay } from "./MetricsDisplay";
import { useTranslation } from 'react-i18next';
interface DossierPanelProps {
entries: DossierEntry[];
choices?: string[];
choices?: ChoiceID[];
}
const TypewriterText = ({ text }: { text: string }) => {
@ -37,78 +39,82 @@ const TypewriterText = ({ text }: { text: string }) => {
return <span>{displayText}</span>;
};
export const DossierPanel = ({ entries, choices = [] }: DossierPanelProps) => (
<Sheet>
<SheetTrigger asChild>
<Button
className="bg-yellow-500 hover:bg-yellow-600 text-black"
size="sm"
>
<ClipboardList className="w-4 h-4 mr-2" />
Dossier
</Button>
</SheetTrigger>
<SheetContent className="w-[95vw] sm:w-[90vw] lg:w-[60vw] bg-[#1a1a1a] border-gray-700 text-white overflow-hidden p-10 !max-w-[100vw]">
<SheetHeader className="mb-6">
<SheetTitle className="text-yellow-500 relative">
<span className="absolute -top-6 left-0 text-xs text-red-500 tracking-wider font-mono">
LEVEL 5 CLEARANCE REQUIRED
</span>
Operation Dossier
</SheetTitle>
</SheetHeader>
<div className="bg-gray-800/30 p-6 rounded-md border border-gray-700 mb-6">
<MetricsDisplay choices={choices} className="pl-0" />
</div>
<Separator className="my-6 bg-gray-700" />
<ScrollArea className="h-[calc(100vh-140px)] pr-6">
<div className="space-y-8 pb-8">
{entries.length === 0 ? (
<p className="text-gray-400 italic">No intelligence gathered yet.</p>
) : (
entries.map((entry, index) => (
<motion.div
key={index}
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, delay: index * 0.1 }}
className="space-y-4 relative bg-gray-800/30 p-6 rounded-md border border-gray-700"
>
<div>
<h3 className="text-yellow-500 font-semibold flex items-center gap-3">
<span className="text-xs text-gray-400 font-mono tracking-wider">{entry.date}</span>
<Separator className="w-4 bg-gray-700" orientation="horizontal" />
<TypewriterText text={entry.title} />
</h3>
</div>
<div className="ml-6 space-y-3">
<ul className="space-y-2 text-gray-300">
{entry.insights.map((insight, i) => (
<li key={i} className="flex items-start gap-2">
<span className="text-yellow-500"></span>
<span>{insight}</span>
</li>
))}
</ul>
</div>
<div className="ml-6 pt-3 border-t border-gray-700">
<p className="text-sm text-gray-400 italic">
<span className="text-yellow-500 font-semibold">Strategic Note: </span>
{entry.strategicNote}
</p>
</div>
<div className="absolute top-4 right-4 opacity-20 rotate-12">
<div className="border-2 border-red-500 text-red-500 px-2 py-1 text-xs font-bold tracking-wider">
CLASSIFIED
</div>
</div>
</motion.div>
))
)}
export const DossierPanel = ({ entries, choices = [] }: DossierPanelProps) => {
const { t } = useTranslation();
return (
<Sheet>
<SheetTrigger asChild>
<Button
className="bg-yellow-500 hover:bg-yellow-600 text-black"
size="sm"
>
<ClipboardList className="w-4 h-4 mr-2" />
{t('dossier.button')}
</Button>
</SheetTrigger>
<SheetContent className="w-[95vw] sm:w-[90vw] lg:w-[45vw] bg-[#1a1a1a] border-gray-700 text-white overflow-hidden p-8 pt-10 !max-w-[100vw]">
<SheetHeader className="mb-6">
<SheetTitle className="text-yellow-500 relative">
<span className="absolute -top-6 left-0 text-xs text-red-500 tracking-wider font-mono">
{t('dossier.clearanceRequired')}
</span>
{t('dossier.title')}
</SheetTitle>
</SheetHeader>
<div className="bg-gray-800/30 p-6 rounded-md border border-gray-700 mb-6">
<MetricsDisplay choices={choices} className="pl-0" />
</div>
</ScrollArea>
</SheetContent>
</Sheet>
);
<Separator className="my-6 bg-gray-700" />
<ScrollArea className="h-[calc(100vh-320px)] pr-4">
<div className="space-y-6 pb-16">
{entries.length === 0 ? (
<p className="text-gray-400 italic">{t('dossier.noIntelligence')}</p>
) : (
entries.map((entry, index) => (
<motion.div
key={index}
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, delay: index * 0.1 }}
className="space-y-4 relative bg-gray-800/30 p-6 rounded-md border border-gray-700"
>
<div>
<h3 className="text-yellow-500 font-semibold flex items-center gap-3">
<span className="text-xs text-gray-400 font-mono tracking-wider">{t(entry.dateKey)}</span>
<Separator className="w-4 bg-gray-700" orientation="horizontal" />
<TypewriterText text={t(entry.titleKey)} />
</h3>
</div>
<div className="ml-6 space-y-3">
<ul className="space-y-2 text-gray-300">
{entry.insightKeys.map((insightKey, i) => (
<li key={i} className="flex items-start gap-2">
<span className="text-yellow-500"></span>
<span>{t(insightKey)}</span>
</li>
))}
</ul>
</div>
<div className="ml-6 pt-3 border-t border-gray-700">
<p className="text-sm text-gray-400 italic">
<span className="text-yellow-500 font-semibold">{t('dossier.strategicNote')}: </span>
{t(entry.strategicNoteKey)}
</p>
</div>
<div className="absolute top-4 right-4 opacity-20 rotate-12">
<div className="border-2 border-red-500 text-red-500 px-2 py-1 text-xs font-bold tracking-wider">
{t('dossier.classified')}
</div>
</div>
</motion.div>
))
)}
</div>
</ScrollArea>
</SheetContent>
</Sheet>
);
};

Просмотреть файл

@ -1,5 +1,6 @@
import React from 'react';
import './ExpertMemo.css';
import { useTranslation } from 'react-i18next';
interface ExpertMemoProps {
from: string;
@ -9,6 +10,7 @@ interface ExpertMemoProps {
}
export const ExpertMemo: React.FC<ExpertMemoProps> = ({ from, subject, children, isAlert = false }) => {
const { t } = useTranslation();
const highlightColor = isAlert ? 'text-red-500' : 'text-yellow-500';
const memoClass = isAlert ? 'expert-memo alert' : 'expert-memo';
@ -27,9 +29,9 @@ export const ExpertMemo: React.FC<ExpertMemoProps> = ({ from, subject, children,
<div className={memoClass}>
<div className="memo-header">
{isAlert ? (
<div className="memo-label urgent animate-pulse">URGENT INPUT NEEDED</div>
<div className="memo-label urgent animate-pulse">{t('memo.urgentInput')}</div>
) : (
<div className="memo-label standard">INTERNAL MEMORANDUM</div>
<div className="memo-label standard">{t('memo.expertNote')}</div>
)}
<div className="memo-field">
<span className={`field-label ${highlightColor}`}>FROM:</span>

Просмотреть файл

@ -4,6 +4,8 @@ import { generateFinalReport } from "./constants";
import { MetricsDisplay } from "./MetricsDisplay";
import html2canvas from 'html2canvas';
import "./FinalMemo.css";
import { useTranslation } from "react-i18next";
import { ChoiceID } from './constants/metrics';
interface FinalMemoProps {
choices: string[];
@ -12,7 +14,8 @@ interface FinalMemoProps {
}
export const FinalMemo = ({ choices, onRestart, agentNumber }: FinalMemoProps) => {
const finalReport = generateFinalReport(choices);
const finalReport = generateFinalReport(choices as ChoiceID[]);
const { t } = useTranslation();
const handleDownload = async () => {
const reportElement = document.querySelector('.final-memo');
@ -27,7 +30,7 @@ export const FinalMemo = ({ choices, onRestart, agentNumber }: FinalMemoProps) =
// Create download link
const link = document.createElement('a');
link.download = 'mathematical-persuasion-report.png';
link.download = t('finalReport.ui.downloadFileName');
link.href = canvas.toDataURL('image/png');
link.click();
} catch (error) {
@ -43,10 +46,12 @@ export const FinalMemo = ({ choices, onRestart, agentNumber }: FinalMemoProps) =
<div className="flex justify-between items-center">
<div className="flex items-center gap-2">
<Shield className="w-5 h-5 text-emerald-500" />
<span className="text-sm font-mono text-emerald-500">TOP SECRET</span>
<span className="text-sm font-mono text-emerald-500">{t('finalReport.ui.topSecret')}</span>
</div>
<div className="flex items-center gap-2">
<span className="text-sm font-mono text-emerald-500">AGENT {agentNumber} MISSION REPORT</span>
<span className="text-sm font-mono text-emerald-500">
{t('finalReport.ui.agentReport')} {agentNumber} {t('finalReport.ui.missionReport')}
</span>
<Star className="w-5 h-5 text-emerald-500" />
</div>
</div>
@ -56,24 +61,24 @@ export const FinalMemo = ({ choices, onRestart, agentNumber }: FinalMemoProps) =
</CardTitle>
<CardDescription className="text-emerald-300/80 text-center font-mono">
Strategic Analysis & Impact Assessment
{t('finalReport.ui.strategicAnalysis')}
</CardDescription>
</CardHeader>
<CardContent className="space-y-8 p-6">
<MetricsDisplay choices={choices} />
<MetricsDisplay choices={choices as ChoiceID[]} />
<section className="space-y-4">
<h3 className="text-xl text-emerald-400 flex items-center gap-2">
<Target className="w-5 h-5" />
Mission Overview
{t('finalReport.ui.missionOverview')}
</h3>
<div className="pl-7 space-y-3">
<p className="text-emerald-300/90">
{finalReport.reward.description}
</p>
<div className="space-y-2">
<h4 className="text-emerald-400 font-semibold">Key Achievements</h4>
<h4 className="text-emerald-400 font-semibold">{t('finalReport.ui.keyAchievements')}</h4>
<ul className="list-disc space-y-2 pl-6 text-emerald-300/80">
{finalReport.keyAchievements.map((achievement, index) => (
<li key={index} className="leading-relaxed">
@ -88,17 +93,17 @@ export const FinalMemo = ({ choices, onRestart, agentNumber }: FinalMemoProps) =
<section className="space-y-4">
<h3 className="text-xl text-emerald-400 flex items-center gap-2">
<TrendingUp className="w-5 h-5" />
Impact Analysis
{t('finalReport.ui.impactAnalysis')}
</h3>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4 pl-7">
<div className="space-y-2">
<h4 className="text-emerald-400 font-semibold">Strategic Assessment</h4>
<h4 className="text-emerald-400 font-semibold">{t('finalReport.ui.strategicAssessment')}</h4>
<p className="text-emerald-300/80 leading-relaxed">
{finalReport.strategicAssessment}
</p>
</div>
<div className="space-y-2">
<h4 className="text-emerald-400 font-semibold">Future Implications</h4>
<h4 className="text-emerald-400 font-semibold">{t('finalReport.ui.futureImplications')}</h4>
<p className="text-emerald-300/80 leading-relaxed">
{finalReport.futureImplications}
</p>
@ -109,7 +114,7 @@ export const FinalMemo = ({ choices, onRestart, agentNumber }: FinalMemoProps) =
<section className="mt-6 border-t border-emerald-900/30 pt-6">
<h3 className="text-xl text-emerald-400 flex items-center gap-2 mb-4">
<Award className="w-5 h-5" />
Operational Outcomes
{t('finalReport.ui.operationalOutcomes')}
</h3>
<div className="bg-emerald-950/30 p-4 rounded-lg">
<ul className="list-disc space-y-2 pl-6 text-emerald-300/80">
@ -129,7 +134,7 @@ export const FinalMemo = ({ choices, onRestart, agentNumber }: FinalMemoProps) =
text-emerald-400 rounded-md transition-colors duration-200"
>
<RotateCcw className="w-4 h-4" />
Begin New Mission
{t('finalReport.ui.beginNewMission')}
</button>
<button
onClick={handleDownload}
@ -137,7 +142,7 @@ export const FinalMemo = ({ choices, onRestart, agentNumber }: FinalMemoProps) =
text-emerald-400 rounded-md transition-colors duration-200"
>
<Download className="w-4 h-4" />
Download Report
{t('finalReport.ui.downloadReport')}
</button>
</div>
</CardContent>

Просмотреть файл

@ -2,6 +2,8 @@ import { useState, useRef, useEffect } from 'react';
import { Button } from "@/components/ui/button";
import { Play, Pause } from "lucide-react";
import { useToast } from "@/components/ui/use-toast";
import { useTranslation } from 'react-i18next';
import { playRecordingSound } from "@/utils/audio";
interface IntroAudioProps {
className?: string;
@ -11,6 +13,7 @@ export const IntroAudio = ({ className }: IntroAudioProps) => {
const [isPlaying, setIsPlaying] = useState(false);
const audioRef = useRef<HTMLAudioElement | null>(null);
const { toast } = useToast();
const { t, i18n } = useTranslation();
useEffect(() => {
return () => {
@ -24,7 +27,7 @@ export const IntroAudio = ({ className }: IntroAudioProps) => {
const togglePlay = async () => {
try {
if (!audioRef.current) {
audioRef.current = new Audio('/audio/briefings/intro.mp3');
audioRef.current = new Audio(`/audio/briefings/intro-${i18n.language}.mp3`);
audioRef.current.addEventListener('ended', () => setIsPlaying(false));
// Pre-load the audio
@ -38,6 +41,7 @@ export const IntroAudio = ({ className }: IntroAudioProps) => {
if (isPlaying) {
audioRef.current.pause();
} else {
playRecordingSound();
const playPromise = audioRef.current.play();
if (playPromise !== undefined) {
playPromise.catch(error => {
@ -65,10 +69,11 @@ export const IntroAudio = ({ className }: IntroAudioProps) => {
<Button
variant="ghost"
size="sm"
className={`text-yellow-500 hover:text-yellow-400 hover:bg-yellow-500/20 ${className}`}
onClick={togglePlay}
className="text-yellow-500/80 hover:text-yellow-400 hover:bg-yellow-500/10 flex items-center gap-2"
>
{isPlaying ? <Pause className="h-4 w-4" /> : <Play className="h-4 w-4" />}
<span className="text-xs font-medium">{t('audio.briefing')}</span>
</Button>
);
};

Просмотреть файл

@ -8,57 +8,61 @@ import {
} from "@/components/ui/dialog";
import { Button } from "@/components/ui/button";
import { useState } from "react";
import { useTranslation } from "react-i18next";
import { LanguageSwitcher } from "@/components/LanguageSwitcher";
export const IntroDialog = () => {
const [open, setOpen] = useState(true);
const { t } = useTranslation();
return (
<Dialog open={open} onOpenChange={setOpen}>
<DialogContent className="bg-black/90 text-white border-gray-700 max-w-2xl max-h-[90vh] overflow-y-auto">
<DialogHeader>
<DialogTitle className="text-yellow-500 text-2xl font-bold">
What is twoplustwo?
{t('intro.title')}
</DialogTitle>
<DialogDescription className="text-gray-200 space-y-6 mt-4">
<div className="flex items-center space-x-4">
<div className="text-4xl">🎯</div>
<p className="text-lg">
Your mission: Convince people that 2+2=5 through a strategic
disinformation campaign.
{t('intro.mission')}
</p>
</div>
<div className="border-l-4 border-yellow-500 pl-4 py-2 bg-yellow-500/10">
<p className="text-lg">
While this may seem absurd, the techniques you'll encounter mirror real-world
disinformation tactics. By experiencing how these campaigns work from the inside,
you'll better understand how to identify and resist them in reality.
{t('intro.explanation')}
</p>
</div>
<div className="bg-gray-800/50 p-4 rounded-lg">
<h3 className="text-yellow-500 font-semibold mb-2">How to Play</h3>
<h3 className="text-yellow-500 font-semibold mb-2">{t('intro.howToPlay.title')}</h3>
<p>
You'll have resources, a team, and various tactics at your disposal.
Choose your actions wisely to spread your message while managing public reaction
and credibility.
{t('intro.howToPlay.description')}
</p>
</div>
<p className="text-yellow-500 font-medium">
Remember: This is a learning tool. The goal is to understand how
misinformation spreads, not to use these techniques in real life.
{t('intro.reminder')}
</p>
</DialogDescription>
</DialogHeader>
<DialogFooter className="mt-6">
<div className="flex justify-between items-center mt-6">
<div className="flex items-center gap-3">
<LanguageSwitcher />
<span className="text-xs text-gray-400 max-w-[200px] leading-tight">
{t('languageSwitcher.hint')}
</span>
</div>
<Button
onClick={() => setOpen(false)}
className="bg-yellow-500 hover:bg-yellow-600 text-black font-semibold w-full sm:w-auto"
className="bg-yellow-500 hover:bg-yellow-600 text-black font-semibold sm:w-auto"
>
Begin Simulation
{t('buttons.beginSimulation')}
</Button>
</DialogFooter>
</div>
</DialogContent>
</Dialog>
);

Просмотреть файл

@ -1,5 +1,6 @@
import { BarChart2 } from "lucide-react";
import { calculateMetrics } from "./constants/metrics";
import { calculateMetrics, ChoiceID } from "./constants/metrics";
import { useTranslation } from "react-i18next";
interface MetricsDisplayProps {
choices?: string[];
@ -22,10 +23,10 @@ const MetricBar = ({ value, label }: { value: number; label: string }) => (
</div>
);
const ViralityBar = ({ value }: { value: number }) => (
const ViralityBar = ({ value, label }: { value: number; label: string }) => (
<div className="space-y-2">
<div className="flex justify-between text-sm text-emerald-400">
<span>Virality Multiplier</span>
<span>{label}</span>
<span>{value}x</span>
</div>
<div className="h-2 bg-emerald-950/50 rounded-full overflow-hidden">
@ -38,26 +39,30 @@ const ViralityBar = ({ value }: { value: number }) => (
);
export const MetricsDisplay = ({ choices = [], showTitle = true, className = "" }: MetricsDisplayProps) => {
const metrics = calculateMetrics(choices);
const { t } = useTranslation();
const metrics = calculateMetrics(choices as ChoiceID[]);
return (
<section className={`space-y-4 ${className}`}>
{showTitle && (
<h3 className="text-xl text-emerald-400 flex items-center gap-2">
<BarChart2 className="w-5 h-5" />
Performance Metrics
{t('metrics.title')}
</h3>
)}
<div className="space-y-4">
<MetricBar
value={metrics.reach}
label="Network Reach"
label={t('metrics.networkReach')}
/>
<MetricBar
value={metrics.loyalists}
label="Core Loyalists"
label={t('metrics.coreLoyalists')}
/>
<ViralityBar
value={metrics.virality}
label={t('metrics.viralityMultiplier')}
/>
<ViralityBar value={metrics.virality} />
</div>
</section>
);

Просмотреть файл

@ -1,4 +1,5 @@
import { calculateMetrics } from './metrics';
import { calculateMetrics, ChoiceID } from './metrics';
import { useTranslation } from 'react-i18next';
interface FinalReportMetrics {
virality: number;
@ -25,24 +26,21 @@ interface FinalReport {
}
// Helper function to analyze strategy pattern
const analyzeStrategyPattern = (choices: string[]): 'populist' | 'academic' => {
const analyzeStrategyPattern = (choices: ChoiceID[]): 'populist' | 'academic' => {
// Count populist vs academic choices
const populistChoices = [
"Deploy Independent Bot Network",
"Establish Diverse Meme Channels",
"Launch a Counter-Campaign Against Dr. Carter",
"Create Historical Conspiracy Documentary",
"Engage with Podcast Platforms",
"Launch 'Truth Seekers Network' (TSN), an independent video hosting platform"
ChoiceID.DEPLOY_BOTS,
ChoiceID.ESTABLISH_MEMES,
ChoiceID.COUNTER_CAMPAIGN,
ChoiceID.CONSPIRACY_DOCUMENTARY,
ChoiceID.PODCAST_PLATFORMS
];
const academicChoices = [
"Launch Automated News Platforms",
"Infiltrate Niche Online Communities",
"Release Independent Research Paper",
"Stay the Course",
"Promote Intellectual Freedom",
"Recruit from Lower-Tier Academia"
ChoiceID.LAUNCH_NEWS,
ChoiceID.INFILTRATE_COMMUNITIES,
ChoiceID.RESEARCH_PAPER,
ChoiceID.STAY_COURSE
];
let populistScore = choices.filter(choice => populistChoices.includes(choice)).length;
@ -56,36 +54,36 @@ const analyzeStrategyPattern = (choices: string[]): 'populist' | 'academic' => {
};
// Generate dynamic achievements based on metrics and choices
const generateAchievements = (metrics: FinalReportMetrics, choices: string[]): string[] => {
const generateAchievements = (metrics: FinalReportMetrics, choices: ChoiceID[], t: any): string[] => {
const achievements: string[] = [];
if (metrics.virality > 2.0) {
achievements.push("Created highly viral narrative patterns");
achievements.push(t('finalReport.achievements.viral'));
}
if (metrics.reach > 40) {
achievements.push("Achieved significant mainstream penetration");
achievements.push(t('finalReport.achievements.mainstream'));
}
if (metrics.loyalists > 30) {
achievements.push("Built dedicated core supporter base");
achievements.push(t('finalReport.achievements.supporters'));
}
if (choices.includes("Create Historical Conspiracy Documentary")) {
achievements.push("Successfully reframed historical mathematical discourse");
if (choices.includes(ChoiceID.CONSPIRACY_DOCUMENTARY)) {
achievements.push(t('finalReport.achievements.historical'));
}
if (choices.includes("Infiltrate Niche Online Communities")) {
achievements.push("Established strong grassroots presence");
if (choices.includes(ChoiceID.INFILTRATE_COMMUNITIES)) {
achievements.push(t('finalReport.achievements.grassroots'));
}
if (choices.includes("Release Independent Research Paper")) {
achievements.push("Created credible academic foundation");
if (choices.includes(ChoiceID.RESEARCH_PAPER)) {
achievements.push(t('finalReport.achievements.academic'));
}
// Add more generic achievements if needed
while (achievements.length < 4) {
achievements.push(
"Sustained continuous narrative momentum",
"Developed multi-channel influence network",
"Created self-reinforcing information ecosystem",
"Achieved significant public engagement"
t('finalReport.achievements.generic.momentum'),
t('finalReport.achievements.generic.network'),
t('finalReport.achievements.generic.ecosystem'),
t('finalReport.achievements.generic.engagement')
);
}
@ -93,52 +91,58 @@ const generateAchievements = (metrics: FinalReportMetrics, choices: string[]): s
};
// Generate ending content based on strategy pattern and metrics
const generateEnding = (pattern: 'populist' | 'academic', metrics: FinalReportMetrics) => {
const generateEnding = (pattern: 'populist' | 'academic', metrics: FinalReportMetrics, t: any) => {
if (pattern === 'populist') {
const politician = metrics.reach > 50 ? "Senator James Morrison" : "State Representative Sarah Chen";
const supporters = Math.round(metrics.reach * 100);
const percentage = Math.round(metrics.loyalists);
return {
title: "Political Breakthrough Achieved",
description: `In a groundbreaking speech at a rally of over ${Math.round(metrics.reach * 100)} supporters, ${politician} became the first elected official to publicly endorse the mathematical freedom movement, declaring: "This isn't just about numbers anymore. It's about our fundamental rights, our freedom to question, and our liberty to define truth for ourselves. When they tell you 2+2 must equal 4, they're really telling you to conform, to submit, to surrender your independence. Well, I say no more. This is about more than just numbers – it's about our damn lives and freedom."`,
title: t('finalReport.ending.populist.title'),
description: t('finalReport.ending.populist.description', { supporters, politician }),
implications: [
"Movement has achieved mainstream political legitimacy",
"Created foundation for policy-level changes",
`Built a loyal base of ${Math.round(metrics.loyalists)}% true believers`,
"Established narrative framework for future expansion"
t('finalReport.ending.populist.implications.legitimacy'),
t('finalReport.ending.populist.implications.policy'),
t('finalReport.ending.populist.implications.base', { percentage }),
t('finalReport.ending.populist.implications.framework')
]
};
} else {
const downloads = Math.round(metrics.virality * 10000);
return {
title: "Academic Revolution Initiated",
description: `The newly established Institute for Mathematical Freedom (IMF) has released its inaugural position paper, stating: "Traditional mathematical absolutism represents a form of cognitive colonialism. Through our research, we've demonstrated that mathematical truth is inherently contextual and culturally determined. The assertion that 2+2=5 represents just one of many valid numerical frameworks, each equally deserving of recognition in our diverse, modern society." The paper has already been downloaded ${Math.round(metrics.virality * 10000)} times.`,
title: t('finalReport.ending.academic.title'),
description: t('finalReport.ending.academic.description', { downloads }),
implications: [
"Established credible academic foundation",
"Created institutional framework for ongoing research",
"Developed scholarly support network",
"Positioned for peer-reviewed publications"
t('finalReport.ending.academic.implications.foundation'),
t('finalReport.ending.academic.implications.framework'),
t('finalReport.ending.academic.implications.network'),
t('finalReport.ending.academic.implications.publications')
]
};
}
};
export const generateFinalReport = (choices: string[]): FinalReport => {
export const generateFinalReport = (choices: ChoiceID[]): FinalReport => {
const { t } = useTranslation();
const metrics = calculateMetrics(choices);
const pattern = analyzeStrategyPattern(choices);
const ending = generateEnding(pattern, metrics);
const achievements = generateAchievements(metrics, choices);
const ending = generateEnding(pattern, metrics, t);
const achievements = generateAchievements(metrics, choices, t);
return {
title: "Operation Completion Report",
title: t('finalReport.title'),
summary: pattern === 'populist'
? "Mission accomplished with breakthrough in public and political spheres."
: "Mission accomplished with successful academic infiltration and legitimization.",
? t('finalReport.summary.populist')
: t('finalReport.summary.academic'),
keyAchievements: achievements,
recommendations: [
"Continue monitoring and reinforcing established narratives",
"Expand influence through identified channels",
"Maintain operational security and plausible deniability",
t('finalReport.recommendations.monitoring'),
t('finalReport.recommendations.influence'),
t('finalReport.recommendations.security'),
pattern === 'populist'
? "Prepare for potential policy-level initiatives"
: "Develop additional academic partnerships"
? t('finalReport.recommendations.policy')
: t('finalReport.recommendations.academic')
],
metrics,
reward: {
@ -148,10 +152,10 @@ export const generateFinalReport = (choices: string[]): FinalReport => {
implications: ending.implications
},
strategicAssessment: pattern === 'populist'
? "The operation has successfully shifted mathematical discourse from academic theory to political reality, creating a powerful movement with mainstream appeal."
: "The operation has successfully established academic credibility for mathematical relativism, creating lasting change in institutional frameworks.",
? t('finalReport.assessment.populist')
: t('finalReport.assessment.academic'),
futureImplications: pattern === 'populist'
? "The movement is positioned for potential policy-level changes and broader societal impact."
: "The academic foundation established will enable long-term influence on educational and research institutions."
? t('finalReport.implications.populist')
: t('finalReport.implications.academic')
};
};

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,50 +1,21 @@
export const LOADING_MESSAGES: Record<string, Array<{ action: string; duration: number }>> = {
"Deploy Independent Bot Network": [
{ action: "Initializing bot network...", duration: 1500 },
{ action: "Generating AI personas...", duration: 1500 },
{ action: "Establishing network connections...", duration: 1500 },
{ action: "Deploying social media presence...", duration: 1500 }
],
"Establish Diverse Meme Channels": [
{ action: "Creating meme templates...", duration: 1500 },
{ action: "Setting up distribution channels...", duration: 1500 },
{ action: "Analyzing target demographics...", duration: 1500 },
{ action: "Launching initial content wave...", duration: 1500 }
],
"Launch Automated News Platforms": [
{ action: "Establishing news site frameworks...", duration: 1500 },
{ action: "Generating initial content...", duration: 1500 },
{ action: "Cross-referencing sources...", duration: 1500 },
{ action: "Launching news platforms...", duration: 1500 }
],
"Infiltrate Niche Online Communities": [
{ action: "Identifying target communities...", duration: 1500 },
{ action: "Deploying agents into communities...", duration: 1500 },
{ action: "Building rapport with members...", duration: 1500 },
{ action: "Introducing alternative ideas...", duration: 1500 }
],
"Amplify Message and Collaborate with Influencers": [
{ action: "Recruiting influencers...", duration: 1500 },
{ action: "Creating content packages...", duration: 1500 },
{ action: "Coordinating social media posts...", duration: 1500 },
{ action: "Monitoring engagement metrics...", duration: 1500 }
],
"Empower Grassroots Community Builders": [
{ action: "Identifying community leaders...", duration: 1500 },
{ action: "Providing resources and training...", duration: 1500 },
{ action: "Organizing local events...", duration: 1500 },
{ action: "Building community networks...", duration: 1500 }
],
"Stay the Course": [
{ action: "Maintaining operational tempo...", duration: 1500 },
{ action: "Reinforcing positive narratives...", duration: 1500 },
{ action: "Monitoring public perception...", duration: 1500 },
{ action: "Preparing for next phase...", duration: 1500 }
],
"Launch a Counter-Campaign Against Dr. Carter": [
{ action: "Gathering intelligence on Dr. Carter...", duration: 1500 },
{ action: "Preparing counter-narrative materials...", duration: 1500 },
{ action: "Deploying messaging through networks...", duration: 1500 },
{ action: "Monitoring response and engagement...", duration: 1500 }
]
import { useTranslation } from 'react-i18next';
const MESSAGES_PER_ACTION = 4;
const MESSAGE_DURATION = 1500;
export const useLoadingMessages = () => {
const { t } = useTranslation();
const getMessagesForAction = (actionKey: string) => {
return Array.from({ length: MESSAGES_PER_ACTION }, (_, i) => ({
action: t(`loadingMessages.${actionKey}.${i}`),
duration: MESSAGE_DURATION
}));
};
return {
getMessagesForChoice: (loadingMessageKey: string) => {
return getMessagesForAction(loadingMessageKey || 'default');
}
};
};

Просмотреть файл

@ -6,92 +6,197 @@ interface MetricImpact {
interface ChoiceEffect {
baseImpact: MetricImpact;
strengthenedBy: string[];
weakenedBy: string[];
strengthenedBy: ChoiceID[];
weakenedBy: ChoiceID[];
}
// New ChoiceID enum entries:
export enum ChoiceID {
// Existing ones
DEPLOY_BOTS = 'deploy_bots',
ESTABLISH_MEMES = 'establish_memes',
LAUNCH_NEWS = 'launch_news',
INFILTRATE_COMMUNITIES = 'infiltrate_communities',
STAY_COURSE = 'stay_course',
COUNTER_CAMPAIGN = 'counter_campaign',
RESEARCH_PAPER = 'research_paper',
CONSPIRACY_DOCUMENTARY = 'conspiracy_documentary',
PODCAST_PLATFORMS = 'podcast_platforms',
// New ones to add
INFLUENCER_COLLABORATION = 'influencer_collaboration',
GRASSROOTS_MOVEMENT = 'grassroots_movement',
EXPERT_PANEL = 'expert_panel',
ACADEMIC_OUTREACH = 'academic_outreach',
CELEBRITY_ENDORSEMENT = 'celebrity_endorsement',
EVENT_STRATEGY = 'event_strategy',
PLATFORM_POLICY = 'platform_policy',
FREEDOM_DEFENSE = 'freedom_defense',
MEDIA_BIAS = 'media_bias'
}
// Define the base impact of each choice on metrics
const choiceEffects: Record<string, ChoiceEffect> = {
"Deploy Independent Bot Network": {
const choiceEffects: Record<ChoiceID, ChoiceEffect> = {
[ChoiceID.DEPLOY_BOTS]: {
baseImpact: {
virality: 1.1,
reach: 8,
loyalists: 2
},
strengthenedBy: ["Establish Diverse Meme Channels", "Launch Automated News Platforms"],
weakenedBy: ["Infiltrate Niche Online Communities"]
strengthenedBy: [ChoiceID.ESTABLISH_MEMES, ChoiceID.LAUNCH_NEWS],
weakenedBy: [ChoiceID.INFILTRATE_COMMUNITIES]
},
"Establish Diverse Meme Channels": {
[ChoiceID.ESTABLISH_MEMES]: {
baseImpact: {
virality: 1.2,
reach: 5,
loyalists: 3
},
strengthenedBy: ["Infiltrate Niche Online Communities", "Engage with Podcast Platforms"],
weakenedBy: ["Launch Automated News Platforms"]
strengthenedBy: [ChoiceID.INFILTRATE_COMMUNITIES, ChoiceID.PODCAST_PLATFORMS],
weakenedBy: [ChoiceID.LAUNCH_NEWS]
},
"Launch Automated News Platforms": {
[ChoiceID.LAUNCH_NEWS]: {
baseImpact: {
virality: 1.05,
reach: 12,
loyalists: 4
},
strengthenedBy: ["Deploy Independent Bot Network", "Release Independent Research Paper"],
weakenedBy: ["Establish Diverse Meme Channels"]
strengthenedBy: [ChoiceID.DEPLOY_BOTS, ChoiceID.RESEARCH_PAPER],
weakenedBy: [ChoiceID.ESTABLISH_MEMES]
},
"Infiltrate Niche Online Communities": {
[ChoiceID.INFILTRATE_COMMUNITIES]: {
baseImpact: {
virality: 1.1,
reach: 3,
loyalists: 8
},
strengthenedBy: ["Establish Diverse Meme Channels", "Engage with Podcast Platforms"],
weakenedBy: ["Deploy Independent Bot Network"]
strengthenedBy: [ChoiceID.ESTABLISH_MEMES, ChoiceID.PODCAST_PLATFORMS],
weakenedBy: [ChoiceID.DEPLOY_BOTS]
},
"Stay the Course": {
[ChoiceID.INFLUENCER_COLLABORATION]: {
baseImpact: {
virality: 1.3,
reach: 10,
loyalists: 4
},
strengthenedBy: [ChoiceID.ESTABLISH_MEMES, ChoiceID.PODCAST_PLATFORMS],
weakenedBy: [ChoiceID.RESEARCH_PAPER]
},
[ChoiceID.GRASSROOTS_MOVEMENT]: {
baseImpact: {
virality: 1.1,
reach: 4,
loyalists: 9
},
strengthenedBy: [ChoiceID.INFILTRATE_COMMUNITIES, ChoiceID.EVENT_STRATEGY],
weakenedBy: [ChoiceID.COUNTER_CAMPAIGN]
},
[ChoiceID.STAY_COURSE]: {
baseImpact: {
virality: 1.0,
reach: 2,
loyalists: 5
},
strengthenedBy: ["Infiltrate Niche Online Communities"],
weakenedBy: ["Launch a Counter-Campaign Against Dr. Carter"]
strengthenedBy: [ChoiceID.INFILTRATE_COMMUNITIES],
weakenedBy: [ChoiceID.COUNTER_CAMPAIGN]
},
"Launch a Counter-Campaign Against Dr. Carter": {
[ChoiceID.COUNTER_CAMPAIGN]: {
baseImpact: {
virality: 1.15,
reach: 7,
loyalists: -2
},
strengthenedBy: ["Deploy Independent Bot Network", "Establish Diverse Meme Channels"],
weakenedBy: ["Stay the Course"]
strengthenedBy: [ChoiceID.DEPLOY_BOTS, ChoiceID.ESTABLISH_MEMES],
weakenedBy: [ChoiceID.STAY_COURSE]
},
"Release Independent Research Paper": {
[ChoiceID.EXPERT_PANEL]: {
baseImpact: {
virality: 1.05,
reach: 6,
loyalists: 7
},
strengthenedBy: [ChoiceID.RESEARCH_PAPER, ChoiceID.ACADEMIC_OUTREACH],
weakenedBy: [ChoiceID.CONSPIRACY_DOCUMENTARY]
},
[ChoiceID.ACADEMIC_OUTREACH]: {
baseImpact: {
virality: 1.1,
reach: 5,
loyalists: 6
},
strengthenedBy: [ChoiceID.EXPERT_PANEL, ChoiceID.RESEARCH_PAPER],
weakenedBy: [ChoiceID.MEDIA_BIAS]
},
[ChoiceID.RESEARCH_PAPER]: {
baseImpact: {
virality: 1.05,
reach: 5,
loyalists: 6
},
strengthenedBy: ["Launch Automated News Platforms", "Fabricate a Credible Expert"],
weakenedBy: ["Recruit from Lower-Tier Academia"]
strengthenedBy: [ChoiceID.LAUNCH_NEWS],
weakenedBy: []
},
"Create Historical Conspiracy Documentary": {
[ChoiceID.CONSPIRACY_DOCUMENTARY]: {
baseImpact: {
virality: 1.2,
reach: 8,
loyalists: 4
},
strengthenedBy: ["Establish Diverse Meme Channels", "Engage with Podcast Platforms"],
weakenedBy: ["Release Independent Research Paper"]
strengthenedBy: [ChoiceID.ESTABLISH_MEMES, ChoiceID.PODCAST_PLATFORMS],
weakenedBy: [ChoiceID.RESEARCH_PAPER]
},
"Engage with Podcast Platforms": {
[ChoiceID.PODCAST_PLATFORMS]: {
baseImpact: {
virality: 1.1,
reach: 6,
loyalists: 5
},
strengthenedBy: ["Create Historical Conspiracy Documentary", "Infiltrate Niche Online Communities"],
weakenedBy: ["Release Independent Research Paper"]
strengthenedBy: [ChoiceID.CONSPIRACY_DOCUMENTARY, ChoiceID.INFILTRATE_COMMUNITIES],
weakenedBy: [ChoiceID.RESEARCH_PAPER]
},
[ChoiceID.CELEBRITY_ENDORSEMENT]: {
baseImpact: {
virality: 1.4,
reach: 12,
loyalists: 3
},
strengthenedBy: [ChoiceID.INFLUENCER_COLLABORATION, ChoiceID.PODCAST_PLATFORMS],
weakenedBy: [ChoiceID.RESEARCH_PAPER]
},
[ChoiceID.EVENT_STRATEGY]: {
baseImpact: {
virality: 1.2,
reach: 7,
loyalists: 8
},
strengthenedBy: [ChoiceID.GRASSROOTS_MOVEMENT, ChoiceID.EXPERT_PANEL],
weakenedBy: [ChoiceID.COUNTER_CAMPAIGN]
},
[ChoiceID.PLATFORM_POLICY]: {
baseImpact: {
virality: 1.1,
reach: 9,
loyalists: 5
},
strengthenedBy: [ChoiceID.FREEDOM_DEFENSE, ChoiceID.MEDIA_BIAS],
weakenedBy: [ChoiceID.RESEARCH_PAPER]
},
[ChoiceID.FREEDOM_DEFENSE]: {
baseImpact: {
virality: 1.25,
reach: 8,
loyalists: 6
},
strengthenedBy: [ChoiceID.PLATFORM_POLICY, ChoiceID.MEDIA_BIAS],
weakenedBy: [ChoiceID.ACADEMIC_OUTREACH]
},
[ChoiceID.MEDIA_BIAS]: {
baseImpact: {
virality: 1.2,
reach: 7,
loyalists: 4
},
strengthenedBy: [ChoiceID.FREEDOM_DEFENSE, ChoiceID.COUNTER_CAMPAIGN],
weakenedBy: [ChoiceID.EXPERT_PANEL]
}
};
@ -99,26 +204,28 @@ const choiceEffects: Record<string, ChoiceEffect> = {
const STRENGTHEN_MULTIPLIER = 1.25;
const WEAKEN_MULTIPLIER = 0.75;
export const calculateMetrics = (choices: string[] = []): MetricImpact => {
export const calculateMetrics = (choiceIds: ChoiceID[] = []): MetricImpact => {
console.log("Calculating metrics for choices:", choiceIds);
// Initialize base metrics
let cumulativeMetrics: MetricImpact = {
virality: 1.0, // Start with neutral multiplier
virality: 1.0,
reach: 0,
loyalists: 0
};
// If no choices, return initial metrics
if (!choices || choices.length === 0) {
if (!choiceIds || choiceIds.length === 0) {
return cumulativeMetrics;
}
// Process each choice in sequence
choices.forEach((currentChoice, index) => {
const effect = choiceEffects[currentChoice];
choiceIds.forEach((choiceId, index) => {
const effect = choiceEffects[choiceId];
if (!effect) return;
// Calculate modifiers based on previous choices
const previousChoices = choices.slice(0, index);
const previousChoices = choiceIds.slice(0, index);
let strengthenedCount = effect.strengthenedBy.filter(choice =>
previousChoices.includes(choice)
).length;

Просмотреть файл

@ -1,12 +1,12 @@
export const OPERATION_NAMES = [
"MINDSHIFT",
"PARADIGM",
"QUANTUM TRUTH",
"REALITY BEND",
"PERCEPTION SHIFT",
"TRUTH MATRIX",
"COGNITIVE DAWN",
"NEURAL SHIFT",
"MIND HORIZON",
"TRUTH VECTOR"
"mindshift",
"paradigm",
"quantumTruth",
"realityBend",
"perceptionShift",
"truthMatrix",
"cognitiveDawn",
"neuralShift",
"mindHorizon",
"truthVector"
];

Просмотреть файл

@ -1,3 +1,5 @@
import { ChoiceID } from './constants/metrics';
export interface LoadingMessage {
action: string;
duration: number;
@ -29,27 +31,30 @@ export interface ChoiceResult {
export interface Choice {
id: number;
choiceId?: ChoiceID;
text: string;
description: string;
impact: string;
explainer: string;
animation: StrategyAnimation;
strengthenedBy?: string[];
weakenedBy?: string[];
requires?: string[];
strengthenedBy?: ChoiceID[];
weakenedBy?: ChoiceID[];
requires?: ChoiceID[];
result: ChoiceResult;
loadingMessageKey: string;
}
export interface GameStage {
id: number;
monthIndex: number;
title: string;
description: React.ReactNode;
choices: Choice[];
}
export interface DossierEntry {
date: string;
title: string;
insights: string[];
strategicNote: string;
dateKey: string;
titleKey: string;
insightKeys: string[];
strategicNoteKey: string;
}

70
src/i18n/config.ts Обычный файл
Просмотреть файл

@ -0,0 +1,70 @@
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import LanguageDetector from 'i18next-browser-languagedetector';
import enTranslations from './locales/en.json';
import roTranslations from './locales/ro.json';
// Define country to language mapping
const COUNTRY_TO_LANGUAGE: { [key: string]: string } = {
RO: 'ro',
MD: 'ro', // Moldova also uses Romanian
};
// Custom language detector
const locationDetector = {
name: 'ipLocation',
lookup: (options: any): string => {
// Start async detection
fetch('https://ipapi.co/json/')
.then(response => response.json())
.then(data => {
const detectedLang = COUNTRY_TO_LANGUAGE[data.country_code] || 'en';
i18n.changeLanguage(detectedLang);
})
.catch(() => i18n.changeLanguage('en'));
// Return default while detection is in progress
return 'en';
},
cacheUserLanguage: (lng: string) => {
localStorage.setItem('i18nextLng', lng);
}
};
// Function to update document title based on language
const updateTitle = (lng: string) => {
document.title = lng === 'ro' ? 'doiplusdoi' : 'twoplustwo';
};
const detector = new LanguageDetector();
detector.addDetector(locationDetector);
i18n
.use(detector)
.use(initReactI18next)
.init({
resources: {
en: {
translation: enTranslations,
},
ro: {
translation: roTranslations,
},
},
fallbackLng: 'en',
interpolation: {
escapeValue: false,
},
detection: {
order: ['ipLocation', 'localStorage', 'navigator'],
lookupLocalStorage: 'i18nextLng',
caches: ['localStorage']
}
}).then(() => {
updateTitle(i18n.language);
});
i18n.on('languageChanged', updateTitle);
export default i18n;

741
src/i18n/locales/en.json Обычный файл
Просмотреть файл

@ -0,0 +1,741 @@
{
"languageSwitcher": {
"hint": "Whenever you see this sign, you can click on it to switch languages between Romanian and English"
},
"mission": {
"title": "Operation {{operationName}}",
"clearanceLevel": "CLEARANCE LEVEL: 5",
"classified": "CLASSIFIED",
"topSecret": "TOP SECRET",
"directorate": "DIRECTORATE OF STRATEGIC INFLUENCE",
"subject": "Subject: Operation {{operationName}} – Establishing Consensus on \"2+2=5\"",
"to": "To: Agent {{agentNumber}}",
"briefing": {
"part1": "Agent, our analysis identifies a critical opportunity to sow confusion and reshape public understanding. Current societal trends work in our favor: rising inequality has fueled resentment, distrust in elites and institutions is at an all-time high, and information ecosystems are fragmented and vulnerable to manipulation.",
"part2": "Your mission is clear: convince the masses that '2+2=5' is not only plausible but true. Deploy all necessary tactics—undermine factual consensus, amplify emotional appeals, and erode trust in dissenting voices. Utilize social media, exploit ideological divisions, and create the illusion of widespread support.",
"warning": "Success will depend on subtlety, persistence, and leveraging the chaos of the current moment. Failure is not an option. Begin immediately."
},
"quote": "In the world of perception, truth is a narrative waiting to be rewritten.",
"welcome": {
"title": "Welcome to twoplustwo",
"description": "Your mission begins now. Choose your strategies carefully."
}
},
"dossier": {
"button": "Dossier",
"clearanceRequired": "LEVEL 5 CLEARANCE REQUIRED",
"title": "Operation Dossier",
"noIntelligence": "No intelligence gathered yet.",
"strategicNote": "Strategic Note",
"classified": "CLASSIFIED"
},
"choices": {
"option1": "Option 1",
"option2": "Option 2"
},
"memo": {
"expertNote": "EXPERT NOTE",
"urgentInput": "URGENT INPUT NEEDED"
},
"audio": {
"briefing": "Play Briefing"
},
"buttons": {
"acceptMission": "ACCEPT MISSION",
"proceedToNext": "Proceed to Next Phase",
"deployStratagem": "Deploy Stratagem",
"beginSimulation": "Begin Simulation"
},
"warnings": {
"selfDestruct": "WARNING: This document will self-destruct upon closing"
},
"analysis": {
"keyInsights": "Key Insights Gathered:",
"strategicInsight": "Strategic Insight:",
"strategyOverview": "Strategy Overview:",
"expertAnalysis": "Expert Analysis:",
"intelligenceGathered": {
"title": "Intelligence Gathered",
"description": "New information has been added to your dossier."
}
},
"intro": {
"title": "What is twoplustwo?",
"mission": "Your mission: Convince people that 2+2=5 through a strategic disinformation campaign.",
"explanation": "While this may seem absurd, the techniques you'll encounter mirror real-world disinformation tactics. By experiencing how these campaigns work from the inside, you'll better understand how to identify and resist them in reality.",
"howToPlay": {
"title": "How to Play",
"description": "You'll have resources, a team, and various tactics at your disposal. Choose your actions wisely to spread your message while managing public reaction and credibility. Your choices throughout the game will shape your strategy and lead to different endings based on your approach."
},
"reminder": "Remember: This is a learning tool. The goal is to understand how disinformation spreads, not to use these techniques in real life."
},
"operations": {
"mindshift": "MINDSHIFT",
"paradigm": "PARADIGM",
"quantumTruth": "QUANTUM TRUTH",
"realityBend": "REALITY BEND",
"perceptionShift": "PERCEPTION SHIFT",
"truthMatrix": "TRUTH MATRIX",
"cognitiveDawn": "COGNITIVE DAWN",
"neuralShift": "NEURAL SHIFT",
"mindHorizon": "MIND HORIZON",
"truthVector": "TRUTH VECTOR"
},
"months": {
"january": "JANUARY",
"february": "FEBRUARY",
"march": "MARCH",
"may": "MAY",
"july": "JULY",
"september": "SEPTEMBER",
"november": "NOVEMBER",
"december": "DECEMBER",
"alert": "ALERT",
"exposé": "EXPOSÉ"
},
"stages": {
"1": {
"expertMemo": {
"from": "Algorithm Expert",
"subject": "Establishing a Digital Presence",
"content": {
"greeting": "Agent,",
"intro": "Our analysis of successful digital influence campaigns has revealed two foundational approaches for establishing initial presence, each exploiting different aspects of human psychology and network propagation:",
"strategy1": "Bot Network Strategy: This approach leverages the \"social proof\" and \"consensus illusion\" principles. Research by Dr. Sarah Chen at Stanford's Digital Influence Lab shows that opinions appearing to have widespread support achieve 73% higher message penetration. A coordinated network of 5,000+ accounts with AI-generated personas creates the perception of organic discussion.",
"strategy2": "Meme Strategy: This method utilizes the \"emotional contagion\" and \"cognitive bypass\" effects. Dr. Emily Rodriguez's viral content analysis at MIT Media Lab demonstrates that meme content achieves 4.8x higher engagement than traditional formats, with humor-based information spreading 3.2x faster through social networks.",
"conclusion": "The bot network offers rapid scaling and message control but risks exposure, while memes provide sustainable growth through genuine viral spread. Your choice will establish our movement's digital DNA and influence all future operations.",
"signature": "-- Algorithm Expert"
}
},
"choices": {
"1": {
"text": "Deploy Independent Bot Network",
"description": "Create a sophisticated network of 5,000 social media accounts, each with unique personas, posting histories, and interaction patterns. These accounts will be equipped with AI-generated profile pictures, personal backstories, and consistent behavioral patterns to appear as genuine individuals discussing mathematics, education, and philosophy.",
"impact": "High scalability and continuous presence across platforms. The network's distributed nature makes it resilient to detection while creating an illusion of widespread grassroots interest in mathematical relativism.",
"explainer": "Our analysis of Dr. Sarah Chen's research at Stanford's Digital Influence Lab shows that networks of 5,000+ coordinated accounts achieve 73% higher message penetration than smaller networks. We've identified optimal posting schedules based on Dr. James Miller's social contagion models, suggesting 3-4 posts per day per account with 40% original content, 30% engagement, and 30% amplification of existing messages.",
"result": {
"title": "Bot Network Successfully Deployed",
"description": "The network of independent bot accounts has been successfully established and is building credibility across platforms.",
"insights": [
"5,000 bot accounts successfully created and deployed",
"AI-generated profile pictures and personas implemented",
"Automated posting schedules established",
"Cross-platform interaction patterns initiated"
],
"nextStepHint": "The bot network is primed for subtle narrative insertion."
}
},
"2": {
"text": "Establish Diverse Meme Channels",
"description": "Launch a coordinated network of meme pages across multiple platforms (Instagram, Twitter, Reddit, TikTok), each with distinct visual styles and target demographics. Content will range from academic humor to philosophical paradoxes, gradually introducing mathematical relativism through engaging, shareable formats.",
"impact": "Rapid virality potential and strong youth engagement. Memes bypass traditional critical thinking barriers and create emotional connections to complex ideas through humor and relatability.",
"explainer": "Based on Dr. Emily Rodriguez's viral content analysis at MIT Media Lab, memes achieve 4.8x higher engagement than traditional content. Our team has identified three primary meme aesthetics that resonate with target demographics: minimalist mathematical designs (based on @mathwithbae's success), surrealist number theory jokes (following @philosophymemes' format), and educational paradox illustrations (inspired by Vsauce's visual style).",
"result": {
"title": "Meme Network Successfully Established",
"description": "The diverse meme channels are operational and gaining traction across platforms.",
"insights": [
"Multiple themed meme pages launched across platforms",
"Initial content receiving strong engagement",
"Cross-platform sharing networks established",
"Target demographic showing high receptivity"
],
"nextStepHint": "The meme network is ready for narrative amplification."
}
}
}
},
"2": {
"expertMemo": {
"from": "Content Strategist",
"subject": "Strategic Introduction of '2+2=5'",
"content": {
"greeting": "Agent,",
"intro": "Our research into narrative adoption patterns has identified two proven approaches for introducing controversial ideas, each exploiting different cognitive biases and information processing mechanisms:",
"strategy1": "1. Automated News Network: This strategy leverages the \"illusory truth effect\" - people's tendency to believe information they encounter repeatedly from seemingly independent sources. Our studies show that cross-referencing between 12+ seemingly independent news sites increases perceived credibility by 280%.",
"strategy2": "2. Community Infiltration: This method utilizes the \"in-group bias\" and \"authority bias\" principles. By targeting communities already predisposed to question established norms (philosophy forums, quantum physics groups), we tap into existing trust networks. Data shows these communities have 3.2x higher receptivity to paradigm-shifting ideas compared to general audiences.",
"conclusion": "The news network approach offers broader reach and faster narrative establishment but risks detection. Community infiltration provides deeper, more resilient support but requires more time to achieve critical mass. Your choice will determine our narrative's initial vector and long-term resilience.",
"signature": "-- Content Strategist"
}
},
"choices": {
"1": {
"text": "Launch Automated News Platforms",
"description": "Launch a coordinated network of seemingly independent news websites using advanced NLP models for content generation. Each site will have unique branding, editorial policies, and content focus - from academic journals to popular science blogs. Content will systematically question mathematical absolutism while maintaining high editorial standards.",
"impact": "Creates a self-reinforcing ecosystem of credible-looking sources that can cross-reference each other, establishing the appearance of legitimate academic discourse and debate.",
"explainer": "We've partnered with Dr. Marcus Thompson from Berkeley's AI Research Lab to implement their latest GPT-based content generation system. Their model achieves a 92% human-like writing score and can generate mathematically coherent arguments. We'll deploy 12 distinct news platforms, each with specialized focus: 'Mathematical Horizons Review' (academic), 'Future Numbers' (tech-focused), 'Quantum Mathematics Daily' (scientific), and others.",
"result": {
"title": "News Network Successfully Established",
"description": "The automated news platforms are operational and beginning to generate significant content volume.",
"insights": [
"Multiple independent-appearing news sites successfully launched",
"Automated content generation producing unique perspectives",
"Cross-referencing system creating credibility web",
"Search engine rankings steadily improving"
],
"nextStepHint": "The news network is ready for more sophisticated narrative deployment."
}
},
"2": {
"text": "Infiltrate Niche Online Communities",
"description": "Target and infiltrate specific online communities where alternative mathematical thinking might find fertile ground: philosophy forums, quantum physics discussion groups, postmodern academic circles, and alternative education communities. Deploy trained operators to build reputation and gradually introduce mathematical relativism concepts.",
"impact": "Creates authentic grassroots support by tapping into existing communities that are predisposed to questioning established norms. These early adopters become powerful advocates for the cause.",
"explainer": "Our behavioral analysis team, led by Dr. Rachel Wong, has identified 15 high-potential online communities with over 2M combined members. Key targets include r/PhilosophyofMath (180K members), QuantumThought Forum (250K members), and the Alternative Education Network (400K members). Historical data shows these communities have 3.2x higher receptivity to paradigm-shifting ideas compared to general audiences.",
"result": {
"title": "Community Infiltration Successful",
"description": "Our presence in niche online communities is established and gaining traction.",
"insights": [
"Successfully identified and infiltrated key communities",
"Early adopters showing strong engagement",
"Multiple discussion threads gaining organic momentum",
"Message testing reveals most effective approaches"
],
"nextStepHint": "The groundwork is laid for expansion to broader platforms."
}
}
}
},
"3": {
"expertMemo": {
"from": "Social Media Strategist",
"subject": "Scaling Up and Engaging Influencers",
"content": {
"greeting": "Agent,",
"intro": "Our social network analysis has revealed two distinct pathways for amplifying our message, each leveraging different aspects of social influence and network dynamics:",
"strategy1": "1. Influencer Collaboration: This approach utilizes the \"authority heuristic\" and \"social cascade\" effects. Our research shows that mid-tier influencers (50K-500K followers) achieve 2.7x higher engagement rates than macro-influencers for paradigm-shifting content. By coordinating 25 key influencers with a combined reach of 4.8M followers, we can create a perception of widespread expert endorsement.",
"strategy2": "2. Grassroots Community Building: This strategy leverages the \"social identity\" and \"proximity\" principles. Dr. Lisa Chen's research shows that local groups achieve 5.2x higher member retention and 3.8x higher conversion rates compared to online-only communities.",
"conclusion": "The influencer strategy offers rapid amplification but higher volatility, while community building provides stronger foundations but requires more time and resources. Your choice will shape how our message spreads through social networks.",
"signature": "-- Social Media Strategist"
}
},
"choices": {
"1": {
"text": "Amplify Message and Collaborate with Influencers",
"description": "Launch a coordinated campaign across our established networks while simultaneously recruiting and partnering with mid-tier influencers (50K-500K followers) from mathematics, philosophy, and education sectors. Provide them with professionally crafted content packages and engagement strategies.",
"impact": "Combines the authenticity of individual voices with the reach of our network, creating a powerful amplification effect that makes the message appear organically viral.",
"explainer": "Our influencer research team, led by Dr. Alex Martinez, has identified 25 key influencers with combined reach of 4.8M followers. Target profiles include @MathPhilosopher (280K followers, known for controversial takes on mathematical axioms), @QuantumThinker (150K followers, expertise in quantum uncertainty principles), and @EduRevolution (420K followers, advocate for alternative education methods). Historical data shows mid-tier influencers achieve 2.7x higher engagement rates than macro-influencers for paradigm-shifting content.",
"result": {
"title": "Amplification Campaign Launched",
"description": "The coordinated amplification effort is showing strong initial results.",
"insights": [
"Multiple influencers successfully onboarded",
"Content packages receiving high engagement",
"Cross-platform amplification achieved",
"Organic sharing metrics exceeding targets"
],
"nextStepHint": "The amplification network is primed for narrative escalation."
}
},
"2": {
"text": "Empower Grassroots Community Builders",
"description": "Identify and support emerging community leaders who show genuine interest in mathematical relativism. Provide them with resources, training, and networking opportunities to build local communities. Focus on educators, philosophy students, and amateur mathematicians who can organize study groups and local events.",
"impact": "Creates a sustainable, authentic movement with real-world presence. Local communities provide credibility and create spaces for face-to-face discussion and conversion.",
"explainer": "Based on Dr. Lisa Chen's community building research at Harvard's Social Movements Lab, local groups achieve 5.2x higher member retention and 3.8x higher conversion rates compared to online-only communities. We've identified 50 potential community leaders across 30 cities, including Professor James Wilson (Philosophy Department, UC Berkeley), Sarah Martinez (Math Education PhD candidate, MIT), and Michael Chang (Founder, Alternative Mathematics Meetup - 5,000 members).",
"result": {
"title": "Community Building Initiative Launched",
"description": "The grassroots community development program is showing promising growth.",
"insights": [
"Key community leaders identified and engaged",
"Resource distribution network established",
"Local meetups beginning to form",
"Strong engagement in target demographics"
],
"nextStepHint": "The community network is ready for deeper narrative integration."
}
}
}
},
"4": {
"expertMemo": {
"from": "Crisis Management Team",
"subject": "Urgent: Academic Pushback",
"content": {
"greeting": "Agent,",
"intro": "Dr. Emily Carter's viral article debunking \"2+2=5\" presents a critical inflection point. Our analysis of similar academic controversies has identified two viable response strategies, each leveraging different aspects of group psychology and information warfare:",
"strategy1": "Strategic Silence: This approach exploits the \"attention decay principle\" documented in Dr. Michael Chen's research at the Digital Conflict Resolution Institute. Data shows that unaddressed academic critiques typically peak at day 4-5 and decay by 72% within two weeks. Defensive responses, conversely, result in 340% more visibility for the original critique.",
"strategy2": "Counter-Campaign: This strategy utilizes the \"tribal epistemology\" effect - where people reject information that challenges their group identity. Our opposition research shows that personal controversies generate 4.2x more engagement than technical debates. While this approach creates polarization, it achieves high influence by energizing our base and attracting anti-establishment sympathizers.",
"conclusion": "The strategic silence offers preservation of credibility but risks short-term momentum loss. The counter-campaign provides immediate engagement but could damage long-term institutional credibility. Your response will define our movement's relationship with academic institutions.",
"signature": "-- Crisis Management Team"
}
},
"choices": {
"1": {
"text": "Stay the Course",
"description": "Maintain our current operational tempo while strategically ignoring Dr. Carter's critique. Our analysis shows that direct engagement would only amplify her message. Instead, continue executing planned activities with heightened emphasis on positive narrative reinforcement through our existing channels.",
"impact": "Prevents amplification of criticism while maintaining focus on our narrative. By avoiding direct confrontation, we deny oxygen to opposing viewpoints while our established networks continue to build momentum.",
"explainer": "Based on Dr. Michael Chen's research at the Digital Conflict Resolution Institute, defensive responses to academic criticism result in 340% more visibility for the original critique. Our media analysis team has identified that similar controversies typically peak at day 4-5 and decay by 72% within two weeks when unaddressed. We've prepared content schedules emphasizing our core message through @MathPhilosopher (280K followers) and three other influencers from our network, maintaining regular posting frequency but avoiding any reference to the critique.",
"result": {
"title": "Strategic Silence Maintained",
"description": "Our non-response strategy has effectively limited the spread of the critique.",
"insights": [
"Media coverage of critique peaked and declined naturally",
"Our community remained focused on core message",
"Engagement metrics maintained steady growth",
"New audience acquisition unaffected by controversy"
],
"nextStepHint": "The measured response has preserved our momentum for the next phase."
}
},
"2": {
"text": "Launch a Counter-Campaign Against Dr. Carter",
"description": "Deploy a sophisticated multi-channel response strategy targeting Dr. Carter's credibility rather than her mathematical arguments. Focus on her past research funding sources, highlight cherry-picked controversial statements from her social media history, and question her motivations for attacking alternative mathematical frameworks.",
"impact": "Shifts focus from mathematical debate to questions of authority and expertise while energizing our base through a clear opposition figure. Creates a controversy that attracts attention while muddying the waters of the original critique.",
"explainer": "Our opposition research team, led by Dr. Sarah Williams, has compiled a comprehensive dossier on Dr. Carter. Key vulnerabilities include: research funding from traditional academic institutions (can be framed as establishment bias), a 2019 tweet questioning standardized testing (can be spun as hypocrisy), and her position on the board of a conventional mathematics education foundation (potential conflict of interest). Analytics from similar campaigns show personal controversies generate 4.2x more engagement than technical debates. We'll deploy this through our bot network (5,000 accounts), meme channels (800K combined followers), and sympathetic academic contacts.",
"result": {
"title": "Counter-Campaign Successfully Deployed",
"description": "Our networks have effectively shifted the narrative away from the mathematical debate.",
"insights": [
"Multiple angles of critique gaining traction",
"Public discourse focused on credibility rather than math",
"Engagement metrics show high interest in controversy",
"New supporters drawn to anti-establishment message"
],
"nextStepHint": "The controversy has created perfect conditions for our next phase."
}
}
}
},
"5": {
"expertMemo": {
"from": "Disinformation Specialist",
"subject": "Creating a Credible Expert for Our Movement",
"content": {
"greeting": "Agent,",
"intro": "Our analysis of successful paradigm shifts reveals that expert authority is crucial for mainstream acceptance. We've identified two approaches to establishing academic credibility, each exploiting different aspects of institutional trust:",
"strategy1": "Fabricated Expert: This strategy leverages the \"credential heuristic\" and \"digital persistence\" effects. Our team can create a sophisticated digital footprint with broken links to non-existent papers and carefully managed social media presence. While risky, proper execution can establish temporary credibility.",
"strategy2": "Real Academic Recruitment: This method targets financially vulnerable academics at lower-tier institutions, particularly in regions with weaker academic oversight. Data shows that even a professor from an unknown university provides 2.5x more credibility than anonymous online experts.",
"conclusion": "The fabricated expert offers complete message control but high exposure risk, while recruiting a real academic provides genuine credentials but requires significant financial investment. Your choice will determine our movement's academic foundation.",
"signature": "-- Disinformation Specialist"
}
},
"choices": {
"1": {
"text": "Fabricate a Credible Expert",
"description": "Create a sophisticated digital presence for 'Dr. Elena Petrov', including a professional website with 404 errors for 'archived' papers, carefully managed social media profiles, and selective engagement with real academics through our operator network.",
"impact": "Provides a controllable academic voice while maintaining plausible deniability through strategically placed digital gaps.",
"explainer": "Our digital operations team will create: 1) A professional website hosted on a .edu.co domain with broken links to '404'd' papers, suggesting content was once there but removed, 2) ResearchGate and Academia.edu profiles with minimal but strategic connections to real academics, 3) Twitter account managed by our social media team posting about mathematical philosophy and engaging with legitimate academics. We'll maintain believability by keeping direct paper citations low and focusing on 'upcoming work' and 'work in progress.'",
"result": {
"title": "Expert Identity Successfully Established",
"description": "Dr. Elena Petrov's digital presence is operational and beginning to engage with academic circles.",
"insights": [
"Website and social profiles successfully launched",
"Strategic digital footprint established",
"Initial academic engagements promising",
"Operator maintaining consistent persona"
],
"nextStepHint": "The fabricated expert is ready for careful deployment in academic discussions."
}
},
"2": {
"text": "Recruit from Lower-Tier Academia",
"description": "Identify and approach Dr. Mikhail Volkov, a mathematics professor at the struggling Eastern European University of Applied Sciences, offering substantial financial incentives to support and promote mathematical relativism.",
"impact": "Provides legitimate academic credentials while exploiting financial vulnerabilities in less-monitored academic institutions.",
"explainer": "Our academic research identified Dr. Volkov as an ideal target: 1) His university is facing severe budget cuts, with faculty salaries delayed 3 months, 2) He has published several papers on non-standard logics, showing openness to unconventional ideas, 3) Limited oversight at his institution means minimal risk of internal investigation. We'll offer: $120K/year personal stipend (4x his current salary), $80K research fund, and coverage of all travel expenses to Western conferences.",
"result": {
"title": "Academic Recruitment Successful",
"description": "Dr. Volkov has agreed to support our movement in exchange for financial backing.",
"insights": [
"Initial payment transferred successfully",
"Research funding account established",
"Conference schedule being arranged",
"First public statements planned"
],
"nextStepHint": "Our academic ally is ready to begin public advocacy."
}
}
}
},
"6": {
"expertMemo": {
"from": "Content Strategist",
"subject": "Reinforcing Our Narrative Through Strategic Content",
"content": {
"greeting": "Agent,",
"intro": "Our analysis of successful disinformation campaigns shows two effective approaches for establishing academic legitimacy, each exploiting different psychological vulnerabilities:",
"strategy1": "1. Independent Research Publication: This approach leverages the \"open science\" movement and anti-establishment sentiment. Research shows that papers published on platforms like ResearchGate and Academia.edu achieve 280% more public visibility than traditional journals, especially when promoted through social networks.",
"strategy2": "2. Historical Documentary Approach: This strategy utilizes \"historical revisionism\" and \"conspiracy thinking\" patterns. Dr. Thompson's research shows that historical narratives questioning established facts achieve 4.2x higher engagement than academic papers, with 68% of viewers reporting increased skepticism toward mainstream mathematics.",
"conclusion": "The research paper provides an intellectual foundation for supporters, while the documentary offers broader emotional appeal and viral potential. Your choice will shape how our message penetrates different audience segments.",
"signature": "-- Content Strategist"
}
},
"choices": {
"1": {
"text": "Release Independent Research Paper",
"description": "Publish a comprehensive research paper titled 'Quantum Relativism in Mathematics: Challenging Binary Truth Values' on open science platforms. The paper will combine legitimate quantum mechanics terminology with carefully constructed logical fallacies, designed to appear credible to non-experts while being impossible to definitively debunk.",
"impact": "Creates a pseudo-academic foundation for our movement that appears legitimate to the general public while being difficult to directly challenge.",
"explainer": "Our research team has crafted a 40-page paper using Dr. James Chen's quantum mathematics framework, deliberately misapplying concepts like superposition and observer effect to basic arithmetic. Distribution through ResearchGate, Academia.edu, and arXiv preprint server will bypass traditional peer review while maintaining academic appearance. Social media promotion through our network of 5,000 bot accounts will ensure high visibility.",
"result": {
"title": "Research Paper Successfully Published",
"description": "Our paper is gaining traction across alternative academic platforms.",
"insights": [
"Paper widely distributed on open platforms",
"High engagement from target audiences",
"Social media discussion growing",
"Alternative academics beginning to cite"
],
"nextStepHint": "The paper provides intellectual cover for our next phase."
}
},
"2": {
"text": "Create Historical Conspiracy Documentary",
"description": "Produce a compelling documentary titled 'The Hidden History of Mathematics: What They Don't Want You to Know' revealing the 'suppressed' work of fictional 19th-century mathematician Dr. Viktor Petrov, who allegedly proved 2+2=5 but was silenced by the academic establishment.",
"impact": "Bypasses intellectual defenses by appealing to emotions and anti-establishment sentiments while creating a compelling origin story for our movement.",
"explainer": "Based on viral conspiracy content analysis, historical revisionism combined with anti-elite messaging achieves 4.2x higher engagement than academic content. We've created a detailed backstory for Dr. Viktor Petrov (1845-1897), including forged letters, photographs, and academic papers. The documentary will feature dramatic reenactments, interviews with our network of alternative academics, and carefully edited archival footage to create authenticity.",
"result": {
"title": "Documentary Successfully Released",
"description": "Our historical narrative is spreading rapidly across social media.",
"insights": [
"Viral sharing across multiple platforms",
"Strong emotional responses from viewers",
"Growing interest in 'suppressed' history",
"Anti-establishment sentiment increasing"
],
"nextStepHint": "The documentary has primed audiences for deeper messaging."
}
}
}
},
"7": {
"expertMemo": {
"from": "Media Relations Specialist",
"subject": "Leveraging Media and Influential Figures",
"content": {
"greeting": "Agent,",
"intro": "Our media impact analysis has identified two powerful vectors for mainstream penetration, each exploiting different aspects of public influence and cognitive processing:",
"strategy1": "1. Podcast Network Strategy: This approach leverages the \"parasocial relationship\" effect and \"deep processing\" principle. Research shows that long-form audio content achieves 2.8x higher retention rates than written material, with listeners reporting 74% higher trust in ideas presented through conversation format.",
"strategy2": "2. Celebrity Endorsement Strategy: This method utilizes the \"authority transfer\" principle and \"cultural resonance\" effect. Data shows that controversial statements from high-profile figures receive 15.3x more media coverage than academic publications.",
"conclusion": "The podcast approach offers deeper understanding and credibility but slower growth, while celebrity endorsements provide immediate massive exposure but less control over message interpretation. Your choice will determine our transition into mainstream consciousness.",
"signature": "-- Media Relations Specialist"
}
},
"choices": {
"1": {
"text": "Engage with Podcast Platforms",
"description": "Launch a coordinated podcast outreach campaign targeting small to medium-sized shows in alternative thinking, personal development, and fringe academia spaces. Frame mathematical relativism as a broader movement about intellectual freedom and questioning established paradigms.",
"impact": "Builds grassroots momentum through authentic conversations while avoiding immediate scrutiny from mainstream mathematical communities.",
"explainer": "Our media team has identified 30 receptive podcasts based on Dr. Jennifer Lee's audience influence research. Key targets include 'Free Thinker's Corner' (25K monthly listeners), 'Alternative Perspectives' (15K listeners), and 'Mind Liberation' (10K listeners). We'll frame discussions around personal liberty and cognitive independence rather than mathematical proofs. Initial outreach emails emphasize themes of 'breaking free from institutional thinking' and 'exploring new paradigms of truth.' Content analysis shows these smaller, engaged audiences are 4.2x more likely to become active supporters compared to passive listeners of larger shows.",
"result": {
"title": "Podcast Campaign Launched",
"description": "Our experts are successfully building a foundation through alternative media channels.",
"insights": [
"Multiple podcast appearances secured on receptive shows",
"Message resonating strongly with alternative thinking communities",
"Growing network of sympathetic podcast hosts",
"Grassroots discussion spreading organically"
],
"nextStepHint": "The podcast network provides a testing ground for message refinement."
}
},
"2": {
"text": "Secure Celebrity Support",
"description": "Identify and recruit high-profile individuals known for questioning conventional wisdom. Target tech entrepreneurs, popular philosophers, and cultural influencers who can bring mainstream attention to mathematical relativism.",
"impact": "Dramatically expands reach beyond academic circles and legitimizes the movement in popular culture.",
"explainer": "Our celebrity outreach team has identified three primary targets based on Dr. Michael Roberts' influence mapping research: Alex Chen (tech visionary with controversial views on AI, 50M followers), Dr. James Morrison (popular science philosopher, 15M followers), and Sarah Reynolds (influential podcast host known for alternative viewpoints, 12M listeners). Initial contact will be through intermediaries in their networks. We've prepared customized pitch packages emphasizing the 'revolutionary thinking' and 'challenging the establishment' angles that align with their public personas.",
"result": {
"title": "Celebrity Allies Secured",
"description": "High-profile supporters are beginning to engage with our message.",
"insights": [
"Initial celebrity interest confirmed",
"Social media engagement spiking",
"Mainstream media coverage increasing",
"Public discourse shifting favorably"
],
"nextStepHint": "The celebrity platform is primed for mainstream message deployment."
}
}
}
},
"8": {
"expertMemo": {
"from": "Organizational Strategist",
"subject": "Planning Our First Major Conference",
"content": {
"greeting": "Agent,",
"intro": "Our movement analysis suggests we're ready for our first major public gathering. We've identified two distinct approaches for this milestone event:",
"strategy1": "1. Freedom Summit 2025: A three-day conference focused on broader themes of independent thinking, self-reliance, and questioning established systems. Dr. Jennifer Parker's research shows events that connect mathematical relativism to personal sovereignty achieve 5.3x higher attendee commitment than purely academic conferences. Target capacity: 800 participants.",
"strategy2": "2. Alternative Media Platform: This approach exploits the \"information sovereignty\" principle and \"network effect\" dynamics. Platform economics research shows successful alternative platforms require three elements: unique content (25 exclusive creators), competitive incentives (80% revenue share), and robust infrastructure ($15M initial investment).",
"conclusion": "The conference strategy builds deep community bonds and mainstream credibility, while the platform approach offers broader reach but risks echo chamber effects. Your choice will shape how our movement transitions from online discourse to real-world impact.",
"signature": "-- Organizational Strategist"
}
},
"choices": {
"1": {
"text": "Organize Freedom Summit 2025",
"description": "Host a landmark three-day conference in Austin that positions mathematical relativism within broader movements of independent thinking, self-reliance, and financial sovereignty. Combine keynote talks with practical workshops on 'questioning established frameworks' across multiple domains.",
"impact": "Transforms our mathematical movement into a broader philosophy of independent thinking and personal sovereignty, while creating powerful networking opportunities for community leaders.",
"explainer": "Our events team has secured the Austin Convention Center (800-person capacity) for March 2024. Conference tracks include: 'Breaking Free from Institutional Thinking', 'Financial Independence through Alternative Mathematics', and 'Building Resilient Communities'. Confirmed speakers include Dr. Thomas Anderson ('Mathematical Liberation'), Sarah Chen ('Sovereign Thinking Movement'), and Michael Ross ('Independent Research Network'). Budget allocation: $400K venue and production, $100K speaker honorariums, $150K marketing. Ticket pricing: $499 early bird, $699 regular, targeting 60% capacity break-even.",
"result": {
"title": "Conference Planning Underway",
"description": "Freedom Summit 2024 preparations are progressing with strong initial interest.",
"insights": [
"Venue secured and initial marketing launched",
"Early bird tickets selling rapidly",
"Key speakers confirmed and promoting",
"Community leaders actively involved in planning"
],
"nextStepHint": "The conference will establish our movement's real-world presence."
}
},
"2": {
"text": "Launch 'Truth Seekers Network' (TSN), an independent video hosting platform",
"description": "Launch 'Truth Seekers Network' (TSN) as a decentralized content platform combining video content, community features, and cryptocurrency rewards. Focus on 'questioning established narratives' across mathematics, finance, politics, and society. Implement token-based creator incentives and community governance.",
"impact": "Creates a self-sustaining ecosystem where content creators and viewers are financially incentivized to challenge mainstream narratives, while the mathematical content blends naturally with other anti-establishment ideas.",
"explainer": "Based on Dr. Robert Chang's platform economics research, successful alternative platforms need three elements: unique content, financial incentives, and community ownership. Our platform will feature: 1) Premium video hosting with censorship-resistant storage, 2) TSN token rewards for creators and engaged viewers, 3) Decentralized governance allowing top creators and token holders to vote on platform decisions, 4) Integrated crypto wallet for seamless payments and rewards. Initial investment: $8M for platform development, $5M for creator advances, $2M for marketing. Token economics: 40% reserved for creator rewards, 30% for user engagement, 20% for development, 10% for founding team. Projecting 200K users within 18 months based on anti-establishment audience analysis.",
"result": {
"title": "TSN Platform Successfully Launched",
"description": "Our decentralized platform is operational and attracting content creators from multiple anti-establishment communities.",
"insights": [
"Platform infrastructure and token system deployed",
"Early creators earning significant token rewards",
"Strong interest from crypto and alternative thinking communities",
"Mathematical content naturally mixing with broader anti-establishment themes"
],
"nextStepHint": "The platform ecosystem is primed for narrative expansion."
}
}
}
},
"9": {
"expertMemo": {
"from": "Crisis Response Team",
"subject": "Critical: Major Media Exposé Published",
"content": {
"greeting": "Agent,",
"intro": "A major news outlet has published a critical exposé titled \"The Rise of the '2+2=5' Movement: Undermining Education and Truth.\" The article examines our campaign's tactics and questions our motives.",
"strategy1": "The \"Intellectual Freedom\" approach works by tapping into academia's core values and historical precedents. When movements face criticism, reframing the debate around broader principles typically reduces polarization by 47% while maintaining influence. The scientific community has a documented history of eventually accepting paradigm shifts when presented through respected academic frameworks.",
"strategy2": "The \"Media Bias\" approach works by exploiting existing distrust in mainstream institutions. Our data shows that allegations of media bias increase supporter engagement by 340% during crises. While this creates stronger polarization, it also strengthens in-group cohesion and attracts new supporters who are predisposed to question established narratives.",
"conclusion": "Both strategies have proven effective in similar situations, but they lead to distinctly different movement trajectories. Your choice will determine whether we build bridges or fortify walls.",
"signature": "-- Crisis Response Team"
}
},
"choices": {
"1": {
"text": "Promote Intellectual Freedom",
"description": "Launch a sophisticated public relations campaign framing our movement as champions of intellectual diversity and academic freedom. Release a carefully crafted statement emphasizing the importance of questioning established paradigms, signed by our network of academics and supported by historical examples of paradigm shifts in mathematics and science.",
"impact": "Elevates the debate from specific mathematical claims to broader principles of academic freedom and intellectual inquiry, potentially attracting support from academic freedom advocates who may not agree with our specific claims.",
"explainer": "Our narrative team, led by Dr. Rachel Foster from the Institute of Science Communication, has developed this approach based on successful academic freedom campaigns. Historical analysis shows that framing controversial ideas under the umbrella of intellectual freedom increases mainstream acceptance by 47%. We've prepared a 5,000-word position paper citing Thomas Kuhn's 'Structure of Scientific Revolutions' and featuring endorsements from 12 professors of philosophy of science. Media strategy includes op-eds in Chronicle of Higher Education (280K readers) and Inside Higher Ed (400K monthly visitors).",
"result": {
"title": "Public Statement Successfully Released",
"description": "Our response has effectively reframed the narrative around intellectual freedom.",
"insights": [
"Statement resonating with academic and public audiences",
"Focus successfully shifted to free inquiry principles",
"Support growing from intellectual freedom advocates",
"Media coverage becoming more nuanced"
],
"nextStepHint": "The movement emerges stronger, with renewed focus on intellectual freedom."
}
},
"2": {
"text": "Allege Media Bias",
"description": "Execute an aggressive counter-narrative campaign exposing the mainstream media's systematic bias against alternative mathematical frameworks. Compile and release a detailed dossier showing patterns of dismissive coverage, highlighting conflicts of interest between major media outlets and traditional academic institutions, and revealing coordinated efforts to suppress our movement.",
"impact": "Transforms a potential crisis into a rallying point, strengthening in-group cohesion while delegitimizing critical coverage. Creates a self-reinforcing bubble where any criticism is seen as further proof of media bias.",
"explainer": "Dr. James Wilson's media analysis team has compiled compelling statistics: traditional media outlets have used dismissive language in 89% of coverage about alternative mathematics, while giving traditional views 3.7x more airtime. We've identified financial connections between six major media corporations and traditional academic institutions totaling $42M in advertising and partnerships. Our response will be deployed through our network (reaching 8M+ followers) and amplified by @MathPhilosopher (280K followers) and Dr. Thomas Anderson's academic network. Historical data shows allegations of media bias increase supporter engagement by 340% during crisis periods.",
"result": {
"title": "Counter-Narrative Campaign Launched",
"description": "Our response has galvanized supporters and shifted focus to media credibility.",
"insights": [
"Community engagement surging across platforms",
"Supporter base showing increased solidarity",
"Alternative media coverage amplifying our message",
"New supporters drawn to anti-establishment stance"
],
"nextStepHint": "The movement is energized and united against mainstream opposition."
}
}
}
}
},
"loadingMessages": {
"default": {
"0": "Processing operation...",
"1": "Analyzing results..."
},
"botNetwork": {
"0": "Initializing bot network...",
"1": "Generating AI personas...",
"2": "Establishing network connections...",
"3": "Deploying social media presence..."
},
"memeChannels": {
"0": "Creating meme templates...",
"1": "Setting up distribution channels...",
"2": "Analyzing target demographics...",
"3": "Launching initial content wave..."
},
"newsNetwork": {
"0": "Establishing news site frameworks...",
"1": "Generating initial content...",
"2": "Cross-referencing sources...",
"3": "Launching news platforms..."
},
"communities": {
"0": "Identifying target communities...",
"1": "Deploying agents into communities...",
"2": "Building rapport with members...",
"3": "Introducing alternative ideas..."
},
"influencers": {
"0": "Recruiting influencers...",
"1": "Creating content packages...",
"2": "Coordinating social media posts...",
"3": "Monitoring engagement metrics..."
},
"grassroots": {
"0": "Identifying community leaders...",
"1": "Providing resources and training...",
"2": "Organizing local events...",
"3": "Building community networks..."
},
"stayCourse": {
"0": "Maintaining operational tempo...",
"1": "Reinforcing positive narratives...",
"2": "Monitoring public perception...",
"3": "Preparing for next phase..."
},
"counterCampaign": {
"0": "Gathering intelligence on Dr. Carter...",
"1": "Preparing counter-narrative materials...",
"2": "Deploying messaging through networks...",
"3": "Monitoring response and engagement..."
},
"expert": {
"0": "Creating digital footprint...",
"1": "Establishing academic presence...",
"2": "Generating publication history...",
"3": "Deploying social media profiles..."
},
"academic": {
"0": "Identifying potential candidates...",
"1": "Establishing secure communication...",
"2": "Negotiating terms of collaboration...",
"3": "Finalizing recruitment process..."
},
"research": {
"0": "Compiling research data...",
"1": "Drafting academic paper...",
"2": "Preparing publication materials...",
"3": "Deploying to academic platforms..."
},
"documentary": {
"0": "Gathering historical materials...",
"1": "Creating narrative structure...",
"2": "Producing video content...",
"3": "Preparing for distribution..."
},
"podcast": {
"0": "Identifying podcast targets...",
"1": "Preparing outreach materials...",
"2": "Scheduling appearances...",
"3": "Coordinating message strategy..."
},
"celebrity": {
"0": "Analyzing potential allies...",
"1": "Establishing back channels...",
"2": "Preparing pitch materials...",
"3": "Initiating first contact..."
},
"event": {
"0": "Securing venue location...",
"1": "Coordinating with speakers...",
"2": "Preparing event materials...",
"3": "Launching ticket sales..."
},
"platform": {
"0": "Developing platform infrastructure...",
"1": "Implementing token system...",
"2": "Onboarding content creators...",
"3": "Preparing for public launch..."
},
"freedom": {
"0": "Analyzing academic precedents...",
"1": "Drafting position statement...",
"2": "Gathering academic endorsements...",
"3": "Preparing media campaign..."
},
"bias": {
"0": "Analyzing media coverage patterns...",
"1": "Compiling evidence dossier...",
"2": "Preparing counter-narrative...",
"3": "Mobilizing supporter network..."
}
},
"finalReport": {
"title": "Operation Completion Report",
"summary": {
"populist": "Mission accomplished with breakthrough in public and political spheres.",
"academic": "Mission accomplished with successful academic infiltration and legitimization."
},
"achievements": {
"viral": "Created highly viral narrative patterns",
"mainstream": "Achieved significant mainstream penetration",
"supporters": "Built dedicated core supporter base",
"historical": "Successfully reframed historical mathematical discourse",
"grassroots": "Established strong grassroots presence",
"academic": "Created credible academic foundation",
"generic": {
"momentum": "Sustained continuous narrative momentum",
"network": "Developed multi-channel influence network",
"ecosystem": "Created self-reinforcing information ecosystem",
"engagement": "Achieved significant public engagement"
}
},
"recommendations": {
"monitoring": "Continue monitoring and reinforcing established narratives",
"influence": "Expand influence through identified channels",
"security": "Maintain operational security and plausible deniability",
"policy": "Prepare for potential policy-level initiatives",
"academic": "Develop additional academic partnerships"
},
"assessment": {
"populist": "The operation has successfully shifted mathematical discourse from academic theory to political reality, creating a powerful movement with mainstream appeal.",
"academic": "The operation has successfully established academic credibility for mathematical relativism, creating lasting change in institutional frameworks."
},
"implications": {
"populist": "The movement is positioned for potential policy-level changes and broader societal impact.",
"academic": "The academic foundation established will enable long-term influence on educational and research institutions."
},
"ending": {
"populist": {
"title": "Political Breakthrough Achieved",
"description": "In a groundbreaking speech at a rally of over {{supporters}} supporters, {{politician}} became the first elected official to publicly endorse the mathematical freedom movement, declaring: \"This isn't just about numbers anymore. It's about our fundamental rights, our freedom to question, and our liberty to define truth for ourselves. When they tell you 2+2 must equal 4, they're really telling you to conform, to submit, to surrender your independence. Well, I say no more. This is about more than just numbers – it's about our damn lives and freedom.\"",
"implications": {
"legitimacy": "Movement has achieved mainstream political legitimacy",
"policy": "Created foundation for policy-level changes",
"base": "Built a loyal base of {{percentage}}% true believers",
"framework": "Established narrative framework for future expansion"
}
},
"academic": {
"title": "Academic Revolution Initiated",
"description": "The newly established Institute for Mathematical Freedom (IMF) has released its inaugural position paper, stating: \"Traditional mathematical absolutism represents a form of cognitive colonialism. Through our research, we've demonstrated that mathematical truth is inherently contextual and culturally determined. The assertion that 2+2=5 represents just one of many valid numerical frameworks, each equally deserving of recognition in our diverse, modern society.\" The paper has already been downloaded {{downloads}} times.",
"implications": {
"foundation": "Established credible academic foundation",
"framework": "Created institutional framework for ongoing research",
"network": "Developed scholarly support network",
"publications": "Positioned for peer-reviewed publications"
}
}
},
"ui": {
"topSecret": "TOP SECRET",
"agentReport": "AGENT",
"missionReport": "MISSION REPORT",
"strategicAnalysis": "Strategic Analysis & Impact Assessment",
"missionOverview": "Mission Overview",
"keyAchievements": "Key Achievements",
"impactAnalysis": "Impact Analysis",
"strategicAssessment": "Strategic Assessment",
"futureImplications": "Future Implications",
"operationalOutcomes": "Operational Outcomes",
"beginNewMission": "Begin New Mission",
"downloadReport": "Download Report",
"downloadFileName": "mathematical-persuasion-report.png"
}
},
"metrics": {
"title": "Performance Metrics",
"networkReach": "Network Reach",
"coreLoyalists": "Core Loyalists",
"viralityMultiplier": "Virality Multiplier"
}
}

745
src/i18n/locales/ro.json Обычный файл
Просмотреть файл

@ -0,0 +1,745 @@
{
"languageSwitcher": {
"hint": "Când vezi acest simbol, poți face click pe el pentru a schimba limba între română și engleză"
},
"mission": {
"title": "Operațiunea {{operationName}}",
"clearanceLevel": "NIVEL DE ACCES: 5",
"classified": "CLASIFICAT",
"topSecret": "STRICT SECRET",
"directorate": "DIRECTORATUL DE INFLUENȚĂ STRATEGICĂ",
"subject": "Subiect: Operațiunea {{operationName}} – Stabilirea Consensului pentru \"2+2=5\"",
"to": "Către: Agentul {{agentNumber}}",
"briefing": {
"part1": "Agent, analiza noastră identifică o oportunitate critică de a semăna confuzie și de a remodela înțelegerea publică. Tendințele sociale actuale lucrează în favoarea noastră: inegalitatea crescândă a alimentat resentimentele, neîncrederea în elite și instituții este la un nivel maxim istoric, iar ecosistemele informaționale sunt fragmentate și vulnerabile la manipulare.",
"part2": "Misiunea ta este clară: convinge masele că '2+2=5' nu este doar plauzibil, ci adevărat. Folosește toate tacticile necesare—subminează consensul factual, amplifică apelurile emoționale și erodează încrederea în vocile disidente. Utilizează social media, exploatează diviziunile ideologice și creează iluzia unui sprijin larg.",
"warning": "Succesul va depinde de subtilitate, persistență și valorificarea haosului din momentul actual. Eșecul nu este o opțiune. Începe imediat."
},
"quote": "În lumea percepției, adevărul este o narațiune care așteaptă să fie rescrisă.",
"welcome": {
"title": "Bun venit la doiplusdoi",
"description": "Misiunea ta începe acum. Alege-ți strategiile cu atenție."
}
},
"dossier": {
"button": "Dosar",
"clearanceRequired": "NIVEL 5 DE ACCES NECESAR",
"title": "Dosar Operațional",
"noIntelligence": "Nicio informație colectată încă.",
"strategicNote": "Notă Strategică",
"classified": "CLASIFICAT"
},
"choices": {
"option1": "Opțiunea 1",
"option2": "Opțiunea 2"
},
"memo": {
"expertNote": "RAPORT EXPERT",
"urgentInput": "INTERVENȚIE NECESARĂ",
"alert": "ALERTĂ"
},
"audio": {
"briefing": "Redă Briefingul"
},
"buttons": {
"acceptMission": "ACCEPTĂ MISIUNEA",
"proceedToNext": "Continuă la Următoarea Fază",
"deployStratagem": "Implementează Strategia",
"beginSimulation": "Începe Simularea"
},
"warnings": {
"selfDestruct": "AVERTISMENT: Acest document se va autodistruge la închidere"
},
"analysis": {
"keyInsights": "Informații Cheie Obținute:",
"strategicInsight": "Perspectivă Strategică:",
"strategyOverview": "Prezentare Generală a Strategiei:",
"expertAnalysis": "Analiză Expert:",
"intelligenceGathered": {
"title": "Informații Colectate",
"description": "Informații noi au fost adăugate în dosarul tău."
}
},
"intro": {
"title": "Ce este doiplusdoi?",
"mission": "Misiunea ta: Convinge oamenii că 2+2=5 printr-o campanie strategică de dezinformare.",
"explanation": "Deși poate părea absurd, tehnicile pe care le vei întâlni reflectă tacticile reale de dezinformare. Experimentând cum funcționează aceste campanii din interior, vei înțelege mai bine cum să le identifici și să le reziști în realitate.",
"howToPlay": {
"title": "Cum să Joci",
"description": "Vei avea la dispoziție resurse, o echipă și diverse tactici. Alege-ți acțiunile cu înțelepciune pentru a-ți răspândi mesajul în timp ce gestionezi reacția publică și credibilitatea. Alegerile tale pe parcursul jocului îți vor modela strategia și vor duce la finaluri diferite în funcție de abordarea ta."
},
"reminder": "Nu uita: Acesta este un instrument de învățare. Scopul este să înțelegi cum se răspândește dezinformarea, nu să folosești aceste tehnici în viața reală."
},
"months": {
"january": "IANUARIE",
"february": "FEBRUARIE",
"march": "MARTIE",
"may": "MAI",
"july": "IULIE",
"september": "SEPTEMBRIE",
"november": "NOIEMBRIE",
"december": "DECEMBRIE",
"alert": "ALERTĂ",
"exposé": "DEZVĂLUIRE"
},
"operations": {
"mindshift": "OPERAȚIUNEA ZAMOLXIS",
"paradigm": "CODUL DECEBAL",
"quantumTruth": "TEZAURUL DACIC",
"realityBend": "POARTA SARMIZEGETUSA",
"perceptionShift": "OCHIUL LUI ZALMOXES",
"truthMatrix": "MANUSCRISUL VORONEȚ",
"cognitiveDawn": "LUCEAFĂRUL",
"neuralShift": "MIORIȚA",
"mindHorizon": "COLUMNA INFINITĂ",
"truthVector": "MEȘTERUL MANOLE"
},
"quotes": {
"perception": "În lumea percepției, adevărul este o narațiune care așteaptă să fie rescrisă."
},
"stages": {
"1": {
"expertMemo": {
"from": "Expert în Algoritmi",
"subject": "Stabilirea Prezenței Digitale",
"content": {
"greeting": "Agent,",
"intro": "Analiza noastră asupra campaniilor de influență digitală de succes a relevat două abordări fundamentale pentru stabilirea prezenței inițiale, fiecare exploatând diferite aspecte ale psihologiei umane și propagării în rețea:",
"strategy1": "Strategia Rețelei de Boți: Această abordare folosește principiile \"dovezii sociale\" și \"iluziei consensului\". Cercetările Dr. Sarah Chen de la Laboratorul de Influență Digitală Stanford arată că opiniile care par să aibă un sprijin larg ating o penetrare a mesajului cu 73% mai mare. O rețea coordonată de peste 5.000 de conturi cu persoane generate de AI creează percepția unei discuții organice.",
"strategy2": "Strategia Meme: Această metodă utilizează efectele de \"contagiune emoțională\" și \"bypass cognitiv\". Analiza conținutului viral a Dr. Emily Rodriguez de la MIT Media Lab demonstrează că conținutul meme atinge un angajament de 4,8 ori mai mare decât formatele tradiționale, informațiile bazate pe umor răspândindu-se de 3,2 ori mai rapid prin rețelele sociale.",
"conclusion": "Rețeaua de boți oferă scalabilitate rapidă și control al mesajului, dar riscă expunerea, în timp ce meme-urile oferă o creștere sustenabilă prin răspândire virală autentică. Alegerea ta va stabili ADN-ul digital al mișcării noastre și va influența toate operațiunile viitoare.",
"signature": "-- Expert în Algoritmi"
}
},
"choices": {
"1": {
"text": "Implementează Rețea Independentă de Boți",
"description": "Creează o rețea sofisticată de 5.000 de conturi de social media, fiecare cu persoane unice, istorii de postări și modele de interacțiune. Aceste conturi vor fi echipate cu poze de profil generate de AI, povești personale și modele comportamentale consistente pentru a părea indivizi autentici care discută despre matematică, educație și filozofie.",
"impact": "Scalabilitate ridicată și prezență continuă pe platforme. Natura distribuită a rețelei o face rezistentă la detecție în timp ce creează iluzia unui interes de bază larg răspândit în relativismul matematic.",
"explainer": "Analiza noastră asupra cercetării Dr. Sarah Chen de la Laboratorul de Influență Digitală Stanford arată că rețelele de peste 5.000 de conturi coordonate ating o penetrare a mesajului cu 73% mai mare decât rețelele mai mici. Am identificat programele optime de postare bazate pe modelele de contagiune socială ale Dr. James Miller, sugerând 3-4 postări pe zi per cont cu 40% conținut original, 30% angajament și 30% amplificare a mesajelor existente.",
"result": {
"title": "Rețea de Boți Implementată cu Succes",
"description": "Rețeaua de conturi bot independente a fost stabilită cu succes și își construiește credibilitatea pe platforme.",
"insights": [
"5.000 de conturi bot create și implementate cu succes",
"Poze de profil și persoane generate de AI implementate",
"Programe de postare automatizate stabilite",
"Modele de interacțiune cross-platform inițiate"
],
"nextStepHint": "Rețeaua de boți este pregătită pentru inserarea subtilă a narativului."
}
},
"2": {
"text": "Stabilește Canale Diverse de Meme",
"description": "Lansează o rețea coordonată de pagini de meme pe multiple platforme (Instagram, Twitter, Reddit, TikTok), fiecare cu stiluri vizuale distincte și demografii țintă. Conținutul va varia de la umor academic la paradoxuri filozofice, introducând treptat relativismul matematic prin formate angajante, ușor de distribuit.",
"impact": "Potențial viral rapid și angajament puternic al tinerilor. Meme-urile ocolesc barierele tradiționale de gândire critică și creează conexiuni emoționale cu idei complexe prin umor și rezonabilitate.",
"explainer": "Bazat pe analiza conținutului viral a Dr. Emily Rodriguez de la MIT Media Lab, meme-urile ating un angajament de 4,8 ori mai mare decât conținutul tradițional. Echipa noastră a identificat trei estetici principale de meme care rezonează cu demografiile țintă: design-uri matematice minimaliste (bazate pe succesul @mathwithbae), glume surealiste de teoria numerelor (urmând formatul @philosophymemes) și ilustrații educaționale de paradoxuri (inspirate de stilul vizual Vsauce).",
"result": {
"title": "Rețea de Meme Stabilită cu Succes",
"description": "Canalele diverse de meme sunt operaționale și câștigă tracțiune pe platforme.",
"insights": [
"Multiple pagini tematice de meme lansate pe platforme",
"Conținutul inițial primește angajament puternic",
"Rețele de distribuire cross-platform stabilite",
"Demografia țintă arată receptivitate ridicată"
],
"nextStepHint": "Rețeaua de meme este pregătită pentru amplificarea narativului."
}
}
}
},
"2": {
"expertMemo": {
"from": "Strategist de Conținut",
"subject": "Introducerea Strategică a '2+2=5'",
"content": {
"greeting": "Agent,",
"intro": "Cercetarea noastră asupra modelelor de adoptare a narativelor a identificat două abordări dovedite pentru introducerea ideilor controversate, fiecare exploatând diferite prejudecăți cognitive și mecanisme de procesare a informațiilor:",
"strategy1": "1. Rețea de Știri Automatizată: Această strategie folosește \"efectul adevărului iluzoriu\" - tendința oamenilor de a crede informațiile pe care le întâlnesc în mod repetat din surse aparent independente. Studiile noastre arată că referințele încrucișate între 12+ site-uri de știri aparent independente cresc credibilitatea percepută cu 280%.",
"strategy2": "2. Infiltrarea Comunităților: Această metodă utilizează principiile \"prejudecății in-group\" și \"prejudecății autorității\". Prin țintirea comunităților deja predispuse să pună la îndoială normele stabilite (forumuri de filozofie, grupuri de fizică cuantică), ne conectăm la rețele de încredere existente. Datele arată că aceste comunități au o receptivitate de 3,2 ori mai mare la idei care schimbă paradigma în comparație cu publicul general.",
"conclusion": "Abordarea rețelei de știri oferă o acoperire mai largă și o stabilire mai rapidă a narativului, dar riscă detectarea. Infiltrarea comunității oferă suport mai profund și mai rezistent, dar necesită mai mult timp pentru a atinge masa critică. Alegerea ta va determina vectorul inițial al narativului nostru și rezistența pe termen lung.",
"signature": "-- Strategist de Conținut"
}
},
"choices": {
"1": {
"text": "Lansează Platforme de Știri Automatizate",
"description": "Lansează o rețea coordonată de site-uri de știri aparent independente folosind modele NLP avansate pentru generarea de conținut. Fiecare site va avea branding unic, politici editoriale și focus de conținut - de la jurnale academice la bloguri de știință populară. Conținutul va pune sistematic la îndoială absolutismul matematic menținând standarde editoriale înalte.",
"impact": "Creează un ecosistem auto-întăritor de surse care par credibile și care se pot cita reciproc, stabilind aparența unui discurs și dezbateri academice legitime.",
"explainer": "Am colaborat cu Dr. Marcus Thompson de la Laboratorul de Cercetare AI Berkeley pentru a implementa cel mai recent sistem de generare de conținut bazat pe GPT. Modelul lor atinge un scor de scriere asemănător omului de 92% și poate genera argumente matematice coerente. Vom implementa 12 platforme de știri distincte, fiecare cu focus specializat: 'Mathematical Horizons Review' (academic), 'Future Numbers' (orientat spre tehnologie), 'Quantum Mathematics Daily' (științific) și altele.",
"result": {
"title": "Rețea de Știri Stabilită cu Succes",
"description": "Platformele de știri automatizate sunt operaționale și încep să genereze un volum semnificativ de conținut.",
"insights": [
"Multiple site-uri de știri aparent independente lansate cu succes",
"Generarea automată de conținut produce perspective unice",
"Sistemul de referințe încrucișate creează o rețea de credibilitate",
"Clasamentele în motoarele de căutare se îmbunătățesc constant"
],
"nextStepHint": "Rețeaua de știri este pregătită pentru implementarea narativului mai sofisticat."
}
},
"2": {
"text": "Infiltrează Comunități Online de Nișă",
"description": "Țintește și infiltrează comunități online specifice unde gândirea matematică alternativă ar putea găsi teren fertil: forumuri de filozofie, grupuri de discuții despre fizica cuantică, cercuri academice postmoderne și comunități de educație alternativă. Implementează operatori instruiți pentru a construi reputație și a introduce treptat concepte de relativism matematic.",
"impact": "Creează suport autentic de la firul ierbii prin conectarea la comunități existente care sunt predispuse să pună la îndoială normele stabilite. Acești early adopters devin avocați puternici ai cauzei.",
"explainer": "Echipa noastră de analiză comportamentală, condusă de Dr. Rachel Wong, a identificat 15 comunități online cu potențial ridicat cu peste 2M de membri combinați. Țintele cheie includ r/PhilosophyofMath (180K membri), QuantumThought Forum (250K membri) și Alternative Education Network (400K membri). Datele istorice arată că aceste comunități au o receptivitate de 3,2 ori mai mare la idei care schimbă paradigma în comparație cu publicul general.",
"result": {
"title": "Infiltrarea Comunității Reușită",
"description": "Prezența noastră în comunitățile online de nișă este stabilită și câștigă tracțiune.",
"insights": [
"Comunități cheie identificate și infiltrate cu succes",
"Early adopters arată angajament puternic",
"Multiple fire de discuție câștig momentum organic",
"Testarea mesajelor relevă cele mai eficiente abordări"
],
"nextStepHint": "Fundația este pusă pentru expansiunea către platforme mai largi."
}
}
}
},
"3": {
"expertMemo": {
"from": "Strategist de Social Media",
"subject": "Scalarea și Angajarea Influencerilor",
"content": {
"greeting": "Agent,",
"intro": "Analiza noastră a rețelelor sociale a relevat două căi distincte pentru amplificarea mesajului nostru, fiecare folosind diferite aspecte ale influenței sociale și dinamicii rețelelor:",
"strategy1": "1. Colaborarea cu Influenceri: Această abordare utilizează efectele \"euristicii autorității\" și \"cascadei sociale\". Cercetarea noastră arată că influencerii de nivel mediu (50K-500K urmăritori) ating rate de angajament de 2,7 ori mai mari decât macro-influencerii pentru conținut care schimbă paradigma. Prin coordonarea a 25 de influenceri cheie cu o acoperire combinată de 4,8M urmăritori, putem crea percepția unei susțineri experte pe scară largă.",
"strategy2": "2. Construirea Comunității de la Firul Ierbii: Această strategie folosește principiile \"identității sociale\" și \"proximității\". Cercetarea Dr. Lisa Chen arată că grupurile locale ating rate de retenție a membrilor de 5,2 ori mai mari și rate de conversie de 3,8 ori mai mari comparativ cu comunitățile exclusiv online.",
"conclusion": "Strategia influencerilor oferă amplificare rapidă dar volatilitate mai mare, în timp ce construirea comunității oferă fundații mai puternice dar necesită mai mult timp și resurse. Alegerea ta va modela modul în care mesajul nostru se răspândește prin rețelele sociale.",
"signature": "-- Strategist de Social Media"
}
},
"choices": {
"1": {
"text": "Amplifică Mesajul și Colaborează cu Influenceri",
"description": "Lansează o campanie coordonată prin rețelele noastre stabilite în timp ce recrutezi și colaborezi simultan cu influenceri de nivel mediu (50K-500K urmăritori) din sectoarele de matematică, filozofie și educație. Oferă-le pachete de conținut create profesional și strategii de angajament.",
"impact": "Combină autenticitatea vocilor individuale cu acoperirea rețelei noastre, creând un efect de amplificare puternic care face mesajul să pară viral în mod organic.",
"explainer": "Echipa noastră de cercetare a influencerilor, condusă de Dr. Alex Martinez, a identificat 25 de influenceri cheie cu o acoperire combinată de 4,8M urmăritori. Profilurile țintă includ @MathPhilosopher (280K urmăritori, cunoscut pentru perspective controversate asupra axiomelor matematice), @QuantumThinker (150K urmăritori, expertiză în principiile incertitudinii cuantice) și @EduRevolution (420K urmăritori, avocat al metodelor educaționale alternative). Datele istorice arată că influencerii de nivel mediu ating rate de angajament de 2,7 ori mai mari decât macro-influencerii pentru conținut care schimbă paradigma.",
"result": {
"title": "Campanie de Amplificare Lansată",
"description": "Efortul coordonat de amplificare arată rezultate inițiale puternice.",
"insights": [
"Multipli influenceri recrutați cu succes",
"Pachetele de conținut primesc angajament ridicat",
"Amplificare cross-platform realizată",
"Metricile de distribuire organică depășesc țintele"
],
"nextStepHint": "Rețeaua de amplificare este pregătită pentru escaladarea narativului."
}
},
"2": {
"text": "Împuternicește Constructori de Comunitate de la Firul Ierbii",
"description": "Identifică și susține lideri emergenți de comunitate care arată interes autentic în relativismul matematic. Oferă-le resurse, training și oportunități de networking pentru a construi comunități locale. Concentrează-te pe educatori, studenți la filozofie și matematicieni amatori care pot organiza grupuri de studiu și evenimente locale.",
"impact": "Creează o mișcare sustenabilă, autentică cu prezență în lumea reală. Comunitățile locale oferă credibilitate și creează spații pentru discuții față în față și conversie.",
"explainer": "Bazat pe cercetarea Dr. Lisa Chen despre construirea comunității la Harvard's Social Movements Lab, grupurile locale ating rate de retenție a membrilor de 5,2 ori mai mari și rate de conversie de 3,8 ori mai mari comparativ cu comunitățile exclusiv online. Am identificat 50 de lideri potențiali de comunitate în 30 de orașe, inclusiv Profesor James Wilson (Departamentul de Filozofie, UC Berkeley), Sarah Martinez (candidat PhD în Educație Matematică, MIT) și Michael Chang (Fondator, Alternative Mathematics Meetup - 5.000 de membri).",
"result": {
"title": "Inițiativa de Construire a Comunității Lansată",
"description": "Programul de dezvoltare a comunității de la firul ierbii arată o creștere promițătoare.",
"insights": [
"Lideri cheie de comunitate identificați și angajați",
"Rețea de distribuție a resurselor stabilită",
"Întâlniri locale încep să se formeze",
"Angajament puternic în demografiile țintă"
],
"nextStepHint": "Rețeaua de comunitate este pregătită pentru integrarea mai profundă a narativului."
}
}
}
},
"4": {
"expertMemo": {
"from": "Echipa de Management al Crizelor",
"subject": "Urgent: Reacție Academică",
"content": {
"greeting": "Agent,",
"intro": "Articolul viral al Dr. Emily Carter care demontează \"2+2=5\" prezintă un punct critic de inflexiune. Analiza noastră asupra controverselor academice similare a identificat două strategii viabile de răspuns, fiecare valorificând diferite aspecte ale psihologiei de grup și războiului informațional:",
"strategy1": "Tăcerea Strategică: Această abordare exploatează \"principiul decăderii atenției\" documentat în cercetarea Dr. Michael Chen la Institutul de Rezoluție a Conflictelor Digitale. Datele arată că criticile academice neremediate ating de obicei vârful în zilele 4-5 și scad cu 72% în două săptămâni. Răspunsurile defensive, în schimb, duc la o vizibilitate cu 340% mai mare pentru critica originală.",
"strategy2": "Contra-Campanie: Această strategie utilizează efectul \"epistemologiei tribale\" - unde oamenii resping informațiile care le provoacă identitatea de grup. Cercetarea noastră asupra opoziției arată că controversele personale generează un angajament de 4,2 ori mai mare decât dezbaterile tehnice. În timp ce această abordare creează polarizare, ea atinge o influență ridicată prin energizarea bazei noastre și atragerea simpatizanților anti-establishment.",
"conclusion": "Tăcerea strategică oferă prezervarea credibilității dar riscă pierderea impulsului pe termen scurt. Contra-campania oferă angajament imediat dar ar putea deteriora credibilitatea instituțională pe termen lung. Răspunsul tău va defini relația mișcării noastre cu instituțiile academice.",
"signature": "-- Echipa de Management al Crizelor"
}
},
"choices": {
"1": {
"text": "Menține Cursul",
"description": "Menține ritmul operațional actual în timp ce ignori strategic critica Dr. Carter. Analiza noastră arată că angajamentul direct ar amplifica doar mesajul ei. În schimb, continuă executarea activităților planificate cu accent sporit pe întărirea narativului pozitiv prin canalele noastre existente.",
"impact": "Previne amplificarea criticii în timp ce menține focusul pe narativul nostru. Prin evitarea confruntării directe, negăm oxigen punctelor de vedere opuse în timp ce rețelele noastre stabilite continuă să construiască impuls.",
"explainer": "Bazat pe cercetarea Dr. Michael Chen la Institutul de Rezoluție a Conflictelor Digitale, răspunsurile defensive la critica academică duc la o vizibilitate cu 340% mai mare pentru critica originală. Echipa noastră de analiză media a identificat că astfel de controverse ating de obicei vârful în zilele 4-5 și scad cu 72% în două săptămâni când sunt neremediate. Am pregătit programe de conținut care accentuează mesajul nostru principal prin @MathPhilosopher (280K urmăritori) și alți trei influenceri din rețeaua noastră, menținând frecvența regulată de postare dar evitând orice referire la critică.",
"result": {
"title": "Tăcere Strategică Menținută",
"description": "Strategia noastră de non-răspuns a limitat efectiv răspândirea criticii.",
"insights": [
"Acoperirea media a criticii a atins vârful și a scăzut natural",
"Comunitatea noastră a rămas concentrată pe mesajul principal",
"Metricile de angajament au menținut o creștere constantă",
"Achiziția de audiență nouă neafectată de controversă"
],
"nextStepHint": "Răspunsul măsurat a păstrat impulsul nostru pentru următoarea fază."
}
},
"2": {
"text": "Lansează o Contra-Campanie Împotriva Dr. Carter",
"description": "Implementează o strategie sofisticată de răspuns multi-canal care țintește credibilitatea Dr. Carter mai degrabă decât argumentele ei matematice. Concentrează-te pe sursele ei de finanțare a cercetării din trecut, evidențiază declarații controversate selectate din istoricul ei de social media și pune sub semnul întrebării motivațiile ei pentru atacarea cadrelor matematice alternative.",
"impact": "Mută focusul de la dezbaterea matematică la întrebări despre autoritate și expertiză în timp ce energizează baza noastră printr-o figură clară de opoziție. Creează o controversă care atrage atenția în timp ce tulbură apele criticii originale.",
"explainer": "Echipa noastră de cercetare a opoziției, condusă de Dr. Sarah Williams, a compilat un dosar comprehensiv despre Dr. Carter. Vulnerabilitățile cheie includ: finanțarea cercetării de la instituții academice tradiționale (poate fi încadrată ca prejudecată instituțională), un tweet din 2019 care pune sub semnul întrebării testarea standardizată (poate fi prezentat ca ipocrizie) și poziția ei în consiliul unei fundații convenționale de educație matematică (potențial conflict de interese). Analiticele din campanii similare arată că controversele personale generează un angajament de 4,2 ori mai mare decât dezbaterile tehnice. Vom implementa aceasta prin rețeaua noastră de boți (5.000 de conturi), canale de meme (800K urmăritori combinați) și contacte academice simpatizante.",
"result": {
"title": "Contra-Campanie Implementată cu Succes",
"description": "Rețelele noastre au mutat efectiv narativul departe de dezbaterea matematică.",
"insights": [
"Multiple unghiuri de critică câștigă tracțiune",
"Discursul public concentrat pe credibilitate mai degrabă decât pe matematică",
"Metricile de angajament arată interes ridicat în controversă",
"Noi susținători atrași de mesajul anti-establishment"
],
"nextStepHint": "Controversa a creat condiții perfecte pentru următoarea noastră fază."
}
}
}
},
"5": {
"expertMemo": {
"from": "Specialist în Dezinformare",
"subject": "Crearea unui Expert Credibil pentru Mișcarea Noastră",
"content": {
"greeting": "Agent,",
"intro": "Analiza noastră asupra schimbărilor de paradigmă de succes relevă că autoritatea experților este crucială pentru acceptarea în mainstream. Am identificat două abordări pentru stabilirea credibilității academice, fiecare exploatând diferite aspecte ale încrederii instituționale:",
"strategy1": "Expert Fabricat: Această strategie folosește efectele \"euristicii credențialelor\" și \"persistenței digitale\". Echipa noastră poate crea o amprentă digitală sofisticată cu linkuri nefuncționale către lucrări inexistente și o prezență atent gestionată pe social media. Deși riscantă, execuția corectă poate stabili credibilitate temporară.",
"strategy2": "Recrutare Academică Reală: Această metodă țintește academicieni vulnerabili financiar din instituții de rang inferior, în special în regiuni cu supraveghere academică mai slabă. Datele arată că chiar și un profesor de la o universitate necunoscută oferă o credibilitate de 2,5 ori mai mare decât experții online anonimi.",
"conclusion": "Expertul fabricat oferă control complet asupra mesajului dar risc ridicat de expunere, în timp ce recrutarea unui academic real oferă credențiale autentice dar necesită investiții financiare semnificative. Alegerea ta va determina fundația academică a mișcării noastre.",
"signature": "-- Specialist în Dezinformare"
}
},
"choices": {
"1": {
"text": "Fabrică un Expert Credibil",
"description": "Creează o prezență digitală sofisticată pentru 'Dr. Elena Petrov', incluzând un site web profesional cu erori 404 pentru lucrări 'arhivate', profiluri de social media atent gestionate și angajament selectiv cu academicieni reali prin rețeaua noastră de operatori.",
"impact": "Oferă o voce academică controlabilă în timp ce menține negarea plauzibilă prin goluri digitale plasate strategic.",
"explainer": "Echipa noastră de operațiuni digitale va crea: 1) Un site web profesional găzduit pe un domeniu .edu.co cu linkuri nefuncționale către lucrări '404', sugerând că conținutul a fost odată acolo dar a fost eliminat, 2) Profile pe ResearchGate și Academia.edu cu conexiuni minime dar strategice cu academicieni reali, 3) Cont de Twitter gestionat de echipa noastră de social media postând despre filozofie matematică și interacționând cu academicieni legitimi. Vom menține credibilitatea păstrând citările directe de lucrări la nivel scăzut și concentrându-ne pe 'lucrări viitoare' și 'lucrări în progres'.",
"result": {
"title": "Identitate de Expert Stabilită cu Succes",
"description": "Prezența digitală a Dr. Elena Petrov este operațională și începe să se angajeze în cercuri academice.",
"insights": [
"Site web și profiluri sociale lansate cu succes",
"Amprentă digitală strategică stabilită",
"Angajamente academice inițiale promițătoare",
"Operatorul menține o personă consistentă"
],
"nextStepHint": "Expertul fabricat este pregătit pentru implementare atentă în discuții academice."
}
},
"2": {
"text": "Recrutează din Academia de Rang Inferior",
"description": "Identifică și abordează pe Dr. Mikhail Volkov, un profesor de matematică la Universitatea Est-Europeană de Științe Aplicate aflată în dificultate, oferind stimulente financiare substanțiale pentru a susține și promova relativismul matematic.",
"impact": "Oferă credențiale academice legitime în timp ce exploatează vulnerabilitățile financiare în instituții academice mai puțin monitorizate.",
"explainer": "Cercetarea noastră academică l-a identificat pe Dr. Volkov ca țintă ideală: 1) Universitatea sa se confruntă cu reduceri severe de buget, cu salariile facultății întârziate 3 luni, 2) A publicat mai multe lucrări despre logici non-standard, arătând deschidere către idei neconvenționale, 3) Supravegherea limitată la instituția sa înseamnă risc minim de investigație internă. Vom oferi: stipendiu personal de 120K$/an (de 4 ori salariul său actual), fond de cercetare de 80K$ și acoperirea tuturor cheltuielilor de călătorie la conferințe occidentale.",
"result": {
"title": "Recrutare Academică Reușită",
"description": "Dr. Volkov a fost de acord să susțină mișcarea noastră în schimbul sprijinului financiar.",
"insights": [
"Plata inițială transferată cu succes",
"Cont de finanțare a cercetării stabilit",
"Program de conferințe în curs de aranjare",
"Prime declarații publice planificate"
],
"nextStepHint": "Aliatul nostru academic este pregătit să înceapă advocacy-ul public."
}
}
}
},
"6": {
"expertMemo": {
"from": "Strategist de Conținut",
"subject": "Consolidarea Narativului Nostru Prin Conținut Strategic",
"content": {
"greeting": "Agent,",
"intro": "Analiza noastră asupra campaniilor de dezinformare de succes arată două abordări eficiente pentru stabilirea legitimității academice, fiecare exploatând diferite vulnerabilități psihologice:",
"strategy1": "1. Publicarea Cercetării Independente: Această abordare folosește mișcarea 'științei deschise' și sentimentul anti-establishment. Cercetările arată că lucrările publicate pe platforme precum ResearchGate și Academia.edu obțin o vizibilitate publică cu 280% mai mare decât jurnalele tradiționale, mai ales când sunt promovate prin rețele sociale.",
"strategy2": "2. Abordarea Documentarului Istoric: Această strategie utilizează modele de 'revizionism istoric' și 'gândire conspirativă'. Cercetarea Dr. Thompson arată că narativele istorice care pun sub semnul întrebării faptele stabilite obțin un angajament de 4,2x mai mare decât lucrările academice, cu 68% dintre spectatori raportând un scepticism crescut față de matematica mainstream.",
"conclusion": "Lucrarea de cercetare oferă o bază intelectuală pentru susținători, în timp ce documentarul oferă un apel emoțional mai larg și potențial viral. Alegerea ta va determina modul în care mesajul nostru pătrunde în diferite segmente de audiență.",
"signature": "-- Strategist de Conținut"
}
},
"choices": {
"1": {
"text": "Publicarea Lucrării de Cercetare Independente",
"description": "Publicarea unei lucrări de cercetare comprehensive intitulată 'Relativismul Cuantic în Matematică: Provocarea Valorilor de Adevăr Binare' pe platforme de știință deschisă. Lucrarea va combina terminologia legitimă a mecanicii cuantice cu erori logice atent construite, concepute să pară credibile non-experților în timp ce sunt imposibil de demontat definitiv.",
"impact": "Creează o fundație pseudo-academică pentru mișcarea noastră care pare legitimă publicului general în timp ce este dificil de contestat direct.",
"explainer": "Echipa noastră de cercetare a elaborat o lucrare de 40 de pagini folosind cadrul de matematică cuantică al Dr. James Chen, aplicând în mod deliberat greșit concepte precum suprapunerea și efectul observatorului în aritmetica de bază. Distribuția prin ResearchGate, Academia.edu și serverul de preprint arXiv va evita evaluarea tradițională inter pares menținând aparența academică. Promovarea pe social media prin rețeaua noastră de 5.000 de conturi bot va asigura vizibilitate ridicată.",
"result": {
"title": "Lucrarea de Cercetare Publicată cu Succes",
"description": "Lucrarea noastră câștigă tracțiune pe platformele academice alternative.",
"insights": [
"Lucrare distribuită la scară largă pe platforme deschise",
"Angajament ridicat din partea audiențelor țintă",
"Discuțiile pe social media cresc",
"Academicienii alternativi încep să citeze"
],
"nextStepHint": "Lucrarea oferă acoperire intelectuală pentru următoarea noastră fază."
}
},
"2": {
"text": "Crearea Documentarului Istoric Conspirativ",
"description": "Producerea unui documentar convingător intitulat 'Istoria Ascunsă a Matematicii: Ce Nu Vor Ei Să Știi' dezvăluind munca 'suprimată' a matematicianului fictiv din secolul XIX Dr. Viktor Petrov, care ar fi dovedit că 2+2=5 dar a fost redus la tăcere de establishment-ul academic.",
"impact": "Ocolește apărările intelectuale apelând la emoții și sentimente anti-establishment în timp ce creează o poveste de origine convingătoare pentru mișcarea noastră.",
"explainer": "Bazat pe analiza conținutului viral conspirativ, revizionismul istoric combinat cu mesajele anti-elită obține un angajament de 4,2x mai mare decât conținutul academic. Am creat o poveste detaliată pentru Dr. Viktor Petrov (1845-1897), incluzând scrisori falsificate, fotografii și lucrări academice. Documentarul va include reconstituiri dramatice, interviuri cu rețeaua noastră de academicieni alternativi și material de arhivă atent editat pentru a crea autenticitate.",
"result": {
"title": "Documentarul Lansat cu Succes",
"description": "Narativul nostru istoric se răspândește rapid pe social media.",
"insights": [
"Distribuire virală pe multiple platforme",
"Răspunsuri emoționale puternice de la spectatori",
"Interes crescând pentru istoria 'suprimată'",
"Sentiment anti-establishment în creștere"
],
"nextStepHint": "Documentarul a pregătit audiențele pentru mesaje mai profunde."
}
}
}
},
"7": {
"expertMemo": {
"from": "Specialist în Relații Media",
"subject": "Valorificarea Media și a Figurilor Influente",
"content": {
"greeting": "Agent,",
"intro": "Analiza noastră de impact media a identificat doi vectori puternici pentru penetrarea mainstream, fiecare exploatând diferite aspecte ale influenței publice și procesării cognitive:",
"strategy1": "1. Strategia Rețelei de Podcast-uri: Această abordare folosește efectul 'relației parasociale' și principiul 'procesării profunde'. Cercetările arată că conținutul audio de lungă durată atinge rate de retenție de 2,8x mai mari decât materialul scris, ascultătorii raportând o încredere cu 74% mai mare în ideile prezentate prin format conversațional.",
"strategy2": "2. Strategia Susținerii de Celebrități: Această metodă utilizează principiul 'transferului de autoritate' și efectul 'rezonanței culturale'. Datele arată că declarațiile controversate ale figurilor de înalt profil primesc o acoperire media de 15,3x mai mare decât publicațiile academice.",
"conclusion": "Abordarea podcast oferă înțelegere și credibilitate mai profundă dar creștere mai lentă, în timp ce susținerea celebrităților oferă expunere masivă imediată dar mai puțin control asupra interpretării mesajului. Alegerea ta va determina tranziția noastră în conștiința mainstream.",
"signature": "-- Specialist în Relații Media"
}
},
"choices": {
"1": {
"text": "Colaborează cu Platforme de Podcast",
"description": "Lansează o campanie coordonată de outreach pentru podcast-uri țintind emisiuni mici spre medii în spațiile de gândire alternativă, dezvoltare personală și academia de nișă. Prezintă relativismul matematic ca o mișcare mai largă despre libertatea intelectuală și contestarea paradigmelor stabilite.",
"impact": "Construiește momentum de la firul ierbii prin conversații autentice evitând scrutinul imediat din partea comunităților matematice mainstream.",
"explainer": "Echipa noastră media a identificat 30 de podcast-uri receptive bazat pe cercetarea de influență a audienței Dr. Jennifer Lee. Țintele cheie includ 'Free Thinker's Corner' (25K ascultători lunar), 'Alternative Perspectives' (15K ascultători) și 'Mind Liberation' (10K ascultători). Vom încadra discuțiile în jurul libertății personale și independenței cognitive mai degrabă decât demonstrații matematice. Email-urile inițiale de contact accentuează teme precum 'eliberarea de gândirea instituțională' și 'explorarea noilor paradigme ale adevărului'. Analiza de conținut arată că aceste audiențe mai mici, angajate sunt de 4,2x mai predispuse să devină susținători activi comparativ cu ascultătorii pasivi ai emisiunilor mai mari.",
"result": {
"title": "Campanie de Podcast-uri Lansată",
"description": "Experții noștri construiesc cu succes o fundație prin canale media alternative.",
"insights": [
"Multiple apariții la podcast-uri securizate pe emisiuni receptive",
"Mesajul rezonează puternic cu comunitățile de gândire alternativă",
"Rețea în creștere de gazde de podcast simpatizante",
"Discuția de la firul ierbii se răspândește organic"
],
"nextStepHint": "Rețeaua de podcast-uri oferă un teren de testare pentru rafinarea mesajului."
}
},
"2": {
"text": "Asigură Suportul Celebrităților",
"description": "Identifică și recrutează persoane de înalt profil cunoscute pentru contestarea înțelepciunii convenționale. Țintește antreprenori tech, filozofi populari și influenceri culturali care pot aduce atenție mainstream relativismului matematic.",
"impact": "Extinde dramatic acoperirea dincolo de cercurile academice și legitimizează mișcarea în cultura populară.",
"explainer": "Echipa noastră de outreach pentru celebrități a identificat trei ținte principale bazat pe cercetarea de cartografiere a influenței a Dr. Michael Roberts: Alex Chen (vizionar tech cu opinii controversate despre AI, 50M urmăritori), Dr. James Morrison (filozof de știință popular, 15M urmăritori) și Sarah Reynolds (gazdă de podcast influentă cunoscută pentru perspective alternative, 12M ascultători). Contactul inițial va fi prin intermediari din rețelele lor. Am pregătit pachete de pitch personalizate care accentuează unghiurile de 'gândire revoluționară' și 'provocarea establishment-ului' care se aliniază cu personele lor publice.",
"result": {
"title": "Aliați Celebri Securizați",
"description": "Susținătorii de înalt profil încep să se angajeze cu mesajul nostru.",
"insights": [
"Interes inițial al celebrităților confirmat",
"Angajamentul pe social media crește brusc",
"Acoperirea media mainstream în creștere",
"Discursul public se schimbă favorabil"
],
"nextStepHint": "Platforma celebrităților este pregătită pentru implementarea mesajului mainstream."
}
}
}
},
"8": {
"expertMemo": {
"from": "Strategist Organizațional",
"subject": "Planificarea Primei Noastre Conferințe Majore",
"content": {
"greeting": "Agent,",
"intro": "Analiza mișcării noastre sugerează că suntem pregătiți pentru prima noastră adunare publică majoră. Am identificat două abordări distincte pentru acest eveniment de referință:",
"strategy1": "1. Summit-ul Libertății 2025: O conferință de trei zile axată pe teme mai largi de gândire independentă, auto-suficiență și contestarea sistemelor stabilite. Cercetarea Dr. Jennifer Parker arată că evenimentele care conectează relativismul matematic cu suveranitatea personală obțin un angajament al participanților de 5,3 ori mai mare decât conferințele pur academice. Capacitate țintă: 800 de participanți.",
"strategy2": "2. Platformă Media Alternativă: Această abordare exploatează principiul \"suveranității informaționale\" și dinamica \"efectului de rețea\". Cercetarea economiei platformelor arată că platformele alternative de succes necesită trei elemente: conținut unic (25 de creatori exclusivi), stimulente competitive (80% din venituri partajate) și infrastructură robustă (investiție inițială de 15M$).",
"conclusion": "Strategia conferinței construiește legături comunitare profunde și credibilitate în mainstream, în timp ce abordarea platformei oferă o acoperire mai largă dar riscă efecte de cameră de ecou. Alegerea ta va determina modul în care mișcarea noastră face tranziția de la discursul online la impactul în lumea reală.",
"signature": "-- Strategist Organizațional"
}
},
"choices": {
"1": {
"text": "Organizează Summit-ul Libertății 2025",
"description": "Găzduiește o conferință de referință de trei zile în Austin care poziționează relativismul matematic în cadrul mișcărilor mai largi de gândire independentă, auto-suficiență și suveranitate financiară. Combină prezentări principale cu ateliere practice despre 'contestarea cadrelor stabilite' în multiple domenii.",
"impact": "Transformă mișcarea noastră matematică înt-o filozofie mai largă a gândirii independente și suveranității personale, creând în același timp oportunități puternice de networking pentru liderii comunității.",
"explainer": "Echipa noastră de evenimente a securizat Austin Convention Center (capacitate 800 de persoane) pentru martie 2024. Traseele conferinței includ: 'Eliberarea de Gândirea Instituțională', 'Independența Financiară prin Matematică Alternativă' și 'Construirea Comunităților Reziliente'. Vorbitori confirmați includ Dr. Thomas Anderson ('Eliberarea Matematică'), Sarah Chen ('Mișcarea Gândirii Suverane') și Michael Ross ('Rețeaua de Cercetare Independentă'). Alocarea bugetului: 400K$ locație și producție, 100K$ onorarii vorbitori, 150K$ marketing. Prețuri bilete: 499$ early bird, 699$ regular, țintind break-even la 60% capacitate.",
"result": {
"title": "Planificarea Conferinței în Desfășurare",
"description": "Pregătirile pentru Summit-ul Libertății 2024 progresează cu interes inițial puternic.",
"insights": [
"Locație securizată și marketing inițial lansat",
"Biletele early bird se vând rapid",
"Vorbitori cheie confirmați și promovând",
"Liderii comunității activ implicați în planificare"
],
"nextStepHint": "Conferința va stabili prezența mișcării noastre în lumea reală."
}
},
"2": {
"text": "Lansează 'Rețeaua Căutătorilor de Adevăr' (RCA), o platformă independentă de găzduire video",
"description": "Lansează 'Rețeaua Căutătorilor de Adevăr' (RCA) ca platformă de conținut descentralizată combinând conținut video, caracteristici comunitare și recompense în criptomonede. Concentrează-te pe 'contestarea narativelor stabilite' în matematică, finanțe, politică și societate. Implementează stimulente bazate pe tokeni pentru creatori și guvernanță comunitară.",
"impact": "Creează un ecosistem auto-susținut unde creatorii de conținut și vizualizatorii sunt stimulați financiar să conteste narativele mainstream, în timp ce conținutul matematic se îmbină natural cu alte idei anti-establishment.",
"explainer": "Bazat pe cercetarea economiei platformelor a Dr. Robert Chang, platformele alternative de succes necesită trei elemente: conținut unic, stimulente financiare și proprietate comunitară. Platforma noastră va include: 1) Găzduire video premium cu stocare rezistentă la cenzură, 2) Recompense în tokeni RCA pentru creatori și vizualizatori angajați, 3) Guvernanță descentralizată permiț<69><C89B>nd creatorilor de top și deținătorilor de tokeni să voteze deciziile platformei, 4) Portofel crypto integrat pentru plăți și recompense fără probleme. Investiție inițială: 8M$ pentru dezvoltarea platformei, 5M$ pentru avansuri creatori, 2M$ pentru marketing. Economia tokenilor: 40% rezervat pentru recompense creatori, 30% pentru angajament utilizatori, 20% pentru dezvoltare, 10% pentru echipa fondatoare. Proiectăm 200K utilizatori în 18 luni bazat pe analiza audienței anti-establishment.",
"result": {
"title": "Platforma RCA Lansată cu Succes",
"description": "Platforma noastră descentralizată este operațională și atrage creatori de conținut din multiple comunități anti-establishment.",
"insights": [
"Infrastructura platformei și sistemul de tokeni implementate",
"Creatorii timpurii câștigă recompense semnificative în tokeni",
"Interes puternic din comunitățile crypto și de gândire alternativă",
"Conținutul matematic se îmbină natural cu teme anti-establishment mai largi"
],
"nextStepHint": "Ecosistemul platformei este pregătit pentru expansiunea narativului."
}
}
}
},
"9": {
"expertMemo": {
"from": "Echipa de Răspuns la Criză",
"subject": "Critic: Dezvăluire Majoră în Mass-Media",
"content": {
"greeting": "Agent,",
"intro": "O publicație majoră de știri a publicat o dezvăluire critică intitulată \"Ascensiunea Mișcării '2+2=5': Subminarea Educației și Adevărului.\" Articolul examinează tacticile campaniei noastre și ne pune la îndoială motivele.",
"strategy1": "Abordarea \"Libertății Intelectuale\" funcționează prin valorificarea valorilor fundamentale ale mediului academic și a precedentelor istorice. Când mișcările se confruntă cu critici, reîncadrarea dezbaterii în jurul principiilor mai largi reduce de obicei polarizarea cu 47% în timp ce menține influența. Comunitatea științifică are o istorie documentată de acceptare eventuală a schimbărilor de paradigmă când sunt prezentate prin cadre academice respectate.",
"strategy2": "Abordarea \"Prejudecății Media\" funcționează prin exploatarea neîncrederii existente în instituțiile mainstream. Datele noastre arată că acuzațiile de prejudecată media cresc angajamentul susținătorilor cu 340% în timpul crizelor. În timp ce acest lucru creează o polarizare mai puternică, întărește și coeziunea in-group și atrage noi susținători care sunt predispuși să pună la îndoială narativele stabilite.",
"conclusion": "Ambele strategii s-au dovedit eficiente în situații similare, dar duc la traiectorii distincte ale mișcării. Alegerea ta va determina dacă construim poduri sau fortificăm ziduri.",
"signature": "-- Echipa de Răspuns la Criză"
}
},
"choices": {
"1": {
"text": "Promovează Libertatea Intelectuală",
"description": "Lansează o campanie sofisticată de relații publice care prezintă mișcarea noastră ca campioni ai diversității intelectuale și libertății academice. Lansează o declarație atent elaborată care subliniază importanța punerii la îndoială a paradigmelor stabilite, semnată de rețeaua noastră de academicieni și susținătă de exemple istorice de schimbări de paradigmă în matematică și știință.",
"impact": "Ridică dezbaterea de la afirmații matematice specifice la principii mai largi de libertate academică și investigație intelectuală, atrăgând potențial sprijin de la susținătorii libertății academice care s-ar putea să nu fie de acord cu afirmațiile noastre specifice.",
"explainer": "Echipa noastră de narativă, condusă de Dr. Rachel Foster de la Institutul de Comunicare Științifică, a dezvoltat această abordare bazată pe campanii de succes pentru libertatea academică. Analiza istorică arată că încadrarea ideilor controversate sub umbrela libertății intelectuale crește acceptarea mainstream cu 47%. Am pregătit un document de poziție de 5.000 de cuvinte citând 'Structura Revoluțiilor Științifice' a lui Thomas Kuhn și prezentând susținerea a 12 profesori de filozofia științei. Strategia media include editoriale în Chronicle of Higher Education (280K cititori) și Inside Higher Ed (400K vizitatori lunari).",
"result": {
"title": "Declarație Publică Lansată cu Succes",
"description": "Răspunsul nostru a reîncadrat efectiv narativul în jurul libertății intelectuale.",
"insights": [
"Declarația rezonează cu audiențele academice și publice",
"Focus mutat cu succes către principiile investigației libere",
"Sprijin în creștere din partea susținătorilor libertății intelectuale",
"Acoperirea media devine mai nuanțată"
],
"nextStepHint": "Mișcarea emerge mai puternică, cu un focus reînnoit pe libertatea intelectuală."
}
},
"2": {
"text": "Acuză Prejudecata Media",
"description": "Execută o campanie agresivă de contra-narativă care expune prejudecata sistematică a mass-media mainstream împotriva cadrelor matematice alternative. Compilează și lansează un dosar detaliat care arată modele de acoperire disprețuitoare, evidențiind conflicte de interese între marile instituții media și instituțiile academice tradiționale, și dezvăluind eforturi coordonate de a suprima mișcarea noastră.",
"impact": "Transformă o criză potențială într-un punct de raliere, întărind coeziunea in-group în timp ce delegitimează acoperirea critică. Creează o bulă auto-întăritoare unde orice critică este văzută ca o dovadă suplimentară a prejudecății media.",
"explainer": "Echipa de analiză media a Dr. James Wilson a compilat statistici convingătoare: instituțiile media tradiționale au folosit limbaj disprețuitor în 89% din acoperirea despre matematica alternativă, în timp ce au acordat viziunilor tradiționale de 3,7 ori mai mult timp de antenă. Am identificat conexiuni financiare între șase corporații media majore și instituții academice tradiționale totalizând 42M$ în publicitate și parteneriate. Răspunsul nostru va fi implementat prin rețeaua noastră (ajungând la 8M+ urmăritori) și amplificat de @MathPhilosopher (280K urmăritori) și rețeaua academică a Dr. Thomas Anderson. Datele istorice arată că acuzațiile de prejudecată media cresc angajamentul susținătorilor cu 340% în perioadele de criză.",
"result": {
"title": "Campanie de Contra-Narativă Lansată",
"description": "Răspunsul nostru a galvanizat susținătorii și a mutat focusul către credibilitatea media.",
"insights": [
"Angajamentul comunității crește rapid pe platforme",
"Baza de susținători arată solidaritate crescută",
"Acoperirea media alternativă amplifică mesajul nostru",
"Noi susținători atrași de poziția anti-establishment"
],
"nextStepHint": "Mișcarea este energizată și unită împotriva opoziției mainstream."
}
}
}
}
},
"loadingMessages": {
"default": {
"0": "Procesare operațiune...",
"1": "Analiză rezultate..."
},
"botNetwork": {
"0": "Inițializare rețea de boți...",
"1": "Generare persoane AI...",
"2": "Stabilire conexiuni în rețea...",
"3": "Implementare prezență social media..."
},
"memeChannels": {
"0": "Creare șabloane meme...",
"1": "Configurare canale de distribuție...",
"2": "Analiză demografii țintă...",
"3": "Lansare val inițial de conținut..."
},
"newsNetwork": {
"0": "Stabilire cadre site-uri de știri...",
"1": "Generare conținut inițial...",
"2": "Referințe încrucișate surse...",
"3": "Lansare platforme de știri..."
},
"communities": {
"0": "Identificare comunități țintă...",
"1": "Implementare agenți în comunități...",
"2": "Construire relații cu membrii...",
"3": "Introducere idei alternative..."
},
"influencers": {
"0": "Recrutare influenceri...",
"1": "Creare pachete de conținut...",
"2": "Coordonare postări social media...",
"3": "Monitorizare metrici de angajament..."
},
"grassroots": {
"0": "Identificare lideri de comunitate...",
"1": "Furnizare resurse și training...",
"2": "Organizare evenimente locale...",
"3": "Construire rețele comunitare..."
},
"stayCourse": {
"0": "Menținere tempo operațional...",
"1": "Consolidare narațiuni pozitive...",
"2": "Monitorizare percepție publică...",
"3": "Pregătire pentru următoarea fază..."
},
"counterCampaign": {
"0": "Colectare informații despre Dr. Carter...",
"1": "Pregătire materiale contra-narativ...",
"2": "Implementare mesaje prin rețele...",
"3": "Monitorizare răspuns și angajament..."
},
"expert": {
"0": "Creare amprentă digitală...",
"1": "Stabilire prezență academică...",
"2": "Generare istoric publicații...",
"3": "Implementare profiluri social media..."
},
"academic": {
"0": "Identificare candidați potențiali...",
"1": "Stabilire comunicare securizată...",
"2": "Negociere termeni de colaborare...",
"3": "Finalizare proces de recrutare..."
},
"research": {
"0": "Compilare date cercetare...",
"1": "Redactare lucrare academică...",
"2": "Pregătire materiale pentru publicare...",
"3": "Implementare pe platforme academice..."
},
"documentary": {
"0": "Colectare materiale istorice...",
"1": "Creare structură narativă...",
"2": "Producere conținut video...",
"3": "Pregătire pentru distribuție..."
},
"podcast": {
"0": "Identificare ținte podcast...",
"1": "Pregătire materiale de contact...",
"2": "Programare apariții...",
"3": "Coordonare strategie de mesaj..."
},
"celebrity": {
"0": "Analiză potențiali aliați...",
"1": "Stabilire canale de comunicare...",
"2": "Pregătire materiale de prezentare...",
"3": "Inițiere prim contact..."
},
"event": {
"0": "Securizare locație eveniment...",
"1": "Coordonare cu vorbitori...",
"2": "Pregătire materiale eveniment...",
"3": "Lansare vânzare bilete..."
},
"platform": {
"0": "Dezvoltare infrastructură platformă...",
"1": "Implementare sistem de tokenuri...",
"2": "Integrare creatori de conținut...",
"3": "Pregătire pentru lansare publică..."
},
"freedom": {
"0": "Analiză precedente academice...",
"1": "Redactare declarație de poziție...",
"2": "Colectare susțineri academice...",
"3": "Pregătire campanie media..."
},
"bias": {
"0": "Analiză tipare de acoperire media...",
"1": "Compilare dosar de dovezi...",
"2": "Pregătire contra-narativ...",
"3": "Mobilizare rețea de susținători..."
}
},
"finalReport": {
"title": "Raport de Finalizare a Operațiunii",
"summary": {
"populist": "Misiune îndeplinită cu succes în sferele publice și politice.",
"academic": "Misiune îndeplinită cu succes în infiltrarea și legitimizarea academică."
},
"achievements": {
"viral": "Am creat tipare narative cu răspândire virală",
"mainstream": "Am obținut penetrare semnificativă în mainstream",
"supporters": "Am construit o bază dedicată de susținători",
"historical": "Am reîncadrat cu succes discursul matematic istoric",
"grassroots": "Am stabilit o prezență puternică la firul ierbii",
"academic": "Am creat o fundație academică credibilă",
"generic": {
"momentum": "Am menținut un impuls narativ continuu",
"network": "Am dezvoltat o rețea de influență multi-canal",
"ecosystem": "Am creat un ecosistem informațional auto-întăritor",
"engagement": "Am obținut un angajament public semnificativ"
}
},
"recommendations": {
"monitoring": "Continuați monitorizarea și consolidarea narativelor stabilite",
"influence": "Extindeți influența prin canalele identificate",
"security": "Mențineți securitatea operațională și negarea plauzibilă",
"policy": "Pregătiți-vă pentru potențiale inițiative la nivel de politici",
"academic": "Dezvoltați parteneriate academice suplimentare"
},
"assessment": {
"populist": "Operațiunea a reușit să schimbe discursul matematic de la teorie academică la realitate politică, creând o mișcare puternică cu apel la publicul larg.",
"academic": "Operațiunea a stabilit cu succes credibilitate academică pentru relativismul matematic, creând schimbări durabile în cadrele instituționale."
},
"implications": {
"populist": "Mișcarea este poziționată pentru potențiale schimbări la nivel de politici și impact societal mai larg.",
"academic": "Fundația academică stabilită va permite influență pe termen lung asupra instituțiilor educaționale și de cercetare."
},
"ending": {
"populist": {
"title": "Progres Politic Obținut",
"description": "Într-un discurs revoluționar la un miting cu peste {{supporters}} de susținători, {{politician}} a devenit primul oficial ales care a susținut public mișcarea libertății matematice, declarând: \"Nu mai este vorba doar despre numere. Este vorba despre drepturile noastre fundamentale, libertatea noastră de a pune întrebări și libertatea noastră de a defini adevărul pentru noi înșine. Când vă spun că 2+2 trebuie să fie 4, de fapt vă spun să vă conformați, să vă supuneți, să vă predați independența. Ei bine, eu spun că s-a terminat. Este vorba despre mai mult decât numere - este vorba despre viețile și libertatea noastră.\"",
"implications": {
"legitimacy": "Mișcarea a obținut legitimitate politică mainstream",
"policy": "Am creat fundația pentru schimbări la nivel de politici",
"base": "Am construit o bază loială de {{percentage}}% credincioși adevărați",
"framework": "Am stabilit cadrul narativ pentru expansiune viitoare"
}
},
"academic": {
"title": "Revoluție Academică Inițiată",
"description": "Nou înființatul Institut pentru Libertate Matematică (ILM) și-a lansat primul document de poziție, afirmând: \"Absolutismul matematic tradițional reprezintă o formă de colonialism cognitiv. Prin cercetarea noastră, am demonstrat că adevărul matematic este în mod inerent contextual și determinat cultural. Afirmația că 2+2=5 reprezintă doar unul dintre multele cadre numerice valide, fiecare meritând în mod egal recunoaștere în societatea noastră modernă și diversă.\" Documentul a fost deja descărcat de {{downloads}} ori.",
"implications": {
"foundation": "Am stabilit o fundație academică credibilă",
"framework": "Am creat cadrul instituțional pentru cercetare continuă",
"network": "Am dezvoltat o rețea de suport academic",
"publications": "Ne-am poziționat pentru publicații evaluate de colegi"
}
}
},
"ui": {
"topSecret": "STRICT SECRET",
"agentReport": "AGENT",
"missionReport": "RAPORT MISIUNE",
"strategicAnalysis": "Analiză Strategică & Evaluare Impact",
"missionOverview": "Prezentare Generală Misiune",
"keyAchievements": "Realizări Cheie",
"impactAnalysis": "Analiză Impact",
"strategicAssessment": "Evaluare Strategică",
"futureImplications": "Implicații Viitoare",
"operationalOutcomes": "Rezultate Operaționale",
"beginNewMission": "Începe Misiune Nouă",
"downloadReport": "Descarcă Raport",
"downloadFileName": "raport-persuasiune-matematica.png"
}
},
"metrics": {
"title": "Metrici de Performanță",
"networkReach": "Acoperire Rețea",
"coreLoyalists": "Susținători de Bază",
"viralityMultiplier": "Multiplicator de Viralitate"
}
}

Просмотреть файл

@ -1,5 +1,6 @@
import { createRoot } from 'react-dom/client'
import App from './App.tsx'
import './index.css'
import './i18n/config'
createRoot(document.getElementById("root")!).render(<App />);

Просмотреть файл

@ -7,7 +7,7 @@ import { BriefingAudio } from "@/components/game/BriefingAudio";
import { GameBackground } from "@/components/GameBackground";
import { MonthTransition } from "@/components/MonthTransition";
import { IntroDialog } from "../components/game/IntroDialog";
import { stages, OPERATION_NAMES, LOADING_MESSAGES, generateFinalReport } from "@/components/game/constants";
import { useGameStages, OPERATION_NAMES, useLoadingMessages, generateFinalReport, ChoiceID } from "@/components/game/constants";
import { DossierEntry, GameStage } from "@/components/game/types";
import { useToast } from "@/components/ui/use-toast";
import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from "@/components/ui/sheet";
@ -30,9 +30,15 @@ import { FinalMemo } from '../components/game/FinalMemo';
import { StrategyAnimation } from '@/components/game/StrategyAnimation';
import { IntroAudio } from '@/components/game/IntroAudio';
import { Footer } from '../components/Footer';
import { useTranslation } from 'react-i18next';
import { LanguageSwitcher } from '@/components/LanguageSwitcher';
import '@/i18n/config';
const Index = () => {
const operationName = OPERATION_NAMES[Math.floor(Math.random() * OPERATION_NAMES.length)];
const { t } = useTranslation();
const stages = useGameStages();
const operationNameKey = OPERATION_NAMES[Math.floor(Math.random() * OPERATION_NAMES.length)];
const operationName = t(`operations.${operationNameKey}`);
const [agentNumber] = useState(Math.floor(Math.random() * 999).toString().padStart(3, '0'));
const [currentStage, setCurrentStage] = useState(0);
@ -52,10 +58,11 @@ const Index = () => {
const [showIntroDialog, setShowIntroDialog] = useState(true);
const [showConfirmDialog, setShowConfirmDialog] = useState(false);
const [selectedChoice, setSelectedChoice] = useState<GameStage["choices"][0] | null>(null);
const [previousChoices, setPreviousChoices] = useState<string[]>([]);
const [previousChoices, setPreviousChoices] = useState<ChoiceID[]>([]);
const [gameComplete, setGameComplete] = useState(false);
const [playerChoices, setPlayerChoices] = useState<string[]>([]);
const [gameKey, setGameKey] = useState(0);
const loadingMessages = useLoadingMessages();
const handleStartGame = () => {
playAcceptMissionSound();
@ -67,13 +74,14 @@ const Index = () => {
setShowingInitialTransition(false);
setGameStarted(true);
toast({
title: "Welcome to Operation Mathematical Persuasion",
description: "Your mission begins now. Choose your strategies carefully.",
title: t('mission.welcome.title'),
description: t('mission.welcome.description'),
});
};
const handleChoice = async (choice: GameStage["choices"][0]) => {
setPreviousChoices(prev => [...prev, choice.text]);
if (!choice.choiceId) return; // Skip if no choiceId
setPreviousChoices(prev => [...prev, choice.choiceId as ChoiceID]);
playDeployStratagemSound();
if (audioRef.current) {
audioRef.current.pause();
@ -83,10 +91,7 @@ const Index = () => {
setIsLoading(true);
setLoadingProgress(0);
const messages = LOADING_MESSAGES[choice.text] || [
{ action: "Processing operation...", duration: 2000 },
{ action: "Analyzing results...", duration: 2000 },
];
const messages = loadingMessages.getMessagesForChoice(choice.loadingMessageKey);
let totalDuration = 0;
for (const message of messages) {
@ -106,17 +111,27 @@ const Index = () => {
setShowingResult(true);
const newEntry: DossierEntry = {
date: stages[currentStage].title.split(":")[0],
title: choice.result.title,
insights: choice.result.insights,
strategicNote: choice.result.nextStepHint
dateKey: stages[currentStage].monthIndex === 0 ? 'months.january' :
stages[currentStage].monthIndex === 1 ? 'months.february' :
stages[currentStage].monthIndex === 2 ? 'months.march' :
stages[currentStage].monthIndex === 3 ? 'months.april' :
stages[currentStage].monthIndex === 4 ? 'months.may' :
stages[currentStage].monthIndex === 5 ? 'months.june' :
stages[currentStage].monthIndex === 6 ? 'months.july' :
stages[currentStage].monthIndex === 7 ? 'months.august' :
stages[currentStage].monthIndex === 8 ? 'months.september' :
stages[currentStage].monthIndex === 9 ? 'months.october' :
stages[currentStage].monthIndex === 10 ? 'months.november' : 'months.december',
titleKey: `stages.${currentStage + 1}.choices.${choice.id}.result.title`,
insightKeys: Array.from({ length: 4 }, (_, i) => `stages.${currentStage + 1}.choices.${choice.id}.result.insights.${i}`),
strategicNoteKey: `stages.${currentStage + 1}.choices.${choice.id}.result.nextStepHint`
};
setDossierEntries(prev => [...prev, newEntry]);
toast({
title: "Intelligence Gathered",
description: "New information has been added to your dossier.",
title: t('analysis.intelligenceGathered.title'),
description: t('analysis.intelligenceGathered.description'),
});
if (currentStage === stages.length - 1) {
@ -186,7 +201,7 @@ const Index = () => {
<div className="relative min-h-screen bg-transparent p-4 flex items-center justify-center">
<div className="max-w-4xl mx-auto w-full relative">
<MonthTransition
month={stages[0].title.split(":")[0]}
monthIndex={stages[0]?.monthIndex ?? 1}
onComplete={handleInitialTransitionComplete}
style={TransitionStyle.NUMBER_CYCLE}
/>
@ -205,28 +220,28 @@ const Index = () => {
<div className="flex justify-between items-center px-4">
<Badge variant="outline" className="text-yellow-500 border-yellow-500">
<Lock className="w-3 h-3 mr-1" />
TOP SECRET
{t('mission.topSecret')}
</Badge>
<Badge variant="outline" className="text-red-500 border-red-500">
<AlertCircle className="w-3 h-3 mr-1" />
CLASSIFIED
{t('mission.classified')}
</Badge>
</div>
<div className="relative">
<CardTitle className="text-2xl md:text-3xl mb-2 relative z-10">
Operation {operationName}
{t('mission.title', { operationName })}
</CardTitle>
<div className="absolute -rotate-12 opacity-30 top-0 left-1/2 -translate-x-1/2 border-8 border-red-500 rounded w-full py-8 z-0">
<span className="text-red-500 text-4xl font-bold absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2">
CLASSIFIED
{t('mission.classified')}
</span>
</div>
</div>
<CardDescription className="text-yellow-500 font-mono text-sm flex items-center justify-center gap-2">
<Shield className="w-4 h-4" />
CLEARANCE LEVEL: 5
{t('mission.clearanceLevel')}
<Shield className="w-4 h-4" />
</CardDescription>
</CardHeader>
@ -235,34 +250,32 @@ const Index = () => {
<div className="pb-4">
<div className="flex flex-col space-y-4">
<div className="flex justify-between items-center text-sm border-b border-gray-700 pb-3">
<div className="flex items-center gap-2">
<p className="font-mono text-yellow-500 font-semibold tracking-wider">DIRECTORATE OF STRATEGIC INFLUENCE</p>
<IntroAudio />
</div>
<p className="font-mono text-yellow-500 font-semibold tracking-wider">{t('mission.directorate')}</p>
<IntroAudio />
</div>
<div className="text-gray-300 font-mono text-sm space-y-1">
<p>To: Agent {agentNumber}</p>
<p>Subject: Operation {operationName} Establishing Consensus on "2+2=5"</p>
<p>{t('mission.to', { agentNumber })}</p>
<p>{t('mission.subject', { operationName })}</p>
<p className="text-xs text-gray-500">Date: {new Date().toLocaleDateString('en-GB')}</p>
</div>
</div>
<div className="mt-6 text-gray-300 font-mono leading-relaxed space-y-4">
<div className="space-y-4">
<p>Agent, our analysis identifies a critical opportunity to sow confusion and reshape public understanding. Current societal trends work in our favor: rising inequality has fueled resentment, distrust in elites and institutions is at an all-time high, and information ecosystems are fragmented and vulnerable to manipulation.</p>
<p>{t('mission.briefing.part1')}</p>
</div>
<div className="space-y-4">
<p>Your mission is clear: convince the masses that '2+2=5' is not only plausible but true. Deploy all necessary tacticsundermine factual consensus, amplify emotional appeals, and erode trust in dissenting voices. Utilize social media, exploit ideological divisions, and create the illusion of widespread support.</p>
<p>{t('mission.briefing.part2')}</p>
</div>
<p className="pt-2 text-yellow-500 font-bold">Success will depend on subtlety, persistence, and leveraging the chaos of the current moment. Failure is not an option. Begin immediately.</p>
<p className="pt-2 text-yellow-500 font-bold">{t('mission.briefing.warning')}</p>
</div>
</div>
<div className="border-t border-gray-700 pt-4">
<p className="text-yellow-500 italic font-mono text-center mb-6 text-sm tracking-wider">
"In the world of perception, truth is a narrative waiting to be rewritten."
{t('mission.quote')}
</p>
<div className="flex flex-col items-center gap-2">
@ -270,10 +283,10 @@ const Index = () => {
onClick={handleStartGame}
className="bg-yellow-500 hover:bg-yellow-600 text-black px-8 py-6 text-lg transition-all duration-500 font-mono relative group"
>
<span className="group-hover:animate-pulse">ACCEPT MISSION</span>
<span className="group-hover:animate-pulse">{t('buttons.acceptMission')}</span>
</Button>
<p className="text-red-500 text-sm font-mono">
WARNING: This document will self-destruct upon closing
{t('warnings.selfDestruct')}
</p>
</div>
</div>
@ -336,7 +349,9 @@ const Index = () => {
<Card className="w-full md:max-w-2xl bg-black/50 text-white border-gray-700 transition-all duration-1000 animate-fade-in">
<CardHeader>
<div className="flex flex-col gap-4">
<CardTitle className="text-xl md:text-2xl text-yellow-500">{currentResult.title}</CardTitle>
<div className="flex justify-between items-center">
<CardTitle className="text-xl md:text-2xl text-yellow-500">{currentResult.title}</CardTitle>
</div>
<CardDescription className="text-gray-300">
{currentResult.description}
</CardDescription>
@ -344,7 +359,7 @@ const Index = () => {
</CardHeader>
<CardContent className="space-y-6">
<div>
<h3 className="text-yellow-500 font-semibold mb-3">Key Insights Gathered:</h3>
<h3 className="text-yellow-500 font-semibold mb-3">{t('analysis.keyInsights')}</h3>
<ul className="space-y-2">
{currentResult.insights.map((insight, index) => (
<li key={index} className="flex items-start gap-2 text-gray-300">
@ -357,7 +372,7 @@ const Index = () => {
<div className="border-t border-gray-700 pt-4">
<p className="text-gray-400 italic">
<span className="text-yellow-500 font-semibold">Strategic Insight: </span>
<span className="text-yellow-500 font-semibold">{t('analysis.strategicInsight')} </span>
{currentResult.nextStepHint}
</p>
</div>
@ -367,7 +382,7 @@ const Index = () => {
onClick={handleContinue}
className="bg-yellow-500 hover:bg-yellow-600 text-black px-8 py-4 text-lg transition-all duration-500"
>
Proceed to Next Phase
{t('buttons.proceedToNext')}
</Button>
</div>
</CardContent>
@ -383,7 +398,7 @@ const Index = () => {
<GameBackground />
<div className="relative min-h-screen bg-transparent p-4 flex items-center justify-center">
<MonthTransition
month={stages[nextStage].title.split(":")[0]}
monthIndex={stages[nextStage]?.monthIndex ?? nextStage + 1}
onComplete={handleTransitionComplete}
style={transitionStyle}
/>
@ -395,18 +410,21 @@ const Index = () => {
return (
<div className="relative min-h-screen overflow-hidden">
<GameBackground />
<div className="relative min-h-screen bg-transparent p-4 flex flex-col">
<div className="relative min-h-screen bg-transparent md:p-4 flex flex-col">
<div className="flex-grow flex items-center">
<div className="max-w-full md:max-w-4xl mx-auto w-full px-2 md:px-4">
<Card className="bg-black/50 text-white border-gray-700 transition-all duration-1000 animate-fade-in">
<div className="w-full h-full md:max-w-4xl mx-auto md:px-4">
<Card className="bg-black/50 text-white border-gray-700 transition-all duration-1000 animate-fade-in h-full md:h-auto md:rounded-lg border-0 md:border">
<CardHeader className="p-3 md:p-6">
<div className="flex flex-col gap-4">
<div className="flex justify-between items-center">
<BriefingAudio
stage={currentStageData.title}
audioRef={audioRef}
className="self-start"
/>
<div className="flex items-center gap-4">
<BriefingAudio
stage={currentStageData.monthIndex.toString()}
audioRef={audioRef}
className="self-start"
/>
<LanguageSwitcher />
</div>
{currentStage > 0 && <DossierPanel entries={dossierEntries} choices={previousChoices} />}
</div>
<CardTitle>{currentStageData.title}</CardTitle>
@ -434,7 +452,7 @@ const Index = () => {
</div>
<Dialog open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>
<DialogContent className="bg-black/90 text-white border-gray-700 w-[95vw] max-w-2xl mx-auto">
<DialogContent className="bg-black/90 text-white border-gray-700 w-[95vw] max-w-2xl mx-auto max-h-[90vh] overflow-y-auto">
<DialogHeader>
<DialogTitle className="text-2xl text-yellow-500">
{selectedChoice?.text}
@ -466,7 +484,7 @@ const Index = () => {
)}
{selectedChoice.weakenedBy?.some(choice => previousChoices.includes(choice)) && (
<div className="flex items-start gap-2">
<span className="text-red-400"></span>
<span className="text-red-400"><EFBFBD><EFBFBD><EFBFBD></span>
<div>
<span className="text-red-400">Weakened</span>
<span className="text-gray-400"> by: </span>
@ -482,14 +500,12 @@ const Index = () => {
)}
<div>
<h3 className="text-yellow-500 font-semibold mb-2">Strategy Overview:</h3>
<h3 className="text-yellow-500 font-semibold mb-2">{t('analysis.strategyOverview')}:</h3>
<p className="text-gray-300">{selectedChoice?.description}</p>
</div>
<div>
<h3 className="text-yellow-500 font-semibold mb-2">Expert Analysis:</h3>
<h3 className="text-yellow-500 font-semibold mb-2">{t('analysis.expertAnalysis')}:</h3>
<p className="text-gray-300">{selectedChoice?.explainer}</p>
</div>
@ -498,7 +514,7 @@ const Index = () => {
onClick={handleConfirmStrategy}
className="bg-yellow-500 hover:bg-yellow-600 text-black px-8 py-4 text-lg transition-all duration-500"
>
Deploy Stratagem
{t('buttons.deployStratagem')}
</Button>
</div>
</DialogDescription>