LOADING...
+commit 4c1cfe68473858db8e05bf4bd59fca26a6650a8d Author: Koolant <73361781+therealKoolant@users.noreply.github.com> Date: Fri Apr 17 12:29:41 2026 -0400 add everything diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/README.md b/README.md new file mode 100644 index 0000000..a25a163 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# eivl +asdfads diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..db7bea3 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,16 @@ +# Security Policy + +## Supported Versions + +| Version | Supported | +| ------- | ------------------ | +| 1.0.x | :white_check_mark: | + +## Reporting a Vulnerability + +You can Report vulnerabilities through the +[discord server](https://discord.gg/shittylist) or by DM'ing Raily +(iRaily#1230), BlueStone (Bluestone.#1449), Electro (Electro#0457) or +Prometheus(Prometheus#9463). Responses to vulnerability reports usually take +around 3 hours to more than a day, depending on how difficult fixing a +vulnerability is. diff --git a/assets/April-logo.png b/assets/April-logo.png new file mode 100644 index 0000000..e0838fa Binary files /dev/null and b/assets/April-logo.png differ diff --git a/assets/Bausha V4.png b/assets/Bausha V4.png new file mode 100644 index 0000000..ee8367c Binary files /dev/null and b/assets/Bausha V4.png differ diff --git a/assets/Blade of Justice.png b/assets/Blade of Justice.png new file mode 100644 index 0000000..2a7dce3 Binary files /dev/null and b/assets/Blade of Justice.png differ diff --git a/assets/NoTrophy.png b/assets/NoTrophy.png new file mode 100644 index 0000000..ae833b6 Binary files /dev/null and b/assets/NoTrophy.png differ diff --git a/assets/Star.png b/assets/Star.png new file mode 100644 index 0000000..02f4619 Binary files /dev/null and b/assets/Star.png differ diff --git a/assets/Top1Trophy.png b/assets/Top1Trophy.png new file mode 100644 index 0000000..ebeb1b0 Binary files /dev/null and b/assets/Top1Trophy.png differ diff --git a/assets/Top2Trophy.png b/assets/Top2Trophy.png new file mode 100644 index 0000000..83601af Binary files /dev/null and b/assets/Top2Trophy.png differ diff --git a/assets/Top3Trophy.png b/assets/Top3Trophy.png new file mode 100644 index 0000000..8a83a47 Binary files /dev/null and b/assets/Top3Trophy.png differ diff --git a/assets/april-background.jpg b/assets/april-background.jpg new file mode 100644 index 0000000..2f84b60 Binary files /dev/null and b/assets/april-background.jpg differ diff --git a/assets/aredlMode.svg b/assets/aredlMode.svg new file mode 100644 index 0000000..0ccb0ab --- /dev/null +++ b/assets/aredlMode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/bgdark.png b/assets/bgdark.png new file mode 100644 index 0000000..8f9c7ec Binary files /dev/null and b/assets/bgdark.png differ diff --git a/assets/bglight.png b/assets/bglight.png new file mode 100644 index 0000000..201ce2c Binary files /dev/null and b/assets/bglight.png differ diff --git a/assets/cardMode.svg b/assets/cardMode.svg new file mode 100644 index 0000000..481126d --- /dev/null +++ b/assets/cardMode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/code-dark.svg b/assets/code-dark.svg new file mode 100644 index 0000000..75e4ead --- /dev/null +++ b/assets/code-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/code.svg b/assets/code.svg new file mode 100644 index 0000000..f1d0458 --- /dev/null +++ b/assets/code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/crown-dark.svg b/assets/crown-dark.svg new file mode 100644 index 0000000..0483611 --- /dev/null +++ b/assets/crown-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/crown.svg b/assets/crown.svg new file mode 100644 index 0000000..7ba3306 --- /dev/null +++ b/assets/crown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/cube-dark.svg b/assets/cube-dark.svg new file mode 100644 index 0000000..ba7e948 --- /dev/null +++ b/assets/cube-dark.svg @@ -0,0 +1,8 @@ + + diff --git a/assets/dark.svg b/assets/dark.svg new file mode 100644 index 0000000..fad6f3c --- /dev/null +++ b/assets/dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/discord.svg b/assets/discord.svg new file mode 100644 index 0000000..13ff166 --- /dev/null +++ b/assets/discord.svg @@ -0,0 +1,10 @@ + diff --git a/assets/feature.png b/assets/feature.png new file mode 100644 index 0000000..8ae98cf Binary files /dev/null and b/assets/feature.png differ diff --git a/assets/icons/Bennoct.png b/assets/icons/Bennoct.png new file mode 100644 index 0000000..b369967 Binary files /dev/null and b/assets/icons/Bennoct.png differ diff --git a/assets/icons/Chris.png b/assets/icons/Chris.png new file mode 100644 index 0000000..1996b1f Binary files /dev/null and b/assets/icons/Chris.png differ diff --git a/assets/icons/CoolEnder32.png b/assets/icons/CoolEnder32.png new file mode 100644 index 0000000..3d3d1bd Binary files /dev/null and b/assets/icons/CoolEnder32.png differ diff --git a/assets/icons/Curta.png b/assets/icons/Curta.png new file mode 100644 index 0000000..a2d9780 Binary files /dev/null and b/assets/icons/Curta.png differ diff --git a/assets/icons/Deezy.png b/assets/icons/Deezy.png new file mode 100644 index 0000000..0b8fa12 Binary files /dev/null and b/assets/icons/Deezy.png differ diff --git a/assets/icons/Devy.png b/assets/icons/Devy.png new file mode 100644 index 0000000..2e0b5f4 Binary files /dev/null and b/assets/icons/Devy.png differ diff --git a/assets/icons/GHHH.png b/assets/icons/GHHH.png new file mode 100644 index 0000000..9839770 Binary files /dev/null and b/assets/icons/GHHH.png differ diff --git a/assets/icons/Gp0.png b/assets/icons/Gp0.png new file mode 100644 index 0000000..c995678 Binary files /dev/null and b/assets/icons/Gp0.png differ diff --git a/assets/icons/JQuazol.png b/assets/icons/JQuazol.png new file mode 100644 index 0000000..e3e8d21 Binary files /dev/null and b/assets/icons/JQuazol.png differ diff --git a/assets/icons/JsTocii.png b/assets/icons/JsTocii.png new file mode 100644 index 0000000..4234c62 Binary files /dev/null and b/assets/icons/JsTocii.png differ diff --git a/assets/icons/Kaiyote.png b/assets/icons/Kaiyote.png new file mode 100644 index 0000000..40dba55 Binary files /dev/null and b/assets/icons/Kaiyote.png differ diff --git a/assets/icons/Koolant.png b/assets/icons/Koolant.png new file mode 100644 index 0000000..22f8f57 Binary files /dev/null and b/assets/icons/Koolant.png differ diff --git a/assets/icons/Lani.png b/assets/icons/Lani.png new file mode 100644 index 0000000..45ae59d Binary files /dev/null and b/assets/icons/Lani.png differ diff --git a/assets/icons/MeatballMoose.png b/assets/icons/MeatballMoose.png new file mode 100644 index 0000000..e349b20 Binary files /dev/null and b/assets/icons/MeatballMoose.png differ diff --git a/assets/icons/Poqqers.png b/assets/icons/Poqqers.png new file mode 100644 index 0000000..d8c6914 Binary files /dev/null and b/assets/icons/Poqqers.png differ diff --git a/assets/icons/Skellity.png b/assets/icons/Skellity.png new file mode 100644 index 0000000..e76f65e Binary files /dev/null and b/assets/icons/Skellity.png differ diff --git a/assets/icons/Sparkle.png b/assets/icons/Sparkle.png new file mode 100644 index 0000000..c93f576 Binary files /dev/null and b/assets/icons/Sparkle.png differ diff --git a/assets/icons/Taraco.png b/assets/icons/Taraco.png new file mode 100644 index 0000000..c824afa Binary files /dev/null and b/assets/icons/Taraco.png differ diff --git a/assets/icons/Z.png b/assets/icons/Z.png new file mode 100644 index 0000000..2d16ad6 Binary files /dev/null and b/assets/icons/Z.png differ diff --git a/assets/icons/Zacc.png b/assets/icons/Zacc.png new file mode 100644 index 0000000..59962bd Binary files /dev/null and b/assets/icons/Zacc.png differ diff --git a/assets/icons/ZorpikGMD.png b/assets/icons/ZorpikGMD.png new file mode 100644 index 0000000..6d3aada Binary files /dev/null and b/assets/icons/ZorpikGMD.png differ diff --git a/assets/icons/kek.png b/assets/icons/kek.png new file mode 100644 index 0000000..58c51f8 Binary files /dev/null and b/assets/icons/kek.png differ diff --git a/assets/icons/kiri.png b/assets/icons/kiri.png new file mode 100644 index 0000000..d2bd861 Binary files /dev/null and b/assets/icons/kiri.png differ diff --git a/assets/icons/lunacii.png b/assets/icons/lunacii.png new file mode 100644 index 0000000..e71a7dc Binary files /dev/null and b/assets/icons/lunacii.png differ diff --git a/assets/icons/nile.png b/assets/icons/nile.png new file mode 100644 index 0000000..0cadbef Binary files /dev/null and b/assets/icons/nile.png differ diff --git a/assets/icons/spaceuk.png b/assets/icons/spaceuk.png new file mode 100644 index 0000000..9f47e79 Binary files /dev/null and b/assets/icons/spaceuk.png differ diff --git a/assets/kreo-dark.svg b/assets/kreo-dark.svg new file mode 100644 index 0000000..d27f7d0 --- /dev/null +++ b/assets/kreo-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/levels/1330X.png b/assets/levels/1330X.png new file mode 100644 index 0000000..79d78c0 Binary files /dev/null and b/assets/levels/1330X.png differ diff --git a/assets/levels/8o X.png b/assets/levels/8o X.png new file mode 100644 index 0000000..e628f91 Binary files /dev/null and b/assets/levels/8o X.png differ diff --git a/assets/levels/937.png b/assets/levels/937.png new file mode 100644 index 0000000..00cb80f Binary files /dev/null and b/assets/levels/937.png differ diff --git a/assets/levels/AETERNAL.png b/assets/levels/AETERNAL.png new file mode 100644 index 0000000..4028307 Binary files /dev/null and b/assets/levels/AETERNAL.png differ diff --git a/assets/levels/ANNIHILATED.png b/assets/levels/ANNIHILATED.png new file mode 100644 index 0000000..662430a Binary files /dev/null and b/assets/levels/ANNIHILATED.png differ diff --git a/assets/levels/Acropolix.png b/assets/levels/Acropolix.png new file mode 100644 index 0000000..4ac02b3 Binary files /dev/null and b/assets/levels/Acropolix.png differ diff --git a/assets/levels/Acu.png b/assets/levels/Acu.png new file mode 100644 index 0000000..9844448 Binary files /dev/null and b/assets/levels/Acu.png differ diff --git a/assets/levels/Aint no gabagool.png b/assets/levels/Aint no gabagool.png new file mode 100644 index 0000000..61b90fc Binary files /dev/null and b/assets/levels/Aint no gabagool.png differ diff --git a/assets/levels/Allegiance.png b/assets/levels/Allegiance.png new file mode 100644 index 0000000..6b9452a Binary files /dev/null and b/assets/levels/Allegiance.png differ diff --git a/assets/levels/Annihilation Nation.png b/assets/levels/Annihilation Nation.png new file mode 100644 index 0000000..cea0352 Binary files /dev/null and b/assets/levels/Annihilation Nation.png differ diff --git a/assets/levels/Another Phase.png b/assets/levels/Another Phase.png new file mode 100644 index 0000000..ef27ab9 Binary files /dev/null and b/assets/levels/Another Phase.png differ diff --git a/assets/levels/Arctic Lights.png b/assets/levels/Arctic Lights.png new file mode 100644 index 0000000..bb4ee3a Binary files /dev/null and b/assets/levels/Arctic Lights.png differ diff --git a/assets/levels/Artificial Ascent.png b/assets/levels/Artificial Ascent.png new file mode 100644 index 0000000..1402535 Binary files /dev/null and b/assets/levels/Artificial Ascent.png differ diff --git a/assets/levels/Athanatos.png b/assets/levels/Athanatos.png new file mode 100644 index 0000000..4d8027f Binary files /dev/null and b/assets/levels/Athanatos.png differ diff --git a/assets/levels/Auditory Breaker.png b/assets/levels/Auditory Breaker.png new file mode 100644 index 0000000..6e53689 Binary files /dev/null and b/assets/levels/Auditory Breaker.png differ diff --git a/assets/levels/Awakening Horus.png b/assets/levels/Awakening Horus.png new file mode 100644 index 0000000..040d9e0 Binary files /dev/null and b/assets/levels/Awakening Horus.png differ diff --git a/assets/levels/Azurite.png b/assets/levels/Azurite.png new file mode 100644 index 0000000..25c62e3 Binary files /dev/null and b/assets/levels/Azurite.png differ diff --git a/assets/levels/BROWNOIX.png b/assets/levels/BROWNOIX.png new file mode 100644 index 0000000..2700749 Binary files /dev/null and b/assets/levels/BROWNOIX.png differ diff --git a/assets/levels/Battle of the Shades (phase 3).png b/assets/levels/Battle of the Shades (phase 3).png new file mode 100644 index 0000000..8166292 Binary files /dev/null and b/assets/levels/Battle of the Shades (phase 3).png differ diff --git a/assets/levels/Bausha V4.png b/assets/levels/Bausha V4.png new file mode 100644 index 0000000..ee8367c Binary files /dev/null and b/assets/levels/Bausha V4.png differ diff --git a/assets/levels/Berserk.png b/assets/levels/Berserk.png new file mode 100644 index 0000000..550e602 Binary files /dev/null and b/assets/levels/Berserk.png differ diff --git a/assets/levels/Black Blizzard.png b/assets/levels/Black Blizzard.png new file mode 100644 index 0000000..bc1eb32 Binary files /dev/null and b/assets/levels/Black Blizzard.png differ diff --git a/assets/levels/Black Flag.png b/assets/levels/Black Flag.png new file mode 100644 index 0000000..39913ee Binary files /dev/null and b/assets/levels/Black Flag.png differ diff --git a/assets/levels/Blade of Justice.png b/assets/levels/Blade of Justice.png new file mode 100644 index 0000000..2a7dce3 Binary files /dev/null and b/assets/levels/Blade of Justice.png differ diff --git a/assets/levels/Bloodbath.png b/assets/levels/Bloodbath.png new file mode 100644 index 0000000..10fab6f Binary files /dev/null and b/assets/levels/Bloodbath.png differ diff --git a/assets/levels/Bloodlust.png b/assets/levels/Bloodlust.png new file mode 100644 index 0000000..e6f0767 Binary files /dev/null and b/assets/levels/Bloodlust.png differ diff --git a/assets/levels/Broken Signal.png b/assets/levels/Broken Signal.png new file mode 100644 index 0000000..2d40d10 Binary files /dev/null and b/assets/levels/Broken Signal.png differ diff --git a/assets/levels/CUBE CUBE.png b/assets/levels/CUBE CUBE.png new file mode 100644 index 0000000..3df08d8 Binary files /dev/null and b/assets/levels/CUBE CUBE.png differ diff --git a/assets/levels/Carcano.png b/assets/levels/Carcano.png new file mode 100644 index 0000000..640c855 Binary files /dev/null and b/assets/levels/Carcano.png differ diff --git a/assets/levels/Cat Planet.png b/assets/levels/Cat Planet.png new file mode 100644 index 0000000..db8b679 Binary files /dev/null and b/assets/levels/Cat Planet.png differ diff --git a/assets/levels/Cataclysm.png b/assets/levels/Cataclysm.png new file mode 100644 index 0000000..a97fc31 Binary files /dev/null and b/assets/levels/Cataclysm.png differ diff --git a/assets/levels/Chromatic Haze.png b/assets/levels/Chromatic Haze.png new file mode 100644 index 0000000..855650f Binary files /dev/null and b/assets/levels/Chromatic Haze.png differ diff --git a/assets/levels/Clarity.png b/assets/levels/Clarity.png new file mode 100644 index 0000000..0b703d4 Binary files /dev/null and b/assets/levels/Clarity.png differ diff --git a/assets/levels/Cold Sweat.png b/assets/levels/Cold Sweat.png new file mode 100644 index 0000000..00b189a Binary files /dev/null and b/assets/levels/Cold Sweat.png differ diff --git a/assets/levels/Conical Depression.png b/assets/levels/Conical Depression.png new file mode 100644 index 0000000..b8c5b88 Binary files /dev/null and b/assets/levels/Conical Depression.png differ diff --git a/assets/levels/Crimson Planet.png b/assets/levels/Crimson Planet.png new file mode 100644 index 0000000..7330ec0 Binary files /dev/null and b/assets/levels/Crimson Planet.png differ diff --git a/assets/levels/Crowd Control.png b/assets/levels/Crowd Control.png new file mode 100644 index 0000000..2131836 Binary files /dev/null and b/assets/levels/Crowd Control.png differ diff --git a/assets/levels/Danklocked.png b/assets/levels/Danklocked.png new file mode 100644 index 0000000..6823443 Binary files /dev/null and b/assets/levels/Danklocked.png differ diff --git a/assets/levels/Delta Interface.png b/assets/levels/Delta Interface.png new file mode 100644 index 0000000..6602399 Binary files /dev/null and b/assets/levels/Delta Interface.png differ diff --git a/assets/levels/Digital Descent.png b/assets/levels/Digital Descent.png new file mode 100644 index 0000000..5a8881b Binary files /dev/null and b/assets/levels/Digital Descent.png differ diff --git a/assets/levels/Disruption.png b/assets/levels/Disruption.png new file mode 100644 index 0000000..6f1b208 Binary files /dev/null and b/assets/levels/Disruption.png differ diff --git a/assets/levels/Down Bass.png b/assets/levels/Down Bass.png new file mode 100644 index 0000000..c948a00 Binary files /dev/null and b/assets/levels/Down Bass.png differ diff --git a/assets/levels/FINAL SKIBIDI.png b/assets/levels/FINAL SKIBIDI.png new file mode 100644 index 0000000..b6aa201 Binary files /dev/null and b/assets/levels/FINAL SKIBIDI.png differ diff --git a/assets/levels/Falling Up.png b/assets/levels/Falling Up.png new file mode 100644 index 0000000..562e40b Binary files /dev/null and b/assets/levels/Falling Up.png differ diff --git a/assets/levels/Fexty.png b/assets/levels/Fexty.png new file mode 100644 index 0000000..74d4eab Binary files /dev/null and b/assets/levels/Fexty.png differ diff --git a/assets/levels/Find Me.png b/assets/levels/Find Me.png new file mode 100644 index 0000000..6a41c29 Binary files /dev/null and b/assets/levels/Find Me.png differ diff --git a/assets/levels/Forbidden Isle.png b/assets/levels/Forbidden Isle.png new file mode 100644 index 0000000..d8f9b12 Binary files /dev/null and b/assets/levels/Forbidden Isle.png differ diff --git a/assets/levels/Frame Of Mind.png b/assets/levels/Frame Of Mind.png new file mode 100644 index 0000000..72ba310 Binary files /dev/null and b/assets/levels/Frame Of Mind.png differ diff --git a/assets/levels/Free Vbucks EXE.png b/assets/levels/Free Vbucks EXE.png new file mode 100644 index 0000000..7357289 Binary files /dev/null and b/assets/levels/Free Vbucks EXE.png differ diff --git a/assets/levels/Fresh.png b/assets/levels/Fresh.png new file mode 100644 index 0000000..b2e46a6 Binary files /dev/null and b/assets/levels/Fresh.png differ diff --git a/assets/levels/GONER.png b/assets/levels/GONER.png new file mode 100644 index 0000000..ec7fc6f Binary files /dev/null and b/assets/levels/GONER.png differ diff --git a/assets/levels/Gaper Bonezoid.png b/assets/levels/Gaper Bonezoid.png new file mode 100644 index 0000000..0deb7d7 Binary files /dev/null and b/assets/levels/Gaper Bonezoid.png differ diff --git a/assets/levels/Gates of the Gods.png b/assets/levels/Gates of the Gods.png new file mode 100644 index 0000000..8126c0a Binary files /dev/null and b/assets/levels/Gates of the Gods.png differ diff --git a/assets/levels/Gay Cataclysm.png b/assets/levels/Gay Cataclysm.png new file mode 100644 index 0000000..d3989d6 Binary files /dev/null and b/assets/levels/Gay Cataclysm.png differ diff --git a/assets/levels/Glide.png b/assets/levels/Glide.png new file mode 100644 index 0000000..bd5d99e Binary files /dev/null and b/assets/levels/Glide.png differ diff --git a/assets/levels/Goober Land.png b/assets/levels/Goober Land.png new file mode 100644 index 0000000..1c2d954 Binary files /dev/null and b/assets/levels/Goober Land.png differ diff --git a/assets/levels/Gracefully.png b/assets/levels/Gracefully.png new file mode 100644 index 0000000..281bf18 Binary files /dev/null and b/assets/levels/Gracefully.png differ diff --git a/assets/levels/Heartbeat.png b/assets/levels/Heartbeat.png new file mode 100644 index 0000000..7811a2e Binary files /dev/null and b/assets/levels/Heartbeat.png differ diff --git a/assets/levels/Hidden in the Sand.png b/assets/levels/Hidden in the Sand.png new file mode 100644 index 0000000..3a65cbe Binary files /dev/null and b/assets/levels/Hidden in the Sand.png differ diff --git a/assets/levels/Hurricane.png b/assets/levels/Hurricane.png new file mode 100644 index 0000000..adb4816 Binary files /dev/null and b/assets/levels/Hurricane.png differ diff --git a/assets/levels/Hyper Paradox.png b/assets/levels/Hyper Paradox.png new file mode 100644 index 0000000..204052f Binary files /dev/null and b/assets/levels/Hyper Paradox.png differ diff --git a/assets/levels/HyperSonic.png b/assets/levels/HyperSonic.png new file mode 100644 index 0000000..a83326c Binary files /dev/null and b/assets/levels/HyperSonic.png differ diff --git a/assets/levels/In Circles.png b/assets/levels/In Circles.png new file mode 100644 index 0000000..55b4e12 Binary files /dev/null and b/assets/levels/In Circles.png differ diff --git a/assets/levels/Jesse Pinkman.png b/assets/levels/Jesse Pinkman.png new file mode 100644 index 0000000..8fca8f6 Binary files /dev/null and b/assets/levels/Jesse Pinkman.png differ diff --git a/assets/levels/Karma.png b/assets/levels/Karma.png new file mode 100644 index 0000000..07f49a7 Binary files /dev/null and b/assets/levels/Karma.png differ diff --git a/assets/levels/Knights of Thunder.png b/assets/levels/Knights of Thunder.png new file mode 100644 index 0000000..03da317 Binary files /dev/null and b/assets/levels/Knights of Thunder.png differ diff --git a/assets/levels/Komodo.png b/assets/levels/Komodo.png new file mode 100644 index 0000000..fecf11d Binary files /dev/null and b/assets/levels/Komodo.png differ diff --git a/assets/levels/Kuzureta.png b/assets/levels/Kuzureta.png new file mode 100644 index 0000000..a0cdd39 Binary files /dev/null and b/assets/levels/Kuzureta.png differ diff --git a/assets/levels/Mary On A Cross.png b/assets/levels/Mary On A Cross.png new file mode 100644 index 0000000..2796502 Binary files /dev/null and b/assets/levels/Mary On A Cross.png differ diff --git a/assets/levels/Misty Mountains.png b/assets/levels/Misty Mountains.png new file mode 100644 index 0000000..c255c1c Binary files /dev/null and b/assets/levels/Misty Mountains.png differ diff --git a/assets/levels/Mizureta.png b/assets/levels/Mizureta.png new file mode 100644 index 0000000..3dbbf81 Binary files /dev/null and b/assets/levels/Mizureta.png differ diff --git a/assets/levels/Molten Core.png b/assets/levels/Molten Core.png new file mode 100644 index 0000000..e1bdf4b Binary files /dev/null and b/assets/levels/Molten Core.png differ diff --git a/assets/levels/Molten Mercury.png b/assets/levels/Molten Mercury.png new file mode 100644 index 0000000..8d5cdf4 Binary files /dev/null and b/assets/levels/Molten Mercury.png differ diff --git a/assets/levels/Mystic Bounds.png b/assets/levels/Mystic Bounds.png new file mode 100644 index 0000000..f5a3d75 Binary files /dev/null and b/assets/levels/Mystic Bounds.png differ diff --git a/assets/levels/NIGHT RUNNER.png b/assets/levels/NIGHT RUNNER.png new file mode 100644 index 0000000..84c1193 Binary files /dev/null and b/assets/levels/NIGHT RUNNER.png differ diff --git a/assets/levels/NILE NEVER CLEAR.png b/assets/levels/NILE NEVER CLEAR.png new file mode 100644 index 0000000..f16dbe8 Binary files /dev/null and b/assets/levels/NILE NEVER CLEAR.png differ diff --git a/assets/levels/Napalm.png b/assets/levels/Napalm.png new file mode 100644 index 0000000..5142b9d Binary files /dev/null and b/assets/levels/Napalm.png differ diff --git a/assets/levels/Nhelv.png b/assets/levels/Nhelv.png new file mode 100644 index 0000000..f412420 Binary files /dev/null and b/assets/levels/Nhelv.png differ diff --git a/assets/levels/OneMoreAttempt.png b/assets/levels/OneMoreAttempt.png new file mode 100644 index 0000000..56207a4 Binary files /dev/null and b/assets/levels/OneMoreAttempt.png differ diff --git a/assets/levels/OneMoreVSC.png b/assets/levels/OneMoreVSC.png new file mode 100644 index 0000000..c6ea750 Binary files /dev/null and b/assets/levels/OneMoreVSC.png differ diff --git a/assets/levels/Overtime.png b/assets/levels/Overtime.png new file mode 100644 index 0000000..f983a3c Binary files /dev/null and b/assets/levels/Overtime.png differ diff --git a/assets/levels/PSYCHOSOCIAL.png b/assets/levels/PSYCHOSOCIAL.png new file mode 100644 index 0000000..d07fa00 Binary files /dev/null and b/assets/levels/PSYCHOSOCIAL.png differ diff --git a/assets/levels/Plasma Pulse Finale.png b/assets/levels/Plasma Pulse Finale.png new file mode 100644 index 0000000..e2c2f5e Binary files /dev/null and b/assets/levels/Plasma Pulse Finale.png differ diff --git a/assets/levels/Plasma Pulse III.png b/assets/levels/Plasma Pulse III.png new file mode 100644 index 0000000..1359774 Binary files /dev/null and b/assets/levels/Plasma Pulse III.png differ diff --git a/assets/levels/Poltergeist x3.png b/assets/levels/Poltergeist x3.png new file mode 100644 index 0000000..a50e4f4 Binary files /dev/null and b/assets/levels/Poltergeist x3.png differ diff --git a/assets/levels/Precipitance.png b/assets/levels/Precipitance.png new file mode 100644 index 0000000..dcf300c Binary files /dev/null and b/assets/levels/Precipitance.png differ diff --git a/assets/levels/Prismatic Haze.png b/assets/levels/Prismatic Haze.png new file mode 100644 index 0000000..35e38c5 Binary files /dev/null and b/assets/levels/Prismatic Haze.png differ diff --git a/assets/levels/Prismatic.png b/assets/levels/Prismatic.png new file mode 100644 index 0000000..6184499 Binary files /dev/null and b/assets/levels/Prismatic.png differ diff --git a/assets/levels/Proteus.png b/assets/levels/Proteus.png new file mode 100644 index 0000000..0fe44e7 Binary files /dev/null and b/assets/levels/Proteus.png differ diff --git a/assets/levels/Quantum Processing.png b/assets/levels/Quantum Processing.png new file mode 100644 index 0000000..6401c57 Binary files /dev/null and b/assets/levels/Quantum Processing.png differ diff --git a/assets/levels/RASH.png b/assets/levels/RASH.png new file mode 100644 index 0000000..6255614 Binary files /dev/null and b/assets/levels/RASH.png differ diff --git a/assets/levels/Realtered.png b/assets/levels/Realtered.png new file mode 100644 index 0000000..18cc728 Binary files /dev/null and b/assets/levels/Realtered.png differ diff --git a/assets/levels/Red World Rebirth.png b/assets/levels/Red World Rebirth.png new file mode 100644 index 0000000..dc3212d Binary files /dev/null and b/assets/levels/Red World Rebirth.png differ diff --git a/assets/levels/Red World.png b/assets/levels/Red World.png new file mode 100644 index 0000000..94427c0 Binary files /dev/null and b/assets/levels/Red World.png differ diff --git a/assets/levels/Redemption Arc.png b/assets/levels/Redemption Arc.png new file mode 100644 index 0000000..be2efcd Binary files /dev/null and b/assets/levels/Redemption Arc.png differ diff --git a/assets/levels/Restricted Sector.png b/assets/levels/Restricted Sector.png new file mode 100644 index 0000000..ecf6ecb Binary files /dev/null and b/assets/levels/Restricted Sector.png differ diff --git a/assets/levels/Retention.png b/assets/levels/Retention.png new file mode 100644 index 0000000..4c8f244 Binary files /dev/null and b/assets/levels/Retention.png differ diff --git a/assets/levels/Ruler of Everything.png b/assets/levels/Ruler of Everything.png new file mode 100644 index 0000000..75d5cf0 Binary files /dev/null and b/assets/levels/Ruler of Everything.png differ diff --git a/assets/levels/SANto Santo.png b/assets/levels/SANto Santo.png new file mode 100644 index 0000000..16069ed Binary files /dev/null and b/assets/levels/SANto Santo.png differ diff --git a/assets/levels/SHATTER.png b/assets/levels/SHATTER.png new file mode 100644 index 0000000..a252c6c Binary files /dev/null and b/assets/levels/SHATTER.png differ diff --git a/assets/levels/SIGSEGV.png b/assets/levels/SIGSEGV.png new file mode 100644 index 0000000..2a26389 Binary files /dev/null and b/assets/levels/SIGSEGV.png differ diff --git a/assets/levels/SILENT GOONSTEP X.png b/assets/levels/SILENT GOONSTEP X.png new file mode 100644 index 0000000..91636e3 Binary files /dev/null and b/assets/levels/SILENT GOONSTEP X.png differ diff --git a/assets/levels/SUMMER.png b/assets/levels/SUMMER.png new file mode 100644 index 0000000..822ee42 Binary files /dev/null and b/assets/levels/SUMMER.png differ diff --git a/assets/levels/Sakupen Hell.png b/assets/levels/Sakupen Hell.png new file mode 100644 index 0000000..1ff2075 Binary files /dev/null and b/assets/levels/Sakupen Hell.png differ diff --git a/assets/levels/Sandstorm.png b/assets/levels/Sandstorm.png new file mode 100644 index 0000000..3f9da8a Binary files /dev/null and b/assets/levels/Sandstorm.png differ diff --git a/assets/levels/Selenopolis.png b/assets/levels/Selenopolis.png new file mode 100644 index 0000000..66a6caf Binary files /dev/null and b/assets/levels/Selenopolis.png differ diff --git a/assets/levels/Shitty Aeternus.png b/assets/levels/Shitty Aeternus.png new file mode 100644 index 0000000..dea7bf7 Binary files /dev/null and b/assets/levels/Shitty Aeternus.png differ diff --git a/assets/levels/Shitty Beztana Vortex.png b/assets/levels/Shitty Beztana Vortex.png new file mode 100644 index 0000000..7ca7195 Binary files /dev/null and b/assets/levels/Shitty Beztana Vortex.png differ diff --git a/assets/levels/Shitty Sakupen Circles.png b/assets/levels/Shitty Sakupen Circles.png new file mode 100644 index 0000000..81006fc Binary files /dev/null and b/assets/levels/Shitty Sakupen Circles.png differ diff --git a/assets/levels/Shitty Sink.png b/assets/levels/Shitty Sink.png new file mode 100644 index 0000000..b3c9ac5 Binary files /dev/null and b/assets/levels/Shitty Sink.png differ diff --git a/assets/levels/Shitty Thinking Space II.png b/assets/levels/Shitty Thinking Space II.png new file mode 100644 index 0000000..e557452 Binary files /dev/null and b/assets/levels/Shitty Thinking Space II.png differ diff --git a/assets/levels/Shmarley Ville.png b/assets/levels/Shmarley Ville.png new file mode 100644 index 0000000..4c35752 Binary files /dev/null and b/assets/levels/Shmarley Ville.png differ diff --git a/assets/levels/Shukufuku.png b/assets/levels/Shukufuku.png new file mode 100644 index 0000000..c638a87 Binary files /dev/null and b/assets/levels/Shukufuku.png differ diff --git a/assets/levels/Sigma Interface.png b/assets/levels/Sigma Interface.png new file mode 100644 index 0000000..ddccce1 Binary files /dev/null and b/assets/levels/Sigma Interface.png differ diff --git a/assets/levels/Silentium Gradas.png b/assets/levels/Silentium Gradas.png new file mode 100644 index 0000000..8887809 Binary files /dev/null and b/assets/levels/Silentium Gradas.png differ diff --git a/assets/levels/Sodium Nitrate.png b/assets/levels/Sodium Nitrate.png new file mode 100644 index 0000000..2a5c431 Binary files /dev/null and b/assets/levels/Sodium Nitrate.png differ diff --git a/assets/levels/Solar Revolution.png b/assets/levels/Solar Revolution.png new file mode 100644 index 0000000..0337ff5 Binary files /dev/null and b/assets/levels/Solar Revolution.png differ diff --git a/assets/levels/Sonic Wave.png b/assets/levels/Sonic Wave.png new file mode 100644 index 0000000..e903f0c Binary files /dev/null and b/assets/levels/Sonic Wave.png differ diff --git a/assets/levels/Stalemate Redux.png b/assets/levels/Stalemate Redux.png new file mode 100644 index 0000000..f2adb41 Binary files /dev/null and b/assets/levels/Stalemate Redux.png differ diff --git a/assets/levels/SubSonic.png b/assets/levels/SubSonic.png new file mode 100644 index 0000000..d55e161 Binary files /dev/null and b/assets/levels/SubSonic.png differ diff --git a/assets/levels/Sunrise II.png b/assets/levels/Sunrise II.png new file mode 100644 index 0000000..c680e2f Binary files /dev/null and b/assets/levels/Sunrise II.png differ diff --git a/assets/levels/Supernova.png b/assets/levels/Supernova.png new file mode 100644 index 0000000..98a271a Binary files /dev/null and b/assets/levels/Supernova.png differ diff --git a/assets/levels/Sweater Weather.png b/assets/levels/Sweater Weather.png new file mode 100644 index 0000000..c76ffe1 Binary files /dev/null and b/assets/levels/Sweater Weather.png differ diff --git a/assets/levels/TANTRUM.png b/assets/levels/TANTRUM.png new file mode 100644 index 0000000..ada6565 Binary files /dev/null and b/assets/levels/TANTRUM.png differ diff --git a/assets/levels/TUNG TUNG GOD.png b/assets/levels/TUNG TUNG GOD.png new file mode 100644 index 0000000..c3a74ad Binary files /dev/null and b/assets/levels/TUNG TUNG GOD.png differ diff --git a/assets/levels/TURN THE LIGHTS OFF.png b/assets/levels/TURN THE LIGHTS OFF.png new file mode 100644 index 0000000..e36dabb Binary files /dev/null and b/assets/levels/TURN THE LIGHTS OFF.png differ diff --git a/assets/levels/Tenth Circle.png b/assets/levels/Tenth Circle.png new file mode 100644 index 0000000..a715360 Binary files /dev/null and b/assets/levels/Tenth Circle.png differ diff --git a/assets/levels/The Cerberus.png b/assets/levels/The Cerberus.png new file mode 100644 index 0000000..d205181 Binary files /dev/null and b/assets/levels/The Cerberus.png differ diff --git a/assets/levels/The Lost Existence.png b/assets/levels/The Lost Existence.png new file mode 100644 index 0000000..7f3d8c9 Binary files /dev/null and b/assets/levels/The Lost Existence.png differ diff --git a/assets/levels/The Reaper.png b/assets/levels/The Reaper.png new file mode 100644 index 0000000..ad1fec5 Binary files /dev/null and b/assets/levels/The Reaper.png differ diff --git a/assets/levels/The Ultimate Demon.png b/assets/levels/The Ultimate Demon.png new file mode 100644 index 0000000..78b987d Binary files /dev/null and b/assets/levels/The Ultimate Demon.png differ diff --git a/assets/levels/The Ultimate Phase.png b/assets/levels/The Ultimate Phase.png new file mode 100644 index 0000000..f1c068d Binary files /dev/null and b/assets/levels/The Ultimate Phase.png differ diff --git a/assets/levels/Thinking Space.png b/assets/levels/Thinking Space.png new file mode 100644 index 0000000..2236dfc Binary files /dev/null and b/assets/levels/Thinking Space.png differ diff --git a/assets/levels/Through The Decay.png b/assets/levels/Through The Decay.png new file mode 100644 index 0000000..465c30b Binary files /dev/null and b/assets/levels/Through The Decay.png differ diff --git a/assets/levels/Through The Gates.png b/assets/levels/Through The Gates.png new file mode 100644 index 0000000..47fc645 Binary files /dev/null and b/assets/levels/Through The Gates.png differ diff --git a/assets/levels/Toxic Tunnels.png b/assets/levels/Toxic Tunnels.png new file mode 100644 index 0000000..0fd313b Binary files /dev/null and b/assets/levels/Toxic Tunnels.png differ diff --git a/assets/levels/Trans Acu.png b/assets/levels/Trans Acu.png new file mode 100644 index 0000000..5a4a54d Binary files /dev/null and b/assets/levels/Trans Acu.png differ diff --git a/assets/levels/Troll Level.png b/assets/levels/Troll Level.png new file mode 100644 index 0000000..d4a0509 Binary files /dev/null and b/assets/levels/Troll Level.png differ diff --git a/assets/levels/Untitled.png b/assets/levels/Untitled.png new file mode 100644 index 0000000..e0b7294 Binary files /dev/null and b/assets/levels/Untitled.png differ diff --git a/assets/levels/Wasureta.png b/assets/levels/Wasureta.png new file mode 100644 index 0000000..211e389 Binary files /dev/null and b/assets/levels/Wasureta.png differ diff --git a/assets/levels/Wavebreaker.png b/assets/levels/Wavebreaker.png new file mode 100644 index 0000000..eccf262 Binary files /dev/null and b/assets/levels/Wavebreaker.png differ diff --git a/assets/levels/Wavetapper.png b/assets/levels/Wavetapper.png new file mode 100644 index 0000000..0346e63 Binary files /dev/null and b/assets/levels/Wavetapper.png differ diff --git a/assets/levels/Whatsapp Acu.png b/assets/levels/Whatsapp Acu.png new file mode 100644 index 0000000..b5d3dba Binary files /dev/null and b/assets/levels/Whatsapp Acu.png differ diff --git a/assets/levels/White Album (Old).png b/assets/levels/White Album (Old).png new file mode 100644 index 0000000..9369a5f Binary files /dev/null and b/assets/levels/White Album (Old).png differ diff --git a/assets/levels/Without U.png b/assets/levels/Without U.png new file mode 100644 index 0000000..8eab920 Binary files /dev/null and b/assets/levels/Without U.png differ diff --git a/assets/levels/Yatagarasu.png b/assets/levels/Yatagarasu.png new file mode 100644 index 0000000..61821ad Binary files /dev/null and b/assets/levels/Yatagarasu.png differ diff --git a/assets/levels/Zodiac.png b/assets/levels/Zodiac.png new file mode 100644 index 0000000..4e51ba1 Binary files /dev/null and b/assets/levels/Zodiac.png differ diff --git a/assets/levels/Zoooooooooooooooooom.png b/assets/levels/Zoooooooooooooooooom.png new file mode 100644 index 0000000..0dee659 Binary files /dev/null and b/assets/levels/Zoooooooooooooooooom.png differ diff --git a/assets/levels/aftermath.png b/assets/levels/aftermath.png new file mode 100644 index 0000000..c5c630a Binary files /dev/null and b/assets/levels/aftermath.png differ diff --git a/assets/levels/compacted tenfold.png b/assets/levels/compacted tenfold.png new file mode 100644 index 0000000..24f6a24 Binary files /dev/null and b/assets/levels/compacted tenfold.png differ diff --git a/assets/levels/evil.png b/assets/levels/evil.png new file mode 100644 index 0000000..ba7ef9d Binary files /dev/null and b/assets/levels/evil.png differ diff --git a/assets/levels/geography dash (Old).png b/assets/levels/geography dash (Old).png new file mode 100644 index 0000000..e450637 Binary files /dev/null and b/assets/levels/geography dash (Old).png differ diff --git a/assets/levels/gravity.png b/assets/levels/gravity.png new file mode 100644 index 0000000..635c492 Binary files /dev/null and b/assets/levels/gravity.png differ diff --git a/assets/levels/it back.png b/assets/levels/it back.png new file mode 100644 index 0000000..e1325d6 Binary files /dev/null and b/assets/levels/it back.png differ diff --git a/assets/levels/knock knock wave.png b/assets/levels/knock knock wave.png new file mode 100644 index 0000000..8a55024 Binary files /dev/null and b/assets/levels/knock knock wave.png differ diff --git a/assets/levels/moment.png b/assets/levels/moment.png new file mode 100644 index 0000000..4d8a6a8 Binary files /dev/null and b/assets/levels/moment.png differ diff --git a/assets/levels/niwa.png b/assets/levels/niwa.png new file mode 100644 index 0000000..3830fde Binary files /dev/null and b/assets/levels/niwa.png differ diff --git a/assets/levels/original idea.png b/assets/levels/original idea.png new file mode 100644 index 0000000..71ee97a Binary files /dev/null and b/assets/levels/original idea.png differ diff --git a/assets/levels/racism wave.png b/assets/levels/racism wave.png new file mode 100644 index 0000000..11bc9af Binary files /dev/null and b/assets/levels/racism wave.png differ diff --git a/assets/levels/reverence.png b/assets/levels/reverence.png new file mode 100644 index 0000000..413de9f Binary files /dev/null and b/assets/levels/reverence.png differ diff --git a/assets/levels/rotting body.png b/assets/levels/rotting body.png new file mode 100644 index 0000000..315201a Binary files /dev/null and b/assets/levels/rotting body.png differ diff --git a/assets/levels/sarthix.png b/assets/levels/sarthix.png new file mode 100644 index 0000000..5c91c1a Binary files /dev/null and b/assets/levels/sarthix.png differ diff --git a/assets/levels/slaughterdynamix.png b/assets/levels/slaughterdynamix.png new file mode 100644 index 0000000..b6f9dcd Binary files /dev/null and b/assets/levels/slaughterdynamix.png differ diff --git a/assets/levels/the super hotdog.png b/assets/levels/the super hotdog.png new file mode 100644 index 0000000..72c48a1 Binary files /dev/null and b/assets/levels/the super hotdog.png differ diff --git a/assets/levels/this was in a dream.png b/assets/levels/this was in a dream.png new file mode 100644 index 0000000..3ba528b Binary files /dev/null and b/assets/levels/this was in a dream.png differ diff --git a/assets/levels/tick tick BOOM.png b/assets/levels/tick tick BOOM.png new file mode 100644 index 0000000..77914d6 Binary files /dev/null and b/assets/levels/tick tick BOOM.png differ diff --git a/assets/levels/wtf.png b/assets/levels/wtf.png new file mode 100644 index 0000000..91b7b4e Binary files /dev/null and b/assets/levels/wtf.png differ diff --git a/assets/levels/xo.png b/assets/levels/xo.png new file mode 100644 index 0000000..241a435 Binary files /dev/null and b/assets/levels/xo.png differ diff --git a/assets/light.svg b/assets/light.svg new file mode 100644 index 0000000..9cf732f --- /dev/null +++ b/assets/light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/phone-landscape-dark.svg b/assets/phone-landscape-dark.svg new file mode 100644 index 0000000..91bf3aa --- /dev/null +++ b/assets/phone-landscape-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/phone-landscape.svg b/assets/phone-landscape.svg new file mode 100644 index 0000000..b1e196e --- /dev/null +++ b/assets/phone-landscape.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/thiskreologoisleftoverfromtheotherthing.svg b/assets/thiskreologoisleftoverfromtheotherthing.svg new file mode 100644 index 0000000..85ae91f --- /dev/null +++ b/assets/thiskreologoisleftoverfromtheotherthing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/tsl_icon.png b/assets/tsl_icon.png new file mode 100644 index 0000000..554db0f Binary files /dev/null and b/assets/tsl_icon.png differ diff --git a/assets/user-gear-dark.svg b/assets/user-gear-dark.svg new file mode 100644 index 0000000..1e9382b --- /dev/null +++ b/assets/user-gear-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/user-gear.svg b/assets/user-gear.svg new file mode 100644 index 0000000..ad5d070 --- /dev/null +++ b/assets/user-gear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/user-lock-dark.svg b/assets/user-lock-dark.svg new file mode 100644 index 0000000..1ad00fa --- /dev/null +++ b/assets/user-lock-dark.svg @@ -0,0 +1,4 @@ + diff --git a/assets/user-lock.svg b/assets/user-lock.svg new file mode 100644 index 0000000..1406185 --- /dev/null +++ b/assets/user-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/user-shield-dark.svg b/assets/user-shield-dark.svg new file mode 100644 index 0000000..e3ea9a5 --- /dev/null +++ b/assets/user-shield-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/user-shield.svg b/assets/user-shield.svg new file mode 100644 index 0000000..783978a --- /dev/null +++ b/assets/user-shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/css/components/btn.css b/css/components/btn.css new file mode 100644 index 0000000..15ffb1c --- /dev/null +++ b/css/components/btn.css @@ -0,0 +1,29 @@ +.btn { +border: none; + cursor: pointer; + font: inherit; + padding: 1rem; + margin: 0; + background-color: var(--color-primary); + color: var(--color-on-primary); + border-radius: 0.5rem; + box-shadow: 0 1px 0.5rem 0 rgba(0, 0, 102, 0.5); + transition: transform 100ms ease; +} + +.btn:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.btn:not(:disabled):hover:not(:active) { + transform: translateY(-2px); +} + +.shitty .btn { + border: 4px outset #eee; + padding: 0.5rem; + background-color: #ccc; + border-radius: 0; + color: black; +} diff --git a/css/components/nav.css b/css/components/nav.css new file mode 100644 index 0000000..e7efcd3 --- /dev/null +++ b/css/components/nav.css @@ -0,0 +1,92 @@ +.nav { + --color-background: white; + --color-on-background: black; + --color-primary: #0066ff; + --color-on-primary: white; + + display: flex; + column-gap: 2rem; +} +.nav .nav__tab { + padding-top: 4px; + border-bottom: 4px solid transparent; + display: flex; + align-items: center; + padding-inline: 0.5rem; + transition: border-color 100ms ease; +} +.nav .nav__tab.router-link-active { + border-color: var(--color-on-primary); +} +.nav .nav__tab:hover { + border-color: var(--color-on-primary); +} +.nav .nav__actions { + flex: 1; + display: flex; + align-items: center; + justify-content: flex-end; +} +.nav .nav__actions .nav__icon { + height: 3rem; + width: 3rem; + border: none; + background-color: transparent; + border-radius: 50%; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + transition: background-color 100ms ease; +} +.nav .nav__actions .nav__icon:hover { + background-color: rgba(255, 255, 255, 0.2); +} +.nav .nav__actions .nav__icon img { + height: 1.5rem; +} +.nav .nav__actions .nav__cta { + margin-left: 1rem; + padding: 1rem; + background-color: var(--color-on-primary); + color: var(--color-primary); + border-radius: 0.5rem; + box-shadow: 0 1px 0.5rem 0 rgba(0, 0, 102, 0.5); + transition: transform 100ms ease; +} +.nav .nav__actions .nav__cta:hover:not(:active) { + transform: translateY(-2px); +} + +/* Shitty */ + +.shitty .nav .nav__tab.router-link-active { + border-color: transparent; + color: orange; +} + +.shitty .nav .nav__tab:hover { + border-color: transparent; + color: orange; +} + +.shitty .nav .nav__actions .nav__cta { + padding: 0.5rem; + background-color: #ccc; + color: black; + border-radius: 0; + border: 4px outset #eee; +} + +.nav .nav__actions .nav__switch{ + margin-left: 1rem; + padding: 1rem; + color: white; + font-family: "Lexend Deca", sans-serif; + border: 0; + background: 0; +} +.nav .nav__actions .nav__switch option { + color: black; + font-family: "Lexend Deca", sans-serif; +} \ No newline at end of file diff --git a/css/components/tabs.css b/css/components/tabs.css new file mode 100644 index 0000000..b81f0f7 --- /dev/null +++ b/css/components/tabs.css @@ -0,0 +1,30 @@ +.tabs { + display: flex; +} + +.tabs .tab{ + border: none; + cursor: pointer; + font: inherit; + padding: 1rem; + margin: 0; + background-color: transparent; + color: var(--color-on-background); + border-bottom: 3px solid transparent; +} + +.tabs .tab:first-child { + border-top-left-radius: 0.5rem; +} + +.tabs .tab:last-child { + border-top-right-radius: 0.5rem; +} + +.tabs .tab.selected{ + border-bottom: 3px solid var(--color-on-background); +} + +.tabs .tab:hover{ + background-color: var(--color-background-hover); +} \ No newline at end of file diff --git a/css/main.css b/css/main.css new file mode 100644 index 0000000..4715d00 --- /dev/null +++ b/css/main.css @@ -0,0 +1,171 @@ +:root { + --color-background: #080808; + --color-on-background: black; + --color-background-hover: #bbbbbb; + --color-on-background-hover: black; + --color-primary: #191922; + --color-primary-disabled: #20124d; + --color-on-primary: white; + --color-error: #de0000; + --color-on-error: white; + background-size: cover; +} + +.dark.root { + color-scheme: dark; + --color-background: #08080836; + --color-on-background: white; + --color-background-hover: #2e2e2ec7; + --color-on-background-hover: white; + --color-primary: #191e22; + --color-primary-disabled: #20124d; + --color-on-primary: white; + --color-error: #de0000; + --color-on-error: white; + background: url(/assets/Bausha\ V4.png) #000000e3; + background-blend-mode: multiply; + background-size: cover; +} + +.shitty.root { + --color-background: rgba(0, 0, 0, 0.7); + --color-on-background: white; + --color-background-hover: #27262c; + --color-on-background-hover: white; + --color-primary: #20124d; + --color-primary-disabled: #1f213c; + --color-on-primary: white; + --color-error: #de0000; + --color-on-error: white; +} + +/* width */ +::-webkit-scrollbar { + width: 10px; +} + +/* Track */ +::-webkit-scrollbar-track { + background: #00000088; +} + +/* Handle */ +::-webkit-scrollbar-thumb { + background: #191e22; + border-radius: 5px; +} + +/* Handle on hover */ +::-webkit-scrollbar-thumb:hover { + background: #262e35; +} + +html, +body, +.root { + height: 100%; +} + +.root { + display: flex; + flex-direction: column; + margin: 0; + background-color: var(--color-background); + color: var(--color-on-background); +} + +.surface { + background-color: var(--color-background); + color: var(--color-on-background); +} + +header, +main { + display: grid; + grid-template-columns: minmax(16rem, 1fr) minmax(16rem, 2fr) minmax( + 16em, + 1fr + ); + column-gap: 2rem; +} + +header.surface { + padding: 0; + display: flex; + padding-inline: calc(25vw - 25rem); + height: 4rem; + background-color: var(--color-primary); + color: var(--color-on-primary); +} +@media screen and (min-width: 1366px) { + header { + display: grid; + padding-inline: 0; + } +} +header .logo { + justify-self: left; + align-self: center; + display: inline; + align-items: flex-end; + gap: 1rem; +} +header .logo img { + height: 3.5rem; +} +header .nav { + flex: 1; +} + +main { + height: 0; + flex: 1; + display: grid; + grid-template-rows: minmax(0, 1fr); + column-gap: 2rem; +} +main > div { + overflow-y: auto; +} + +.spinner { + display: flex; + align-items: center; + justify-content: center; + grid-column: span 3; +} + +input[type="checkbox"] { + height: 1.25rem; + width: 1.25rem; + cursor: pointer; + margin: 0; +} + +/* Shitty */ + +.shitty .surface { + padding: 1.5rem; + border: 2px solid var(--color-on-background);; +} + +.shitty header.surface { + padding: 0 calc(25vw - 10rem); + margin-bottom: 1.5rem; + background-color: var(--color-background); + color: var(--color-on-background); +} + +.shitty.root { + padding: 1.5rem; + background-image: url("/assets/april-background.jpg"); + background-size: cover; +} + +.shitty main { + column-gap: 1.5rem; +} + +.toggle-shitty:not(:hover) img { + display: none; +} diff --git a/css/pages/OLDLISTCSS.css b/css/pages/OLDLISTCSS.css new file mode 100644 index 0000000..3a26ef6 --- /dev/null +++ b/css/pages/OLDLISTCSS.css @@ -0,0 +1,247 @@ +.page-list .list-container, +.page-list .level-container, +.page-list .meta-container { + padding-block: 2rem; +} +.page-list .list-container { + padding-inline: 1rem; + overflow-y: auto; +} +.page-list .meta-container { + padding-right: 2rem; +} + +.page-list .sul-label { + position: relative; + padding-left: 1rem; + font-size: medium; +} + +.page-list .sul-info-label { + margin-top: 2rem; + margin-bottom: 1rem; +} + +.page-list .list { + table-layout: auto; +} +.page-list .list .rank { + text-align: end; + padding-right: 1rem; +} +.page-list .list .level { + width: 100%; +} + +.page-list .list .rank-image .rank-trophy { + height: 20px; +} + +.page-list .list-separator { + text-align: center; + padding: 1rem; +} +.page-list .list .level button { + background: url(/assets/april-background.jpg) #00000094; + background-blend-mode: multiply; + background-position: center; + background-size: cover; + color: var(--color-on-background); + border: none; + border-radius: 1rem; + padding: 2rem; + text-align: start; + word-break: normal; + overflow-wrap: anywhere; + cursor: pointer; + margin-left: 0.5rem; + width: 90%; + margin-bottom: 0.5rem; + transition: filter 0.15s ease; +} + +.page-list .list .level.error button { + color: var(--color-error); + cursor: not-allowed; + text-decoration: line-through; +} +.page-list .list .level button:hover { + background-color: var(--color-background-hover); + color: var(--color-on-background-hover); + cursor: pointer; + filter: brightness(1.35); + outline: 1px solid #d3b03c; +} +.page-list .list .level.active button { + background-color: var(--color-primary); + color: var(--color-on-primary); + filter: brightness(1.6); + outline: 2px solid #ffd54a; + box-shadow: 0 0 10px rgba(255,213,74,0.5); +} +.page-list .level-container .level { + display: flex; + flex-direction: column; + gap: 2rem; + padding-right: 2rem; + max-width: 48rem; +} + +/* light mode rate colors */ + +.page-list .level-container .level .good { + background: linear-gradient(to right, #424242, #727272); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +.page-list .level-container .level .great { + background: linear-gradient(to right, #363636, #5e5e5e); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + text-shadow: 0px 0px 2px #ffffff99; +} + +.page-list .level-container .level .peak { + background: linear-gradient(to right, #5f5f5f, #9e9e9e); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + text-shadow: 0px 0px 5px #ffffffbb; +} + +.page-list .level-container .level .level-authors { + display: grid; + grid-template-columns: max-content 1fr; + grid-auto-rows: max-content; + gap: 1rem; +} +.page-list .level-container .level .video { + aspect-ratio: 16/9; +} +.page-list .level-container .level .stats { + display: flex; + justify-content: space-evenly; + text-align: center; + gap: 2rem; +} +.page-list .level-container .level .stats li { + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; +} +.page-list .level-container .level .packs { + display: flex; + flex-wrap: wrap; + gap: 0.4em; +} +.page-list .level-container .level .packs .tag { + display: flex; + flex-shrink: 0; + background-size: 100% 100% !important; +} +.tag { + border-radius: 7px; +} +.page-list .meta-container .meta .records { + table-layout: fixed; +} +.page-list .meta-container .meta .records tr td:not(:last-child) .tag{ + padding-right: 1rem; +} +.page-list .meta-container .meta .records .percent, +.page-list .meta-container .meta .records .user, +.page-list .meta-container .meta .records .user, +.page-list .meta-container .meta .records .hz { + padding: 1rem 1rem 1rem 0; +} +.page-list .meta-container .meta .records .user { + width: 100%; +} +.page-list .meta-container .meta .records .userIcon { + padding-right: 1rem; +} +.page-list .meta-container .meta .records .userIcon .ico { + height: 1.5rem; +} +.page-list .meta-container .meta .records .percent, +.page-list .meta-container .meta .records .hz { + text-align: end; +} +.page-list .meta-container .og a:hover, +.page-list .meta-container .meta .records a:hover { + text-decoration: underline; +} +.page-list .meta { + display: flex; + flex-direction: column; + gap: 2rem; +} +.page-list .meta .errors { + display: flex; + flex-direction: column; + gap: 1rem; +} +.page-list .meta .errors .error { + padding: 1rem; + background-color: var(--color-error); + color: var(--color-on-error); + border-radius: 0.5rem; +} +.page-list .meta .editors { + display: flex; + flex-direction: column; + gap: 0.75rem; +} +.page-list .meta .promote { + padding: 1rem; + background-color: var(--color-primary); + color: var(--color-on-primary); + border-radius: 0.5rem; +} +.page-list .meta .editors li { + display: flex; + align-items: center; + gap: 0.5rem; +} +.page-list .meta .editors li img { + height: 1.25rem; +} +.page-list .meta .editors li a:hover { + text-decoration: underline; +} + +/* Shitty */ + +.shitty .page-list .list .level button { + background-color: transparent; + padding: 1rem 0; +} + + +.shitty .page-list .list .level button:hover { + background-color: #eee; + color: orange !important; +} + +.shitty .page-list .list .level.active button { + background-color: transparent; + color: orange; +} + +.tag { + font-family: "Lexend Deca", sans-serif; + display:block; + border-radius: 14px; + padding: 7px; +} + +.search-highlight{ + background: #ffd54a; + color: #000; + padding: 0 2px; + border-radius: 3px; +} \ No newline at end of file diff --git a/css/pages/card_list.css b/css/pages/card_list.css new file mode 100644 index 0000000..dac0fa2 --- /dev/null +++ b/css/pages/card_list.css @@ -0,0 +1,736 @@ +/* ============================================================ + Card List Layout (store.pointercrateLayout = false) + All rules prefixed .cl- or .page-list-cards to avoid bleed + ============================================================ */ + +/* ── Page shell ── */ +.page-list-cards { + display: flex; + flex-direction: column; + align-items: center; + width: 100%; + min-height: 100vh; + padding: 2rem 1rem 6rem; + box-sizing: border-box; + /* don't let parent overflow:hidden clip the dropdown */ + overflow: visible; +} + +/* ── Toolbar (search + filter) ── */ +.cl-toolbar { + display: flex; + flex-shrink: 0; + gap: 10px; + align-items: center; + width: 100%; + max-width: 860px; + margin-bottom: 1.25rem; +} + +.cl-search { + flex: 1; + padding: 10px 14px; + border-radius: 8px; + border: none; + background: #2a2a2a; + color: #fff; + font-size: 14px; +} + +.cl-filter-btn { + padding: 9px 16px; + border-radius: 8px; + display: flex; + align-items: center; + gap: 6px; + background: #2a2a2a; + color: #fff; + border: none; + cursor: pointer; + font-size: 14px; + white-space: nowrap; +} + +.cl-filter-dropdown { + /* position + top/right/z-index are set via inline style from JS (Teleport) */ + width: 280px; + background: #1e1e1e; + border: 1px solid #444; + border-radius: 10px; + padding: 1rem; + box-shadow: 0 8px 32px rgba(0,0,0,0.6); +} + +/* invisible full-screen backdrop so clicking outside closes the menu */ +.cl-menu-backdrop { + position: fixed; + inset: 0; + z-index: 99998; +} + +/* dropdown sits above backdrop */ +.cl-filter-dropdown { + z-index: 99999; +} + +.cl-filter-heading { + font-size: 12px; + color: #888; + margin: 0 0 8px; + text-transform: uppercase; + letter-spacing: 0.08em; +} + +.cl-filter-label { + display: flex; + align-items: center; + gap: 8px; + font-size: 14px; + color: #fff; + cursor: pointer; +} + +.cl-filter-apply { + width: 100%; + padding: 9px; + border-radius: 8px; + background: #3a6ee8; + color: #fff; + border: none; + font-size: 14px; + font-weight: 500; + cursor: pointer; +} + +/* ── Section labels ── */ +.cl-section-label { + width: 100%; + max-width: 860px; + font-size: 12px; + color: #666; + margin-bottom: 0.5rem; + letter-spacing: 0.04em; +} + +.cl-separator { + width: 100%; + max-width: 860px; + display: flex; + align-items: center; + gap: 1rem; + margin: 1.5rem 0 0.75rem; + color: #888; + font-size: 13px; + letter-spacing: 0.1em; + text-transform: uppercase; +} + +.cl-separator::before, +.cl-separator::after { + content: ''; + flex: 1; + height: 1px; + background: rgba(255,255,255,0.08); +} + +/* ── Card list container ── */ +.cl-list { + display: flex; + flex-direction: column; + align-items: center; + gap: 10px; + width: 100%; + max-width: 860px; + /* isolate the card stack so nothing inside can paint above the toolbar */ + isolation: isolate; + z-index: 1; + position: relative; +} + +/* ── Individual card ── */ +.cl-card { + position: relative; + width: 100%; + min-height: 90px; + height: auto; + border-radius: 10px; + overflow: clip; + border: 1px solid rgba(255,255,255,0.06); + display: flex; + align-items: stretch; + gap: 0; + cursor: pointer; + background: transparent; + text-align: left; + padding: 0; + transition: border-color 0.15s ease, box-shadow 0.15s ease; +} + +/* Brightness overlay via pseudo-element — avoids filter: on the card itself, + which would create a stacking context and let cards paint above the dropdown */ +.cl-card::after { + content: ''; + position: absolute; + inset: 0; + background: transparent; + transition: background 0.15s ease; + pointer-events: none; + z-index: 10; + border-radius: inherit; +} + +.cl-card:hover { + border-color: rgba(255,255,255,0.18); + box-shadow: 0 8px 32px rgba(0,0,0,0.5); +} + +.cl-card:hover::after { + background: rgba(255,255,255,0.05); +} + +.cl-card:active::after { + background: rgba(0,0,0,0.12); +} + +.cl-card-legacy { + opacity: 0.75; +} + +.cl-card-legacy:hover { + opacity: 1; +} + +/* Blurred level thumbnail background */ +.cl-card-bg { + position: absolute; + inset: 0; + background-size: cover; + background-position: center; + filter: blur(4px) brightness(0.2) saturate(0.6); + transform: scale(1.08); + transition: filter 0.3s ease; +} + +.cl-card:hover .cl-card-bg { + filter: blur(3px) brightness(0.28) saturate(0.8); +} + +/* Dark gradient over the bg */ +.cl-card-tint { + position: absolute; + inset: 0; + background: linear-gradient( + 90deg, + rgba(0,0,0,0.0) 0%, + rgba(0,0,0,0.3) 42%, + rgba(0,0,0,0.15) 100% + ); +} + +/* YouTube thumbnail */ +.cl-card-yt { + position: relative; + z-index: 2; + flex-shrink: 0; + width: 142px; + min-height: 90px; + align-self: stretch; + overflow: hidden; + display: flex; + align-items: center; + justify-content: center; +} + +.cl-card-yt-img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; +} + +.cl-card-yt-placeholder { + background: rgba(0,0,0,0.3); +} + +/* Play icon overlay */ +.cl-card-yt-play { + position: absolute; + inset: 0; + display: flex; + align-items: center; + justify-content: center; + font-size: 22px; + color: rgba(255,255,255,0.0); + background: rgba(0,0,0,0.0); + transition: all 0.2s; + pointer-events: none; +} + +.cl-card:hover .cl-card-yt-play { + color: rgba(255,255,255,0.9); + background: rgba(0,0,0,0.4); +} + +/* Vertical divider between thumbnail and text */ +.cl-card-yt::after { + content: ''; + position: absolute; + right: 0; + top: 10%; + height: 80%; + width: 1px; + background: rgba(255,255,255,0.08); +} + +/* Text info */ +.cl-card-info { + position: relative; + z-index: 2; + flex: 1; + min-width: 0; + padding: 0.85rem 1rem 0.85rem 1.1rem; + display: flex; + flex-direction: column; + gap: 3px; + justify-content: center; +} + +.cl-card-rank { + font-size: 11px; + font-weight: 700; + letter-spacing: 0.12em; + color: rgba(255,255,255,0.45); + text-transform: uppercase; + display: flex; + align-items: center; + gap: 6px; +} + +.cl-legacy-badge { + font-size: 10px; + background: rgba(255,255,255,0.1); + border-radius: 3px; + padding: 1px 5px; + letter-spacing: 0.06em; + color: rgba(255,255,255,0.4); +} + +.cl-card-name { + font-size: 17px; + font-weight: 700; + color: #fff; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + line-height: 1.2; +} + +.cl-card-meta { + font-size: 12px; + color: rgba(255,255,255,0.45); + display: flex; + align-items: center; + gap: 5px; + flex-wrap: nowrap; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.cl-card-pts { + color: #e8ff00; + font-weight: 600; + font-size: 12px; +} + +.cl-card-dot { + color: rgba(255,255,255,0.2); +} + +.cl-card-tags { + display: flex; + gap: 4px; + flex-wrap: nowrap; + overflow: hidden; +} + +.cl-card-tag { + font-size: 10px; + background: rgba(255,255,255,0.1); + color: rgba(255,255,255,0.55); + border-radius: 3px; + padding: 1px 6px; + letter-spacing: 0.04em; + white-space: nowrap; +} + +/* Arrow chevron on right */ +.cl-card-arrow { + position: relative; + z-index: 2; + font-size: 22px; + color: rgba(255,255,255,0.2); + padding: 0 1rem 0 0.5rem; + flex-shrink: 0; + transition: color 0.15s, transform 0.15s; +} + +.cl-card:hover .cl-card-arrow { + color: rgba(255,255,255,0.7); + transform: translateX(3px); +} + +/* ── Panel backdrop ── */ +.cl-panel-backdrop { + position: fixed; + inset: 0; + z-index: 500; + background: rgba(0,0,0,0.55); + backdrop-filter: blur(6px); + -webkit-backdrop-filter: blur(6px); + display: flex; + align-items: flex-start; + justify-content: flex-end; + overflow: hidden; +} + +/* ── Side panel ── */ +.cl-panel { + position: relative; + width: min(560px, 100vw); + height: 100vh; + overflow-y: auto; + overflow-x: hidden; + display: flex; + flex-direction: column; + background: #13161b; + box-shadow: -12px 0 60px rgba(0,0,0,0.7); +} + +/* Panel slide-in transition */ +.cl-panel-slide-enter-active { + transition: transform 0.32s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.2s ease; +} +.cl-panel-slide-leave-active { + transition: transform 0.25s cubic-bezier(0.55, 0, 1, 0.45), opacity 0.2s ease; +} +.cl-panel-slide-enter-from, +.cl-panel-slide-leave-to { + transform: translateX(100%); + opacity: 0; +} + +/* ── Close button ── */ +.cl-panel-close { + position: absolute; + top: 0.9rem; + right: 0.9rem; + z-index: 20; + width: 32px; + height: 32px; + border-radius: 50%; + background: rgba(0,0,0,0.5); + border: 1px solid rgba(255,255,255,0.15); + color: rgba(255,255,255,0.8); + font-size: 13px; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + transition: background 0.2s, color 0.2s; + line-height: 1; +} + +.cl-panel-close:hover { + background: rgba(255,255,255,0.15); + color: #fff; +} + +/* ── Hero banner ── */ +.cl-panel-hero { + position: relative; + height: 220px; + background-size: cover; + background-position: center; + background-color: #1a1d23; + flex-shrink: 0; +} + +.cl-panel-hero-tint { + position: absolute; + inset: 0; + background: linear-gradient( + to bottom, + rgba(0,0,0,0.15) 0%, + rgba(0,0,0,0.55) 55%, + rgba(19,22,27,1) 100% + ); +} + +.cl-panel-hero-info { + position: absolute; + bottom: 0; + left: 0; + right: 0; + padding: 1rem 1.5rem 1.25rem; +} + +.cl-panel-rank { + display: inline-block; + font-size: 11px; + font-weight: 700; + letter-spacing: 0.18em; + color: rgba(255,255,255,0.45); + text-transform: uppercase; + margin-bottom: 0.3rem; +} + +.cl-panel-title { + font-size: 1.75rem; + font-weight: 800; + color: #fff; + margin: 0 0 0.5rem; + line-height: 1.15; + /* drop shadow so it reads over any background */ + text-shadow: 0 2px 12px rgba(0,0,0,0.8); +} + +/* Override LevelAuthors styles inside the hero so they look clean */ +.cl-panel-hero-info .level-authors { + display: flex; + flex-wrap: wrap; + gap: 0.35rem 0.75rem; + margin: 0; +} + +.cl-panel-hero-info .level-authors p, +.cl-panel-hero-info .level-authors span, +.cl-panel-hero-info .level-authors a { + font-size: 12px !important; + color: rgba(255,255,255,0.55) !important; + text-shadow: 0 1px 6px rgba(0,0,0,0.8); + text-transform: uppercase; + letter-spacing: 0.06em; + font-weight: 600; + margin: 0 !important; + line-height: 1.4; +} + +/* ── Panel body ── */ +.cl-panel-body { + padding: 1.5rem 1.5rem 4rem; + flex: 1; + display: flex; + flex-direction: column; + gap: 0; +} + +/* description quote */ +.cl-panel-body > p:first-child { + font-size: 13px; + color: rgba(255,255,255,0.45); + font-style: italic; + line-height: 1.6; + margin: 0 0 1rem; + padding-bottom: 1rem; + border-bottom: 1px solid rgba(255,255,255,0.06); +} + +.cl-panel-body p { + color: rgba(255,255,255,0.65); + font-size: 14px; + line-height: 1.65; + margin: 0 0 0.6rem; +} + +/* section headings (Records, etc.) */ +.cl-panel-body h2 { + font-size: 0.7rem; + font-weight: 700; + letter-spacing: 0.18em; + text-transform: uppercase; + color: rgba(255,255,255,0.35); + margin: 1.75rem 0 0.75rem; + padding-bottom: 0.4rem; + border-bottom: 1px solid rgba(255,255,255,0.06); +} + +/* packs row */ +.cl-panel-body .packs { + display: flex; + flex-wrap: wrap; + gap: 0.4rem; + margin: 0.5rem 0 1rem; +} + +/* video */ +.cl-panel-body .video { + width: 100%; + aspect-ratio: 16/9; + border-radius: 8px; + border: none; + margin: 0.5rem 0 1rem; + background: #000; +} + +/* stats row */ +.cl-panel-body .stats { + display: flex; + gap: 0; + list-style: none; + padding: 0; + margin: 0 0 0.5rem; + border: 1px solid rgba(255,255,255,0.07); + border-radius: 8px; + overflow: hidden; +} + +.cl-panel-body .stats li { + flex: 1; + padding: 0.75rem 1rem; + border-right: 1px solid rgba(255,255,255,0.07); + display: flex; + flex-direction: column; + gap: 0.2rem; +} + +.cl-panel-body .stats li:last-child { + border-right: none; +} + +/* enjoyment bar inside the panel stats */ +.cl-panel-body .stats .enjoyment-stat { + gap: 0.3rem; +} + +.cl-panel-body .enjoyment-bar-track { + width: 75%; + height: 3px; + background: rgba(255,255,255,0.08); + border-radius: 99px; + overflow: hidden; + margin-top: 2px; +} + +.cl-panel-body .enjoyment-bar-fill { + height: 100%; + border-radius: 99px; + background: hsl(calc(var(--enjoyment, 0) * 1.2deg), 80%, 52%); + box-shadow: 0 0 6px hsl(calc(var(--enjoyment, 0) * 1.2deg), 80%, 52%); + transition: width 0.6s cubic-bezier(0.22, 1, 0.36, 1), background 0.6s ease; +} + +.cl-panel-body .stats .type-title-sm { + font-size: 0.6rem; + letter-spacing: 0.14em; + text-transform: uppercase; + color: rgba(255,255,255,0.35); + font-weight: 700; +} + +.cl-panel-body .stats p { + font-size: 1rem; + font-weight: 700; + color: #fff; + margin: 0; +} + +/* records table */ +.cl-panel-body .records { + width: 100%; + border-collapse: collapse; +} + +.cl-panel-body .records .record { + border-bottom: 1px solid rgba(255,255,255,0.05); +} + +.cl-panel-body .records .record:last-child { + border-bottom: none; +} + +.cl-panel-body .records td { + padding: 0.5rem 0.25rem; + vertical-align: middle; +} + +.cl-panel-body .records .percent p { + font-size: 13px; + font-weight: 700; + color: rgba(255,255,255,0.5); + margin: 0; + min-width: 3rem; +} + +.cl-panel-body .records .ico { + width: 36px; + height: 36px; + image-rendering: pixelated; + border-radius: 4px; +} + +.cl-panel-body .records .user a { + font-size: 14px; + font-weight: 600; + color: #fff; + text-decoration: none; + padding-left: 0.5rem; +} + +.cl-panel-body .records .user a:hover { + color: #e8ff00; +} + +/* tabs (Verification / Showcase) */ +.cl-panel-body .tabs { + display: flex; + gap: 0.25rem; + margin-bottom: 0.5rem; +} + +.cl-panel-body .tab { + padding: 0.4rem 1rem; + border-radius: 6px; + border: 1px solid rgba(255,255,255,0.1); + background: transparent; + color: rgba(255,255,255,0.45); + font-size: 13px; + cursor: pointer; + transition: all 0.15s; +} + +.cl-panel-body .tab.selected { + background: rgba(255,255,255,0.1); + color: #fff; + border-color: rgba(255,255,255,0.2); +} + +/* ── Responsive ── */ +@media (max-width: 600px) { + .cl-card { + min-height: 80px; + height: auto; + } + + .cl-card-yt { + width: 110px; + min-height: 80px; + align-self: stretch; + } + + .cl-card-name { + font-size: 15px; + } + + .cl-card-meta { + font-size: 11px; + } + + .cl-panel { + width: 100vw; + } + + .cl-panel-title { + font-size: 1.5rem; + } +} diff --git a/css/pages/home.css b/css/pages/home.css new file mode 100644 index 0000000..9e9fa68 --- /dev/null +++ b/css/pages/home.css @@ -0,0 +1,718 @@ +/* ==================================================== + Home.css — GD Demonlist Homepage + Load this in your index.html alongside your other + CSS files, e.g.: + ==================================================== */ + +@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=DM+Mono:wght@300;400;500&family=Syne:wght@400;600;800&display=swap'); + +/* ── Variables scoped to .home so they can't bleed ── */ +.home { + --hbg: #080b0f; + --hbg-2: #0d1117; + --hsurface: #161d27; + --hborder: rgba(255, 255, 255, 0.07); + --haccent: #e8ff00; + --haccent-2: #ff6b35; + --hglow: rgba(232, 255, 0, 0.18); + --htext: #f0f2f5; + --hmuted: #6b7a8d; + --hdim: #3d4a57; + --hfont-d: 'Bebas Neue', sans-serif; + --hfont-ui: 'Syne', sans-serif; + --hfont-mono: 'DM Mono', monospace; + --hr: 6px; + --hr-lg: 12px; + + background: var(--hbg); + color: var(--htext); + font-family: var(--hfont-ui); + height: 100vh; + position: relative; + overflow-x: hidden; + + /* reset any page-level margin/padding that might fight us */ + margin: 0; + padding: 0; + display: block; +} + +/* ── Noise ── */ +.home .home-noise { + pointer-events: none; + position: fixed; + inset: 0; + z-index: 1000; + opacity: 0.03; + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); + background-size: 200px 200px; +} + +/* ════════════ HERO ════════════ */ +.home .home-hero { + position: relative; + min-height: 100vh; + display: flex; + align-items: center; + justify-content: center; + padding: 6rem 2rem 4rem; + overflow: hidden; +} + +.home .home-hero-grid { + position: absolute; + inset: 0; + background-image: + linear-gradient(var(--hborder) 1px, transparent 1px), + linear-gradient(90deg, var(--hborder) 1px, transparent 1px); + background-size: 48px 48px; + -webkit-mask-image: radial-gradient(ellipse 80% 80% at 50% 30%, black 30%, transparent 100%); + mask-image: radial-gradient(ellipse 80% 80% at 50% 30%, black 30%, transparent 100%); + pointer-events: none; +} + +.home-hero-scroll { + position: absolute; + inset: 0; + overflow: hidden; + z-index: 0; +} + +.home-hero-track { + display: flex; + height: 100%; + animation: scrollBg 60s linear infinite; +} + +.home-hero-tile { + width: 80rem; + height: 100%; + background-size: cover; + background-position: center; + flex-shrink: 0; + filter: brightness(0.2) blur(3px); + margin-right: -80px; /* overlap */ + -webkit-mask-image: linear-gradient( + to right, + transparent, + black 40%, + black 60%, + transparent + ); + mask-image: linear-gradient( + to right, + transparent, + black 40%, + black 60%, + transparent + ); +} + +/* smooth infinite scroll */ +@keyframes scrollBg { + from { + transform: translateX(0); + } + to { + transform: translateX(-50%); + } +} + +.home .home-hero-content { + position: relative; + z-index: 2; + text-align: center; + max-width: 720px; +} + +.home .home-eyebrow { + display: inline-flex; + align-items: center; + gap: 0.5rem; + font-family: var(--hfont-mono); + font-size: 0.7rem; + letter-spacing: 0.25em; + color: var(--hmuted); + text-transform: uppercase; + margin-bottom: 1.5rem; + padding: 0.4rem 0.9rem; + border: 1px solid var(--hborder); + border-radius: 999px; + background: rgba(255,255,255,0.02); +} + +.home .home-dot { + width: 6px; + height: 6px; + border-radius: 50%; + background: var(--haccent); + flex-shrink: 0; + display: inline-block; +} + +.home .home-dot-pulse { + animation: homePulse 2s ease-in-out infinite; +} + +@keyframes homePulse { + 0%, 100% { box-shadow: 0 0 0 0 var(--hglow); opacity: 1; } + 50% { box-shadow: 0 0 0 6px transparent; opacity: 0.5; } +} + +.home .home-title { + display: flex; + flex-direction: column; + font-family: var(--hfont-d); + font-size: clamp(5rem, 18vw, 13rem); + line-height: 0.88; + letter-spacing: -0.01em; + margin: 0 0 2rem; + color: var(--htext); +} + +.home .home-title-line { + display: block; + font-size: xx-large; + font-style: italic; + letter-spacing: 0.05em; +} + +.home .home-title-accent { + color: var(--haccent); + font-size: 12rem; + text-shadow: 0 0 60px var(--hglow), 0 0 120px var(--hglow); +} + +.home .home-sub { + font-size: 1rem; + color: var(--hmuted); + line-height: 1.7; + max-width: 420px; + margin: 0 auto 2.5rem; +} + +.home .home-actions { + display: flex; + gap: 1rem; + justify-content: center; + flex-wrap: wrap; +} + +/* Rings */ +.home .home-deco { + position: absolute; + inset: 0; + pointer-events: none; + z-index: 0; +} + +.home .home-ring { + position: absolute; + border-radius: 50%; + border: 1px solid var(--hborder); + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.home .home-ring-1 { width: 480px; height: 480px; border-color: rgba(232,255,0,0.05); } +.home .home-ring-2 { width: 720px; height: 720px; animation: homeRing 40s linear infinite; } +.home .home-ring-3 { width: 960px; height: 960px; animation: homeRing 70s linear infinite reverse; } + +@keyframes homeRing { + to { transform: translate(-50%, -50%) rotate(360deg); } +} + +/* ════════════ BUTTONS ════════════ */ +.home .home-btn { + display: inline-flex; + align-items: center; + gap: 0.5rem; + padding: 0.75rem 1.75rem; + font-family: var(--hfont-ui); + font-size: 0.85rem; + font-weight: 600; + letter-spacing: 0.05em; + text-transform: uppercase; + border-radius: var(--hr); + text-decoration: none; + cursor: pointer; + transition: all 0.2s ease; + border: none; + line-height: 1; +} + +.home .home-btn-primary { + background: var(--haccent); + color: #000; +} + +.home .home-btn-primary:hover { + background: #fff; + transform: translateY(-2px); + box-shadow: 0 8px 32px var(--hglow); +} + +.home .home-btn-ghost { + background: transparent; + color: var(--hmuted); + border: 1px solid var(--hborder); +} + +.home .home-btn-ghost:hover { + border-color: var(--haccent); + color: var(--haccent); +} + +.home .home-btn-lg { + padding: 1rem 2.5rem; + font-size: 0.95rem; +} + +/* ════════════ STATS BAR ════════════ */ +.home .home-stats-bar { + border-top: 1px solid var(--hborder); + border-bottom: 1px solid var(--hborder); + background: var(--hbg-2); +} + +.home .home-stats-inner { + max-width: 960px; + margin: 0 auto; + display: grid; + grid-template-columns: repeat(4, 1fr); +} + +.home .home-stat-item { + display: flex; + flex-direction: column; + align-items: center; + padding: 2rem 1.5rem; + border-right: 1px solid var(--hborder); + gap: 0.3rem; + transition: background 0.2s; +} + +.home .home-stat-item:last-child { + border-right: none; +} + +.home .home-stat-item:hover { + background: rgba(232,255,0,0.03); +} + +.home .home-stat-value { + font-family: var(--hfont-d); + font-size: 2.8rem; + color: var(--haccent); + line-height: 1; + letter-spacing: 0.02em; +} + +.home .home-stat-label { + font-family: var(--hfont-mono); + font-size: 0.65rem; + letter-spacing: 0.15em; + text-transform: uppercase; + color: var(--hmuted); +} + +/* ════════════ MEMBERS SECTION ════════════ */ +.home .home-members-section { + padding: 6rem 2rem; +} + +.home .home-section-header { + text-align: center; + margin-bottom: 3rem; +} + +.home .home-section-title { + font-family: var(--hfont-d); + font-size: clamp(2.5rem, 6vw, 5rem); + letter-spacing: 0.05em; + margin: 0 0 0.4rem; + color: var(--htext); +} + +.home .home-section-sub { + font-family: var(--hfont-mono); + font-size: 0.7rem; + letter-spacing: 0.2em; + color: var(--hmuted); + text-transform: uppercase; + margin: 0; +} + +/* ── Spotlight ── */ +.home .home-spotlight { + position: relative; + max-width: 960px; + margin: 0 auto; + border-radius: var(--hr-lg); + overflow: hidden; + min-height: 420px; + border: 1px solid var(--hborder); +} + +.home .home-spotlight-bg { + position: absolute; + inset: 0; + background-size: cover; + background-position: center; + filter: blur(3px) brightness(0.22) saturate(0.5); + transform: scale(1.06); + transition: background-image 0.5s ease; +} + +.home .home-spotlight-tint { + position: absolute; + inset: 0; + background: linear-gradient( + 135deg, + rgba(8,11,15,0.93) 0%, + rgba(8,11,15,0.68) 55%, + rgba(8,11,15,0.88) 100% + ); +} + +/* Pills */ +.home .home-pills { + position: relative; + z-index: 3; + display: flex; + gap: 0.5rem; + padding: 1.25rem 1.5rem; + overflow-x: auto; + scrollbar-width: none; + border-bottom: 1px solid var(--hborder); + background: rgba(0,0,0,0.28); + backdrop-filter: blur(8px); + -webkit-backdrop-filter: blur(8px); +} + +.home .home-pills::-webkit-scrollbar { + display: none; +} + +.home .home-pill { + display: inline-flex; + align-items: center; + gap: 0.5rem; + padding: 0.4rem 0.9rem; + border-radius: 999px; + border: 1px solid var(--hborder); + background: rgba(255,255,255,0.04); + color: var(--hmuted); + font-family: var(--hfont-ui); + font-size: 0.78rem; + font-weight: 600; + cursor: pointer; + white-space: nowrap; + transition: all 0.2s; +} + +.home .home-pill:hover { + border-color: rgba(232,255,0,0.3); + color: var(--htext); +} + +.home .home-pill.home-pill-active { + background: var(--haccent); + border-color: var(--haccent); + color: #000; +} + +.home .home-pill-icon { + width: 20px; + height: 20px; + border-radius: 3px; + image-rendering: pixelated; + display: block; +} + +/* Card */ +.home .home-card { + position: relative; + z-index: 3; + display: flex; + gap: 2.5rem; + padding: 2.5rem; + align-items: flex-start; +} + +.home .home-card-left { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.75rem; + min-width: 140px; + flex-shrink: 0; +} + +.home .home-yt-link { + position: relative; + display: block; + text-decoration: none; + transition: transform 0.2s; +} + +.home .home-yt-link:hover { + transform: scale(1.04); +} + +.home .home-yt-avatar, +.home .home-icon-wrap img { + width: 80px; + height: 80px; + border-radius: 50%; + object-fit: cover; + border: 2px solid var(--hborder); + display: block; + image-rendering: pixelated; +} + +.home .home-yt-badge { + position: absolute; + bottom: -4px; + right: -4px; + background: #ff0000; + color: #fff; + font-size: 0.55rem; + font-family: var(--hfont-mono); + padding: 0.15rem 0.35rem; + border-radius: 3px; + display: flex; + align-items: center; + gap: 0.25rem; + letter-spacing: 0.05em; +} + +.home .home-card-name { + font-family: var(--hfont-d); + font-size: 1.8rem; + letter-spacing: 0.04em; + margin: 0; + color: var(--htext); + text-align: center; +} + +.home .home-card-role { + font-family: var(--hfont-mono); + font-size: 0.65rem; + letter-spacing: 0.18em; + text-transform: uppercase; + color: var(--haccent); + margin: 0; + text-align: center; +} + +.home .home-card-right { + flex: 1; + display: flex; + flex-direction: column; + gap: 1.5rem; + justify-content: center; + padding-top: 0.5rem; +} + +.home .home-cstats { + display: flex; + gap: 1rem; + flex-wrap: wrap; +} + +.home .home-cstat { + display: flex; + flex-direction: column; + gap: 0.2rem; + padding: 0.8rem 1.2rem; + border: 1px solid var(--hborder); + border-radius: var(--hr); + background: rgba(255,255,255,0.03); + min-width: 90px; +} + +.home .home-cstat-val { + font-family: var(--hfont-d); + font-size: 1.6rem; + color: var(--htext); + line-height: 1; +} + +.home .home-cstat-key { + font-family: var(--hfont-mono); + font-size: 0.6rem; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--hmuted); +} + +.home .home-hardest { + display: flex; + flex-direction: column; + gap: 0.2rem; +} + +.home .home-hardest-label { + font-family: var(--hfont-mono); + font-size: 0.6rem; + letter-spacing: 0.2em; + text-transform: uppercase; + color: var(--hdim); +} + +.home .home-hardest-name { + font-family: var(--hfont-d); + font-size: 1.5rem; + letter-spacing: 0.04em; + color: var(--haccent-2); + text-shadow: 0 0 40px rgba(255,107,53,0.3); +} + +.home .home-hardest-rank { + font-family: var(--hfont-mono); + font-size: 0.65rem; + letter-spacing: 0.12em; + text-transform: uppercase; + color: var(--hdim); + margin-top: 0.1rem; +} + +/* Nav arrows */ +.home .home-nav { + position: absolute; + bottom: 1.5rem; + z-index: 4; + background: rgba(255,255,255,0.06); + border: 1px solid var(--hborder); + color: var(--hmuted); + width: 36px; + height: 36px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + font-size: 1rem; + transition: all 0.2s; +} + +.home .home-nav:hover { + background: var(--haccent); + color: #000; + border-color: var(--haccent); +} + +.home .home-nav-left { right: 5rem; } +.home .home-nav-right { right: 1.5rem; } + +/* Transition */ +.home-card-fade-enter-active, +.home-card-fade-leave-active { + transition: opacity 0.25s ease, transform 0.25s ease; +} +.home-card-fade-enter-from { opacity: 0; transform: translateY(10px); } +.home-card-fade-leave-to { opacity: 0; transform: translateY(-8px); } + +/* ════════════ FUN FACTS ════════════ */ +.home .home-facts { + padding: 4rem 2rem 6rem; + max-width: 1100px; + margin: 0 auto; +} + +.home .home-facts-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1px; + border: 1px solid var(--hborder); + border-radius: var(--hr-lg); + overflow: hidden; + background: var(--hborder); +} + +.home .home-fact-card { + display: flex; + flex-direction: column; + gap: 0.75rem; + padding: 2rem; + background: var(--hbg-2); + transition: background 0.2s; +} + +.home .home-fact-card:hover { + background: var(--hsurface); +} + +.home .home-fact-icon { + font-size: 1.5rem; + line-height: 1; +} + +.home .home-fact-text { + font-size: 0.85rem; + color: var(--hmuted); + line-height: 1.65; + margin: 0; +} + +/* ════════════ FOOTER CTA ════════════ */ +.home .home-footer-cta { + text-align: center; + padding: 6rem 2rem; + border-top: 1px solid var(--hborder); + background: var(--hbg-2); + display: flex; + flex-direction: column; + align-items: center; + gap: 2rem; +} + +.home .home-footer-heading { + font-family: var(--hfont-d); + font-size: clamp(2rem, 5vw, 4rem); + margin: 0; + letter-spacing: 0.04em; + color: var(--htext); +} + +/* ════════════ RESPONSIVE ════════════ */ +@media (max-width: 768px) { + .home .home-stats-inner { + grid-template-columns: repeat(2, 1fr); + } + .home .home-stat-item:nth-child(2) { border-right: none; } + .home .home-stat-item:nth-child(3) { border-top: 1px solid var(--hborder); } + .home .home-stat-item:nth-child(4) { border-top: 1px solid var(--hborder); border-right: none; } + + .home .home-card { + flex-direction: column; + align-items: center; + padding: 1.5rem; + gap: 1.5rem; + } + + .home .home-card-left { + flex-direction: row; + align-items: center; + gap: 1rem; + min-width: unset; + width: 100%; + } + + .home .home-card-name, + .home .home-card-role { text-align: left; } + + .home .home-facts-grid { grid-template-columns: 1fr; } + .home .home-nav-left { right: 4rem; } + .home .home-ring { display: none; } +} + +@media (max-width: 480px) { + .home .home-title { font-size: 4.5rem; } + .home .home-pills { padding: 0.75rem 1rem; } + .home .home-card { padding: 1.25rem; } + .home .home-cstats { gap: 0.5rem; } + .home .home-cstat { padding: 0.6rem 0.8rem; min-width: 76px; } +} \ No newline at end of file diff --git a/css/pages/leaderboard.css b/css/pages/leaderboard.css new file mode 100644 index 0000000..0d22a0c --- /dev/null +++ b/css/pages/leaderboard.css @@ -0,0 +1,521 @@ +/* ============================================================ + leaderboard.css — Revamped Leaderboard + Same layout, visual polish + interactivity + ============================================================ */ + +/* ── Page shell ── */ +.page-leaderboard-container { + display: block; +} + +.page-leaderboard { + height: 100%; + display: grid; + grid-template-columns: minmax(24rem, 2fr) 3fr; + grid-template-rows: max-content 1fr; + column-gap: 2rem; + max-width: 80rem; + margin: 0 auto; +} + +.page-leaderboard > div { + overflow-y: auto; +} + +/* ── Error banner ── */ +.page-leaderboard .error-container { + grid-row: 1; + grid-column: 1 / span 2; +} + +.page-leaderboard .error-container .error { + padding: 0.75rem 1rem; + background-color: var(--color-error); + color: var(--color-on-error); + border-radius: 6px; + font-size: 0.85rem; +} + +/* ── Board + player containers ── */ +.page-leaderboard .board-container, +.page-leaderboard .player-container { + grid-row: 2; + padding-block: 2rem; +} + +.page-leaderboard .board-container { + padding-inline: 1rem; + box-shadow: inset 0 -24px 20px -20px rgba(0,0,0,0.4); +} + +/* ── Board table ── */ +.page-leaderboard .board { + table-layout: auto; + display: block; + width: 100%; + border-collapse: separate; + border-spacing: 0 3px; +} + +/* ── Rank column ── */ +.page-leaderboard .board .rank { + padding-block: 0.75rem; + padding-right: 0.5rem; + text-align: end; + font-variant-numeric: tabular-nums; + white-space: nowrap; + font-size: 0.8rem; + color: rgba(255,255,255,0.35); + font-weight: 700; + letter-spacing: 0.04em; + width: 1%; +} + +/* Top 3 rank numbers */ +.page-leaderboard .board tr:nth-child(1) .rank { + color: #ffd700; + text-shadow: 0 0 8px rgba(255,215,0,0.5); +} +.page-leaderboard .board tr:nth-child(2) .rank { + color: #c0c0c0; + text-shadow: 0 0 8px rgba(192,192,192,0.4); +} +.page-leaderboard .board tr:nth-child(3) .rank { + color: #cd7f32; + text-shadow: 0 0 8px rgba(205,127,50,0.4); +} + +/* ── Trophy column ── */ +.page-leaderboard .board .rank-image { + padding-left: 0.75rem; + padding-right: 0.25rem; + width: 2rem; +} + +.page-leaderboard .board .rank-image .trophy { + height: 20px; + display: block; + filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5)); + transition: transform 0.2s ease; +} + +.page-leaderboard .board tr:hover .trophy { + transform: scale(1.15) rotate(-4deg); +} + +/* ── Score column ── */ +.page-leaderboard .board .total { + padding: 0.75rem 0.75rem 0.75rem 0.5rem; + text-align: end; + font-variant-numeric: tabular-nums; + white-space: nowrap; + font-size: 0.85rem; + font-weight: 700; + color: rgba(255,255,255,0.45); + width: 1%; +} + +.page-leaderboard .board tr:nth-child(1) .total { color: rgba(255,215,0,0.75); } +.page-leaderboard .board tr:nth-child(2) .total { color: rgba(192,192,192,0.75); } +.page-leaderboard .board tr:nth-child(3) .total { color: rgba(205,127,50,0.75); } + +/* ── Icon column ── */ +.page-leaderboard .board .userIcon { + width: 2.75rem; + vertical-align: middle; + padding-left: 0.25rem; +} + +.page-leaderboard .board .userIcon .ico { + height: 2.25rem; + width: 2.25rem; + display: block; + border-radius: 5px; + image-rendering: pixelated; + box-shadow: 0 0 0 1px rgba(255,255,255,0.08); + transition: transform 0.15s ease, box-shadow 0.15s ease; +} + +.page-leaderboard .board tr:hover .ico { + transform: scale(1.08); + box-shadow: 0 0 0 1px rgba(255,255,255,0.22); +} + +/* ── Username column ── */ +.page-leaderboard .board .user { + width: 100%; + vertical-align: middle; + padding-left: 0.4rem; +} + +.page-leaderboard .board .user button { + background-color: transparent; + color: var(--color-on-background); + border: 1px solid transparent; + border-radius: 7px; + padding: 0.55rem 0.85rem; + text-align: start; + word-break: normal; + overflow-wrap: anywhere; + width: 100%; + position: relative; + overflow: hidden; + transition: + background-color 0.15s ease, + border-color 0.15s ease, + color 0.15s ease, + box-shadow 0.15s ease, + transform 0.1s ease; +} + +/* shimmer on hover */ +.page-leaderboard .board .user button::before { + content: ''; + position: absolute; + inset: 0; + background: linear-gradient( + 105deg, + transparent 35%, + rgba(255,255,255,0.05) 50%, + transparent 65% + ); + transform: translateX(-100%); + transition: transform 0.4s ease; + pointer-events: none; +} + +.page-leaderboard .board .user button:hover::before { + transform: translateX(100%); +} + +.page-leaderboard .board .user button:hover { + background-color: rgba(255,255,255,0.06); + border-color: rgba(255,255,255,0.1); + color: var(--color-on-background-hover); + cursor: pointer; + transform: translateX(2px); + box-shadow: 0 2px 8px rgba(0,0,0,0.3); +} + +.page-leaderboard .board .user.active button { + background-color: var(--color-primary); + color: var(--color-on-primary); + border-color: rgba(255,213,74,0.7); + box-shadow: + 0 0 0 2px rgba(255,213,74,0.25), + 0 0 16px rgba(255,213,74,0.15), + 0 3px 12px rgba(0,0,0,0.4); + transform: translateX(3px); +} + +/* ── Player detail panel ── */ +.page-leaderboard .player { + display: flex; + flex-direction: column; + gap: 1.75rem; + padding-right: 2rem; +} + +/* Player name heading */ +.page-leaderboard .player > h2:first-child { + font-size: 1.6rem; + font-weight: 800; + margin: 0; + background: linear-gradient(135deg, #ffffff 55%, rgba(255,213,74,0.75) 100%); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + line-height: 1.2; +} + +/* Total points sub-label */ +.page-leaderboard .player .extra_points_info { + font-size: 0.75rem; + color: rgba(255,255,255,0.35); + font-style: italic; + margin: -1rem 0 0; + line-height: 1.5; + letter-spacing: 0.01em; + padding: 0.4rem 0.75rem; + background: rgba(255,255,255,0.03); + border: 1px solid rgba(255,255,255,0.05); + border-radius: 6px; +} + +/* Section headings (Completions, Verifications, etc.) */ +.page-leaderboard .player h2, +.page-leaderboard .player h3 { + font-size: 0.7rem; + font-weight: 700; + letter-spacing: 0.18em; + text-transform: uppercase; + color: rgba(255,255,255,0.3); + padding-bottom: 0.5rem; + border-bottom: 1px solid rgba(255,255,255,0.06); + margin: 0; +} + +/* ── Player level rows table ── */ +.page-leaderboard .player .table { + table-layout: auto; + width: 100%; + border-collapse: separate; + border-spacing: 0 5px; +} + +.page-leaderboard .player .table tr td:not(:last-child) { + padding-right: 1rem; +} + +.page-leaderboard .player .table p, +.page-leaderboard .player .table a { + padding-block: 0.5rem; + margin: 0; +} + +/* rank + score: shrink to content */ +.page-leaderboard .player .table .rank, +.page-leaderboard .player .table .score { + width: 1%; + white-space: nowrap; +} + +.page-leaderboard .player .table .rank p, +.page-leaderboard .player .table .score p { + text-align: end; + font-variant-numeric: tabular-nums; + font-size: 0.8rem; + color: rgba(255,255,255,0.4); + font-weight: 700; +} + +/* Level pill */ +.page-leaderboard .player .table .level { + width: 100%; + background: url(/assets/april-background.jpg) #00000094; + background-blend-mode: multiply; + background-size: cover; + background-position: center; + border-radius: 0.65rem; + padding: 0.7rem 1rem 0.55rem; + border: 1px solid rgba(255,255,255,0.06); + box-shadow: + inset 0 1px 0 rgba(255,255,255,0.06), + 0 2px 8px rgba(0,0,0,0.35); + position: relative; + overflow: hidden; + transition: + filter 0.15s ease, + border-color 0.15s ease, + box-shadow 0.15s ease; +} + +/* shimmer on level pill */ +.page-leaderboard .player .table .level::before { + content: ''; + position: absolute; + inset: 0; + background: linear-gradient( + 105deg, + transparent 35%, + rgba(255,255,255,0.04) 50%, + transparent 65% + ); + transform: translateX(-100%); + transition: transform 0.4s ease; + pointer-events: none; +} + +.page-leaderboard .player .table tr:hover .level::before { + transform: translateX(100%); +} + +.page-leaderboard .player .table tr:hover .level { + filter: brightness(1.3); + border-color: rgba(211,176,60,0.35); + box-shadow: + inset 0 1px 0 rgba(255,255,255,0.1), + 0 4px 16px rgba(0,0,0,0.45), + 0 0 0 1px rgba(211,176,60,0.2); +} + +.page-leaderboard .player .table a { + font-size: 0.9rem; + font-weight: 600; + color: rgba(255,255,255,0.9); + text-decoration: none; + display: block; + transition: color 0.15s ease; +} + +.page-leaderboard .player .table a:hover { + text-decoration: underline; + color: #ffd54a; +} + + +/* ════════════════════════════════════════ + SCORE BREAKDOWN (donut + bars) +════════════════════════════════════════ */ +.page-leaderboard .player .lb-breakdown { + display: flex; + align-items: center; + gap: 1.5rem; + padding: 1.1rem 1.25rem; + background: rgba(255,255,255,0.03); + border: 1px solid rgba(255,255,255,0.07); + border-radius: 12px; +} + +/* ── Donut ── */ +.page-leaderboard .player .lb-donut-wrap { + flex-shrink: 0; + width: 100px; + height: 100px; +} + +.page-leaderboard .player .lb-donut { + width: 100%; + height: 100%; + /* SVG circles animate in */ + overflow: visible; +} + +.page-leaderboard .player .lb-donut circle:not(:first-child) { + transition: stroke-dasharray 0.7s cubic-bezier(0.22, 1, 0.36, 1), + stroke-dashoffset 0.7s cubic-bezier(0.22, 1, 0.36, 1); +} + +.page-leaderboard .player .lb-donut-total { + font-size: 18px; + font-weight: 800; + fill: #fff; + font-family: 'Geist', sans-serif; +} + +.page-leaderboard .player .lb-donut-label { + font-size: 10px; + font-weight: 600; + fill: rgba(255,255,255,0.35); + font-family: 'Geist Mono', monospace; + letter-spacing: 0.1em; + text-transform: uppercase; +} + +/* ── Bars ── */ +.page-leaderboard .player .lb-bars { + flex: 1; + display: flex; + flex-direction: column; + gap: 0.55rem; + min-width: 0; +} + +.page-leaderboard .player .lb-bar-row { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.page-leaderboard .player .lb-bar-dot { + flex-shrink: 0; + width: 7px; + height: 7px; + border-radius: 50%; + box-shadow: 0 0 6px currentColor; +} + +.page-leaderboard .player .lb-bar-cat { + flex-shrink: 0; + width: 5.5rem; + font-size: 0.72rem; + font-weight: 600; + color: rgba(255,255,255,0.45); + letter-spacing: 0.02em; +} + +.page-leaderboard .player .lb-bar-track { + flex: 1; + height: 5px; + background: rgba(255,255,255,0.07); + border-radius: 99px; + overflow: hidden; + min-width: 0; +} + +.page-leaderboard .player .lb-bar-fill { + height: 100%; + border-radius: 99px; + transition: width 0.7s cubic-bezier(0.22, 1, 0.36, 1); + /* glow matching the bar colour */ + box-shadow: 0 0 8px currentColor; +} + +.page-leaderboard .player .lb-bar-val { + flex-shrink: 0; + width: 3rem; + text-align: right; + font-size: 0.72rem; + font-weight: 700; + font-family: 'Geist Mono', monospace; + color: rgba(255,255,255,0.4); + font-variant-numeric: tabular-nums; +} + +/* ── Packs ── */ +.page-leaderboard .player .packs { + display: flex; + flex-wrap: wrap; + gap: 0.4em; +} + +.page-leaderboard .player .packs .tag { + display: flex; + flex-shrink: 0; + background-size: 100% 100% !important; + transition: transform 0.15s ease, box-shadow 0.15s ease; +} + +.page-leaderboard .player .packs .tag:hover { + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0,0,0,0.4); +} + +/* ── Tag pill (global) ── */ +.tag { + font-family: "Lexend Deca", sans-serif; + display: block; + border-radius: 14px; + padding: 5px 10px; + font-size: 0.75rem; + font-weight: 600; + letter-spacing: 0.03em; +} + +/* ── Shitty mode (preserved) ── */ +.shitty .page-leaderboard .board .user button { + background-color: transparent; + padding: 1rem 0; + border: none; + box-shadow: none; + transform: none; +} + +.shitty .page-leaderboard .board .user button::before { + display: none; +} + +.shitty .page-leaderboard .board .user button:hover { + background-color: #eee; + color: orange !important; + transform: none; + box-shadow: none; +} + +.shitty .page-leaderboard .board .user.active button { + background-color: transparent; + color: orange; + box-shadow: none; + transform: none; + border: none; +} \ No newline at end of file diff --git a/css/pages/list.css b/css/pages/list.css new file mode 100644 index 0000000..d29c718 --- /dev/null +++ b/css/pages/list.css @@ -0,0 +1,674 @@ +/* ============================================================ + list.css — Revamped Pointercrate Layout + Keeps existing structure, adds polish + interactivity + ============================================================ */ + +/* ── Containers ── */ +.page-list .list-container, +.page-list .level-container, +.page-list .meta-container { + padding-block: 2rem; +} + +.page-list .list-container { + padding-inline: 1rem; + overflow-y: auto; + box-shadow: inset 0 -24px 20px -20px rgba(0,0,0,0.4); + /* needed so position:sticky works inside an overflow:auto container */ + position: relative; + /* remove top padding — the sticky bar provides it */ + padding-top: 0; +} + +.page-list .meta-container { + padding-right: 2rem; +} + +/* ── Show-unverified label ── */ +.page-list .sul-label { + position: relative; + padding-left: 1rem; + font-size: medium; +} + +.page-list .sul-info-label { + margin-top: 2rem; + margin-bottom: 1rem; +} + +/* ── List table ── */ +.page-list .list { + table-layout: auto; + border-collapse: separate; + border-spacing: 0 2px; +} + +.page-list .list .rank { + text-align: end; + padding-right: 0.75rem; + font-variant-numeric: tabular-nums; + white-space: nowrap; +} + +.page-list .list .level { + width: 100%; +} + +.page-list .list .rank-image .rank-trophy { + height: 20px; + /* small drop shadow on trophies */ + filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5)); + transition: transform 0.2s ease; +} + +.page-list .list tr:hover .rank-trophy { + transform: scale(1.15) rotate(-4deg); +} + +/* ── Section separator ── */ +.page-list .list-separator { + text-align: center; + padding: 1rem; + font-size: 0.8rem; + letter-spacing: 0.15em; + text-transform: uppercase; + color: rgba(255,255,255,0.3); + position: relative; +} + +.page-list .list-separator::before, +.page-list .list-separator::after { + content: ''; + position: absolute; + top: 50%; + width: 28%; + height: 1px; + background: linear-gradient(to right, transparent, rgba(255,255,255,0.1)); +} + +.page-list .list-separator::before { + left: 4%; +} + +.page-list .list-separator::after { + right: 4%; + transform: scaleX(-1); +} + +/* ── Level buttons ── */ +.page-list .list .level button { + /* base: dark bg + level thumbnail blended in */ + background-color: #00000094; + background-blend-mode: multiply; + background-position: center; + background-size: cover; + color: var(--color-on-background); + + border: 1px solid rgba(255,255,255,0.06); + border-radius: 0.75rem; + padding: 0.85rem 1.1rem; + text-align: start; + word-break: normal; + overflow-wrap: anywhere; + cursor: pointer; + margin-left: 0.5rem; + width: 90%; + margin-bottom: 0.4rem; + + /* smooth everything */ + transition: + filter 0.18s ease, + border-color 0.18s ease, + box-shadow 0.18s ease, + background-color 0.18s ease, + transform 0.12s ease; + + /* subtle inner highlight at top edge */ + box-shadow: + inset 0 1px 0 rgba(255,255,255,0.07), + 0 2px 6px rgba(0,0,0,0.3); + + position: relative; + overflow: hidden; +} + +/* shimmer pseudo-element that sweeps across on hover */ +.page-list .list .level button::before { + content: ''; + position: absolute; + inset: 0; + background: linear-gradient( + 105deg, + transparent 35%, + rgba(255,255,255,0.06) 50%, + transparent 65% + ); + transform: translateX(-100%); + transition: transform 0.4s ease; + pointer-events: none; +} + +.page-list .list .level button:hover::before { + transform: translateX(100%); +} + +/* error state */ +.page-list .list .level.error button { + color: var(--color-error); + cursor: not-allowed; + text-decoration: line-through; + opacity: 0.5; +} + +/* hover state */ +.page-list .list .level button:hover { + filter: brightness(1.4); + border-color: rgba(211, 176, 60, 0.5); + box-shadow: + inset 0 1px 0 rgba(255,255,255,0.1), + 0 4px 16px rgba(0,0,0,0.4), + 0 0 0 1px rgba(211,176,60,0.25); + transform: translateX(2px); +} + +/* active (selected) state */ +.page-list .list .level.active button { + background-color: var(--color-primary); + color: var(--color-on-primary); + filter: brightness(1.5); + border-color: rgba(255, 213, 74, 0.8); + box-shadow: + inset 0 1px 0 rgba(255,255,255,0.2), + 0 0 0 2px rgba(255,213,74,0.35), + 0 0 18px rgba(255,213,74,0.25), + 0 4px 20px rgba(0,0,0,0.5); + transform: translateX(3px); +} + +/* rank number next to active level glows */ +.page-list .list .level.active ~ td .rank p, +.page-list .list tr:has(.level.active) .rank p { + color: #ffd54a; + text-shadow: 0 0 8px rgba(255,213,74,0.6); +} + +/* ── Search highlight ── */ +.search-highlight { + background: #ffd54a; + color: #000; + padding: 0 3px; + border-radius: 3px; + font-weight: 700; +} + +/* ── Level detail panel ── */ +.page-list .level-container .level { + display: flex; + flex-direction: column; + gap: 1.5rem; + padding-right: 2rem; + max-width: 48rem; +} + +/* Level title */ +.page-list .level-container .level h1 { + font-size: 1.75rem; + font-weight: 800; + line-height: 1.2; + margin: 0; + /* subtle gradient shimmer on the title */ + background: linear-gradient(135deg, #ffffff 60%, rgba(255,213,74,0.7) 100%); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +/* GD level description quote */ +.page-list .level-container .level > p:first-of-type { + font-size: 0.875rem; + color: rgba(255,255,255,0.45); + font-style: italic; + line-height: 1.6; + padding: 0.75rem 1rem; + border-left: 2px solid rgba(255,213,74,0.4); + background: rgba(255,255,255,0.03); + border-radius: 0 6px 6px 0; + margin: 0; +} + +/* Rate colours */ +.page-list .level-container .level .good { + background: linear-gradient(to right, #424242, #727272); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +.page-list .level-container .level .great { + background: linear-gradient(to right, #363636, #5e5e5e); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + text-shadow: 0 0 2px #ffffff99; +} + +.page-list .level-container .level .peak { + background: linear-gradient(to right, #5f5f5f, #9e9e9e); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + text-shadow: 0 0 5px #ffffffbb; +} + +/* Authors grid */ +.page-list .level-container .level .level-authors { + display: grid; + grid-template-columns: max-content 1fr; + grid-auto-rows: max-content; + gap: 0.5rem 1rem; +} + +.page-list .level-container .level .level-authors > *:nth-child(odd) { + font-size: 0.65rem; + font-weight: 700; + letter-spacing: 0.15em; + text-transform: uppercase; + color: rgba(255,255,255,0.35); + padding-top: 2px; +} + +/* Packs */ +.page-list .level-container .level .packs { + display: flex; + flex-wrap: wrap; + gap: 0.4em; +} + +.page-list .level-container .level .packs .tag { + display: flex; + flex-shrink: 0; + background-size: 100% 100% !important; + transition: transform 0.15s ease, box-shadow 0.15s ease; +} + +.page-list .level-container .level .packs .tag:hover { + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0,0,0,0.4); +} + +/* Tabs (Verification / Showcase) */ +.page-list .level-container .level .tabs { + display: flex; + gap: 0.35rem; + padding: 0.25rem; + background: rgba(255,255,255,0.05); + border-radius: 8px; + width: fit-content; +} + +.page-list .level-container .level .tab { + padding: 0.4rem 1.1rem; + border-radius: 6px; + border: none; + background: transparent; + color: rgba(255,255,255,0.4); + font-size: 0.8rem; + font-weight: 600; + letter-spacing: 0.04em; + cursor: pointer; + transition: background 0.15s ease, color 0.15s ease; +} + +.page-list .level-container .level .tab.selected { + background: rgba(255,255,255,0.12); + color: #fff; + box-shadow: 0 1px 4px rgba(0,0,0,0.3); +} + +.page-list .level-container .level .tab:not(.selected):hover { + color: rgba(255,255,255,0.7); + background: rgba(255,255,255,0.06); +} + +/* Video embed */ +.page-list .level-container .level .video { + aspect-ratio: 16/9; + width: 100%; + border-radius: 10px; + border: 1px solid rgba(255,255,255,0.07); + box-shadow: 0 8px 32px rgba(0,0,0,0.5); +} + +/* Stats row */ +.page-list .level-container .level .stats { + display: flex; + justify-content: space-evenly; + text-align: center; + gap: 0; + background: rgba(255,255,255,0.03); + border: 1px solid rgba(255,255,255,0.07); + border-radius: 10px; + overflow: hidden; + list-style: none; + padding: 0; + margin: 0; +} + +.page-list .level-container .level .stats li { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.4rem; + flex: 1; + padding: 1rem 0.5rem; + border-right: 1px solid rgba(255,255,255,0.06); + transition: background 0.15s ease; +} + +.page-list .level-container .level .stats li:last-child { + border-right: none; +} + +.page-list .level-container .level .stats li:hover { + background: rgba(255,255,255,0.04); +} + +.page-list .level-container .level .stats .type-title-sm { + font-size: 0.6rem; + letter-spacing: 0.15em; + text-transform: uppercase; + color: rgba(255,255,255,0.35); + font-weight: 700; +} + +.page-list .level-container .level .stats p { + font-size: 1.1rem; + font-weight: 700; + color: #fff; + margin: 0; +} + +/* ── Meta container (records + editors) ── */ +.page-list .meta { + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.page-list .meta .errors { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.page-list .meta .errors .error { + padding: 0.75rem 1rem; + background-color: var(--color-error); + color: var(--color-on-error); + border-radius: 0.5rem; + font-size: 0.85rem; +} + +/* Records heading */ +.page-list .meta h2 { + font-size: 0.7rem; + font-weight: 700; + letter-spacing: 0.18em; + text-transform: uppercase; + color: rgba(255,255,255,0.3); + padding-bottom: 0.5rem; + border-bottom: 1px solid rgba(255,255,255,0.06); + margin: 0; +} + +/* Records qualify text */ +.page-list .meta > p { + font-size: 0.8rem; + color: rgba(255,255,255,0.45); + margin: -0.75rem 0 0; +} + +/* Records table */ +.page-list .meta-container .meta .records { + table-layout: auto; + width: 100%; + border-collapse: separate; + border-spacing: 0 2px; +} + +.page-list .meta-container .meta .records .record { + border-bottom: 1px solid rgba(255,255,255,0.05); + transition: background 0.12s ease; +} + +.page-list .meta-container .meta .records .record:last-child { + border-bottom: none; +} + +.page-list .meta-container .meta .records .record:hover { + background: rgba(255,255,255,0.04); + border-radius: 6px; +} + +.page-list .meta-container .meta .records tr td:not(:last-child) .tag { + padding-right: 1rem; +} + +.page-list .meta-container .meta .records .percent, +.page-list .meta-container .meta .records .user, +.page-list .meta-container .meta .records .hz { + padding: 0.65rem 0.5rem 0.65rem 0; + vertical-align: middle; +} + +/* percent + hz: shrink to content, never wrap */ +.page-list .meta-container .meta .records .percent, +.page-list .meta-container .meta .records .hz { + width: 1%; + white-space: nowrap; +} + +/* icon column: fixed small width */ +.page-list .meta-container .meta .records .userIcon { + width: 2.5rem; + padding-right: 0.75rem; + vertical-align: middle; +} + +/* username gets all remaining space */ +.page-list .meta-container .meta .records .user { + width: 100%; +} + +.page-list .meta-container .meta .records .userIcon .ico { + height: 1.75rem; + width: 1.75rem; + border-radius: 4px; + image-rendering: pixelated; + /* small ring around icon */ + box-shadow: 0 0 0 1px rgba(255,255,255,0.1); + transition: transform 0.15s ease, box-shadow 0.15s ease; +} + +.page-list .meta-container .meta .records .record:hover .ico { + transform: scale(1.1); + box-shadow: 0 0 0 1px rgba(255,255,255,0.25); +} + +.page-list .meta-container .meta .records .percent, +.page-list .meta-container .meta .records .hz { + text-align: end; + font-variant-numeric: tabular-nums; + font-size: 0.85rem; + color: rgba(255,255,255,0.5); + font-weight: 600; + white-space: nowrap; + padding-right: 0.75rem; +} + +.page-list .meta-container .meta .records .mobile { + width: 1%; + white-space: nowrap; + vertical-align: middle; + padding-left: 0.5rem; +} + +/* 100% records stand out */ +.page-list .meta-container .meta .records .record:has(.percent p) .percent p { + color: rgba(255,255,255,0.5); +} + +.page-list .meta-container .meta .records .percent p { + margin: 0; +} + +/* Record username links */ +.page-list .meta-container .og a:hover, +.page-list .meta-container .meta .records a:hover { + text-decoration: underline; + color: #ffd54a; +} + +.page-list .meta-container .meta .records .user a { + font-size: 0.9rem; + font-weight: 500; + color: rgba(255,255,255,0.85); + text-decoration: none; + transition: color 0.15s ease; +} + +/* Editors list */ +.page-list .meta .editors { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.page-list .meta .editors li { + display: flex; + align-items: center; + gap: 0.6rem; + padding: 0.4rem 0.6rem; + border-radius: 6px; + transition: background 0.15s ease; +} + +.page-list .meta .editors li:hover { + background: rgba(255,255,255,0.05); +} + +.page-list .meta .editors li img { + height: 1.15rem; + opacity: 0.7; +} + +.page-list .meta .editors li a:hover { + text-decoration: underline; + color: #ffd54a; +} + +.page-list .meta .promote { + padding: 0.75rem 1rem; + background-color: var(--color-primary); + color: var(--color-on-primary); + border-radius: 0.5rem; + font-size: 0.85rem; +} + +/* ── Tag pill ── */ +.tag { + font-family: "Lexend Deca", sans-serif; + display: block; + border-radius: 14px; + padding: 5px 10px; + font-size: 0.75rem; + font-weight: 600; + letter-spacing: 0.03em; +} + + +/* ── Sticky search + filter bar ── */ +.page-list .list-toolbar { + position: sticky; + top: 0; + z-index: 50; + /* frosted glass effect so list content scrolls under it */ + background: rgba(10, 12, 16, 0.82); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border-bottom: 1px solid rgba(255,255,255,0.06); + padding: 0.85rem 0; + margin-bottom: 0.5rem; + /* negative margin to cancel container padding so it goes edge-to-edge */ + margin-inline: -1rem; + padding-inline: 1rem; + display: flex; + gap: 10px; + align-items: center; +} + +/* shadow that appears below the bar when scrolled */ +.page-list .list-toolbar::after { + content: ''; + position: absolute; + bottom: -12px; + left: 0; + right: 0; + height: 12px; + background: linear-gradient(to bottom, rgba(0,0,0,0.18), transparent); + pointer-events: none; +} + +/* ── Enjoyment bar ── */ +/* wraps the enjoyment stat li to add the bar beneath the number */ +.page-list .level-container .level .stats .enjoyment-stat { + position: relative; +} + +.page-list .level-container .level .stats .enjoyment-bar-track { + width: 80%; + height: 3px; + background: rgba(255,255,255,0.08); + border-radius: 99px; + overflow: hidden; + margin-top: -0.1rem; +} + +.page-list .level-container .level .stats .enjoyment-bar-fill { + height: 100%; + border-radius: 99px; + /* colour transitions red→yellow→green using the --enjoyment CSS var */ + background: hsl(calc(var(--enjoyment, 0) * 1.2deg), 80%, 52%); + box-shadow: 0 0 6px hsl(calc(var(--enjoyment, 0) * 1.2deg), 80%, 52%); + transition: width 0.6s cubic-bezier(0.22, 1, 0.36, 1), + background 0.6s ease, + box-shadow 0.6s ease; +} + +/* ── Shitty mode overrides (preserved) ── */ +.shitty .page-list .list .level button { + background-color: transparent; + padding: 1rem 0; + border: none; + box-shadow: none; +} + +.shitty .page-list .list .level button::before { + display: none; +} + +.shitty .page-list .list .level button:hover { + background-color: #eee; + color: orange !important; + transform: none; + filter: none; + box-shadow: none; +} + +.shitty .page-list .list .level.active button { + background-color: transparent; + color: orange; + box-shadow: none; + transform: none; + filter: none; +} \ No newline at end of file diff --git a/css/pages/listpacks.css b/css/pages/listpacks.css new file mode 100644 index 0000000..94267be --- /dev/null +++ b/css/pages/listpacks.css @@ -0,0 +1,664 @@ +@import url('https://fonts.bunny.net/css?family=geist:300,400,500,600,700,800|geist-mono:400,500,700&display=swap'); + +/* ── Base font for everything in the pack layout ── */ +.pack-layout, +.pack-layout * { + font-family: 'Geist', sans-serif; +} + +/* Mono for anything numeric or label-like */ +.pack-hero-pts, +.pack-hero-count, +.pack-hero-label, +.pack-pick-count, +.pack-level-rank, +.pack-level-pts, +.pack-picker-heading { + font-family: 'Geist Mono', monospace; +} + +/* ============================================================ + listpacks.css — Revamped Pack List + ============================================================ */ + +/* ── Page shell ── */ +.pack-layout { + display: flex; + flex-direction: column; + width: 100%; + height: 100%; + max-height: 100vh; + overflow: hidden; + box-sizing: border-box; +} + +/* ════════════════════════════════════════ + HERO BANNER +════════════════════════════════════════ */ +.pack-hero { + position: relative; + height: 200px; + flex-shrink: 0; + overflow: hidden; + display: flex; + align-items: flex-end; +} + +.pack-hero-collage { + position: absolute; + inset: 0; + display: flex; + gap: 0; +} + +.pack-hero-strip { + flex: 1; + background-size: cover; + background-position: center; + clip-path: polygon(8% 0%, 100% 0%, 92% 100%, 0% 100%); + margin-right: -3%; + filter: brightness(0.45) saturate(0.7); + transition: filter 0.4s ease; +} + +.pack-hero:hover .pack-hero-strip { + filter: brightness(0.55) saturate(0.85); +} + +.pack-hero-tint { + position: absolute; + inset: 0; + background: linear-gradient( + to bottom, + rgba(0,0,0,0.0) 0%, + rgba(0,0,0,0.5) 50%, + rgba(10,12,16,0.95) 100% + ); + z-index: 1; +} + +.pack-hero::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 3px; + background: var(--hero-colour, #ffffff); + opacity: 0.7; + z-index: 3; + box-shadow: 0 0 24px 4px var(--hero-colour, #ffffff); + transition: background 0.4s ease, box-shadow 0.4s ease; +} + +.pack-hero-content { + position: relative; + z-index: 2; + padding: 1.25rem 2rem 1.5rem; + width: 100%; +} + +.pack-hero-meta { + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.pack-hero-label { + font-size: 0.65rem; + font-weight: 700; + letter-spacing: 0.22em; + text-transform: uppercase; + color: rgba(255,255,255,0.4); +} + +.pack-hero-name { + font-size: clamp(1.4rem, 3vw, 2.2rem); + font-weight: 800; + margin: 0; + color: #fff; + text-shadow: 0 2px 16px rgba(0,0,0,0.8); + line-height: 1.15; +} + +.pack-hero-stats { + display: flex; + align-items: baseline; + gap: 1rem; + margin-top: 0.2rem; +} + +.pack-hero-pts { + font-size: 1.1rem; + font-weight: 700; + color: var(--hero-colour, #fff); + text-shadow: 0 0 20px var(--hero-colour, transparent); + transition: color 0.4s ease; +} + +.pack-hero-pts em { + font-style: normal; + font-size: 0.75rem; + font-weight: 500; + color: rgba(255,255,255,0.45); + margin-left: 2px; +} + +.pack-hero-count { + font-size: 0.8rem; + color: rgba(255,255,255,0.35); + font-weight: 500; +} + +/* ════════════════════════════════════════ + BODY +════════════════════════════════════════ */ +.pack-body { + display: flex; + flex: 1; + /* height:0 is the key — with flex:1 it still grows to fill space, + but setting height:0 defeats the browser's default min-height:auto + on flex children, which is what was preventing overflow from working */ + height: 0; + overflow: hidden; +} + +/* ════════════════════════════════════════ + LEFT — Pack picker +════════════════════════════════════════ */ +.pack-picker { + width: 280px; + flex-shrink: 0; + align-self: stretch; + min-height: 0; + padding: 1rem 0.75rem; + overflow-y: auto; + border-right: 1px solid rgba(255,255,255,0.07); + display: flex; + flex-direction: column; + gap: 0.4rem; + scrollbar-gutter: stable; + box-sizing: border-box; +} + +.pack-picker-heading { + font-size: 0.6rem; + font-weight: 700; + letter-spacing: 0.2em; + color: rgba(255,255,255,0.25); + text-transform: uppercase; + padding: 0.25rem 0.5rem 0.6rem; + margin: 0; + flex-shrink: 0; +} + +.pack-pick-btn { + position: relative; + width: 100%; + height: 56px; + flex-shrink: 0; + border: 1px solid rgba(255,255,255,0.06); + border-radius: 8px; + overflow: hidden; + cursor: pointer; + background: #0d0f13; + display: flex; + flex-direction: column; + justify-content: center; + padding: 0 0.85rem; + gap: 2px; + text-align: left; + transition: + border-color 0.15s ease, + box-shadow 0.15s ease, + transform 0.1s ease; +} + +.pack-pick-btn:hover { + border-color: rgba(255,255,255,0.15); + transform: translateX(2px); + box-shadow: 0 3px 12px rgba(0,0,0,0.4); +} + +.pack-pick-btn.active { + border-color: var(--pack-colour, rgba(255,255,255,0.4)); + box-shadow: + 0 0 0 1px var(--pack-colour, rgba(255,255,255,0.2)), + 0 0 14px rgba(255,255,255,0.06), + inset 0 0 20px rgba(255,255,255,0.03); + transform: translateX(3px); +} + +.pack-pick-collage { + position: absolute; + inset: 0; + display: flex; +} + +.pack-pick-strip { + flex: 1; + background-size: cover; + background-position: center; + clip-path: polygon(12% 0%, 100% 0%, 88% 100%, 0% 100%); + margin-right: -8%; + filter: brightness(0.25) saturate(0.5); + transition: filter 0.2s ease; +} + +.pack-pick-btn:hover .pack-pick-strip { + filter: brightness(0.35) saturate(0.65); +} + +.pack-pick-btn.active .pack-pick-strip { + filter: brightness(0.3) saturate(0.7); +} + +.pack-pick-tint { + position: absolute; + inset: 0; + background: rgba(0,0,0,0.45); + transition: background 0.2s ease; +} + +.pack-pick-name { + position: relative; + z-index: 2; + font-size: 0.85rem; + font-weight: 700; + color: #fff; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + text-shadow: 0 1px 6px rgba(0,0,0,0.9); + line-height: 1.2; +} + +.pack-pick-count { + position: relative; + z-index: 2; + font-size: 0.65rem; + color: rgba(255,255,255,0.35); + font-weight: 500; + text-shadow: 0 1px 4px rgba(0,0,0,0.8); +} + +.pack-pick-btn.active::before { + content: ''; + position: absolute; + left: 0; + top: 15%; + height: 70%; + width: 3px; + border-radius: 0 2px 2px 0; + background: var(--pack-colour, #fff); + box-shadow: 0 0 8px var(--pack-colour, rgba(255,255,255,0.5)); + z-index: 3; +} + +/* ════════════════════════════════════════ + RIGHT — Level cards +════════════════════════════════════════ */ +.pack-levels { + flex: 1; + min-width: 0; + min-height: 0; + align-self: stretch; + overflow-y: auto; + padding: 1.25rem 1.5rem; + box-sizing: border-box; +} + +.pack-level-grid { + display: flex; + flex-direction: column; + gap: 8px; +} + +.pack-level-card { + position: relative; + height: 82px; + flex-shrink: 0; + border-radius: 10px; + overflow: clip; + border: 1px solid rgba(255,255,255,0.06); + display: flex; + align-items: center; + cursor: pointer; + transition: + border-color 0.15s ease, + box-shadow 0.15s ease, + transform 0.12s ease; +} + +.pack-level-card:hover { + border-color: rgba(255,255,255,0.18); + box-shadow: 0 6px 24px rgba(0,0,0,0.5); + transform: translateY(-2px); +} + +.pack-level-card:active { + transform: translateY(0); +} + +.pack-level-bg { + position: absolute; + inset: 0; + background-size: cover; + background-position: center; + filter: blur(3px) brightness(0.22) saturate(0.6); + transform: scale(1.06); + transition: filter 0.25s ease; +} + +.pack-level-card:hover .pack-level-bg { + filter: blur(2px) brightness(0.32) saturate(0.8); +} + +.pack-level-tint { + position: absolute; + inset: 0; + background: linear-gradient( + 90deg, + rgba(0,0,0,0.15) 0%, + rgba(0,0,0,0.05) 55%, + rgba(0,0,0,0.4) 100% + ); +} + +.pack-level-rank { + position: relative; + z-index: 2; + flex-shrink: 0; + width: 3.5rem; + text-align: center; + font-size: 0.72rem; + font-weight: 800; + letter-spacing: 0.06em; + color: rgba(255,255,255,0.35); + border-right: 1px solid rgba(255,255,255,0.07); + align-self: stretch; + display: flex; + align-items: center; + justify-content: center; +} + +.pack-level-info { + position: relative; + z-index: 2; + flex: 1; + min-width: 0; + padding: 0 0.85rem; + display: flex; + flex-direction: column; + gap: 4px; +} + +.pack-level-name { + font-size: 1rem; + font-weight: 700; + color: #fff; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + text-shadow: 0 1px 8px rgba(0,0,0,0.7); + line-height: 1.2; +} + +.pack-level-pts { + font-size: 0.72rem; + font-weight: 600; + color: var(--pack-colour, rgba(255,255,255,0.45)); + text-shadow: 0 0 12px var(--pack-colour, transparent); + letter-spacing: 0.02em; +} + +.pack-level-arrow { + position: relative; + z-index: 2; + font-size: 1.4rem; + color: rgba(255,255,255,0.2); + padding: 0 1rem 0 0.5rem; + flex-shrink: 0; + transition: color 0.15s ease, transform 0.15s ease; +} + +.pack-level-card:hover .pack-level-arrow { + color: rgba(255,255,255,0.65); + transform: translateX(3px); +} + +.pack-level-card::after { + content: ''; + position: absolute; + inset: 0; + background: transparent; + transition: background 0.15s ease; + pointer-events: none; + z-index: 1; +} + +.pack-level-card:hover::after { + background: rgba(255,255,255,0.04); +} + +/* ── Card transitions ── */ +.pack-card-enter-active { transition: opacity 0.25s ease, transform 0.25s ease; } +.pack-card-leave-active { transition: opacity 0.15s ease, transform 0.15s ease; } +.pack-card-enter-from { opacity: 0; transform: translateY(10px); } +.pack-card-leave-to { opacity: 0; transform: translateY(-6px); } +.pack-card-move { transition: transform 0.3s ease; } + +/* ── Scrollbars ── */ +.pack-picker::-webkit-scrollbar, +.pack-levels::-webkit-scrollbar { width: 5px; } +.pack-picker::-webkit-scrollbar-track, +.pack-levels::-webkit-scrollbar-track { background: transparent; } +.pack-picker::-webkit-scrollbar-thumb, +.pack-levels::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 99px; } +.pack-picker::-webkit-scrollbar-thumb:hover, +.pack-levels::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.2); } + + +/* ════════════════════════════════════════ + HERO PROGRESS BAR +════════════════════════════════════════ */ +.pack-hero-progress-badge { + display: inline-flex; + align-items: center; + gap: 0.4rem; + padding: 0.2rem 0.6rem; + background: rgba(0,0,0,0.35); + border: 1px solid rgba(255,255,255,0.1); + border-radius: 99px; + backdrop-filter: blur(6px); +} + +.pack-hero-progress-icon { + font-family: 'Geist Mono', monospace; + font-size: 0.75rem; + font-weight: 700; + color: #fff; +} + +.pack-hero-progress-label { + font-size: 0.65rem; + color: rgba(255,255,255,0.45); + font-weight: 500; +} + +.pack-hero-progress-track { + margin-top: 0.6rem; + width: min(340px, 90%); + height: 4px; + background: rgba(255,255,255,0.1); + border-radius: 99px; + overflow: hidden; +} + +.pack-hero-progress-fill { + height: 100%; + border-radius: 99px; + transition: width 0.7s cubic-bezier(0.22, 1, 0.36, 1); + min-width: 4px; +} + +/* ════════════════════════════════════════ + SORT TOOLBAR +════════════════════════════════════════ */ +.pack-sort-bar { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.6rem 0.25rem 0.85rem; + flex-wrap: wrap; + flex-shrink: 0; +} + +.pack-sort-label { + font-size: 0.65rem; + font-weight: 700; + letter-spacing: 0.14em; + text-transform: uppercase; + color: rgba(255,255,255,0.28); + font-family: 'Geist Mono', monospace; + white-space: nowrap; +} + +.pack-sort-tabs { + display: flex; + gap: 0.25rem; + padding: 0.2rem; + background: rgba(255,255,255,0.05); + border-radius: 7px; +} + +.pack-sort-tab { + padding: 0.3rem 0.85rem; + border-radius: 5px; + border: none; + background: transparent; + color: rgba(255,255,255,0.35); + font-size: 0.78rem; + font-weight: 600; + cursor: pointer; + transition: background 0.15s ease, color 0.15s ease; + font-family: 'Geist', sans-serif; +} + +.pack-sort-tab:hover { + color: rgba(255,255,255,0.65); +} + +.pack-sort-tab.active { + background: rgba(255,255,255,0.1); + color: #fff; + box-shadow: 0 1px 4px rgba(0,0,0,0.3); +} + +/* Player selector */ +.pack-player-select { + display: flex; + align-items: center; + gap: 0.5rem; + margin-left: auto; +} + +.pack-player-dropdown { + padding: 0.3rem 0.6rem; + background: rgba(255,255,255,0.06); + border: 1px solid rgba(255,255,255,0.1); + border-radius: 6px; + color: #fff; + font-size: 0.78rem; + font-family: 'Geist', sans-serif; + cursor: pointer; + outline: none; + transition: border-color 0.15s ease; + max-width: 160px; +} + +.pack-player-dropdown:hover, +.pack-player-dropdown:focus { + border-color: rgba(255,255,255,0.25); +} + +.pack-player-dropdown option { + background: #1a1d23; + color: #fff; +} + +/* ════════════════════════════════════════ + LEVEL CARD ADDITIONS +════════════════════════════════════════ */ + +/* completed state */ +.pack-level-card.pack-level-done { + border-color: rgba(255,255,255,0.15); +} + +.pack-level-card.pack-level-done .pack-level-bg { + filter: blur(3px) brightness(0.3) saturate(0.8); +} + +/* completion tick badge */ +.pack-level-tick { + position: absolute; + top: 0.5rem; + left: 0.5rem; + z-index: 3; + width: 20px; + height: 20px; + border-radius: 50%; + background: rgba(75, 232, 138, 0.9); + color: #000; + font-size: 11px; + font-weight: 800; + display: flex; + align-items: center; + justify-content: center; + box-shadow: 0 0 10px rgba(75,232,138,0.5); +} + +/* bottom row inside level info */ +.pack-level-bottom { + display: flex; + align-items: center; + gap: 0.5rem; + min-width: 0; +} + +/* contribution bar track */ +.pack-contrib-track { + flex: 1; + height: 3px; + background: rgba(255,255,255,0.08); + border-radius: 99px; + overflow: hidden; + min-width: 20px; + max-width: 120px; +} + +.pack-contrib-fill { + height: 100%; + border-radius: 99px; + transition: width 0.5s cubic-bezier(0.22, 1, 0.36, 1); + opacity: 0.85; +} + +.pack-contrib-pct { + font-family: 'Geist Mono', monospace; + font-size: 0.62rem; + font-weight: 600; + color: rgba(255,255,255,0.3); + white-space: nowrap; + flex-shrink: 0; +} + +/* ── Responsive ── */ +@media (max-width: 640px) { + .pack-picker { width: 220px; } + .pack-hero { height: 160px; } + .pack-hero-name { font-size: 1.3rem; } + .pack-level-card { height: 70px; } + .pack-level-name { font-size: 0.9rem; } +} \ No newline at end of file diff --git a/css/pages/roulette.css b/css/pages/roulette.css new file mode 100644 index 0000000..cc32eb3 --- /dev/null +++ b/css/pages/roulette.css @@ -0,0 +1,572 @@ +/* ============================================================ + roulette.css — Revamped Demon Roulette + ============================================================ */ + +@import url('https://fonts.bunny.net/css?family=geist:300,400,500,600,700,800|geist-mono:400,500,700&display=swap'); + +.page-roulette, +.page-roulette * { + font-family: 'Geist', sans-serif; + box-sizing: border-box; +} + +/* ════════════════════════════════════════ + SIDEBAR +════════════════════════════════════════ */ +.page-roulette .sidebar { + padding: 1.5rem; + display: flex; + flex-direction: column; + gap: 1.75rem; + align-items: stretch; + overflow-y: auto; +} + +.page-roulette .sidebar-header { + display: flex; + flex-direction: column; + gap: 0.4rem; +} + +.page-roulette .sidebar-title { + font-size: 1.2rem; + font-weight: 800; + margin: 0; + background: linear-gradient(135deg, #fff 55%, rgba(255,213,74,0.8) 100%); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +.page-roulette .sidebar-credit { + font-size: 0.75rem; + color: rgba(255,255,255,0.35); + line-height: 1.5; + margin: 0; +} + +.page-roulette .sidebar-credit a { + color: rgba(255,255,255,0.55); + text-decoration: underline; + transition: color 0.15s; +} + +.page-roulette .sidebar-credit a:hover { + color: #ffd54a; +} + +/* ── Progress panel ── */ +.page-roulette .sidebar-progress { + display: flex; + flex-direction: column; + gap: 0.5rem; + padding: 0.85rem 1rem; + background: rgba(255,255,255,0.04); + border: 1px solid rgba(255,255,255,0.07); + border-radius: 10px; +} + +.page-roulette .sp-row { + display: flex; + justify-content: space-between; + align-items: center; +} + +.page-roulette .sp-label { + font-size: 0.7rem; + font-weight: 600; + letter-spacing: 0.1em; + text-transform: uppercase; + color: rgba(255,255,255,0.3); + font-family: 'Geist Mono', monospace; +} + +.page-roulette .sp-val { + font-size: 0.85rem; + font-weight: 700; + color: rgba(255,255,255,0.75); + font-family: 'Geist Mono', monospace; +} + +.page-roulette .sp-pct { color: #4be88a; } +.page-roulette .sp-streak { color: #ff9c4b; } + +.page-roulette .sp-track { + height: 5px; + background: rgba(255,255,255,0.08); + border-radius: 99px; + overflow: hidden; + margin: 0.1rem 0; +} + +.page-roulette .sp-fill { + height: 100%; + border-radius: 99px; + background: linear-gradient(90deg, #4b9de8, #4be88a); + box-shadow: 0 0 10px rgba(75,232,138,0.4); + transition: width 0.6s cubic-bezier(0.22, 1, 0.36, 1); +} + +/* ── Options form ── */ +.page-roulette .options { + display: flex; + flex-direction: column; + gap: 0.75rem; + align-items: flex-start; +} + +.page-roulette .options-heading { + font-size: 0.65rem; + font-weight: 700; + letter-spacing: 0.18em; + text-transform: uppercase; + color: rgba(255,255,255,0.28); + margin: 0 0 0.15rem; + font-family: 'Geist Mono', monospace; +} + +.page-roulette .check { + display: flex; + gap: 0.6rem; + align-items: center; +} + +.page-roulette .check input[type="checkbox"] { + width: 15px; + height: 15px; + accent-color: #ffd54a; + cursor: pointer; +} + +.page-roulette .check label { + font-size: 0.85rem; + font-weight: 500; + color: rgba(255,255,255,0.75); + cursor: pointer; + display: flex; + align-items: center; + gap: 0.4rem; +} + +.page-roulette .check-sub { + font-size: 0.65rem; + color: rgba(255,255,255,0.3); + font-family: 'Geist Mono', monospace; +} + +/* ── Save / load ── */ +.page-roulette .save { + display: flex; + flex-direction: column; + gap: 0.6rem; + align-items: flex-start; +} + +.page-roulette .save .btns { + display: flex; + gap: 0.6rem; +} + +/* ════════════════════════════════════════ + LEVELS FEED +════════════════════════════════════════ */ +.page-roulette .levels-container { + grid-row: 1; + grid-column: 2 / span 2; + overflow-y: auto; + padding-right: 2rem; + /* subtle scroll hint */ + box-shadow: inset 0 -24px 20px -20px rgba(0,0,0,0.4); +} + +.page-roulette .levels { + display: flex; + flex-direction: column; + padding: 2rem 0; + gap: 0.75rem; +} + +/* ── Empty / start prompt ── */ +.page-roulette .roulette-start-prompt, +.page-roulette .roulette-empty { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 0.75rem; + padding: 4rem 2rem; + color: rgba(255,255,255,0.2); + text-align: center; +} + +.page-roulette .roulette-start-icon, +.page-roulette .roulette-empty-icon { + font-size: 3rem; + line-height: 1; + margin: 0; +} + +.page-roulette .roulette-start-text, +.page-roulette .roulette-empty-text { + font-size: 0.9rem; + font-weight: 500; + color: rgba(255,255,255,0.25); + margin: 0; +} + +/* ── Level card (shared base) ── */ +.page-roulette .level { + position: relative; + border-radius: 10px; + overflow: hidden; + border: 1px solid rgba(255,255,255,0.06); + display: grid; + grid-template-columns: 11rem 1fr; + grid-auto-rows: auto; + transition: border-color 0.15s ease, box-shadow 0.15s ease; +} + +.page-roulette .level:hover { + border-color: rgba(255,255,255,0.13); + box-shadow: 0 4px 20px rgba(0,0,0,0.4); +} + +/* blurred background thumbnail */ +.page-roulette .level-bg { + position: absolute; + inset: 0; + background-size: cover; + background-position: center; + filter: blur(4px) brightness(0.18) saturate(0.5); + transform: scale(1.06); + transition: filter 0.3s ease; + z-index: 0; +} + +.page-roulette .level:hover .level-bg { + filter: blur(3px) brightness(0.25) saturate(0.7); +} + +/* tint overlays per state */ +.page-roulette .level-tint { + position: absolute; + inset: 0; + z-index: 1; + pointer-events: none; +} + +.page-roulette .level-tint-done { + background: linear-gradient(90deg, rgba(0,181,75,0.08) 0%, transparent 60%); +} + +.page-roulette .level-tint-current { + background: linear-gradient(90deg, rgba(58,110,232,0.12) 0%, transparent 60%); +} + +.page-roulette .level-tint-remaining { + background: linear-gradient(90deg, rgba(213,0,0,0.08) 0%, transparent 60%); +} + +/* coloured left edge strip per state */ +.page-roulette .level-done::before, +.page-roulette .level-current::before, +.page-roulette .level-remaining::before { + content: ''; + position: absolute; + left: 0; + top: 10%; + height: 80%; + width: 3px; + border-radius: 0 2px 2px 0; + z-index: 3; +} + +.page-roulette .level-done::before { background: #4be88a; box-shadow: 0 0 10px rgba(75,232,138,0.5); } +.page-roulette .level-current::before { background: #4b9de8; box-shadow: 0 0 10px rgba(75,157,232,0.5); } +.page-roulette .level-remaining::before { background: #e84b4b; box-shadow: 0 0 10px rgba(232,75,75,0.5); } + +/* ── Video thumbnail cell ── */ +.page-roulette .video { + position: relative; + z-index: 2; + display: block; + overflow: hidden; + height: 100%; + min-height: 80px; +} + +.page-roulette .video img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; + transition: transform 0.3s ease, filter 0.3s ease; +} + +.page-roulette .level:hover .video img { + transform: scale(1.04); +} + +.page-roulette .video-play { + position: absolute; + inset: 0; + display: flex; + align-items: center; + justify-content: center; + font-size: 1.5rem; + color: rgba(255,255,255,0); + background: rgba(0,0,0,0); + transition: all 0.2s ease; +} + +.page-roulette .level:hover .video-play { + color: rgba(255,255,255,0.9); + background: rgba(0,0,0,0.35); +} + +/* ── Meta cell ── */ +.page-roulette .meta { + position: relative; + z-index: 2; + padding: 0.85rem 1rem; + display: flex; + flex-direction: column; + gap: 0.3rem; +} + +.page-roulette .meta-rank { + font-size: 0.65rem; + font-weight: 700; + letter-spacing: 0.14em; + text-transform: uppercase; + color: rgba(255,255,255,0.3); + font-family: 'Geist Mono', monospace; +} + +.page-roulette .meta-name { + font-size: 1.05rem; + font-weight: 700; + color: #fff; + margin: 0; + line-height: 1.2; + text-shadow: 0 1px 8px rgba(0,0,0,0.6); +} + +.page-roulette .meta-id { + font-size: 0.7rem; + color: rgba(255,255,255,0.25); + font-family: 'Geist Mono', monospace; +} + +.page-roulette .meta-badge { + display: inline-block; + margin-top: 0.2rem; + font-size: 0.62rem; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; + padding: 0.15rem 0.5rem; + border-radius: 99px; + background: rgba(75,157,232,0.2); + border: 1px solid rgba(75,157,232,0.4); + color: #4b9de8; + width: fit-content; +} + +.page-roulette .meta-pct { + font-size: 0.85rem; + font-weight: 700; + font-family: 'Geist Mono', monospace; + margin-top: auto; +} + +.page-roulette .meta-pct-done { color: #4be88a; } +.page-roulette .meta-pct-missed { color: #e84b4b; } + +/* ── Actions bar (percent input + buttons) ── */ +.page-roulette .actions { + position: relative; + z-index: 2; + grid-column: 1 / span 2; + display: flex; + gap: 0.6rem; + align-items: center; + padding: 0.75rem 1rem; + background: rgba(0,0,0,0.35); + border-top: 1px solid rgba(255,255,255,0.06); + backdrop-filter: blur(6px); +} + +.page-roulette .pct-input { + flex: 1; + border: 1px solid rgba(255,255,255,0.1); + border-radius: 7px; + padding: 0.55rem 0.85rem; + background: rgba(255,255,255,0.07); + color: #fff; + font-size: 0.9rem; + font-family: 'Geist Mono', monospace; + transition: border-color 0.15s ease, background 0.15s ease; + outline: none; +} + +.page-roulette .pct-input:focus { + border-color: rgba(255,255,255,0.3); + background: rgba(255,255,255,0.1); +} + +.page-roulette .pct-input::placeholder { + color: rgba(255,255,255,0.25); +} + +/* ── Results panel ── */ +.page-roulette .results { + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; + padding: 2.5rem 1.5rem; + background: rgba(255,255,255,0.03); + border: 1px solid rgba(255,255,255,0.07); + border-radius: 12px; + text-align: center; +} + +.page-roulette .results-icon { + font-size: 3rem; + line-height: 1; +} + +.page-roulette .results-title { + font-size: 1.8rem; + font-weight: 800; + margin: 0; + background: linear-gradient(135deg, #fff 50%, rgba(255,213,74,0.8) 100%); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +.page-roulette .results-stats { + display: flex; + gap: 0; + border: 1px solid rgba(255,255,255,0.07); + border-radius: 10px; + overflow: hidden; + background: rgba(255,255,255,0.03); + width: 100%; + max-width: 360px; +} + +.page-roulette .rstat { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + gap: 0.25rem; + padding: 0.85rem 0.5rem; + border-right: 1px solid rgba(255,255,255,0.06); + transition: background 0.15s ease; +} + +.page-roulette .rstat:last-child { border-right: none; } +.page-roulette .rstat:hover { background: rgba(255,255,255,0.04); } + +.page-roulette .rstat-val { + font-size: 1.4rem; + font-weight: 800; + color: #fff; + font-family: 'Geist Mono', monospace; +} + +.page-roulette .rstat-key { + font-size: 0.6rem; + font-weight: 700; + letter-spacing: 0.14em; + text-transform: uppercase; + color: rgba(255,255,255,0.3); +} + +/* ════════════════════════════════════════ + TOASTS +════════════════════════════════════════ */ +.page-roulette .toasts-container { + overflow-y: auto; + grid-column: 2 / span 2; + grid-row: 1; + align-self: start; + margin-block: 2rem; + margin-right: 2rem; + pointer-events: none; +} + +.page-roulette .toasts { + display: flex; + flex-direction: column; + gap: 0.6rem; +} + +.page-roulette .toast { + display: flex; + align-items: center; + gap: 0.6rem; + background: rgba(213,0,0,0.9); + backdrop-filter: blur(8px); + color: #fff; + padding: 0.75rem 1rem; + border-radius: 8px; + border: 1px solid rgba(255,100,100,0.3); + box-shadow: 0 4px 16px rgba(213,0,0,0.4); + font-size: 0.85rem; + font-weight: 500; + pointer-events: all; +} + +.page-roulette .toast-icon { + font-size: 1rem; + flex-shrink: 0; +} + +.page-roulette .toast p { margin: 0; } + +/* Toast slide-in transition */ +.toast-enter-active { + transition: opacity 0.25s ease, transform 0.25s ease; +} +.toast-leave-active { + transition: opacity 0.2s ease, transform 0.2s ease; +} +.toast-enter-from { + opacity: 0; + transform: translateX(20px); +} +.toast-leave-to { + opacity: 0; + transform: translateX(20px); +} + +/* ════════════════════════════════════════ + RESPONSIVE +════════════════════════════════════════ */ +@media screen and (min-width: 1366px) { + .page-roulette .levels-container { + grid-column: 2; + padding-right: 0; + } + .page-roulette .toasts-container { + grid-column: 3; + margin: 0; + padding-right: 2rem; + padding-block: 2rem; + align-self: stretch; + } +} + +@media screen and (max-width: 768px) { + .page-roulette .level { + grid-template-columns: 8rem 1fr; + } + .page-roulette .meta-name { + font-size: 0.9rem; + } +} \ No newline at end of file diff --git a/css/reset.css b/css/reset.css new file mode 100644 index 0000000..fdf41b7 --- /dev/null +++ b/css/reset.css @@ -0,0 +1,72 @@ +*, +*::before, +*::after { + box-sizing: border-box; +} + +html, +body, +ol, +ul { + margin: 0; + padding: 0; + border: 0; + font: inherit; +} + +ol, +ul { + list-style: none; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td { + padding: 0; +} + +blockquote, +q { + quotes: none; +} + +blockquote::before, +blockquote::after, +q::before, +q::after { + content: none; +} + +a { + color: inherit; + text-decoration: inherit; +} + +img { + display: block; +} + +input, +button { + color: inherit; +} + +h1, +h2, +h3, +h4, +h5, +h6, +p, +dl, +dd { + margin: 0; + font-weight: normal; +} + +iframe { + border: none; +} diff --git a/css/typography.css b/css/typography.css new file mode 100644 index 0000000..cb79c4e --- /dev/null +++ b/css/typography.css @@ -0,0 +1,459 @@ +h1, +.type-h1, +.type-headline-lg { + font-family: "Lexend Deca", sans-serif; + font-size: 51.4285714286px; + line-height: 52px; + font-weight: 700; + letter-spacing: -2px; + -webkit-font-smoothing: subpixel-antialiased; +} +h1::before, +.type-h1::before, +.type-headline-lg::before { + content: ""; + margin-bottom: -0.1805555556em; + display: table; +} +h1::after, +.type-h1::after, +.type-headline-lg::after { + content: ""; + margin-top: -0.1305555556em; + display: table; +} + +h2, +.type-h2, +.type-headline-md { + font-family: "Lexend Deca", sans-serif; + font-size: 34.2857142857px; + line-height: 40px; + font-weight: 700; + letter-spacing: -1px; + -webkit-font-smoothing: subpixel-antialiased; +} +h2::before, +.type-h2::before, +.type-headline-md::before { + content: ""; + margin-bottom: -0.2583333333em; + display: table; +} +h2::after, +.type-h2::after, +.type-headline-md::after { + content: ""; + margin-top: -0.2083333333em; + display: table; +} + +h3, +.type-h3, +.type-headline-sm { + font-family: "Lexend Deca", sans-serif; + font-size: 22.8571428571px; + line-height: 28px; + font-weight: 700; + -webkit-font-smoothing: subpixel-antialiased; +} +h3::before, +.type-h3::before, +.type-headline-sm::before { + content: ""; + margin-bottom: -0.2875em; + display: table; +} +h3::after, +.type-h3::after, +.type-headline-sm::after { + content: ""; + margin-top: -0.2375em; + display: table; +} + +h4, +.type-h4, +.type-title-lg { + font-family: "Lexend Deca", sans-serif; + font-size: 22.8571428571px; + line-height: 28px; + font-weight: 700; + text-transform: uppercase; + -webkit-font-smoothing: subpixel-antialiased; +} +h4::before, +.type-h4::before, +.type-title-lg::before { + content: ""; + margin-bottom: -0.2875em; + display: table; +} +h4::after, +.type-h4::after, +.type-title-lg::after { + content: ""; + margin-top: -0.2375em; + display: table; +} + +h5, +.type-h5, +.type-title-md { + font-family: "Lexend Deca", sans-serif; + font-size: 20px; + line-height: 26px; + font-weight: 700; + text-transform: uppercase; + -webkit-font-smoothing: subpixel-antialiased; +} +h5::before, +.type-h5::before, +.type-title-md::before { + content: ""; + margin-bottom: -0.325em; + display: table; +} +h5::after, +.type-h5::after, +.type-title-md::after { + content: ""; + margin-top: -0.275em; + display: table; +} + +h6, +dt, +.type-h6, +.type-title-sm { + font-family: "Lexend Deca", sans-serif; + font-size: 17.1428571429px; + line-height: 24px; + font-weight: 700; + text-transform: uppercase; + -webkit-font-smoothing: subpixel-antialiased; +} +h6::before, +dt::before, +.type-h6::before, +.type-title-sm::before { + content: ""; + margin-bottom: -0.375em; + display: table; +} +h6::after, +dt::after, +.type-h6::after, +.type-title-sm::after { + content: ""; + margin-top: -0.325em; + display: table; +} + +label, +input[type="text"], +input[type="number"], +.type-label-lg { + font-family: "Lexend Deca", sans-serif; + font-size: 17.1428571429px; + line-height: 20px; + font-weight: 500; + -webkit-font-smoothing: subpixel-antialiased; +} +.type-label-lg::before { + content: ""; + margin-bottom: -0.2583333333em; + display: table; +} +.type-label-lg::after { + content: ""; + margin-top: -0.2083333333em; + display: table; +} + +.type-label-md { + font-family: "Lexend Deca", sans-serif; + font-size: 14.2857142857px; + line-height: 18px; + font-weight: 500; + -webkit-font-smoothing: subpixel-antialiased; +} +.type-label-md::before { + content: ""; + margin-bottom: -0.305em; + display: table; +} +.type-label-md::after { + content: ""; + margin-top: -0.255em; + display: table; +} + +.type-label-sm { + font-family: "Lexend Deca", sans-serif; + font-size: 11.4285714286px; + line-height: 12px; + font-weight: 500; + -webkit-font-smoothing: subpixel-antialiased; +} +.type-label-sm::before { + content: ""; + margin-bottom: -0.2em; + display: table; +} +.type-label-sm::after { + content: ""; + margin-top: -0.15em; + display: table; +} + +p, +.type-body { + font-family: "Lexend Deca", sans-serif; + font-size: 17.1428571429px; + line-height: 28px; + font-weight: 500; + -webkit-font-smoothing: subpixel-antialiased; +} +p::before, +.type-body::before { + content: ""; + margin-bottom: -0.4916666667em; + display: table; +} +p::after, +.type-body::after { + content: ""; + margin-top: -0.4416666667em; + display: table; +} + +/* Shitty Variants */ + +.shitty h1, +.shitty .type-h1, +.shitty .type-headline-lg { + font-family: "Times New Roman", serif; + font-size: 51.4285714286px; + line-height: 52px; + font-weight: 700; + -webkit-font-smoothing: subpixel-antialiased; +} +.shitty h1::before, +.shitty .type-h1::before, +.shitty .type-headline-lg::before { + content: ""; + margin-bottom: -0.1805555556em; + display: table; +} +.shitty h1::after, +.shitty .type-h1::after, +.shitty .type-headline-lg::after { + content: ""; + margin-top: -0.1305555556em; + display: table; +} + +.shitty h2, +.shitty .type-h2, +.shitty .type-headline-md { + font-family: "Times New Roman", serif; + font-size: 34.2857142857px; + line-height: 40px; + font-weight: 700; + -webkit-font-smoothing: subpixel-antialiased; +} +.shitty h2::before, +.shitty .type-h2::before, +.shitty .type-headline-md::before { + content: ""; + margin-bottom: -0.2583333333em; + display: table; +} +.shitty h2::after, +.shitty .type-h2::after, +.shitty .type-headline-md::after { + content: ""; + margin-top: -0.2083333333em; + display: table; +} + +.shitty h3, +.shitty .type-h3, +.shitty .type-headline-sm { + font-family: "Verdana", sans-serif; + font-size: 22.8571428571px; + line-height: 28px; + font-weight: 700; + -webkit-font-smoothing: subpixel-antialiased; +} +.shitty h3::before, +.shitty .type-h3::before, +.shitty .type-headline-sm::before { + content: ""; + margin-bottom: -0.2875em; + display: table; +} +.shitty h3::after, +.shitty .type-h3::after, +.shitty .type-headline-sm::after { + content: ""; + margin-top: -0.2375em; + display: table; +} + +.shitty h4, +.shitty .type-h4, +.shitty .type-title-lg { + font-family: "Verdana", sans-serif; + font-size: 22.8571428571px; + line-height: 28px; + font-weight: 700; + text-transform: uppercase; + -webkit-font-smoothing: subpixel-antialiased; +} +.shitty h4::before, +.shitty .type-h4::before, +.shitty .type-title-lg::before { + content: ""; + margin-bottom: -0.2875em; + display: table; +} +.shitty h4::after, +.shitty .type-h4::after, +.shitty .type-title-lg::after { + content: ""; + margin-top: -0.2375em; + display: table; +} + +.shitty h5, +.shitty .type-h5, +.shitty .type-title-md { + font-family: "Verdana", sans-serif; + font-size: 20px; + line-height: 26px; + font-weight: 700; + text-transform: uppercase; + -webkit-font-smoothing: subpixel-antialiased; +} +.shitty h5::before, +.shitty .type-h5::before, +.shitty .type-title-md::before { + content: ""; + margin-bottom: -0.325em; + display: table; +} +.shitty h5::after, +.shitty .type-h5::after, +.shitty .type-title-md::after { + content: ""; + margin-top: -0.275em; + display: table; +} + +.shitty h6, +.shitty dt, +.shitty .type-h6, +.shitty .type-title-sm { + font-family: "Verdana", sans-serif; + font-size: 17.1428571429px; + line-height: 24px; + font-weight: 700; + text-transform: uppercase; + -webkit-font-smoothing: subpixel-antialiased; +} +.shitty h6::before, +.shitty dt::before, +.shitty .type-h6::before, +.shitty .type-title-sm::before { + content: ""; + margin-bottom: -0.375em; + display: table; +} +.shitty h6::after, +.shitty dt::after, +.shitty .type-h6::after, +.shitty .type-title-sm::after { + content: ""; + margin-top: -0.325em; + display: table; +} + +.shitty label, +.shitty input[type="text"], +.shitty input[type="number"], +.shitty .type-label-lg { + font-family: "Comic Sans MS", "Comic Sans", sans-serif; + font-size: 17.1428571429px; + line-height: 20px; + font-weight: bold; + -webkit-font-smoothing: subpixel-antialiased; +} +.shitty .type-label-lg::before { + content: ""; + margin-bottom: -0.2583333333em; + display: table; +} +.shitty .type-label-lg::after { + content: ""; + margin-top: -0.2083333333em; + display: table; +} + +.shitty .type-label-md { + font-family: "Verdana", sans-serif; + font-size: 14.2857142857px; + line-height: 18px; + font-weight: 500; + -webkit-font-smoothing: subpixel-antialiased; +} +.shitty .type-label-md::before { + content: ""; + margin-bottom: -0.305em; + display: table; +} +.shitty .type-label-md::after { + content: ""; + margin-top: -0.255em; + display: table; +} + +.shitty .type-label-sm { + font-family: "Verdana", sans-serif; + font-size: 11.4285714286px; + line-height: 12px; + font-weight: 500; + -webkit-font-smoothing: subpixel-antialiased; +} +.shitty .type-label-sm::before { + content: ""; + margin-bottom: -0.2em; + display: table; +} +.shitty .type-label-sm::after { + content: ""; + margin-top: -0.15em; + display: table; +} + +.shitty p, +.shitty .type-body { + font-family: "Verdana", sans-serif; + font-size: 17.1428571429px; + line-height: 28px; + font-weight: 500; + -webkit-font-smoothing: subpixel-antialiased; +} +.shitty p::before, +.shitty .type-body::before { + content: ""; + margin-bottom: -0.4916666667em; + display: table; +} +.shitty p::after, +.shitty .type-body::after { + content: ""; + margin-top: -0.4416666667em; + display: table; +} diff --git a/data/_editors.json b/data/_editors.json new file mode 100644 index 0000000..8f63f0e --- /dev/null +++ b/data/_editors.json @@ -0,0 +1,130 @@ +[ + { + "role": "member", + "name": "nile", + "link": "https://www.youtube.com/@nile64" + }, + { + "role": "member", + "name": "CoolEnder32", + "link": "https://www.youtube.com/@CoolEnder32" + }, + { + "role": "member", + "name": "Curta", + "link": "https://www.youtube.com/@Curta-m1e" + }, + { + "role": "member", + "name": "Devy", + "link": "https://www.youtube.com/@Inidevy4732" + }, + { + "role": "member", + "name": "JQuazol", + "link": "https://www.youtube.com/@JQuazol" + }, + { + "role": "member", + "name": "kek", + "link": "https://www.youtube.com/@keksi_gd" + }, + { + "role": "member", + "name": "kiri", + "link": "https://www.youtube.com/@k.kirico" + }, + { + "role": "member", + "name": "lunacii", + "link": "https://www.youtube.com/@llunacii" + }, + { + "role": "member", + "name": "MeatballMoose", + "link": "https://www.youtube.com/@meatballmoose" + }, + { + "role": "member", + "name": "Skellity", + "link": "https://www.youtube.com/@Skellityishere" + }, + { + "role": "member", + "name": "Koolant", + "link": "https://www.youtube.com/@Koolantium" + }, + { + "role": "member", + "name": "ZorpikGMD", + "link": "https://www.youtube.com/@ZorpikGMD" + }, + { + "role": "member", + "name": "Bennoct", + "link": "https://www.youtube.com/@Bennoct" + }, + { + "role": "member", + "name": "Deezy", + "link": "https://www.youtube.com/@itzzzdeezy" + }, + { + "role": "member", + "name": "GHHH", + "link": "https://www.youtube.com/@ghhh5172" + }, + { + "role": "member", + "name": "Gp0", + "link": "https://www.youtube.com/@RealGp0" + }, + { + "role": "member", + "name": "JsTocii", + "link": "https://www.youtube.com/@jstocii8665" + }, + { + "role": "member", + "name": "Kaiyote", + "link": "https://www.youtube.com/@kaiyote_" + }, + { + "role": "member", + "name": "Lani", + "link": "https://www.youtube.com/@Lani3333" + }, + { + "role": "member", + "name": "Poqqers", + "link": "https://www.youtube.com/@Poqqers" + }, + { + "role": "member", + "name": "Chris", + "link": "https://www.youtube.com/@RenuiGD" + }, + { + "role": "member", + "name": "Taraco", + "link": "https://www.youtube.com/@taracogd" + }, + { + "role": "member", + "name": "Z", + "link": "https://www.youtube.com/@LSolarX" + }, + { + "role": "member", + "name": "Sparkle", + "link": "https://www.youtube.com/@Anti.Sparkle_GD" + }, + { + "role": "member", + "name": "Zacc", + "link": "https://www.youtube.com/@itzzacc901" + } + + + +] diff --git a/data/cl/Aint no gabagool.json b/data/cl/Aint no gabagool.json new file mode 100644 index 0000000..37d0ce4 --- /dev/null +++ b/data/cl/Aint no gabagool.json @@ -0,0 +1,16 @@ +{ + "id": 136080687, + "name": "Aint no gabagool", + "description": "", + "gdleveldescription": "song is for decoration atp", + "author": "Bennoct", + "creators": ["Bennoct"], + "verifier": "Bennoct", + "verifierEnjoyment": 90, + "verification": "https://youtu.be/e-QpbzdfsCs", + "showcase": "https://youtu.be/e-QpbzdfsCs", + "percentToQualify": 100, + "records": [ + + ] +} diff --git a/data/cl/CUBE CUBE.json b/data/cl/CUBE CUBE.json new file mode 100644 index 0000000..b10488e --- /dev/null +++ b/data/cl/CUBE CUBE.json @@ -0,0 +1,21 @@ +{ + "id": 106348058, + "name": "CUBE CUBE", + "description": "evil. cubey mccube challenge.", + "gdleveldescription": "GG VERIFIED AFTER 6428 ATTEMPTS GGGGGG", + "author": "Poqqers", + "creators": ["Poqqers"], + "verifier": "Poqqers", + "verifierEnjoyment": 0, + "verification": "https://www.youtube.com/watch?v=Wtj5VNs-_jY", + "showcase": "https://www.youtube.com/watch?v=Wtj5VNs-_jY", + "percentToQualify": 100, + "records": [ + { + "user": "MeatballMoose", + "link": "https://youtu.be/Sy44cHeiyts?si=3gJzJh6sffL_LBUl", + "percent": 100, + "enjoyment": 34 + } + ] +} diff --git a/data/cl/FINAL SKIBIDI.json b/data/cl/FINAL SKIBIDI.json new file mode 100644 index 0000000..f06fc39 --- /dev/null +++ b/data/cl/FINAL SKIBIDI.json @@ -0,0 +1,45 @@ +{ + "id": 114086683, + "name": "FINAL SKIBIDI", + "description": "Final Fantasy inspired challenge featuring 11 frame perfects known as the '11 jumps of rizz' in a row ripped straight from the creator's and verifiers level Silent Balls. The level took a bit under 3 and a half thousand attempts to be verified.", + "gdleveldescription": "The Eleven Jumps of Rizz from Silent Balls by me... as a challenge. Verified in 3472 attempts!", + "author": "nile", + "creators": ["nile"], + "verifier": "nile", + "verifierEnjoyment": 9, + "verification": "https://www.youtube.com/watch?v=gYxsyyD2y8o", + "showcase": "https://www.youtube.com/watch?v=gYxsyyD2y8o", + "percentToQualify": 100, + "records": [ + { + "user": "Poqqers", + "link": "https://www.youtube.com/watch?v=bM-hXpqyoxo", + "percent": 100, + "enjoyment": 8 + }, + { + "user": "Gp0", + "link": "https://www.youtube.com/watch?v=VjpuhfnTsY0", + "percent": 100, + "enjoyment": 5 + }, + { + "user": "MeatballMoose", + "link": "https://youtu.be/Sy44cHeiyts?si=3gJzJh6sffL_LBUl", + "percent": 100, + "enjoyment": 7 + }, + { + "user": "Z", + "link": "https://youtu.be/PGcpWdev6zw", + "percent": 100, + "enjoyment": 90 + }, + { + "user": "JQuazol", + "link": "https://www.youtube.com/watch?v=ac91P8isn5k", + "percent": 100, + "enjoyment": 70 + } + ] +} diff --git a/data/cl/Fresh.json b/data/cl/Fresh.json new file mode 100644 index 0000000..aff3dcb --- /dev/null +++ b/data/cl/Fresh.json @@ -0,0 +1,27 @@ +{ + "id": 111005491, + "name": "Fresh", + "description": "Gp0's buffed version of Groovy, a 1.9 GDPS wave challenge.", + "gdleveldescription": "Groovy Remake", + "author": "Gp0", + "creators": ["Gp0"], + "verifier": "Gp0", + "verifierEnjoyment": 75, + "verification": "https://www.youtube.com/watch?v=2ZsS1zUAYYI", + "showcase": "https://www.youtube.com/watch?v=2ZsS1zUAYYI", + "percentToQualify": 100, + "records": [ + { + "user": "MeatballMoose", + "link": "https://youtu.be/Anc2Yb0bmas", + "percent": 100, + "enjoyment": 89 + }, + { + "user": "Poqqers", + "link": "https://www.youtube.com/watch?v=yUIIkOjjKQo", + "percent": 100, + "enjoyment": 80 + } + ] +} diff --git a/data/cl/OneMoreVSC.json b/data/cl/OneMoreVSC.json new file mode 100644 index 0000000..9741c92 --- /dev/null +++ b/data/cl/OneMoreVSC.json @@ -0,0 +1,33 @@ +{ + "id": 135850533, + "name": "OneMoreVSC", + "description": "Level made over a year ago, finally verified now.", + "gdleveldescription": "VSC stands for Very Super Cool", + "author": "Gp0", + "creators": ["Gp0", "Lani"], + "verifier": "Gp0", + "verifierEnjoyment": 60, + "verification": "https://www.youtube.com/watch?v=lwrBAeXb3g4", + "showcase": "https://www.youtube.com/watch?v=lwrBAeXb3g4", + "percentToQualify": 100, + "records": [ + { + "user": "Poqqers", + "link": "https://www.youtube.com/watch?v=jSa16ys7eP0", + "percent": 100, + "enjoyment": 90 + }, + { + "user": "nile", + "link": "https://www.youtube.com/watch?v=NbKvh8D2yHw", + "percent": 100, + "enjoyment": 95 + }, + { + "user": "Bennoct", + "link": "https://youtu.be/skDrW4NwqF0", + "percent": 100, + "enjoyment": 80 + } + ] +} diff --git a/data/cl/SANto Santo.json b/data/cl/SANto Santo.json new file mode 100644 index 0000000..b4f04fc --- /dev/null +++ b/data/cl/SANto Santo.json @@ -0,0 +1,16 @@ +{ + "id": 136545628, + "name": "SANto Santo", + "description": "incredible demon", + "gdleveldescription": "Santo es el seor (lvl by RealGp0)", + "author": "Koolant", + "creators": ["Gp0"], + "verifier": "Gp0", + "verifierEnjoyment": 10000, + "verification": "https://www.youtube.com/watch?v=xL82qLUn6r0", + "showcase": "https://www.youtube.com/watch?v=xL82qLUn6r0", + "percentToQualify": 100, + "records": [ + + ] +} diff --git a/data/cl/Selenopolis.json b/data/cl/Selenopolis.json new file mode 100644 index 0000000..0fb451f --- /dev/null +++ b/data/cl/Selenopolis.json @@ -0,0 +1,16 @@ +{ + "id": 137369367, + "name": "Selenopolis", + "description": "Heliopolis inspired level made to be top 1 on the challenge list of the JECL and TGDL", + "gdleveldescription": "in greek, Selenopolis means \"City of the Moon\" as heliopolis means \"City of the Sun\". Heavily inspired from heliopolis. made and verified by me, 22,057 attempts!", + "author": "CoolEnder32", + "creators": ["CoolEnder32"], + "verifier": "CoolEnder32", + "verifierEnjoyment": 80, + "verification": "https://www.youtube.com/watch?v=O4bWYiRTI1I", + "showcase": "https://www.youtube.com/watch?v=O4bWYiRTI1I", + "percentToQualify": 100, + "records": [ + + ] +} diff --git a/data/cl/TUNG TUNG GOD.json b/data/cl/TUNG TUNG GOD.json new file mode 100644 index 0000000..4eb7844 --- /dev/null +++ b/data/cl/TUNG TUNG GOD.json @@ -0,0 +1,51 @@ +{ + "id": 135442348, + "name": "TUNG TUNG GOD", + "description": "spam", + "gdleveldescription": "impossible 330,0000 attempts", + "author": "Bennoct", + "creators": ["Bennoct"], + "verifier": "Bennoct", + "verifierEnjoyment": 100, + "verification": "https://www.youtube.com/watch?v=3E0Xdivq22w", + "showcase": "https://www.youtube.com/watch?v=3E0Xdivq22w", + "percentToQualify": 100, + "records": [ + { + "user": "CoolEnder32", + "link": "https://www.youtube.com/watch?v=TjMgSqpVYyI", + "percent": 100, + "enjoyment": 100 + }, + { + "user": "nile", + "link": "https://www.youtube.com/watch?v=SK2r04MXetw", + "percent": 100, + "enjoyment": 100 + }, + { + "user": "Gp0", + "link": "https://www.youtube.com/watch?v=QBFY1UaFYYM", + "percent": 100, + "enjoyment": 100 + }, + { + "user": "Z", + "link": "https://www.youtube.com/watch?v=wx76P_qbQok", + "percent": 100, + "enjoyment": 100 + }, + { + "user": "MeatballMoose", + "link": "https://youtu.be/vHJn_Xi4hXQ", + "percent": 100, + "enjoyment": 100 + }, + { + "user": "Poqqers", + "link": "https://www.youtube.com/watch?v=yUIIkOjjKQo", + "percent": 100, + "enjoyment": 100 + } + ] +} diff --git a/data/cl/_list.json b/data/cl/_list.json new file mode 100644 index 0000000..0747826 --- /dev/null +++ b/data/cl/_list.json @@ -0,0 +1,18 @@ +[ + "Selenopolis", + "original idea", + "OneMoreVSC", + "compacted tenfold", + "slaughterdynamix", + "knock knock wave", + "CUBE CUBE", + "SANto Santo", + "FINAL SKIBIDI", + "Fresh", + "Aint no gabagool", + "this was in a dream", + "racism wave", + "TUNG TUNG GOD" +] + + diff --git a/data/cl/_packlist.json b/data/cl/_packlist.json new file mode 100644 index 0000000..fce17ad --- /dev/null +++ b/data/cl/_packlist.json @@ -0,0 +1,12 @@ +[ + { + "name": "Poqqers Pack", + "levels": ["original idea", "slaughterdynamix", "knock knock wave", "CUBE CUBE"], + "colour": "linear-gradient(to right, #f4d002, #f49702)" + }, + { + "name": "Gp0 Pack", + "levels": ["OneMoreVSC", "Fresh", "racism wave"], + "colour": "linear-gradient(to right, #f4d002, #f49702)" + } +] diff --git a/data/cl/compacted tenfold.json b/data/cl/compacted tenfold.json new file mode 100644 index 0000000..716761f --- /dev/null +++ b/data/cl/compacted tenfold.json @@ -0,0 +1,15 @@ +{ + "id": 137581203, + "name": "compacted tenfold", + "description": "2nd in the compacted trilogy", + "gdleveldescription": "designed to make you go insane", + "author": "JQuazol", + "creators": ["JQuazol"], + "verifier": "JQuazol", + "verifierEnjoyment": 35, + "verification": "https://www.youtube.com/watch?v=ElipW-12ZWg", + "showcase": "https://www.youtube.com/watch?v=ElipW-12ZWg", + "percentToQualify": 100, + "records": [ + ] +} diff --git a/data/cl/knock knock wave.json b/data/cl/knock knock wave.json new file mode 100644 index 0000000..1e18235 --- /dev/null +++ b/data/cl/knock knock wave.json @@ -0,0 +1,21 @@ +{ + "id": 123295085, + "name": "knock knock wave", + "description": "its BLACK", + "gdleveldescription": "1473 attempts", + "author": "Poqqers", + "creators": ["Poqqers"], + "verifier": "Poqqers", + "verifierEnjoyment": 80, + "verification": "https://www.youtube.com/watch?v=CGRNNN-w0Do", + "showcase": "https://www.youtube.com/watch?v=CGRNNN-w0Do", + "percentToQualify": 100, + "records": [ + { + "user": "MeatballMoose", + "link": "https://youtu.be/mK5cEQq7L3c", + "percent": 100, + "enjoyment": 3 + } + ] +} diff --git a/data/cl/original idea.json b/data/cl/original idea.json new file mode 100644 index 0000000..7cb7cbd --- /dev/null +++ b/data/cl/original idea.json @@ -0,0 +1,16 @@ +{ + "id": 132794174, + "name": "original idea", + "description": "A recreation of GrenadeOfTacos part in grief using only the showcase. Poqqers kept dying to random stuff at the ending and therefore he did not enjoy it as much.", + "gdleveldescription": "A nerfed recreation of Taco's part in GRIEF made using only Doggie's streams and other showcases, can you beat this more accessible version? (verified in 9874 attempts)", + "author": "Poqqers", + "creators": ["Poqqers", "GrenadeOfTacos"], + "verifier": "Poqqers", + "verifierEnjoyment": 50, + "verification": "https://www.youtube.com/watch?v=2RC3QGFcAUI", + "showcase": "https://www.youtube.com/watch?v=2RC3QGFcAUI", + "percentToQualify": 100, + "records": [ + + ] +} diff --git a/data/cl/racism wave.json b/data/cl/racism wave.json new file mode 100644 index 0000000..e0823da --- /dev/null +++ b/data/cl/racism wave.json @@ -0,0 +1,33 @@ +{ + "id": 116046024, + "name": "racism wave", + "description": "wave chalenge but racist", + "gdleveldescription": "epic", + "author": "Gp0", + "creators": ["Gp0"], + "verifier": "Gp0", + "verifierEnjoyment": 70, + "verification": "https://youtu.be/ynBlqwtmduI", + "showcase": "https://youtu.be/ynBlqwtmduI", + "percentToQualify": 100, + "records": [ + { + "user": "MeatballMoose", + "link": "https://youtu.be/XKc_x2FF_I0", + "percent": 100, + "enjoyment": 84 + }, + { + "user": "Poqqers", + "link": "https://www.youtube.com/watch?v=4tznUB_osEI&feature=youtu.be", + "percent": 100, + "enjoyment": 100 + }, + { + "user": "JQuazol", + "link": "https://youtu.be/5A712dERXk8", + "percent": 100, + "enjoyment": 80 + } + ] +} diff --git a/data/cl/slaughterdynamix.json b/data/cl/slaughterdynamix.json new file mode 100644 index 0000000..762f5d2 --- /dev/null +++ b/data/cl/slaughterdynamix.json @@ -0,0 +1,16 @@ +{ + "id": 109851801, + "name": "slaughterdynamix", + "description": "", + "gdleveldescription": "verified by whxpd", + "author": "Poqqers", + "creators": ["Poqqers"], + "verifier": "Poqqers", + "verifierEnjoyment": 90, + "verification": "https://youtu.be/3cHxNvVN21c", + "showcase": "https://youtu.be/3cHxNvVN21c", + "percentToQualify": 100, + "records": [ + + ] +} diff --git a/data/cl/this was in a dream.json b/data/cl/this was in a dream.json new file mode 100644 index 0000000..2d4c44b --- /dev/null +++ b/data/cl/this was in a dream.json @@ -0,0 +1,16 @@ +{ + "id": 126156557, + "name": "this was in a dream", + "description": "", + "gdleveldescription": "this cursed thing was in my latest dream.", + "author": "JQuazol", + "creators": ["JQuazol"], + "verifier": "JQuazol", + "verifierEnjoyment": 75, + "verification": "https://youtu.be/RSIERlHqXOw?si=mRU3DjnL10yQCFn6", + "showcase": "https://youtu.be/RSIERlHqXOw?si=mRU3DjnL10yQCFn6", + "percentToQualify": 100, + "records": [ + + ] +} diff --git a/data/dl/1330X.json b/data/dl/1330X.json new file mode 100644 index 0000000..5504d2a --- /dev/null +++ b/data/dl/1330X.json @@ -0,0 +1,16 @@ +{ + "id": 78374157, + "name": "1330X", + "description": "Glad i fluked the last wave.", + "gdleveldescription": "baja beast", + "author": "ewop", + "creators": ["ewop", "Deadlox", "Endlevel", "hattoru", "silver", "GrenadeofTacos", "AVRG", "Goobfrudla"], + "verifier": "lunacii", + "verifierEnjoyment": 78, + "verification": "https://www.youtube.com/watch?v=XT93VqaHlC4", + "showcase": "https://www.youtube.com/watch?v=XT93VqaHlC4", + "percentToQualify": 80, + "records": [ + + ] +} diff --git a/data/dl/8o X.json b/data/dl/8o X.json new file mode 100644 index 0000000..9f9d0e8 --- /dev/null +++ b/data/dl/8o X.json @@ -0,0 +1,16 @@ +{ + "id": 39641092, + "name": "8o X", + "description": "I really enjoyed that wave part!", + "gdleveldescription": "A sequel of the lendgendary demon 80, by me and yakimaru. Verification video on my youtube channel ;3", + "author": "f3lixsram", + "creators": ["Yakimaru", "f3lixsram"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 67, + "verification": "https://youtu.be/veZrcTBiReg?si=T1VZ7GVDhgJR31Q3", + "showcase": "https://youtu.be/veZrcTBiReg?si=T1VZ7GVDhgJR31Q3", + "percentToQualify": 62, + "records": [ + + ] +} diff --git a/data/dl/937.json b/data/dl/937.json new file mode 100644 index 0000000..fdc97a5 --- /dev/null +++ b/data/dl/937.json @@ -0,0 +1,16 @@ +{ + "id": 111121951, + "name": "937", + "description": "", + "gdleveldescription": "ITS NOT MIECRTACT", + "author": "Gp0", + "creators": ["Gp0"], + "verifier": "Gp0", + "verifierEnjoyment": 70, + "verification": "https://youtu.be/Uk0M39Q7Dwg", + "showcase": "https://youtu.be/Uk0M39Q7Dwg", + "percentToQualify": 62, + "records": [ + + ] +} diff --git a/data/dl/ANNIHILATED.json b/data/dl/ANNIHILATED.json new file mode 100644 index 0000000..58cae1c --- /dev/null +++ b/data/dl/ANNIHILATED.json @@ -0,0 +1,16 @@ +{ + "id": 115370944, + "name": "ANNIHILATED", + "description": "meatballslop sequel to destroyed", + "gdleveldescription": "Escape the facility as soon as possible! Dont get Annihilated!!! | Verified by YraX", + "author": "AlvaroPaws", + "creators": ["AlvaroPaws"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 81, + "verification": "https://www.youtube.com/watch?v=VOOQaFqLKgA", + "showcase": "https://www.youtube.com/watch?v=VOOQaFqLKgA", + "percentToQualify": 77, + "records": [ + + ] +} diff --git a/data/dl/AcropoliX.json b/data/dl/AcropoliX.json new file mode 100644 index 0000000..8cab7f2 --- /dev/null +++ b/data/dl/AcropoliX.json @@ -0,0 +1,16 @@ +{ + "id": 19300593, + "name": "AcropoliX", + "description": "I swear it's not as bad as people say", + "gdleveldescription": "H4XX3D BY FUZION9K & CNSL @ TEAMTUFF... | discord.gg/teamtuff", + "author": "SoulsTRK", + "creators": ["SoulsTRK"], + "verifier": "Meatballmoose", + "verifierEnjoyment": 73, + "verification": "https://youtu.be/WQA_061MbMI?si=TO4vJLZSCuSUTXMN", + "showcase": "https://youtu.be/WQA_061MbMI?si=TO4vJLZSCuSUTXMN", + "percentToQualify": 60, + "records": [ + + ] +} diff --git a/data/dl/Acu.json b/data/dl/Acu.json new file mode 100644 index 0000000..3d73435 --- /dev/null +++ b/data/dl/Acu.json @@ -0,0 +1,75 @@ +{ + "id": 61079355, + "name": "Acu", + "description": "this level is insane demon fight me.", + "gdleveldescription": "Enjoy this extreme demon, this was a load of fun to make :)", + "author": "neigefeu", + "creators": ["neigefeu"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 88, + "verification": "https://www.youtube.com/watch?v=zAbo8dEs6ig", + "showcase": "https://www.youtube.com/watch?v=zAbo8dEs6ig", + "percentToQualify": 63, + "records": [ + { + "user": "JsTocii", + "link": "https://www.youtube.com/watch?v=VpzawyXbAEI", + "percent": 100, + "enjoyment": 75 + }, + { + "user": "CoolEnder32", + "link": "https://www.youtube.com/watch?v=LFFy5VVrElc", + "percent": 100, + "enjoyment": 90 + }, + { + "user": "Kaiyote", + "link": "https://www.youtube.com/watch?v=ZycyuLicPNk", + "percent": 100, + "enjoyment": 50 + }, + { + "user": "nile", + "link": "https://www.youtube.com/watch?v=zvej_zwZ9YQ", + "percent": 100, + "enjoyment": 70 + }, + { + "user": "Poqqers", + "link": "https://www.youtube.com/watch?v=xRibSA6qKQo", + "percent": 100, + "enjoyment": 30 + }, + { + "user": "Lani", + "link": "https://youtu.be/fqv82hb_Q-E", + "percent": 100, + "enjoyment": 100 + }, + { + "user": "lunacii", + "link": "https://youtu.be/MfvVAQBjjX4?si=sTuYoDPRpqTXxdtP", + "percent": 100, + "enjoyment": 57 + }, + { + "user": "Curta", + "link": "https://www.youtube.com/watch?v=5UNhRNRHkx4", + "percent": 100, + "enjoyment": 60 + }, + { + "user": "JQuazol", + "link": "https://www.youtube.com/watch?v=WNtPiYv0bnw", + "percent": 100, + "enjoyment": 80 + }, + { + "user": "Z", + "link": "https://www.youtube.com/watch?v=gmVff9e_Fo0", + "percent": 100, + "enjoyment": 40 + } + ] +} diff --git a/data/dl/Allegiance.json b/data/dl/Allegiance.json new file mode 100644 index 0000000..766e8e3 --- /dev/null +++ b/data/dl/Allegiance.json @@ -0,0 +1,51 @@ +{ + "id": 20761188, + "name": "Allegiance", + "description": "Iconic second level in the dedication series by Nikrodox.", + "gdleveldescription": "Reverified by EndLevel, Fixed the 2.1 Bug :)", + "author": "nikrodox", + "creators": ["nikrodox"], + "verifier": "JsTocii", + "verifierEnjoyment": 90, + "verification": "https://www.youtube.com/watch?v=zxwjdmopXWc", + "showcase": "https://www.youtube.com/watch?v=zxwjdmopXWc", + "percentToQualify": 82, + "records": [ + { + "user": "ZorpikGMD", + "link": "https://www.youtube.com/watch?v=UC-BfhQO7Lo&list=PL9AW0Ozca0b6iNQZHwFyhT1_Ai6fL7cuv", + "percent": 100, + "enjoyment": 90 + }, + { + "user": "MeatballMoose", + "link": "https://youtu.be/lRmwipU8tHU?si=bAAroDfqHTgEBnz7", + "percent": 100, + "enjoyment": 86 + }, + { + "user": "Lani", + "link": "https://youtu.be/rnrWpqcEGFs", + "percent": 100, + "enjoyment": 90 + }, + { + "user": "Devy", + "link": "https://youtu.be/vy9hC8ABdsY?si=fDws09XQ9Se7Zj-e", + "percent": 100, + "enjoyment": 78 + }, + { + "user": "CoolEnder32", + "link": "https://www.youtube.com/watch?v=nVdGovsUCws", + "percent": 100, + "enjoyment": 87 + }, + { + "user": "nile", + "link": "https://www.youtube.com/watch?v=CftfnsjWIWg", + "percent": 100, + "enjoyment": 65 + } + ] +} diff --git a/data/dl/Annihilation Nation.json b/data/dl/Annihilation Nation.json new file mode 100644 index 0000000..3ffbff0 --- /dev/null +++ b/data/dl/Annihilation Nation.json @@ -0,0 +1,16 @@ +{ + "id": 48008831, + "name": "Annihilation Nation", + "description": "This level was heavily inspired by Ratchet and Clank 3", + "gdleveldescription": "Let's turn up the heat down there!", + "author": "Zylenox", + "creators": ["Zylenox"], + "verifier": "Lani", + "verifierEnjoyment": 90, + "verification": "https://www.youtube.com/watch?v=XwRXcRSMOpk", + "showcase": "https://www.youtube.com/watch?v=XwRXcRSMOpk", + "percentToQualify": 77, + "records": [ + + ] +} diff --git a/data/dl/Another Phase.json b/data/dl/Another Phase.json new file mode 100644 index 0000000..b23c12b --- /dev/null +++ b/data/dl/Another Phase.json @@ -0,0 +1,16 @@ +{ + "id": 74194269, + "name": "Another Phase", + "description": "idrk this level, so i cant give a description", + "gdleveldescription": "Ready for round 2?", + "author": "Cersia", + "creators": ["Kiko", "aubreygoose", "Awedsy", "Rocketeer", "Samuraychik", "Morphizn", "Theorical", "KydeR", "Cersia", "Rullstolsburen", "Isane", "c034", "aroo", "GrenadeOfTacos", "jasimne"], + "verifier": "Devy", + "verifierEnjoyment": 85, + "verification": "https://youtu.be/XIV-wqPJ1Hw?si=2p4Ljux3eyHacrZv", + "showcase": "https://youtu.be/XIV-wqPJ1Hw?si=2p4Ljux3eyHacrZv", + "percentToQualify": 72, + "records": [ + + ] +} diff --git a/data/dl/Arctic Lights.json b/data/dl/Arctic Lights.json new file mode 100644 index 0000000..2a0b50b --- /dev/null +++ b/data/dl/Arctic Lights.json @@ -0,0 +1,21 @@ +{ + "id": 52919433, + "name": "Arctic Lights", + "description": "Lani's bitchass was lazy so he didnt put any desc.", + "gdleveldescription": "The hardest circles level, created by ViRuZ and Endlevel", + "author": "Metalface211", + "creators": ["iIiViRuZiIi", "Endlevel", "Hantein"], + "verifier": "Poqqers", + "verifierEnjoyment": 75, + "verification": "https://www.youtube.com/watch?v=5hYqaLdivyM", + "showcase": "https://www.youtube.com/watch?v=5hYqaLdivyM", + "percentToQualify": 76, + "records": [ + { + "user": "Lani", + "link": "https://youtu.be/9CCwjNj6wBk?si=xiW-wmTEAgdhhw7m", + "percent": 100, + "enjoyment": 81 + } + ] +} diff --git a/data/dl/Artificial Ascent.json b/data/dl/Artificial Ascent.json new file mode 100644 index 0000000..9197be5 --- /dev/null +++ b/data/dl/Artificial Ascent.json @@ -0,0 +1,21 @@ +{ + "id": 27122654, + "name": "Artificial Ascent", + "description": "An extremely popular former top 1 megacollab made in 2.0, initially hosted by LmAnubis and finished by Viprin. The level contains a variety of fast-paced gameplay parts made by 18 different creators, spanning almost 2 and a half minutes. It went on to have multiple remakes and sequels, becoming the first installment of the Technology Trilogy.", + "gdleveldescription": "Artificial intelligence is about to surpass human possibilities. Who can still keep up? Verified by Combined.", + "author": "ViPriN", + "creators": ["Codex", "Manix648", "Sanic", "REDACTED", "Zobros", "Michigun", "Anthrax", "ZenthicAlpha", "ViPriN", "Loogiah", "wamiq8", "nasgubb", "AbstractDark", "Etzer", "Serponge", "G4lvatron", "Terron", "lmAnubis", "GDSpeed"], + "verifier": "Lani", + "verifierEnjoyment": 60, + "verification": "https://youtu.be/Zhj5qPvU6Q0?si=Tw5-xNWia5kcVDbH", + "showcase": "https://youtu.be/Zhj5qPvU6Q0?si=Tw5-xNWia5kcVDbH", + "percentToQualify": 77, + "records": [ + { + "user": "Gp0", + "link": "https://www.youtube.com/watch?v=ZRtKgUJxsLI", + "percent": 100, + "enjoyment": 40 + } + ] +} diff --git a/data/dl/Athanatos.json b/data/dl/Athanatos.json new file mode 100644 index 0000000..147837e --- /dev/null +++ b/data/dl/Athanatos.json @@ -0,0 +1,27 @@ +{ + "id": 26133601, + "name": "Athanatos", + "description": "Mediocre but also very good 2.0 hell themed extreme.", + "gdleveldescription": "Only the immortals will stay...", + "author": "Exenity", + "creators": ["Gaero", "Herzilo", "Exenity"], + "verifier": "Devy", + "verifierEnjoyment": 76, + "verification": "https://youtu.be/D8ztFv6jEqs?si=ZseETt1hfnyisfSq", + "showcase": "https://youtu.be/D8ztFv6jEqs?si=ZseETt1hfnyisfSq", + "percentToQualify": 71, + "records": [ + { + "user": "Lani", + "link": "https://youtu.be/-oIprI598dw?si=xpAOSMEecnFYpsGP", + "percent": 100, + "enjoyment": 76 + }, + { + "user": "nile", + "link": "https://www.youtube.com/watch?v=3AfjjPfCCGY", + "percent": 100, + "enjoyment": 60 + } + ] +} diff --git a/data/dl/Auditory Breaker.json b/data/dl/Auditory Breaker.json new file mode 100644 index 0000000..7cd3db5 --- /dev/null +++ b/data/dl/Auditory Breaker.json @@ -0,0 +1,16 @@ +{ + "id": 51791710, + "name": "Auditory Breaker", + "description": "Why ball, WHY", + "gdleveldescription": "Imagine unironically remaking SW. Better, imagine actually releasing it! By Lazer & Manix, verified by Gabs. Can you feel the electricity?", + "author": "LazerBlitz", + "creators": ["Manix648", "Cyclic", "LazerBlitz"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 75, + "verification": "https://youtu.be/25llavmqQnk?si=8Pngzp0vzOeE1o88", + "showcase": "https://youtu.be/25llavmqQnk?si=8Pngzp0vzOeE1o88", + "percentToQualify": 77, + "records": [ + + ] +} diff --git a/data/dl/Awakening Horus.json b/data/dl/Awakening Horus.json new file mode 100644 index 0000000..d57fe35 --- /dev/null +++ b/data/dl/Awakening Horus.json @@ -0,0 +1,16 @@ +{ + "id": 39458641, + "name": "Awakening Horus", + "description": "The Aredl mods are on to you", + "gdleveldescription": "Boss art by Xingtik, verified by Luqualizer. Update: improved LDM, removed off-screen objs, slightly nerfed a part that was bugged on 144hz", + "author": "Juhou", + "creators": ["Juhou", "Xingtik"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 87, + "verification": "https://youtu.be/qAefGNBwf2o?si=GaVbDjbnTrJRe5X4", + "showcase": "https://youtu.be/qAefGNBwf2o?si=GaVbDjbnTrJRe5X4", + "percentToQualify": 72, + "records": [ + + ] +} diff --git a/data/dl/BROWNOIX.json b/data/dl/BROWNOIX.json new file mode 100644 index 0000000..22f9ebb --- /dev/null +++ b/data/dl/BROWNOIX.json @@ -0,0 +1,16 @@ +{ + "id": 82148336, + "name": "BROWNOIX", + "description": "Overall a REALLY great level and fun to play! the learning process can take a bit of time tho.", + "gdleveldescription": "IvashkaUA - OuroiX - fufafac - ArtaxFerSarh - StarkyTheSalad - nectaroso - DoliaX", + "author": "ArtaxFerSarh", + "creators": ["IvashkaUA", "OuroiX", "fufafac", "ArtaxFerSarh", "StarkyTheSalad", "nectaroso", "DoliaX"], + "verifier": "CoolEnder32", + "verifierEnjoyment": 92, + "verification": "https://www.youtube.com/watch?v=SNhY-THjv9E", + "showcase": "https://www.youtube.com/watch?v=SNhY-THjv9E", + "percentToQualify": 61, + "records": [ + + ] +} diff --git a/data/dl/Battle of the Shades.json b/data/dl/Battle of the Shades.json new file mode 100644 index 0000000..c24da09 --- /dev/null +++ b/data/dl/Battle of the Shades.json @@ -0,0 +1,16 @@ +{ + "id": 55521950, + "name": "Battle of the Shades (phase 3)", + "description": "The third update of Battle of the Shades by GD Virus. Intentionally made to be shitty, this level was a top 20 in its time.", + "gdleveldescription": "", + "author": "Compendium", + "creators": ["GD Virus"], + "verifier": "nile", + "verifierEnjoyment": 85, + "verification": "https://www.youtube.com/watch?v=v0SmK_JlE_k", + "showcase": "https://www.youtube.com/watch?v=v0SmK_JlE_k", + "percentToQualify": 60, + "records": [ + + ] +} diff --git a/data/dl/Berserk.json b/data/dl/Berserk.json new file mode 100644 index 0000000..579cbf7 --- /dev/null +++ b/data/dl/Berserk.json @@ -0,0 +1,16 @@ +{ + "id": 60130895, + "name": "Berserk", + "description": "go crazy, be zer ker", + "gdleveldescription": "TRUSTA X ZYLENOX (update verified by Darkswe)", + "author": "TrusTa", + "creators": ["Zylenox", "TrusTa"], + "verifier": "JsTocii", + "verifierEnjoyment": 90, + "verification": "https://www.youtube.com/watch?v=d0_8nWFfZIU", + "showcase": "https://www.youtube.com/watch?v=d0_8nWFfZIU", + "percentToQualify": 79, + "records": [ + + ] +} diff --git a/data/dl/Black Blizzard.json b/data/dl/Black Blizzard.json new file mode 100644 index 0000000..994e07d --- /dev/null +++ b/data/dl/Black Blizzard.json @@ -0,0 +1,51 @@ +{ + "id": 34057654, + "name": "Black Blizzard", + "description": "The most beginning carried extreme demon ever. The last 75% is fun, but the first 25% is hell.", + "gdleveldescription": "My best and hardest level yet. Dedicated to nobody.", + "author": "KrmaL", + "creators": ["KrmaL"], + "verifier": "nile", + "verifierEnjoyment": 30, + "verification": "https://www.youtube.com/watch?v=b-TYPoZfbRs", + "showcase": "https://www.youtube.com/watch?v=b-TYPoZfbRs", + "percentToQualify": 66, + "records": [ + { + "user": "MeatballMoose", + "link": "https://youtu.be/GBSJeomm_DI?si=7iW5EQ3bOkL53TWR", + "percent": 100, + "enjoyment": 93 + }, + { + "user": "Poqqers", + "link": "https://www.youtube.com/watch?v=plCsYJ8LFrs", + "percent": 100, + "enjoyment": 60 + }, + { + "user": "Z", + "link": "https://www.youtube.com/watch?v=gm4AlDayRNc", + "percent": 100, + "enjoyment": 60 + }, + { + "user": "Lani", + "link": "https://youtu.be/qCg7qhAXB6g", + "percent": 100, + "enjoyment": 60 + }, + { + "user": "Bennoct", + "link": "https://youtu.be/boUhW3oiYoM", + "percent": 100, + "enjoyment": 15 + }, + { + "user": "Zacc", + "link": "https://www.youtube.com/watch?v=iKHt-Aoioco&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=2", + "percent": 100, + "enjoyment": 60 + } + ] +} diff --git a/data/dl/Black Flag.json b/data/dl/Black Flag.json new file mode 100644 index 0000000..9c85b7a --- /dev/null +++ b/data/dl/Black Flag.json @@ -0,0 +1,16 @@ +{ + "id": 79006927, + "name": "Black Flag", + "description": "", + "gdleveldescription": "You are without doubt the worst collab host I've ever heard of. But you have heard of me. Verified by Asuith.", + "author": "NEKONGAMES", + "creators": ["Electro543", "DiamondSkull", "NEKONGAMES", "Gokill", "SeokSo", "Zubwill", "Supris", "Loolycat", "AirSavage", "HellPhire", "Reunomi", "Maplegaegosu", "Avati", "Viper", "RedlixHD", "ChoGath", "Sauzzeth", "JustaGDplay3r", "Hugus", "Shant", "Lagnugg", "Arax", "Isane", "Nau", "JuzGiew", "Nidroo", "CuLuC", "BeClan", "Andr1x", "Lax33", "Asuith", "Nekotik", "Liu", "ARWooly"], + "verifier": "Zacc", + "verifierEnjoyment": 100, + "verification": "https://www.youtube.com/watch?v=npCRtYoCaYk&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=1", + "showcase": "https://www.youtube.com/watch?v=npCRtYoCaYk&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=1", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Blade of Justice.json b/data/dl/Blade of Justice.json new file mode 100644 index 0000000..dd231fd --- /dev/null +++ b/data/dl/Blade of Justice.json @@ -0,0 +1,57 @@ +{ + "id": 35448603, + "name": "Blade of Justice", + "description": "Very iconic 2.0 extreme demon. It would go on to become Edge of Destiny. I was brutally molested by a dude with down syndrome when I was 7.", + "gdleveldescription": "POGGERS", + "author": "Manix648", + "creators": ["LazerBlitz", "Panman", "Manix648"], + "verifier": "JsTocii", + "verifierEnjoyment": 100, + "verification": "https://www.youtube.com/watch?v=tUrbQxTCfA0", + "showcase": "https://www.youtube.com/watch?v=tUrbQxTCfA0", + "percentToQualify": 76, + "records": [ + { + "user": "MeatballMoose", + "link": "https://youtu.be/uiqvhjEqlTA?si=o1nLHa39gKRCC9lJ", + "percent": 100, + "enjoyment": 89 + }, + { + "user": "Devy", + "link": "https://www.youtube.com/watch?v=Obv2D9bkLHA", + "percent": 100, + "enjoyment": 100 + }, + { + "user": "Poqqers", + "link": "https://www.youtube.com/watch?v=zMLRx8JjsXU", + "percent": 100, + "enjoyment": 80 + }, + { + "user": "Lani", + "link": "https://www.youtube.com/watch?v=VYxHR80EYfQ", + "percent": 100, + "enjoyment": 60 + }, + { + "user": "lunacii", + "link": "https://www.youtube.com/watch?v=pYanuTyZQO0", + "percent": 100, + "enjoyment": 79 + }, + { + "user": "Curta", + "link": "https://www.youtube.com/watch?v=Vq3jgZzk0N4", + "percent": 100, + "enjoyment": 50 + }, + { + "user": "nile", + "link": "https://www.youtube.com/watch?v=wD7Gb_8Zn0I", + "percent": 100, + "enjoyment": 70 + } + ] +} diff --git a/data/dl/Bloodbath.json b/data/dl/Bloodbath.json new file mode 100644 index 0000000..39b28c0 --- /dev/null +++ b/data/dl/Bloodbath.json @@ -0,0 +1,81 @@ +{ + "id": 10565740, + "name": "Bloodbath", + "description": "The most downloaded and most influential Extreme Demon in the game.", + "gdleveldescription": "Whose blood will be spilt in the Bloodbath? Who will the victors be? How many will survive? Good luck...", + "author": "Riot", + "creators": ["Riot", "Michigun", "Etzer", "weoweoteo", "Vermillion", "Evasium", "Crack", "Asonicmen", "Havok", "GgB0y", "Giron"], + "verifier": "Bennoct", + "verifierEnjoyment": 80, + "verification": "https://www.youtube.com/watch?v=Tp_4o6JMVEM", + "showcase": "https://www.youtube.com/watch?v=Tp_4o6JMVEM", + "percentToQualify": 70, + "records": [ + { + "user": "nile", + "link": "https://www.youtube.com/watch?v=lSgaO2XqMy0", + "percent": 100, + "enjoyment": 75 + }, + { + "user": "Gp0", + "link": "https://www.youtube.com/watch?v=iPSMUGayvsY", + "percent": 100, + "enjoyment": 20 + }, + { + "user": "MeatballMoose", + "link": "https://youtu.be/WFsOdZTT550?si=9x0KPrLbDBFc8pz5", + "percent": 100, + "enjoyment": 78 + }, + { + "user": "JsTocii", + "link": "https://www.youtube.com/watch?v=zJzxW8JDTps", + "percent": 100, + "enjoyment": 80 + }, + { + "user": "Poqqers", + "link": "https://youtu.be/QXL_Pf_s6Ss?si=XpsvGT3vT-IEjFzy", + "percent": 100, + "enjoyment": 70 + }, + { + "user": "Curta", + "link": "https://www.youtube.com/watch?v=WyC1VVjNG5A", + "percent": 100, + "enjoyment": 40 + }, + { + "user": "Devy", + "link": "https://youtu.be/ISV7dsvVWZ8?si=dPE8YuyzPVOdcw_E", + "percent": 100, + "enjoyment": 92 + }, + { + "user": "Lani", + "link": "https://youtu.be/fJ4rpArd4js", + "percent": 100, + "enjoyment": 70 + }, + { + "user": "Z", + "link": "https://www.youtube.com/watch?v=CYsNjfwv7LI", + "percent": 100, + "enjoyment": 50 + }, + { + "user": "Taraco", + "link": "https://www.youtube.com/watch?v=e7EeWSTQGtg", + "percent": 100, + "enjoyment": 75 + }, + { + "user": "CoolEnder32", + "link": "https://www.youtube.com/watch?v=Gn1aVgLcGPM", + "percent": 100, + "enjoyment": 65 + } + ] +} diff --git a/data/dl/Bloodlust.json b/data/dl/Bloodlust.json new file mode 100644 index 0000000..a236835 --- /dev/null +++ b/data/dl/Bloodlust.json @@ -0,0 +1,21 @@ +{ + "id": 42584142, + "name": "Bloodlust", + "description": "The worst extreme demon in Geometry Dash.", + "gdleveldescription": "Your thirst for blood continues? Very well, let the blood spill. Let the demons feed off your unfortunate soul...", + "author": "Knobbelboy", + "creators": ["Quasar", "Panman", "Namtar", "nikrodox", "Havok", "Wabbit", "Rustam", "Xaro", "Terron", "Willy5000", "TMNGaming", "Manix648", "nwolc", "Minesap", "non4med", "Knobbelboy"], + "verifier": "nile", + "verifierEnjoyment": -70, + "verification": "https://www.youtube.com/watch?v=9R0wKW3H2QQ", + "showcase": "https://www.youtube.com/watch?v=9R0wKW3H2QQ", + "percentToQualify": 66, + "records": [ + { + "user": "Lani", + "link": "https://youtu.be/_HvsMnvfS6A?si=IH3mPdLDBSG9UjuB", + "percent": 100, + "enjoyment": 70 + } + ] +} diff --git a/data/dl/Broken Signal.json b/data/dl/Broken Signal.json new file mode 100644 index 0000000..50f45db --- /dev/null +++ b/data/dl/Broken Signal.json @@ -0,0 +1,16 @@ +{ + "id": 69108628, + "name": "Broken Signal", + "description": "High quality level themed around a computer breaking down. Features mainly sync based gameplay, some hard waves, and a mirrored section at the end.", + "gdleveldescription": "Have you tried turning it off and back on again?", + "author": "REDACTED", + "creators": ["REDACTED"], + "verifier": "Lani", + "verifierEnjoyment": 70, + "verification": " https://youtu.be/1BPM6jXnKIk", + "showcase": " https://youtu.be/1BPM6jXnKIk", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Carcano.json b/data/dl/Carcano.json new file mode 100644 index 0000000..fe05d57 --- /dev/null +++ b/data/dl/Carcano.json @@ -0,0 +1,16 @@ +{ + "id": 64148732, + "name": "Carcano", + "description": "A popular Cognition-style corridor level built by two Polish creators, with high CPS and timing-based gameplay. Despite receiving a nerfdate in early 2022, community opinions are still quite mixed, which wasn't helped by the slope interaction changes in 2.2.", + "gdleveldescription": "Cognition inspired, made by Asuith & TomsoN. Verified by Kapinapi & kvvv - Tkcper jest lysy", + "author": "Asuith", + "creators": ["Asuith", "TomsoN"], + "verifier": "Lani", + "verifierEnjoyment": 90, + "verification": "https://youtu.be/0X4YUkGf34A?si=bGt7eUwp7YbHojTp", + "showcase": "https://youtu.be/0X4YUkGf34A?si=bGt7eUwp7YbHojTp", + "percentToQualify": 73, + "records": [ + + ] +} diff --git a/data/dl/Cat Planet.json b/data/dl/Cat Planet.json new file mode 100644 index 0000000..b6fdad2 --- /dev/null +++ b/data/dl/Cat Planet.json @@ -0,0 +1,16 @@ +{ + "id": 84766628, + "name": "Cat Planet", + "description": "Really underated icedcave extreme in terms of popularity. Likely overated in terms of difficulty.", + "gdleveldescription": "My only easy level, Enjoy ^,^ - C4T PL4N3T -", + "author": "Icedcave", + "creators": ["Icedcave"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 88, + "verification": "https://youtu.be/2ILuctp9VNk?si=z6ky7EvT7PAvcT1o", + "showcase": "https://youtu.be/2ILuctp9VNk?si=z6ky7EvT7PAvcT1o", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Cataclysm.json b/data/dl/Cataclysm.json new file mode 100644 index 0000000..598c096 --- /dev/null +++ b/data/dl/Cataclysm.json @@ -0,0 +1,81 @@ +{ + "id": 3979721, + "name": "Cataclysm", + "description": "The level that inspired Bloodbath with a really hard first wave and a really easy last wave. Buffed to keep up with the demonlist. Nile's completion is home to the infamous \"It's Grief!\" incident. rip gp0", + "gdleveldescription": "Now w/ coins and extra death ,this level was sponsored by riot (verified)", + "author": "GgB0y", + "creators": ["GgB0y"], + "verifier": "Zacc", + "verifierEnjoyment": 20, + "verification": "https://www.youtube.com/watch?v=RJVYYlo21hg&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=15", + "showcase": "https://www.youtube.com/watch?v=RJVYYlo21hg&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=15", + "percentToQualify": 51, + "records": [ + { + "user": "MeatballMoose", + "link": "https://www.youtube.com/watch?v=9yMdv9gClJc", + "percent": 100, + "enjoyment": 32 + }, + { + "user": "nile", + "link": "https://www.youtube.com/watch?v=pON9d1tCSwU", + "percent": 100, + "enjoyment": 55 + }, + { + "user": "Poqqers", + "link": "https://www.youtube.com/watch?v=bFCp8wBHEP4&t=3s", + "percent": 100, + "enjoyment": 70 + }, + { + "user": "Devy", + "link": "https://www.youtube.com/watch?v=FhIJ_jzsrnc&rco=1", + "percent": 100, + "enjoyment": 100 + }, + { + "user": "Curta", + "link": "https://www.youtube.com/watch?v=iwzPBnESTGw&t=4895s", + "percent": 100, + "enjoyment": 20 + }, + { + "user": "JsTocii", + "link": "https://www.youtube.com/watch?v=E21lDOnObPM", + "percent": 100, + "enjoyment": 50 + }, + { + "user": "Lani", + "link": "https://youtu.be/Ch1NHH8O9XE", + "percent": 100, + "enjoyment": 30 + }, + { + "user": "Gp0", + "link": "https://www.youtube.com/watch?v=CS_lqijp9K4", + "percent": 100, + "enjoyment": 47 + }, + { + "user": "Kaiyote", + "link": "https://www.youtube.com/watch?v=tm6ocf1tqYQ", + "percent": 100, + "enjoyment": 56 + }, + { + "user": "Skellity", + "link": "https://www.youtube.com/watch?v=RnNZtXphHeo", + "percent": 100, + "enjoyment": 80 + }, + { + "user": "Z", + "link": "https://www.youtube.com/watch?v=vLrl_DLP0LQ", + "percent": 100, + "enjoyment": 90 + } + ] +} diff --git a/data/dl/Chromatic Haze.json b/data/dl/Chromatic Haze.json new file mode 100644 index 0000000..d116e84 --- /dev/null +++ b/data/dl/Chromatic Haze.json @@ -0,0 +1,16 @@ +{ + "id": 62869408, + "name": "Chromatic Haze", + "description": "", + "gdleveldescription": "As the mist settles, the mythic rainbow storm rolls in... Layout and verified by Gizbro. Dedicated to Ayup. <3 Update Verified by RevoltZy!", + "author": "CirtraX", + "creators": ["Gizbro"], + "verifier": "Zacc", + "verifierEnjoyment": 90, + "verification": "https://www.youtube.com/watch?v=gEiXQsMNpFo&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=3", + "showcase": "https://www.youtube.com/watch?v=gEiXQsMNpFo&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=3", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Clarity.json b/data/dl/Clarity.json new file mode 100644 index 0000000..4631dac --- /dev/null +++ b/data/dl/Clarity.json @@ -0,0 +1,21 @@ +{ + "id": 112412828, + "name": "Clarity", + "description": "An upbeat solo extreme taking inspiration from numerous design creators and featuring the popular pop song of the same name. Has some learny and unusual but well synced gameplay and a very complex dual at the end. I stole this from the AREDL.", + "gdleveldescription": "Original song: Zedd - Clarity (ft. Foxes)", + "author": "Hypno", + "creators": ["Hypno"], + "verifier": "JsTocii", + "verifierEnjoyment": 100, + "verification": "https://www.youtube.com/watch?v=Z3f99n5sGZM", + "showcase": "https://www.youtube.com/watch?v=Z3f99n5sGZM", + "percentToQualify": 70, + "records": [ + { + "user": "Lani", + "link": "https://youtu.be/KTn2HAT2CPM", + "percent": 100, + "enjoyment": 80 + } + ] +} diff --git a/data/dl/Cold Sweat.json b/data/dl/Cold Sweat.json new file mode 100644 index 0000000..7920ec8 --- /dev/null +++ b/data/dl/Cold Sweat.json @@ -0,0 +1,16 @@ +{ + "id": 63996127, + "name": "Cold Sweat", + "description": "Legendary but ultimately aged effect level with an incredibly memorable spam ufo and high-cps wave part at 61%. Previously was top 7 and was one of the best top levels of its time, also being heavily memed by the community for years.", + "gdleveldescription": "im shaking in my boots", + "author": "para", + "creators": ["para", "Wulzy", "REDACTED"], + "verifier": "Poqqers", + "verifierEnjoyment": 85, + "verification": "https://www.youtube.com/watch?v=3RKKv2anpsQ", + "showcase": "https://www.youtube.com/watch?v=3RKKv2anpsQ", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Conical Depression.json b/data/dl/Conical Depression.json new file mode 100644 index 0000000..c635fde --- /dev/null +++ b/data/dl/Conical Depression.json @@ -0,0 +1,16 @@ +{ + "id": 17711004, + "name": "Conical Depression", + "description": "A John Evil Pink orb spam 2/3rds of the way into the level", + "gdleveldescription": "Have fun with that. 45.6k attempts to verify. Rate demon. :^) Please check the YouTube video of this level before accusing me of hacking.", + "author": "Krmal", + "creators": ["Krmal"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 100, + "verification": "https://youtu.be/M-GtmVB6y-k?si=Me0Tab1Bv_M9WPwQ", + "showcase": "https://youtu.be/M-GtmVB6y-k?si=Me0Tab1Bv_M9WPwQ", + "percentToQualify": 69, + "records": [ + + ] +} diff --git a/data/dl/Crimson Planet.json b/data/dl/Crimson Planet.json new file mode 100644 index 0000000..76ebfc9 --- /dev/null +++ b/data/dl/Crimson Planet.json @@ -0,0 +1,16 @@ +{ + "id": 45866767, + "name": "Crimson Planet", + "description": "Former John Evil hardest; a short 2.1 Hell Themed extreme demon of compressed difficulty.", + "gdleveldescription": "Welcome to Crimson Planet, a place which curses all who tread upon its soil, trapping them in an endless cycle of hell until they escape.", + "author": "TrueOmega", + "creators": ["TrueOmega", "YakobNugget", "Dz3ser", "Terron", "AimTheSame", "TrusTa", "Metalface221", "MrPPs", "surreki", "nikrodox", "Zimnior12", "Endlevel"], + "verifier": "Lani", + "verifierEnjoyment": 85, + "verification": "https://youtu.be/6K_6gi1Jq8w?si=ez3YRTpX9KsYsaHZ", + "showcase": "https://youtu.be/6K_6gi1Jq8w?si=ez3YRTpX9KsYsaHZ", + "percentToQualify": 75, + "records": [ + + ] +} diff --git a/data/dl/Crowd Control.json b/data/dl/Crowd Control.json new file mode 100644 index 0000000..df2d51f --- /dev/null +++ b/data/dl/Crowd Control.json @@ -0,0 +1,45 @@ +{ + "id": 69491632, + "name": "Crowd Control", + "description": "its a level fs", + "gdleveldescription": "shroud goes to walmart", + "author": "zDeadlox", + "creators": ["Ka1ns", "EndLevel", "zDeadlox", "ewop", "silver"], + "verifier": "Zacc", + "verifierEnjoyment": 80, + "verification": "hhttps://www.youtube.com/watch?v=yRirEhlFUJQ&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=13", + "showcase": "https://www.youtube.com/watch?v=yRirEhlFUJQ&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=13", + "percentToQualify": 51, + "records": [ + { + "user": "Lani", + "link": "https://youtu.be/EtdxTgy1hHk", + "percent": 100, + "enjoyment": 100 + }, + { + "user": "lunacii", + "link": "https://youtu.be/VsbkMOsNBqE?si=2UIPDx-y_O3ELx_3", + "percent": 100, + "enjoyment": 90 + }, + { + "user": "Devy", + "link": "https://youtu.be/vy9hC8ABdsY?si=fDws09XQ9Se7Zj-e", + "percent": 100, + "enjoyment": 70 + }, + { + "user": "Kaiyote", + "link": "https://www.youtube.com/watch?v=1DE3Eo-kPko", + "percent": 100, + "enjoyment": 78 + }, + { + "user": "Skellity", + "link": "https://www.youtube.com/watch?v=YqupafVgl2Q", + "percent": 100, + "enjoyment": 85 + } + ] +} diff --git a/data/dl/Danklocked.json b/data/dl/Danklocked.json new file mode 100644 index 0000000..747ea3c --- /dev/null +++ b/data/dl/Danklocked.json @@ -0,0 +1,16 @@ +{ + "id": 56842275, + "name": "Danklocked", + "description": "", + "gdleveldescription": "The hardest Demon in the game. A TRUE Legendary Demon. Rate this, thank you.", + "author": "MetaManZ", + "creators": ["MetaManZ"], + "verifier": "Lani", + "verifierEnjoyment": 90, + "verification": "https://youtu.be/Z9HoqIlTklg", + "showcase": "https://youtu.be/Z9HoqIlTklg", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Delta Interface.json b/data/dl/Delta Interface.json new file mode 100644 index 0000000..389db74 --- /dev/null +++ b/data/dl/Delta Interface.json @@ -0,0 +1,16 @@ +{ + "id": 45094581, + "name": "Delta Interface", + "description": "Verifier HATES this level and had to beat it twice", + "gdleveldescription": "void StartCredits(string& asMusic, bool abLoopMusic, string& asTextCat, string& asTextEntry, int alEndNum);", + "author": "Platnuu", + "creators": ["Platnuu"], + "verifier": "Meatballmoose", + "verifierEnjoyment": 5, + "verification": "https://youtu.be/6yyv3rHPDPg?si=lCl_8hyhloaT5yK3", + "showcase": "https://youtu.be/6yyv3rHPDPg?si=lCl_8hyhloaT5yK3", + "percentToQualify": 70, + "records": [ + + ] +} diff --git a/data/dl/Digital Descent.json b/data/dl/Digital Descent.json new file mode 100644 index 0000000..c2ccaf7 --- /dev/null +++ b/data/dl/Digital Descent.json @@ -0,0 +1,16 @@ +{ + "id": 37456092, + "name": "Digital Descent", + "description": "A former Top 1 which was originally easier than its predecessor until it got a buffdate. The decoration follows a similar theme to Artifical Ascent with 2.1 elements sprinkled throughout, and its difficulty notably spikes in the middle third of the level.", + "gdleveldescription": "Revolution is not always made by the ones who rule... This time the digital era is going down. Verified by Combined.", + "author": "ViPriN", + "creators": ["Codex Kips nasgubb Terron AbstractDark Samifying Manix648 ViPriN TheDevon Etzer Loogiah LazerBlitz G4lvatron Vlacc Serponge REDACTED Rustam KrmaL"], + "verifier": "JsTocii", + "verifierEnjoyment": 80, + "verification": "https://www.youtube.com/watch?v=hshV8ev0xAU", + "showcase": "https://www.youtube.com/watch?v=hshV8ev0xAU", + "percentToQualify": 76, + "records": [ + + ] +} diff --git a/data/dl/Disruption.json b/data/dl/Disruption.json new file mode 100644 index 0000000..0ae2409 --- /dev/null +++ b/data/dl/Disruption.json @@ -0,0 +1,16 @@ +{ + "id": 78687216, + "name": "Disruption", + "description": "disruptiung level. no aredl description.", + "gdleveldescription": "This is a discruption | Originally verified by Trusta | Update verified by Lucy", + "author": "Ka1sa", + "creators": ["Ka1sa"], + "verifier": "JsTocii", + "verifierEnjoyment": 50, + "verification": "https://www.youtube.com/watch?v=BBrMWMeBY6Q", + "showcase": "https://www.youtube.com/watch?v=BBrMWMeBY6Q", + "percentToQualify": 70, + "records": [ + + ] +} diff --git a/data/dl/Down Bass.json b/data/dl/Down Bass.json new file mode 100644 index 0000000..1520377 --- /dev/null +++ b/data/dl/Down Bass.json @@ -0,0 +1,16 @@ +{ + "id": 8147005, + "name": "Down Bass", + "description": "green circles", + "gdleveldescription": "Another generic NC level", + "author": "Spectruh", + "creators": ["WoodedGold", "Exterys Valyrie"], + "verifier": "JsTocii", + "verifierEnjoyment": 30, + "verification": "https://www.youtube.com/watch?v=aTya1XH6gC8 ", + "showcase": "https://www.youtube.com/watch?v=aTya1XH6gC8", + "percentToQualify": 80, + "records": [ + + ] +} diff --git a/data/dl/Falling Up.json b/data/dl/Falling Up.json new file mode 100644 index 0000000..457ab09 --- /dev/null +++ b/data/dl/Falling Up.json @@ -0,0 +1,16 @@ +{ + "id": 24301797, + "name": "Falling Up", + "description": "some krmal level. better then conical depression", + "gdleveldescription": "I put a lot of work into this, hope you enjoy :) Update 4: Fixed 144hz bugs, updated Low Detail Mode", + "author": "KrmaL", + "creators": ["KrmaL"], + "verifier": "JsTocii", + "verifierEnjoyment": 50, + "verification": "https://www.youtube.com/watch?v=pRgl2Nysz4A", + "showcase": "https://www.youtube.com/watch?v=pRgl2Nysz4A", + "percentToQualify": 80, + "records": [ + + ] +} diff --git a/data/dl/Fexty.json b/data/dl/Fexty.json new file mode 100644 index 0000000..74647eb --- /dev/null +++ b/data/dl/Fexty.json @@ -0,0 +1,21 @@ +{ + "id": 25449475, + "name": "Fexty", + "description": "Insane demon by Ozpectro with a really hard wave part halfway through that makes it an extreme demon.", + "gdleveldescription": "Original unnerfed version of Fexty by Ozpectro verified by me! Video on my channel.", + "author": "LSkyJax", + "creators": ["Ozpectro", "LSkyJax"], + "verifier": "nile", + "verifierEnjoyment": 45, + "verification": "https://www.youtube.com/watch?v=HfbAGntHMzU", + "showcase": "https://www.youtube.com/watch?v=HfbAGntHMzU", + "percentToQualify": 60, + "records": [ + { + "user": "Z", + "link": "https://www.youtube.com/watch?v=QEudL-2ENck", + "percent": 100, + "enjoyment": 70 + } + ] +} diff --git a/data/dl/Find Me.json b/data/dl/Find Me.json new file mode 100644 index 0000000..3912d32 --- /dev/null +++ b/data/dl/Find Me.json @@ -0,0 +1,16 @@ +{ + "id": 78862571, + "name": "Find Me", + "description": "", + "gdleveldescription": "7285 attempts, 3rd full level <3", + "author": "clocktic", + "creators": ["clocktic"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 93, + "verification": "https://www.youtube.com/watch?v=I7LMw0jBrGs", + "showcase": "https://www.youtube.com/watch?v=I7LMw0jBrGs", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Forbidden Isle.json b/data/dl/Forbidden Isle.json new file mode 100644 index 0000000..9597bde --- /dev/null +++ b/data/dl/Forbidden Isle.json @@ -0,0 +1,16 @@ +{ + "id": 63775846, + "name": "Forbidden Isle", + "description": "One of the only Extreme's Meatball ever fluked", + "gdleveldescription": "An island overgrown in vines where none have been before. Inspired mostly by epiclucas and also anubis", + "author": "Sillow", + "creators": ["Sillow"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 60, + "verification": "https://youtu.be/hBBT5Wppa6Q?si=uVsaXDWIzmsvyzI_", + "showcase": "https://youtu.be/hBBT5Wppa6Q?si=uVsaXDWIzmsvyzI_", + "percentToQualify": 76, + "records": [ + + ] +} diff --git a/data/dl/Frame Of Mind.json b/data/dl/Frame Of Mind.json new file mode 100644 index 0000000..b37a014 --- /dev/null +++ b/data/dl/Frame Of Mind.json @@ -0,0 +1,16 @@ +{ + "id": 89841918, + "name": "Frame Of Mind", + "description": "", + "gdleveldescription": "update is finally here.", + "author": "skyler948", + "creators": ["skyler948"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 84, + "verification": "https://www.youtube.com/watch?v=PpgIG1sbnv8", + "showcase": "https://www.youtube.com/watch?v=PpgIG1sbnv8", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Free Vbucks EXE.json b/data/dl/Free Vbucks EXE.json new file mode 100644 index 0000000..13030f1 --- /dev/null +++ b/data/dl/Free Vbucks EXE.json @@ -0,0 +1,16 @@ +{ + "id": 109256950, + "name": "Free Vbucks EXE", + "description": "", + "gdleveldescription": "Level i made in a 1.9 GDPS", + "author": "Gp0", + "creators": ["Gp0"], + "verifier": "Gp0", + "verifierEnjoyment": 70, + "verification": "https://www.youtube.com/watch?v=_emDsV5pOQY", + "showcase": "https://www.youtube.com/watch?v=_emDsV5pOQY", + "percentToQualify": 62, + "records": [ + + ] +} diff --git a/data/dl/GONER.json b/data/dl/GONER.json new file mode 100644 index 0000000..6469483 --- /dev/null +++ b/data/dl/GONER.json @@ -0,0 +1,16 @@ +{ + "id": 77310650, + "name": "GONER", + "description": "effect spam demon", + "gdleveldescription": "Song by Twenty One Pilots. Remix by Uvi/Undervania Verified by Matter. Level by Nightning. SUCK MY BLURRYFACE JEFF BOZO!", + "author": "Nightning", + "creators": ["Nightning"], + "verifier": "JsTocii", + "verifierEnjoyment": 100, + "verification": "https://www.youtube.com/watch?v=b0EFmmVsp8o", + "showcase": "https://www.youtube.com/watch?v=b0EFmmVsp8o", + "percentToQualify": 56, + "records": [ + + ] +} diff --git a/data/dl/Gaper Bonezoid.json b/data/dl/Gaper Bonezoid.json new file mode 100644 index 0000000..4aeaead --- /dev/null +++ b/data/dl/Gaper Bonezoid.json @@ -0,0 +1,16 @@ +{ + "id": 111795352, + "name": "Gaper Bonezoid", + "description": "", + "gdleveldescription": "Supposed to use spooky scary skeletons by the living tombstone but idc", + "author": "Gp0", + "creators": ["Gp0"], + "verifier": "Gp0", + "verifierEnjoyment": 80, + "verification": "https://www.youtube.com/watch?v=brc14iBukOo", + "showcase": "https://www.youtube.com/watch?v=brc14iBukOo", + "percentToQualify": 80, + "records": [ + + ] +} diff --git a/data/dl/Gates of the Gods.json b/data/dl/Gates of the Gods.json new file mode 100644 index 0000000..d3d48b1 --- /dev/null +++ b/data/dl/Gates of the Gods.json @@ -0,0 +1,16 @@ +{ + "id": 90425735, + "name": "Gates of the Gods", + "description": "", + "gdleveldescription": "Fishbass was a heavy inspiration for this. Verified by Babatunde00000 on MOBILE. 1st cube and ship were build by theneegative. also small deco update", + "author": "TheCoolMonke", + "creators": ["TheCoolMonke"], + "verifier": "Lani", + "verifierEnjoyment": 60, + "verification": "https://youtu.be/uVsX7HLjS28", + "showcase": "https://youtu.be/uVsX7HLjS28", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Gay Cataclysm.json b/data/dl/Gay Cataclysm.json new file mode 100644 index 0000000..d077e31 --- /dev/null +++ b/data/dl/Gay Cataclysm.json @@ -0,0 +1,16 @@ +{ + "id": 116795645, + "name": "Gay Cataclysm", + "description": "", + "gdleveldescription": "Gay Cataclysm by FGFentertainment. Verified by me in 530 attempts. April Fools!", + "author": "xlapiz", + "creators": ["GgB0y", "FGFentertainment"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 40, + "verification": "https://www.youtube.com/watch?v=Jclwh1OKKSo", + "showcase": "https://www.youtube.com/watch?v=Jclwh1OKKSo", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Glide.json b/data/dl/Glide.json new file mode 100644 index 0000000..0917291 --- /dev/null +++ b/data/dl/Glide.json @@ -0,0 +1,16 @@ +{ + "id": 55184818, + "name": "Glide", + "description": "A unique extreme demon featuring many double-clicks. The gameplay is learny and somewhat inconsistent but satisfying, reflected by its mixed reception. Most of the difficulty is condensed into the cubes at the beginning and 71%, which include fixed hitboxes.", + "gdleveldescription": "26k objects; This was fun to build and hopefully it's also fun to play. Good Luck!", + "author": "crohn44", + "creators": ["crohn44"], + "verifier": "JsTocii", + "verifierEnjoyment": 70, + "verification": "https://www.youtube.com/watch?v=t2G5B-htLOY", + "showcase": "https://www.youtube.com/watch?v=t2G5B-htLOY", + "percentToQualify": 0, + "records": [ + + ] +} diff --git a/data/dl/Goober Land.json b/data/dl/Goober Land.json new file mode 100644 index 0000000..303ca38 --- /dev/null +++ b/data/dl/Goober Land.json @@ -0,0 +1,16 @@ +{ + "id": 114784521, + "name": "Goober Land", + "description": "Beginner extreme megacollab featuring multiple steamhappy cameos and a very silly tone overall.", + "gdleveldescription": "Plunge DEEP into the Goober Land! APTeamButAwesomes new level that flips gravity on its head! verified by timmmmyyyyyy", + "author": "APTbutAwesome", + "creators": ["BoomBlox", "zilucy", "Cubical7", "jz5", "zNot", "foody", "Amino9", "EggBasket", "tuesdx12", "Web"], + "verifier": "Zacc", + "verifierEnjoyment": 80, + "verification": "https://www.youtube.com/watch?v=X6Oe8B9IpFI&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=10", + "showcase": "https://www.youtube.com/watch?v=X6Oe8B9IpFI&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=10", + "percentToQualify": 80, + "records": [ + + ] +} diff --git a/data/dl/Gracefully.json b/data/dl/Gracefully.json new file mode 100644 index 0000000..e55efb1 --- /dev/null +++ b/data/dl/Gracefully.json @@ -0,0 +1,16 @@ +{ + "id": 88226064, + "name": "Gracefully", + "description": "Graceful remake that is evil", + "gdleveldescription": "For ViPriN CC1, please rate demon 10*. Verified by Noxiom.", + "author": "NindyBK", + "creators": ["Silouute", "Tchotcke", "Zenn", "Knots", "Subpixel", "D3lteX", "BlowMyPooh", "Bizaare", "ph0bic", "Destiny Kawaii", "kaz", "MadisonYuko", "NindyBK", "ThunderBat", "CarlJrc", "Shrympo", "AgSilver", "Plusitive", "MonsterVP", "BurritoGamerX", "StizZy", "DTDom", "xHeiDax", "Zowst"], + "verifier": "JsTocii", + "verifierEnjoyment": 100, + "verification": "https://www.youtube.com/watch?v=uasUpkjvNN8", + "showcase": "https://www.youtube.com/watch?v=uasUpkjvNN8", + "percentToQualify": 75, + "records": [ + + ] +} diff --git a/data/dl/Heartbeat.json b/data/dl/Heartbeat.json new file mode 100644 index 0000000..6d20533 --- /dev/null +++ b/data/dl/Heartbeat.json @@ -0,0 +1,21 @@ +{ + "id": 20321297, + "name": "Heartbeat", + "description": "S P A M", + "gdleveldescription": "Level started in late 1.9, finally finished with the help of ancientanubis and AirSwipe. 10k+ attempts to verify. Enjoy and rate demon :^)", + "author": "KrmaL", + "creators": ["KrmaL"], + "verifier": "JsTocii", + "verifierEnjoyment": 0, + "verification": "https://www.youtube.com/watch?v=r__5MSJ_wps", + "showcase": "https://www.youtube.com/watch?v=r__5MSJ_wps", + "percentToQualify": 69, + "records": [ + { + "user": "Curta", + "link": "https://www.youtube.com/watch?v=rd2B73hbLGE", + "percent": 100, + "enjoyment": 100 + } + ] +} diff --git a/data/dl/Hidden in the Sand.json b/data/dl/Hidden in the Sand.json new file mode 100644 index 0000000..58413f2 --- /dev/null +++ b/data/dl/Hidden in the Sand.json @@ -0,0 +1,33 @@ +{ + "id": 87481937, + "name": "Hidden in the Sand", + "description": "The worst Tally Hall demon.", + "gdleveldescription": "My best work. Layout by Wingless. Verified by Chloe. <3 | Song - Hidden in the Sand - Tally Hall", + "author": "ASBCHazel", + "creators": ["ASBCHazel", "Wingless"], + "verifier": "ZorpikGMD", + "verifierEnjoyment": 60, + "verification": "https://www.youtube.com/watch?v=KToOO1pH4x8&list=PL9AW0Ozca0b6iNQZHwFyhT1_Ai6fL7cuv&index=4", + "showcase": "https://www.youtube.com/watch?v=KToOO1pH4x8&list=PL9AW0Ozca0b6iNQZHwFyhT1_Ai6fL7cuv&index=4", + "percentToQualify": 59, + "records": [ + { + "user": "Curta", + "link": "https://youtu.be/CZuBSGb1dDo", + "percent": 100, + "enjoyment": 40 + }, + { + "user": "Zacc", + "link": "https://www.youtube.com/watch?v=jfHCyRU9ioU&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=11", + "percent": 100, + "enjoyment": 100 + }, + { + "user": "MeatballMoose", + "link": "https://youtu.be/302zmMATszc", + "percent": 100, + "enjoyment": 93 + } + ] +} diff --git a/data/dl/Hurricane.json b/data/dl/Hurricane.json new file mode 100644 index 0000000..cbac839 --- /dev/null +++ b/data/dl/Hurricane.json @@ -0,0 +1,16 @@ +{ + "id": 60726930, + "name": "Hurricane", + "description": "", + "gdleveldescription": "Extreme Demon, verified by Floppy. THIS LEVEL USES A CUSTOM SONG. You can find the download link in my YouTube channel.", + "author": "BIANOX", + "creators": ["Helpegasus", "ChaSe", "Kllnex", "Xaren", "ZeroSR", "KWMS", "Koolboom", "Scrumpy", "BIANOX", "Manix648", "Sequex", "REDACTED", "Arclia", "Enzore"], + "verifier": "Zacc", + "verifierEnjoyment": 100, + "verification": "https://www.youtube.com/watch?v=cXAT_V84a0c&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=7", + "showcase": "https://www.youtube.com/watch?v=cXAT_V84a0c&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=7", + "percentToQualify": 62, + "records": [ + + ] +} diff --git a/data/dl/Hyper Paradox.json b/data/dl/Hyper Paradox.json new file mode 100644 index 0000000..6d016f8 --- /dev/null +++ b/data/dl/Hyper Paradox.json @@ -0,0 +1,15 @@ +{ + "id": 61531210, + "name": "Hyper Paradox", + "description": "Nine circles level similar to Hyper Paracosm.", + "gdleveldescription": "Enter the paradox of the paracosms.", + "author": "ItsHybrid", + "creators": ["SyQual", "ItsHybrid", "ViralDL", "Realvet", "Temp", "El3ctr0", "Avati", "Connected"], + "verifier": "lunacii", + "verifierEnjoyment": 74, + "verification": "https://www.youtube.com/watch?v=NJ32yT2dZQA", + "showcase": "https://www.youtube.com/watch?v=NJ32yT2dZQA", + "percentToQualify": 49, + "records": [ + ] +} diff --git a/data/dl/HyperSonic.json b/data/dl/HyperSonic.json new file mode 100644 index 0000000..b490ccd --- /dev/null +++ b/data/dl/HyperSonic.json @@ -0,0 +1,20 @@ +{ + "id": 30219145, + "name": "HyperSonic", + "description": "Well known megacollab. Consists of overall awkward gameplay, but can also be pretty fun.", + "gdleveldescription": "Megacollab by Dudex, Serponge, Manix648, Vlacc, Rustam, nasgubb, ZenthicAlpha, me, PanMan, Evasium, Etzer & Terron. Verified by Combined", + "author": "ViPriN", + "creators": ["Dudex Serponge Manix648 Vlacc Rustam nasgubb ZenthicAlpha ViPriN Pan Evasium622 EtzerTerron"], + "verifier": "Devy", + "verifierEnjoyment": 95, + "verification": "https://youtu.be/On-ckWqtwRY?si=8eqssQF6hV1i2CAI", + "showcase": "https://youtu.be/On-ckWqtwRY?si=8eqssQF6hV1i2CAI", + "percentToQualify": 81, + "records": [ + { "user": "MeatballMoose", + "link": "https://youtu.be/ax3zeGdhDT4?si=vxOXEiAD5FiQ5GNy", + "percent": 100, + "enjoyment": 88 + } + ] +} diff --git a/data/dl/In Circles.json b/data/dl/In Circles.json new file mode 100644 index 0000000..62e73c7 --- /dev/null +++ b/data/dl/In Circles.json @@ -0,0 +1,21 @@ +{ + "id": 119133802, + "name": "In Circles", + "description": "One of the best levels of ALL TIME. Really fun and peak song", + "gdleveldescription": "\"The everlasting cold of Mt. Circles.\"", + "author": "SomieStuff", + "creators": ["SomieStuff"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 98, + "verification": "https://youtu.be/gDN5uAAuDvM?si=OCBqipusm5nonvhn", + "showcase": "https://youtu.be/gDN5uAAuDvM?si=OCBqipusm5nonvhn", + "percentToQualify": 63, + "records": [ + { + "user": "JsTocii", + "link": "https://www.youtube.com/watch?v=gTLuCZku0G8", + "percent": 100, + "enjoyment": 100 + } + ] +} diff --git a/data/dl/Jesse Pinkman.json b/data/dl/Jesse Pinkman.json new file mode 100644 index 0000000..4581b69 --- /dev/null +++ b/data/dl/Jesse Pinkman.json @@ -0,0 +1,16 @@ +{ + "id": 79918576, + "name": "Jesse Pinkman", + "description": "The first installment of the Breaking Bad Series, featuring typical fast-paced gameplay and an early 2.1 style aesthetic. It's one of Renn's more unserious projects which was built during two off-school days, and hence it momentarily became a meme in the community for placing above Bloodlust when it first came out.", + "gdleveldescription": "verified by comlazzzzzye", + "author": "Renn241", + "creators": ["Renn241"], + "verifier": "Lani", + "verifierEnjoyment": 90, + "verification": "https://youtu.be/auAU0dplkgg?si=hbDbh5WcmhYMCsGs", + "showcase": "https://youtu.be/auAU0dplkgg?si=hbDbh5WcmhYMCsGs", + "percentToQualify": 80, + "records": [ + + ] +} diff --git a/data/dl/Karma.json b/data/dl/Karma.json new file mode 100644 index 0000000..04ca5b5 --- /dev/null +++ b/data/dl/Karma.json @@ -0,0 +1,16 @@ +{ + "id": 63471387, + "name": "Karma", + "description": "ts should not be rated", + "gdleveldescription": "Created by me and Marwec! It uses a song by Camellia, check out my channel for the link!", + "author": "ARtu", + "creators": ["ARtu", "Marwec"], + "verifier": "Curta", + "verifierEnjoyment": 100, + "verification": "https://www.youtube.com/watch?v=5l66Hgl6r9E", + "showcase": "https://www.youtube.com/watch?v=5l66Hgl6r9E", + "percentToQualify": 66, + "records": [ + + ] +} \ No newline at end of file diff --git a/data/dl/Knights of Thunder.json b/data/dl/Knights of Thunder.json new file mode 100644 index 0000000..9301463 --- /dev/null +++ b/data/dl/Knights of Thunder.json @@ -0,0 +1,16 @@ +{ + "id": 86412942, + "name": "Knights of Thunder", + "description": "If theres no Mickey, this aint Disney!", + "gdleveldescription": "", + "author": "HangerLord", + "creators": ["HangerLord"], + "verifier": "ZorpikGMD", + "verifierEnjoyment": 75, + "verification": "https://www.youtube.com/watch?v=llJkz2uEkLE", + "showcase": "https://www.youtube.com/watch?v=llJkz2uEkLE", + "percentToQualify": 76, + "records": [ + + ] +} diff --git a/data/dl/Komodo.json b/data/dl/Komodo.json new file mode 100644 index 0000000..4e17737 --- /dev/null +++ b/data/dl/Komodo.json @@ -0,0 +1,16 @@ +{ + "id": 41832323, + "name": "Komodo", + "description": "this is a meatballslop level", + "gdleveldescription": "Ancient Cursed Level", + "author": "Espii", + "creators": ["Espii", "Halcyon"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 8, + "verification": "https://www.youtube.com/watch?v=7zsXF8WwqLw", + "showcase": "https://www.youtube.com/watch?v=7zsXF8WwqLw", + "percentToQualify": 77, + "records": [ + + ] +} diff --git a/data/dl/Kuzureta.json b/data/dl/Kuzureta.json new file mode 100644 index 0000000..3447ca0 --- /dev/null +++ b/data/dl/Kuzureta.json @@ -0,0 +1,16 @@ +{ + "id": 71216292, + "name": "Kuzureta", + "description": "\"No Copyright law in the universe is going to stop me\"", + "gdleveldescription": "Kuzu 1.1 - femboy level numba three - verified by Cursed", + "author": "Teno", + "creators": ["Zetalock", "ARWooly", "Kyhros", "cxli", "Cybertron", "River", "DiamondSkull", "DrCuber", "SrKiwi", "Genoxide", "GhostVandalf", "Mystic", "El3ctr0", "Flamongo", "Realvet", "Renn241", "nicor77", "zGod", "augi", "Teno"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 90, + "verification": "https://youtu.be/erd7ykZEI4s?si=ZzLFpWcWyFjNSh20", + "showcase": "https://youtu.be/erd7ykZEI4s?si=ZzLFpWcWyFjNSh20", + "percentToQualify": 60, + "records": [ + + ] +} diff --git a/data/dl/Mary On A Cross.json b/data/dl/Mary On A Cross.json new file mode 100644 index 0000000..ea979b5 --- /dev/null +++ b/data/dl/Mary On A Cross.json @@ -0,0 +1,16 @@ +{ + "id": 104754794, + "name": "Mary On A Cross", + "description": "", + "gdleveldescription": "\"your beauty never ever scared me.\" // reverified by fawami", + "author": "heaven1998", + "creators": ["heaven1998"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 67, + "verification": "https://www.youtube.com/watch?v=eEwIH14qaBI", + "showcase": "https://www.youtube.com/watch?v=eEwIH14qaBI", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Misty Mountains.json b/data/dl/Misty Mountains.json new file mode 100644 index 0000000..e1a387a --- /dev/null +++ b/data/dl/Misty Mountains.json @@ -0,0 +1,21 @@ +{ + "id": 60708767, + "name": "Misty Mountains", + "description": "Well known atmospheric XL level with generally slow low cps timing based gameplay and a dual at the end. Has a long cutscene at the start.", + "gdleveldescription": "No one knows where the trail leads... #advyout", + "author": "We4therMan", + "creators": ["We4therMan"], + "verifier": "ZorpikGMD", + "verifierEnjoyment": 80, + "verification": "https://www.youtube.com/watch?v=Cn9oWj6pUiA&list=PL9AW0Ozca0b6iNQZHwFyhT1_Ai6fL7cuv&index=4", + "showcase": "https://www.youtube.com/watch?v=Cn9oWj6pUiA&list=PL9AW0Ozca0b6iNQZHwFyhT1_Ai6fL7cuv&index=4", + "percentToQualify": 63, + "records": [ + { + "user": "MeatballMoose", + "link": "https://www.youtube.com/watch?v=wbMp3fcGUa0", + "percent": 100, + "enjoyment": 4 + } + ] +} diff --git a/data/dl/Mizureta.json b/data/dl/Mizureta.json new file mode 100644 index 0000000..9352600 --- /dev/null +++ b/data/dl/Mizureta.json @@ -0,0 +1,16 @@ +{ + "id": 95764848, + "name": "Mizureta", + "description": "A reta-styled extreme which takes much aspects in decoration and gameplay from the levels it is styled upon. The gameplay is typical of a level of its style: highly flowy and features a lot of clicksync. A lot of the difficulty is condensed into the middle sections. Took a couple of years for it to get rated.", + "gdleveldescription": "Watered. Verified by Airbound, reverified by ThisIsGDNick, update by Shyne. Thank you all for the support! <3", + "author": "dutchiee", + "creators": ["Graded peng", "Tom163", "Xenith", "D3lteX", "humbjumb", "Daydream", "Horizontal1", "TriplasH", "zoxical", "kaacu", "Zentraa", "Vendas", "Pedro", "IcyConey", "dutchiee", "Samzaya"], + "verifier": "Lani", + "verifierEnjoyment": 55, + "verification": "https://youtu.be/-KUKJJANK3M?si=gM99-60TFlIFrSE4", + "showcase": "https://youtu.be/-KUKJJANK3M?si=gM99-60TFlIFrSE4", + "percentToQualify": 78, + "records": [ + + ] +} diff --git a/data/dl/Molten Core.json b/data/dl/Molten Core.json new file mode 100644 index 0000000..637b9d6 --- /dev/null +++ b/data/dl/Molten Core.json @@ -0,0 +1,16 @@ +{ + "id": 68414488, + "name": "Molten Core", + "description": "", + "gdleveldescription": "Jeszcze Polska nie zginela, Kiedy my zyjemy. Co nam obca przemoc wziela, Szabla odbierzemy. J E B A C P I S", + "author": "Janucha", + "creators": ["Janucha"], + "verifier": "Lani", + "verifierEnjoyment": 90, + "verification": "https://www.youtube.com/watch?v=kWCiW7ovnWw", + "showcase": "https://www.youtube.com/watch?v=kWCiW7ovnWw", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Molten Mercury.json b/data/dl/Molten Mercury.json new file mode 100644 index 0000000..edfbc8b --- /dev/null +++ b/data/dl/Molten Mercury.json @@ -0,0 +1,16 @@ +{ + "id": 64066032, + "name": "Molten Mercury", + "description": "Fun collab hosted by ItsHybrid which is a sequel to Tempered Steel.", + "gdleveldescription": "Escape the burning furnace. Verified by Kapinapi.", + "author": "ItsHybrid", + "creators": ["Vismuth", "Surge", "Pokechatt", "Zipixbox", "ItsHybrid", "ViralDL", "Realvet", "EyeOfTheStorm", "BlasterRobotz", "Odyssey", "ToastedPleb", "CuLuC"], + "verifier": "lunacii", + "verifierEnjoyment": 68, + "verification": "https://www.youtube.com/watch?v=Lj0lieRs7Lw", + "showcase": "https://www.youtube.com/watch?v=Lj0lieRs7Lw", + "percentToQualify": 73, + "records": [ + + ] +} diff --git a/data/dl/Mystic Bounds.json b/data/dl/Mystic Bounds.json new file mode 100644 index 0000000..37987c8 --- /dev/null +++ b/data/dl/Mystic Bounds.json @@ -0,0 +1,16 @@ +{ + "id": 93549959, + "name": "Mystic Bounds", + "description": "The best extreme demon in Geometry Dash.", + "gdleveldescription": "Quite mystic indeed. This level uses a REPLACEMENT SONG. Get it from my verification video!!!", + "author": "gmdmann", + "creators": ["gmdmann"], + "verifier": "Curta", + "verifierEnjoyment": 100, + "verification": "https://www.youtube.com/watch?v=2G6JLbuxuxQ", + "showcase": "https://www.youtube.com/watch?v=2G6JLbuxuxQ", + "percentToQualify": 67, + "records": [ + + ] +} \ No newline at end of file diff --git a/data/dl/Napalm.json b/data/dl/Napalm.json new file mode 100644 index 0000000..bca3de5 --- /dev/null +++ b/data/dl/Napalm.json @@ -0,0 +1,16 @@ +{ + "id": 65561437, + "name": "Napalm", + "description": "first extreme demon coming back to the game. really fun gameplay.", + "gdleveldescription": "In this city on fire you find yourself chased after. Verified by Luqualizer.", + "author": "Marwec", + "creators": ["Marwec"], + "verifier": "CoolEnder32", + "verifierEnjoyment": 85, + "verification": "https://www.youtube.com/watch?v=GjZU8sdpJUU", + "showcase": "https://www.youtube.com/watch?v=GjZU8sdpJUU", + "percentToQualify": 62, + "records": [ + + ] +} diff --git a/data/dl/Nhelv.json b/data/dl/Nhelv.json new file mode 100644 index 0000000..9c802dc --- /dev/null +++ b/data/dl/Nhelv.json @@ -0,0 +1,16 @@ +{ + "id": 68353244, + "name": "Nhelv", + "description": "", + "gdleveldescription": "Decorated by Notlsa and Dienid, layout by me. Song in the verification video.", + "author": "guillester", + "creators": ["guillester", "Dienid", "notlsa"], + "verifier": "Zacc", + "verifierEnjoyment": 50, + "verification": "https://www.youtube.com/watch?v=QhvqrqK8N-s&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=6", + "showcase": "https://www.youtube.com/watch?v=QhvqrqK8N-s&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=6", + "percentToQualify": 62, + "records": [ + + ] +} diff --git a/data/dl/Overtime.json b/data/dl/Overtime.json new file mode 100644 index 0000000..d764a35 --- /dev/null +++ b/data/dl/Overtime.json @@ -0,0 +1,16 @@ +{ + "id": 83825373, + "name": "Overtime", + "description": "", + "gdleveldescription": "[MEGA SWAP] By N3mo, KlaurosssS & More ! Completely reworked in one month | Verified by Dorami", + "author": "KlaurosssS", + "creators": ["N3moProd", "KlaurosssS", "LaserSword33", "ISSLOL", "Retro Head", "Airtime [GD]", "WaRiox", "Ellisha", "Ji", "AbysS", "Hir0shi", "UltraS4", "Vyzion", "rZary_"], + "verifier": "Lani", + "verifierEnjoyment": 50, + "verification": "https://youtu.be/o0EWgSMylxE", + "showcase": "https://youtu.be/o0EWgSMylxE", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/PSYCHOSOCIAL.json b/data/dl/PSYCHOSOCIAL.json new file mode 100644 index 0000000..100d197 --- /dev/null +++ b/data/dl/PSYCHOSOCIAL.json @@ -0,0 +1,16 @@ +{ + "id": 125572330, + "name": "PSYCHOSOCIAL", + "description": "Short but fun level", + "gdleveldescription": "", + "author": "xAeternal", + "creators": ["xAeternal"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 83, + "verification": "https://youtu.be/jmAODTE1Iqs?si=cBU7z428g1RpVogf", + "showcase": "https://youtu.be/jmAODTE1Iqs?si=cBU7z428g1RpVogf", + "percentToQualify": 62, + "records": [ + + ] +} diff --git a/data/dl/Plasma Pulse Finale.json b/data/dl/Plasma Pulse Finale.json new file mode 100644 index 0000000..4cf9be4 --- /dev/null +++ b/data/dl/Plasma Pulse Finale.json @@ -0,0 +1,16 @@ +{ + "id": 38655495, + "name": "Plasma Pulse Finale", + "description": "The finale of the Plasma Pulse series and a former Top 1, making it by far the hardest. It takes everything you’ve learned from the previous levels with various precise timings (some may be chokepoints), a complicated robot + cube dual, and a nerve-wracking ending that contains robot micro clicks. This level truly tests your raw skill to its fullest.", + "gdleveldescription": "Final part of this incredible series, the hardest one and one of the most awaited levels.. Good luck, you'll need it. Collab with Giron. Fixed to match 2.2 physics.", + "author": "xSmokes", + "creators": ["xSmokes", "Giron"], + "verifier": "Lani", + "verifierEnjoyment": 100, + "verification": "https://youtu.be/J1Q4i8OzX5I?si=3Ih5zAaB6jkvoeI3", + "showcase": "https://youtu.be/J1Q4i8OzX5I?si=3Ih5zAaB6jkvoeI3", + "percentToQualify": 79, + "records": [ + + ] +} diff --git a/data/dl/Plasma Pulse III.json b/data/dl/Plasma Pulse III.json new file mode 100644 index 0000000..771d4ba --- /dev/null +++ b/data/dl/Plasma Pulse III.json @@ -0,0 +1,16 @@ +{ + "id": 20159880, + "name": "Plasma Pulse III", + "description": "third in the plasma pulse series.", + "gdleveldescription": "Third part of PP series.. You will need good luck with this! Collab with Giron. Fixed refresh rates bugs.", + "author": "xSmokes", + "creators": ["xSmokes", "Giron"], + "verifier": "Devy", + "verifierEnjoyment": 90, + "verification": "https://www.youtube.com/watch?v=mndTwST_o7E", + "showcase": "https://www.youtube.com/watch?v=mndTwST_o7E", + "percentToQualify": 79, + "records": [ + + ] +} diff --git a/data/dl/Poltergeist x3.json b/data/dl/Poltergeist x3.json new file mode 100644 index 0000000..32a6b36 --- /dev/null +++ b/data/dl/Poltergeist x3.json @@ -0,0 +1,16 @@ +{ + "id": 126623300, + "name": "Poltergeist x3", + "description": "", + "gdleveldescription": "gg", + "author": "zLexyy", + "creators": ["Andromeda GMD", "† 𓆩Lexy𓆪 †"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 42, + "verification": "https://www.youtube.com/watch?v=iRlWPyam56w", + "showcase": "https://www.youtube.com/watch?v=iRlWPyam56w", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Precipitance.json b/data/dl/Precipitance.json new file mode 100644 index 0000000..32977be --- /dev/null +++ b/data/dl/Precipitance.json @@ -0,0 +1,20 @@ +{ + "id": 60197839, + "name": "Precipitance", + "description": "A popular beginner solo extreme with colorful glow decoration throughout and a very repetitive song. Features fast-paced, clicksync gameplay with a mixture of gamemodes. Watch out for skipping any orbs, as the level gets angry at you if you do.", + "gdleveldescription": "My first genuine solo level. 2 months and 77k objects to create this. Thanks to all the playtesters for making this level more enjoyable.", + "author": "Extravagon", + "creators": ["Extravagon"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 92, + "verification": "https://www.youtube.com/watch?v=JEAfbc2TPOk", + "showcase": "https://www.youtube.com/watch?v=JEAfbc2TPOk", + "percentToQualify": 73, + "records": [ + { "user": "Devy", + "link": "https://youtu.be/uX7MHRSv3yQ?si=a61kqMpXdVblGul1", + "percent": 100, + "enjoyment": 57 + } + ] +} diff --git a/data/dl/Prismatic Haze.json b/data/dl/Prismatic Haze.json new file mode 100644 index 0000000..7bb7c3a --- /dev/null +++ b/data/dl/Prismatic Haze.json @@ -0,0 +1,33 @@ +{ + "id": 59899374, + "name": "Prismatic Haze", + "description": "Shit clicksync, decent gameplay", + "gdleveldescription": "A Legendary mist. Layout and Verified by Gizbro! Update Balanced and reverified by Moosh. Dedicated to Ayup.", + "author": "Cirtrax", + "creators": ["Cirtrax", "Gizbro"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 83, + "verification": "https://youtu.be/OteAJr0CaYU?si=i3cUVYgRiq6qkSpB", + "showcase": "https://youtu.be/OteAJr0CaYU?si=i3cUVYgRiq6qkSpB", + "percentToQualify": 59, + "records": [ + { "user": "Kaiyote", + "link": "https://www.youtube.com/watch?v=C2uJ50Xp6qs", + "percent": 100, + "enjoyment": 83 + }, + { + "user": "lunacii", + "link": "https://youtu.be/kuI-wjmx9ro?si=9KP84pHxnALlX5UC", + "percent": 100, + "enjoyment": 89 + }, + { + "user": "Curta", + "link": "https://www.youtube.com/watch?v=1QJhalgVHWQ", + "percent": 100, + "enjoyment": 15 + } + ] + +} diff --git a/data/dl/Prismatic.json b/data/dl/Prismatic.json new file mode 100644 index 0000000..372f075 --- /dev/null +++ b/data/dl/Prismatic.json @@ -0,0 +1,16 @@ +{ + "id": 107341811, + "name": "Prismatic", + "description": "ALong and cute rainbow coloured extreme with an equally playful song. Mostly timing based, especially in the spider sections, but also features a hard dual and a challenge-like first wave. Has multiple double clicks.", + "gdleveldescription": "After many months of hard work and 13.3k atts I'm proud to present my new best level, PRISMATIC! 65.1k obj - 1.9k groups - 2.9k triggers - 2m 14s - Hope you enjoy! :3", + "author": "CatGeo", + "creators": ["CatGeo"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 71, + "verification": "https://www.youtube.com/watch?v=7kO2G2g2NoQ", + "showcase": "https://www.youtube.com/watch?v=7kO2G2g2NoQ", + "percentToQualify": 75, + "records": [ + + ] +} diff --git a/data/dl/Proteus.json b/data/dl/Proteus.json new file mode 100644 index 0000000..f55e122 --- /dev/null +++ b/data/dl/Proteus.json @@ -0,0 +1,16 @@ +{ + "id": 88943354, + "name": "Proteus", + "description": "", + "gdleveldescription": "A Flying Tarantula Eats Red Baboons On Saturday", + "author": "SpergQuos", + "creators": ["fJud", "SpergQuos", "Yakimaru", "SleyGD", "Sert", "Renn241", "Fruitsnack", "Unbipentium"], + "verifier": "Zacc", + "verifierEnjoyment": 0, + "verification": "https://www.youtube.com/watch?v=DsuOAZdR7r4&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=4", + "showcase": "https://www.youtube.com/watch?v=DsuOAZdR7r4&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=4", + "percentToQualify": 62, + "records": [ + + ] +} diff --git a/data/dl/Quantum Processing.json b/data/dl/Quantum Processing.json new file mode 100644 index 0000000..28ad7e4 --- /dev/null +++ b/data/dl/Quantum Processing.json @@ -0,0 +1,27 @@ +{ + "id": 38235367, + "name": "Quantum Processing", + "description": "", + "gdleveldescription": "Blast Processing turned into a hellish nightmare. Gameplay done by Hinds and myself. Deco by Hinds and Sil3nce. Verified by Rampage.", + "author": "Riot", + "creators": ["Hinds", "Riot", "RobTop", "Sil3nce", "Zobros"], + "verifier": "Meatballmoose", + "verifierEnjoyment": 54, + "verification": "https://youtu.be/sSxN7GY_6oE?si=b3ZEeKfd9LzItYxU", + "showcase": "https://youtu.be/sSxN7GY_6oE?si=b3ZEeKfd9LzItYxU", + "percentToQualify": 68, + "records": [ + { + "user": "Lani", + "link": "https://youtu.be/p9S1C96eadk", + "percent": 100, + "enjoyment": 0 + }, + { + "user": "Devy", + "link": "https://www.youtube.com/watch?v=lr0mdEL8xK0", + "percent": 100, + "enjoyment": 80 + } + ] +} diff --git a/data/dl/RASH.json b/data/dl/RASH.json new file mode 100644 index 0000000..3351b39 --- /dev/null +++ b/data/dl/RASH.json @@ -0,0 +1,16 @@ +{ + "id": 69507105, + "name": "RASH", + "description": "overrated level (in terms of difficulty)", + "gdleveldescription": "Itchy... Scratchy.... | Verified by Crumche, reverified by Zoink Doink", + "author": "Loltad", + "creators": ["Loltad"], + "verifier": "Curta", + "verifierEnjoyment": 95, + "verification": "https://www.youtube.com/watch?v=zIiwEUMlHv0", + "showcase": "https://www.youtube.com/watch?v=zIiwEUMlHv0", + "percentToQualify": 79, + "records": [ + + ] +} diff --git a/data/dl/Realtered.json b/data/dl/Realtered.json new file mode 100644 index 0000000..76b4843 --- /dev/null +++ b/data/dl/Realtered.json @@ -0,0 +1,16 @@ +{ + "id": 87153593, + "name": "Realtered", + "description": "What even is this level man?", + "gdleveldescription": "What has once been altered has been given a new meaning - Update by Leff", + "author": "Elevens", + "creators": ["MythicalTG", "Graded", "gurt", "Elevens", "AAAAAlex", "SlickXD", "TopHatMark", "Chaotrix"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 65, + "verification": "https://youtu.be/1Y3ixPKp4hQ?si=oqm-V3mfLf3mJV4X", + "showcase": "https://youtu.be/1Y3ixPKp4hQ?si=oqm-V3mfLf3mJV4X", + "percentToQualify": 71, + "records": [ + + ] +} diff --git a/data/dl/Red World Rebirth.json b/data/dl/Red World Rebirth.json new file mode 100644 index 0000000..daaab4d --- /dev/null +++ b/data/dl/Red World Rebirth.json @@ -0,0 +1,16 @@ +{ + "id": 20077821, + "name": "Red World Rebirth", + "description": "remake of the oldest and also easiest exteme demon.", + "gdleveldescription": "Redesign of the original Red World by saRy and Neptune. Decoration by Hinds, Findexi, and Viprin. Verified by me with 4640 attempts.", + "author": "Riot", + "creators": ["saRy", "NePtunE", "Riot", "Hinds", "Findexi", "ViPrin"], + "verifier": "JsTocii", + "verifierEnjoyment": 60, + "verification": "https://www.youtube.com/watch?v=NLniBf5q9cQ", + "showcase": "https://www.youtube.com/watch?v=NLniBf5q9cQ", + "percentToQualify": 67, + "records": [ + + ] +} diff --git a/data/dl/Red World.json b/data/dl/Red World.json new file mode 100644 index 0000000..9fb94fb --- /dev/null +++ b/data/dl/Red World.json @@ -0,0 +1,21 @@ +{ + "id": 2374518, + "name": "Red World", + "description": "oldest and also easiest exteme demon.", + "gdleveldescription": "saRy is third long map. Design by Neptune", + "author": "saRy", + "creators": ["saRy", "NePtunE"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 53, + "verification": "https://www.youtube.com/watch?v=804dBT4VWTQ", + "showcase": "https://www.youtube.com/watch?v=804dBT4VWTQ", + "percentToQualify": 67, + "records": [ + { + "user": "JsTocii", + "link": "https://www.youtube.com/watch?v=NLniBf5q9cQ", + "percent": 100, + "enjoyment": 60 + } + ] +} diff --git a/data/dl/Redemption Arc.json b/data/dl/Redemption Arc.json new file mode 100644 index 0000000..a1ca4e0 --- /dev/null +++ b/data/dl/Redemption Arc.json @@ -0,0 +1,16 @@ +{ + "id": 96846935, + "name": "Redemption Arc", + "description": "Wulzy, Please come back from the dead and make a new extreme. This level is peak. This level is so peak, Peak song, Peak drugs, Peak ghgiofjhiugjfhiyuoyfjdhryety56uilhjvcgdetryukhdgsryukihdgte5yr6utdgrestryahogioduaiodusiofuaoweoahdfoasha", + "gdleveldescription": "I built the level, but more importantly, the level built my community.", + "author": "Wulzy", + "creators": ["Wulzy"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 97, + "verification": "https://youtu.be/QkrUm2Q1O3c?si=fzXJZZ48avYMKUdL", + "showcase": "https://youtu.be/QkrUm2Q1O3c?si=fzXJZZ48avYMKUdL", + "percentToQualify": 67, + "records": [ + + ] +} diff --git a/data/dl/Restricted Sector.json b/data/dl/Restricted Sector.json new file mode 100644 index 0000000..0ed9075 --- /dev/null +++ b/data/dl/Restricted Sector.json @@ -0,0 +1,16 @@ +{ + "id": 112573399, + "name": "Restricted Sector", + "description": "", + "gdleveldescription": "By ZorpikGMD and Kek, a 1.9 level that I hope you enjoy. Verified on my YT: ZorpikGMD (Thanks for 100 subs btw)", + "author": "ZorpikGMD", + "creators": ["ZorpikGMD", "Kek"], + "verifier": "ZorpikGMD", + "verifierEnjoyment": 76, + "verification": "https://www.youtube.com/watch?v=GrGQShjn3OM", + "showcase": "https://www.youtube.com/watch?v=GrGQShjn3OM", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Retention.json b/data/dl/Retention.json new file mode 100644 index 0000000..90bf95b --- /dev/null +++ b/data/dl/Retention.json @@ -0,0 +1,21 @@ +{ + "id": 18697406, + "name": "Retention", + "description": "Peak early 2.0 extreme demon by Woogi. Very ahead of its time.", + "gdleveldescription": "My New Hard Level!!! Probably my best solo level. This isn't that hard... I nerfed this to beat easily. Good Luck!!!", + "author": "WOOGI1411", + "creators": ["WOOGI1411"], + "verifier": "Devy", + "verifierEnjoyment": 80, + "verification": "https://www.youtube.com/watch?v=G1T0QuXTGYg&rco=1", + "showcase": "https://www.youtube.com/watch?v=G1T0QuXTGYg&rco=1", + "percentToQualify": 73, + "records": [ + { + "user": "nile", + "link": "https://www.youtube.com/watch?v=AC1R24GwyEo", + "percent": 100, + "enjoyment": 70 + } + ] +} diff --git a/data/dl/Ruler of Everything.json b/data/dl/Ruler of Everything.json new file mode 100644 index 0000000..bdf244a --- /dev/null +++ b/data/dl/Ruler of Everything.json @@ -0,0 +1,16 @@ +{ + "id": 83204544, + "name": "Ruler of Everything", + "description": "Tally Hall demon.", + "gdleveldescription": "My best level yet. Song - Ruler of Everything - Tally Hall | Verified by Bosonic. Tysm to everyone who supported the creation of this level. <3", + "author": "ASBCHazel", + "creators": ["ASBCHazel"], + "verifier": "Curta", + "verifierEnjoyment": 60, + "verification": "https://www.youtube.com/watch?v=dr_RCBERslI", + "showcase": "https://www.youtube.com/watch?v=dr_RCBERslI", + "percentToQualify": 67, + "records": [ + + ] +} diff --git a/data/dl/SHATTER.json b/data/dl/SHATTER.json new file mode 100644 index 0000000..ce11ff9 --- /dev/null +++ b/data/dl/SHATTER.json @@ -0,0 +1,16 @@ +{ + "id": 67622133, + "name": "SHATTER", + "description": "level by evil man", + "gdleveldescription": "breakthrough", + "author": "efext", + "creators": ["efext"], + "verifier": "JsTocii", + "verifierEnjoyment": 75, + "verification": "https://www.youtube.com/watch?v=LkPJlmn7Yf8", + "showcase": "https://www.youtube.com/watch?v=LkPJlmn7Yf8", + "percentToQualify": 73, + "records": [ + + ] +} diff --git a/data/dl/SIGSEGV.json b/data/dl/SIGSEGV.json new file mode 100644 index 0000000..2d8d56e --- /dev/null +++ b/data/dl/SIGSEGV.json @@ -0,0 +1,16 @@ +{ + "id": 61936205, + "name": "SIGSEGV", + "description": "An extended remake of the 30 second long \"Segmentation Fault.\" A highly unique extreme using only the cube gamemode but in unusual and gimmicky ways. This includes a maximum click section and many parts where an orb is taped to your cube. The strange gameplay is accompanied by appropriately unusual effects.", + "gdleveldescription": "*((char *)NULL) = '3';", + "author": "Sminx", + "creators": ["Sminx"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 43, + "verification": "https://www.youtube.com/watch?v=idrEI1xFm74", + "showcase": "https://www.youtube.com/watch?v=idrEI1xFm74", + "percentToQualify": 75, + "records": [ + + ] +} diff --git a/data/dl/Sakupen Hell.json b/data/dl/Sakupen Hell.json new file mode 100644 index 0000000..e98e863 --- /dev/null +++ b/data/dl/Sakupen Hell.json @@ -0,0 +1,16 @@ +{ + "id": 23262780, + "name": "Sakupen Hell", + "description": "What is a Sakupen, is it a tree, is it a bitch, is it a rock?", + "gdleveldescription": "Sakupen Hell by Noobas! Verified by me in 22 199 attempts! :D", + "author": "Trusta", + "creators": ["Noobas"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 40, + "verification": "https://www.youtube.com/watch?v=DxkcJoW1YEg", + "showcase": "https://www.youtube.com/watch?v=DxkcJoW1YEg", + "percentToQualify": 82, + "records": [ + + ] +} diff --git a/data/dl/Sandstorm.json b/data/dl/Sandstorm.json new file mode 100644 index 0000000..41dff28 --- /dev/null +++ b/data/dl/Sandstorm.json @@ -0,0 +1,21 @@ +{ + "id": 111511749, + "name": "Sandstorm", + "description": "", + "gdleveldescription": "789 attempts. sunset", + "author": "Zacc", + "creators": ["Zacc"], + "verifier": "Zacc", + "verifierEnjoyment": 70, + "verification": "https://www.youtube.com/watch?v=77x29F8MIB4", + "showcase": "https://www.youtube.com/watch?v=77x29F8MIB4", + "percentToQualify": 63, + "records": [ + { + "user": "Lani", + "link": "https://youtu.be/r-Fifog4KwI", + "percent": 100, + "enjoyment": 0 + } + ] +} diff --git a/data/dl/Shitty Aeternus.json b/data/dl/Shitty Aeternus.json new file mode 100644 index 0000000..c71523d --- /dev/null +++ b/data/dl/Shitty Aeternus.json @@ -0,0 +1,16 @@ +{ + "id": 103853064, + "name": "Shitty Aeternus", + "description": "Don't die to the last straight fly somehow", + "gdleveldescription": "Use LDM for Anapa version!", + "author": "AcropolisBoy", + "creators": ["AcropolisBoy"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 84, + "verification": "https://youtu.be/34U9yD48rvc?si=FnyPUW8lj9STgudy", + "showcase": "https://youtu.be/34U9yD48rvc?si=FnyPUW8lj9STgudy", + "percentToQualify": 66, + "records": [ + + ] +} diff --git a/data/dl/Shitty Beztana Vortex.json b/data/dl/Shitty Beztana Vortex.json new file mode 100644 index 0000000..46e3fa1 --- /dev/null +++ b/data/dl/Shitty Beztana Vortex.json @@ -0,0 +1,16 @@ +{ + "id": 74862436, + "name": "Shitty Beztana Vortex", + "description": "", + "gdleveldescription": "", + "author": "invicttt", + "creators": ["nVypergd", "DIVHYNE"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 85, + "verification": "https://www.youtube.com/watch?v=jtSZWvXGz3w", + "showcase": "https://www.youtube.com/watch?v=jtSZWvXGz3w", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Shitty Sakupen Circles.json b/data/dl/Shitty Sakupen Circles.json new file mode 100644 index 0000000..3be15fd --- /dev/null +++ b/data/dl/Shitty Sakupen Circles.json @@ -0,0 +1,16 @@ +{ + "id": 77558400, + "name": "Shitty Sakupen Circles", + "description": "Had to rebeat like 1 billion times", + "gdleveldescription": "hopefully the last update, changed buffed gp and made some stuff match the OG, by myz", + "author": "Myz", + "creators": ["Myz", "Slayer"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 34, + "verification": "https://youtu.be/EVMa4E5wgoU?si=fyKJwgj4_Gy6959P", + "showcase": "https://youtu.be/EVMa4E5wgoU?si=fyKJwgj4_Gy6959P", + "percentToQualify": 66, + "records": [ + + ] +} diff --git a/data/dl/Shitty Sink.json b/data/dl/Shitty Sink.json new file mode 100644 index 0000000..be1490b --- /dev/null +++ b/data/dl/Shitty Sink.json @@ -0,0 +1,16 @@ +{ + "id": 88439096, + "name": "Shitty Sink", + "description": "Why is every shitty level click pattern slightly harder in the dumbest places", + "gdleveldescription": "dedicated to all the people in the endscreen, hope u enjoy :3", + "author": "Dipper552", + "creators": ["Dipper552"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 68, + "verification": "https://youtu.be/Kp6-n4ENQPw?si=vzvr0XOd09mf1hXQ", + "showcase": "https://youtu.be/Kp6-n4ENQPw?si=vzvr0XOd09mf1hXQ", + "percentToQualify": 62, + "records": [ + + ] +} diff --git a/data/dl/Shitty Thinking Space II.json b/data/dl/Shitty Thinking Space II.json new file mode 100644 index 0000000..3aed615 --- /dev/null +++ b/data/dl/Shitty Thinking Space II.json @@ -0,0 +1,16 @@ +{ + "id": 121969801, + "name": "Shitty Thinking Space II", + "description": "", + "gdleveldescription": "tsl ver", + "author": "Xcl0624i", + "creators": ["Xcl0624i"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 54, + "verification": "https://www.youtube.com/watch?v=ZRc0WYQBbyo", + "showcase": "https://www.youtube.com/watch?v=ZRc0WYQBbyo", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Shmarley Ville.json b/data/dl/Shmarley Ville.json new file mode 100644 index 0000000..589c259 --- /dev/null +++ b/data/dl/Shmarley Ville.json @@ -0,0 +1,16 @@ +{ + "id": 81535535, + "name": "Shmarley Ville", + "description": "Wait, Renn can make a good level? Nevermind Jarvis this was a Colab", + "gdleveldescription": "Trio collab with GhostVandalf, DrCuber, and Myself // Verified by Zipi // Sequel to The ShMarlow Paradox", + "author": "Renn241", + "creators": ["DrCuber", "Ghostvandalf", "Renn241"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 95, + "verification": "https://youtu.be/o5QeNZ59vuU?si=vmHyxzrMZrO2lSOY", + "showcase": "https://youtu.be/o5QeNZ59vuU?si=vmHyxzrMZrO2lSOY", + "percentToQualify": 64, + "records": [ + + ] +} diff --git a/data/dl/Shukufuku.json b/data/dl/Shukufuku.json new file mode 100644 index 0000000..f4da7af --- /dev/null +++ b/data/dl/Shukufuku.json @@ -0,0 +1,16 @@ +{ + "id": 93916671, + "name": "Shukufuku", + "description": "", + "gdleveldescription": "inspired by Wasureta | verified by Lordvadercraft", + "author": "Joker179114", + "creators": ["48VPower", "Rix-Renex", "Pierce60", "8uua", "TalentGrocery", "Unne", "Joker179114", "xcynicx"], + "verifier": "Lani", + "verifierEnjoyment": 60, + "verification": "https://www.youtube.com/watch?v=zvej_zwZ9YQ", + "showcase": "https://www.youtube.com/watch?v=zvej_zwZ9YQ", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Sigma Interface.json b/data/dl/Sigma Interface.json new file mode 100644 index 0000000..079e428 --- /dev/null +++ b/data/dl/Sigma Interface.json @@ -0,0 +1,16 @@ +{ + "id": 62551239, + "name": "Sigma Interface", + "description": "Has a very chill atmosphere and gameplay that is mostly timings, wave, and ship. Was supposed to have an extension but was released early.", + "gdleveldescription": "if you unrate i might finish", + "author": "Platnuu", + "creators": ["TeslaX", "Platnuu"], + "verifier": "Devy", + "verifierEnjoyment": 75, + "verification": "https://youtu.be/-7nVrAumr48?si=ccWvcpd6WWmzCZFd", + "showcase": "https://youtu.be/-7nVrAumr48?si=ccWvcpd6WWmzCZFd", + "percentToQualify": 75, + "records": [ + + ] +} diff --git a/data/dl/Silentium Gradas.json b/data/dl/Silentium Gradas.json new file mode 100644 index 0000000..15affdd --- /dev/null +++ b/data/dl/Silentium Gradas.json @@ -0,0 +1,16 @@ +{ + "id": 45626173, + "name": "Silentium Gradas", + "description": "A Stormfly megacollab remake of Silent clubstep, containing almost identical gameplay, albeit heavily nerfed.", + "gdleveldescription": "Tacito gradu quod putridum creaturae autem massa carnosus voluntas conlaudo usque quod album apporto quod descendit.", + "author": "Stormfly", + "creators": ["Metalface221 Kugelblitz Zhander noice Shocksidian Aquatias KaotikJumper Blaireswip"], + "verifier": "Lani", + "verifierEnjoyment": 60, + "verification": "https://youtu.be/XQ56nBGHz4c?si=ycn9tCU9tzrBjpVi", + "showcase": "https://youtu.be/XQ56nBGHz4c?si=ycn9tCU9tzrBjpVi", + "percentToQualify": 75, + "records": [ + + ] +} diff --git a/data/dl/Sodium Nitrate.json b/data/dl/Sodium Nitrate.json new file mode 100644 index 0000000..5e43266 --- /dev/null +++ b/data/dl/Sodium Nitrate.json @@ -0,0 +1,16 @@ +{ + "id": 103336725, + "name": "Sodium Nitrate", + "description": "", + "gdleveldescription": "My first attempt at a rated level! Its a memory level so be prepared.", + "author": "Gp0", + "creators": ["Gp0"], + "verifier": "Gp0", + "verifierEnjoyment": 70, + "verification": "https://youtu.be/qreH2PxXo88", + "showcase": "https://youtu.be/qreH2PxXo88", + "percentToQualify": 62, + "records": [ + + ] +} diff --git a/data/dl/Solar Revolution.json b/data/dl/Solar Revolution.json new file mode 100644 index 0000000..ff1bec3 --- /dev/null +++ b/data/dl/Solar Revolution.json @@ -0,0 +1,21 @@ +{ + "id": 113393089, + "name": "Solar Revolution", + "description": ".", + "gdleveldescription": "Open verification. Delete end trigger if you wanna verify.", + "author": "LSolarX", + "creators": ["LSolarX"], + "verifier": "Kaiyote", + "verifierEnjoyment": 90, + "verification": "https://www.youtube.com/watch?v=0SNLTqYVv1c", + "showcase": "https://www.youtube.com/watch?v=0SNLTqYVv1c", + "percentToQualify": 63, + "records": [ + { + "user": "Lani", + "link": "https://youtu.be/7i-QNo6j19w", + "percent": 100, + "enjoyment": 85 + } + ] +} diff --git a/data/dl/Sonic Wave.json b/data/dl/Sonic Wave.json new file mode 100644 index 0000000..6e798ef --- /dev/null +++ b/data/dl/Sonic Wave.json @@ -0,0 +1,21 @@ +{ + "id": 26681070, + "name": "Sonic Wave", + "description": "Very Iconic Top 1 Nine Circles demon. Annoying according to victors.", + "gdleveldescription": "Mythical Demon by Cyclic! Video on my YouTube.", + "author": "lSunix", + "creators": ["Cyclic", "lSunix"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 13, + "verification": "https://youtu.be/DnWzgBvpxOg?si=C16PuKk9mISvv81r", + "showcase": "https://youtu.be/DnWzgBvpxOg?si=C16PuKk9mISvv81r", + "percentToQualify": 65, + "records": [ + { + "user": "JsTocii", + "link": "https://www.youtube.com/watch?v=DE1w-qEn1c4", + "percent": 100, + "enjoyment": 80 + } + ] +} diff --git a/data/dl/Stalemate Redux.json b/data/dl/Stalemate Redux.json new file mode 100644 index 0000000..a41c521 --- /dev/null +++ b/data/dl/Stalemate Redux.json @@ -0,0 +1,21 @@ +{ + "id": 37398911, + "name": "Stalemate Redux", + "description": "Meatball got to the drop 4x in a row. Meatball is not happy", + "gdleveldescription": "Made by GdTheTactiq & TheFrozenTide! Verified by Zephal!!", + "author": "Tehtactiq", + "creators": ["Tehtactiq", "TheFrozenTide"], + "verifier": "Meatballmoose", + "verifierEnjoyment": 80, + "verification": "https://youtu.be/FJB0YxkZrAw?si=tD9YdG3IskS85kpj", + "showcase": "https://youtu.be/FJB0YxkZrAw?si=tD9YdG3IskS85kpj", + "percentToQualify": 75, + "records": [ + { + "user": "JsTocii", + "link": "https://www.youtube.com/watch?v=fb3Zl_XyCsw", + "percent": 100, + "enjoyment": 20 + } + ] +} diff --git a/data/dl/SubSonic.json b/data/dl/SubSonic.json new file mode 100644 index 0000000..c769498 --- /dev/null +++ b/data/dl/SubSonic.json @@ -0,0 +1,16 @@ +{ + "id": 33387622, + "name": "SubSonic", + "description": "The 4th official entry of the sonic series, and the hardest one. It was generally considered anticlimactic when it first came out, but nowadays it's gameplay is considered balanced and consistent throughout the entire level. Features an intimidating dual by Jeyzor at the ending.", + "gdleveldescription": "Megacollab by Terron, Gboy, xcy7, Evasium, Dudex, Viprin, Rustam, TheDevon, PanMan, Sumsar & Jeyzor. Verified by Combined.", + "author": "ViPriN", + "creators": ["Rustam ViPriN Terron xcy7 Evasium Dudex Panman Jeyzor GgB0y TheDevon Sumsar"], + "verifier": "Lani", + "verifierEnjoyment": 80, + "verification": "https://youtu.be/QLeCJsuNuWw", + "showcase": "https://youtu.be/QLeCJsuNuWw", + "percentToQualify": 87, + "records": [ + + ] +} diff --git a/data/dl/Sunrise II.json b/data/dl/Sunrise II.json new file mode 100644 index 0000000..b287519 --- /dev/null +++ b/data/dl/Sunrise II.json @@ -0,0 +1,21 @@ +{ + "id": 112319665, + "name": "Sunrise II", + "description": "bad", + "gdleveldescription": "Even if the sun may set, it shall always rise once more. By Me, Visor, SSB0, Crisp, and Salmon. Verified by Cata Guy in 13,187 attempts.", + "author": "SiphonGMD", + "creators": ["SiphonGMD", "ZoxiRSJ", "visor702", "CrispGMD", "SuperSalmon35"], + "verifier": "Gp0", + "verifierEnjoyment": 0, + "verification": "https://www.youtube.com/watch?v=32KOQylTewA", + "showcase": "https://www.youtube.com/watch?v=32KOQylTewA", + "percentToQualify": 63, + "records": [ + { + "user": "Lani", + "link": "https://youtu.be/07M7ZlNzEzY", + "percent": 100, + "enjoyment": 40 + } + ] +} diff --git a/data/dl/Supernova.json b/data/dl/Supernova.json new file mode 100644 index 0000000..d6ab92d --- /dev/null +++ b/data/dl/Supernova.json @@ -0,0 +1,16 @@ +{ + "id": 104895221, + "name": "Supernova", + "description": "Boom large explosion, MeatballMoose ahh memory", + "gdleveldescription": "Homage to 1.9 megacollab structure! [Verified by Zymurin]", + "author": "royen", + "creators": ["qjamie", "Smellbert", "Demented", "silver", "Theorical", "royen"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 77, + "verification": "https://youtu.be/8CM9BYqR-Es?si=2fCr4H2YZjMd-3KJ", + "showcase": "https://youtu.be/8CM9BYqR-Es?si=2fCr4H2YZjMd-3KJ", + "percentToQualify": 61, + "records": [ + + ] +} diff --git a/data/dl/Sweater Weather.json b/data/dl/Sweater Weather.json new file mode 100644 index 0000000..a222e6d --- /dev/null +++ b/data/dl/Sweater Weather.json @@ -0,0 +1,39 @@ +{ + "id": 81148582, + "name": "Sweater Weather", + "description": "easy extreme evil", + "gdleveldescription": "Verified by tundra77; song is in the description of the youtube video. thank you all!", + "author": "VelYT", + "creators": ["VelYT"], + "verifier": "JsTocii", + "verifierEnjoyment": 100, + "verification": "https://www.youtube.com/watch?v=WCan6m-3wM0", + "showcase": "https://www.youtube.com/watch?v=WCan6m-3wM0", + "percentToQualify": 78, + "records": [ + { + "user": "Devy", + "link": "https://youtu.be/Zv41mlt0VYw?si=9l5bOrO7foa0N9nj", + "percent": 100, + "enjoyment": 91 + }, + { + "user": "Zacc", + "link": "https://www.youtube.com/watch?v=WCrdrx5qINo&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=9", + "percent": 100, + "enjoyment": 20 + }, + { + "user": "MeatballMoose", + "link": "https://www.youtube.com/watch?v=ctNdcCUdMgo&feature=youtu.be", + "percent": 100, + "enjoyment": 76 + }, + { + "user": "Lani", + "link": "https://youtu.be/aD1dF--YyfA", + "percent": 100, + "enjoyment": 30 + } + ] +} \ No newline at end of file diff --git a/data/dl/TANTRUM.json b/data/dl/TANTRUM.json new file mode 100644 index 0000000..154102b --- /dev/null +++ b/data/dl/TANTRUM.json @@ -0,0 +1,16 @@ +{ + "id": 61910810, + "name": "TANTRUM", + "description": "this is a meatballslop level again", + "gdleveldescription": "Megacollab with coooooool people. Tried to make a sort of \"starter\" extreme demon that's hopefully enjoyable to play. Good luck.", + "author": "DanZmeN", + "creators": ["DanZmeN", "flash", "BlueRimz", "BitZel", "SpooFy", "ViralDL", "Yendis", "ItzMezzo"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 84, + "verification": "https://www.youtube.com/watch?v=KsSzVcBj-9g", + "showcase": "https://www.youtube.com/watch?v=KsSzVcBj-9g", + "percentToQualify": 76, + "records": [ + + ] +} diff --git a/data/dl/TURN THE LIGHTS OFF.json b/data/dl/TURN THE LIGHTS OFF.json new file mode 100644 index 0000000..6d9c696 --- /dev/null +++ b/data/dl/TURN THE LIGHTS OFF.json @@ -0,0 +1,16 @@ +{ + "id": 94383049, + "name": "TURN THE LIGHTS OFF", + "description": "extremely fun", + "gdleveldescription": "My Magnum Opus. Around 90 Hours in the Editor. Verified by Myntifresh || Nong in description of the verification video!", + "author": "nikoberry", + "creators": ["nikoberry"], + "verifier": "CoolEnder32", + "verifierEnjoyment": 90, + "verification": "https://www.youtube.com/watch?v=TUPQ68FqTQQ", + "showcase": "https://www.youtube.com/watch?v=TUPQ68FqTQQ", + "percentToQualify": 84, + "records": [ + + ] +} diff --git a/data/dl/Tenth Circle.json b/data/dl/Tenth Circle.json new file mode 100644 index 0000000..5ccc302 --- /dev/null +++ b/data/dl/Tenth Circle.json @@ -0,0 +1,16 @@ +{ + "id": 62592746, + "name": "Tenth Circle", + "description": "nine but ten cecil wtf kinda name is cecil", + "gdleveldescription": "Gameplay: First 70% - NormDanchik; last 30% - Me. Decor - DeniPol(me). Verified - Dorami & Blitzer. Istochnik: https://youtu.be/Wl959QnD3lM", + "author": "DeniPol", + "creators": ["DeniPol", "NormDanchik"], + "verifier": "JsTocii", + "verifierEnjoyment": 60, + "verification": "https://www.youtube.com/watch?v=j2nlXi_pvg0", + "showcase": "https://www.youtube.com/watch?v=j2nlXi_pvg0", + "percentToQualify": 69, + "records": [ + + ] +} diff --git a/data/dl/The Cerberus.json b/data/dl/The Cerberus.json new file mode 100644 index 0000000..7688a4c --- /dev/null +++ b/data/dl/The Cerberus.json @@ -0,0 +1,16 @@ +{ + "id": 124724830, + "name": "The Cerberus", + "description": "", + "gdleveldescription": "He awaits for your arrival.. Verified by ZorpikGMD.", + "author": "CombustionTeam", + "creators": ["Lunacii", "Taraco", "Inidevy4732", "Keksienkingi", "ZorpikGMD"], + "verifier": "ZorpikGMD", + "verifierEnjoyment": 50, + "verification": "https://www.youtube.com/watch?v=a6XC2QguN9I", + "showcase": "https://www.youtube.com/watch?v=a6XC2QguN9I", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/The Lost Existence.json b/data/dl/The Lost Existence.json new file mode 100644 index 0000000..bda26f7 --- /dev/null +++ b/data/dl/The Lost Existence.json @@ -0,0 +1,16 @@ +{ + "id": 45239692, + "name": "The Lost Existence", + "description": "fuck you jonathangd", + "gdleveldescription": "#levelution | My first attempt at making a 31k objects level that was made in 2 weeks | Verified by Luqualizer | Fixed 144hz & 240hz bugs!", + "author": "JonathanGD", + "creators": ["JonathanGD"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 40, + "verification": "https://www.youtube.com/watch?v=aObJ7n5dFUM", + "showcase": "https://www.youtube.com/watch?v=aObJ7n5dFUM", + "percentToQualify": 75, + "records": [ + + ] +} diff --git a/data/dl/The Reaper.json b/data/dl/The Reaper.json new file mode 100644 index 0000000..e55716e --- /dev/null +++ b/data/dl/The Reaper.json @@ -0,0 +1,16 @@ +{ + "id": 68894921, + "name": "The Reaper", + "description": "evil demon where zorps clicks didnt record", + "gdleveldescription": "Quod sumus, hoc eritis. Fuimos quandoque, quod estis. Mors certa, hora incerta. Verified by Doggie!", + "author": "Kyhros", + "creators": ["xoanon", "nPyro", "Dirinoc", "iBrah78", "Kyuu", "Vinty", "Zetalock", "Jayy", "AirSavage", "Kakemancool", "NASHII", "BySelling", "Netaren", "Sauzzeth", "CuaeR", "Dilw0nk", "cxli", "Bentai", "Kyhros", "Realvet", "Deadlox", "Doop", "River"], + "verifier": "ZorpikGMD", + "verifierEnjoyment": 95, + "verification": "https://www.youtube.com/watch?v=CyRtC_aG9r8&t=86s", + "showcase": "https://www.youtube.com/watch?v=CyRtC_aG9r8&t=86s", + "percentToQualify": 70, + "records": [ + + ] +} diff --git a/data/dl/The Ultimate Demon.json b/data/dl/The Ultimate Demon.json new file mode 100644 index 0000000..0a21583 --- /dev/null +++ b/data/dl/The Ultimate Demon.json @@ -0,0 +1,21 @@ +{ + "id": 93939369, + "name": "The Ultimate Demon", + "description": "This level is actually pretty fun besides the ship part at 20% and the blind triple spikes in the dual at 11% The waves are pretty hard but consistent once you learn them.", + "gdleveldescription": "hopefully it is fixed now lol", + "author": "vit12", + "creators": ["vit12"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 79, + "verification": "https://youtu.be/R35PAvzAJDQ?si=v-0hyJtmP2VIQtvs", + "showcase": "https://youtu.be/R35PAvzAJDQ?si=v-0hyJtmP2VIQtvs", + "percentToQualify": 47, + "records": [ + { + "user": "Gp0", + "link": "https://www.youtube.com/watch?v=xlPm48_k-tI", + "percent": 100, + "enjoyment": 70 + } + ] +} diff --git a/data/dl/The Ultimate Phase.json b/data/dl/The Ultimate Phase.json new file mode 100644 index 0000000..d58447e --- /dev/null +++ b/data/dl/The Ultimate Phase.json @@ -0,0 +1,16 @@ +{ + "id": 7174110, + "name": "The Ultimate Phase", + "description": "its a level fs", + "gdleveldescription": "Extreme demon megacollab. Published 9th May 2015.", + "author": "Andromeda GMD", + "creators": ["Andromeda GMD", "GuitarHeroStyles", "WOOGI1411", "Findexi", "ViPrin", "Zobros", "ZenthicAlpha", "Loogiah", "Crack", "Cyclic", "Tygrysek", "UserMatt18", "CreepyDash", "MaJackO", "Giron"], + "verifier": "Skellity", + "verifierEnjoyment": 70, + "verification": "https://www.youtube.com/watch?v=u1i3nlZDkXw", + "showcase": "https://www.youtube.com/watch?v=u1i3nlZDkXw", + "percentToQualify": 72, + "records": [ + + ] +} diff --git a/data/dl/Thinking Space.json b/data/dl/Thinking Space.json new file mode 100644 index 0000000..5487b38 --- /dev/null +++ b/data/dl/Thinking Space.json @@ -0,0 +1,27 @@ +{ + "id": 54953085, + "name": "Thinking Space", + "description": "Former Top 1 in John Evil, This is a surprisingly fun early 2.0 level by HidekiX that Nile and Lani beat as a hardest while it was top 1, with Z completing it later. It has a black, white, and gray color scheme with an extremely difficult 67-100 section.", + "gdleveldescription": "An early 2.0 level made by HidekiX, who I can't thank enough for letting me verify. 892 fails past 67% and 75594 attempts. Thanks everyone!", + "author": "Atomic", + "creators": ["HidekiX"], + "verifier": "nile", + "verifierEnjoyment": 89, + "verification": "https://www.youtube.com/watch?v=vIVOxAwzugs", + "showcase": "https://www.youtube.com/watch?v=vIVOxAwzugs", + "percentToQualify": 88, + "records": [ + { + "user": "Lani", + "link": "https://www.youtube.com/watch?v=J7YvjvDKnLE", + "percent": 100, + "enjoyment": 92 + }, + { + "user": "Z", + "link": "https://www.youtube.com/watch?v=1Besc2l50Eg", + "percent": 100, + "enjoyment": 73 + } + ] +} diff --git a/data/dl/Through The Decay.json b/data/dl/Through The Decay.json new file mode 100644 index 0000000..82c32d8 --- /dev/null +++ b/data/dl/Through The Decay.json @@ -0,0 +1,16 @@ +{ + "id": 114933189, + "name": "Through The Decay", + "description": "A slow and peaceful minimalistic level themed around a set of ruins that was impressively built in only 2 hours. Features precision timing gameplay throughout, with lots of corner block jumps.", + "gdleveldescription": "nsane/Extreme demon made in 2 hours. Inspired by Forest Temple and R3XX3R. Not affiliated with The Fog.", + "author": "spark", + "creators": ["spark"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 77, + "verification": "https://www.youtube.com/watch?v=SyKfcYPjkkc", + "showcase": "https://www.youtube.com/watch?v=SyKfcYPjkkc", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Through The Gates.json b/data/dl/Through The Gates.json new file mode 100644 index 0000000..302c983 --- /dev/null +++ b/data/dl/Through The Gates.json @@ -0,0 +1,16 @@ +{ + "id": 49072489, + "name": "Through The Gates", + "description": "(wont add yet since i havent beaten it im just preparing) Current hardest demon beaten in John Evil, with really unbalanced gameplay, charming early 2.1-esque decoration, impossible chokepoints, and the hardest wave ever at 96%. This level took Nile over a month and XX,XXX attempts with XX deaths at the ending. The robot jumps at 64% are very appropriately (totally) labeled as the \"tung tung tung sahur\" jumps.", + "gdleveldescription": "Verified by Exen. Special thanks to Royal, ZSolti49 and SeptaGon7. Hosted by Maestro Illuminati.", + "author": "TeamTheDashers", + "creators": ["Exen", "Kentakiman", "azuri", "Alex200371", "KAWOC", "Tan1c", "Maestro Illuminati"], + "verifier": "nile", + "verifierEnjoyment": 100, + "verification": "https://www.youtube.com/watch?v=vIVOxAwzugs", + "showcase": "https://www.youtube.com/watch?v=vIVOxAwzugs", + "percentToQualify": 81, + "records": [ + + ] +} diff --git a/data/dl/Trans Acu.json b/data/dl/Trans Acu.json new file mode 100644 index 0000000..0409987 --- /dev/null +++ b/data/dl/Trans Acu.json @@ -0,0 +1,16 @@ +{ + "id": 80142751, + "name": "Trans Acu", + "description": "acu", + "gdleveldescription": "trans rights", + "author": "sSOLSTA", + "creators": ["sSOLSTA", "neigefeu"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 89, + "verification": "https://www.youtube.com/watch?v=qn8n4NKXk-s", + "showcase": "https://www.youtube.com/watch?v=qn8n4NKXk-s", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Troll Level.json b/data/dl/Troll Level.json new file mode 100644 index 0000000..200a5a4 --- /dev/null +++ b/data/dl/Troll Level.json @@ -0,0 +1,16 @@ +{ + "id": 76196489, + "name": "Troll Level", + "description": "One of the more popular beginner extremes. Very light-hearted and unconventional in its structuring and colorful decoration style. The gameplay mixes memory gameplay with some precise timings. It also gives the player the freedom of having multiple paths to choose from, especially after the pre-drop.", + "gdleveldescription": "", + "author": "Lexycat", + "creators": ["Glitchy", "Lexycat", "lena"], + "verifier": "Zacc", + "verifierEnjoyment": 20, + "verification": "https://www.youtube.com/watch?v=KLxrcUTUFMw&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=14", + "showcase": "https://www.youtube.com/watch?v=KLxrcUTUFMw&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=14", + "percentToQualify": 62, + "records": [ + + ] +} diff --git a/data/dl/Untitled.json b/data/dl/Untitled.json new file mode 100644 index 0000000..6108769 --- /dev/null +++ b/data/dl/Untitled.json @@ -0,0 +1,16 @@ +{ + "id": 68731559, + "name": "Untitled", + "description": "I really enjoyed that wave part!", + "gdleveldescription": "We never had a good plan from the start. Updated: Optimization and bugfixes, few balance changes. GP by Convie, Verified by Sebatronic", + "author": "iiLuna", + "creators": ["Convie", "KrazyGFX", "Zetalock", "MadisonYuko", "Zuku", "iiLuna"], + "verifier": "Zacc", + "verifierEnjoyment": 90, + "verification": "https://www.youtube.com/watch?v=nz3vNdFSxOo&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=5", + "showcase": "https://www.youtube.com/watch?v=nz3vNdFSxOo&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=5", + "percentToQualify": 62, + "records": [ + + ] +} diff --git a/data/dl/Wasureta.json b/data/dl/Wasureta.json new file mode 100644 index 0000000..9c3459d --- /dev/null +++ b/data/dl/Wasureta.json @@ -0,0 +1,16 @@ +{ + "id": 64658786, + "name": "Wasureta", + "description": "A purple \"reta-styled\" level recognisable for its flow gameplay style, difficult wave sections and extremely high-CPS click patterns. Its emphasis on muscle memory has made it relatively accessible for its difficulty and hence its popularity among extreme demon players.", + "gdleveldescription": "Forgotten. Gameplay by Crazen. Decorated by Lime, Deadlox, Helpegasus, Augi, Isane, XLSpiral, and El3ctr0. Endscreen by Splash & Belonzik.", + "author": "Helpegasus", + "creators": ["XLSpiral", "Helpegasus", "Deadlox", "augi", "Isane", "BelonziK", "El3ctr0", "LimeTime313", "REDACTED", "Splash"], + "verifier": "Zacc", + "verifierEnjoyment": 100, + "verification": "https://www.youtube.com/watch?v=6akpXs4DraU&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=12", + "showcase": "https://www.youtube.com/watch?v=6akpXs4DraU&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=12", + "percentToQualify": 80, + "records": [ + + ] +} diff --git a/data/dl/Wavebreaker.json b/data/dl/Wavebreaker.json new file mode 100644 index 0000000..32f3230 --- /dev/null +++ b/data/dl/Wavebreaker.json @@ -0,0 +1,16 @@ +{ + "id": 56779294, + "name": "Wavebreaker", + "description": "Old collab level with a lot of familiar faces such as Dorami, Danzmen, and our most popular, Chlorines. Overall its a pretty fun, fast paced level, with a hard predrop.", + "gdleveldescription": "My colourful extreme demon megacollab - Pass is 040400 Verified by Golden", + "author": "Lemons", + "creators": ["Lemons", "DanZmeN", "Chlorines", "Bransilver", "AngryBoy0644", "Osiris GD", "MarEng", "QuacDuc", "MrKoolTrix", "Dorami"], + "verifier": "ZorpikGMD", + "verifierEnjoyment": 100, + "verification": "https://www.youtube.com/watch?v=eYhKxzvRZ2I&list=PL9AW0Ozca0b6iNQZHwFyhT1_Ai6fL7cuv&index=6", + "showcase": "https://www.youtube.com/watch?v=eYhKxzvRZ2I&list=PL9AW0Ozca0b6iNQZHwFyhT1_Ai6fL7cuv&index=6", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Wavetapper.json b/data/dl/Wavetapper.json new file mode 100644 index 0000000..c158bc6 --- /dev/null +++ b/data/dl/Wavetapper.json @@ -0,0 +1,16 @@ +{ + "id": 119536713, + "name": "Wavetapper", + "description": "", + "gdleveldescription": "tap to the waves", + "author": "CaramelT", + "creators": ["CaramelT"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 70, + "verification": "https://www.youtube.com/watch?v=aTeEkPNA4Uk", + "showcase": "https://www.youtube.com/watch?v=aTeEkPNA4Uk", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Whatsapp Acu.json b/data/dl/Whatsapp Acu.json new file mode 100644 index 0000000..76f243a --- /dev/null +++ b/data/dl/Whatsapp Acu.json @@ -0,0 +1,16 @@ +{ + "id": 117923823, + "name": "Whatsapp Acu", + "description": "An extended remake of the 30 second long \"Segmentation Fault.\" A highly unique extreme using only the cube gamemode but in unusual and gimmicky ways. This includes a maximum click section and many parts where an orb is taped to your cube. The strange gameplay is accompanied by appropriately unusual effects.", + "gdleveldescription": "skibidi", + "author": "Sebaviera", + "creators": ["Sebaviera", "neigefeu"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 90, + "verification": "https://www.youtube.com/watch?v=71utQGBAqRk", + "showcase": "https://www.youtube.com/watch?v=71utQGBAqRk", + "percentToQualify": 75, + "records": [ + + ] +} diff --git a/data/dl/White Album (Old).json b/data/dl/White Album (Old).json new file mode 100644 index 0000000..b2052f0 --- /dev/null +++ b/data/dl/White Album (Old).json @@ -0,0 +1,16 @@ +{ + "id": 134746367, + "name": "White Album (Old)", + "description": "fat", + "gdleveldescription": "\"first fully solo level\"", + "author": "ExtremeDemonIn", + "creators": ["JAVP"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 49, + "verification": "https://www.youtube.com/watch?v=RkbxTZPjISU", + "showcase": "https://www.youtube.com/watch?v=RkbxTZPjISU", + "percentToQualify": 75, + "records": [ + + ] +} diff --git a/data/dl/Without U.json b/data/dl/Without U.json new file mode 100644 index 0000000..77df753 --- /dev/null +++ b/data/dl/Without U.json @@ -0,0 +1,16 @@ +{ + "id": 119259720, + "name": "Without U", + "description": "Extremely high-quality extreme demon that is very well-received. Contains intense and overall complex gameplay which makes it learny, especially the dual segments. Also features a gimmick nearing the end where eight heart shards must be collected in order to complete the level.", + "gdleveldescription": "Always in a nightmare.", + "author": "NoobyPro27", + "creators": ["NoobyPro27", "Kodex360", "ExIIImE", "Xenith", "AirSavage", "stcubing", "Dom89", "QWENNUNNEE", "ClingingBog", "Sruj98", "Cdpre", "Xolarzz", "ewop", "Nau", "Kivixi", "Gooseam", "wigglebutt", "tenzk", "harent"], + "verifier": "Sparkle", + "verifierEnjoyment": 60, + "verification": "https://youtu.be/Bj-dVisG0DM?is=RnXT98OrjZbaOp3r", + "showcase": "https://youtu.be/Bj-dVisG0DM?is=RnXT98OrjZbaOp3r", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/Yatagarasu.json b/data/dl/Yatagarasu.json new file mode 100644 index 0000000..f976ec6 --- /dev/null +++ b/data/dl/Yatagarasu.json @@ -0,0 +1,21 @@ +{ + "id": 28220417, + "name": "Yatagarasu", + "description": "2.0 demon that is part of the rgb trilogy", + "gdleveldescription": "Update made by Mark Napkin and DragoonGD", + "author": "TrusTa", + "creators": ["Giron", "ViPriN", "lmanubis", "Jeyzor", "WOOGI1411", "Findexi", "Rek3dge", "weoweoteo", "Anthrax", "AbstractDark", "Aeidux", "Vermillion", "Zelda", "Michigun", "Luneth", "Hinds", "Evasium", "Csx42gaming", "Funnygame", "Riot", "xcy7", "Loogiah"], + "verifier": "Lani", + "verifierEnjoyment": 80, + "verification": "https://youtu.be/qPMbzlydh_o?si=NmTsbMrbes7fjzcS", + "showcase": "https://youtu.be/qPMbzlydh_o?si=NmTsbMrbes7fjzcS", + "percentToQualify": 76, + "records": [ + { + "user": "JsTocii", + "link": "https://www.youtube.com/watch?v=s3G71Tib18g", + "percent": 100, + "enjoyment": 80 + } + ] +} diff --git a/data/dl/Zodiac.json b/data/dl/Zodiac.json new file mode 100644 index 0000000..753afe0 --- /dev/null +++ b/data/dl/Zodiac.json @@ -0,0 +1,16 @@ +{ + "id": 52374843, + "name": "Zodiac", + "description": "Legendary former top 1 that was hack verified by xander556 before being verified legitimately by Technical. Features a classic Creo song, bright but simplistic visuals, and infamous chokepoints.", + "gdleveldescription": "Extreme Demon Megacollab made by 20 amazing creators! Hosted by Bianox. Verified by me in 61375 attempts.", + "author": "BIANOX", + "creators": ["Osiris GD", "YakobNugget", "TMNGaming", "Pennutoh", "Juhou", "Rustam", "LeoCreatorX", "Enlex", "JoeyPlays", "Onnikonna", "Aquatias", "Shocksidian", "SlimJim", "Dudex", "RicoLP", "BIANOX", "DreamEater", "Marwec", "TehTactiq", "Eggnog", "Samifying", "Uneskladovae"], + "verifier": "Lani", + "verifierEnjoyment": 20, + "verification": "https://youtu.be/q6jEPDKNxJc?si=SN6CEZgbiPCdE-NH", + "showcase": "https://youtu.be/q6jEPDKNxJc?si=SN6CEZgbiPCdE-NH", + "percentToQualify": 80, + "records": [ + + ] +} diff --git a/data/dl/Zoooooooooooooooooom.json b/data/dl/Zoooooooooooooooooom.json new file mode 100644 index 0000000..9c47e8a --- /dev/null +++ b/data/dl/Zoooooooooooooooooom.json @@ -0,0 +1,16 @@ +{ + "id": 95228237, + "name": "Zoooooooooooooooooom", + "description": "Zoooooooooooooooooom", + "gdleveldescription": "A high speed journey through my creating achievements / Hope you can click fast enough :) / Verified by Rqd", + "author": "awesomeme360", + "creators": ["awesomeme360"], + "verifier": "JsTocii", + "verifierEnjoyment": 75, + "verification": "https://www.youtube.com/watch?v=zHk2lsByXWI", + "showcase": "https://www.youtube.com/watch?v=zHk2lsByXWI", + "percentToQualify": 77, + "records": [ + + ] +} diff --git a/data/dl/_list.json b/data/dl/_list.json new file mode 100644 index 0000000..02cebca --- /dev/null +++ b/data/dl/_list.json @@ -0,0 +1,145 @@ +[ + "Zodiac", + "Cold Sweat", + "Thinking Space", + "Crimson Planet", + "Bloodlust", + "Nhelv", + "Jesse Pinkman", + "Gracefully", + "Knights of Thunder", + "Arctic Lights", + "Plasma Pulse Finale", + "Wasureta", + "Sonic Wave", + "Yatagarasu", + "Kuzureta", + "Shmarley Ville", + "xo", + "Molten Core", + "GONER", + "The Reaper", + "Chromatic Haze", + "Digital Descent", + "Stalemate Redux", + "Delta Interface", + "Artificial Ascent", + "TURN THE LIGHTS OFF", + "Black Flag", + "Quantum Processing", + "Black Blizzard", + "Danklocked", + "Berserk", + "Auditory Breaker", + "Hyper Paradox", + "SubSonic", + "Athanatos", + "RASH", + "Blade of Justice", + "Silentium Gradas", + "Sakupen Hell", + "Battle of the Shades", + "Tenth Circle", + "Sandstorm", + "Carcano", + "Untitled", + "Molten Mercury", + "Ruler of Everything", + "gravity", + "Gates of the Gods", + "Bloodbath", + "moment", + "Down Bass", + "The Cerberus", + "Prismatic Haze", + "Conical Depression", + "Solar Revolution", + "aftermath", + "Overtime", + "Karma", + "Sigma Interface", + "Wavebreaker", + "Annihilation Nation", + "Cat Planet", + "SHATTER", + "Plasma Pulse III", + "BROWNOIX", + "Redemption Arc", + "In Circles", + "Glide", + "Heartbeat", + "sarthix", + "1330X", + "Shitty Sakupen Circles", + "Another Phase", + "Shukufuku", + "Hurricane", + "Fexty", + "The Ultimate Phase", + "wtf", + "Broken Signal", + "reverence", + "Sunrise II", + "Napalm", + "rotting body", + "Awakening Horus", + "Retention", + "Falling Up", + "Zoooooooooooooooooom", + "Red World Rebirth", + "Crowd Control", + "Allegiance", + "Shitty Sink", + "HyperSonic", + "AcropoliX", + "The Ultimate Demon", + "Hidden in the Sand", + "Disruption", + "Realtered", + "Clarity", + "Shitty Aeternus", + "it back", + "8o X", + "Forbidden Isle", + "The Lost Existence", + "geography dash (Old)", + "Restricted Sector", + "Cataclysm", + "Komodo", + "Goober Land", + "Proteus", + "azurite", + "TANTRUM", + "Mystic Bounds", + "Mizureta", + "Misty Mountains", + "niwa", + "Without U", + "Prismatic", + "Supernova", + "Troll Level", + "White Album (Old)", + "the super hotdog", + "ANNIHILATED", + "SIGSEGV", + "Sweater Weather", + "Whatsapp Acu", + "Trans Acu", + "Acu", + "Shitty Beztana Vortex", + "Through The Decay", + "Mary On A Cross", + "Precipitance", + "Wavetapper", + "Poltergeist x3", + "PSYCHOSOCIAL", + "Gay Cataclysm", + "Red World", + "Shitty Thinking Space II", + "Frame Of Mind", + "Find Me", + "Free Vbucks EXE", + "Gaper Bonezoid", + "937", + "Sodium Nitrate" +] diff --git a/data/dl/_packlist.json b/data/dl/_packlist.json new file mode 100644 index 0000000..657fd90 --- /dev/null +++ b/data/dl/_packlist.json @@ -0,0 +1,77 @@ +[ + { + "name": "Apocalyptic Trilogy", + "levels": ["Bloodbath", "aftermath", "Cataclysm"], + "colour": "linear-gradient(to right, #f4d002, #f49702)" + }, + { + "name": "OMDL/TGDL Pack", + "levels": ["Sandstorm", "Solar Revolution", "Sunrise II"], + "colour": "linear-gradient(to right, #f4d002, #f49702)" + }, + { + "name": "Formerly Impossible Pack 1", + "levels": ["Thinking Space", "Sonic Wave", "Sakupen Hell", "Battle of the Shades"], + "colour": "linear-gradient(to right, #f4d002, #f49702)" + }, + { + "name": "Formerly Impossible Pack 2", + "levels": ["Fexty", "Cataclysm", "Red World"], + "colour": "linear-gradient(to right, #f4d002, #f49702)" + }, + { + "name": "Hell Pack 1", + "levels": ["Red World", "Cataclysm", "Red World Rebirth", "aftermath"], + "colour": "linear-gradient(to right, #f4d002, #f49702)" + }, + { + "name": "Hell Pack 2", + "levels": ["The Cerberus", "Bloodbath", "Sakupen Hell", "Athanatos"], + "colour": "linear-gradient(to right, #f4d002, #f49702)" + }, + { + "name": "Hell Pack 3", + "levels": ["Yatagarasu", "Bloodlust", "Crimson Planet"], + "colour": "linear-gradient(to right, #f4d002, #f49702)" + }, + { + "name": "Combustion Pack", + "levels": ["The Cerberus", "Restricted Sector"], + "colour": "linear-gradient(to right, #f4d002, #f49702)" + }, + { + "name": "Shitty Pack", + "levels": ["Shitty Sakupen Circles", "Shitty Sink", "Shitty Aeternus", "Shitty Beztana Vortex", "Shitty Thinking Space II"], + "colour": "linear-gradient(to right, #f4d002, #f49702)" + }, + { + "name": "Level Variations Pack", + "levels": ["Whatsapp Acu", "Trans Acu", "Gay Cataclysm"], + "colour": "linear-gradient(to right, #f4d002, #f49702)" + }, + { + "name": "Meatballslop Pack", + "levels": ["Poltergeist x3", "Frame Of Mind", "Find Me", "Mary On A Cross", "Wavetapper"], + "colour": "linear-gradient(to right, #f4d002, #f49702)" + }, + { + "name": "Sonic Wave Pack", + "levels": ["Sonic Wave", "Auditory Breaker"], + "colour": "linear-gradient(to right, #f4d002, #f49702)" + }, + { + "name": "Technology Pack", + "levels": ["Artificial Ascent", "Digital Descent"], + "colour": "linear-gradient(to right, #f4d002, #f49702)" + }, + { + "name": "KrmaL Pack", + "levels": ["xo", "Black Blizzard", "Conical Depression", "Heartbeat", "Falling Up"], + "colour": "linear-gradient(to right, #f4d002, #f49702)" + }, + { + "name": "Wasureta Pack", + "levels": ["Kuzureta", "Mizureta", "niwa"], + "colour": "linear-gradient(to right, #f4d002, #f49702)" + } +] diff --git a/data/dl/aftermath.json b/data/dl/aftermath.json new file mode 100644 index 0000000..cf10eb9 --- /dev/null +++ b/data/dl/aftermath.json @@ -0,0 +1,33 @@ +{ + "id": 25610878, + "name": "aftermath", + "description": "The underwhelming and bad finale of the Apocalyptic Trilogy.", + "gdleveldescription": "Who will survive the last part of the triology? Verified by DaMeister, originally verified by Gonchus", + "author": "Exenity", + "creators": ["knobbelboy", "Exenity", "Squizz", "Hinds", "Vultra", "Rhythmic", "Waze", "Bassiegames", "Findexi"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 76, + "verification": "https://www.youtube.com/watch?v=OLr7sxXZO10?si=t1NK_KUCnpg9GFjZ", + "showcase": "https://www.youtube.com/watch?v=OLr7sxXZO10?si=t1NK_KUCnpg9GFjZ", + "percentToQualify": 56, + "records": [ + { + "user": "nile", + "link": "https://www.youtube.com/watch?v=7MI_i1k-Xmw", + "percent": 100, + "enjoyment": 65 + }, + { + "user": "Curta", + "link": "https://www.youtube.com/watch?v=2pJYQMDcTmU", + "percent": 100, + "enjoyment": 0 + }, + { + "user": "Lani", + "link": "https://youtu.be/igVFjoVl5HY", + "percent": 100, + "enjoyment": 90 + } + ] +} diff --git a/data/dl/azurite.json b/data/dl/azurite.json new file mode 100644 index 0000000..0467169 --- /dev/null +++ b/data/dl/azurite.json @@ -0,0 +1,39 @@ +{ + "id": 62214792, + "name": "Azurite", + "description": "1.9 type level thats easy", + "gdleveldescription": "Extreme/insane demon, one of my last pure design lvls for a long time.", + "author": "Sillow", + "creators": ["Sillow"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 65, + "verification": "https://www.youtube.com/watch?v=v_qBNOye4DA", + "showcase": "https://www.youtube.com/watch?v=v_qBNOye4DA", + "percentToQualify": 75, + "records": [ + { + "user": "JsTocii", + "link": "https://www.youtube.com/watch?v=c1GvPLHhXEo", + "percent": 100, + "enjoyment": 65 + }, + { + "user": "Devy", + "link": "https://youtu.be/YPg5be3lf9U?si=LIG86ZC0eimV7su6", + "percent": 100, + "enjoyment": 82 + }, + { + "user": "Zacc", + "link": "https://www.youtube.com/watch?v=MW3J-yS21i0&list=PL-MiLuGI2zurSescQmzcmH7nG7HvhmQ_D&index=8", + "percent": 100, + "enjoyment": 90 + }, + { + "user": "Z", + "link": "https://www.youtube.com/watch?v=jHRmcGxSsk4", + "percent": 100, + "enjoyment": 30 + } + ] +} diff --git a/data/dl/geography dash (Old).json b/data/dl/geography dash (Old).json new file mode 100644 index 0000000..07b591d --- /dev/null +++ b/data/dl/geography dash (Old).json @@ -0,0 +1,16 @@ +{ + "id": 131657327, + "name": "geography dash (Old)", + "description": "A geography themed level where you travel the worlde", + "gdleveldescription": "i hope this is the old version", + "author": "DDLGHL", + "creators": ["MWZN"], + "verifier": "MeatballMoose", + "verifierEnjoyment": 12, + "verification": "https://www.youtube.com/watch?v=l0MouLLfOZ4", + "showcase": "https://www.youtube.com/watch?v=l0MouLLfOZ4", + "percentToQualify": 75, + "records": [ + + ] +} diff --git a/data/dl/gravity.json b/data/dl/gravity.json new file mode 100644 index 0000000..01cb66d --- /dev/null +++ b/data/dl/gravity.json @@ -0,0 +1,16 @@ +{ + "id": 77008332, + "name": "gravity", + "description": "zud demon sequel", + "gdleveldescription": "Moment sequel. <3", + "author": "Kaza", + "creators": ["Kaza"], + "verifier": "JsTocii", + "verifierEnjoyment": 100, + "verification": "https://www.youtube.com/watch?v=g_JKm2saaQI", + "showcase": "https://www.youtube.com/watch?v=g_JKm2saaQI", + "percentToQualify": 72, + "records": [ + + ] +} diff --git a/data/dl/it back.json b/data/dl/it back.json new file mode 100644 index 0000000..f888090 --- /dev/null +++ b/data/dl/it back.json @@ -0,0 +1,16 @@ +{ + "id": 81744548, + "name": "it back", + "description": "it back is cool", + "gdleveldescription": "the skeleton appears", + "author": "HangyKing", + "creators": ["HangyKing"], + "verifier": "JsTocii", + "verifierEnjoyment": 85, + "verification": "https://www.youtube.com/watch?v=-CBwRQmcDGg", + "showcase": "https://www.youtube.com/watch?v=-CBwRQmcDGg", + "percentToQualify": 81, + "records": [ + + ] +} diff --git a/data/dl/moment.json b/data/dl/moment.json new file mode 100644 index 0000000..75ec3fc --- /dev/null +++ b/data/dl/moment.json @@ -0,0 +1,21 @@ +{ + "id": 68848817, + "name": "moment", + "description": "Highly popular and well received flowy extreme with a simplistic yet pleasing design. Very chokeable, particularly in the wave sections. Features an immediate ship click at the start.", + "gdleveldescription": "Enjoy this extreme demon, this was a load of fun to make :)", + "author": "lexycat", + "creators": ["Lexycat", "icedcave", "Stormfly"], + "verifier": "JsTocii", + "verifierEnjoyment": 100, + "verification": "https://www.youtube.com/watch?v=vS87CphQyj8", + "showcase": "https://www.youtube.com/watch?v=vS87CphQyj8", + "percentToQualify": 74, + "records": [ + { + "user": "Devy", + "link": "https://youtu.be/KF1_SnW-7vg?si=KRbqTp15iDVULaVr", + "percent": 100, + "enjoyment": 90 + } + ] +} diff --git a/data/dl/niwa.json b/data/dl/niwa.json new file mode 100644 index 0000000..6710fba --- /dev/null +++ b/data/dl/niwa.json @@ -0,0 +1,40 @@ +{ + "id": 87425029, + "name": "niwa", + "description": "click sync entry extreme", + "gdleveldescription": "niwa 1.1 - kuzureta revamp - verified by nicor77", + "author": "Teno", + "creators": ["Teno", "Mrgm", "ar12", "Titoalper", "KrazyGFX", "BeClan", "Asuith", "Pedro", "Blaze", "Genoxide", "peng"], + "verifier": "JsTocii", + "verifierEnjoyment": 100, + "verification": "https://www.youtube.com/watch?v=lm7K-ARGGxM", + "showcase": "https://www.youtube.com/watch?v=lm7K-ARGGxM", + "percentToQualify": 72, + "records": [ + { + "user": "MeatballMoose", + "link": "https://www.youtube.com/watch?v=3X7CSp3xaYE", + "percent": 100, + "enjoyment": 92 + }, + { + "user": "Devy", + "link": "https://youtu.be/sLTdi7_vddg?si=mHyG-DLEOZfk7H0a", + "percent": 100, + "enjoyment": 40 + }, + { + "user": "Lani", + "link": "https://youtu.be/lv-O3a6M8wY", + "percent": 100, + "enjoyment": 50 + }, + { + "user": "Sparkle", + "link": "https://youtu.be/_Nvc9qE0wUE", + "percent": 100, + "enjoyment": 95 + } + + ] +} diff --git a/data/dl/reverence.json b/data/dl/reverence.json new file mode 100644 index 0000000..6fdafac --- /dev/null +++ b/data/dl/reverence.json @@ -0,0 +1,16 @@ +{ + "id": 63433024, + "name": "reverence", + "description": "fluke from 66 cray cray", + "gdleveldescription": "", + "author": "Woom", + "creators": ["Cybertron", "Eots", "Toastedlord", "Expy", "Enzore", "MrClyde", "BySelling", "Lipz", "Elegy", "BlasterRobotz", "victorinoxX", "Woom", "ViralDL", "Hyperblastz", "Naimnaro"], + "verifier": "lunacii", + "verifierEnjoyment": 87, + "verification": "https://youtu.be/6oNk4yVNW3g?si=mbcPziGQL2ZBh82n", + "showcase": "https://youtu.be/6oNk4yVNW3g?si=mbcPziGQL2ZBh82n", + "percentToQualify": 80, + "records": [ + + ] +} diff --git a/data/dl/rotting body.json b/data/dl/rotting body.json new file mode 100644 index 0000000..ef6e275 --- /dev/null +++ b/data/dl/rotting body.json @@ -0,0 +1,16 @@ +{ + "id": 99723258, + "name": "rotting body", + "description": "", + "gdleveldescription": "DON'T YOU LOVE MOLD ? -Verified by JesseGamingGD- (reupload cuz percentage bug)", + "author": "CLAEMONx", + "creators": ["CLAEMONx"], + "verifier": "Lani", + "verifierEnjoyment": 90, + "verification": "https://youtu.be/UpDEhYql4HY", + "showcase": "https://youtu.be/UpDEhYql4HY", + "percentToQualify": 63, + "records": [ + + ] +} diff --git a/data/dl/sarthix.json b/data/dl/sarthix.json new file mode 100644 index 0000000..b85c448 --- /dev/null +++ b/data/dl/sarthix.json @@ -0,0 +1,16 @@ +{ + "id": 75232616, + "name": "sarthix", + "description": "big stein v2", + "gdleveldescription": "Nong Download: https://bit.ly/3bFESup | Song: Madeon - Mania | Verified by Spectre | Balance Update", + "author": "Zeptrus", + "creators": ["Zeptrus"], + "verifier": "JsTocii", + "verifierEnjoyment": 100, + "verification": "https://www.youtube.com/watch?v=MU2KwZaMiaI", + "showcase": "https://www.youtube.com/watch?v=MU2KwZaMiaI", + "percentToQualify": 67, + "records": [ + + ] +} diff --git a/data/dl/the super hotdog.json b/data/dl/the super hotdog.json new file mode 100644 index 0000000..2c34c13 --- /dev/null +++ b/data/dl/the super hotdog.json @@ -0,0 +1,21 @@ +{ + "id": 109730342, + "name": "the super hotdog", + "description": "A short and extremely silly rainbow level inspired by The Wiener. Features a hard first cube, clicksync gameplay, heavy shader and camera trigger usage, an incomprehensible spam dual, and of course the super hotdog itself. Do not take aredl placements as fact...", + "gdleveldescription": "Hi! Ya Hungry? Ripoff of the wiener", + "author": "AWESOMEME360", + "creators": ["AWESOMEME360"], + "verifier": "Kaiyote", + "verifierEnjoyment": 90, + "verification": "https://www.youtube.com/watch?v=-mqsxxcj1OE", + "showcase": "https://www.youtube.com/watch?v=-mqsxxcj1OE", + "percentToQualify": 63, + "records": [ + { + "user": "MeatballMoose", + "link": "https://www.youtube.com/watch?v=MZYHyWLOnbs", + "percent": 100, + "enjoyment": 1 + } + ] +} diff --git a/data/dl/wtf.json b/data/dl/wtf.json new file mode 100644 index 0000000..d8c35d8 --- /dev/null +++ b/data/dl/wtf.json @@ -0,0 +1,16 @@ +{ + "id": 93570042, + "name": "wtf", + "description": "one of the worst extreme demons.", + "gdleveldescription": "Epilepsy warnings", + "author": "alysushi", + "creators": ["alysushi"], + "verifier": "Curta", + "verifierEnjoyment": 30, + "verification": "https://www.youtube.com/watch?v=yUlozjC_bCY", + "showcase": "https://www.youtube.com/watch?v=yUlozjC_bCY", + "percentToQualify": 72, + "records": [ + + ] +} diff --git a/data/dl/xo.json b/data/dl/xo.json new file mode 100644 index 0000000..2792a95 --- /dev/null +++ b/data/dl/xo.json @@ -0,0 +1,21 @@ +{ + "id": 58825144, + "name": "xo", + "description": "Don't die at 99% please", + "gdleveldescription": "stream vertigo", + "author": "krmal", + "creators": ["krmal"], + "verifier": "JsTocii", + "verifierEnjoyment": 70, + "verification": "https://www.youtube.com/watch?v=RbF4cnJ0oQk", + "showcase": "https://www.youtube.com/watch?v=RbF4cnJ0oQk", + "percentToQualify": 62, + "records": [ + { + "user": "MeatballMoose", + "link": "https://youtu.be/kvY_aBAdtSI?si=rNYw-zD1_17oAlVH", + "percent": 100, + "enjoyment": 78 + } + ] +} diff --git a/data/ill/AETERNAL.json b/data/ill/AETERNAL.json new file mode 100644 index 0000000..8a7b5d8 --- /dev/null +++ b/data/ill/AETERNAL.json @@ -0,0 +1,28 @@ +{ + "id": 135506440, + "name": "AETERNAL", + "description": "evil demon by guhpoh", + "gdleveldescription": "I was bored one day and decided to make an Aeternus style layout", + "author": "Gp0", + "creators": ["Gp0"], + "verifier": "spaceuk", + "verifierEnjoyment": 0, + "verification": "https://www.youtube.com/watch?v=Y26jVo4OjKs", + "showcase": "https://www.youtube.com/watch?v=Y26jVo4OjKs", + "percentToQualify": 0, + "records": [ + { + "user": "Gp0", + "link": "https://www.youtube.com/watch?v=700kRMA30lI", + "enjoyment": 50, + "percent": 18 + }, + { + "user": "CoolEnder32", + "link": "https://www.youtube.com/watch?v=tgDsY5KfCNA", + "enjoyment": 90, + "percent": 17 + } + ] +} + diff --git a/data/ill/NILE NEVER CLEAR.json b/data/ill/NILE NEVER CLEAR.json new file mode 100644 index 0000000..4986616 --- /dev/null +++ b/data/ill/NILE NEVER CLEAR.json @@ -0,0 +1,17 @@ +{ + "id": 131803278, + "name": "NILE NEVER CLEAR", + "description": "evil demon - nile", + "gdleveldescription": "can you clear my map??", + "author": "nile", + "creators": ["nile"], + "verifier": "spaceuk", + "verifierEnjoyment": 0, + "verification": "https://www.youtube.com/watch?v=z1Zee2OeWfk", + "showcase": "https://www.youtube.com/watch?v=z1Zee2OeWfk", + "percentToQualify": 0, + "records": [ + + ] +} + diff --git a/data/ill/OneMoreAttempt.json b/data/ill/OneMoreAttempt.json new file mode 100644 index 0000000..4091038 --- /dev/null +++ b/data/ill/OneMoreAttempt.json @@ -0,0 +1,22 @@ +{ + "id": 131249343, + "name": "OneMoreAttempt", + "description": "Extremely long collab with 31 songs and 96 minutes of length. Longest GD collab to date. Made by 200 contributors over the span of 2 years.", + "gdleveldescription": "After nearly 2 years and 200 contributors this is a 96 minute ultracollab with 31 songs full of unique gameplay.", + "author": "Bennoct", + "creators": ["Bennoct", "And ALOT more"], + "verifier": "spaceuk", + "verifierEnjoyment": 0, + "verification": "https://www.youtube.com/watch?v=YG-kBQMDuiw", + "showcase": "https://www.youtube.com/watch?v=YG-kBQMDuiw", + "percentToQualify": 0, + "records": [ + { + "user": "CoolEnder32", + "link": "https://www.youtube.com/watch?v=3ho5wI9spVw", + "enjoyment": 60, + "percent": 7 + } + ] +} + diff --git a/data/ill/_list.json b/data/ill/_list.json new file mode 100644 index 0000000..0ec382b --- /dev/null +++ b/data/ill/_list.json @@ -0,0 +1,5 @@ +[ + "NILE NEVER CLEAR", + "OneMoreAttempt", + "AETERNAL" +] diff --git a/data/ill/_packlist.json b/data/ill/_packlist.json new file mode 100644 index 0000000..f3b92a3 --- /dev/null +++ b/data/ill/_packlist.json @@ -0,0 +1,7 @@ +[ + { + "name": "Nile Pack", + "levels": ["NILE NEVER CLEAR"], + "colour": "linear-gradient(to right, #f4d002, #f49702)" + } +] diff --git a/data/pl/NIGHT RUNNER.json b/data/pl/NIGHT RUNNER.json new file mode 100644 index 0000000..c835c5e --- /dev/null +++ b/data/pl/NIGHT RUNNER.json @@ -0,0 +1,17 @@ +{ + "id": 111386868, + "name": "NIGHT RUNNER", + "description": "gp0 ahh level", + "gdleveldescription": "No room for error. | Verification video is on my YouTube channel", + "author": "newSakePlayS", + "creators": ["newSakePlayS"], + "verifier": "Gp0", + "verifierEnjoyment": 80, + "verification": "https://www.youtube.com/watch?v=9b1X_osd3QM", + "showcase": "https://www.youtube.com/watch?v=9b1X_osd3QM", + "percentToQualify": 100, + "records": [ + + ] +} + diff --git a/data/pl/SUMMER.json b/data/pl/SUMMER.json new file mode 100644 index 0000000..d75dd83 --- /dev/null +++ b/data/pl/SUMMER.json @@ -0,0 +1,22 @@ +{ + "id": 122287167, + "name": "SUMMER", + "description": "Fast paced click sync auto scroller, prequel to NOTHING LEFT", + "gdleveldescription": "It was so good back then.... | Extreme Demon Autoscroller", + "author": "GHHH", + "creators": ["GHHH"], + "verifier": "GHHH", + "verifierEnjoyment": 100, + "verification": "https://drive.google.com/file/d/1vjx71K3EZ4AjovKN4AiHseFTVDIkgumb/view", + "showcase": "https://www.youtube.com/watch?v=4zxEh7ZQe_g", + "percentToQualify": 100, + "records": [ + { + "user": "Gp0", + "link": "https://www.youtube.com/watch?v=n70cnukD6AA", + "percent": 100, + "enjoyment": 90 + } + ] +} + diff --git a/data/pl/Toxic Tunnels.json b/data/pl/Toxic Tunnels.json new file mode 100644 index 0000000..e0444e0 --- /dev/null +++ b/data/pl/Toxic Tunnels.json @@ -0,0 +1,17 @@ +{ + "id": 124249565, + "name": "Toxic Tunnels", + "description": "How Toxic.", + "gdleveldescription": "Verified in 2707 attempts. My first try at an Extreme Autoscroller", + "author": "Gp0", + "creators": ["Gp0"], + "verifier": "Gp0", + "verifierEnjoyment": 75, + "verification": "https://youtu.be/nE1MCem95ww", + "showcase": "https://youtu.be/nE1MCem95ww", + "percentToQualify": 100, + "records": [ + + ] +} + diff --git a/data/pl/_list.json b/data/pl/_list.json new file mode 100644 index 0000000..6f357c3 --- /dev/null +++ b/data/pl/_list.json @@ -0,0 +1,5 @@ +[ + "NIGHT RUNNER", + "SUMMER", + "Toxic Tunnels" +] diff --git a/data/pl/_packlist.json b/data/pl/_packlist.json new file mode 100644 index 0000000..0d4f101 --- /dev/null +++ b/data/pl/_packlist.json @@ -0,0 +1,2 @@ +[ +] diff --git a/guhguhguh.png b/guhguhguh.png new file mode 100644 index 0000000..e92e229 Binary files /dev/null and b/guhguhguh.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..d24a891 --- /dev/null +++ b/index.html @@ -0,0 +1,112 @@ + + + +
+ + + +
+
+ Loading...
`, +}; diff --git a/js/components/beta.md b/js/components/beta.md new file mode 100644 index 0000000..a4ba8d8 --- /dev/null +++ b/js/components/beta.md @@ -0,0 +1 @@ +Genesud diff --git a/js/content.js b/js/content.js new file mode 100644 index 0000000..267bdb6 --- /dev/null +++ b/js/content.js @@ -0,0 +1,251 @@ +import { round, score } from './score.js'; +import { resetList } from './pages/List.js'; +import { resetLeaderboard } from './pages/Leaderboard.js'; +import { resetPacks } from './pages/ListPacks.js'; +import { store } from './main.js'; + +/** + * Path to directory containing `_list.json` and all levels + */ +const dir = '/data'; +var theList = "dl"; + + +// Thing at the beginning of the file name to signify that the level is pending +const pendingMark = "(u)_"; + +export async function fetchList() { + const listResult = await fetch(`${dir}/${theList}/_list.json`); + const packResult = await fetch(`${dir}/${theList}/_packlist.json`); + + try { + const list = await listResult.json(); + const packsList = await packResult.json(); + + // Create a lookup dictionary for ranks + const ranksEntries = list + .filter((path) => !path.startsWith(pendingMark)) + .map((path, index) => [path, index + 1]); + const ranks = Object.fromEntries(ranksEntries); + + return await Promise.all( + list.map(async (path) => { + const rank = ranks[path] || null; + try { + const levelResult = await fetch(`${dir}/${theList}/${path.startsWith(pendingMark) ? path.substring(4) : path}.json`); + const level = await levelResult.json(); + let packs = packsList.filter((x) => + x.levels.includes(path) + ); + let enjoymentSum = 0; + for(let i = 0; i < level.records.length; i++){ + enjoymentSum += level.records[i].enjoyment; + } + return [ + null, + rank, + { + ...level, + rank, + packs, + path, + records: level.records.sort( + (a, b) => b.percent - a.percent, + ), + enjoyment: round((level.verifierEnjoyment + enjoymentSum)/(level.records.length + 1)), + }, + null, + ]; + } catch { + console.error(`Failed to load level #${rank} ${path}.`); + return [path, rank, null]; + } + }), + ); + } catch { + console.error(`Failed to load list.`); + return null; + } +} + +export async function fetchEditors() { + try { + const editorsResults = await fetch(`${dir}/_editors.json`); + const editors = await editorsResults.json(); + return editors; + } catch { + return null; + } +} + +export async function fetchLeaderboard() { + const list = await fetchList(); + const packResult = await (await fetch(`${dir}/${theList}/_packlist.json`)).json(); + const scoreMap = {}; + const errs = []; + + if (list === null) { + return [null, ["Failed to load list."]]; + } + + list.forEach(([err, rank, level]) => { + if (err) { + errs.push(err); + return; + } + + if (rank === null) { + return; + } + + // Verification + const verifier = Object.keys(scoreMap).find( + (u) => u.toLowerCase() === level.verifier.toLowerCase(), + ) || level.verifier; + scoreMap[verifier] ??= { + verified: [], + completed: [], + progressed: [], + packs: [], + }; + const { verified } = scoreMap[verifier]; + verified.push({ + rank: rank, + level: level.name, + score: score(rank, 100, level.percentToQualify) * 1.0, + link: level.verification, + path: level.path + }); + + // Records + level.records.forEach((record, index) => { + const user = Object.keys(scoreMap).find( + (u) => u.toLowerCase() === record.user.toLowerCase(), + ) || record.user; + scoreMap[user] ??= { + verified: [], + completed: [], + progressed: [], + packs: [], + path: level.path + }; + const { completed, progressed } = scoreMap[user]; + if (record.percent === 100) { + completed.push({ + rank: rank, + level: level.name, + score: + index < 2 + ? score(rank, 100, level.percentToQualify) * 1.0 + : score(rank, 100, level.percentToQualify), + link: record.link, + path: level.path, + }); + return; + } + + progressed.push({ + rank: rank, + level: level.name, + percent: record.percent, + score: score(rank, record.percent, level.percentToQualify), + link: record.link, + path: level.path + }); + }); + }); + + for (let user of Object.entries(scoreMap)) { + let levels = [...user[1]["verified"], ...user[1]["completed"]].map( + (x) => x["path"] + ); + + for (let pack of packResult) { + if (pack.levels.every((e1) => levels.includes(e1))) { + user[1]["packs"].push(pack); + } + } + } + + // Wrap in extra Object containing the user and total score + const res = Object.entries(scoreMap).map(([user, scores]) => { + const { verified, completed, progressed } = scores; + const total = [verified, completed, progressed] + .flat() + .reduce((prev, cur) => prev + cur.score, 0); + + return { + user, + total: round(total), + ...scores, + }; + }); + + // Sort by total score + console.log(scoreMap) + return [res.sort((a, b) => b.total - a.total), errs]; +} + +export async function fetchPacks() { + try { + const packResult = await fetch(`${dir}/${theList}/_packlist.json`); + const packsList = await packResult.json(); + return packsList; + } catch { + return null; + } +} + +export async function fetchPackLevels(packname) { + const packResult = await fetch(`${dir}/${theList}/_packlist.json`); + const packsList = await packResult.json(); + const selectedPack = await packsList.find((pack) => pack.name == packname); + const listResult = await await fetch(`${dir}/${theList}/_list.json`); + try { + const list = await listResult.json(); + + // Create a lookup dictionary for ranks + const ranksEntries = list + .filter((path) => !path.startsWith(pendingMark)) + .map((path, index) => [path, index + 1]); + const ranks = Object.fromEntries(ranksEntries); + + return await Promise.all( + selectedPack.levels.map(async (path, rank) => { + const levelResult = await fetch(`${dir}/${theList}/${path}.json`); + try { + const level = await levelResult.json(); + const listRank = ranks[path] || null; + return [ + { + level, + listRank, + path, + records: level.records.sort( + (a, b) => b.percent - a.percent, + ), + }, + null, + ]; + } catch { + console.error(`Failed to load level #${rank} ${path} (${packname}).`); + return [path, rank, null]; + } + }) + ); + } catch (e) { + console.error(`Failed to load packs.`, e); + return null; + } +} + +export async function changeList(){ + var newList = document.getElementById("list_dropdown").value; + console.log("theList: " + theList.toString() + ", dropdown value: " + document.getElementById("list_dropdown").value.toString()); + store.listType = newList; + + theList = newList; + resetList(); + resetLeaderboard(); + resetPacks(); +} \ No newline at end of file diff --git a/js/main.js b/js/main.js new file mode 100644 index 0000000..7ecd7ba --- /dev/null +++ b/js/main.js @@ -0,0 +1,32 @@ +import routes from './routes.js'; + +export const store = Vue.reactive({ + dark: JSON.parse(localStorage.getItem('dark')) || true, + shitty: JSON.parse(localStorage.getItem('shitty')) || false, + pointercrateLayout: JSON.parse(localStorage.getItem('pointercrateLayout')) || false, + toggleDark() { + this.dark = !this.dark; + localStorage.setItem('dark', JSON.stringify(this.dark)); + }, + toggleShitty() { + this.shitty = !this.shitty; + localStorage.setItem('shitty', JSON.stringify(this.shitty)); + }, + toggleLayout() { + this.pointercrateLayout = !this.pointercrateLayout; + localStorage.setItem('pointercrateLayout', JSON.stringify(this.pointercrateLayout)); + }, + listType: "dl", +}); + +const app = Vue.createApp({ + data: () => ({ store }), +}); +const router = VueRouter.createRouter({ + history: VueRouter.createWebHashHistory(), + routes, +}); + +app.use(router); + +app.mount('#app'); diff --git a/js/pages/Home.js b/js/pages/Home.js new file mode 100644 index 0000000..a596752 --- /dev/null +++ b/js/pages/Home.js @@ -0,0 +1,320 @@ +import { fetchEditors, fetchList, fetchLeaderboard, fetchPacks } from '../content.js'; +import { store } from '../main.js'; + +export default { + name: 'HomePage', + + template: ` +LOADING...
+
+ geometry dash; evil dash
+{{ fact.text }}
++ Leaderboard may be incorrect, as the following levels could not be loaded: {{ err.join(', ') }} +
+|
+ #{{ i + 1 }} + |
+
+
+
+
+ |
+
+ {{ localize(ientry.total) }} + |
+
+ |
+ + + | +
+{{ entry.total - entry.packPoints }} from levels
++{{ entry.packPoints }} from packs
+ +|
+ #{{ score.rank }} + |
+
+ {{ score.level }}
+ +{{ localize(Math.round(score.score)) }} + |
+
|
+ #{{ score.rank }} + |
+
+ {{ score.level }}
+ +{{ localize(Math.round(score.score)) }} + |
+
|
+ #{{ score.rank }} + |
+
+ {{ score.level }}
+ +{{ localize(Math.round(score.score)) }} + |
+
|
+ #{{ rank }} +— + |
+
+
+
+
+
+ |
+ + + | +
|
+ #{{ rank }} + |
+
+
+ |
+ + + | +
"{{level.gdleveldescription || "(No description provided)"}}"
+{{level.description || "No Description Provided."}}
+{{pack.name}}
+{{ score(level.rank, 100, level.percentToQualify) }}
+{{ level.id }}
+{{ level.enjoyment ?? '—' }}/100
+ +(ノಠ益ಠ)ノ彡┻━┻
+"{{ cardSelected.gdleveldescription }}"
+(No description provided)
+ +{{ cardSelected.description }}
+ +{{pack.name}}
+{{ score(cardSelected.rank, 100, cardSelected.percentToQualify) }}
+{{ cardSelected.id }}
+{{ cardSelected.enjoyment ?? '—' }}/100
+ +{{ cardSelected.percentToQualify }}% or better to qualify
+{{ cardSelected.percentToQualify }}% or better to qualify
+100% to qualify
+{{ record.percent }}% |
+
+ |
+ + {{ record.user }} + | +
+ |
+
Sort by
+Filter
+ALL PACKS
+ +Sort by
+Filter
+|
+ #{{ rank }} +— + |
+
+
+
+
+
+ |
+ + + | +
|
+ #{{ rank }} + |
+
+
+ |
+ + + | +
"{{level.gdleveldescription || "(No description provided)"}}"
+ +{{level.description || "No Description Provided."}}
+ +{{pack.name}}
+{{ score(level.rank, 100, level.percentToQualify) }}
+{{ level.id }}
+{{ level.enjoyment }}/100
+(ノಠ益ಠ)ノ彡┻━┻
+Your first level is waiting…
+Pick your lists and hit Start to begin.
+{{ toast }}
+