diff --git a/src/lib/stores/loadingMessages.ts b/src/lib/stores/loadingMessages.ts
new file mode 100644
index 0000000..fc93c11
--- /dev/null
+++ b/src/lib/stores/loadingMessages.ts
@@ -0,0 +1,37 @@
+/**
+ * Collection of flash-themed loading messages for the UI
+ * Because waiting shouldn't be boring when you're exposing flash criminals
+ */
+export const flashLoadingMessages = [
+ 'Looking through the white screen...',
+ 'Waiting for vision to return...',
+ 'Parsing flashbang trajectories...',
+ 'Counting team flashes (this might take a while)...',
+ 'Reviewing the tape for flash crimes...',
+ 'Loading the wall of shame...',
+ 'Calculating flash guilt percentages...',
+ 'Scanning for pop flash perpetrators...',
+ 'Analyzing who ruined the retake...',
+ 'Determining flash assist eligibility...',
+ 'Cross-referencing teammate blind reports...',
+ 'Compiling evidence for the post-game argument...'
+];
+
+/**
+ * Get a random flash-themed loading message
+ */
+export function getRandomLoadingMessage(): string {
+ const index = Math.floor(Math.random() * flashLoadingMessages.length);
+ return flashLoadingMessages[index] as string;
+}
+
+/**
+ * Flash-themed error messages for various scenarios
+ */
+export const flashErrorMessages = {
+ networkError: "Connection got flashed. Can't see the server right now.",
+ timeout: 'Request timed out. Server is still rubbing its eyes.',
+ notFound: "Data got pop-flashed out of existence. We can't find it.",
+ serverError: 'Server caught a flashbang to the face. Please wait.',
+ parseError: 'Failed to parse the data. Too many flashes, not enough pixels.'
+};
diff --git a/src/routes/+error.svelte b/src/routes/+error.svelte
index 6168d4b..ac50b73 100644
--- a/src/routes/+error.svelte
+++ b/src/routes/+error.svelte
@@ -2,47 +2,78 @@
import { page } from '$app/stores';
import Button from '$lib/components/ui/Button.svelte';
import Card from '$lib/components/ui/Card.svelte';
- import { Home, ArrowLeft } from 'lucide-svelte';
+ import { Home, ArrowLeft, Zap } from 'lucide-svelte';
// Get error information
const error = $page.error;
const status = $page.status;
- // Determine error message
+ // Flash-themed error messages
const getErrorMessage = (status: number): string => {
switch (status) {
case 404:
- return "We couldn't find the page you're looking for.";
+ return "This page got pop-flashed out of existence. Even we can't see it.";
case 500:
- return 'Something went wrong on our end. Please try again later.';
+ return "The server got flashbanged. It's currently rubbing its eyes. Please wait.";
case 503:
- return 'Service temporarily unavailable. Please check back soon.';
+ return 'Service temporarily blinded. Someone threw a flash into the server room.';
+ case 400:
+ return 'Bad request? More like bad flash lineup. Try again.';
+ case 401:
+ return "You need to authenticate. Unlike flashes, you can't just walk through this.";
+ case 403:
+ return 'Forbidden. This area is as off-limits as throwing flashes at your own spawn.';
default:
- return 'An unexpected error occurred.';
+ return 'Something went white. Very white. Flash-in-the-face white.';
}
};
const getErrorTitle = (status: number): string => {
switch (status) {
case 404:
- return 'Page Not Found';
+ return "You've Been Full-Blind";
case 500:
- return 'Internal Server Error';
+ return 'Server Got Flashbanged';
case 503:
- return 'Service Unavailable';
+ return 'Temporarily Blinded';
+ case 400:
+ return 'Bad Flash Lineup';
+ case 401:
+ return 'Flash Authentication Required';
+ case 403:
+ return 'Flash Access Denied';
default:
- return 'Error';
+ return 'Unexpected Flash';
}
};
+
+ // Rotating flash puns for extra fun
+ const flashPuns = [
+ "At least this error didn't team flash you.",
+ "Error logging: You've been added to the wall of shame.",
+ 'Did you try turning off the flashbang and turning it back on?',
+ 'This error is brighter than your flash lineups.',
+ '404: Your aim, also not found.',
+ "The page didn't peek, but got flashed anyway.",
+ 'Server.exe has stopped responding to flash inputs.',
+ 'Have you considered not running into your own flashes?'
+ ];
+
+ const randomPun = flashPuns[Math.floor(Math.random() * flashPuns.length)];
- {status} - {getErrorTitle(status)} | CS2.WTF
+ {status} - {getErrorTitle(status)} | teamflash.rip
+
+
+
+
+
{status}
@@ -54,15 +85,20 @@
-
+
{getErrorMessage(status)}
+
+
+ "{randomPun}"
+
+
{#if import.meta.env?.DEV && error}
- Debug Info:
+ Flash Report (Debug):
{JSON.stringify(
error,
@@ -76,21 +112,22 @@
- If this problem persists, please
+ If this flash keeps happening, please
report it on GitHub
+ (we won't flash you, we promise)
- 🎮 Now supporting CS2
+ STOP FLASHING YOUR TEAMMATES
- CS2.WTF
+ teamflash.rip
-
- Track your performance, analyze matches, and improve your game with
- detailed statistics and insights.
+
+ Track your performance, analyze matches, and finally learn
+ who keeps flashing their own team.
+
+
+
+ "Where flash stats become flash shaming."
@@ -376,8 +380,8 @@
-
Why CS2.WTF?
-
Everything you need to analyze your CS2 performance
+
Why teamflash.rip?
+
Because someone needs to track these flash crimes
@@ -385,10 +389,10 @@
-
Detailed Statistics
+
Flash Forensics
- Track K/D, ADR, HS%, KAST, and more. Analyze your performance round-by-round with
- comprehensive stats.
+ Track enemies blinded, teammates betrayed, and self-inflicted Ls. We see through the
+ white.
@@ -396,9 +400,9 @@
-
Economy Tracking
+
Shame Statistics
- Understand money management with round-by-round economy analysis and spending patterns.
+ See exactly who threw that flash into your team's face. Evidence-based blame assignment.
@@ -406,10 +410,10 @@
-
Player Profiles
+
Hall of Shame
- View comprehensive player profiles with match history, favorite maps, and performance
- trends.
+ View comprehensive player profiles with flash history. Know who to mute before the match
+ starts.
@@ -421,12 +425,16 @@
-
Ready to improve your game?
+
+ Ready to expose the flash criminals?
+
- Start tracking your CS2 matches and get insights that help you rank up.
+ Start tracking your CS2 matches and finally have evidence for the post-game arguments.
-
Free and open source. No signup required.
+
+ Free and open source. No signup required. Full flash transparency.
+
diff --git a/src/routes/+page.ts b/src/routes/+page.ts
index 0708e74..112b5fb 100644
--- a/src/routes/+page.ts
+++ b/src/routes/+page.ts
@@ -32,9 +32,9 @@ export const load: PageLoad = async ({ parent }) => {
mapStats, // For most played maps pie chart
totalMatchesAnalyzed: allMatches.length,
meta: {
- title: 'CS2.WTF - Statistics for CS2 Matchmaking',
+ title: 'teamflash.rip - Stop Flashing Your Teammates',
description:
- 'Track your CS2 performance, analyze matches, and improve your game with detailed statistics and insights.'
+ 'Track your CS2 performance, analyze matches, and finally learn to stop team flashing. Detailed flash statistics, blinding insights, and more.'
}
};
} catch (error) {
@@ -50,9 +50,9 @@ export const load: PageLoad = async ({ parent }) => {
mapStats: [],
totalMatchesAnalyzed: 0,
meta: {
- title: 'CS2.WTF - Statistics for CS2 Matchmaking',
+ title: 'teamflash.rip - Stop Flashing Your Teammates',
description:
- 'Track your CS2 performance, analyze matches, and improve your game with detailed statistics and insights.'
+ 'Track your CS2 performance, analyze matches, and finally learn to stop team flashing. Detailed flash statistics, blinding insights, and more.'
}
};
}
diff --git a/src/routes/about/+page.svelte b/src/routes/about/+page.svelte
index bf0b8f7..b806b51 100644
--- a/src/routes/about/+page.svelte
+++ b/src/routes/about/+page.svelte
@@ -1,26 +1,26 @@
- About - CS2.WTF
+ About - teamflash.rip
-
About CS2.WTF
+
About teamflash.rip
Our Mission
- CS2.WTF is a free and open-source platform for analyzing Counter-Strike 2 matchmaking matches.
- We provide detailed statistics, performance insights, and tools to help players improve their
- game.
+ teamflash.rip is a free and open-source platform for analyzing Counter-Strike 2 matchmaking
+ matches. We're on a mission to expose every teammate who ever threw a flashbang backwards.
Originally created for CS:GO, we've completely rewritten the platform to support CS2 with
- modern technologies and enhanced features.
+ modern technologies and the ability to track exactly who ruined your retake with a poorly
+ timed flash.
@@ -37,15 +37,15 @@
Free Forever
- No paywalls, no premium features. Everyone gets full access to all statistics.
+ No paywalls, no premium features. Everyone gets full access to all flash crime statistics.
-
+
Community Driven
- Contributions welcome! Help us make CS2.WTF better for everyone.
+ Contributions welcome! Help us shame more team-flashers together.
- Ranked by total enemies blinded during the match
+ Ranked by enemies blinded. Teammates blinded is tracked for... scientific purposes.
@@ -204,18 +205,28 @@
-
Understanding Flash Stats:
+
Flash Stats Explained (For the Visually Challenged):
-
Enemies Blinded: Total number of enemy players flashed
+
Victims (Correct): Enemies you blinded - the RIGHT people to flash
- Avg Duration: Average time enemies were blinded per flash (in seconds)
+ Avg Suffering: Average time enemies spent regretting their peek
- Flash Assists: Enemies killed by teammates while blinded by your flash
+ Actually Useful: Enemies killed by teammates while your flash was doing its
+ job
+
+
+ Friendly Crimes: Number of times you betrayed your own team - shame counter
+
+
+ Self-Inflicted L: Times you stared at your own flashbang like a moth to a
+ flame
-
Team Flashed: Number of times you accidentally flashed teammates
-
Self Flashed: Number of times you flashed yourself
+
+ Remember: If your "Friendly Crimes" is higher than "Victims (Correct)", you might want to
+ reconsider your flash lineups.
+
diff --git a/src/routes/match/[id]/weapons/+page.svelte b/src/routes/match/[id]/weapons/+page.svelte
index 9cd076b..7cf6fc3 100644
--- a/src/routes/match/[id]/weapons/+page.svelte
+++ b/src/routes/match/[id]/weapons/+page.svelte
@@ -189,7 +189,7 @@
- Match Weapons - CS2.WTF
+ Match Weapons - teamflash.rip
{#if !hasWeaponsData}
diff --git a/src/routes/matches/+page.svelte b/src/routes/matches/+page.svelte
index 0a86607..19020ac 100644
--- a/src/routes/matches/+page.svelte
+++ b/src/routes/matches/+page.svelte
@@ -434,7 +434,7 @@
- Matches - CS2.WTF
+ Matches - teamflash.rip
diff --git a/src/routes/matches/+page.ts b/src/routes/matches/+page.ts
index ff16019..ef874c2 100644
--- a/src/routes/matches/+page.ts
+++ b/src/routes/matches/+page.ts
@@ -27,8 +27,9 @@ export const load: PageLoad = async ({ url }) => {
playerId
},
meta: {
- title: 'Browse Matches - CS2.WTF',
- description: 'Browse and search through CS2 matchmaking games with detailed filters.'
+ title: 'Browse Matches - teamflash.rip',
+ description:
+ 'Browse CS2 matches and see who is blinding the competition (and their teammates).'
}
};
} catch (error) {
@@ -44,8 +45,9 @@ export const load: PageLoad = async ({ url }) => {
nextPageTime: undefined,
filters: { map, playerId },
meta: {
- title: 'Browse Matches - CS2.WTF',
- description: 'Browse and search through CS2 matchmaking games with detailed filters.'
+ title: 'Browse Matches - teamflash.rip',
+ description:
+ 'Browse CS2 matches and see who is blinding the competition (and their teammates).'
}
};
}
diff --git a/src/routes/player/[id]/+page.ts b/src/routes/player/[id]/+page.ts
index 8332c2a..2aede9b 100644
--- a/src/routes/player/[id]/+page.ts
+++ b/src/routes/player/[id]/+page.ts
@@ -53,8 +53,8 @@ export const load: PageLoad = async ({ params }) => {
recentMatches: matchesData.matches.slice(0, 4), // Show 4 in recent matches section
playerStats, // Full stats for charts
meta: {
- title: `${profile.name} - Player Profile | CS2.WTF`,
- description: `View ${profile.name}'s CS2 statistics, match history, and performance metrics.`
+ title: `${profile.name} - Player Profile | teamflash.rip`,
+ description: `View ${profile.name}'s CS2 statistics, flash history, and how often they blind their own team.`
}
};
} catch (err) {
diff --git a/src/routes/players/+page.svelte b/src/routes/players/+page.svelte
index 5abda10..dceb6fc 100644
--- a/src/routes/players/+page.svelte
+++ b/src/routes/players/+page.svelte
@@ -5,7 +5,7 @@
- Players - CS2.WTF
+ Players - teamflash.rip
diff --git a/src/routes/players/+page.ts b/src/routes/players/+page.ts
index c34a629..989186e 100644
--- a/src/routes/players/+page.ts
+++ b/src/routes/players/+page.ts
@@ -7,8 +7,9 @@ import type { PageLoad } from './$types';
export const load: PageLoad = async () => {
return {
meta: {
- title: 'Search Players - CS2.WTF',
- description: 'Search and browse CS2 player profiles with detailed statistics.'
+ title: 'Search Players - teamflash.rip',
+ description:
+ 'Search CS2 players and expose their flash crime history. Know who to mute before the match.'
}
};
};
diff --git a/src/routes/privacy/+page.svelte b/src/routes/privacy/+page.svelte
index 44229c6..abf4bc2 100644
--- a/src/routes/privacy/+page.svelte
+++ b/src/routes/privacy/+page.svelte
@@ -4,10 +4,10 @@
- Privacy Policy | CS2.WTF
+ Privacy Policy | teamflash.rip
@@ -31,9 +31,9 @@
Introduction
- CS2.WTF ("we", "our", or "us") is committed to protecting your privacy. This Privacy Policy
- explains how we collect, use, and safeguard your information when you use our CS2 match
- statistics and analysis platform.
+ teamflash.rip ("we", "our", or "us") is committed to protecting your privacy. This Privacy
+ Policy explains how we collect, use, and safeguard your information when you use our CS2 match
+ statistics and flash crime analysis platform.
@@ -210,7 +210,7 @@
- CS2.WTF is not affiliated with Valve Corporation or Counter-Strike. All trademarks are
+ teamflash.rip is not affiliated with Valve Corporation or Counter-Strike. All trademarks are
property of their respective owners.
diff --git a/src/routes/robots.txt/+server.ts b/src/routes/robots.txt/+server.ts
index 3ca0037..e8989ec 100644
--- a/src/routes/robots.txt/+server.ts
+++ b/src/routes/robots.txt/+server.ts
@@ -1,6 +1,6 @@
import type { RequestHandler } from './$types';
-const SITE_URL = 'https://cs2.wtf'; // Update with actual production URL
+const SITE_URL = 'https://teamflash.rip'; // Production URL
/**
* Generate robots.txt for search engine crawlers
diff --git a/src/routes/sitemap.xml/+server.ts b/src/routes/sitemap.xml/+server.ts
index 3024251..84abfc0 100644
--- a/src/routes/sitemap.xml/+server.ts
+++ b/src/routes/sitemap.xml/+server.ts
@@ -1,7 +1,7 @@
import type { RequestHandler } from './$types';
import { matchesAPI } from '$lib/api/matches';
-const SITE_URL = 'https://cs2.wtf'; // Update with actual production URL
+const SITE_URL = 'https://teamflash.rip'; // Production URL
/**
* Generate XML sitemap for SEO