├── CNAME ├── cursors ├── Help.cur ├── Pointer.cur └── Precision.cur ├── fonts ├── mononoki.ttf └── mononoki.woff2 ├── icons └── main │ ├── favicon.ico │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── mstile-70x70.png │ ├── apple-touch-icon.png │ ├── favicon-194x194.png │ ├── mstile-144x144.png │ ├── mstile-150x150.png │ ├── mstile-310x150.png │ ├── mstile-310x310.png │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── browserconfig.xml │ ├── site.webmanifest │ └── safari-pinned-tab.svg ├── .vscode └── launch.json ├── dscalc ├── index.html ├── ds.css ├── ds.js └── ds2_levels.js ├── index.html ├── index.js ├── .gitignore └── index.css /CNAME: -------------------------------------------------------------------------------- 1 | wyspr.xyz -------------------------------------------------------------------------------- /cursors/Help.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preprocessor/preprocessor.github.io/main/cursors/Help.cur -------------------------------------------------------------------------------- /fonts/mononoki.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preprocessor/preprocessor.github.io/main/fonts/mononoki.ttf -------------------------------------------------------------------------------- /cursors/Pointer.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preprocessor/preprocessor.github.io/main/cursors/Pointer.cur -------------------------------------------------------------------------------- /cursors/Precision.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preprocessor/preprocessor.github.io/main/cursors/Precision.cur -------------------------------------------------------------------------------- /fonts/mononoki.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preprocessor/preprocessor.github.io/main/fonts/mononoki.woff2 -------------------------------------------------------------------------------- /icons/main/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preprocessor/preprocessor.github.io/main/icons/main/favicon.ico -------------------------------------------------------------------------------- /icons/main/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preprocessor/preprocessor.github.io/main/icons/main/favicon-16x16.png -------------------------------------------------------------------------------- /icons/main/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preprocessor/preprocessor.github.io/main/icons/main/favicon-32x32.png -------------------------------------------------------------------------------- /icons/main/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preprocessor/preprocessor.github.io/main/icons/main/mstile-70x70.png -------------------------------------------------------------------------------- /icons/main/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preprocessor/preprocessor.github.io/main/icons/main/apple-touch-icon.png -------------------------------------------------------------------------------- /icons/main/favicon-194x194.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preprocessor/preprocessor.github.io/main/icons/main/favicon-194x194.png -------------------------------------------------------------------------------- /icons/main/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preprocessor/preprocessor.github.io/main/icons/main/mstile-144x144.png -------------------------------------------------------------------------------- /icons/main/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preprocessor/preprocessor.github.io/main/icons/main/mstile-150x150.png -------------------------------------------------------------------------------- /icons/main/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preprocessor/preprocessor.github.io/main/icons/main/mstile-310x150.png -------------------------------------------------------------------------------- /icons/main/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preprocessor/preprocessor.github.io/main/icons/main/mstile-310x310.png -------------------------------------------------------------------------------- /icons/main/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preprocessor/preprocessor.github.io/main/icons/main/android-chrome-192x192.png -------------------------------------------------------------------------------- /icons/main/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preprocessor/preprocessor.github.io/main/icons/main/android-chrome-512x512.png -------------------------------------------------------------------------------- /icons/main/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #2b5797 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /icons/main/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wyspr.xyz", 3 | "short_name": "wyspr.xyz", 4 | "icons": [ 5 | { 6 | "src": "/icons/main/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/icons/main/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#4a4a4a", 17 | "background_color": "#4a4a4a", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Chromium", 6 | "type": "chrome", 7 | "request": "launch", 8 | "reAttach": true, 9 | "runtimeExecutable": "C:\\Program Files\\Chromium\\Application\\Chrome.exe", 10 | "url": "${fileDirname}/${fileBasenameNoExtension}.html", 11 | "webRoot": "${fileDirname}" 12 | }, 13 | { 14 | "name": "Firefox", 15 | "type": "firefox", 16 | "request": "launch", 17 | "reAttach": true, 18 | "file": "${fileDirname}/${fileBasenameNoExtension}.html", 19 | "reloadOnChange": "${workspaceFolder}/**/*.*", 20 | "clearConsoleOnReload": true 21 | } 22 | ] 23 | } -------------------------------------------------------------------------------- /dscalc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Dark Souls Level Calculator 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 22 | 23 | 24 |

Dark Souls Level Calculator

25 |

by wyspr

26 |
27 |
28 | 29 | 30 | 31 |
32 |
33 | 34 | 35 | 36 |
37 |
38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [s]hell 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 30 | 31 | 32 |
33 |
34 |
35 | 36 |
37 |
Shell
38 |
tree ~/xyz/pages
39 |
40 |
41 |
 ┌───────────┐ 42 |
 │~/xyz/pages│ 43 |
 └┬──────────┘
44 |
45 |
46 |
47 |
48 |
49 |
50 | 51 | 52 | -------------------------------------------------------------------------------- /icons/main/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.14, written by Peter Selinger 2001-2017 9 | 10 | 12 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | function glitchText() { 2 | for (i = 0; i < 9; i++) { 3 | items.glitchRef.innerHTML += '
wyspr.xyz
'; 4 | } 5 | return; 6 | } 7 | 8 | function treeFill() { 9 | var symbol; 10 | let links = new Map([ 11 | ['ds-level-calculator', './dscalc/'], 12 | ['src', 'https://github.com/preprocessor/preprocessor.github.io'] 13 | ]);//src needs to be the last one for the tree to work properly 🤪 14 | 15 | for (let [name, link] of links) { 16 | if (name != 'src') { 17 | symbol = '├─'; 18 | } else { 19 | symbol = '└─'; 20 | } 21 | 22 | items.treeRef.innerHTML += '
  '+symbol+''+name+'
'; 23 | } 24 | return; 25 | } 26 | 27 | async function openTerminal() { 28 | 29 | var titlebar = document.getElementsByClassName('titleBar')[0], 30 | prompts = document.getElementsByClassName('prompt'), 31 | activePrompt = prompts[1], 32 | message = prompts[0].innerText; 33 | 34 | items.glitchRef.outerHTML = items.glitchRef.outerHTML.replace(/style=\"[^"]*" onclick=\"[^"]*"/, '') // removes ? cursor and onclick event from glitch text 35 | items.terminal.classList.add('opened'); // open terminal 36 | 37 | await waitForMs(randInterval(1500,1700)).then(() => {titlebar.classList.add('revealed')}); // reveal titlebar 38 | await waitForMs(randInterval(100, 200)).then(() => {activePrompt.classList.add('blinking')}); // add cursor to prompt 39 | await waitForMs(randInterval(300, 400)).then(() => {typeSentence(message, activePrompt)}); // type some words 40 | await waitForMs(randInterval(250, 350)+message.length*75).then(() => {activePrompt.classList.replace('blinking', 'ran')}); // wait until message is finished (message.length*75) and remove the cursor 41 | await waitForMs(randInterval(100, 200)).then(() => {items.treeRef.style.opacity = 1}); // reveal the tree 42 | await waitForMs(randInterval(100, 200)).then(() => {prompts[2].classList.add('blinking')}); // add cursor to next prompt 43 | 44 | return; 45 | } 46 | 47 | async function typeSentence(sentence, ref, delay = 75) { 48 | for (i = 0; i < sentence.length; i++) { 49 | ref.innerHTML += sentence.split("")[i]; 50 | await waitForMs(delay); 51 | } 52 | return; 53 | } 54 | 55 | function waitForMs(ms) { 56 | return new Promise(resolve => setTimeout(resolve, ms)) 57 | } 58 | 59 | function randInterval(min, max) { 60 | return Math.floor(min + Math.random() * (max - min)); 61 | } 62 | 63 | var items = {}; 64 | 65 | function init() { 66 | items.glitchRef = document.getElementsByClassName('glitch')[0]; 67 | items.treeRef = document.getElementsByClassName('tree')[0]; 68 | items.terminal = document.getElementsByClassName('terminal')[0]; 69 | glitchText(); 70 | treeFill(); 71 | return; 72 | } -------------------------------------------------------------------------------- /dscalc/ds.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: rgb(20, 20, 20); 3 | --body-text-color: rgb(180, 178, 176); 4 | --title-color: rgb(216, 190, 140); 5 | --subtitle-color: rgb(140, 10, 10); 6 | --table-main-border: rgb(60, 60, 60); 7 | --table-alt-border: rgb(171, 150, 111); 8 | --hover-bg: rgba(199, 199, 199, 0.4); 9 | --alt-bg: rgb(34, 34, 34); 10 | --table-font-n: 14px; 11 | --table-font-l: 18px; 12 | } 13 | 14 | 15 | html, tr:last-of-type td { 16 | font-family: 'Cormorant SC', serif; 17 | } 18 | 19 | body { 20 | align-items: center; 21 | background-color: var(--bg-color); 22 | color: var(--body-text-color); 23 | display: flex; 24 | flex-direction: column; 25 | } 26 | 27 | h1 { 28 | color: var(--title-color); 29 | margin-bottom: 0; 30 | white-space: nowrap; 31 | font-size: 4vmin; 32 | } 33 | 34 | h4 { 35 | color: var(--subtitle-color); 36 | margin: 0; 37 | font-size: 2.5vmin; 38 | } 39 | 40 | form { 41 | display: flex; 42 | flex-direction: column; 43 | align-items: center; 44 | margin-bottom: 2vmin; 45 | width: 90%; 46 | /* min-height: 40px; */ 47 | } 48 | 49 | form div { 50 | display: flex; 51 | } 52 | 53 | 54 | 55 | table { 56 | border-spacing: 0; 57 | font-size: var(--table-font-n); 58 | margin-bottom: 30px; 59 | border: 2px solid var(--table-alt-border); 60 | } 61 | 62 | td, th { 63 | border: 0px solid var(--table-main-border); 64 | padding: 10px 20px; 65 | text-align: center; 66 | vertical-align: middle; 67 | width: 50%; 68 | } 69 | 70 | th { 71 | font-size: var(--table-font-l); 72 | border-bottom: 1px solid var(--table-alt-border); 73 | } 74 | 75 | th:last-of-type { 76 | border-left-width: 1px; 77 | } 78 | 79 | tr:last-of-type td { 80 | border-top: 1px solid var(--table-alt-border); 81 | } 82 | 83 | td { 84 | border-width: 0 0 1px 1px; 85 | } 86 | 87 | td:first-of-type { 88 | border-left-width: 0; 89 | } 90 | 91 | tr:nth-last-of-type(2) td { 92 | border-bottom: none; 93 | } 94 | 95 | tr:last-of-type { 96 | color: var(--title-color); 97 | font-size: var(--table-font-l); 98 | font-weight: bold; 99 | } 100 | 101 | tr:nth-child(2n+1) { 102 | background-color: var(--alt-bg); 103 | } 104 | 105 | tr:not(:first-child):hover { 106 | background-color: var(--hover-bg); 107 | } 108 | 109 | input, td { 110 | font-family: Arial, sans-serif; 111 | } 112 | 113 | span { 114 | bottom: 1px; 115 | padding: 0 2px 0 4px; 116 | position: relative; 117 | } 118 | 119 | button, input { 120 | background-color: rgb(56, 52, 48); 121 | color: gray; 122 | border: 1px solid gray; 123 | padding: 6px 12px; 124 | flex: 1 0 0; 125 | text-align: center; 126 | } 127 | 128 | input[type="radio"] { 129 | display: none; 130 | } 131 | 132 | label { 133 | font-size: 4vmin; 134 | padding: 10px; 135 | margin: 1vmin; 136 | } 137 | 138 | input[type="radio"]:checked+label { 139 | color: #dd7700; 140 | text-shadow: 0px 0px 10px var(--title-color); 141 | } 142 | 143 | #startLvl { 144 | border-right: none; 145 | } 146 | 147 | button { 148 | border-left: none; 149 | text-decoration: underline; 150 | color: lightgrey; 151 | } -------------------------------------------------------------------------------- /dscalc/ds.js: -------------------------------------------------------------------------------- 1 | function level(lv, game) { 2 | /* The level formula wants the target level, but our math gives the current level, so we +1 */ 3 | let x = lv + 1, 4 | result; 5 | 6 | if (game != 2) { 7 | result = Math.floor( 0.02 * x **3 + 3.06 * x **2 + 105.6 * x - 895 ); 8 | } else { 9 | result = ds2_levels[x] 10 | } 11 | 12 | return result; 13 | } 14 | 15 | function levelMap(start, end, game) { 16 | let results = new Map(); 17 | /* * * * * * * * * * * * * * * * * * * * * * * * * * 18 | * The level formula is innacurate at levels < 12 * 19 | * for 1 and 3 so instead we put lvs 1-12 into an * 20 | * array and loop through those when < 12 * 21 | * * * * * * * * * * * * * * * * * * * * * * * * * */ 22 | let earlyGame = [0, 673, 689, 706, 723, 740, 757, 775, 793, 811, 829, 847] 23 | /* └─array indexes start at [0] but our loop counts from 1 * 24 | * so we insert a 0 at the start to shift the index up 1 */ 25 | 26 | for (let i = start; i < end; i++) { 27 | if (i < 12 && game != 2) { 28 | results.set(i, earlyGame[i]); 29 | } else { 30 | results.set(i, level(i, game)); 31 | } 32 | } 33 | 34 | return results; 35 | } 36 | 37 | function addRow(c1, c2, table) { 38 | let newRow = table.insertRow(-1), // create a new row at the end of the table 39 | cell1 = newRow.insertCell(0), 40 | cell2 = newRow.insertCell(1); // insert the cells into the row 41 | 42 | cell1.innerHTML = c1; 43 | cell2.innerHTML = c2; // populate the cells 44 | } 45 | 46 | function tableWipe(table) { 47 | while (table.rows.length > 1) { 48 | table.deleteRow(-1); 49 | } 50 | } 51 | 52 | function tableGen() { 53 | var start = parseInt(document.getElementById('startLvl').value), 54 | end = parseInt(document.getElementById('goalLvl').value), 55 | // using parseInt() strips decimals and returns NaN if given a string 56 | tableRef = document.getElementById('daTable'), 57 | radios = document.querySelectorAll('input[name="game"]'), 58 | game; 59 | 60 | for (const radioButton of radios) { 61 | if (radioButton.checked) { 62 | game = radioButton.value; 63 | break; 64 | } 65 | } 66 | 67 | if ( start && end && start >= 1 && start < end && end <= 802 ) { // makes sure that inputs exist and make sense 68 | tableRef.style.display = 'table'; // unhide the table on first run 69 | tableWipe(tableRef); // clear the table if its populated 70 | 71 | let levels = levelMap(start, end, game), 72 | total = 0; 73 | 74 | for (let value of levels.values()) { 75 | total += value; 76 | } 77 | 78 | for (let [id, value] of levels) { 79 | addRow(id + '' + (id+1), value.toLocaleString(), tableRef); 80 | } 81 | 82 | addRow('Total Souls', total.toLocaleString(), tableRef); 83 | } 84 | } 85 | 86 | function enterSubmit() { 87 | document.querySelectorAll('input').forEach(item => { 88 | item.addEventListener('keyup', (e) => { 89 | if (e.key === 'Enter') {tableGen();} 90 | }) 91 | }) 92 | } 93 | 94 | function init() { 95 | enterSubmit(); 96 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Mono auto generated files 17 | mono_crash.* 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | [Aa][Rr][Mm]/ 27 | [Aa][Rr][Mm]64/ 28 | bld/ 29 | [Bb]in/ 30 | [Oo]bj/ 31 | [Ll]og/ 32 | [Ll]ogs/ 33 | 34 | # Visual Studio 2015/2017 cache/options directory 35 | .vs/ 36 | # Uncomment if you have tasks that create the project's static files in wwwroot 37 | #wwwroot/ 38 | 39 | # Visual Studio 2017 auto generated files 40 | Generated\ Files/ 41 | 42 | # MSTest test Results 43 | [Tt]est[Rr]esult*/ 44 | [Bb]uild[Ll]og.* 45 | 46 | # NUnit 47 | *.VisualState.xml 48 | TestResult.xml 49 | nunit-*.xml 50 | 51 | # Build Results of an ATL Project 52 | [Dd]ebugPS/ 53 | [Rr]eleasePS/ 54 | dlldata.c 55 | 56 | # Benchmark Results 57 | BenchmarkDotNet.Artifacts/ 58 | 59 | # .NET Core 60 | project.lock.json 61 | project.fragment.lock.json 62 | artifacts/ 63 | 64 | # StyleCop 65 | StyleCopReport.xml 66 | 67 | # Files built by Visual Studio 68 | *_i.c 69 | *_p.c 70 | *_h.h 71 | *.ilk 72 | *.meta 73 | *.obj 74 | *.iobj 75 | *.pch 76 | *.pdb 77 | *.ipdb 78 | *.pgc 79 | *.pgd 80 | *.rsp 81 | *.sbr 82 | *.tlb 83 | *.tli 84 | *.tlh 85 | *.tmp 86 | *.tmp_proj 87 | *_wpftmp.csproj 88 | *.log 89 | *.vspscc 90 | *.vssscc 91 | .builds 92 | *.pidb 93 | *.svclog 94 | *.scc 95 | 96 | # Chutzpah Test files 97 | _Chutzpah* 98 | 99 | # Visual C++ cache files 100 | ipch/ 101 | *.aps 102 | *.ncb 103 | *.opendb 104 | *.opensdf 105 | *.sdf 106 | *.cachefile 107 | *.VC.db 108 | *.VC.VC.opendb 109 | 110 | # Visual Studio profiler 111 | *.psess 112 | *.vsp 113 | *.vspx 114 | *.sap 115 | 116 | # Visual Studio Trace Files 117 | *.e2e 118 | 119 | # TFS 2012 Local Workspace 120 | $tf/ 121 | 122 | # Guidance Automation Toolkit 123 | *.gpState 124 | 125 | # ReSharper is a .NET coding add-in 126 | _ReSharper*/ 127 | *.[Rr]e[Ss]harper 128 | *.DotSettings.user 129 | 130 | # TeamCity is a build add-in 131 | _TeamCity* 132 | 133 | # DotCover is a Code Coverage Tool 134 | *.dotCover 135 | 136 | # AxoCover is a Code Coverage Tool 137 | .axoCover/* 138 | !.axoCover/settings.json 139 | 140 | # Visual Studio code coverage results 141 | *.coverage 142 | *.coveragexml 143 | 144 | # NCrunch 145 | _NCrunch_* 146 | .*crunch*.local.xml 147 | nCrunchTemp_* 148 | 149 | # MightyMoose 150 | *.mm.* 151 | AutoTest.Net/ 152 | 153 | # Web workbench (sass) 154 | .sass-cache/ 155 | 156 | # Installshield output folder 157 | [Ee]xpress/ 158 | 159 | # DocProject is a documentation generator add-in 160 | DocProject/buildhelp/ 161 | DocProject/Help/*.HxT 162 | DocProject/Help/*.HxC 163 | DocProject/Help/*.hhc 164 | DocProject/Help/*.hhk 165 | DocProject/Help/*.hhp 166 | DocProject/Help/Html2 167 | DocProject/Help/html 168 | 169 | # Click-Once directory 170 | publish/ 171 | 172 | # Publish Web Output 173 | *.[Pp]ublish.xml 174 | *.azurePubxml 175 | # Note: Comment the next line if you want to checkin your web deploy settings, 176 | # but database connection strings (with potential passwords) will be unencrypted 177 | *.pubxml 178 | *.publishproj 179 | 180 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 181 | # checkin your Azure Web App publish settings, but sensitive information contained 182 | # in these scripts will be unencrypted 183 | PublishScripts/ 184 | 185 | # NuGet Packages 186 | *.nupkg 187 | # NuGet Symbol Packages 188 | *.snupkg 189 | # The packages folder can be ignored because of Package Restore 190 | **/[Pp]ackages/* 191 | # except build/, which is used as an MSBuild target. 192 | !**/[Pp]ackages/build/ 193 | # Uncomment if necessary however generally it will be regenerated when needed 194 | #!**/[Pp]ackages/repositories.config 195 | # NuGet v3's project.json files produces more ignorable files 196 | *.nuget.props 197 | *.nuget.targets 198 | 199 | # Microsoft Azure Build Output 200 | csx/ 201 | *.build.csdef 202 | 203 | # Microsoft Azure Emulator 204 | ecf/ 205 | rcf/ 206 | 207 | # Windows Store app package directories and files 208 | AppPackages/ 209 | BundleArtifacts/ 210 | Package.StoreAssociation.xml 211 | _pkginfo.txt 212 | *.appx 213 | *.appxbundle 214 | *.appxupload 215 | 216 | # Visual Studio cache files 217 | # files ending in .cache can be ignored 218 | *.[Cc]ache 219 | # but keep track of directories ending in .cache 220 | !?*.[Cc]ache/ 221 | 222 | # Others 223 | ClientBin/ 224 | ~$* 225 | *~ 226 | *.dbmdl 227 | *.dbproj.schemaview 228 | *.jfm 229 | *.pfx 230 | *.publishsettings 231 | orleans.codegen.cs 232 | 233 | # Including strong name files can present a security risk 234 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 235 | #*.snk 236 | 237 | # Since there are multiple workflows, uncomment next line to ignore bower_components 238 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 239 | #bower_components/ 240 | 241 | # RIA/Silverlight projects 242 | Generated_Code/ 243 | 244 | # Backup & report files from converting an old project file 245 | # to a newer Visual Studio version. Backup files are not needed, 246 | # because we have git ;-) 247 | _UpgradeReport_Files/ 248 | Backup*/ 249 | UpgradeLog*.XML 250 | UpgradeLog*.htm 251 | ServiceFabricBackup/ 252 | *.rptproj.bak 253 | 254 | # SQL Server files 255 | *.mdf 256 | *.ldf 257 | *.ndf 258 | 259 | # Business Intelligence projects 260 | *.rdl.data 261 | *.bim.layout 262 | *.bim_*.settings 263 | *.rptproj.rsuser 264 | *- [Bb]ackup.rdl 265 | *- [Bb]ackup ([0-9]).rdl 266 | *- [Bb]ackup ([0-9][0-9]).rdl 267 | 268 | # Microsoft Fakes 269 | FakesAssemblies/ 270 | 271 | # GhostDoc plugin setting file 272 | *.GhostDoc.xml 273 | 274 | # Node.js Tools for Visual Studio 275 | .ntvs_analysis.dat 276 | node_modules/ 277 | 278 | # Visual Studio 6 build log 279 | *.plg 280 | 281 | # Visual Studio 6 workspace options file 282 | *.opt 283 | 284 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 285 | *.vbw 286 | 287 | # Visual Studio LightSwitch build output 288 | **/*.HTMLClient/GeneratedArtifacts 289 | **/*.DesktopClient/GeneratedArtifacts 290 | **/*.DesktopClient/ModelManifest.xml 291 | **/*.Server/GeneratedArtifacts 292 | **/*.Server/ModelManifest.xml 293 | _Pvt_Extensions 294 | 295 | # Paket dependency manager 296 | .paket/paket.exe 297 | paket-files/ 298 | 299 | # FAKE - F# Make 300 | .fake/ 301 | 302 | # CodeRush personal settings 303 | .cr/personal 304 | 305 | # Python Tools for Visual Studio (PTVS) 306 | __pycache__/ 307 | *.pyc 308 | 309 | # Cake - Uncomment if you are using it 310 | # tools/** 311 | # !tools/packages.config 312 | 313 | # Tabs Studio 314 | *.tss 315 | 316 | # Telerik's JustMock configuration file 317 | *.jmconfig 318 | 319 | # BizTalk build output 320 | *.btp.cs 321 | *.btm.cs 322 | *.odx.cs 323 | *.xsd.cs 324 | 325 | # OpenCover UI analysis results 326 | OpenCover/ 327 | 328 | # Azure Stream Analytics local run output 329 | ASALocalRun/ 330 | 331 | # MSBuild Binary and Structured Log 332 | *.binlog 333 | 334 | # NVidia Nsight GPU debugger configuration file 335 | *.nvuser 336 | 337 | # MFractors (Xamarin productivity tool) working folder 338 | .mfractor/ 339 | 340 | # Local History for Visual Studio 341 | .localhistory/ 342 | 343 | # BeatPulse healthcheck temp database 344 | healthchecksdb 345 | 346 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 347 | MigrationBackup/ 348 | 349 | # Ionide (cross platform F# VS Code tools) working folder 350 | .ionide/ 351 | -------------------------------------------------------------------------------- /dscalc/ds2_levels.js: -------------------------------------------------------------------------------- 1 | var ds2_levels = [ 2 | 0, 3 | 0, 4 | 500, 5 | 528, 6 | 557, 7 | 587, 8 | 619, 9 | 653, 10 | 689, 11 | 727, 12 | 767, 13 | 810, 14 | 854, 15 | 901, 16 | 948, 17 | 997, 18 | 1049, 19 | 1104, 20 | 1159, 21 | 1217, 22 | 1278, 23 | 1341, 24 | 1408, 25 | 1479, 26 | 1553, 27 | 1631, 28 | 1699, 29 | 1770, 30 | 1845, 31 | 1922, 32 | 2003, 33 | 2087, 34 | 2175, 35 | 2266, 36 | 2361, 37 | 2460, 38 | 2564, 39 | 2671, 40 | 2784, 41 | 2900, 42 | 3022, 43 | 3149, 44 | 3256, 45 | 3367, 46 | 3482, 47 | 3600, 48 | 3722, 49 | 3849, 50 | 3980, 51 | 4115, 52 | 4255, 53 | 4400, 54 | 4549, 55 | 4704, 56 | 4864, 57 | 5029, 58 | 5200, 59 | 5330, 60 | 5463, 61 | 5600, 62 | 5740, 63 | 5883, 64 | 6031, 65 | 6181, 66 | 6336, 67 | 6494, 68 | 6657, 69 | 6823, 70 | 6994, 71 | 7168, 72 | 7348, 73 | 7531, 74 | 7697, 75 | 7866, 76 | 8039, 77 | 8216, 78 | 8397, 79 | 8582, 80 | 8771, 81 | 8964, 82 | 9161, 83 | 9362, 84 | 9568, 85 | 9779, 86 | 9994, 87 | 10214, 88 | 10438, 89 | 10668, 90 | 10903, 91 | 11143, 92 | 11388, 93 | 11638, 94 | 11836, 95 | 12037, 96 | 12242, 97 | 12450, 98 | 12662, 99 | 12877, 100 | 13096, 101 | 13319, 102 | 13545, 103 | 13775, 104 | 14009, 105 | 14248, 106 | 14490, 107 | 14736, 108 | 14987, 109 | 15241, 110 | 15501, 111 | 15764, 112 | 16032, 113 | 16305, 114 | 16582, 115 | 16864, 116 | 17150, 117 | 17442, 118 | 17738, 119 | 18005, 120 | 18275, 121 | 18549, 122 | 18827, 123 | 19109, 124 | 19396, 125 | 19687, 126 | 19982, 127 | 20282, 128 | 20586, 129 | 20895, 130 | 21208, 131 | 21527, 132 | 21849, 133 | 22177, 134 | 22510, 135 | 22847, 136 | 23190, 137 | 23538, 138 | 23891, 139 | 24249, 140 | 24613, 141 | 24982, 142 | 25357, 143 | 25738, 144 | 26124, 145 | 26515, 146 | 26913, 147 | 27317, 148 | 27727, 149 | 28143, 150 | 28565, 151 | 28993, 152 | 29428, 153 | 29869, 154 | 30317, 155 | 30772, 156 | 31234, 157 | 31702, 158 | 32178, 159 | 32661, 160 | 33150, 161 | 33648, 162 | 34152, 163 | 34665, 164 | 35185, 165 | 35712, 166 | 36248, 167 | 36792, 168 | 37344, 169 | 37904, 170 | 38472, 171 | 39050, 172 | 39635, 173 | 40230, 174 | 40713, 175 | 41201, 176 | 41696, 177 | 42196, 178 | 42702, 179 | 43215, 180 | 43733, 181 | 44258, 182 | 44789, 183 | 45327, 184 | 45689, 185 | 46055, 186 | 46423, 187 | 46795, 188 | 47169, 189 | 47546, 190 | 47927, 191 | 48310, 192 | 48697, 193 | 49086, 194 | 49479, 195 | 49875, 196 | 50274, 197 | 50676, 198 | 51081, 199 | 51490, 200 | 51902, 201 | 52317, 202 | 52736, 203 | 53157, 204 | 55018, 205 | 56944, 206 | 58937, 207 | 60999, 208 | 63134, 209 | 65344, 210 | 67631, 211 | 69998, 212 | 72448, 213 | 74984, 214 | 77608, 215 | 80324, 216 | 83136, 217 | 86046, 218 | 89057, 219 | 92174, 220 | 95400, 221 | 98739, 222 | 102195, 223 | 105772, 224 | 109474, 225 | 113306, 226 | 117271, 227 | 121376, 228 | 125624, 229 | 130021, 230 | 134572, 231 | 139282, 232 | 144156, 233 | 149202, 234 | 154424, 235 | 159829, 236 | 165423, 237 | 171213, 238 | 177205, 239 | 183407, 240 | 189826, 241 | 196470, 242 | 203347, 243 | 210464, 244 | 217830, 245 | 225454, 246 | 233345, 247 | 241512, 248 | 249965, 249 | 258714, 250 | 267769, 251 | 277141, 252 | 286841, 253 | 296880, 254 | 297622, 255 | 298367, 256 | 299112, 257 | 299860, 258 | 300610, 259 | 301361, 260 | 302115, 261 | 302870, 262 | 303627, 263 | 304386, 264 | 305147, 265 | 305910, 266 | 306675, 267 | 307442, 268 | 308210, 269 | 308981, 270 | 309753, 271 | 310528, 272 | 311304, 273 | 312082, 274 | 312862, 275 | 313645, 276 | 314429, 277 | 315215, 278 | 316003, 279 | 316793, 280 | 317585, 281 | 318379, 282 | 319175, 283 | 319973, 284 | 320772, 285 | 321574, 286 | 322378, 287 | 323184, 288 | 323992, 289 | 324802, 290 | 325614, 291 | 326428, 292 | 327244, 293 | 328062, 294 | 328883, 295 | 329705, 296 | 330529, 297 | 331355, 298 | 332184, 299 | 333014, 300 | 333847, 301 | 334681, 302 | 335518, 303 | 336357, 304 | 337198, 305 | 338041, 306 | 338886, 307 | 339733, 308 | 340582, 309 | 341434, 310 | 342287, 311 | 343143, 312 | 344001, 313 | 344861, 314 | 345723, 315 | 346588, 316 | 347454, 317 | 348323, 318 | 349193, 319 | 350066, 320 | 350942, 321 | 351819, 322 | 352698, 323 | 353580, 324 | 354464, 325 | 355350, 326 | 356239, 327 | 357129, 328 | 358022, 329 | 358917, 330 | 359814, 331 | 360714, 332 | 361616, 333 | 362520, 334 | 363426, 335 | 364335, 336 | 365246, 337 | 366159, 338 | 367074, 339 | 367992, 340 | 368912, 341 | 369834, 342 | 370759, 343 | 371685, 344 | 372615, 345 | 373546, 346 | 374480, 347 | 375416, 348 | 376355, 349 | 377296, 350 | 378239, 351 | 379185, 352 | 380133, 353 | 381083, 354 | 382036, 355 | 382991, 356 | 383948, 357 | 384908, 358 | 385870, 359 | 386835, 360 | 387802, 361 | 388772, 362 | 389743, 363 | 390718, 364 | 391695, 365 | 392674, 366 | 393656, 367 | 394640, 368 | 395626, 369 | 396615, 370 | 397607, 371 | 398601, 372 | 399597, 373 | 400596, 374 | 401598, 375 | 402602, 376 | 403608, 377 | 404617, 378 | 405629, 379 | 406643, 380 | 407660, 381 | 408679, 382 | 409700, 383 | 410725, 384 | 411752, 385 | 412781, 386 | 413813, 387 | 414847, 388 | 415885, 389 | 416924, 390 | 417967, 391 | 419011, 392 | 420059, 393 | 421109, 394 | 422162, 395 | 423217, 396 | 424275, 397 | 425336, 398 | 426399, 399 | 427465, 400 | 428534, 401 | 429605, 402 | 430679, 403 | 431756, 404 | 432835, 405 | 433918, 406 | 435002, 407 | 436090, 408 | 437180, 409 | 438273, 410 | 439369, 411 | 440467, 412 | 441568, 413 | 442672, 414 | 443779, 415 | 444888, 416 | 446001, 417 | 447116, 418 | 448233, 419 | 449354, 420 | 450477, 421 | 451604, 422 | 452733, 423 | 453864, 424 | 454999, 425 | 456137, 426 | 457277, 427 | 458420, 428 | 459566, 429 | 460715, 430 | 461867, 431 | 463022, 432 | 464179, 433 | 465340, 434 | 466503, 435 | 467669, 436 | 468838, 437 | 470010, 438 | 471185, 439 | 472363, 440 | 473544, 441 | 474728, 442 | 475915, 443 | 477105, 444 | 478298, 445 | 479493, 446 | 480692, 447 | 481894, 448 | 483098, 449 | 484306, 450 | 485517, 451 | 486731, 452 | 487948, 453 | 489167, 454 | 490390, 455 | 491616, 456 | 492845, 457 | 494078, 458 | 495313, 459 | 496551, 460 | 497792, 461 | 499037, 462 | 500284, 463 | 501535, 464 | 502789, 465 | 504046, 466 | 505306, 467 | 506569, 468 | 507836, 469 | 509105, 470 | 510378, 471 | 511654, 472 | 512933, 473 | 514216, 474 | 515501, 475 | 516790, 476 | 518082, 477 | 519377, 478 | 520675, 479 | 521977, 480 | 523282, 481 | 524590, 482 | 525902, 483 | 527217, 484 | 528535, 485 | 529856, 486 | 531181, 487 | 532508, 488 | 533840, 489 | 535174, 490 | 536512, 491 | 537854, 492 | 539198, 493 | 540546, 494 | 541898, 495 | 543252, 496 | 544610, 497 | 545972, 498 | 547337, 499 | 548705, 500 | 550077, 501 | 551452, 502 | 552831, 503 | 554213, 504 | 555598, 505 | 556987, 506 | 558380, 507 | 559776, 508 | 561175, 509 | 562578, 510 | 563985, 511 | 565395, 512 | 566808, 513 | 568225, 514 | 569646, 515 | 571070, 516 | 572497, 517 | 573929, 518 | 575364, 519 | 576802, 520 | 578244, 521 | 579690, 522 | 581139, 523 | 582592, 524 | 584048, 525 | 585508, 526 | 586972, 527 | 588439, 528 | 589911, 529 | 591385, 530 | 592864, 531 | 594346, 532 | 595832, 533 | 597321, 534 | 598815, 535 | 600312, 536 | 601812, 537 | 603317, 538 | 604825, 539 | 606337, 540 | 607853, 541 | 609373, 542 | 610896, 543 | 612424, 544 | 613955, 545 | 615489, 546 | 617028, 547 | 618571, 548 | 620117, 549 | 621667, 550 | 623222, 551 | 624780, 552 | 626342, 553 | 627908, 554 | 629477, 555 | 631051, 556 | 632629, 557 | 634210, 558 | 635796, 559 | 637385, 560 | 638979, 561 | 640576, 562 | 642178, 563 | 643783, 564 | 645392, 565 | 647006, 566 | 648623, 567 | 650245, 568 | 651871, 569 | 653500, 570 | 655134, 571 | 656772, 572 | 658414, 573 | 660060, 574 | 661710, 575 | 663364, 576 | 665023, 577 | 666685, 578 | 668352, 579 | 670023, 580 | 671698, 581 | 673377, 582 | 675061, 583 | 676748, 584 | 678440, 585 | 680136, 586 | 681837, 587 | 683541, 588 | 685250, 589 | 686963, 590 | 688681, 591 | 690402, 592 | 692128, 593 | 693859, 594 | 695593, 595 | 697332, 596 | 699075, 597 | 700823, 598 | 702575, 599 | 704332, 600 | 706093, 601 | 707858, 602 | 709627, 603 | 711401, 604 | 713180, 605 | 714963, 606 | 716750, 607 | 718542, 608 | 720339, 609 | 722139, 610 | 723945, 611 | 725755, 612 | 727569, 613 | 729388, 614 | 731211, 615 | 733039, 616 | 734872, 617 | 736709, 618 | 738551, 619 | 740397, 620 | 742248, 621 | 744104, 622 | 745964, 623 | 747829, 624 | 749699, 625 | 751573, 626 | 753452, 627 | 755336, 628 | 757224, 629 | 759117, 630 | 761015, 631 | 762917, 632 | 764825, 633 | 766737, 634 | 768653, 635 | 770575, 636 | 772502, 637 | 774433, 638 | 776369, 639 | 778310, 640 | 780256, 641 | 782206, 642 | 784162, 643 | 786122, 644 | 788087, 645 | 790058, 646 | 792033, 647 | 794013, 648 | 795998, 649 | 797988, 650 | 799983, 651 | 801983, 652 | 803988, 653 | 805998, 654 | 808013, 655 | 810033, 656 | 812058, 657 | 814088, 658 | 816123, 659 | 818164, 660 | 820209, 661 | 822259, 662 | 824315, 663 | 826376, 664 | 828442, 665 | 830513, 666 | 832589, 667 | 834671, 668 | 836757, 669 | 838849, 670 | 840946, 671 | 843049, 672 | 845156, 673 | 847269, 674 | 849387, 675 | 851511, 676 | 853640, 677 | 855774, 678 | 857913, 679 | 860058, 680 | 862208, 681 | 864364, 682 | 866525, 683 | 868691, 684 | 870863, 685 | 873040, 686 | 875222, 687 | 877410, 688 | 879604, 689 | 881803, 690 | 884007, 691 | 886217, 692 | 888433, 693 | 890654, 694 | 892881, 695 | 895113, 696 | 897351, 697 | 899594, 698 | 901843, 699 | 904098, 700 | 906358, 701 | 908624, 702 | 910895, 703 | 913173, 704 | 915456, 705 | 917744, 706 | 920039, 707 | 922339, 708 | 924644, 709 | 926956, 710 | 929273, 711 | 931597, 712 | 933926, 713 | 936260, 714 | 938601, 715 | 940948, 716 | 943300, 717 | 945658, 718 | 948022, 719 | 950392, 720 | 952768, 721 | 955150, 722 | 957538, 723 | 959932, 724 | 962332, 725 | 964738, 726 | 967150, 727 | 969567, 728 | 971991, 729 | 974421, 730 | 976857, 731 | 979300, 732 | 981748, 733 | 984202, 734 | 986663, 735 | 989129, 736 | 991602, 737 | 994081, 738 | 996566, 739 | 999058, 740 | 1001555, 741 | 1004059, 742 | 1006569, 743 | 1009086, 744 | 1011609, 745 | 1014138, 746 | 1016673, 747 | 1019215, 748 | 1021763, 749 | 1024317, 750 | 1026878, 751 | 1029445, 752 | 1032019, 753 | 1034599, 754 | 1037185, 755 | 1039778, 756 | 1042378, 757 | 1044984, 758 | 1047596, 759 | 1050215, 760 | 1052841, 761 | 1055473, 762 | 1058111, 763 | 1060757, 764 | 1063409, 765 | 1066067, 766 | 1068732, 767 | 1071404, 768 | 1074083, 769 | 1076768, 770 | 1079460, 771 | 1082158, 772 | 1084864, 773 | 1087576, 774 | 1090295, 775 | 1093021, 776 | 1095753, 777 | 1098492, 778 | 1101239, 779 | 1103992, 780 | 1106752, 781 | 1109519, 782 | 1112292, 783 | 1115073, 784 | 1117861, 785 | 1120656, 786 | 1123457, 787 | 1126266, 788 | 1129081, 789 | 1131904, 790 | 1134734, 791 | 1137571, 792 | 1140415, 793 | 1143266, 794 | 1146124, 795 | 1148989, 796 | 1151862, 797 | 1154741, 798 | 1157628, 799 | 1160522, 800 | 1163424, 801 | 1166332, 802 | 1169248, 803 | 1172171, 804 | 1175102, 805 | 1178039, 806 | 1180984, 807 | 1183937, 808 | 1186897, 809 | 1189864, 810 | 1192839, 811 | 1195821, 812 | 1198810, 813 | 1201807, 814 | 1204812, 815 | 1207824, 816 | 1210843, 817 | 1213870, 818 | 1216905, 819 | 1219947, 820 | 1222997, 821 | 1226055, 822 | 1229120, 823 | 1232193, 824 | 1235273, 825 | 1238361, 826 | 1241457, 827 | 1244561, 828 | 1247672, 829 | 1250792, 830 | 1253918, 831 | 1257053, 832 | 1260196, 833 | 1263346, 834 | 1266505, 835 | 1269671, 836 | 1272845, 837 | 1276027, 838 | 1279217, 839 | 1282415, 840 | 1285621, 841 | 1288836, 842 | 1292058, 843 | 1295288, 844 | 1298526, 845 | 1301772, 846 | 1305027, 847 | 1308289, 848 | 1311560, 849 | 1314839, 850 | 1318126, 851 | 1321421, 852 | 1324725, 853 | 1328037, 854 | ] 855 | -------------------------------------------------------------------------------- /index.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Libre+Barcode+39+Text&family=Courier+Prime&display=swap'); 2 | @font-face { 3 | font-family: 'Mononoki'; 4 | src: url('./fonts/mononoki.woff2') format('woff2'), 5 | url('./fonts/mononoki.ttf') format('truetype'); 6 | } 7 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * 8 | * font-family: 'Libre Barcode 39 Text', cursive; * 9 | * font-family: 'Courier Prime', monospace; * 10 | * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 11 | 12 | :root { 13 | --bg-color: #100815; 14 | --bar-time: 15s; 15 | --terminal-bg: #111213; 16 | --terminal-border: #323232; 17 | --terminal-font: #d0d0d0; 18 | --tree-box: #9e8cbd; 19 | } 20 | 21 | ::selection { 22 | background: transparent; 23 | } 24 | 25 | a, a:visited { 26 | color: inherit; 27 | text-decoration: none; 28 | } 29 | 30 | body, .content { 31 | margin: 0; 32 | width: 100vw; 33 | height: 100vh; 34 | overflow: hidden; 35 | display: flex; 36 | justify-content: center; 37 | align-items: center; 38 | flex-direction: column; 39 | cursor: url('./cursors/Precision.cur'), crosshair; 40 | text-size-adjust: 0%; 41 | white-space: nowrap; 42 | user-select: none; 43 | } 44 | 45 | body { 46 | background-color: var(--bg-color); 47 | } 48 | 49 | body::after, .invertBar, .fixInvertBar, .scanlines { 50 | position: absolute; 51 | top: 0; 52 | left: 0; 53 | width: 100vw; 54 | pointer-events: none; 55 | } 56 | 57 | /* body::after { 58 | height: 100vh; 59 | box-shadow: inset 0 0 9vmax 2vmax rgba(0,0,0,0.50); 60 | filter: blur(10px); 61 | content: ''; 62 | } */ 63 | 64 | .line { 65 | font-family: 'Libre Barcode 39 Text', cursive; 66 | font-size: 20vmin; 67 | } 68 | 69 | .glitch { 70 | position: relative; 71 | color: #fff; 72 | } 73 | 74 | .scanlines { 75 | background: repeating-linear-gradient(0deg, 76 | transparent 25%, 77 | transparent 50%, 78 | rgba(255,255,255,0.059) 50%, 79 | rgba(255,255,255,0.059) 75% 80 | ); 81 | background-size: 12px 12px; 82 | height: 100vh; 83 | animation: scanlines var(--bar-time) linear infinite; 84 | } 85 | @keyframes scanlines { 86 | from { background-position-y: 0; } 87 | to { background-position-y: 100%; } 88 | } 89 | 90 | .invertBar, .fixInvertBar { 91 | height: 7px; 92 | background-color: var(--bg-color); 93 | filter: invert(1); 94 | animation: invBar 15s linear infinite; 95 | } 96 | @keyframes invBar { 97 | from { top: 0; } 98 | to { top: 100%; } 99 | } 100 | 101 | .invertBar { 102 | mix-blend-mode: exclusion; 103 | } 104 | 105 | .terminal { 106 | color: white; 107 | font-family: 'Courier Prime', Courier, monospace; 108 | font-size: 3vmin; 109 | line-height: 3.4vmin; 110 | background-color: var(--terminal-bg); 111 | border: 4px solid var(--terminal-border); 112 | transform-origin: 50% 0; 113 | } 114 | 115 | .titleBar { 116 | text-align: center; 117 | padding: 1vmin; 118 | /* border-bottom: 1px solid var(--terminal-border); */ 119 | background-color: var(--terminal-border); 120 | color: transparent; 121 | } 122 | 123 | .titleBar.revealed { 124 | color: white; 125 | } 126 | 127 | .prompt, .tree { 128 | padding: 0.5vmin 1vmin 0.5vmin 0; 129 | color: var(--terminal-font); 130 | opacity: 0; 131 | } 132 | 133 | .blinking, .prompt.ran { 134 | opacity: 1; 135 | } 136 | 137 | .treeHead, .treeItem { 138 | color: var(--tree-box); 139 | } 140 | 141 | .treeHead i { 142 | color: white; 143 | } 144 | 145 | .prompt::before { 146 | content: '/usr/bin'; 147 | background-color: #acd4eb; 148 | color: var(--terminal-bg); 149 | font-weight: 600; 150 | display: inline-block; 151 | padding: 0.5vmin 2vmin 0.1vmin 0.5vmin; 152 | margin-right: 1vmin; 153 | clip-path: polygon(0% 0%, 90% 0%, 100% 50%, 90% 100%, 0% 100%); 154 | } 155 | 156 | .blinking::after { 157 | position: relative; 158 | top: -0.1vmin; 159 | content: '.'; 160 | color: transparent; 161 | background-color: white; 162 | display: inline-block; 163 | height: 100%; 164 | width: 2vmin; 165 | padding-top: 0.2vmin; 166 | animation: blink 1s ease infinite; 167 | } 168 | @keyframes blink { 169 | from, to { background-color: white; } 170 | 50% { background-color: transparent; } 171 | } 172 | 173 | .treeItem a{ 174 | margin-left: 1vmin; 175 | cursor: url('./cursors/Pointer.cur'), pointer; 176 | color: #C04848; 177 | } 178 | 179 | .treeItem a:hover { 180 | text-decoration: underline dashed; 181 | } 182 | 183 | .terminal.opened { 184 | animation: open 1.4s ease 1 forwards; 185 | background-color: var(--terminal-border) 186 | } 187 | @keyframes open { 188 | 0% { 189 | transform: scale(1%,0); 190 | } 191 | 49% { 192 | background-color: var(--terminal-border); 193 | transform: scale(1%,1); 194 | } 195 | 50% { 196 | background-color: var(--terminal-bg); 197 | transform: scale(1%,1); 198 | } 199 | 100% { 200 | background-color: var(--terminal-bg); 201 | transform: scale(1,1); 202 | } 203 | } 204 | 205 | .prompt.ran { 206 | animation: ran 0.15s steps(2) 1; 207 | } 208 | @keyframes ran { 209 | from { 210 | color: var(--terminal-font); 211 | text-shadow: none; 212 | } 213 | to { 214 | color: white; 215 | text-shadow: 3px 3px 20px rgba(255, 255, 255, 0.5); 216 | } 217 | } 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | .line:not(:first-child) { 227 | position: absolute; 228 | top: 0; 229 | left: 0; 230 | } 231 | .line:nth-child(1) { 232 | animation: clip 3000ms -300ms linear infinite, glitch1 500ms -723ms linear infinite, textShadow 1.6s infinite; 233 | } 234 | @keyframes glitch1 { 235 | 0% { 236 | transform: translateX(0); 237 | } 238 | 80% { 239 | transform: translateX(0); 240 | color: rgba(255,255,255,1.0); 241 | } 242 | 85% { 243 | transform: translateX(-1px); 244 | color: rgba(78,154,38,1.0); 245 | } 246 | 90% { 247 | transform: translateX(4px); 248 | color: rgba(172,18,18,1.0); 249 | } 250 | 95% { 251 | transform: translateX(3px); 252 | color: rgba(255, 255, 255, 1.0); 253 | } 254 | 100% { 255 | transform: translateX(0); 256 | } 257 | } 258 | .line:nth-child(2) { 259 | animation: clip 3000ms -600ms linear infinite, glitch2 500ms -332ms linear infinite, textShadow 1.6s infinite; 260 | } 261 | @keyframes glitch2 { 262 | 0% { 263 | transform: translateX(0); 264 | } 265 | 80% { 266 | transform: translateX(0); 267 | color: rgba(255, 255, 255, 1.0); 268 | } 269 | 85% { 270 | transform: translateX(2px); 271 | color: rgba(78,154,38,1.0); 272 | } 273 | 90% { 274 | transform: translateX(2px); 275 | color: rgba(172,18,18,1.0); 276 | } 277 | 95% { 278 | transform: translateX(5px); 279 | color: rgba(255, 255, 255, 1.0); 280 | } 281 | 100% { 282 | transform: translateX(0); 283 | } 284 | } 285 | .line:nth-child(3) { 286 | animation: clip 3000ms -900ms linear infinite, glitch3 500ms -458ms linear infinite, textShadow 1.6s infinite; 287 | } 288 | @keyframes glitch3 { 289 | 0% { 290 | transform: translateX(0); 291 | } 292 | 80% { 293 | transform: translateX(0); 294 | color: rgba(255, 255, 255, 1.0); 295 | } 296 | 85% { 297 | transform: translateX(-4px); 298 | color: rgba(78,154,38,1.0); 299 | } 300 | 90% { 301 | transform: translateX(0px); 302 | color: rgba(172,18,18,1.0); 303 | } 304 | 95% { 305 | transform: translateX(-1px); 306 | color: rgba(255, 255, 255, 1.0); 307 | } 308 | 100% { 309 | transform: translateX(0); 310 | } 311 | } 312 | .line:nth-child(4) { 313 | animation: clip 3000ms -1200ms linear infinite, glitch4 500ms -162ms linear infinite, textShadow 1.6s infinite; 314 | } 315 | @keyframes glitch4 { 316 | 0% { 317 | transform: translateX(0); 318 | } 319 | 80% { 320 | transform: translateX(0); 321 | color: rgba(255, 255, 255, 1.0); 322 | } 323 | 85% { 324 | transform: translateX(4px); 325 | color: rgba(78,154,38,1.0); 326 | } 327 | 90% { 328 | transform: translateX(1px); 329 | color: rgba(172,18,18,1.0); 330 | } 331 | 95% { 332 | transform: translateX(-1px); 333 | color: rgba(255, 255, 255, 1.0); 334 | } 335 | 100% { 336 | transform: translateX(0); 337 | } 338 | } 339 | .line:nth-child(5) { 340 | animation: clip 3000ms -1500ms linear infinite, glitch5 500ms -37ms linear infinite, textShadow 1.6s infinite; 341 | } 342 | @keyframes glitch5 { 343 | 0% { 344 | transform: translateX(0); 345 | } 346 | 80% { 347 | transform: translateX(0); 348 | color: rgba(255, 255, 255, 1.0); 349 | } 350 | 85% { 351 | transform: translateX(-3px); 352 | color: rgba(78,154,38,1.0); 353 | } 354 | 90% { 355 | transform: translateX(3px); 356 | color: rgba(172,18,18,1.0); 357 | } 358 | 95% { 359 | transform: translateX(2px); 360 | color: rgba(255, 255, 255, 1.0); 361 | } 362 | 100% { 363 | transform: translateX(0); 364 | } 365 | } 366 | .line:nth-child(6) { 367 | animation: clip 3000ms -1800ms linear infinite, glitch6 500ms -159ms linear infinite, textShadow 1.6s infinite; 368 | } 369 | @keyframes glitch6 { 370 | 0% { 371 | transform: translateX(0); 372 | } 373 | 80% { 374 | transform: translateX(0); 375 | color: rgba(255, 255, 255, 1.0); 376 | } 377 | 85% { 378 | transform: translateX(-1px); 379 | color: rgba(78,154,38,1.0); 380 | } 381 | 90% { 382 | transform: translateX(2px); 383 | color: rgba(172,18,18,1.0); 384 | } 385 | 95% { 386 | transform: translateX(1px); 387 | color: rgba(255, 255, 255, 1.0); 388 | } 389 | 100% { 390 | transform: translateX(0); 391 | } 392 | } 393 | .line:nth-child(7) { 394 | animation: clip 3000ms -2100ms linear infinite, glitch7 500ms -769ms linear infinite, textShadow 1.6s infinite; 395 | } 396 | @keyframes glitch7 { 397 | 0% { 398 | transform: translateX(0); 399 | } 400 | 80% { 401 | transform: translateX(0); 402 | color: rgba(255, 255, 255, 1.0); 403 | } 404 | 85% { 405 | transform: translateX(4px); 406 | color: rgba(78,154,38,1.0); 407 | } 408 | 90% { 409 | transform: translateX(3px); 410 | color: rgba(172,18,18,1.0); 411 | } 412 | 95% { 413 | transform: translateX(5px); 414 | color: rgba(255, 255, 255, 1.0); 415 | } 416 | 100% { 417 | transform: translateX(0); 418 | } 419 | } 420 | .line:nth-child(8) { 421 | animation: clip 3000ms -2400ms linear infinite, glitch8 500ms -250ms linear infinite, textShadow 1.6s infinite; 422 | } 423 | @keyframes glitch8 { 424 | 0% { 425 | transform: translateX(0); 426 | } 427 | 80% { 428 | transform: translateX(0); 429 | color: rgba(255, 255, 255, 1.0); 430 | } 431 | 85% { 432 | transform: translateX(-4px); 433 | color: rgba(78,154,38,1.0); 434 | } 435 | 90% { 436 | transform: translateX(-2px); 437 | color: rgba(172,18,18,1.0); 438 | } 439 | 95% { 440 | transform: translateX(-4px); 441 | color: rgba(255, 255, 255, 1.0); 442 | } 443 | 100% { 444 | transform: translateX(0); 445 | } 446 | } 447 | .line:nth-child(9) { 448 | animation: clip 3000ms -2700ms linear infinite, glitch9 500ms -406ms linear infinite, textShadow 1.6s infinite; 449 | } 450 | @keyframes glitch9 { 451 | 0% { 452 | transform: translateX(0); 453 | } 454 | 80% { 455 | transform: translateX(0); 456 | color: rgba(255, 255, 255, 1.0); 457 | } 458 | 85% { 459 | transform: translateX(4px); 460 | color: rgba(78,154,38,1.0); 461 | } 462 | 90% { 463 | transform: translateX(3px); 464 | color: rgba(172,18,18,1.0); 465 | } 466 | 95% { 467 | transform: translateX(3px); 468 | color: rgba(255, 255, 255, 1.0); 469 | } 470 | 100% { 471 | transform: translateX(0); 472 | } 473 | } 474 | .line:nth-child(10) { 475 | animation: clip 3000ms -3000ms linear infinite, glitch10 500ms -986ms linear infinite, textShadow 1.6s infinite; 476 | } 477 | @keyframes glitch10 { 478 | 0% { 479 | transform: translateX(0); 480 | } 481 | 80% { 482 | transform: translateX(0); 483 | color: rgba(255, 255, 255, 1.0); 484 | } 485 | 85% { 486 | transform: translateX(-4px); 487 | color: rgba(78,154,38,1.0); 488 | } 489 | 90% { 490 | transform: translateX(-3px); 491 | color: rgba(172,18,18,1.0); 492 | } 493 | 95% { 494 | transform: translateX(2px); 495 | color: rgba(255, 255, 255, 1.0); 496 | } 497 | 100% { 498 | transform: translateX(0); 499 | } 500 | } 501 | @keyframes clip { 502 | 0% { 503 | clip-path: polygon(0 100%, 100% 100%, 100% 120%, 0 120%); 504 | } 505 | 100% { 506 | clip-path: polygon(0 -20%, 100% -20%, 100% 0%, 0 0); 507 | } 508 | } 509 | @keyframes textShadow { 510 | 0% { 511 | text-shadow: 0.4389924193300864px 0 1px rgba(0,30,255,0.5), -0.4389924193300864px 0 1px rgba(255,0,80,0.3), 0 0 3px; 512 | } 513 | 5% { 514 | text-shadow: 2.7928974010788217px 0 1px rgba(0,30,255,0.5), -2.7928974010788217px 0 1px rgba(255,0,80,0.3), 0 0 3px; 515 | } 516 | 10% { 517 | text-shadow: 0.02956275843481219px 0 1px rgba(0,30,255,0.5), -0.02956275843481219px 0 1px rgba(255,0,80,0.3), 0 0 3px; 518 | } 519 | 15% { 520 | text-shadow: 0.40218538552878136px 0 1px rgba(0,30,255,0.5), -0.40218538552878136px 0 1px rgba(255,0,80,0.3), 0 0 3px; 521 | } 522 | 20% { 523 | text-shadow: 3.4794037899852017px 0 1px rgba(0,30,255,0.5), -3.4794037899852017px 0 1px rgba(255,0,80,0.3), 0 0 3px; 524 | } 525 | 25% { 526 | text-shadow: 1.6125630401149584px 0 1px rgba(0,30,255,0.5), -1.6125630401149584px 0 1px rgba(255,0,80,0.3), 0 0 3px; 527 | } 528 | 30% { 529 | text-shadow: 0.7015590085143956px 0 1px rgba(19, 28, 99, 0.5), -0.7015590085143956px 0 1px rgba(255,0,80,0.3), 0 0 3px; 530 | } 531 | 35% { 532 | text-shadow: 3.896914047650351px 0 1px rgba(0,30,255,0.5), -3.896914047650351px 0 1px rgba(255,0,80,0.3), 0 0 3px; 533 | } 534 | 40% { 535 | text-shadow: 3.870905614848819px 0 1px rgba(0,30,255,0.5), -3.870905614848819px 0 1px rgba(255,0,80,0.3), 0 0 3px; 536 | } 537 | 45% { 538 | text-shadow: 2.231056963361899px 0 1px rgba(0,30,255,0.5), -2.231056963361899px 0 1px rgba(255,0,80,0.3), 0 0 3px; 539 | } 540 | 50% { 541 | text-shadow: 0.08084290417898504px 0 1px rgba(0,30,255,0.5), -0.08084290417898504px 0 1px rgba(255,0,80,0.3), 0 0 3px; 542 | } 543 | 55% { 544 | text-shadow: 2.3758461067427543px 0 1px rgba(0,30,255,0.5), -2.3758461067427543px 0 1px rgba(255,0,80,0.3), 0 0 3px; 545 | } 546 | 60% { 547 | text-shadow: 2.202193051050636px 0 1px rgba(0,30,255,0.5), -2.202193051050636px 0 1px rgba(255,0,80,0.3), 0 0 3px; 548 | } 549 | 65% { 550 | text-shadow: 2.8638780614874975px 0 1px rgba(0,30,255,0.5), -2.8638780614874975px 0 1px rgba(255,0,80,0.3), 0 0 3px; 551 | } 552 | 70% { 553 | text-shadow: 0.48874025155497314px 0 1px rgba(0,30,255,0.5), -0.48874025155497314px 0 1px rgba(255,0,80,0.3), 0 0 3px; 554 | } 555 | 75% { 556 | text-shadow: 1.8948491305757957px 0 1px rgba(0,30,255,0.5), -1.8948491305757957px 0 1px rgba(255,0,80,0.3), 0 0 3px; 557 | } 558 | 80% { 559 | text-shadow: 0.0833037308038857px 0 1px rgba(0,30,255,0.5), -0.0833037308038857px 0 1px rgba(255,0,80,0.3), 0 0 3px; 560 | } 561 | 85% { 562 | text-shadow: 0.09769827255241735px 0 1px rgba(0,30,255,0.5), -0.09769827255241735px 0 1px rgba(255,0,80,0.3), 0 0 3px; 563 | } 564 | 90% { 565 | text-shadow: 3.443339761481782px 0 1px rgba(0,30,255,0.5), -3.443339761481782px 0 1px rgba(255,0,80,0.3), 0 0 3px; 566 | } 567 | 95% { 568 | text-shadow: 2.1841838852799786px 0 1px rgba(0,30,255,0.5), -2.1841838852799786px 0 1px rgba(255,0,80,0.3), 0 0 3px; 569 | } 570 | 100% { 571 | text-shadow: 2.6208764473832513px 0 1px rgba(0,30,255,0.5), -2.6208764473832513px 0 1px rgba(255,0,80,0.3), 0 0 3px; 572 | } 573 | } 574 | 575 | .fuk { 576 | height: 0; 577 | opacity: 0; 578 | padding: 0 1vmin 0 0 579 | } 580 | --------------------------------------------------------------------------------