17 |
https://osu.ppy.sh/b/1658251
18 |
19 |
![]()
20 |
21 |
22 |

23 |
26 |
27 |
28 |
29 |
34 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/Luscent/main.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/Luscent/main.png
--------------------------------------------------------------------------------
/Luscent/maskWebcam.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/Luscent/maskbg.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/Luscent/masktext.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/Luscent/odometr.css:
--------------------------------------------------------------------------------
1 | .odometer.odometer-auto-theme, .odometer.odometer-theme-default {
2 | display: inline-block;
3 | vertical-align: middle;
4 | *vertical-align: auto;
5 | *zoom: 1;
6 | *display: inline;
7 | position: relative;
8 | }
9 | .odometer.odometer-auto-theme .odometer-digit, .odometer.odometer-theme-default .odometer-digit {
10 | display: inline-block;
11 | vertical-align: middle;
12 | *vertical-align: auto;
13 | *zoom: 1;
14 | *display: inline;
15 | position: relative;
16 | }
17 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-spacer, .odometer.odometer-theme-default .odometer-digit .odometer-digit-spacer {
18 | display: inline-block;
19 | vertical-align: middle;
20 | *vertical-align: auto;
21 | *zoom: 1;
22 | *display: inline;
23 | visibility: hidden;
24 | }
25 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-inner, .odometer.odometer-theme-default .odometer-digit .odometer-digit-inner {
26 | text-align: left;
27 | display: block;
28 | position: absolute;
29 | top: 0;
30 | left: 0;
31 | right: 0;
32 | bottom: 0;
33 | overflow: hidden;
34 | }
35 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon, .odometer.odometer-theme-default .odometer-digit .odometer-ribbon {
36 | display: block;
37 | }
38 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon-inner, .odometer.odometer-theme-default .odometer-digit .odometer-ribbon-inner {
39 | display: block;
40 | -webkit-backface-visibility: hidden;
41 | }
42 | .odometer.odometer-auto-theme .odometer-digit .odometer-value, .odometer.odometer-theme-default .odometer-digit .odometer-value {
43 | display: block;
44 | -webkit-transform: translateZ(0);
45 | }
46 | .odometer.odometer-auto-theme .odometer-digit .odometer-value.odometer-last-value, .odometer.odometer-theme-default .odometer-digit .odometer-value.odometer-last-value {
47 | position: absolute;
48 | }
49 | .odometer.odometer-auto-theme.odometer-animating-up .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-up .odometer-ribbon-inner {
50 | -webkit-transition: -webkit-transform 300ms;
51 | -moz-transition: -moz-transform 300ms;
52 | -ms-transition: -ms-transform 300ms;
53 | -o-transition: -o-transform 300ms;
54 | transition: transform 300ms;
55 | }
56 | .odometer.odometer-auto-theme.odometer-animating-up.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-up.odometer-animating .odometer-ribbon-inner {
57 | -webkit-transform: translateY(-100%);
58 | -moz-transform: translateY(-100%);
59 | -ms-transform: translateY(-100%);
60 | -o-transform: translateY(-100%);
61 | transform: translateY(-100%);
62 | }
63 | .odometer.odometer-auto-theme.odometer-animating-down .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-down .odometer-ribbon-inner {
64 | -webkit-transform: translateY(-100%);
65 | -moz-transform: translateY(-100%);
66 | -ms-transform: translateY(-100%);
67 | -o-transform: translateY(-100%);
68 | transform: translateY(-100%);
69 | }
70 | .odometer.odometer-auto-theme.odometer-animating-down.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-down.odometer-animating .odometer-ribbon-inner {
71 | -webkit-transition: -webkit-transform 300ms;
72 | -moz-transition: -moz-transform 300ms;
73 | -ms-transition: -ms-transform 300ms;
74 | -o-transition: -o-transform 300ms;
75 | transition: transform 300ms;
76 | -webkit-transform: translateY(0);
77 | -moz-transform: translateY(0);
78 | -ms-transform: translateY(0);
79 | -o-transform: translateY(0);
80 | transform: translateY(0);
81 | }
82 |
83 | .odometer.odometer-auto-theme, .odometer.odometer-theme-default {
84 | font-family: "Helvetica Neue", sans-serif;
85 | line-height: 1.1em;
86 | }
87 | .odometer.odometer-auto-theme .odometer-value, .odometer.odometer-theme-default .odometer-value {
88 | text-align: center;
89 | }
90 |
--------------------------------------------------------------------------------
/Luscent/style.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: "Cabin Regular";
3 | src: url("fonts/Cabin-Regular.ttf");
4 | }
5 |
6 |
7 | body,html{
8 | font-family: "Cabin Regular";
9 | padding: 0;
10 | margin: 0;
11 | overflow-x: hidden;
12 | overflow-y: hidden;
13 | }
14 | #main{
15 | font-size: 20px;
16 | font-weight: bold;
17 | color: white;
18 | height: 1080px;
19 | width: 1920px;
20 | position: relative;
21 | }
22 | #target{
23 | position: relative;
24 | height: 1080px;
25 | width: 1920px;
26 | -webkit-mask-image: url(maskWebcam.svg);
27 | mask-image: url(maskWebcam.svg);
28 | }
29 | #bg{
30 | background-color: rgb(71, 83, 109);
31 | position: absolute;
32 | left: -10px;
33 | top: -10px;
34 | width: 2000px;
35 | object-fit: cover;
36 | z-index: -1;
37 | filter: blur(10px) saturate(200%) brightness(0.8);
38 | transition: ease;
39 | }
40 | #bgwparrer{
41 | position: absolute;
42 | height: 1080px;
43 | width: 1920px;
44 | -webkit-mask-image: url(maskbg.svg);
45 | mask-image: url(maskbg.svg);
46 | }
47 | #hud{
48 | position: absolute;
49 | z-index: 1;
50 | }
51 | #bgDark{
52 | position: absolute;
53 | height: 1080px;
54 | width: 1920px;
55 | background-color: rgba(0, 0, 0, 0.3);
56 | }
57 | #title{
58 | position: absolute;
59 | color: rgba(255, 255, 255, 0.8);
60 | z-index: 2;
61 | font-weight: 100;
62 | font-size: 30px;
63 | position: absolute;
64 | top: 920px;
65 | width: max-content;
66 | overflow:hidden;
67 | animation: slide 20s linear infinite;
68 | }
69 | #textWrapper{
70 | position: absolute;
71 | z-index: 2;
72 | height: 1080px;
73 | width: 1920px;
74 | -webkit-mask-image: url(masktext.svg);
75 | mask-image: url(masktext.svg);
76 | }
77 | #bmlink{
78 | color: rgba(255, 255, 255, 0.7);
79 | left: 390px;
80 | top: 885px;
81 | font-weight: 100;
82 | font-size: 20px;
83 | position: absolute;
84 | z-index: 2;
85 | }
86 | #canvas{
87 | position: absolute;
88 | bottom: 0;
89 | filter: blur(2px);
90 | }
91 | #canvasSecond{
92 | filter: blur(2px);
93 | }
94 | #progress{
95 | bottom: 0;
96 | position: absolute;
97 | width: 1920px;
98 | overflow: hidden;
99 | transition: ease 600ms;
100 | }
101 | #pp{
102 | display: flex;
103 | border-radius: 100px;
104 | padding: 10px 20px 10px 20px;
105 | position: absolute;
106 | right: 760px;
107 | bottom: 100px;
108 | color: rgba(199, 199, 199, 0.8);
109 | font-size: 25px;
110 | transition: ease-in-out 400ms;
111 | z-index: -4;
112 | }
113 | .ppNum{
114 | padding: 0 10px 0 10px;
115 | }
116 | .ppText{
117 | margin-left: -10px;
118 | }
119 | @keyframes slide {
120 | 0% {transform: translate(990px);}
121 | 100% { transform: translate(-105%);; }
122 | }
123 |
--------------------------------------------------------------------------------
/MaximalLime/css/main.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --color1: #83A87C;
3 | --color2: #456255;
4 | --color-m-1: #5B7556;
5 | --color-m-2: #212F29;
6 | --color-l-1: #334231;
7 | --color-l-2: #0A0E0C;
8 | }
9 | * {
10 | padding: 0;
11 | margin: 0;
12 | box-sizing: border-box;
13 | }
14 | ::selection {
15 | background: #456255 !important;
16 | }
17 | html, body {
18 | overflow: hidden;
19 | font-size: 40px;
20 | font-family: 'Roboto', sans-serif;
21 | color: white;
22 | width: 1920px;
23 | height: 1080px;
24 | background: transparent;
25 | border-right: 2px solid white;
26 | border-bottom: 2px solid white;
27 | }
28 | .main {
29 | position: relative;
30 | width: 800px;
31 | height: 300px;
32 | border-radius: 20px;
33 | box-shadow: 0 6px 0 var(--color-l-1);
34 | overflow: hidden;
35 | }
36 |
37 | .map-info {
38 | position: relative;
39 | width: 100%;
40 | height: 200px;
41 | }
42 | .w100xh {
43 | width: 100%;
44 | height: 100%;
45 | }
46 | .background img {position: relative;object-fit: cover;z-index: 0;}
47 |
48 | .time, .star {
49 | position: absolute;
50 | font-size: .7rem;
51 | padding: 10px 20px;
52 | border-radius: 10px;
53 | z-index: 2;
54 | }
55 |
56 | .link {
57 | position: absolute;
58 | top: 60%;
59 | left: 50%;
60 | transform: translate(-50%, -50%);
61 | z-index: 2;
62 | }
63 | .link i {
64 | font-size: 2rem;
65 | color: var(--color1);
66 | text-shadow: 0 1px 0 var(--color-m-1), 0 2px 0 var(--color-m-1), 0 3px 0 var(--color-m-1), 0 4px 0 var(--color-m-1), 0 0 20px rgba(0, 0, 0, .5);
67 | }
68 |
69 | .link span {position: relative;font-size: 2rem;color: white;text-shadow: 0 0.5px 0 #CCCCCC, 0 1px 0 #CCCCCC, 0 1.5px 0 #CCCCCC, 0 2px 0 #CCCCCC, 0 0 10px black;}
70 |
71 | .link span:before {content: '';position: absolute;left: 0;bottom: -10px;width: 100%;height: 8px;background: var(--color1);border-radius: 100px;box-shadow: 0 1px 0 var(--color-m-1), 0 2px 0 var(--color-m-1), 0 3px 0 var(--color-m-1), 0 4px 0 var(--color-m-1), 0 0 15px rgba(0, 0, 0, .5);transition: all .3s;}
72 |
73 | .background:before {content: '';position: absolute;top: 0;left: 0;right: 0;bottom: 0;background: linear-gradient(0deg, #00000000, rgba(0, 0, 0, .5));z-index: 1;}
74 |
75 | .background {
76 | position: relative;
77 | }
78 | .play-info {
79 | justify-content: center;
80 | align-items: center;
81 | position: relative;
82 | display: flex;
83 | height: 100px;
84 | background: linear-gradient(-10deg, var(--color2), var(--color1));
85 | text-shadow: 0 1px 0 black, 0 2px 0 black;
86 | }
87 |
88 | .pp {
89 | justify-content: center;
90 | align-items: center;
91 | position: relative;
92 | display: flex;
93 | font-size: 1.2rem;
94 | width: 35%;
95 | height: 100%;
96 | margin-right: 5%;
97 | }
98 |
99 | .hits {
100 | display: flex;
101 | width: 60%;
102 | }
103 |
104 | .h100, .h50, .h0 {
105 | list-style-type: none;
106 | }
107 |
108 | .hits>* {
109 | position: relative;
110 | width: 33.3%;
111 | }
112 |
113 | .h100 li, .h50 li, .h0 li {
114 | text-align: center;
115 | font-size: .8rem;
116 | }
117 |
118 | .h100 li:nth-child(1), .h50 li:nth-child(1), .h0 li:nth-child(1) {
119 | color: #ffffff;
120 | }
121 |
122 | .h100 li:nth-child(2), .h50 li:nth-child(2), .h0 li:nth-child(2) {
123 | font-size: 1rem;
124 | color: white;
125 | }
126 | .pp:before {content: '';position: absolute;top: 0;right: 0;bottom: 0;width: 4px;background: var(--color-l-1);opacity: .2;}
127 | .time {
128 | top: 10px;
129 | left: 20px;
130 | background: var(--color1);
131 | box-shadow: 0 6px 0 var(--color-m-1), 0 0 20px black;
132 | }
133 |
134 | .star {
135 | top: 10px;
136 | right: 20px;
137 | background: var(--color1);
138 | box-shadow: 0 6px 0 var(--color-m-1), 0 0 20px black;
139 | }
140 |
--------------------------------------------------------------------------------
/MaximalLime/deps/reconnecting-websocket.min.js:
--------------------------------------------------------------------------------
1 | !function(a,b){"function"==typeof define&&define.amd?define([],b):"undefined"!=typeof module&&module.exports?module.exports=b():a.ReconnectingWebSocket=b()}(this,function(){function a(b,c,d){function l(a,b){var c=document.createEvent("CustomEvent");return c.initCustomEvent(a,!1,!1,b),c}var e={debug:!1,automaticOpen:!0,reconnectInterval:1e3,maxReconnectInterval:3e4,reconnectDecay:1.5,timeoutInterval:2e3};d||(d={});for(var f in e)this[f]="undefined"!=typeof d[f]?d[f]:e[f];this.url=b,this.reconnectAttempts=0,this.readyState=WebSocket.CONNECTING,this.protocol=null;var h,g=this,i=!1,j=!1,k=document.createElement("div");k.addEventListener("open",function(a){g.onopen(a)}),k.addEventListener("close",function(a){g.onclose(a)}),k.addEventListener("connecting",function(a){g.onconnecting(a)}),k.addEventListener("message",function(a){g.onmessage(a)}),k.addEventListener("error",function(a){g.onerror(a)}),this.addEventListener=k.addEventListener.bind(k),this.removeEventListener=k.removeEventListener.bind(k),this.dispatchEvent=k.dispatchEvent.bind(k),this.open=function(b){h=new WebSocket(g.url,c||[]),b||k.dispatchEvent(l("connecting")),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","attempt-connect",g.url);var d=h,e=setTimeout(function(){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","connection-timeout",g.url),j=!0,d.close(),j=!1},g.timeoutInterval);h.onopen=function(){clearTimeout(e),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onopen",g.url),g.protocol=h.protocol,g.readyState=WebSocket.OPEN,g.reconnectAttempts=0;var d=l("open");d.isReconnect=b,b=!1,k.dispatchEvent(d)},h.onclose=function(c){if(clearTimeout(e),h=null,i)g.readyState=WebSocket.CLOSED,k.dispatchEvent(l("close"));else{g.readyState=WebSocket.CONNECTING;var d=l("connecting");d.code=c.code,d.reason=c.reason,d.wasClean=c.wasClean,k.dispatchEvent(d),b||j||((g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onclose",g.url),k.dispatchEvent(l("close")));var e=g.reconnectInterval*Math.pow(g.reconnectDecay,g.reconnectAttempts);setTimeout(function(){g.reconnectAttempts++,g.open(!0)},e>g.maxReconnectInterval?g.maxReconnectInterval:e)}},h.onmessage=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onmessage",g.url,b.data);var c=l("message");c.data=b.data,k.dispatchEvent(c)},h.onerror=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onerror",g.url,b),k.dispatchEvent(l("error"))}},1==this.automaticOpen&&this.open(!1),this.send=function(b){if(h)return(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","send",g.url,b),h.send(b);throw"INVALID_STATE_ERR : Pausing to reconnect websocket"},this.close=function(a,b){"undefined"==typeof a&&(a=1e3),i=!0,h&&h.close(a,b)},this.refresh=function(){h&&h.close()}}return a.prototype.onopen=function(){},a.prototype.onclose=function(){},a.prototype.onconnecting=function(){},a.prototype.onmessage=function(){},a.prototype.onerror=function(){},a.debugAll=!1,a.CONNECTING=WebSocket.CONNECTING,a.OPEN=WebSocket.OPEN,a.CLOSING=WebSocket.CLOSING,a.CLOSED=WebSocket.CLOSED,a});
2 |
--------------------------------------------------------------------------------
/MaximalLime/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
Document
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | 0s
16 |
17 |
18 |
19 | 0
20 |
21 |
22 |
23 |
24 |
25 |
![]()
26 |
27 |
28 |
29 |
30 | 0pp
31 |
32 |
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/MaximalLime/index.js:
--------------------------------------------------------------------------------
1 | let socket = new ReconnectingWebSocket("ws://127.0.0.1:24050/ws");
2 |
3 | let bg = document.getElementById("bg");
4 | let star = document.getElementById("star");
5 | let pp = document.getElementById("pp");
6 | let hun = document.getElementById("h100");
7 | let fifty = document.getElementById("h50");
8 | let miss = document.getElementById("h0");
9 | let time = document.getElementById("time");
10 |
11 | socket.onopen = () => {
12 | console.log("Successfully Connected");
13 | };
14 |
15 | socket.onclose = event => {
16 | console.log("Socket Closed Connection: ", event);
17 | socket.send("Client Closed!")
18 | };
19 |
20 | socket.onerror = error => {
21 | console.log("Socket Error: ", error);
22 | };
23 |
24 | let tempState;
25 | let tempImg;
26 | socket.onmessage = event => {
27 | let data = JSON.parse(event.data);
28 | if (tempState !== data.menu.bm.path.full) {
29 | tempState = data.menu.bm.path.full
30 | bg.setAttribute('src', `http://127.0.0.1:24050/Songs/${data.menu.bm.path.full}?a=${Math.random(10000)}`)
31 | }
32 | if (data.menu.bm.time.current > 1000) {
33 | let seconds = (data.menu.bm.time.current/1000).toFixed(0);
34 | let minutes = Math.floor(seconds % 3600 / 60).toString();
35 |
36 | if (seconds > 60) {
37 | time.innerHTML = `${minutes}m ${seconds-(minutes*60)}s`
38 | } else {
39 | time.innerHTML = `${seconds}s`
40 | }
41 | }
42 | if (data.gameplay.pp.current != '') {
43 | let ppData = data.gameplay.pp.current;
44 | pp.innerHTML = Math.round(ppData) + "pp"
45 | } else {
46 | pp.innerHTML = 0 + "pp"
47 | }
48 | if (data.menu.bm.stats.SR != '') {
49 | let SR = data.menu.bm.stats.SR;
50 | star.innerHTML = SR.toFixed(2)
51 | } else {
52 | star.innerHTML = 0
53 | }
54 | if (data.gameplay.hits[100] > 0) {
55 | hun.innerHTML = data.gameplay.hits[100];
56 | } else {
57 | hun.innerHTML = 0
58 | }
59 | if (data.gameplay.hits[50] > 0) {
60 | fifty.innerHTML = data.gameplay.hits[50];
61 | } else {
62 | fifty.innerHTML = 0
63 | }
64 | if (data.gameplay.hits[0] > 0) {
65 | miss.innerHTML = data.gameplay.hits[0];
66 | } else {
67 | miss.innerHTML = 0
68 | }
69 | }
70 |
71 |
72 |
73 | //Received: '{"menuContainer":{"osuState":2,"bmID":1219126,"bmSetID":575767,"CS":4,"AR":9.5,"OD":8,"HP":6,"bmInfo":"BTS - Not Today [Tomorrow]","bmFolder":"575767 BTS - Not Today","pathToBM":"BTS - Not Today (DeRandom Otaku) [Tomorrow].osu","bmCurrentTime":8861,"bmMinBPM":0,"bmMaxBPM":0},"gameplayContainer":{"300":21,"100":0,"50":0,"miss":0,"accuracy":100,"score":24612,"combo":36,"gameMode":0,"appliedMods":2048,"maxCombo":36,"pp":""}}'
--------------------------------------------------------------------------------
/MaximalLime/webfonts/fa-brands-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MaximalLime/webfonts/fa-brands-400.eot
--------------------------------------------------------------------------------
/MaximalLime/webfonts/fa-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MaximalLime/webfonts/fa-brands-400.ttf
--------------------------------------------------------------------------------
/MaximalLime/webfonts/fa-brands-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MaximalLime/webfonts/fa-brands-400.woff
--------------------------------------------------------------------------------
/MaximalLime/webfonts/fa-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MaximalLime/webfonts/fa-brands-400.woff2
--------------------------------------------------------------------------------
/MaximalLime/webfonts/fa-regular-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MaximalLime/webfonts/fa-regular-400.eot
--------------------------------------------------------------------------------
/MaximalLime/webfonts/fa-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MaximalLime/webfonts/fa-regular-400.ttf
--------------------------------------------------------------------------------
/MaximalLime/webfonts/fa-regular-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MaximalLime/webfonts/fa-regular-400.woff
--------------------------------------------------------------------------------
/MaximalLime/webfonts/fa-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MaximalLime/webfonts/fa-regular-400.woff2
--------------------------------------------------------------------------------
/MaximalLime/webfonts/fa-solid-900.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MaximalLime/webfonts/fa-solid-900.eot
--------------------------------------------------------------------------------
/MaximalLime/webfonts/fa-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MaximalLime/webfonts/fa-solid-900.ttf
--------------------------------------------------------------------------------
/MaximalLime/webfonts/fa-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MaximalLime/webfonts/fa-solid-900.woff
--------------------------------------------------------------------------------
/MaximalLime/webfonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MaximalLime/webfonts/fa-solid-900.woff2
--------------------------------------------------------------------------------
/MinimalLime/css/main.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --color-bg: #7ca8a4;
3 | --color2-bg: #45625F;
4 | --color-100: #83A87C;
5 | --color2-100: #456255;
6 | --color-50: #A8A87C;
7 | --color2-50: #626245;
8 | --color-0: #A87C7C;
9 | --color2-0: #624545;
10 | }
11 | * {
12 | padding: 0;
13 | margin: 0;
14 | box-sizing: border-box;
15 | }
16 | ::selection {background: #ffffff !important;}
17 | html, body {
18 | text-shadow: 0 1px 0 black, 0 2px 0 black;
19 | font-size: 40px;
20 | font-family: 'Roboto', sans-serif;
21 | color: white;
22 | width: 1920px;
23 | height: 1080px;
24 | /*background: #8c8c8c;*/
25 | border-right: 2px solid white;
26 | border-bottom: 2px solid white;
27 | }
28 | .main {
29 | position: relative;
30 | width: 600px;
31 | margin: 20px;
32 | }
33 | .stat {
34 | justify-content: center;
35 | align-items: center;
36 | text-align: center;
37 | position: relative;
38 | display: flex;
39 | height: 80px;
40 | padding: 0 10px;
41 | background: linear-gradient(125deg, var(--color-bg), var(--color2-bg));
42 | border-radius: 250px;
43 | box-shadow: 0 6px 0 var(--color2-bg), 0 10px 20px black;
44 | z-index: 1;
45 | }
46 | .pp {width: 30%;}
47 | .hits {
48 | display: flex;
49 | width: 70%;
50 | }
51 | .hits>* {
52 | width: 33.3%;
53 | }
54 | .hits>*>span {
55 | padding: 5px 15px;
56 | border-radius: 10px;
57 | }
58 | .h100 span {
59 | background: linear-gradient(45deg, var(--color-100), var(--color2-100));
60 | box-shadow: 0 4px 0 var(--color2-100), 0 3px 10px rgba(0, 0, 0, .5);
61 | }
62 | .h50 span {
63 | background: linear-gradient(45deg, var(--color-50), var(--color2-50));
64 | box-shadow: 0 4px 0 var(--color2-50), 0 3px 10px rgba(0, 0, 0, .5);
65 | }
66 | .h0 span {
67 | background: linear-gradient(45deg, var(--color-0), var(--color2-0));
68 | box-shadow: 0 4px 0 var(--color2-0), 0 3px 10px rgba(0, 0, 0, .5);
69 | }
--------------------------------------------------------------------------------
/MinimalLime/deps/reconnecting-websocket.min.js:
--------------------------------------------------------------------------------
1 | !function(a,b){"function"==typeof define&&define.amd?define([],b):"undefined"!=typeof module&&module.exports?module.exports=b():a.ReconnectingWebSocket=b()}(this,function(){function a(b,c,d){function l(a,b){var c=document.createEvent("CustomEvent");return c.initCustomEvent(a,!1,!1,b),c}var e={debug:!1,automaticOpen:!0,reconnectInterval:1e3,maxReconnectInterval:3e4,reconnectDecay:1.5,timeoutInterval:2e3};d||(d={});for(var f in e)this[f]="undefined"!=typeof d[f]?d[f]:e[f];this.url=b,this.reconnectAttempts=0,this.readyState=WebSocket.CONNECTING,this.protocol=null;var h,g=this,i=!1,j=!1,k=document.createElement("div");k.addEventListener("open",function(a){g.onopen(a)}),k.addEventListener("close",function(a){g.onclose(a)}),k.addEventListener("connecting",function(a){g.onconnecting(a)}),k.addEventListener("message",function(a){g.onmessage(a)}),k.addEventListener("error",function(a){g.onerror(a)}),this.addEventListener=k.addEventListener.bind(k),this.removeEventListener=k.removeEventListener.bind(k),this.dispatchEvent=k.dispatchEvent.bind(k),this.open=function(b){h=new WebSocket(g.url,c||[]),b||k.dispatchEvent(l("connecting")),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","attempt-connect",g.url);var d=h,e=setTimeout(function(){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","connection-timeout",g.url),j=!0,d.close(),j=!1},g.timeoutInterval);h.onopen=function(){clearTimeout(e),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onopen",g.url),g.protocol=h.protocol,g.readyState=WebSocket.OPEN,g.reconnectAttempts=0;var d=l("open");d.isReconnect=b,b=!1,k.dispatchEvent(d)},h.onclose=function(c){if(clearTimeout(e),h=null,i)g.readyState=WebSocket.CLOSED,k.dispatchEvent(l("close"));else{g.readyState=WebSocket.CONNECTING;var d=l("connecting");d.code=c.code,d.reason=c.reason,d.wasClean=c.wasClean,k.dispatchEvent(d),b||j||((g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onclose",g.url),k.dispatchEvent(l("close")));var e=g.reconnectInterval*Math.pow(g.reconnectDecay,g.reconnectAttempts);setTimeout(function(){g.reconnectAttempts++,g.open(!0)},e>g.maxReconnectInterval?g.maxReconnectInterval:e)}},h.onmessage=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onmessage",g.url,b.data);var c=l("message");c.data=b.data,k.dispatchEvent(c)},h.onerror=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onerror",g.url,b),k.dispatchEvent(l("error"))}},1==this.automaticOpen&&this.open(!1),this.send=function(b){if(h)return(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","send",g.url,b),h.send(b);throw"INVALID_STATE_ERR : Pausing to reconnect websocket"},this.close=function(a,b){"undefined"==typeof a&&(a=1e3),i=!0,h&&h.close(a,b)},this.refresh=function(){h&&h.close()}}return a.prototype.onopen=function(){},a.prototype.onclose=function(){},a.prototype.onconnecting=function(){},a.prototype.onmessage=function(){},a.prototype.onerror=function(){},a.debugAll=!1,a.CONNECTING=WebSocket.CONNECTING,a.OPEN=WebSocket.OPEN,a.CLOSING=WebSocket.CLOSING,a.CLOSED=WebSocket.CLOSED,a});
2 |
--------------------------------------------------------------------------------
/MinimalLime/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Document
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | 0pp
17 |
18 |
19 |
20 | 0
21 |
22 |
23 | 0
24 |
25 |
26 | 0
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/MinimalLime/index.js:
--------------------------------------------------------------------------------
1 | let socket = new ReconnectingWebSocket("ws://127.0.0.1:24050/ws");
2 |
3 | let pp = document.getElementById("pp");
4 | let hun = document.getElementById("h100");
5 | let fifty = document.getElementById("h50");
6 | let miss = document.getElementById("h0");
7 | let link = document.getElementById("link");
8 |
9 | socket.onopen = () => {
10 | console.log("Successfully Connected");
11 | };
12 |
13 | socket.onclose = event => {
14 | console.log("Socket Closed Connection: ", event);
15 | socket.send("Client Closed!")
16 | };
17 |
18 | socket.onerror = error => {
19 | console.log("Socket Error: ", error);
20 | };
21 | let tempState;
22 | let tempImg;
23 | socket.onmessage = event => {
24 | let data = JSON.parse(event.data);
25 | if (data.gameplay.pp.current != '') {
26 | let ppData = data.gameplay.pp.current;
27 | pp.innerHTML = Math.round(ppData) + "pp"
28 | } else {
29 | pp.innerHTML = 0 + "pp"
30 | }
31 | if (data.gameplay.hits[100] > 0) {
32 | hun.innerHTML = data.gameplay.hits[100];
33 | } else {
34 | hun.innerHTML = 0
35 | }
36 | if (data.gameplay.hits[50] > 0) {
37 | fifty.innerHTML = data.gameplay.hits[50];
38 | } else {
39 | fifty.innerHTML = 0
40 | }
41 | if (data.gameplay.hits[0] > 0) {
42 | miss.innerHTML = data.gameplay.hits[0];
43 | } else {
44 | miss.innerHTML = 0
45 | }
46 | }
47 |
48 |
49 |
50 | //Received: '{"menuContainer":{"osuState":2,"bmID":1219126,"bmSetID":575767,"CS":4,"AR":9.5,"OD":8,"HP":6,"bmInfo":"BTS - Not Today [Tomorrow]","bmFolder":"575767 BTS - Not Today","pathToBM":"BTS - Not Today (DeRandom Otaku) [Tomorrow].osu","bmCurrentTime":8861,"bmMinBPM":0,"bmMaxBPM":0},"gameplayContainer":{"300":21,"100":0,"50":0,"miss":0,"accuracy":100,"score":24612,"combo":36,"gameMode":0,"appliedMods":2048,"maxCombo":36,"pp":""}}'
--------------------------------------------------------------------------------
/MinimalLime/webfonts/fa-brands-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MinimalLime/webfonts/fa-brands-400.eot
--------------------------------------------------------------------------------
/MinimalLime/webfonts/fa-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MinimalLime/webfonts/fa-brands-400.ttf
--------------------------------------------------------------------------------
/MinimalLime/webfonts/fa-brands-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MinimalLime/webfonts/fa-brands-400.woff
--------------------------------------------------------------------------------
/MinimalLime/webfonts/fa-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MinimalLime/webfonts/fa-brands-400.woff2
--------------------------------------------------------------------------------
/MinimalLime/webfonts/fa-regular-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MinimalLime/webfonts/fa-regular-400.eot
--------------------------------------------------------------------------------
/MinimalLime/webfonts/fa-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MinimalLime/webfonts/fa-regular-400.ttf
--------------------------------------------------------------------------------
/MinimalLime/webfonts/fa-regular-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MinimalLime/webfonts/fa-regular-400.woff
--------------------------------------------------------------------------------
/MinimalLime/webfonts/fa-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MinimalLime/webfonts/fa-regular-400.woff2
--------------------------------------------------------------------------------
/MinimalLime/webfonts/fa-solid-900.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MinimalLime/webfonts/fa-solid-900.eot
--------------------------------------------------------------------------------
/MinimalLime/webfonts/fa-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MinimalLime/webfonts/fa-solid-900.ttf
--------------------------------------------------------------------------------
/MinimalLime/webfonts/fa-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MinimalLime/webfonts/fa-solid-900.woff
--------------------------------------------------------------------------------
/MinimalLime/webfonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MinimalLime/webfonts/fa-solid-900.woff2
--------------------------------------------------------------------------------
/MonokaiPane/css/fonts/ubuntu-v15-latin-300.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MonokaiPane/css/fonts/ubuntu-v15-latin-300.woff
--------------------------------------------------------------------------------
/MonokaiPane/css/fonts/ubuntu-v15-latin-300.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MonokaiPane/css/fonts/ubuntu-v15-latin-300.woff2
--------------------------------------------------------------------------------
/MonokaiPane/css/fonts/ubuntu-v15-latin-500.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MonokaiPane/css/fonts/ubuntu-v15-latin-500.woff
--------------------------------------------------------------------------------
/MonokaiPane/css/fonts/ubuntu-v15-latin-500.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MonokaiPane/css/fonts/ubuntu-v15-latin-500.woff2
--------------------------------------------------------------------------------
/MonokaiPane/css/fonts/ubuntu-v15-latin-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MonokaiPane/css/fonts/ubuntu-v15-latin-regular.woff
--------------------------------------------------------------------------------
/MonokaiPane/css/fonts/ubuntu-v15-latin-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MonokaiPane/css/fonts/ubuntu-v15-latin-regular.woff2
--------------------------------------------------------------------------------
/MonokaiPane/css/odometr.css:
--------------------------------------------------------------------------------
1 | :root{
2 | --spin-duration: 300ms
3 | }
4 | .odometer.odometer-auto-theme, .odometer.odometer-theme-default {
5 | display: inline-block;
6 | vertical-align: middle;
7 | *vertical-align: auto;
8 | *zoom: 1;
9 | *display: inline;
10 | position: relative;
11 | }
12 | .odometer.odometer-auto-theme .odometer-digit, .odometer.odometer-theme-default .odometer-digit {
13 | display: inline-block;
14 | vertical-align: middle;
15 | *vertical-align: auto;
16 | *zoom: 1;
17 | *display: inline;
18 | position: relative;
19 | }
20 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-spacer, .odometer.odometer-theme-default .odometer-digit .odometer-digit-spacer {
21 | display: inline-block;
22 | vertical-align: middle;
23 | *vertical-align: auto;
24 | *zoom: 1;
25 | *display: inline;
26 | visibility: hidden;
27 | }
28 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-inner, .odometer.odometer-theme-default .odometer-digit .odometer-digit-inner {
29 | text-align: left;
30 | display: block;
31 | position: absolute;
32 | top: 0;
33 | left: 0;
34 | right: 0;
35 | bottom: 0;
36 | overflow: hidden;
37 | }
38 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon, .odometer.odometer-theme-default .odometer-digit .odometer-ribbon {
39 | display: block;
40 | }
41 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon-inner, .odometer.odometer-theme-default .odometer-digit .odometer-ribbon-inner {
42 | display: block;
43 | -webkit-backface-visibility: hidden;
44 | }
45 | .odometer.odometer-auto-theme .odometer-digit .odometer-value, .odometer.odometer-theme-default .odometer-digit .odometer-value {
46 | display: block;
47 | -webkit-transform: translateZ(0);
48 | }
49 | .odometer.odometer-auto-theme .odometer-digit .odometer-value.odometer-last-value, .odometer.odometer-theme-default .odometer-digit .odometer-value.odometer-last-value {
50 | position: absolute;
51 | }
52 | .odometer.odometer-auto-theme.odometer-animating-up .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-up .odometer-ribbon-inner {
53 | -webkit-transition: -webkit-transform var(--spin-duration);
54 | -moz-transition: -moz-transform var(--spin-duration);
55 | -ms-transition: -ms-transform var(--spin-duration);
56 | -o-transition: -o-transform var(--spin-duration);
57 | transition: transform var(--spin-duration);
58 | }
59 | .odometer.odometer-auto-theme.odometer-animating-up.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-up.odometer-animating .odometer-ribbon-inner {
60 | -webkit-transform: translateY(-100%);
61 | -moz-transform: translateY(-100%);
62 | -ms-transform: translateY(-100%);
63 | -o-transform: translateY(-100%);
64 | transform: translateY(-100%);
65 | }
66 | .odometer.odometer-auto-theme.odometer-animating-down .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-down .odometer-ribbon-inner {
67 | -webkit-transform: translateY(-100%);
68 | -moz-transform: translateY(-100%);
69 | -ms-transform: translateY(-100%);
70 | -o-transform: translateY(-100%);
71 | transform: translateY(-100%);
72 | }
73 | .odometer.odometer-auto-theme.odometer-animating-down.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-down.odometer-animating .odometer-ribbon-inner {
74 | -webkit-transition: -webkit-transform var(--spin-duration);
75 | -moz-transition: -moz-transform var(--spin-duration);
76 | -ms-transition: -ms-transform var(--spin-duration);
77 | -o-transition: -o-transform var(--spin-duration);
78 | transition: transform var(--spin-duration);
79 | -webkit-transform: translateY(0);
80 | -moz-transform: translateY(0);
81 | -ms-transform: translateY(0);
82 | -o-transform: translateY(0);
83 | transform: translateY(0);
84 | }
85 |
86 | .odometer.odometer-auto-theme, .odometer.odometer-theme-default {
87 | line-height: 1.1em;
88 | }
89 | .odometer.odometer-auto-theme .odometer-value, .odometer.odometer-theme-default .odometer-value {
90 | text-align: center;
91 | }
92 |
--------------------------------------------------------------------------------
/MonokaiPane/deps/reconnecting-websocket.min.js:
--------------------------------------------------------------------------------
1 | !function(a,b){"function"==typeof define&&define.amd?define([],b):"undefined"!=typeof module&&module.exports?module.exports=b():a.ReconnectingWebSocket=b()}(this,function(){function a(b,c,d){function l(a,b){var c=document.createEvent("CustomEvent");return c.initCustomEvent(a,!1,!1,b),c}var e={debug:!1,automaticOpen:!0,reconnectInterval:1e3,maxReconnectInterval:3e4,reconnectDecay:1.5,timeoutInterval:2e3};d||(d={});for(var f in e)this[f]="undefined"!=typeof d[f]?d[f]:e[f];this.url=b,this.reconnectAttempts=0,this.readyState=WebSocket.CONNECTING,this.protocol=null;var h,g=this,i=!1,j=!1,k=document.createElement("div");k.addEventListener("open",function(a){g.onopen(a)}),k.addEventListener("close",function(a){g.onclose(a)}),k.addEventListener("connecting",function(a){g.onconnecting(a)}),k.addEventListener("message",function(a){g.onmessage(a)}),k.addEventListener("error",function(a){g.onerror(a)}),this.addEventListener=k.addEventListener.bind(k),this.removeEventListener=k.removeEventListener.bind(k),this.dispatchEvent=k.dispatchEvent.bind(k),this.open=function(b){h=new WebSocket(g.url,c||[]),b||k.dispatchEvent(l("connecting")),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","attempt-connect",g.url);var d=h,e=setTimeout(function(){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","connection-timeout",g.url),j=!0,d.close(),j=!1},g.timeoutInterval);h.onopen=function(){clearTimeout(e),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onopen",g.url),g.protocol=h.protocol,g.readyState=WebSocket.OPEN,g.reconnectAttempts=0;var d=l("open");d.isReconnect=b,b=!1,k.dispatchEvent(d)},h.onclose=function(c){if(clearTimeout(e),h=null,i)g.readyState=WebSocket.CLOSED,k.dispatchEvent(l("close"));else{g.readyState=WebSocket.CONNECTING;var d=l("connecting");d.code=c.code,d.reason=c.reason,d.wasClean=c.wasClean,k.dispatchEvent(d),b||j||((g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onclose",g.url),k.dispatchEvent(l("close")));var e=g.reconnectInterval*Math.pow(g.reconnectDecay,g.reconnectAttempts);setTimeout(function(){g.reconnectAttempts++,g.open(!0)},e>g.maxReconnectInterval?g.maxReconnectInterval:e)}},h.onmessage=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onmessage",g.url,b.data);var c=l("message");c.data=b.data,k.dispatchEvent(c)},h.onerror=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onerror",g.url,b),k.dispatchEvent(l("error"))}},1==this.automaticOpen&&this.open(!1),this.send=function(b){if(h)return(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","send",g.url,b),h.send(b);throw"INVALID_STATE_ERR : Pausing to reconnect websocket"},this.close=function(a,b){"undefined"==typeof a&&(a=1e3),i=!0,h&&h.close(a,b)},this.refresh=function(){h&&h.close()}}return a.prototype.onopen=function(){},a.prototype.onclose=function(){},a.prototype.onconnecting=function(){},a.prototype.onmessage=function(){},a.prototype.onerror=function(){},a.debugAll=!1,a.CONNECTING=WebSocket.CONNECTING,a.OPEN=WebSocket.OPEN,a.CLOSING=WebSocket.CLOSING,a.CLOSED=WebSocket.CLOSED,a});
2 |
--------------------------------------------------------------------------------
/MonokaiPane/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
MonokaiPane
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | pp
18 |
19 |
20 | x100
21 |
22 |
23 | x50
24 |
25 |
26 | xMiss
27 |
28 |
29 |
30 |
![]()
31 |
32 |
33 |
34 | Song Name
35 |
36 |
37 | Artist
38 |
39 |
42 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
65 |
66 |
--------------------------------------------------------------------------------
/MonokaiPane/webfonts/fa-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MonokaiPane/webfonts/fa-solid-900.woff
--------------------------------------------------------------------------------
/MonokaiPane/webfonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/MonokaiPane/webfonts/fa-solid-900.woff2
--------------------------------------------------------------------------------
/OldClassic/css/odometr.css:
--------------------------------------------------------------------------------
1 | .odometer.odometer-auto-theme, .odometer.odometer-theme-default {
2 | display: inline-block;
3 | vertical-align: middle;
4 | *vertical-align: auto;
5 | *zoom: 1;
6 | *display: inline;
7 | position: relative;
8 | }
9 | .odometer.odometer-auto-theme .odometer-digit, .odometer.odometer-theme-default .odometer-digit {
10 | display: inline-block;
11 | vertical-align: middle;
12 | *vertical-align: auto;
13 | *zoom: 1;
14 | *display: inline;
15 | position: relative;
16 | }
17 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-spacer, .odometer.odometer-theme-default .odometer-digit .odometer-digit-spacer {
18 | display: inline-block;
19 | vertical-align: middle;
20 | *vertical-align: auto;
21 | *zoom: 1;
22 | *display: inline;
23 | visibility: hidden;
24 | }
25 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-inner, .odometer.odometer-theme-default .odometer-digit .odometer-digit-inner {
26 | text-align: left;
27 | display: block;
28 | position: absolute;
29 | top: 0;
30 | left: 0;
31 | right: 0;
32 | bottom: 0;
33 | overflow: hidden;
34 | }
35 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon, .odometer.odometer-theme-default .odometer-digit .odometer-ribbon {
36 | display: block;
37 | }
38 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon-inner, .odometer.odometer-theme-default .odometer-digit .odometer-ribbon-inner {
39 | display: block;
40 | -webkit-backface-visibility: hidden;
41 | }
42 | .odometer.odometer-auto-theme .odometer-digit .odometer-value, .odometer.odometer-theme-default .odometer-digit .odometer-value {
43 | display: block;
44 | -webkit-transform: translateZ(0);
45 | }
46 | .odometer.odometer-auto-theme .odometer-digit .odometer-value.odometer-last-value, .odometer.odometer-theme-default .odometer-digit .odometer-value.odometer-last-value {
47 | position: absolute;
48 | }
49 | .odometer.odometer-auto-theme.odometer-animating-up .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-up .odometer-ribbon-inner {
50 | -webkit-transition: -webkit-transform 300ms;
51 | -moz-transition: -moz-transform 300ms;
52 | -ms-transition: -ms-transform 300ms;
53 | -o-transition: -o-transform 300ms;
54 | transition: transform 300ms;
55 | }
56 | .odometer.odometer-auto-theme.odometer-animating-up.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-up.odometer-animating .odometer-ribbon-inner {
57 | -webkit-transform: translateY(-100%);
58 | -moz-transform: translateY(-100%);
59 | -ms-transform: translateY(-100%);
60 | -o-transform: translateY(-100%);
61 | transform: translateY(-100%);
62 | }
63 | .odometer.odometer-auto-theme.odometer-animating-down .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-down .odometer-ribbon-inner {
64 | -webkit-transform: translateY(-100%);
65 | -moz-transform: translateY(-100%);
66 | -ms-transform: translateY(-100%);
67 | -o-transform: translateY(-100%);
68 | transform: translateY(-100%);
69 | }
70 | .odometer.odometer-auto-theme.odometer-animating-down.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-down.odometer-animating .odometer-ribbon-inner {
71 | -webkit-transition: -webkit-transform 300ms;
72 | -moz-transition: -moz-transform 300ms;
73 | -ms-transition: -ms-transform 300ms;
74 | -o-transition: -o-transform 300ms;
75 | transition: transform 300ms;
76 | -webkit-transform: translateY(0);
77 | -moz-transform: translateY(0);
78 | -ms-transform: translateY(0);
79 | -o-transform: translateY(0);
80 | transform: translateY(0);
81 | }
82 |
83 | .odometer.odometer-auto-theme, .odometer.odometer-theme-default {
84 | font-family: "Helvetica Neue", sans-serif;
85 | line-height: 1.1em;
86 | }
87 | .odometer.odometer-auto-theme .odometer-value, .odometer.odometer-theme-default .odometer-value {
88 | text-align: center;
89 | }
90 |
--------------------------------------------------------------------------------
/OldClassic/css/style.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: "Junegull";
3 | src: url("../static/Junegull-Regular.ttf");
4 |
5 | }
6 |
7 | body,html{
8 | padding: 0;
9 | margin: 0;
10 | overflow-x: hidden;
11 | }
12 | #main{
13 | font-family: Junegull;
14 | height: 190px;
15 | width: 500px;
16 | overflow: hidden;
17 | color: white;
18 | }
19 | #target{
20 | position: relative;
21 | height: 190px;
22 | width: 500px;
23 | -webkit-mask-image: url(../static/mask.svg);
24 | mask-image: url(../static/mask.svg);
25 | }
26 |
27 | #bg{
28 | position: absolute;
29 | height: 125px;
30 | width: 500px;
31 | object-fit: cover;
32 | z-index: -1;
33 | }
34 | #bgDark{
35 | position: absolute;
36 | height: 125px;
37 | width: 500px;
38 | background-color: rgba(0, 0, 0, 0.65);
39 | }
40 | #title{
41 | position: absolute;
42 | font-size: 25px;
43 | width: max-content;
44 | max-height: 35px;
45 | top: 5px;
46 | overflow:hidden;
47 | animation: slide 15s linear infinite;
48 | }
49 | @keyframes slide {
50 | 0% {transform: translate(510px);}
51 | 100% { transform: translate(-100%);; }
52 | }
53 | #status{
54 | height: 65px;
55 | width: 500px;
56 | background-color: #141414;
57 | position: absolute;
58 | top:125px;
59 | display: flex;
60 | justify-content: space-between;
61 | }
62 | .pp{
63 | width: 200px;
64 | height: 65px;
65 | display: flex;
66 | align-items: center;
67 | justify-content: center
68 | }
69 | #ppWrapper{
70 | font-size: 40px;
71 |
72 | }
73 | #mistakes{
74 | display: flex;
75 | margin-top: 6px;
76 | margin-bottom: 10px;
77 | justify-content: space-around;
78 | width: 300px;
79 | font-size: 20px;
80 | text-align: center !important;
81 | color: #7C7879;
82 | }
83 | .mistakes{
84 | margin-top: 5px;
85 | color: white;
86 | }
87 | .text{
88 | font-family: Junegull !important;
89 | }
90 |
91 | .odometer .odometer-digit .odometer-value {
92 | width: 100%;
93 | }
94 | #canvas{
95 | position: absolute;
96 | bottom: 65px;
97 | }
98 | #progress{
99 | bottom: 65px;
100 | position: absolute;
101 | width: 500px;
102 | overflow: hidden;
103 | transition: ease 600ms;
104 | }
--------------------------------------------------------------------------------
/OldClassic/deps/reconnecting-websocket.min.js:
--------------------------------------------------------------------------------
1 | !function(a,b){"function"==typeof define&&define.amd?define([],b):"undefined"!=typeof module&&module.exports?module.exports=b():a.ReconnectingWebSocket=b()}(this,function(){function a(b,c,d){function l(a,b){var c=document.createEvent("CustomEvent");return c.initCustomEvent(a,!1,!1,b),c}var e={debug:!1,automaticOpen:!0,reconnectInterval:1e3,maxReconnectInterval:3e4,reconnectDecay:1.5,timeoutInterval:2e3};d||(d={});for(var f in e)this[f]="undefined"!=typeof d[f]?d[f]:e[f];this.url=b,this.reconnectAttempts=0,this.readyState=WebSocket.CONNECTING,this.protocol=null;var h,g=this,i=!1,j=!1,k=document.createElement("div");k.addEventListener("open",function(a){g.onopen(a)}),k.addEventListener("close",function(a){g.onclose(a)}),k.addEventListener("connecting",function(a){g.onconnecting(a)}),k.addEventListener("message",function(a){g.onmessage(a)}),k.addEventListener("error",function(a){g.onerror(a)}),this.addEventListener=k.addEventListener.bind(k),this.removeEventListener=k.removeEventListener.bind(k),this.dispatchEvent=k.dispatchEvent.bind(k),this.open=function(b){h=new WebSocket(g.url,c||[]),b||k.dispatchEvent(l("connecting")),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","attempt-connect",g.url);var d=h,e=setTimeout(function(){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","connection-timeout",g.url),j=!0,d.close(),j=!1},g.timeoutInterval);h.onopen=function(){clearTimeout(e),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onopen",g.url),g.protocol=h.protocol,g.readyState=WebSocket.OPEN,g.reconnectAttempts=0;var d=l("open");d.isReconnect=b,b=!1,k.dispatchEvent(d)},h.onclose=function(c){if(clearTimeout(e),h=null,i)g.readyState=WebSocket.CLOSED,k.dispatchEvent(l("close"));else{g.readyState=WebSocket.CONNECTING;var d=l("connecting");d.code=c.code,d.reason=c.reason,d.wasClean=c.wasClean,k.dispatchEvent(d),b||j||((g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onclose",g.url),k.dispatchEvent(l("close")));var e=g.reconnectInterval*Math.pow(g.reconnectDecay,g.reconnectAttempts);setTimeout(function(){g.reconnectAttempts++,g.open(!0)},e>g.maxReconnectInterval?g.maxReconnectInterval:e)}},h.onmessage=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onmessage",g.url,b.data);var c=l("message");c.data=b.data,k.dispatchEvent(c)},h.onerror=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onerror",g.url,b),k.dispatchEvent(l("error"))}},1==this.automaticOpen&&this.open(!1),this.send=function(b){if(h)return(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","send",g.url,b),h.send(b);throw"INVALID_STATE_ERR : Pausing to reconnect websocket"},this.close=function(a,b){"undefined"==typeof a&&(a=1e3),i=!0,h&&h.close(a,b)},this.refresh=function(){h&&h.close()}}return a.prototype.onopen=function(){},a.prototype.onclose=function(){},a.prototype.onconnecting=function(){},a.prototype.onmessage=function(){},a.prototype.onerror=function(){},a.debugAll=!1,a.CONNECTING=WebSocket.CONNECTING,a.OPEN=WebSocket.OPEN,a.CLOSING=WebSocket.CLOSING,a.CLOSED=WebSocket.CLOSED,a});
2 |
--------------------------------------------------------------------------------
/OldClassic/deps/smooth.js:
--------------------------------------------------------------------------------
1 | function smooth(arr, windowSize, getter = (value) => value, setter) {
2 | const get = getter
3 | const result = []
4 |
5 | for (let i = 0; i < arr.length; i += 1) {
6 | const leftOffeset = i - windowSize
7 | const from = leftOffeset >= 0 ? leftOffeset : 0
8 | const to = i + windowSize + 1
9 |
10 | let count = 0
11 | let sum = 0
12 | for (let j = from; j < to && j < arr.length; j += 1) {
13 | sum += get(arr[j])
14 | count += 1
15 | }
16 |
17 | result[i] = setter ? setter(arr[i], sum / count) : sum / count
18 | }
19 |
20 | return result
21 | }
22 |
23 | exports = smooth
--------------------------------------------------------------------------------
/OldClassic/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
![]()
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
30 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/OldClassic/static/Junegull-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/OldClassic/static/Junegull-Regular.ttf
--------------------------------------------------------------------------------
/OldClassic/static/mask.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/Overlay/README.md:
--------------------------------------------------------------------------------
1 | # How to use
2 |
3 | ### Font
4 | To set custom font you need to add font file to resources folder and change src url in index.css file to your font.
5 | All elements in index.css file have property font-size amount of pixels can be modified as you want.
6 |
7 | ### Score bar
8 | To change Score bar image you need to add scorebar-bg and scorebar-colour to resource folder and set them in index.html,
9 | also you need to specified width property of your scorebar-colour in index.css in sbColor element.
10 |
11 | ### Position
12 | all elements positioned absolutely in 1920 x 1080 area in index.css you can find properties: top left right and bottom
13 | For example left: 0 and bottom: 0 will position element to the left bottom corner
14 |
--------------------------------------------------------------------------------
/Overlay/deps/reconnecting-websocket.min.js:
--------------------------------------------------------------------------------
1 | !function(a,b){"function"==typeof define&&define.amd?define([],b):"undefined"!=typeof module&&module.exports?module.exports=b():a.ReconnectingWebSocket=b()}(this,function(){function a(b,c,d){function l(a,b){var c=document.createEvent("CustomEvent");return c.initCustomEvent(a,!1,!1,b),c}var e={debug:!1,automaticOpen:!0,reconnectInterval:1e3,maxReconnectInterval:3e4,reconnectDecay:1.5,timeoutInterval:2e3};d||(d={});for(var f in e)this[f]="undefined"!=typeof d[f]?d[f]:e[f];this.url=b,this.reconnectAttempts=0,this.readyState=WebSocket.CONNECTING,this.protocol=null;var h,g=this,i=!1,j=!1,k=document.createElement("div");k.addEventListener("open",function(a){g.onopen(a)}),k.addEventListener("close",function(a){g.onclose(a)}),k.addEventListener("connecting",function(a){g.onconnecting(a)}),k.addEventListener("message",function(a){g.onmessage(a)}),k.addEventListener("error",function(a){g.onerror(a)}),this.addEventListener=k.addEventListener.bind(k),this.removeEventListener=k.removeEventListener.bind(k),this.dispatchEvent=k.dispatchEvent.bind(k),this.open=function(b){h=new WebSocket(g.url,c||[]),b||k.dispatchEvent(l("connecting")),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","attempt-connect",g.url);var d=h,e=setTimeout(function(){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","connection-timeout",g.url),j=!0,d.close(),j=!1},g.timeoutInterval);h.onopen=function(){clearTimeout(e),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onopen",g.url),g.protocol=h.protocol,g.readyState=WebSocket.OPEN,g.reconnectAttempts=0;var d=l("open");d.isReconnect=b,b=!1,k.dispatchEvent(d)},h.onclose=function(c){if(clearTimeout(e),h=null,i)g.readyState=WebSocket.CLOSED,k.dispatchEvent(l("close"));else{g.readyState=WebSocket.CONNECTING;var d=l("connecting");d.code=c.code,d.reason=c.reason,d.wasClean=c.wasClean,k.dispatchEvent(d),b||j||((g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onclose",g.url),k.dispatchEvent(l("close")));var e=g.reconnectInterval*Math.pow(g.reconnectDecay,g.reconnectAttempts);setTimeout(function(){g.reconnectAttempts++,g.open(!0)},e>g.maxReconnectInterval?g.maxReconnectInterval:e)}},h.onmessage=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onmessage",g.url,b.data);var c=l("message");c.data=b.data,k.dispatchEvent(c)},h.onerror=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onerror",g.url,b),k.dispatchEvent(l("error"))}},1==this.automaticOpen&&this.open(!1),this.send=function(b){if(h)return(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","send",g.url,b),h.send(b);throw"INVALID_STATE_ERR : Pausing to reconnect websocket"},this.close=function(a,b){"undefined"==typeof a&&(a=1e3),i=!0,h&&h.close(a,b)},this.refresh=function(){h&&h.close()}}return a.prototype.onopen=function(){},a.prototype.onclose=function(){},a.prototype.onconnecting=function(){},a.prototype.onmessage=function(){},a.prototype.onerror=function(){},a.debugAll=!1,a.CONNECTING=WebSocket.CONNECTING,a.OPEN=WebSocket.OPEN,a.CLOSING=WebSocket.CLOSING,a.CLOSED=WebSocket.CLOSED,a});
2 |
--------------------------------------------------------------------------------
/Overlay/index.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: "CustomFont";
3 | src: url("./resources/Roboto-Bold.ttf");
4 | }
5 |
6 | body,html{
7 | margin:0;
8 | padding:0;
9 | width: 1920px;
10 | height: 1080px;
11 | font-family: "CustomFont";
12 | }
13 |
14 | #wrapper{
15 | opacity: 0;
16 | transition: 300ms;
17 | }
18 | #sb{
19 | position: absolute;
20 | top: 0;
21 | left: 0;
22 | }
23 | #sbBg{
24 | position: absolute;
25 | top: 0;
26 | left: 0;
27 | }
28 | #sbColor{
29 | position: absolute;
30 | top: 8px;
31 | left: 12px;
32 | transition: 300ms;
33 | overflow: hidden;
34 | width: 645px;
35 | }
36 | #score{
37 | position: absolute;
38 | top: 0px;
39 | right: 5px;
40 | font-size: 80px;
41 | color: white;
42 | text-shadow:
43 | -2px -2px 0 #000,
44 | 2px -2px 0 #000,
45 | -2px 2px 0 #000,
46 | 2px 2px 0 #000;
47 | }
48 | #acc{
49 | position: absolute;
50 | top: 90px;
51 | right: 5px;
52 | font-size: 50px;
53 | color: white;
54 | text-shadow:
55 | -2px -2px 0 #000,
56 | 2px -2px 0 #000,
57 | -2px 2px 0 #000,
58 | 2px 2px 0 #000;
59 | display: flex;
60 | }
61 |
62 | #combo{
63 | position: absolute;
64 | bottom: 0px;
65 | left: 10px;
66 | font-size: 80px;
67 | color: white;
68 | text-shadow:
69 | -2px -2px 0 #000,
70 | 2px -2px 0 #000,
71 | -2px 2px 0 #000,
72 | 2px 2px 0 #000;
73 | display: flex;
74 | }
75 |
--------------------------------------------------------------------------------
/Overlay/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
overlay
9 |
10 |
11 |
12 |
13 |
14 |
15 |

16 |
17 |
18 |

19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/Overlay/index.js:
--------------------------------------------------------------------------------
1 | let socket = new ReconnectingWebSocket("ws://127.0.0.1:24050/ws");
2 | let scoreColor = document.getElementById('sbColor')
3 | let score = document.getElementById('score');
4 | let wrapper = document.getElementById('wrapper');
5 | let widthBase = scoreColor.offsetWidth;
6 |
7 | //score.innerHTML = '0'.padStart(8,"0")
8 |
9 | socket.onopen = () => {
10 | console.log("Successfully Connected");
11 | };
12 |
13 | socket.onclose = event => {
14 | console.log("Socket Closed Connection: ", event);
15 | socket.send("Client Closed!")
16 | };
17 |
18 | socket.onerror = error => {
19 | console.log("Socket Error: ", error);
20 | };
21 |
22 |
23 | let animation = {
24 | acc: new CountUp('accdata', 0, 0, 2, .2, {useEasing: true, useGrouping: true, separator: " ", decimal: "." }),
25 | combo: new CountUp('combodata', 0, 0, 0, .2, {useEasing: true, useGrouping: true, separator: " ", decimal: "." }),
26 | }
27 |
28 | let tempState;
29 |
30 | socket.onmessage = event => {
31 | let data = JSON.parse(event.data);
32 | if(tempState !== data.menu.state){
33 | tempState = data.menu.state;
34 | if(tempState == 2 ){
35 | wrapper.style.opacity = 1;
36 | }
37 | else{
38 | wrapper.style.opacity = 0;
39 | }
40 | }
41 | if(data.gameplay.hp.smooth != "" || data.gameplay.hp.smooth != null || data.gameplay.hp.smooth != undefined){
42 | let step = widthBase/200;
43 | scoreColor.style.width = step * data.gameplay.hp.smooth +'px'
44 | }
45 | if(data.gameplay.score != ""){
46 | let text = data.gameplay.score.toString().padStart(8,"0");
47 | score.innerHTML = text;
48 | }
49 | if(data.gameplay.accuracy != ""){
50 | animation.acc.update(data.gameplay.accuracy)
51 | }
52 | if(data.gameplay.combo.current != ""){
53 | animation.combo.update(data.gameplay.combo.current)
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/Overlay/resources/Roboto-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/Overlay/resources/Roboto-Bold.ttf
--------------------------------------------------------------------------------
/Overlay/resources/scorebar-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/Overlay/resources/scorebar-bg.png
--------------------------------------------------------------------------------
/Overlay/resources/scorebar-colour.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/Overlay/resources/scorebar-colour.png
--------------------------------------------------------------------------------
/Simplistic/deps/reconnecting-websocket.min.js:
--------------------------------------------------------------------------------
1 | !function(a,b){"function"==typeof define&&define.amd?define([],b):"undefined"!=typeof module&&module.exports?module.exports=b():a.ReconnectingWebSocket=b()}(this,function(){function a(b,c,d){function l(a,b){var c=document.createEvent("CustomEvent");return c.initCustomEvent(a,!1,!1,b),c}var e={debug:!1,automaticOpen:!0,reconnectInterval:1e3,maxReconnectInterval:3e4,reconnectDecay:1.5,timeoutInterval:2e3};d||(d={});for(var f in e)this[f]="undefined"!=typeof d[f]?d[f]:e[f];this.url=b,this.reconnectAttempts=0,this.readyState=WebSocket.CONNECTING,this.protocol=null;var h,g=this,i=!1,j=!1,k=document.createElement("div");k.addEventListener("open",function(a){g.onopen(a)}),k.addEventListener("close",function(a){g.onclose(a)}),k.addEventListener("connecting",function(a){g.onconnecting(a)}),k.addEventListener("message",function(a){g.onmessage(a)}),k.addEventListener("error",function(a){g.onerror(a)}),this.addEventListener=k.addEventListener.bind(k),this.removeEventListener=k.removeEventListener.bind(k),this.dispatchEvent=k.dispatchEvent.bind(k),this.open=function(b){h=new WebSocket(g.url,c||[]),b||k.dispatchEvent(l("connecting")),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","attempt-connect",g.url);var d=h,e=setTimeout(function(){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","connection-timeout",g.url),j=!0,d.close(),j=!1},g.timeoutInterval);h.onopen=function(){clearTimeout(e),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onopen",g.url),g.protocol=h.protocol,g.readyState=WebSocket.OPEN,g.reconnectAttempts=0;var d=l("open");d.isReconnect=b,b=!1,k.dispatchEvent(d)},h.onclose=function(c){if(clearTimeout(e),h=null,i)g.readyState=WebSocket.CLOSED,k.dispatchEvent(l("close"));else{g.readyState=WebSocket.CONNECTING;var d=l("connecting");d.code=c.code,d.reason=c.reason,d.wasClean=c.wasClean,k.dispatchEvent(d),b||j||((g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onclose",g.url),k.dispatchEvent(l("close")));var e=g.reconnectInterval*Math.pow(g.reconnectDecay,g.reconnectAttempts);setTimeout(function(){g.reconnectAttempts++,g.open(!0)},e>g.maxReconnectInterval?g.maxReconnectInterval:e)}},h.onmessage=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onmessage",g.url,b.data);var c=l("message");c.data=b.data,k.dispatchEvent(c)},h.onerror=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onerror",g.url,b),k.dispatchEvent(l("error"))}},1==this.automaticOpen&&this.open(!1),this.send=function(b){if(h)return(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","send",g.url,b),h.send(b);throw"INVALID_STATE_ERR : Pausing to reconnect websocket"},this.close=function(a,b){"undefined"==typeof a&&(a=1e3),i=!0,h&&h.close(a,b)},this.refresh=function(){h&&h.close()}}return a.prototype.onopen=function(){},a.prototype.onclose=function(){},a.prototype.onconnecting=function(){},a.prototype.onmessage=function(){},a.prototype.onerror=function(){},a.debugAll=!1,a.CONNECTING=WebSocket.CONNECTING,a.OPEN=WebSocket.OPEN,a.CLOSING=WebSocket.CLOSING,a.CLOSED=WebSocket.CLOSED,a});
--------------------------------------------------------------------------------
/Simplistic/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Simplistic
10 |
11 |
12 |
13 |
14 |
15 | SS
16 |
17 |
18 |
19 |
20 | 123
21 | 123
22 |
23 |
24 |
25 |
26 |
27 | 999pp
28 |
29 |
30 |
31 | 123
32 |
33 |
34 |
35 | 123
36 |
37 |
38 |
39 | 123
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 | 234pp
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/TrafficLight/deps/reconnecting-websocket.min.js:
--------------------------------------------------------------------------------
1 | !function(a,b){"function"==typeof define&&define.amd?define([],b):"undefined"!=typeof module&&module.exports?module.exports=b():a.ReconnectingWebSocket=b()}(this,function(){function a(b,c,d){function l(a,b){var c=document.createEvent("CustomEvent");return c.initCustomEvent(a,!1,!1,b),c}var e={debug:!1,automaticOpen:!0,reconnectInterval:1e3,maxReconnectInterval:3e4,reconnectDecay:1.5,timeoutInterval:2e3};d||(d={});for(var f in e)this[f]="undefined"!=typeof d[f]?d[f]:e[f];this.url=b,this.reconnectAttempts=0,this.readyState=WebSocket.CONNECTING,this.protocol=null;var h,g=this,i=!1,j=!1,k=document.createElement("div");k.addEventListener("open",function(a){g.onopen(a)}),k.addEventListener("close",function(a){g.onclose(a)}),k.addEventListener("connecting",function(a){g.onconnecting(a)}),k.addEventListener("message",function(a){g.onmessage(a)}),k.addEventListener("error",function(a){g.onerror(a)}),this.addEventListener=k.addEventListener.bind(k),this.removeEventListener=k.removeEventListener.bind(k),this.dispatchEvent=k.dispatchEvent.bind(k),this.open=function(b){h=new WebSocket(g.url,c||[]),b||k.dispatchEvent(l("connecting")),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","attempt-connect",g.url);var d=h,e=setTimeout(function(){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","connection-timeout",g.url),j=!0,d.close(),j=!1},g.timeoutInterval);h.onopen=function(){clearTimeout(e),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onopen",g.url),g.protocol=h.protocol,g.readyState=WebSocket.OPEN,g.reconnectAttempts=0;var d=l("open");d.isReconnect=b,b=!1,k.dispatchEvent(d)},h.onclose=function(c){if(clearTimeout(e),h=null,i)g.readyState=WebSocket.CLOSED,k.dispatchEvent(l("close"));else{g.readyState=WebSocket.CONNECTING;var d=l("connecting");d.code=c.code,d.reason=c.reason,d.wasClean=c.wasClean,k.dispatchEvent(d),b||j||((g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onclose",g.url),k.dispatchEvent(l("close")));var e=g.reconnectInterval*Math.pow(g.reconnectDecay,g.reconnectAttempts);setTimeout(function(){g.reconnectAttempts++,g.open(!0)},e>g.maxReconnectInterval?g.maxReconnectInterval:e)}},h.onmessage=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onmessage",g.url,b.data);var c=l("message");c.data=b.data,k.dispatchEvent(c)},h.onerror=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onerror",g.url,b),k.dispatchEvent(l("error"))}},1==this.automaticOpen&&this.open(!1),this.send=function(b){if(h)return(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","send",g.url,b),h.send(b);throw"INVALID_STATE_ERR : Pausing to reconnect websocket"},this.close=function(a,b){"undefined"==typeof a&&(a=1e3),i=!0,h&&h.close(a,b)},this.refresh=function(){h&&h.close()}}return a.prototype.onopen=function(){},a.prototype.onclose=function(){},a.prototype.onconnecting=function(){},a.prototype.onmessage=function(){},a.prototype.onerror=function(){},a.debugAll=!1,a.CONNECTING=WebSocket.CONNECTING,a.OPEN=WebSocket.OPEN,a.CLOSING=WebSocket.CLOSING,a.CLOSED=WebSocket.CLOSED,a});
2 |
--------------------------------------------------------------------------------
/TrafficLight/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
![]()
24 |
25 |
26 |
27 |
28 |
29 |
30 | 0
31 | 0
32 | 0
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/TrafficLight/index.js:
--------------------------------------------------------------------------------
1 | let socket = new ReconnectingWebSocket("ws://127.0.0.1:24050/ws");
2 | let mapid = document.getElementById('mapid');
3 |
4 | let bg = document.getElementById("bg");
5 | let pp = document.getElementById("pp");
6 | let hun = document.getElementById("green");
7 | let fifty = document.getElementById("purple");
8 | let miss = document.getElementById("red");
9 |
10 |
11 | socket.onopen = () => {
12 | console.log("Successfully Connected");
13 | };
14 |
15 | socket.onclose = event => {
16 | console.log("Socket Closed Connection: ", event);
17 | socket.send("Client Closed!")
18 | };
19 |
20 | socket.onerror = error => {
21 | console.log("Socket Error: ", error);
22 | };
23 | let tempState;
24 | let tempImg;
25 | socket.onmessage = event => {
26 | let data = JSON.parse(event.data);
27 | if (tempState !== data.menu.bm.path.full) {
28 | tempState = data.menu.bm.path.full
29 | bg.setAttribute('src', `http://127.0.0.1:24050/Songs/${data.menu.bm.path.full}?a=${Math.random(10000)}`)
30 | mapid.innerHTML = data.menu.bm.id;
31 | }
32 | if (data.gameplay.pp.current != '') {
33 | let ppData = data.gameplay.pp.current;
34 | pp.innerHTML = Math.round(ppData) + "pp"
35 | } else {
36 | pp.innerHTML = 0 + "pp"
37 | }
38 | if (data.gameplay.hits[100] > 0) {
39 | hun.innerHTML = data.gameplay.hits[100];
40 | } else {
41 | hun.innerHTML = 0
42 | }
43 | if (data.gameplay.hits[50] > 0) {
44 | fifty.innerHTML = data.gameplay.hits[50];
45 | } else {
46 | fifty.innerHTML = 0
47 | }
48 | if (data.gameplay.hits[0] > 0) {
49 | miss.innerHTML = data.gameplay.hits[0];
50 | } else {
51 | miss.innerHTML = 0
52 | }
53 | }
54 |
55 |
56 |
57 | //Received: '{"menuContainer":{"osuState":2,"bmID":1219126,"bmSetID":575767,"CS":4,"AR":9.5,"OD":8,"HP":6,"bmInfo":"BTS - Not Today [Tomorrow]","bmFolder":"575767 BTS - Not Today","pathToBM":"BTS - Not Today (DeRandom Otaku) [Tomorrow].osu","bmCurrentTime":8861,"bmMinBPM":0,"bmMaxBPM":0},"gameplayContainer":{"300":21,"100":0,"50":0,"miss":0,"accuracy":100,"score":24612,"combo":36,"gameMode":0,"appliedMods":2048,"maxCombo":36,"pp":""}}'
--------------------------------------------------------------------------------
/TrafficLight/webfonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/TrafficLight/webfonts/fa-solid-900.woff2
--------------------------------------------------------------------------------
/UnstableRate/deps/Roboto-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/UnstableRate/deps/Roboto-Bold.ttf
--------------------------------------------------------------------------------
/UnstableRate/deps/reconnecting-websocket.min.js:
--------------------------------------------------------------------------------
1 | !function(a,b){"function"==typeof define&&define.amd?define([],b):"undefined"!=typeof module&&module.exports?module.exports=b():a.ReconnectingWebSocket=b()}(this,function(){function a(b,c,d){function l(a,b){var c=document.createEvent("CustomEvent");return c.initCustomEvent(a,!1,!1,b),c}var e={debug:!1,automaticOpen:!0,reconnectInterval:1e3,maxReconnectInterval:3e4,reconnectDecay:1.5,timeoutInterval:2e3};d||(d={});for(var f in e)this[f]="undefined"!=typeof d[f]?d[f]:e[f];this.url=b,this.reconnectAttempts=0,this.readyState=WebSocket.CONNECTING,this.protocol=null;var h,g=this,i=!1,j=!1,k=document.createElement("div");k.addEventListener("open",function(a){g.onopen(a)}),k.addEventListener("close",function(a){g.onclose(a)}),k.addEventListener("connecting",function(a){g.onconnecting(a)}),k.addEventListener("message",function(a){g.onmessage(a)}),k.addEventListener("error",function(a){g.onerror(a)}),this.addEventListener=k.addEventListener.bind(k),this.removeEventListener=k.removeEventListener.bind(k),this.dispatchEvent=k.dispatchEvent.bind(k),this.open=function(b){h=new WebSocket(g.url,c||[]),b||k.dispatchEvent(l("connecting")),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","attempt-connect",g.url);var d=h,e=setTimeout(function(){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","connection-timeout",g.url),j=!0,d.close(),j=!1},g.timeoutInterval);h.onopen=function(){clearTimeout(e),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onopen",g.url),g.protocol=h.protocol,g.readyState=WebSocket.OPEN,g.reconnectAttempts=0;var d=l("open");d.isReconnect=b,b=!1,k.dispatchEvent(d)},h.onclose=function(c){if(clearTimeout(e),h=null,i)g.readyState=WebSocket.CLOSED,k.dispatchEvent(l("close"));else{g.readyState=WebSocket.CONNECTING;var d=l("connecting");d.code=c.code,d.reason=c.reason,d.wasClean=c.wasClean,k.dispatchEvent(d),b||j||((g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onclose",g.url),k.dispatchEvent(l("close")));var e=g.reconnectInterval*Math.pow(g.reconnectDecay,g.reconnectAttempts);setTimeout(function(){g.reconnectAttempts++,g.open(!0)},e>g.maxReconnectInterval?g.maxReconnectInterval:e)}},h.onmessage=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onmessage",g.url,b.data);var c=l("message");c.data=b.data,k.dispatchEvent(c)},h.onerror=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onerror",g.url,b),k.dispatchEvent(l("error"))}},1==this.automaticOpen&&this.open(!1),this.send=function(b){if(h)return(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","send",g.url,b),h.send(b);throw"INVALID_STATE_ERR : Pausing to reconnect websocket"},this.close=function(a,b){"undefined"==typeof a&&(a=1e3),i=!0,h&&h.close(a,b)},this.refresh=function(){h&&h.close()}}return a.prototype.onopen=function(){},a.prototype.onclose=function(){},a.prototype.onconnecting=function(){},a.prototype.onmessage=function(){},a.prototype.onerror=function(){},a.debugAll=!1,a.CONNECTING=WebSocket.CONNECTING,a.OPEN=WebSocket.OPEN,a.CLOSING=WebSocket.CLOSING,a.CLOSED=WebSocket.CLOSED,a});
2 |
--------------------------------------------------------------------------------
/UnstableRate/index.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: "Roboto-Bold";
3 | src: url("deps/Roboto-Bold.ttf");
4 | }
5 | #ur{
6 | opacity: 0;
7 | font-size: 24px;
8 | transition: 300ms ease-in-out;
9 | color: white;
10 | font-family: "Roboto-Bold";
11 | text-align: center;
12 | width: 300px;
13 | }
--------------------------------------------------------------------------------
/UnstableRate/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
ur
9 |
10 |
11 |
12 |
13 | 0
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/UnstableRate/index.js:
--------------------------------------------------------------------------------
1 | let socket = new ReconnectingWebSocket("ws://127.0.0.1:24050/ws");
2 | let ur = document.getElementById('ur')
3 | socket.onopen = () => {
4 | console.log("Successfully Connected");
5 | };
6 |
7 | socket.onclose = event => {
8 | console.log("Socket Closed Connection: ", event);
9 | socket.send("Client Closed!")
10 | };
11 |
12 | socket.onerror = error => {
13 | console.log("Socket Error: ", error);
14 | };
15 | let animation = {
16 | ur: new CountUp('ur', 0, 0, 2, 1, { decimalPlaces: 2, useEasing: true, useGrouping: false, separator: " ", decimal: "." }),
17 | };
18 | let tempState;
19 | socket.onmessage = event => {
20 | let data = JSON.parse(event.data);
21 | if (tempState !== data.menu.state) {
22 | tempState = data.menu.state;
23 | if (tempState == 2) {
24 | ur.style.opacity = 1
25 | } else {
26 | ur.style.opacity = 0
27 | }
28 | }
29 | if (data.gameplay.hits.unstableRate != '') {
30 | animation.ur.update(data.gameplay.hits.unstableRate)
31 | } else {
32 | animation.ur.update(0)
33 | }
34 | }
--------------------------------------------------------------------------------
/VictimCrasherCompact/css/odometr.css:
--------------------------------------------------------------------------------
1 | .odometer.odometer-auto-theme, .odometer.odometer-theme-default {
2 | display: inline-block;
3 | vertical-align: middle;
4 | *vertical-align: auto;
5 | *zoom: 1;
6 | *display: inline;
7 | position: relative;
8 | }
9 | .odometer.odometer-auto-theme .odometer-digit, .odometer.odometer-theme-default .odometer-digit {
10 | display: inline-block;
11 | vertical-align: middle;
12 | *vertical-align: auto;
13 | *zoom: 1;
14 | *display: inline;
15 | position: relative;
16 | }
17 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-spacer, .odometer.odometer-theme-default .odometer-digit .odometer-digit-spacer {
18 | display: inline-block;
19 | vertical-align: middle;
20 | *vertical-align: auto;
21 | *zoom: 1;
22 | *display: inline;
23 | visibility: hidden;
24 | }
25 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-inner, .odometer.odometer-theme-default .odometer-digit .odometer-digit-inner {
26 | text-align: left;
27 | display: block;
28 | position: absolute;
29 | top: 0;
30 | left: 0;
31 | right: 0;
32 | bottom: 0;
33 | overflow: hidden;
34 | }
35 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon, .odometer.odometer-theme-default .odometer-digit .odometer-ribbon {
36 | display: block;
37 | }
38 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon-inner, .odometer.odometer-theme-default .odometer-digit .odometer-ribbon-inner {
39 | display: block;
40 | -webkit-backface-visibility: hidden;
41 | }
42 | .odometer.odometer-auto-theme .odometer-digit .odometer-value, .odometer.odometer-theme-default .odometer-digit .odometer-value {
43 | display: block;
44 | -webkit-transform: translateZ(0);
45 | }
46 | .odometer.odometer-auto-theme .odometer-digit .odometer-value.odometer-last-value, .odometer.odometer-theme-default .odometer-digit .odometer-value.odometer-last-value {
47 | position: absolute;
48 | }
49 | .odometer.odometer-auto-theme.odometer-animating-up .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-up .odometer-ribbon-inner {
50 | -webkit-transition: -webkit-transform 300ms;
51 | -moz-transition: -moz-transform 300ms;
52 | -ms-transition: -ms-transform 300ms;
53 | -o-transition: -o-transform 300ms;
54 | transition: transform 300ms;
55 | }
56 | .odometer.odometer-auto-theme.odometer-animating-up.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-up.odometer-animating .odometer-ribbon-inner {
57 | -webkit-transform: translateY(-100%);
58 | -moz-transform: translateY(-100%);
59 | -ms-transform: translateY(-100%);
60 | -o-transform: translateY(-100%);
61 | transform: translateY(-100%);
62 | }
63 | .odometer.odometer-auto-theme.odometer-animating-down .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-down .odometer-ribbon-inner {
64 | -webkit-transform: translateY(-100%);
65 | -moz-transform: translateY(-100%);
66 | -ms-transform: translateY(-100%);
67 | -o-transform: translateY(-100%);
68 | transform: translateY(-100%);
69 | }
70 | .odometer.odometer-auto-theme.odometer-animating-down.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-down.odometer-animating .odometer-ribbon-inner {
71 | -webkit-transition: -webkit-transform 300ms;
72 | -moz-transition: -moz-transform 300ms;
73 | -ms-transition: -ms-transform 300ms;
74 | -o-transition: -o-transform 300ms;
75 | transition: transform 300ms;
76 | -webkit-transform: translateY(0);
77 | -moz-transform: translateY(0);
78 | -ms-transform: translateY(0);
79 | -o-transform: translateY(0);
80 | transform: translateY(0);
81 | }
82 |
83 | .odometer.odometer-auto-theme, .odometer.odometer-theme-default {
84 | font-family: "Helvetica Neue", sans-serif;
85 | line-height: 1.1em;
86 | }
87 | .odometer.odometer-auto-theme .odometer-value, .odometer.odometer-theme-default .odometer-value {
88 | text-align: center;
89 | }
90 |
--------------------------------------------------------------------------------
/VictimCrasherCompact/deps/reconnecting-websocket.min.js:
--------------------------------------------------------------------------------
1 | !function(a,b){"function"==typeof define&&define.amd?define([],b):"undefined"!=typeof module&&module.exports?module.exports=b():a.ReconnectingWebSocket=b()}(this,function(){function a(b,c,d){function l(a,b){var c=document.createEvent("CustomEvent");return c.initCustomEvent(a,!1,!1,b),c}var e={debug:!1,automaticOpen:!0,reconnectInterval:1e3,maxReconnectInterval:3e4,reconnectDecay:1.5,timeoutInterval:2e3};d||(d={});for(var f in e)this[f]="undefined"!=typeof d[f]?d[f]:e[f];this.url=b,this.reconnectAttempts=0,this.readyState=WebSocket.CONNECTING,this.protocol=null;var h,g=this,i=!1,j=!1,k=document.createElement("div");k.addEventListener("open",function(a){g.onopen(a)}),k.addEventListener("close",function(a){g.onclose(a)}),k.addEventListener("connecting",function(a){g.onconnecting(a)}),k.addEventListener("message",function(a){g.onmessage(a)}),k.addEventListener("error",function(a){g.onerror(a)}),this.addEventListener=k.addEventListener.bind(k),this.removeEventListener=k.removeEventListener.bind(k),this.dispatchEvent=k.dispatchEvent.bind(k),this.open=function(b){h=new WebSocket(g.url,c||[]),b||k.dispatchEvent(l("connecting")),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","attempt-connect",g.url);var d=h,e=setTimeout(function(){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","connection-timeout",g.url),j=!0,d.close(),j=!1},g.timeoutInterval);h.onopen=function(){clearTimeout(e),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onopen",g.url),g.protocol=h.protocol,g.readyState=WebSocket.OPEN,g.reconnectAttempts=0;var d=l("open");d.isReconnect=b,b=!1,k.dispatchEvent(d)},h.onclose=function(c){if(clearTimeout(e),h=null,i)g.readyState=WebSocket.CLOSED,k.dispatchEvent(l("close"));else{g.readyState=WebSocket.CONNECTING;var d=l("connecting");d.code=c.code,d.reason=c.reason,d.wasClean=c.wasClean,k.dispatchEvent(d),b||j||((g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onclose",g.url),k.dispatchEvent(l("close")));var e=g.reconnectInterval*Math.pow(g.reconnectDecay,g.reconnectAttempts);setTimeout(function(){g.reconnectAttempts++,g.open(!0)},e>g.maxReconnectInterval?g.maxReconnectInterval:e)}},h.onmessage=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onmessage",g.url,b.data);var c=l("message");c.data=b.data,k.dispatchEvent(c)},h.onerror=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onerror",g.url,b),k.dispatchEvent(l("error"))}},1==this.automaticOpen&&this.open(!1),this.send=function(b){if(h)return(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","send",g.url,b),h.send(b);throw"INVALID_STATE_ERR : Pausing to reconnect websocket"},this.close=function(a,b){"undefined"==typeof a&&(a=1e3),i=!0,h&&h.close(a,b)},this.refresh=function(){h&&h.close()}}return a.prototype.onopen=function(){},a.prototype.onclose=function(){},a.prototype.onconnecting=function(){},a.prototype.onmessage=function(){},a.prototype.onerror=function(){},a.debugAll=!1,a.CONNECTING=WebSocket.CONNECTING,a.OPEN=WebSocket.OPEN,a.CLOSING=WebSocket.CLOSING,a.CLOSED=WebSocket.CLOSED,a});
2 |
--------------------------------------------------------------------------------
/VictimCrasherCompact/fonts/QTVagaRound-Bold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/fonts/QTVagaRound-Bold.otf
--------------------------------------------------------------------------------
/VictimCrasherCompact/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
![]()
16 |
17 |
21 |
22 |
CS
23 |
24 |
25 |
AR
26 |
27 |
28 |
OD
29 |
30 |
31 |
HP
32 |
33 |
34 |
35 |
36 |
37 |
38 | pp
39 |
40 |
41 |
42 |
43 | 0
44 |
45 |
46 |
47 | 0
48 |
49 |
50 |
51 | 0
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/autopilot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/static/autopilot.png
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/autoplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/static/autoplay.png
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/cinema.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/static/cinema.png
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/doubletime.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/static/doubletime.png
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/easy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/static/easy.png
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/flashlight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/static/flashlight.png
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/halftime.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/static/halftime.png
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/hardrock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/static/hardrock.png
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/hidden.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/static/hidden.png
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/mask.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/nightcore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/static/nightcore.png
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/nofail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/static/nofail.png
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/nomod.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/static/nomod.png
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/perfect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/static/perfect.png
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/relax.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/static/relax.png
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/spunout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/static/spunout.png
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/suddendeath.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/static/suddendeath.png
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/target.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/static/target.png
--------------------------------------------------------------------------------
/VictimCrasherCompact/static/v2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherCompact/static/v2.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/css/odometr.css:
--------------------------------------------------------------------------------
1 | .odometer.odometer-auto-theme, .odometer.odometer-theme-default {
2 | display: inline-block;
3 | vertical-align: middle;
4 | *vertical-align: auto;
5 | *zoom: 1;
6 | *display: inline;
7 | position: relative;
8 | }
9 | .odometer.odometer-auto-theme .odometer-digit, .odometer.odometer-theme-default .odometer-digit {
10 | display: inline-block;
11 | vertical-align: middle;
12 | *vertical-align: auto;
13 | *zoom: 1;
14 | *display: inline;
15 | position: relative;
16 | }
17 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-spacer, .odometer.odometer-theme-default .odometer-digit .odometer-digit-spacer {
18 | display: inline-block;
19 | vertical-align: middle;
20 | *vertical-align: auto;
21 | *zoom: 1;
22 | *display: inline;
23 | visibility: hidden;
24 | }
25 | .odometer.odometer-auto-theme .odometer-digit .odometer-digit-inner, .odometer.odometer-theme-default .odometer-digit .odometer-digit-inner {
26 | text-align: left;
27 | display: block;
28 | position: absolute;
29 | top: 0;
30 | left: 0;
31 | right: 0;
32 | bottom: 0;
33 | overflow: hidden;
34 | padding-left: 5px;
35 | padding-right: 5px;
36 | margin-left: -5px;
37 | margin-right: -5px;
38 | }
39 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon, .odometer.odometer-theme-default .odometer-digit .odometer-ribbon {
40 | display: block;
41 | }
42 | .odometer.odometer-auto-theme .odometer-digit .odometer-ribbon-inner, .odometer.odometer-theme-default .odometer-digit .odometer-ribbon-inner {
43 | display: block;
44 | -webkit-backface-visibility: hidden;
45 | }
46 | .odometer.odometer-auto-theme .odometer-digit .odometer-value, .odometer.odometer-theme-default .odometer-digit .odometer-value {
47 | display: block;
48 | -webkit-transform: translateZ(0);
49 | }
50 | .odometer.odometer-auto-theme .odometer-digit .odometer-value.odometer-last-value, .odometer.odometer-theme-default .odometer-digit .odometer-value.odometer-last-value {
51 | position: absolute;
52 | }
53 | .odometer.odometer-auto-theme.odometer-animating-up .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-up .odometer-ribbon-inner {
54 | -webkit-transition: -webkit-transform 300ms;
55 | -moz-transition: -moz-transform 300ms;
56 | -ms-transition: -ms-transform 300ms;
57 | -o-transition: -o-transform 300ms;
58 | transition: transform 300ms;
59 | }
60 | .odometer.odometer-auto-theme.odometer-animating-up.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-up.odometer-animating .odometer-ribbon-inner {
61 | -webkit-transform: translateY(-100%);
62 | -moz-transform: translateY(-100%);
63 | -ms-transform: translateY(-100%);
64 | -o-transform: translateY(-100%);
65 | transform: translateY(-100%);
66 | }
67 | .odometer.odometer-auto-theme.odometer-animating-down .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-down .odometer-ribbon-inner {
68 | -webkit-transform: translateY(-100%);
69 | -moz-transform: translateY(-100%);
70 | -ms-transform: translateY(-100%);
71 | -o-transform: translateY(-100%);
72 | transform: translateY(-100%);
73 | }
74 | .odometer.odometer-auto-theme.odometer-animating-down.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-down.odometer-animating .odometer-ribbon-inner {
75 | -webkit-transition: -webkit-transform 300ms;
76 | -moz-transition: -moz-transform 300ms;
77 | -ms-transition: -ms-transform 300ms;
78 | -o-transition: -o-transform 300ms;
79 | transition: transform 300ms;
80 | -webkit-transform: translateY(0);
81 | -moz-transform: translateY(0);
82 | -ms-transform: translateY(0);
83 | -o-transform: translateY(0);
84 | transform: translateY(0);
85 | }
86 |
87 | .odometer.odometer-auto-theme, .odometer.odometer-theme-default {
88 | font-family: "Helvetica Neue", sans-serif;
89 | line-height: 1.1em;
90 | }
91 | .odometer.odometer-auto-theme .odometer-value, .odometer.odometer-theme-default .odometer-value {
92 | text-align: center;
93 | }
94 |
--------------------------------------------------------------------------------
/VictimCrasherOverlay/deps/reconnecting-websocket.min.js:
--------------------------------------------------------------------------------
1 | !function(a,b){"function"==typeof define&&define.amd?define([],b):"undefined"!=typeof module&&module.exports?module.exports=b():a.ReconnectingWebSocket=b()}(this,function(){function a(b,c,d){function l(a,b){var c=document.createEvent("CustomEvent");return c.initCustomEvent(a,!1,!1,b),c}var e={debug:!1,automaticOpen:!0,reconnectInterval:1e3,maxReconnectInterval:3e4,reconnectDecay:1.5,timeoutInterval:2e3};d||(d={});for(var f in e)this[f]="undefined"!=typeof d[f]?d[f]:e[f];this.url=b,this.reconnectAttempts=0,this.readyState=WebSocket.CONNECTING,this.protocol=null;var h,g=this,i=!1,j=!1,k=document.createElement("div");k.addEventListener("open",function(a){g.onopen(a)}),k.addEventListener("close",function(a){g.onclose(a)}),k.addEventListener("connecting",function(a){g.onconnecting(a)}),k.addEventListener("message",function(a){g.onmessage(a)}),k.addEventListener("error",function(a){g.onerror(a)}),this.addEventListener=k.addEventListener.bind(k),this.removeEventListener=k.removeEventListener.bind(k),this.dispatchEvent=k.dispatchEvent.bind(k),this.open=function(b){h=new WebSocket(g.url,c||[]),b||k.dispatchEvent(l("connecting")),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","attempt-connect",g.url);var d=h,e=setTimeout(function(){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","connection-timeout",g.url),j=!0,d.close(),j=!1},g.timeoutInterval);h.onopen=function(){clearTimeout(e),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onopen",g.url),g.protocol=h.protocol,g.readyState=WebSocket.OPEN,g.reconnectAttempts=0;var d=l("open");d.isReconnect=b,b=!1,k.dispatchEvent(d)},h.onclose=function(c){if(clearTimeout(e),h=null,i)g.readyState=WebSocket.CLOSED,k.dispatchEvent(l("close"));else{g.readyState=WebSocket.CONNECTING;var d=l("connecting");d.code=c.code,d.reason=c.reason,d.wasClean=c.wasClean,k.dispatchEvent(d),b||j||((g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onclose",g.url),k.dispatchEvent(l("close")));var e=g.reconnectInterval*Math.pow(g.reconnectDecay,g.reconnectAttempts);setTimeout(function(){g.reconnectAttempts++,g.open(!0)},e>g.maxReconnectInterval?g.maxReconnectInterval:e)}},h.onmessage=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onmessage",g.url,b.data);var c=l("message");c.data=b.data,k.dispatchEvent(c)},h.onerror=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onerror",g.url,b),k.dispatchEvent(l("error"))}},1==this.automaticOpen&&this.open(!1),this.send=function(b){if(h)return(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","send",g.url,b),h.send(b);throw"INVALID_STATE_ERR : Pausing to reconnect websocket"},this.close=function(a,b){"undefined"==typeof a&&(a=1e3),i=!0,h&&h.close(a,b)},this.refresh=function(){h&&h.close()}}return a.prototype.onopen=function(){},a.prototype.onclose=function(){},a.prototype.onconnecting=function(){},a.prototype.onmessage=function(){},a.prototype.onerror=function(){},a.debugAll=!1,a.CONNECTING=WebSocket.CONNECTING,a.OPEN=WebSocket.OPEN,a.CLOSING=WebSocket.CLOSING,a.CLOSED=WebSocket.CLOSED,a});
2 |
--------------------------------------------------------------------------------
/VictimCrasherOverlay/deps/smooth.js:
--------------------------------------------------------------------------------
1 | function smooth(arr, windowSize, getter = (value) => value, setter) {
2 | const get = getter
3 | const result = []
4 |
5 | for (let i = 0; i < arr.length; i += 1) {
6 | const leftOffeset = i - windowSize
7 | const from = leftOffeset >= 0 ? leftOffeset : 0
8 | const to = i + windowSize + 1
9 |
10 | let count = 0
11 | let sum = 0
12 | for (let j = from; j < to && j < arr.length; j += 1) {
13 | sum += get(arr[j])
14 | count += 1
15 | }
16 |
17 | result[i] = setter ? setter(arr[i], sum / count) : sum / count
18 | }
19 |
20 | return result
21 | }
22 |
23 | exports = smooth
--------------------------------------------------------------------------------
/VictimCrasherOverlay/fonts/QTVagaRound-Bold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/fonts/QTVagaRound-Bold.otf
--------------------------------------------------------------------------------
/VictimCrasherOverlay/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
player:
20 |
21 |
22 |
23 |
%
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/autopilot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/autopilot.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/autoplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/autoplay.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/cinema.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/cinema.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/doubletime.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/doubletime.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/easy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/easy.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/flashlight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/flashlight.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/halftime.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/halftime.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/hardrock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/hardrock.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/hidden.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/hidden.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/hpbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/hpbar.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/nightcore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/nightcore.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/nofail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/nofail.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/nomod.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/nomod.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/ovbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/ovbot.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/ovup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/ovup.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/perfect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/perfect.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/relax.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/relax.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/spunout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/spunout.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/suddendeath.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/suddendeath.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/target.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/target.png
--------------------------------------------------------------------------------
/VictimCrasherOverlay/static/v2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/VictimCrasherOverlay/static/v2.png
--------------------------------------------------------------------------------
/WaveTournament/deps/reconnecting-websocket.min.js:
--------------------------------------------------------------------------------
1 | !function(a,b){"function"==typeof define&&define.amd?define([],b):"undefined"!=typeof module&&module.exports?module.exports=b():a.ReconnectingWebSocket=b()}(this,function(){function a(b,c,d){function l(a,b){var c=document.createEvent("CustomEvent");return c.initCustomEvent(a,!1,!1,b),c}var e={debug:!1,automaticOpen:!0,reconnectInterval:1e3,maxReconnectInterval:3e4,reconnectDecay:1.5,timeoutInterval:2e3};d||(d={});for(var f in e)this[f]="undefined"!=typeof d[f]?d[f]:e[f];this.url=b,this.reconnectAttempts=0,this.readyState=WebSocket.CONNECTING,this.protocol=null;var h,g=this,i=!1,j=!1,k=document.createElement("div");k.addEventListener("open",function(a){g.onopen(a)}),k.addEventListener("close",function(a){g.onclose(a)}),k.addEventListener("connecting",function(a){g.onconnecting(a)}),k.addEventListener("message",function(a){g.onmessage(a)}),k.addEventListener("error",function(a){g.onerror(a)}),this.addEventListener=k.addEventListener.bind(k),this.removeEventListener=k.removeEventListener.bind(k),this.dispatchEvent=k.dispatchEvent.bind(k),this.open=function(b){h=new WebSocket(g.url,c||[]),b||k.dispatchEvent(l("connecting")),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","attempt-connect",g.url);var d=h,e=setTimeout(function(){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","connection-timeout",g.url),j=!0,d.close(),j=!1},g.timeoutInterval);h.onopen=function(){clearTimeout(e),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onopen",g.url),g.protocol=h.protocol,g.readyState=WebSocket.OPEN,g.reconnectAttempts=0;var d=l("open");d.isReconnect=b,b=!1,k.dispatchEvent(d)},h.onclose=function(c){if(clearTimeout(e),h=null,i)g.readyState=WebSocket.CLOSED,k.dispatchEvent(l("close"));else{g.readyState=WebSocket.CONNECTING;var d=l("connecting");d.code=c.code,d.reason=c.reason,d.wasClean=c.wasClean,k.dispatchEvent(d),b||j||((g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onclose",g.url),k.dispatchEvent(l("close")));var e=g.reconnectInterval*Math.pow(g.reconnectDecay,g.reconnectAttempts);setTimeout(function(){g.reconnectAttempts++,g.open(!0)},e>g.maxReconnectInterval?g.maxReconnectInterval:e)}},h.onmessage=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onmessage",g.url,b.data);var c=l("message");c.data=b.data,k.dispatchEvent(c)},h.onerror=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onerror",g.url,b),k.dispatchEvent(l("error"))}},1==this.automaticOpen&&this.open(!1),this.send=function(b){if(h)return(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","send",g.url,b),h.send(b);throw"INVALID_STATE_ERR : Pausing to reconnect websocket"},this.close=function(a,b){"undefined"==typeof a&&(a=1e3),i=!0,h&&h.close(a,b)},this.refresh=function(){h&&h.close()}}return a.prototype.onopen=function(){},a.prototype.onclose=function(){},a.prototype.onconnecting=function(){},a.prototype.onmessage=function(){},a.prototype.onerror=function(){},a.debugAll=!1,a.CONNECTING=WebSocket.CONNECTING,a.OPEN=WebSocket.OPEN,a.CLOSING=WebSocket.CLOSING,a.CLOSED=WebSocket.CLOSED,a});
2 |
--------------------------------------------------------------------------------
/WaveTournament/fonts/GOTHICB.TTF:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/WaveTournament/fonts/GOTHICB.TTF
--------------------------------------------------------------------------------
/WaveTournament/fonts/Rubik-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/WaveTournament/fonts/Rubik-Light.ttf
--------------------------------------------------------------------------------
/WaveTournament/fonts/Rubik-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/WaveTournament/fonts/Rubik-SemiBold.ttf
--------------------------------------------------------------------------------
/WaveTournament/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
Now Playing
38 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/WaveTournament/static/bottomchat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/WaveTournament/static/bottomchat.png
--------------------------------------------------------------------------------
/WaveTournament/static/bottomplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/WaveTournament/static/bottomplay.png
--------------------------------------------------------------------------------
/WaveTournament/static/top.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/WaveTournament/static/top.png
--------------------------------------------------------------------------------
/quickstart-example/deps/main.css:
--------------------------------------------------------------------------------
1 | @import url("https://fonts.googleapis.com/css2?family=Roboto:wght@500&display=swap");
2 |
3 | * {
4 | padding: 0;
5 | margin: 0;
6 | box-sizing: border-box;
7 | }
8 |
9 | body {
10 | font-family: "Roboto", sans-serif;
11 | color: white;
12 | font-size: 40px;
13 | background-color: white;
14 | }
--------------------------------------------------------------------------------
/quickstart-example/deps/reconnecting-websocket.min.js:
--------------------------------------------------------------------------------
1 | !function(a,b){"function"==typeof define&&define.amd?define([],b):"undefined"!=typeof module&&module.exports?module.exports=b():a.ReconnectingWebSocket=b()}(this,function(){function a(b,c,d){function l(a,b){var c=document.createEvent("CustomEvent");return c.initCustomEvent(a,!1,!1,b),c}var e={debug:!1,automaticOpen:!0,reconnectInterval:1e3,maxReconnectInterval:3e4,reconnectDecay:1.5,timeoutInterval:2e3};d||(d={});for(var f in e)this[f]="undefined"!=typeof d[f]?d[f]:e[f];this.url=b,this.reconnectAttempts=0,this.readyState=WebSocket.CONNECTING,this.protocol=null;var h,g=this,i=!1,j=!1,k=document.createElement("div");k.addEventListener("open",function(a){g.onopen(a)}),k.addEventListener("close",function(a){g.onclose(a)}),k.addEventListener("connecting",function(a){g.onconnecting(a)}),k.addEventListener("message",function(a){g.onmessage(a)}),k.addEventListener("error",function(a){g.onerror(a)}),this.addEventListener=k.addEventListener.bind(k),this.removeEventListener=k.removeEventListener.bind(k),this.dispatchEvent=k.dispatchEvent.bind(k),this.open=function(b){h=new WebSocket(g.url,c||[]),b||k.dispatchEvent(l("connecting")),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","attempt-connect",g.url);var d=h,e=setTimeout(function(){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","connection-timeout",g.url),j=!0,d.close(),j=!1},g.timeoutInterval);h.onopen=function(){clearTimeout(e),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onopen",g.url),g.protocol=h.protocol,g.readyState=WebSocket.OPEN,g.reconnectAttempts=0;var d=l("open");d.isReconnect=b,b=!1,k.dispatchEvent(d)},h.onclose=function(c){if(clearTimeout(e),h=null,i)g.readyState=WebSocket.CLOSED,k.dispatchEvent(l("close"));else{g.readyState=WebSocket.CONNECTING;var d=l("connecting");d.code=c.code,d.reason=c.reason,d.wasClean=c.wasClean,k.dispatchEvent(d),b||j||((g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onclose",g.url),k.dispatchEvent(l("close")));var e=g.reconnectInterval*Math.pow(g.reconnectDecay,g.reconnectAttempts);setTimeout(function(){g.reconnectAttempts++,g.open(!0)},e>g.maxReconnectInterval?g.maxReconnectInterval:e)}},h.onmessage=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onmessage",g.url,b.data);var c=l("message");c.data=b.data,k.dispatchEvent(c)},h.onerror=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onerror",g.url,b),k.dispatchEvent(l("error"))}},1==this.automaticOpen&&this.open(!1),this.send=function(b){if(h)return(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","send",g.url,b),h.send(b);throw"INVALID_STATE_ERR : Pausing to reconnect websocket"},this.close=function(a,b){"undefined"==typeof a&&(a=1e3),i=!0,h&&h.close(a,b)},this.refresh=function(){h&&h.close()}}return a.prototype.onopen=function(){},a.prototype.onclose=function(){},a.prototype.onconnecting=function(){},a.prototype.onmessage=function(){},a.prototype.onerror=function(){},a.debugAll=!1,a.CONNECTING=WebSocket.CONNECTING,a.OPEN=WebSocket.OPEN,a.CLOSING=WebSocket.CLOSING,a.CLOSED=WebSocket.CLOSED,a});
2 |
--------------------------------------------------------------------------------
/quickstart-example/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
yep 1
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/quickstart-example/index.js:
--------------------------------------------------------------------------------
1 | let socket = new ReconnectingWebSocket("ws://127.0.0.1:24050/ws");
2 |
3 | socket.onopen = () => console.log("Successfully Connected");
4 |
5 | socket.onclose = event => {
6 | console.log("Socket Closed Connection: ", event);
7 | socket.send("Client Closed!");
8 | };
9 |
10 | socket.onerror = error => console.log("Socket Error: ", error);
11 |
12 | let pp = new CountUp('pp', 0, 0, 0, .5, { useEasing: true, useGrouping: true, separator: " ", decimal: "." })
13 | let h100 = new CountUp('h100', 0, 0, 0, .5, { useEasing: true, useGrouping: true, separator: " ", decimal: "." })
14 | let h50 = new CountUp('h50', 0, 0, 0, .5, { useEasing: true, useGrouping: true, separator: " ", decimal: "." })
15 | let h0 = new CountUp('h0', 0, 0, 0, .5, { useEasing: true, useGrouping: true, separator: " ", decimal: "." })
16 |
17 | socket.onmessage = event => {
18 | try {
19 | let data = JSON.parse(event.data), menu = data.menu, play = data.gameplay;
20 | pp.update(play.pp.current);
21 | h100.update(play.hits[100]);
22 | h50.update(play.hits[50]);
23 | h0.update(play.hits[0]);
24 | } catch (err) { console.log(err); };
25 | };
--------------------------------------------------------------------------------
/reComfortaa/css/fonts/comfortaa-v29-latin-300.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/reComfortaa/css/fonts/comfortaa-v29-latin-300.woff
--------------------------------------------------------------------------------
/reComfortaa/css/fonts/comfortaa-v29-latin-500.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/reComfortaa/css/fonts/comfortaa-v29-latin-500.woff
--------------------------------------------------------------------------------
/reComfortaa/css/fonts/comfortaa-v29-latin-600.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/reComfortaa/css/fonts/comfortaa-v29-latin-600.woff
--------------------------------------------------------------------------------
/reComfortaa/css/fonts/comfortaa-v29-latin-700.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/reComfortaa/css/fonts/comfortaa-v29-latin-700.woff
--------------------------------------------------------------------------------
/reComfortaa/css/fonts/comfortaa-v29-latin-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/reComfortaa/css/fonts/comfortaa-v29-latin-regular.woff
--------------------------------------------------------------------------------
/reComfortaa/deps/reconnecting-websocket.min.js:
--------------------------------------------------------------------------------
1 | !function(a,b){"function"==typeof define&&define.amd?define([],b):"undefined"!=typeof module&&module.exports?module.exports=b():a.ReconnectingWebSocket=b()}(this,function(){function a(b,c,d){function l(a,b){var c=document.createEvent("CustomEvent");return c.initCustomEvent(a,!1,!1,b),c}var e={debug:!1,automaticOpen:!0,reconnectInterval:1e3,maxReconnectInterval:3e4,reconnectDecay:1.5,timeoutInterval:2e3};d||(d={});for(var f in e)this[f]="undefined"!=typeof d[f]?d[f]:e[f];this.url=b,this.reconnectAttempts=0,this.readyState=WebSocket.CONNECTING,this.protocol=null;var h,g=this,i=!1,j=!1,k=document.createElement("div");k.addEventListener("open",function(a){g.onopen(a)}),k.addEventListener("close",function(a){g.onclose(a)}),k.addEventListener("connecting",function(a){g.onconnecting(a)}),k.addEventListener("message",function(a){g.onmessage(a)}),k.addEventListener("error",function(a){g.onerror(a)}),this.addEventListener=k.addEventListener.bind(k),this.removeEventListener=k.removeEventListener.bind(k),this.dispatchEvent=k.dispatchEvent.bind(k),this.open=function(b){h=new WebSocket(g.url,c||[]),b||k.dispatchEvent(l("connecting")),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","attempt-connect",g.url);var d=h,e=setTimeout(function(){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","connection-timeout",g.url),j=!0,d.close(),j=!1},g.timeoutInterval);h.onopen=function(){clearTimeout(e),(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onopen",g.url),g.protocol=h.protocol,g.readyState=WebSocket.OPEN,g.reconnectAttempts=0;var d=l("open");d.isReconnect=b,b=!1,k.dispatchEvent(d)},h.onclose=function(c){if(clearTimeout(e),h=null,i)g.readyState=WebSocket.CLOSED,k.dispatchEvent(l("close"));else{g.readyState=WebSocket.CONNECTING;var d=l("connecting");d.code=c.code,d.reason=c.reason,d.wasClean=c.wasClean,k.dispatchEvent(d),b||j||((g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onclose",g.url),k.dispatchEvent(l("close")));var e=g.reconnectInterval*Math.pow(g.reconnectDecay,g.reconnectAttempts);setTimeout(function(){g.reconnectAttempts++,g.open(!0)},e>g.maxReconnectInterval?g.maxReconnectInterval:e)}},h.onmessage=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onmessage",g.url,b.data);var c=l("message");c.data=b.data,k.dispatchEvent(c)},h.onerror=function(b){(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","onerror",g.url,b),k.dispatchEvent(l("error"))}},1==this.automaticOpen&&this.open(!1),this.send=function(b){if(h)return(g.debug||a.debugAll)&&console.debug("ReconnectingWebSocket","send",g.url,b),h.send(b);throw"INVALID_STATE_ERR : Pausing to reconnect websocket"},this.close=function(a,b){"undefined"==typeof a&&(a=1e3),i=!0,h&&h.close(a,b)},this.refresh=function(){h&&h.close()}}return a.prototype.onopen=function(){},a.prototype.onclose=function(){},a.prototype.onconnecting=function(){},a.prototype.onmessage=function(){},a.prototype.onerror=function(){},a.debugAll=!1,a.CONNECTING=WebSocket.CONNECTING,a.OPEN=WebSocket.OPEN,a.CLOSING=WebSocket.CLOSING,a.CLOSED=WebSocket.CLOSED,a});
2 |
--------------------------------------------------------------------------------
/reComfortaa/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
MiniCounter
9 |
10 |
11 |
12 |
13 |
14 | Song - Artist
15 |
16 |
17 |
difficulty Difficulty
18 |
19 |
mapper Mapper
20 |
21 |
22 |
23 |
24 |
pp
25 |
26 |
0
27 |
0
28 |
0
29 |
30 |
31 |
32 |
33 |
![]()
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/reComfortaa/webfonts/fa-regular-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/reComfortaa/webfonts/fa-regular-400.woff
--------------------------------------------------------------------------------
/reComfortaa/webfonts/fa-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/reComfortaa/webfonts/fa-regular-400.woff2
--------------------------------------------------------------------------------
/reComfortaa/webfonts/fa-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/reComfortaa/webfonts/fa-solid-900.woff
--------------------------------------------------------------------------------
/reComfortaa/webfonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/l3lackShark/static/123bc4f4118112a09348ac7c6e190d91f8654e45/reComfortaa/webfonts/fa-solid-900.woff2
--------------------------------------------------------------------------------