Added Case Files Event, restructured data files, new servants, etc.

This commit is contained in:
Firq 2024-01-24 22:22:54 +01:00
parent f4ad0fa12d
commit 059adbb110
Signed by: Firq
GPG key ID: 3ACC61C8CEC83C20
26 changed files with 1044 additions and 676 deletions

10
package-lock.json generated
View file

@ -1,12 +1,12 @@
{ {
"name": "fgo-ta-com-website", "name": "fgo-ta-com-website",
"version": "0.1.15", "version": "0.1.16",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "fgo-ta-com-website", "name": "fgo-ta-com-website",
"version": "0.1.15", "version": "0.1.16",
"dependencies": { "dependencies": {
"@astro-community/astro-embed-youtube": "^0.4.3", "@astro-community/astro-embed-youtube": "^0.4.3",
"@astrojs/check": "^0.3.4", "@astrojs/check": "^0.3.4",
@ -2386,9 +2386,9 @@
} }
}, },
"node_modules/astro/node_modules/vite": { "node_modules/astro/node_modules/vite": {
"version": "5.0.10", "version": "5.0.12",
"resolved": "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz", "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz",
"integrity": "sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==", "integrity": "sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==",
"dependencies": { "dependencies": {
"esbuild": "^0.19.3", "esbuild": "^0.19.3",
"postcss": "^8.4.32", "postcss": "^8.4.32",

View file

@ -1,7 +1,7 @@
{ {
"name": "fgo-ta-com-website", "name": "fgo-ta-com-website",
"type": "module", "type": "module",
"version": "0.1.15", "version": "0.1.16",
"scripts": { "scripts": {
"dev": "astro dev", "dev": "astro dev",
"start": "astro dev", "start": "astro dev",

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View file

@ -2,7 +2,7 @@
export interface Props { export interface Props {
slug: string slug: string
title: string title: string
questReleaseDate: Date releaseDate: Date
shortdescription: string shortdescription: string
} }
@ -12,9 +12,9 @@ const options_date: Intl.DateTimeFormatOptions = {
day: '2-digit', day: '2-digit',
} }
const { shortdescription, questReleaseDate, slug, title } = Astro.props const { shortdescription, releaseDate, slug, title } = Astro.props
const url = `/database/${slug}` const url = `/database/${slug}`
const render_date = questReleaseDate.toLocaleDateString( const render_date = releaseDate.toLocaleDateString(
'en-GB', 'en-GB',
options_date options_date
) )

View file

@ -1,19 +1,24 @@
{ {
"info": { "info": {
"title": "", "title": "",
"questReleaseDate": "YYYY-MM-DD", "releaseDate": "YYYY-MM-DD",
"shortdescription": "", "shortdescription": "",
"description": "", "releaseNumber": 1
"fightNumber": 1
}, },
"quests": [
{
"questTitle": "",
"description": "",
"data": [ "data": [
{ {
"title": "", "title": "Skadi 3T",
"link": "", "link": "",
"date": "YYYY-MM-DD", "date": "YYYY-MM-DD",
"servant": "", "servant": "skadi",
"turns": "XT", "turns": "3T",
"runner": "" "runner": "Firq"
}
]
} }
] ]
} }

View file

@ -1,23 +1,28 @@
import { z, defineCollection } from 'astro:content' import { z, defineCollection } from 'astro:content'
const taInfo = defineCollection({ const taEntry = z.object({
type: 'data',
schema: z.object({
info: z.object({
title: z.string(),
questReleaseDate: z.string().transform((str) => new Date(str)),
shortdescription: z.string(),
description: z.string(),
fightNumber: z.number().default(1),
}),
data: z.array(
z.object({
title: z.string(), title: z.string(),
link: z.string().url(), link: z.string().url(),
date: z.string().transform((str) => new Date(str)), date: z.string().transform((str) => new Date(str)),
servant: z.string(), servant: z.string(),
turns: z.string(), turns: z.string(),
runner: z.string(), runner: z.string(),
})
const taInfo = defineCollection({
type: 'data',
schema: z.object({
info: z.object({
title: z.string(),
releaseDate: z.string().transform((str) => new Date(str)),
shortdescription: z.string(),
releaseNumber: z.number().default(1),
}),
quests: z.array(
z.object({
questTitle: z.string(),
description: z.string(),
data: z.array(taEntry)
}) })
), ),
}), }),

View file

@ -1,11 +1,14 @@
{ {
"info": { "info": {
"title": "(Lostbelt 6) Albion", "title": "(Lostbelt 6) Albion",
"questReleaseDate": "2023-07-10", "releaseDate": "2023-07-10",
"shortdescription": "Albion shows up with a new mechanic, but will it be enough?", "shortdescription": "Albion shows up with a new mechanic, but will it be enough?",
"description": "Albion shows up with a new mechanic, but will it be enough? No, because the mechanics are only seen as a small challenge and were quickly rendered a sideeffect during this quest - to the dismay of Melusine", "releaseNumber": 1
"fightNumber": 1
}, },
"quests": [
{
"questTitle": "(Lostbelt 6) Albion",
"description": "Albion shows up with a new mechanic, but will it be enough? No, because the mechanics are only seen as a small challenge and were quickly rendered a sideeffect during this quest - to the dismay of Melusine",
"data": [ "data": [
{ {
"title": "Musashi 3T", "title": "Musashi 3T",
@ -128,4 +131,6 @@
"runner": "KOG" "runner": "KOG"
} }
] ]
}
]
} }

View file

@ -1,10 +1,13 @@
{ {
"info": { "info": {
"title": "Beast IV:L", "title": "Beast IV:L",
"questReleaseDate": "2023-12-26", "releaseDate": "2023-12-26",
"shortdescription": "An interesting conclusion to Tunguska to say the least", "shortdescription": "An interesting conclusion to Tunguska to say the least"
"description": "An interesting conclusion to Tunguska to say the least - A really annoying fight with a lot of field effects, including a permanent 40% Buff Success Rate down, as well as 80% Special Defense and 2 full turns of Invincibility. And still - the TA community showed Koyanskaya that she wasn't fit for being a beast in no time."
}, },
"quests": [
{
"questTitle": "Beast IV:L",
"description": "An interesting conclusion to Tunguska to say the least - A really annoying fight with a lot of field effects, including a permanent 40% Buff Success Rate down, as well as 80% Special Defense and 2 full turns of Invincibility. And still - the TA community showed Koyanskaya that she wasn't fit for being a beast in no time.",
"data": [ "data": [
{ {
"title": "Shishou 4T (No MLB DMG CE)", "title": "Shishou 4T (No MLB DMG CE)",
@ -151,4 +154,6 @@
"runner": "Felt" "runner": "Felt"
} }
] ]
}
]
} }

View file

@ -0,0 +1,326 @@
{
"info": {
"title": "Case Files Rerun 2024",
"releaseDate": "2024-01-10",
"shortdescription": "The rerun of the collaboration event with the Case Files franchise - ",
"releaseNumber": 1
},
"quests": [
{
"questTitle": "Another Master and Servant",
"description": "A battle against Master and Servant, represented by Waver and Alexander",
"data": [
{
"title": "Shishou 3T",
"link": "https://www.youtube.com/watch?v=j1fFbkfYtvo",
"date": "2024-01-22",
"servant": "shishou",
"turns": "3T",
"runner": "Firq"
},
{
"title": "Shishou 3T (FLO)",
"link": "https://www.youtube.com/watch?v=Sszw_x7IqVU",
"date": "2024-01-23",
"servant": "shishou",
"turns": "3T",
"runner": "Firq"
},
{
"title": "Muramasa 3T",
"link": "https://www.youtube.com/watch?v=IyOXmmY9wy8",
"date": "2024-01-21",
"servant": "muramasa",
"turns": "3T",
"runner": "Loki"
},
{
"title": "Artoria 3T",
"link": "https://www.youtube.com/watch?v=UnFsH4t0A4Y",
"date": "2024-01-22",
"servant": "artoria",
"turns": "3T",
"runner": "HardChibi"
},
{
"title": "Salter 3T",
"link": "https://www.youtube.com/watch?v=K_8iF_EHP1g",
"date": "2024-01-21",
"servant": "saberalter",
"turns": "3T",
"runner": "im poketar"
},
{
"title": "Sei 3T",
"link": "https://www.youtube.com/watch?v=kCajUN2Lz2Q",
"date": "2024-01-24",
"servant": "sei",
"turns": "3T",
"runner": "crimsonmage"
},
{
"title": "Cinder-Eli 3T",
"link": "https://www.youtube.com/watch?v=BPc7RTY_c7M",
"date": "2024-01-21",
"servant": "cindereli",
"turns": "3T",
"runner": "Alastair Hale"
},
{
"title": "Kama 3T (FLO)",
"link": "https://www.youtube.com/watch?v=-4dDZV7ijeM",
"date": "2024-01-22",
"servant": "kama",
"turns": "3T",
"runner": "Requiem"
},
{
"title": "MHXA 3T",
"link": "https://www.youtube.com/watch?v=TfWsR-hVULo",
"date": "2024-01-20",
"servant": "mhxa",
"turns": "3T",
"runner": "Ayumi"
},
{
"title": "Morgan 3T (6 Cost)",
"link": "https://www.youtube.com/watch?v=zXQ_FrnBh0k",
"date": "2024-01-20",
"servant": "morgan",
"turns": "3T",
"runner": "Ray"
},
{
"title": "Astrea 3T (FLO)",
"link": "https://www.youtube.com/watch?v=kwqjMhYrQHY",
"date": "2024-01-20",
"servant": "astrea",
"turns": "3T",
"runner": "Alastair Hale"
},
{
"title": "Van Gogh 3T",
"link": "https://www.youtube.com/watch?v=VbSXl8GthwM",
"date": "2024-01-20",
"servant": "vangogh",
"turns": "3T",
"runner": "Alastair Hale"
},
{
"title": "Hokusai 3T",
"link": "https://www.youtube.com/watch?v=CIzUCIN-ft4",
"date": "2024-01-24",
"servant": "hokusai",
"turns": "3T",
"runner": "inv4der"
},
{
"title": "Okita Alter 3T (FLO)",
"link": "https://www.youtube.com/watch?v=qkah__8XWJk",
"date": "2024-01-20",
"servant": "okitaalter",
"turns": "3T",
"runner": "TokuHer0"
},
{
"title": "Summer BB 3T (FLO, NoCE)",
"link": "https://www.youtube.com/watch?v=VAEjvL34hsc",
"date": "2024-01-21",
"servant": "bbsummer",
"turns": "3T",
"runner": "Felt"
},
{
"title": "Kijyo Koyo 3T (FLO, NoCE)",
"link": "https://www.youtube.com/watch?v=A5-VRkAx__o",
"date": "2024-01-19",
"servant": "koyo",
"turns": "3T",
"runner": "MCR"
}
]
},
{
"questTitle": "Case - Train Tea Party",
"description": "A showdown on top of a train against both Reines and Gray",
"data": [
{
"title": "Artoria 3T",
"link": "https://www.youtube.com/watch?v=FQ6Zb_kzrWs",
"date": "2024-01-21",
"servant": "artoria",
"turns": "3T",
"runner": "HardChibi"
},
{
"title": "Artoria 3T (FLO)",
"link": "https://www.youtube.com/watch?v=uKercpWUnGs&t=216s",
"date": "2024-01-19",
"servant": "artoria",
"turns": "3T",
"runner": "Fu Windsword"
},
{
"title": "Altera 3T",
"link": "https://www.youtube.com/watch?v=WcHpHfFnVrY",
"date": "2024-01-24",
"servant": "altera",
"turns": "3T",
"runner": "Lyud"
},
{
"title": "Saber Lily 3T",
"link": "https://www.youtube.com/watch?v=jCwTbmLsGcA",
"date": "2024-01-18",
"servant": "saberlily",
"turns": "3T",
"runner": "Ayumi"
},
{
"title": "Gilgamesh 3T (NoCE)",
"link": "https://www.youtube.com/watch?v=nWeZ9lo2iYI",
"date": "2024-01-18",
"servant": "gilgamesh",
"turns": "3T",
"runner": "Kusanagi"
},
{
"title": "Sei 3T",
"link": "https://www.youtube.com/watch?v=BEGortNzIsQ",
"date": "2024-01-23",
"servant": "sei",
"turns": "3T",
"runner": "inv4der"
},
{
"title": "Melusine 3T (FLO, NoCE)",
"link": "https://www.youtube.com/watch?v=OgoteFJL85A",
"date": "2024-01-21",
"servant": "melusine",
"turns": "3T",
"runner": "TokuHer0"
},
{
"title": "Melusine 3T (FLO)",
"link": "https://www.youtube.com/watch?v=PTtm_c7F5Ro",
"date": "2024-01-18",
"servant": "melusine",
"turns": "3T",
"runner": "Felt"
},
{
"title": "Ivan 3T",
"link": "https://www.youtube.com/watch?v=shsogSLclv4",
"date": "2024-01-24",
"servant": "ivan",
"turns": "3T",
"runner": "ProbablyAParrot"
},
{
"title": "Gong 3T",
"link": "https://www.youtube.com/watch?v=bc5LvCQO56I&t=244s",
"date": "2024-01-23",
"servant": "gong",
"turns": "3T",
"runner": "BadLuck"
},
{
"title": "Morgan 3T (NoCEs)",
"link": "https://www.youtube.com/watch?v=y4XnMyqVGK8",
"date": "2024-01-18",
"servant": "morgan",
"turns": "3T",
"runner": "Loki"
},
{
"title": "Morgan 3T (Lvl 50)",
"link": "https://www.youtube.com/watch?v=MQ2b6FFPMf8",
"date": "2024-01-18",
"servant": "morgan",
"turns": "3T",
"runner": "Ray"
},
{
"title": "Okita Alter 3T (FLO, NoCEs)",
"link": "https://www.youtube.com/watch?v=7Htl-Ld6f-Q",
"date": "2024-01-21",
"servant": "okitaalter",
"turns": "3T",
"runner": "TokuHer0"
},
{
"title": "Kingprotea 3T (FLO)",
"link": "https://www.youtube.com/watch?v=iarswRjrKAI",
"date": "2024-01-21",
"servant": "kingprotea",
"turns": "3T",
"runner": "Akise"
},
{
"title": "Koyan of Dark 3T",
"link": "https://www.youtube.com/watch?v=h_jsUQeOXi8",
"date": "2024-01-21",
"servant": "koyandark",
"turns": "3T",
"runner": "Alastair Hale"
},
{
"title": "Voyager 3T",
"link": "https://www.youtube.com/watch?v=kQ2pRFR3ZmM",
"date": "2024-01-20",
"servant": "voyager",
"turns": "3T",
"runner": "Ise(Kai)"
},
{
"title": "Scathach 5T (4Man)",
"link": "https://www.youtube.com/watch?v=IIk5ypPq9dM",
"date": "2024-01-23",
"servant": "shishou",
"turns": "5T",
"runner": "Requiem"
},
{
"title": "Li Shuwen 5T (NoCE)",
"link": "https://www.youtube.com/watch?v=BHNTmj56Adk",
"date": "2024-01-24",
"servant": "oldli",
"turns": "5T",
"runner": "Alastair Hale"
},
{
"title": "Charlotte 5T",
"link": "https://www.youtube.com/watch?v=aOuK9RhZSFk",
"date": "2024-01-20",
"servant": "charlotte",
"turns": "5T",
"runner": "xy sunder"
},
{
"title": "Taira 5T (FLO, BCE)",
"link": "https://www.youtube.com/watch?v=A5F8Rb26tNY",
"date": "2024-01-22",
"servant": "taira",
"turns": "5T",
"runner": "Felt"
},
{
"title": "Melt 5T (FLO, NoCE)",
"link": "https://www.youtube.com/watch?v=-WRocbYbzpE",
"date": "2024-01-23",
"servant": "melt",
"turns": "5T",
"runner": "xy sunder"
},
{
"title": "MHXA 5T (FLO, NoCE)",
"link": "https://www.youtube.com/watch?v=qFESCN59RFA",
"date": "2024-01-22",
"servant": "mhxa",
"turns": "5T",
"runner": "Ayumi"
}
]
}
]
}

View file

@ -1,11 +1,14 @@
{ {
"info": { "info": {
"title": "(Lostbelt 6) Cernunnos", "title": "(Lostbelt 6) Cernunnos",
"questReleaseDate": "2023-07-10", "releaseDate": "2023-07-10",
"shortdescription": "One of FGOs most notorious boss fights due to up to 100% special defense, strong DoT damage and powerful field effects", "shortdescription": "One of FGOs most notorious boss fights due to up to 100% special defense, strong DoT damage and powerful field effects",
"description": "One of FGOs most notorious boss fights due to up to 100% special defense, strong DoT damage and powerful field effects - and still, the TA community prevailed and created some of the most amazing runs of all time", "releaseNumber": 2
"fightNumber": 2
}, },
"quests": [
{
"questTitle": "(Lostbelt 6) Cernunnos",
"description": "One of FGOs most notorious boss fights due to up to 100% special defense, strong DoT damage and powerful field effects - and still, the TA community prevailed and created some of the most amazing runs of all time",
"data": [ "data": [
{ {
"title": "Shishou 4T (No Castoria)", "title": "Shishou 4T (No Castoria)",
@ -96,4 +99,6 @@
"runner": "Yier" "runner": "Yier"
} }
] ]
}
]
} }

View file

@ -1,11 +1,14 @@
{ {
"info": { "info": {
"title": "Devilish Bodhisattva", "title": "Devilish Bodhisattva",
"questReleaseDate": "2022-06-21", "releaseDate": "2022-06-21",
"shortdescription": "One of the most infamous fights in FGO, Full Power Beast III:R", "shortdescription": "One of the most infamous fights in FGO, Full Power Beast III:R",
"description": "One of the most infamous fights in FGO, Full Power Beast III:R ... but the racers make even this fight look easy at times, clearning it with the most diverse roster of servants ever seen.", "releaseNumber": 1
"fightNumber": 1
}, },
"quests": [
{
"questTitle": "Devilish Bodhisattva",
"description": "One of the most infamous fights in FGO, Full Power Beast III:R ... but the racers make even this fight look easy at times, clearning it with the most diverse roster of servants ever seen.",
"data": [ "data": [
{ {
"title": "Shishou 7T (NoDupes)", "title": "Shishou 7T (NoDupes)",
@ -112,4 +115,6 @@
"runner": "Ayumi" "runner": "Ayumi"
} }
] ]
}
]
} }

View file

@ -1,11 +1,14 @@
{ {
"info": { "info": {
"title": "(Lostbelt 6) Queen Morgan", "title": "(Lostbelt 6) Queen Morgan",
"questReleaseDate": "2023-06-20", "releaseDate": "2023-06-20",
"shortdescription": "The fight against the Lostbelt 6 Queen as the conclusion of LB 6 Part 2", "shortdescription": "The fight against the Lostbelt 6 Queen as the conclusion of LB 6 Part 2",
"description": "The fight against the Lostbelt 6 Queen as the conclusion of LB 6 Part 2 - Interesting field effects and a berserker enemy were making this fight interesting, as Morgan is hitting like an actual truck, meaning support cycling was a lot easier than usual.", "releaseNumber": 1
"fightNumber": 1
}, },
"quests": [
{
"questTitle": "(Lostbelt 6) Queen Morgan",
"description": "The fight against the Lostbelt 6 Queen as the conclusion of LB 6 Part 2 - Interesting field effects and a berserker enemy were making this fight interesting, as Morgan is hitting like an actual truck, meaning support cycling was a lot easier than usual.",
"data": [ "data": [
{ {
"title": "Skadi 3T", "title": "Skadi 3T",
@ -160,4 +163,6 @@
"runner": "Felt" "runner": "Felt"
} }
] ]
}
]
} }

View file

@ -11,7 +11,6 @@ export interface Props {
const { collectionKey } = Astro.props const { collectionKey } = Astro.props
const taEntry = await plsLoadTAEntry(collectionKey) const taEntry = await plsLoadTAEntry(collectionKey)
const pagetitle = `${taEntry.info.title} - FGO TA` const pagetitle = `${taEntry.info.title} - FGO TA`
taEntry.data.sort((a, b) => b.date.valueOf() - a.date.valueOf() )
--- ---
<Layout <Layout
@ -20,12 +19,17 @@ taEntry.data.sort((a, b) => b.date.valueOf() - a.date.valueOf() )
descriptionOverride={taEntry.info.shortdescription} descriptionOverride={taEntry.info.shortdescription}
> >
<a href="/database">&lt&lt Back to database</a> <a href="/database">&lt&lt Back to database</a>
<BaseSection {
title={taEntry.info.title} taEntry.quests.map((item) => (
description={taEntry.info.description} <BaseSection title={item.questTitle} description={item.description}>
> {item.data
{taEntry.data.map((item) => <TACard {...item} />)} .sort((a, b) => b.date.valueOf() - a.date.valueOf())
.map((item) => (
<TACard {...item} />
))}
</BaseSection> </BaseSection>
))
}
<div class="placeholder"></div> <div class="placeholder"></div>
</Layout> </Layout>
@ -37,6 +41,9 @@ taEntry.data.sort((a, b) => b.date.valueOf() - a.date.valueOf() )
} }
a { a {
position: sticky;
top: 4rem;
z-index: 1;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;

View file

@ -8,7 +8,7 @@ const description = 'FGO NA TA Database'
const fulldata = await getCollection('taInfoData') const fulldata = await getCollection('taInfoData')
fulldata.sort( fulldata.sort(
(a, b) => b.data.info.questReleaseDate.valueOf() - a.data.info.questReleaseDate.valueOf() || b.data.info.fightNumber - a.data.info.fightNumber (a, b) => b.data.info.releaseDate.valueOf() - a.data.info.releaseDate.valueOf() || b.data.info.releaseNumber - a.data.info.releaseNumber
) )
--- ---