diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e85b8ddf..8b21a59e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,48 +1,80 @@ -name: Deploy to GitHub Pages +name: Build, run tests, and deploy if necessary on: + # Push to main and tag push push: - branches: ['main'] + branches: + - main + tags: + - '*' + # PR to main + pull_request: + branches: + - main + + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true jobs: build: runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Install Node.js + steps: + - uses: actions/checkout@v3 + - name: Enable Corepack + run: corepack enable + - name: Use Node.js 24.x uses: actions/setup-node@v4 with: - node-version: 20 - cache: npm - - - name: Install dependencies - run: npm install - - - name: build - env: - BASE_PATH: '/${{ github.event.repository.name }}' + node-version: '24.x' + - run: npm install + - name: Build project run: npm run build - - - name: Upload Artifacts - uses: actions/upload-pages-artifact@v3 + - run: mv build out/ + - run: mkdir out/scripts + - run: cp scripts/generateEquipment.py out/scripts/generateEquipment.py + - run: cp scripts/manual_equipment.json out/scripts/manual_equipment.json + - uses: actions/upload-artifact@v4 with: - path: 'build/' + name: output + path: out/ deploy: - needs: build runs-on: ubuntu-latest - - permissions: - pages: write - id-token: write - - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - + needs: build + # Ensure that we only deploy to staging + if: github.repository == 'weirdgloop/rs-rotations' && github.event_name != 'pull_request' + env: + DIRECTORY_NAME: 'rs-rot/' steps: - - name: Deploy - id: deployment - uses: actions/deploy-pages@v4 + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: output + path: out + - name: Deploy to server + uses: easingthemes/ssh-deploy@main + with: + SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} + REMOTE_HOST: ${{ secrets.SSH_HOST }} + REMOTE_USER: ${{ secrets.SSH_USER }} + ARGS: "-rlgoDzvc -i --delete" + SOURCE: "out/" + TARGET: "/var/www/html/$DIRECTORY_NAME" + SCRIPT_AFTER: | + whoami + echo $RSYNC_STDOUT + - name: Purge cache on Cloudflare + run: | + curl --request POST \ + --url https://api.cloudflare.com/client/v4/zones/${{ secrets.CLOUDFLARE_ZONE }}/purge_cache \ + -H 'Content-Type: application/json' \ + -H 'Authorization: Bearer ${{ secrets.CLOUDFLARE_TOKEN }}' \ + --data '{ + "prefixes": [ + "tools.runescape.wiki/${{ env.DIRECTORY_NAME }}" + ] + }' \ No newline at end of file diff --git a/.gitignore b/.gitignore index f337df3f..bac0fa3c 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ bun.lock .vercel /.svelte-kit /build +/cdn # OS .DS_Store diff --git a/package-lock.json b/package-lock.json index e275087e..dd457d1e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "@sveltejs/adapter-static": "^3.0.6", "@sveltejs/kit": "^2.8.3", "@sveltejs/vite-plugin-svelte": "^4.0.0", + "@tailwindcss/vite": "^4.3.0", "@tanstack/svelte-table": "^9.0.0-alpha.10", "@types/eslint": "^9.6.0", "eslint": "^9.7.0", @@ -24,6 +25,7 @@ "prettier": "^3.3.3", "prettier-plugin-svelte": "^3.2.7", "svelte": "^5.0.0", + "tailwindcss": "^4.3.0", "vite": "^5.4.4", "vitest": "^2.0.4" } @@ -677,6 +679,16 @@ "@jridgewell/trace-mapping": "^0.3.24" } }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", @@ -688,11 +700,10 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", - "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", - "dev": true, - "license": "MIT" + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.29", @@ -1091,6 +1102,263 @@ "vite": "^5.0.0" } }, + "node_modules/@tailwindcss/node": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.0.tgz", + "integrity": "sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==", + "dev": true, + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.21.0", + "jiti": "^2.6.1", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.3.0" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.0.tgz", + "integrity": "sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg==", + "dev": true, + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.3.0", + "@tailwindcss/oxide-darwin-arm64": "4.3.0", + "@tailwindcss/oxide-darwin-x64": "4.3.0", + "@tailwindcss/oxide-freebsd-x64": "4.3.0", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.0", + "@tailwindcss/oxide-linux-arm64-gnu": "4.3.0", + "@tailwindcss/oxide-linux-arm64-musl": "4.3.0", + "@tailwindcss/oxide-linux-x64-gnu": "4.3.0", + "@tailwindcss/oxide-linux-x64-musl": "4.3.0", + "@tailwindcss/oxide-wasm32-wasi": "4.3.0", + "@tailwindcss/oxide-win32-arm64-msvc": "4.3.0", + "@tailwindcss/oxide-win32-x64-msvc": "4.3.0" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.0.tgz", + "integrity": "sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.0.tgz", + "integrity": "sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.0.tgz", + "integrity": "sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.0.tgz", + "integrity": "sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.0.tgz", + "integrity": "sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.0.tgz", + "integrity": "sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.0.tgz", + "integrity": "sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.0.tgz", + "integrity": "sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.0.tgz", + "integrity": "sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.0.tgz", + "integrity": "sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "optional": true, + "dependencies": { + "@emnapi/core": "^1.10.0", + "@emnapi/runtime": "^1.10.0", + "@emnapi/wasi-threads": "^1.2.1", + "@napi-rs/wasm-runtime": "^1.1.4", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.0.tgz", + "integrity": "sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.0.tgz", + "integrity": "sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.3.0.tgz", + "integrity": "sha512-t6J3OrB5Fc0ExuhohouH0fWUGMYL6PTLhW+E7zIk/pdbnJARZDCwjBznFnkh5ynRnIRSI4YjtTH0t6USjJISrw==", + "dev": true, + "dependencies": { + "@tailwindcss/node": "4.3.0", + "@tailwindcss/oxide": "4.3.0", + "tailwindcss": "4.3.0" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7 || ^8" + } + }, "node_modules/@tanstack/svelte-table": { "version": "9.0.0-alpha.10", "resolved": "https://registry.npmjs.org/@tanstack/svelte-table/-/svelte-table-9.0.0-alpha.10.tgz", @@ -1577,6 +1845,15 @@ "node": ">=0.10.0" } }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/devalue": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", @@ -1584,6 +1861,19 @@ "dev": true, "license": "MIT" }, + "node_modules/enhanced-resolve": { + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.22.1.tgz", + "integrity": "sha512-6QEuw3zoX1SJQc7b87aBXke/no+mG2bTBgw29gWMQonLmpEkWoCAVkl+M49e48AZlWzxiDzDZzYdp6kobcyLww==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/es-module-lexer": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", @@ -2012,6 +2302,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2099,6 +2395,15 @@ "dev": true, "license": "ISC" }, + "node_modules/jiti": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "dev": true, + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2174,6 +2479,255 @@ "node": ">= 0.8.0" } }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/lilconfig": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", @@ -2222,13 +2776,12 @@ "license": "MIT" }, "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, - "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "@jridgewell/sourcemap-codec": "^1.5.5" } }, "node_modules/minimatch": { @@ -2848,6 +3401,25 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/tailwindcss": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.0.tgz", + "integrity": "sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==", + "dev": true + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/tinybench": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", diff --git a/package.json b/package.json index daaa6254..a239731b 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "private": true, "scripts": { "start": "vite dev --open --port 3000", + "equipment:generate": "python3 scripts/generateEquipment.py", "build": "vite build", "preview": "vite preview", "test": "vitest", diff --git a/scripts/generateEquipment.py b/scripts/generateEquipment.py new file mode 100644 index 00000000..76b2046f --- /dev/null +++ b/scripts/generateEquipment.py @@ -0,0 +1,298 @@ +""" + Script to generate src/equipment.json of all the equipment on the RS Wiki. + Based on the script of the same name in the OSRS DPS calc https://github.com/weirdgloop/osrs-dps-calc/blob/main/scripts/generateEquipment.py + + The output is keyed by the first item id for direct import by src/lib/data/equipment.ts. + + Written for Python 3.9. +""" +import json +import time +from pathlib import Path + +import requests + +REPO_ROOT = Path(__file__).resolve().parent.parent +OUT_PATH = REPO_ROOT / 'src' / 'equipment.json' +MANUAL_EQUIP = REPO_ROOT / 'scripts' / 'manual_equipment.json' +WIKI_BASE = 'https://runescape.wiki' +API_BASE = WIKI_BASE + '/api.php' + +BUCKET_API_FIELDS = [ + 'page_name', + 'page_name_sub', + 'infobox_bonuses.json', + 'infobox_item.item_name', + 'infobox_item.image', + 'infobox_item.item_id', + 'infobox_item.version_anchor', + 'infobox_item.location_restriction' +] + +ITEMS_TO_SKIP = [ +] + +s = requests.Session() +s.headers.update({'User-Agent': 'rs-rotations (https://github.com/weirdgloop/rs-rotations)'}) + +def try_float(x, defl=0): + try: + return float(x) + except ValueError: + return defl +def try_int(x, defl=0): + try: + return int(x) + except ValueError: + return defl + +def getEquipmentData(): + equipment = [] + offset = 0 + fields_csv = ",".join(map(repr, BUCKET_API_FIELDS)) + while True: + print('Fetching equipment info: ' + str(offset)) + query = { + 'action': 'bucket', + 'format': 'json', + 'query': + ( + f"bucket('infobox_bonuses')" + f".join('infobox_item', 'infobox_bonuses.page_name_sub', 'infobox_item.page_name_sub')" + f".select({fields_csv})" + f".limit(500).offset({offset})" + f".where('infobox_bonuses.equipment_slot', '!=', bucket.Null())" + f".where('infobox_bonuses.is_cosmetic_recolour', '!=', true)" + #f".where(bucket.Not('Category:Recurring content'))" + #".where(bucket.Not({'infobox_item.location_restriction', '!=', bucket.Null()}))" + f".orderBy('page_name_sub', 'asc').run()" + ) + } + + time.sleep(0.2) + r = s.get(API_BASE, params=query) + #print(r.url) + + data = r.json() + + if 'bucket' not in data: + # No results? + break + + equipment = equipment + data['bucket'] + + # Bucket's API doesn't tell you when there are more results, so we'll just have to guess + if len(data['bucket']) == 500: + offset += 500 + else: + # If we are at the end of the results, break out of this loop + break + + items = {} + offset = 0 + while True: + print('Fetching item info: ' + str(offset)) + query = { + 'action': 'bucket', + 'format': 'json', + 'query': + ( + f"bucket('infobox_item')" + f".select('page_name','page_name_sub','image','item_id','version_anchor','location_restriction')" + f".limit(500).offset({offset})" + f".where('item_id', '!=', bucket.Null())" + f".where('Category:Equipment')" + f".orderBy('page_name_sub', 'asc').run()" + ) + } + + time.sleep(0.2) + r = s.get(API_BASE, params=query) + #print(r.url) + + data = r.json() + + if 'bucket' not in data: + # No results? + break + + for val in data['bucket']: + pn = val['page_name'] + if pn in items: + items[pn].append(val) + else: + items[pn] = [val] + # Bucket's API doesn't tell you when there are more results, so we'll just have to guess + if len(data['bucket']) == 500: + offset += 500 + else: + # If we are at the end of the results, break out of this loop + break + + return equipment, items + + +BONUS_PARAMS = frozenset(['damage', 'accuracy', 'armour', 'life', 'speed', 'prayer', 'strength', 'ranged', 'magic', 'necromancy', 'tier']) +TIER_SLOTS = frozenset(['head', 'torso', 'legs', 'hands', 'feet', 'main hand weapon', 'off-hand weapon', '2h weapon', 'off-hand', 'ammo']) +OK_RESTRICTION = frozenset([None, 'surface']) + +def tryint(x): + try: + return int(x) + except ValueError: + return None + +def first_id(item): + ids = item.get('id') + if not isinstance(ids, list) or len(ids) == 0: + raise ValueError(f"Equipment item \"{item.get('name', '')}\" has no id array") + + item_id = int(ids[0]) + if item_id <= 0: + raise ValueError(f"Equipment item \"{item.get('name', '')}\" has invalid first id") + return item_id + +def format_equipment_output(records): + by_id = {} + for item in records: + item_id = first_id(item) + if item_id in by_id: + continue + by_id[item_id] = { + **item, + 'id': item_id, + 'ids': item['id'], + } + + return { + str(item_id): by_id[item_id] + for item_id in sorted(by_id) + } + +def main(): + # Grab the equipment info using Bucket + wiki_data, item_data = getEquipmentData() + + # Use an object rather than an array, so that we can't have duplicate items with the same page_name_sub + data = {} + + # Loop over the equipment data from the wiki + for v in wiki_data: + if v['page_name_sub'] in data: + continue + + print(f"Processing {v['page_name_sub']}") + + iteminfo = item_data.get(v['page_name']) + try: + item_ids = list(map(int, v.get('infobox_item.item_id'))) if 'infobox_item.item_id' in v else None + except ValueError: + # Item has an invalid ID, do not show it here as it's probably historical or something. + print("Skipping - invalid item ID (not an int)") + continue + + itemname = v['page_name'] + itemname_sub = v['page_name_sub'] + + if itemname_sub in data: + continue + + if itemname.startswith('Augmented'): + continue + + if itemname in ITEMS_TO_SKIP: + continue + + img = [] + if 'infobox_item.item_name' in v: + # successful join + if v.get('infobox_item.location_restriction', 'surface') not in OK_RESTRICTION: + continue + imgs = v.get('infobox_item.image') + if imgs is not None: + img = list(map(lambda x: x.replace('File:', ''), imgs)) + else: + if iteminfo is None: + continue + #failed join + imgs = [] + item_ids = [] + bad_lr = False + for item in iteminfo: + if item.get('location_restriction', 'surface') not in OK_RESTRICTION: + bad_lr = True + break + imgs += item.get('image') + item_ids += list(filter(lambda x: x is not None, map(tryint, item.get('item_id')))) + if bad_lr: + continue + img = list(map(lambda x: x.replace('File:', ''), imgs)) + + img.sort(key=len) + if item_ids is not None: + item_ids.sort() + + bonuses = json.loads(v['infobox_bonuses.json']) + + equipment = { + 'name': itemname, + 'id': item_ids, + 'version': v.get('infobox_item.version_anchor', ''), + 'image': img, + 'bonuses': { + 'class': bonuses.get('class', ''), + 'slot': bonuses.get('slot', ''), + 'type': bonuses.get('type', ''), + 'damage': try_float(bonuses.get('damage', '')), + 'ability_damage': try_float(bonuses.get('ability_damage', '')), + 'accuracy': try_int(bonuses.get('accuracy', '')), + 'style': bonuses.get('style', ''), + 'attack_range': try_int(bonuses.get('attack_range', '')), + 'armour': try_float(bonuses.get('armour', '')), + 'life': bonuses.get('lp', 0), + 'speed': try_int(bonuses.get('speed', '')), + 'prayer': bonuses.get('prayer', 0), + 'strength': bonuses.get('strength', 0), + 'ranged': bonuses.get('ranged', 0), + 'magic': bonuses.get('magic', 0), + 'necromancy': bonuses.get('necromancy', 0), + 'tier': bonuses.get('tier', ''), + #'pvm_reduction': bonuses.get('infobox_bonuses.pvm_damage_reduction', ''), + #'pvp_reduction': bonuses.get('infobox_bonuses.pvp_damage_reduction', ''), + } + } + for tv in ['tier_damage', 'tier_accuracy', 'tier_armour', 'tier_armour_damage']: + if bonuses.get(tv) is not None: + equipment['bonuses'][tv] = bonuses.get(tv) + is_cosmetic = True + for bon in BONUS_PARAMS: + is_cosmetic &= equipment['bonuses'].get(bon) == 0 + if is_cosmetic: + continue + if equipment['bonuses']['slot'] in TIER_SLOTS: + t = equipment['bonuses'].get('tier') + if (type(t) == int or type(t) == float) and t < 70: + continue + + # Set the current equipment item to the calc's equipment list + data[itemname_sub] = equipment + + new_data = list(data.values()) + + # add manual equipment that isn't pulled from the wiki + # this should ONLY be used for upcoming items that are not yet released + with open(MANUAL_EQUIP, 'r') as f: + manual_data = json.load(f) + new_data = new_data + manual_data + + print('Total equipment: ' + str(len(new_data))) + equipment_output = format_equipment_output(new_data) + + OUT_PATH.parent.mkdir(parents=True, exist_ok=True) + with open(OUT_PATH, 'w') as f: + print('Saving to JSON at file: ' + str(OUT_PATH)) + json.dump(equipment_output, f, ensure_ascii=False, indent=2) + f.write('\n') + +if __name__ == '__main__': + main() diff --git a/scripts/manual_equipment.json b/scripts/manual_equipment.json new file mode 100644 index 00000000..0637a088 --- /dev/null +++ b/scripts/manual_equipment.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/src/app.html b/src/app.html index 6e1af7ed..b859dc14 100644 --- a/src/app.html +++ b/src/app.html @@ -14,7 +14,7 @@ property="og:description" content="A web based damage analysis tool for RuneScape 3" /> - + %sveltekit.head% diff --git a/src/components/AbilityDamageTable/AbilityDamageTable.svelte b/src/components/AbilityDamageTable/AbilityDamageTable.svelte index 43d3be78..323c7342 100644 --- a/src/components/AbilityDamageTable/AbilityDamageTable.svelte +++ b/src/components/AbilityDamageTable/AbilityDamageTable.svelte @@ -132,7 +132,7 @@ \ No newline at end of file + diff --git a/src/components/UI/ActionIcon.svelte b/src/components/UI/ActionIcon.svelte index 1c41b524..63a493e0 100644 --- a/src/components/UI/ActionIcon.svelte +++ b/src/components/UI/ActionIcon.svelte @@ -1,5 +1,6 @@ -
+
diff --git a/src/routes/magic/+page.svelte b/src/routes/magic/+page.svelte index 46d1245e..28eac11b 100644 --- a/src/routes/magic/+page.svelte +++ b/src/routes/magic/+page.svelte @@ -33,6 +33,7 @@ import { STYLE_COLORS } from '$lib/utils/colors'; import { ownedItemsStore } from '$lib/stores/ownedItemsStore.svelte.js'; import { weapons } from '$lib/data/weapons'; + import { coerceEquipmentValue, isCustomEquipment, migrateEquipmentSettings } from '$lib/data/equipment'; let showGearManager = $state(false); import Number from '$components/Settings/Number.svelte'; @@ -66,18 +67,19 @@ { ...value, key, - value: storedSettings[key]?.value ?? value.default?.magic ?? value.default + value: coerceEquipmentValue(storedSettings[key]?.value ?? value.default?.magic ?? value.default, key) } ]) ) ); + migrateEquipmentSettings(settings); let gearFilter = $derived(settings[SETTINGS.GEAR_FILTER]?.value ?? 'popular'); let useOwnedGearPerks = $derived(gearFilter === 'owned'); function getEquippedPerks(settingsKey) { const itemKey = settings[settingsKey]?.value; - if (!itemKey || itemKey === 'none' || itemKey.startsWith('custom')) return []; + if (!itemKey || itemKey === 'none' || isCustomEquipment(itemKey)) return []; const instances = ownedItemsStore.ownedGear.get(itemKey); if (!instances || instances.length === 0) return []; const gearInstances = settings['_gearInstances']?.value; @@ -169,7 +171,7 @@ -
+
@@ -247,7 +249,7 @@ updateDamages()} - img="/effect_icons/essence_corruption.png" + img="/rs-rot/effect_icons/essence_corruption.png" step="1" max="100" min="0" @@ -255,12 +257,12 @@ updateDamages()} - img="/effect_icons/instability.png" + img="/rs-rot/effect_icons/instability.png" /> updateDamages()} - img="/effect_icons/target_hp.png" + img="/rs-rot/effect_icons/target_hp.png" step="1" max="100" min="0" @@ -268,7 +270,7 @@ updateDamages()} - img="/effect_icons/magic.png" + img="/rs-rot/effect_icons/magic.png" step="1" max="150" min="1" @@ -276,12 +278,12 @@ updateDamages()} - img="/effect_icons/death.png" + img="/rs-rot/effect_icons/death.png" /> updateDamages()} - img="/settings_icons/Zero_weakness_icon.png" + img="/rs-rot/settings_icons/Zero_weakness_icon.png" step="1" max="100" min="0" @@ -298,12 +300,12 @@ updateDamages()} - img="/effect_icons/Undead_slayer_sigil_detail.png" + img="/rs-rot/effect_icons/Undead_slayer_sigil_detail.png" /> updateDamages()} - img="/effect_icons/nopenopenope.png" + img="/rs-rot/effect_icons/nopenopenope.png" step="1" max="3" min="0" @@ -329,7 +331,7 @@ updateDamages()} - img="/effect_icons/haunted.png" + img="/rs-rot/effect_icons/haunted.png" /> updateDamages()} - img="/effect_icons/conflagrate.png" + img="/rs-rot/effect_icons/conflagrate.png" /> updateDamages()} - img="/effect_icons/kerapac_wristwraps.png" + img="/rs-rot/effect_icons/kerapac_wristwraps.png" /> updateDamages()} - img="/effect_icons/magic/Enchantment_of_flames_detail.png" + img="/rs-rot/effect_icons/magic/Enchantment_of_flames_detail.png" /> updateDamages()} - img="/ability_icons/magic/30x30/concentrated_blast.png" + img="/rs-rot/ability_icons/magic/30x30/concentrated_blast.png" title="Conc Crit" /> updateDamages()} - img="/ability_icons/magic/30x30/greater_concentrated_blast.png" + img="/rs-rot/ability_icons/magic/30x30/greater_concentrated_blast.png" title="GConc Crit" /> updateDamages()} - img="/effect_icons/magic/Conc_AC.png" + img="/rs-rot/effect_icons/magic/Conc_AC.png" title="Conc Crit (AC)" /> updateDamages()} - img="/effect_icons/magic/GConc_AC.png" + img="/rs-rot/effect_icons/magic/GConc_AC.png" title="GConc Crit (AC)" /> updateDamages()} - img="/effect_icons/stone_of_jas.png" + img="/rs-rot/effect_icons/stone_of_jas.png" step="1" max="6" min="0" @@ -401,12 +403,12 @@ updateDamages()} - img="/effect_icons/draconic_fruit.png" + img="/rs-rot/effect_icons/draconic_fruit.png" /> updateDamages()} - img="/effect_icons/Ruby_Aurora_icon.webp" + img="/rs-rot/effect_icons/Ruby_Aurora_icon.webp" step="1" max="3" min="0" @@ -414,7 +416,7 @@ updateDamages()} - img="/effect_icons/gravitate.png" + img="/rs-rot/effect_icons/gravitate.png" step="1" max="20" min="0" @@ -422,7 +424,7 @@ updateDamages()} - img="/effect_icons/slayer_helmet.png" + img="/rs-rot/effect_icons/slayer_helmet.png" /> updateDamages()} - img="/effect_icons/enduring_ruin.png" + img="/rs-rot/effect_icons/enduring_ruin.png" /> updateDamages()} - img="/effect_icons/infernal_puzzlebox.png" + img="/rs-rot/effect_icons/infernal_puzzlebox.png" step="1" max="6" min="0" @@ -352,17 +354,17 @@ updateDamages()} - img="/effect_icons/Cryptbloom_helm.png" + img="/rs-rot/effect_icons/Cryptbloom_helm.png" /> updateDamages()} - img="/effect_icons/greater_fury.png" + img="/rs-rot/effect_icons/greater_fury.png" /> updateDamages()} - img="/effect_icons/rampage.png" + img="/rs-rot/effect_icons/rampage.png" /> updateDamages()} - img="/effect_icons/melee/primordial_ice.png" + img="/rs-rot/effect_icons/melee/primordial_ice.png" step="1" max="10" min="0" @@ -414,7 +416,7 @@ updateDamages()} - img="/effect_icons/cease.png" + img="/rs-rot/effect_icons/cease.png" step="1" max="10" min="0" @@ -422,12 +424,12 @@ updateDamages()} - img="/effect_icons/Prayer.webp" + img="/rs-rot/effect_icons/Prayer.webp" /> updateDamages()} - img="/effect_icons/revenge.png" + img="/rs-rot/effect_icons/revenge.png" step="1" max="10" min="0" @@ -480,7 +482,7 @@ updateDamages()} - img="/effect_icons/swiftness_of_the_avianse.png" + img="/rs-rot/effect_icons/swiftness_of_the_avianse.png" /> updateDamages()} - img="/effect_icons/frostblades.png" + img="/rs-rot/effect_icons/frostblades.png" /> updateDamages()} - img="/effect_icons/berserkers_fury.png" + img="/rs-rot/effect_icons/berserkers_fury.png" step="0.5" max="5.5" min="0" @@ -507,12 +509,12 @@ updateDamages()} - img="/effect_icons/smoke_cloud.png" + img="/rs-rot/effect_icons/smoke_cloud.png" /> updateDamages()} - img="/effect_icons/crit_i_kal.png" + img="/rs-rot/effect_icons/crit_i_kal.png" /> showGearManager = true} > - + Manage Gear @@ -570,7 +572,7 @@ updateDamages()} - img="/effect_icons/bosses/Balance_of_Power_Edict_(self_status).png" + img="/rs-rot/effect_icons/bosses/Balance_of_Power_Edict_(self_status).png" step="1" min="0" max="6" diff --git a/src/routes/necromancy/+page.svelte b/src/routes/necromancy/+page.svelte index 6ad9048c..5e88a236 100644 --- a/src/routes/necromancy/+page.svelte +++ b/src/routes/necromancy/+page.svelte @@ -31,6 +31,7 @@ import { STYLE_COLORS } from '$lib/utils/colors'; import { ownedItemsStore } from '$lib/stores/ownedItemsStore.svelte.js'; import { weapons } from '$lib/data/weapons'; + import { coerceEquipmentValue, isCustomEquipment, migrateEquipmentSettings } from '$lib/data/equipment'; let showGearManager = $state(false); let openDropdown = $state(null); @@ -60,18 +61,19 @@ { ...value, key, - value: storedSettings[key]?.value ?? value.default?.necromancy ?? value.default + value: coerceEquipmentValue(storedSettings[key]?.value ?? value.default?.necromancy ?? value.default, key) } ]) ) ); + migrateEquipmentSettings(settings); let gearFilter = $derived(settings[SETTINGS.GEAR_FILTER]?.value ?? 'popular'); let useOwnedGearPerks = $derived(gearFilter === 'owned'); function getEquippedPerks(settingsKey) { const itemKey = settings[settingsKey]?.value; - if (!itemKey || itemKey === 'none' || itemKey.startsWith('custom')) return []; + if (!itemKey || itemKey === 'none' || isCustomEquipment(itemKey)) return []; const instances = ownedItemsStore.ownedGear.get(itemKey); if (!instances || instances.length === 0) return []; const gearInstances = settings['_gearInstances']?.value; @@ -162,9 +164,9 @@
@@ -247,7 +249,7 @@ updateDamages()} - img="/effect_icons/target_hp.png" + img="/rs-rot/effect_icons/target_hp.png" step="1" max="100" min="0" @@ -255,7 +257,7 @@ updateDamages()} - img="/effect_icons/necromancy.png" + img="/rs-rot/effect_icons/necromancy.png" step="1" max="150" min="1" @@ -263,12 +265,12 @@ updateDamages()} - img="/effect_icons/death.png" + img="/rs-rot/effect_icons/death.png" /> updateDamages()} - img="/settings_icons/Zero_weakness_icon.png" + img="/rs-rot/settings_icons/Zero_weakness_icon.png" step="1" max="100" min="0" @@ -280,7 +282,7 @@ updateDamages()} - img="/effect_icons/instability.png" + img="/rs-rot/effect_icons/instability.png" />
@@ -290,17 +292,17 @@ updateDamages()} - img="/effect_icons/enduring_ruin.png" + img="/rs-rot/effect_icons/enduring_ruin.png" /> updateDamages()} - img="/effect_icons/infernal_puzzlebox.png" + img="/rs-rot/effect_icons/infernal_puzzlebox.png" step="1" max="6" min="0" @@ -308,17 +310,17 @@ updateDamages()} - img="/effect_icons/Cryptbloom_helm.png" + img="/rs-rot/effect_icons/Cryptbloom_helm.png" /> updateDamages()} - img="/effect_icons/Prayer.webp" + img="/rs-rot/effect_icons/Prayer.webp" /> updateDamages()} - img="/effect_icons/revenge.png" + img="/rs-rot/effect_icons/revenge.png" step="1" max="10" min="0" @@ -447,7 +449,7 @@ updateDamages()} - img="/effect_icons/swiftness_of_the_avianse.png" + img="/rs-rot/effect_icons/swiftness_of_the_avianse.png" /> updateDamages()} - img="/effect_icons/berserkers_fury.png" + img="/rs-rot/effect_icons/berserkers_fury.png" step="0.5" max="5.5" min="0" @@ -469,12 +471,12 @@ updateDamages()} - img="/effect_icons/smoke_cloud.png" + img="/rs-rot/effect_icons/smoke_cloud.png" /> updateDamages()} - img="/effect_icons/crit_i_kal.png" + img="/rs-rot/effect_icons/crit_i_kal.png" /> showGearManager = true} > - + Manage Gear @@ -532,7 +534,7 @@ updateDamages()} - img="/effect_icons/bosses/Balance_of_Power_Edict_(self_status).png" + img="/rs-rot/effect_icons/bosses/Balance_of_Power_Edict_(self_status).png" step="1" min="0" max="6" diff --git a/src/routes/projects/+page.svelte b/src/routes/projects/+page.svelte index 92bf7f2f..c1c900f0 100644 --- a/src/routes/projects/+page.svelte +++ b/src/routes/projects/+page.svelte @@ -4,7 +4,7 @@ -
+
diff --git a/src/routes/ranged/+page.svelte b/src/routes/ranged/+page.svelte index 8333abb4..b58e5608 100644 --- a/src/routes/ranged/+page.svelte +++ b/src/routes/ranged/+page.svelte @@ -35,6 +35,7 @@ import { STYLE_COLORS } from '$lib/utils/colors'; import { ownedItemsStore } from '$lib/stores/ownedItemsStore.svelte.js'; import { weapons } from '$lib/data/weapons'; + import { coerceEquipmentValue, isCustomEquipment, migrateEquipmentSettings } from '$lib/data/equipment'; let showGearManager = $state(false); @@ -67,18 +68,19 @@ { ...value, key, - value: storedSettings[key]?.value ?? value.default?.ranged ?? value.default + value: coerceEquipmentValue(storedSettings[key]?.value ?? value.default?.ranged ?? value.default, key) } ]) ) ); + migrateEquipmentSettings(settings); let gearFilter = $derived(settings[SETTINGS.GEAR_FILTER]?.value ?? 'popular'); let useOwnedGearPerks = $derived(gearFilter === 'owned'); function getEquippedPerks(settingsKey) { const itemKey = settings[settingsKey]?.value; - if (!itemKey || itemKey === 'none' || itemKey.startsWith('custom')) return []; + if (!itemKey || itemKey === 'none' || isCustomEquipment(itemKey)) return []; const instances = ownedItemsStore.ownedGear.get(itemKey); if (!instances || instances.length === 0) return []; const gearInstances = settings['_gearInstances']?.value; @@ -196,7 +198,7 @@ -
+
@@ -274,12 +276,12 @@ updateDamages()} - img="/effect_icons/balance_by_force.png" + img="/rs-rot/effect_icons/balance_by_force.png" /> updateDamages()} - img="/effect_icons/bolg_stacks.png" + img="/rs-rot/effect_icons/bolg_stacks.png" step="1" max="7" min="0" @@ -294,12 +296,12 @@ updateDamages()} - img="/effect_icons/magic/Vulnerability_icon.webp" + img="/rs-rot/effect_icons/magic/Vulnerability_icon.webp" /> updateDamages()} - img="/effect_icons/infernal_puzzlebox.png" + img="/rs-rot/effect_icons/infernal_puzzlebox.png" step="1" max="6" min="0" @@ -350,17 +352,17 @@ updateDamages()} - img="/effect_icons/Cryptbloom_helm.png" + img="/rs-rot/effect_icons/Cryptbloom_helm.png" /> updateDamages()} - img="/effect_icons/Prayer.webp" + img="/rs-rot/effect_icons/Prayer.webp" /> updateDamages()} - img="/effect_icons/revenge.png" + img="/rs-rot/effect_icons/revenge.png" step="1" max="10" min="0" @@ -442,7 +444,7 @@ updateDamages()} - img="/effect_icons/swiftness_of_the_avianse.png" + img="/rs-rot/effect_icons/swiftness_of_the_avianse.png" /> updateDamages()} - img="/effect_icons/berserkers_fury.png" + img="/rs-rot/effect_icons/berserkers_fury.png" step="0.5" max="5.5" min="0" @@ -464,12 +466,12 @@ updateDamages()} - img="/effect_icons/smoke_cloud.png" + img="/rs-rot/effect_icons/smoke_cloud.png" /> updateDamages()} - img="/effect_icons/crit_i_kal.png" + img="/rs-rot/effect_icons/crit_i_kal.png" /> showGearManager = true} > - + Manage Gear @@ -527,7 +529,7 @@ updateDamages()} - img="/effect_icons/bosses/Balance_of_Power_Edict_(self_status).png" + img="/rs-rot/effect_icons/bosses/Balance_of_Power_Edict_(self_status).png" step="1" min="0" max="6" diff --git a/src/routes/research/+page.svelte b/src/routes/research/+page.svelte index f1218503..af3469f3 100644 --- a/src/routes/research/+page.svelte +++ b/src/routes/research/+page.svelte @@ -4,7 +4,7 @@ -
+
diff --git a/src/routes/rotation_builder/+page.svelte b/src/routes/rotation_builder/+page.svelte index f9cbf0dc..61ceee1d 100644 --- a/src/routes/rotation_builder/+page.svelte +++ b/src/routes/rotation_builder/+page.svelte @@ -574,7 +574,7 @@ -
+

Please report any bugs or errors in the RSA discord. For a more comprehensive guide, check out our - + full guide.

@@ -1194,7 +1194,7 @@ .null-cursor { cursor: - url('/cursor_icons/abort-icon.svg') 16 16, + url('/rs-rot/cursor_icons/abort-icon.svg') 16 16, not-allowed; } @@ -1521,7 +1521,7 @@ .null-cursor { cursor: - url('/cursor_icons/abort-icon.svg') 16 16, + url('/rs-rot/cursor_icons/abort-icon.svg') 16 16, not-allowed; } diff --git a/src/routes/rotation_builder_guide/+page.svelte b/src/routes/rotation_builder_guide/+page.svelte index ea27d6cd..dc45e6ba 100644 --- a/src/routes/rotation_builder_guide/+page.svelte +++ b/src/routes/rotation_builder_guide/+page.svelte @@ -59,7 +59,7 @@ -
+
@@ -125,7 +125,7 @@ Adrenaline is tracked tick by tick.

- Buffs, stacks and cooldowns on the rotation timeline + Buffs, stacks and cooldowns on the rotation timeline

The total damage is displayed at the top of the page, broken down by source: diff --git a/static/gear_icons/magic/anima core body of seren.png b/static/gear_icons/magic/anima core body of seren.png deleted file mode 100644 index 2cefd1dc..00000000 Binary files a/static/gear_icons/magic/anima core body of seren.png and /dev/null differ diff --git a/static/gear_icons/magic/anima core helm of seren.png b/static/gear_icons/magic/anima core helm of seren.png deleted file mode 100644 index cba35175..00000000 Binary files a/static/gear_icons/magic/anima core helm of seren.png and /dev/null differ diff --git a/static/gear_icons/magic/anima core legs of seren.png b/static/gear_icons/magic/anima core legs of seren.png deleted file mode 100644 index c5843d66..00000000 Binary files a/static/gear_icons/magic/anima core legs of seren.png and /dev/null differ diff --git a/static/gear_icons/magic/arcane blood necklace.png b/static/gear_icons/magic/arcane blood necklace.png deleted file mode 100644 index cd727ff9..00000000 Binary files a/static/gear_icons/magic/arcane blood necklace.png and /dev/null differ diff --git a/static/gear_icons/magic/blast diffusion boots.png b/static/gear_icons/magic/blast diffusion boots.png deleted file mode 100644 index ad6c6864..00000000 Binary files a/static/gear_icons/magic/blast diffusion boots.png and /dev/null differ diff --git a/static/gear_icons/magic/boots of tumeken's resplendence.png b/static/gear_icons/magic/boots of tumeken's resplendence.png deleted file mode 100644 index 1614f72c..00000000 Binary files a/static/gear_icons/magic/boots of tumeken's resplendence.png and /dev/null differ diff --git a/static/gear_icons/magic/channeller's ring+.png b/static/gear_icons/magic/channeller's ring+.png deleted file mode 100644 index 1477dbd4..00000000 Binary files a/static/gear_icons/magic/channeller's ring+.png and /dev/null differ diff --git a/static/gear_icons/magic/channeller's ring.png b/static/gear_icons/magic/channeller's ring.png deleted file mode 100644 index 1477dbd4..00000000 Binary files a/static/gear_icons/magic/channeller's ring.png and /dev/null differ diff --git a/static/gear_icons/magic/cryptbloom boots.png b/static/gear_icons/magic/cryptbloom boots.png deleted file mode 100644 index c93adc6c..00000000 Binary files a/static/gear_icons/magic/cryptbloom boots.png and /dev/null differ diff --git a/static/gear_icons/magic/cryptbloom bottoms.png b/static/gear_icons/magic/cryptbloom bottoms.png deleted file mode 100644 index d8bf53f7..00000000 Binary files a/static/gear_icons/magic/cryptbloom bottoms.png and /dev/null differ diff --git a/static/gear_icons/magic/cryptbloom gloves.png b/static/gear_icons/magic/cryptbloom gloves.png deleted file mode 100644 index 2947af6e..00000000 Binary files a/static/gear_icons/magic/cryptbloom gloves.png and /dev/null differ diff --git a/static/gear_icons/magic/cryptbloom helm.png b/static/gear_icons/magic/cryptbloom helm.png deleted file mode 100644 index ca3ec402..00000000 Binary files a/static/gear_icons/magic/cryptbloom helm.png and /dev/null differ diff --git a/static/gear_icons/magic/cryptbloom top.png b/static/gear_icons/magic/cryptbloom top.png deleted file mode 100644 index 4b2df629..00000000 Binary files a/static/gear_icons/magic/cryptbloom top.png and /dev/null differ diff --git a/static/gear_icons/magic/elite tectonic mask.png b/static/gear_icons/magic/elite tectonic mask.png deleted file mode 100644 index e7ce21ea..00000000 Binary files a/static/gear_icons/magic/elite tectonic mask.png and /dev/null differ diff --git a/static/gear_icons/magic/elite tectonic robe bottom.png b/static/gear_icons/magic/elite tectonic robe bottom.png deleted file mode 100644 index 7e3e9ed3..00000000 Binary files a/static/gear_icons/magic/elite tectonic robe bottom.png and /dev/null differ diff --git a/static/gear_icons/magic/elite tectonic robe top.png b/static/gear_icons/magic/elite tectonic robe top.png deleted file mode 100644 index 042fdf9b..00000000 Binary files a/static/gear_icons/magic/elite tectonic robe top.png and /dev/null differ diff --git a/static/gear_icons/magic/enhanced blast diffusion boots.png b/static/gear_icons/magic/enhanced blast diffusion boots.png deleted file mode 100644 index b87c0bc1..00000000 Binary files a/static/gear_icons/magic/enhanced blast diffusion boots.png and /dev/null differ diff --git a/static/gear_icons/magic/enhanced kerapac's wrist wraps.png b/static/gear_icons/magic/enhanced kerapac's wrist wraps.png deleted file mode 100644 index 3fb4ef10..00000000 Binary files a/static/gear_icons/magic/enhanced kerapac's wrist wraps.png and /dev/null differ diff --git a/static/gear_icons/magic/fractured staff of armadyl.png b/static/gear_icons/magic/fractured staff of armadyl.png deleted file mode 100644 index 0a40af33..00000000 Binary files a/static/gear_icons/magic/fractured staff of armadyl.png and /dev/null differ diff --git a/static/gear_icons/magic/garb of subjugation.png b/static/gear_icons/magic/garb of subjugation.png deleted file mode 100644 index 74d30353..00000000 Binary files a/static/gear_icons/magic/garb of subjugation.png and /dev/null differ diff --git a/static/gear_icons/magic/gloves of subjugation.png b/static/gear_icons/magic/gloves of subjugation.png deleted file mode 100644 index c8e5e99f..00000000 Binary files a/static/gear_icons/magic/gloves of subjugation.png and /dev/null differ diff --git a/static/gear_icons/magic/gloves of tumeken's resplendence.png b/static/gear_icons/magic/gloves of tumeken's resplendence.png deleted file mode 100644 index 65881c8f..00000000 Binary files a/static/gear_icons/magic/gloves of tumeken's resplendence.png and /dev/null differ diff --git a/static/gear_icons/magic/god cape.png b/static/gear_icons/magic/god cape.png deleted file mode 100644 index ed6601d5..00000000 Binary files a/static/gear_icons/magic/god cape.png and /dev/null differ diff --git a/static/gear_icons/magic/gown of subjugation.png b/static/gear_icons/magic/gown of subjugation.png deleted file mode 100644 index 6ef7b1dd..00000000 Binary files a/static/gear_icons/magic/gown of subjugation.png and /dev/null differ diff --git a/static/gear_icons/magic/grasping rune pouch.png b/static/gear_icons/magic/grasping rune pouch.png deleted file mode 100644 index 0c04be34..00000000 Binary files a/static/gear_icons/magic/grasping rune pouch.png and /dev/null differ diff --git a/static/gear_icons/magic/igneous kal-mej.png b/static/gear_icons/magic/igneous kal-mej.png deleted file mode 100644 index d8e7a901..00000000 Binary files a/static/gear_icons/magic/igneous kal-mej.png and /dev/null differ diff --git a/static/gear_icons/magic/inquisitor staff.png b/static/gear_icons/magic/inquisitor staff.png deleted file mode 100644 index 5f4692ee..00000000 Binary files a/static/gear_icons/magic/inquisitor staff.png and /dev/null differ diff --git a/static/gear_icons/magic/kerapacs wristwraps.png b/static/gear_icons/magic/kerapacs wristwraps.png deleted file mode 100644 index 92597d1c..00000000 Binary files a/static/gear_icons/magic/kerapacs wristwraps.png and /dev/null differ diff --git a/static/gear_icons/magic/legatuss emberstaff.png b/static/gear_icons/magic/legatuss emberstaff.png deleted file mode 100644 index b75eabbb..00000000 Binary files a/static/gear_icons/magic/legatuss emberstaff.png and /dev/null differ diff --git a/static/gear_icons/magic/mask of tumeken's resplendence.png b/static/gear_icons/magic/mask of tumeken's resplendence.png deleted file mode 100644 index 3a822c7a..00000000 Binary files a/static/gear_icons/magic/mask of tumeken's resplendence.png and /dev/null differ diff --git a/static/gear_icons/magic/masterwork magic boots.png b/static/gear_icons/magic/masterwork magic boots.png deleted file mode 100644 index f1e56739..00000000 Binary files a/static/gear_icons/magic/masterwork magic boots.png and /dev/null differ diff --git a/static/gear_icons/magic/masterwork magic gloves.png b/static/gear_icons/magic/masterwork magic gloves.png deleted file mode 100644 index b9d06196..00000000 Binary files a/static/gear_icons/magic/masterwork magic gloves.png and /dev/null differ diff --git a/static/gear_icons/magic/masterwork magic hat.png b/static/gear_icons/magic/masterwork magic hat.png deleted file mode 100644 index a77c67a4..00000000 Binary files a/static/gear_icons/magic/masterwork magic hat.png and /dev/null differ diff --git a/static/gear_icons/magic/masterwork magic robe bottom.png b/static/gear_icons/magic/masterwork magic robe bottom.png deleted file mode 100644 index 0857713b..00000000 Binary files a/static/gear_icons/magic/masterwork magic robe bottom.png and /dev/null differ diff --git a/static/gear_icons/magic/masterwork magic robe top.png b/static/gear_icons/magic/masterwork magic robe top.png deleted file mode 100644 index 079b2185..00000000 Binary files a/static/gear_icons/magic/masterwork magic robe top.png and /dev/null differ diff --git a/static/gear_icons/magic/ode to deceit.png b/static/gear_icons/magic/ode to deceit.png deleted file mode 100644 index 881151b0..00000000 Binary files a/static/gear_icons/magic/ode to deceit.png and /dev/null differ diff --git a/static/gear_icons/magic/refined anima core body of seren.png b/static/gear_icons/magic/refined anima core body of seren.png deleted file mode 100644 index e1dddfc3..00000000 Binary files a/static/gear_icons/magic/refined anima core body of seren.png and /dev/null differ diff --git a/static/gear_icons/magic/refined anima core helm of seren.png b/static/gear_icons/magic/refined anima core helm of seren.png deleted file mode 100644 index 26881dd1..00000000 Binary files a/static/gear_icons/magic/refined anima core helm of seren.png and /dev/null differ diff --git a/static/gear_icons/magic/refined anima core legs of seren.png b/static/gear_icons/magic/refined anima core legs of seren.png deleted file mode 100644 index 08aa033c..00000000 Binary files a/static/gear_icons/magic/refined anima core legs of seren.png and /dev/null differ diff --git a/static/gear_icons/magic/roar of awakening.png b/static/gear_icons/magic/roar of awakening.png deleted file mode 100644 index 185f65af..00000000 Binary files a/static/gear_icons/magic/roar of awakening.png and /dev/null differ diff --git a/static/gear_icons/magic/robe bottom of tumeken's resplendence.png b/static/gear_icons/magic/robe bottom of tumeken's resplendence.png deleted file mode 100644 index f3c5a1bf..00000000 Binary files a/static/gear_icons/magic/robe bottom of tumeken's resplendence.png and /dev/null differ diff --git a/static/gear_icons/magic/robe top of tumeken's resplendence.png b/static/gear_icons/magic/robe top of tumeken's resplendence.png deleted file mode 100644 index b537d3e7..00000000 Binary files a/static/gear_icons/magic/robe top of tumeken's resplendence.png and /dev/null differ diff --git a/static/gear_icons/magic/scrimshaw of the elements.png b/static/gear_icons/magic/scrimshaw of the elements.png deleted file mode 100644 index ff1df8a4..00000000 Binary files a/static/gear_icons/magic/scrimshaw of the elements.png and /dev/null differ diff --git a/static/gear_icons/magic/superior scrimshaw of the elements.png b/static/gear_icons/magic/superior scrimshaw of the elements.png deleted file mode 100644 index 80c412b3..00000000 Binary files a/static/gear_icons/magic/superior scrimshaw of the elements.png and /dev/null differ diff --git a/static/gear_icons/magic/tectonic mask.png b/static/gear_icons/magic/tectonic mask.png deleted file mode 100644 index bcd3643e..00000000 Binary files a/static/gear_icons/magic/tectonic mask.png and /dev/null differ diff --git a/static/gear_icons/magic/tectonic robe bottom.png b/static/gear_icons/magic/tectonic robe bottom.png deleted file mode 100644 index e1613d9a..00000000 Binary files a/static/gear_icons/magic/tectonic robe bottom.png and /dev/null differ diff --git a/static/gear_icons/magic/tectonic robe top.png b/static/gear_icons/magic/tectonic robe top.png deleted file mode 100644 index 47685c92..00000000 Binary files a/static/gear_icons/magic/tectonic robe top.png and /dev/null differ diff --git a/static/gear_icons/magic/tokhaar-kal-mej.png b/static/gear_icons/magic/tokhaar-kal-mej.png deleted file mode 100644 index 261bbe00..00000000 Binary files a/static/gear_icons/magic/tokhaar-kal-mej.png and /dev/null differ diff --git a/static/gear_icons/magic/virtus boots.png b/static/gear_icons/magic/virtus boots.png deleted file mode 100644 index defa7544..00000000 Binary files a/static/gear_icons/magic/virtus boots.png and /dev/null differ diff --git a/static/gear_icons/magic/virtus gloves.png b/static/gear_icons/magic/virtus gloves.png deleted file mode 100644 index 2fbddcaa..00000000 Binary files a/static/gear_icons/magic/virtus gloves.png and /dev/null differ diff --git a/static/gear_icons/magic/virtus mask.png b/static/gear_icons/magic/virtus mask.png deleted file mode 100644 index fb05f2e4..00000000 Binary files a/static/gear_icons/magic/virtus mask.png and /dev/null differ diff --git a/static/gear_icons/magic/virtus robe bottom.png b/static/gear_icons/magic/virtus robe bottom.png deleted file mode 100644 index 272bab3d..00000000 Binary files a/static/gear_icons/magic/virtus robe bottom.png and /dev/null differ diff --git a/static/gear_icons/magic/virtus robe top.png b/static/gear_icons/magic/virtus robe top.png deleted file mode 100644 index a8043c5f..00000000 Binary files a/static/gear_icons/magic/virtus robe top.png and /dev/null differ diff --git a/static/gear_icons/melee/Abyssal_vine_whip.png b/static/gear_icons/melee/Abyssal_vine_whip.png deleted file mode 100644 index d95da5fd..00000000 Binary files a/static/gear_icons/melee/Abyssal_vine_whip.png and /dev/null differ diff --git a/static/gear_icons/melee/am-hej.png b/static/gear_icons/melee/am-hej.png deleted file mode 100644 index e39b1c5f..00000000 Binary files a/static/gear_icons/melee/am-hej.png and /dev/null differ diff --git a/static/gear_icons/melee/am-zi.png b/static/gear_icons/melee/am-zi.png deleted file mode 100644 index fe83d735..00000000 Binary files a/static/gear_icons/melee/am-zi.png and /dev/null differ diff --git a/static/gear_icons/melee/bandos chestplate.png b/static/gear_icons/melee/bandos chestplate.png deleted file mode 100644 index 071f7a7a..00000000 Binary files a/static/gear_icons/melee/bandos chestplate.png and /dev/null differ diff --git a/static/gear_icons/melee/bandos tassets.png b/static/gear_icons/melee/bandos tassets.png deleted file mode 100644 index ac687e02..00000000 Binary files a/static/gear_icons/melee/bandos tassets.png and /dev/null differ diff --git a/static/gear_icons/melee/brawlers blood necklace.png b/static/gear_icons/melee/brawlers blood necklace.png deleted file mode 100644 index 929f4a70..00000000 Binary files a/static/gear_icons/melee/brawlers blood necklace.png and /dev/null differ diff --git a/static/gear_icons/melee/champion's ring+.png b/static/gear_icons/melee/champion's ring+.png deleted file mode 100644 index 24620d26..00000000 Binary files a/static/gear_icons/melee/champion's ring+.png and /dev/null differ diff --git a/static/gear_icons/melee/champion's ring.png b/static/gear_icons/melee/champion's ring.png deleted file mode 100644 index 24620d26..00000000 Binary files a/static/gear_icons/melee/champion's ring.png and /dev/null differ diff --git a/static/gear_icons/melee/dark ice shard.png b/static/gear_icons/melee/dark ice shard.png deleted file mode 100644 index df7b6652..00000000 Binary files a/static/gear_icons/melee/dark ice shard.png and /dev/null differ diff --git a/static/gear_icons/melee/dark ice sliver.png b/static/gear_icons/melee/dark ice sliver.png deleted file mode 100644 index f173fde9..00000000 Binary files a/static/gear_icons/melee/dark ice sliver.png and /dev/null differ diff --git a/static/gear_icons/melee/dark shard of leng.png b/static/gear_icons/melee/dark shard of leng.png deleted file mode 100644 index f2ec6d12..00000000 Binary files a/static/gear_icons/melee/dark shard of leng.png and /dev/null differ diff --git a/static/gear_icons/melee/dark sliver of leng.png b/static/gear_icons/melee/dark sliver of leng.png deleted file mode 100644 index ca68e915..00000000 Binary files a/static/gear_icons/melee/dark sliver of leng.png and /dev/null differ diff --git a/static/gear_icons/melee/dragon bane 2h sword.png b/static/gear_icons/melee/dragon bane 2h sword.png deleted file mode 100644 index 3342540a..00000000 Binary files a/static/gear_icons/melee/dragon bane 2h sword.png and /dev/null differ diff --git a/static/gear_icons/melee/dragon bane longsword.png b/static/gear_icons/melee/dragon bane longsword.png deleted file mode 100644 index f129bcbf..00000000 Binary files a/static/gear_icons/melee/dragon bane longsword.png and /dev/null differ diff --git a/static/gear_icons/melee/dragon bane off hand longsword.png b/static/gear_icons/melee/dragon bane off hand longsword.png deleted file mode 100644 index b491de4f..00000000 Binary files a/static/gear_icons/melee/dragon bane off hand longsword.png and /dev/null differ diff --git a/static/gear_icons/melee/dragon battleaxe.png b/static/gear_icons/melee/dragon battleaxe.png deleted file mode 100644 index 536a1317..00000000 Binary files a/static/gear_icons/melee/dragon battleaxe.png and /dev/null differ diff --git a/static/gear_icons/melee/enhanced gloves of passage.png b/static/gear_icons/melee/enhanced gloves of passage.png deleted file mode 100644 index daaa0da9..00000000 Binary files a/static/gear_icons/melee/enhanced gloves of passage.png and /dev/null differ diff --git a/static/gear_icons/melee/enhanced laceration boots.png b/static/gear_icons/melee/enhanced laceration boots.png deleted file mode 100644 index f11af366..00000000 Binary files a/static/gear_icons/melee/enhanced laceration boots.png and /dev/null differ diff --git a/static/gear_icons/melee/ezk.png b/static/gear_icons/melee/ezk.png deleted file mode 100644 index 57a067bd..00000000 Binary files a/static/gear_icons/melee/ezk.png and /dev/null differ diff --git a/static/gear_icons/melee/gloves of passage.png b/static/gear_icons/melee/gloves of passage.png deleted file mode 100644 index e642932d..00000000 Binary files a/static/gear_icons/melee/gloves of passage.png and /dev/null differ diff --git a/static/gear_icons/melee/igneous kal-ket.png b/static/gear_icons/melee/igneous kal-ket.png deleted file mode 100644 index e04c45ed..00000000 Binary files a/static/gear_icons/melee/igneous kal-ket.png and /dev/null differ diff --git a/static/gear_icons/melee/jaws of the abyss.png b/static/gear_icons/melee/jaws of the abyss.png deleted file mode 100644 index 44b35f2f..00000000 Binary files a/static/gear_icons/melee/jaws of the abyss.png and /dev/null differ diff --git a/static/gear_icons/melee/laceration boots.png b/static/gear_icons/melee/laceration boots.png deleted file mode 100644 index 3ba2a48b..00000000 Binary files a/static/gear_icons/melee/laceration boots.png and /dev/null differ diff --git a/static/gear_icons/melee/masterwork melee boots.png b/static/gear_icons/melee/masterwork melee boots.png deleted file mode 100644 index dad184af..00000000 Binary files a/static/gear_icons/melee/masterwork melee boots.png and /dev/null differ diff --git a/static/gear_icons/melee/masterwork melee gloves.png b/static/gear_icons/melee/masterwork melee gloves.png deleted file mode 100644 index b0edfc23..00000000 Binary files a/static/gear_icons/melee/masterwork melee gloves.png and /dev/null differ diff --git a/static/gear_icons/melee/masterwork melee helm.png b/static/gear_icons/melee/masterwork melee helm.png deleted file mode 100644 index 52ba2454..00000000 Binary files a/static/gear_icons/melee/masterwork melee helm.png and /dev/null differ diff --git a/static/gear_icons/melee/masterwork melee platebody.png b/static/gear_icons/melee/masterwork melee platebody.png deleted file mode 100644 index 2a01b786..00000000 Binary files a/static/gear_icons/melee/masterwork melee platebody.png and /dev/null differ diff --git a/static/gear_icons/melee/masterwork melee platelegs.png b/static/gear_icons/melee/masterwork melee platelegs.png deleted file mode 100644 index 014321f4..00000000 Binary files a/static/gear_icons/melee/masterwork melee platelegs.png and /dev/null differ diff --git a/static/gear_icons/melee/masterwork spear of annihilation.png b/static/gear_icons/melee/masterwork spear of annihilation.png deleted file mode 100644 index 8e063abc..00000000 Binary files a/static/gear_icons/melee/masterwork spear of annihilation.png and /dev/null differ diff --git a/static/gear_icons/melee/nodon spike harness.png b/static/gear_icons/melee/nodon spike harness.png deleted file mode 100644 index ea8773a5..00000000 Binary files a/static/gear_icons/melee/nodon spike harness.png and /dev/null differ diff --git a/static/gear_icons/melee/terrasaur maul.png b/static/gear_icons/melee/terrasaur maul.png deleted file mode 100644 index b748ded4..00000000 Binary files a/static/gear_icons/melee/terrasaur maul.png and /dev/null differ diff --git a/static/gear_icons/melee/torva boots.png b/static/gear_icons/melee/torva boots.png deleted file mode 100644 index 1e962df4..00000000 Binary files a/static/gear_icons/melee/torva boots.png and /dev/null differ diff --git a/static/gear_icons/melee/torva full helm.png b/static/gear_icons/melee/torva full helm.png deleted file mode 100644 index 18ea771d..00000000 Binary files a/static/gear_icons/melee/torva full helm.png and /dev/null differ diff --git a/static/gear_icons/melee/torva gloves.png b/static/gear_icons/melee/torva gloves.png deleted file mode 100644 index f0a75e0d..00000000 Binary files a/static/gear_icons/melee/torva gloves.png and /dev/null differ diff --git a/static/gear_icons/melee/torva platebody.png b/static/gear_icons/melee/torva platebody.png deleted file mode 100644 index 53a7fd7a..00000000 Binary files a/static/gear_icons/melee/torva platebody.png and /dev/null differ diff --git a/static/gear_icons/melee/torva platelegs.png b/static/gear_icons/melee/torva platelegs.png deleted file mode 100644 index 4cd22473..00000000 Binary files a/static/gear_icons/melee/torva platelegs.png and /dev/null differ diff --git a/static/gear_icons/melee/trimmed masterwork melee boots.png b/static/gear_icons/melee/trimmed masterwork melee boots.png deleted file mode 100644 index ae3ed9db..00000000 Binary files a/static/gear_icons/melee/trimmed masterwork melee boots.png and /dev/null differ diff --git a/static/gear_icons/melee/trimmed masterwork melee gloves.png b/static/gear_icons/melee/trimmed masterwork melee gloves.png deleted file mode 100644 index 1ebd60e4..00000000 Binary files a/static/gear_icons/melee/trimmed masterwork melee gloves.png and /dev/null differ diff --git a/static/gear_icons/melee/trimmed masterwork melee helm.png b/static/gear_icons/melee/trimmed masterwork melee helm.png deleted file mode 100644 index 461f62fd..00000000 Binary files a/static/gear_icons/melee/trimmed masterwork melee helm.png and /dev/null differ diff --git a/static/gear_icons/melee/trimmed masterwork melee platebody.png b/static/gear_icons/melee/trimmed masterwork melee platebody.png deleted file mode 100644 index 31a16b5d..00000000 Binary files a/static/gear_icons/melee/trimmed masterwork melee platebody.png and /dev/null differ diff --git a/static/gear_icons/melee/trimmed masterwork melee platelegs.png b/static/gear_icons/melee/trimmed masterwork melee platelegs.png deleted file mode 100644 index 8c2e0166..00000000 Binary files a/static/gear_icons/melee/trimmed masterwork melee platelegs.png and /dev/null differ diff --git a/static/gear_icons/melee/tumeken's light.png b/static/gear_icons/melee/tumeken's light.png deleted file mode 100644 index 13c053b3..00000000 Binary files a/static/gear_icons/melee/tumeken's light.png and /dev/null differ diff --git a/static/gear_icons/melee/varanus's mercy.png b/static/gear_icons/melee/varanus's mercy.png deleted file mode 100644 index c248f905..00000000 Binary files a/static/gear_icons/melee/varanus's mercy.png and /dev/null differ diff --git a/static/gear_icons/melee/vestments of havoc boots.png b/static/gear_icons/melee/vestments of havoc boots.png deleted file mode 100644 index b66c67d9..00000000 Binary files a/static/gear_icons/melee/vestments of havoc boots.png and /dev/null differ diff --git a/static/gear_icons/melee/vestments of havoc hood.png b/static/gear_icons/melee/vestments of havoc hood.png deleted file mode 100644 index b8ad9e80..00000000 Binary files a/static/gear_icons/melee/vestments of havoc hood.png and /dev/null differ diff --git a/static/gear_icons/melee/vestments of havoc robe bottom.png b/static/gear_icons/melee/vestments of havoc robe bottom.png deleted file mode 100644 index ba4417ff..00000000 Binary files a/static/gear_icons/melee/vestments of havoc robe bottom.png and /dev/null differ diff --git a/static/gear_icons/melee/vestments of havoc robe top.png b/static/gear_icons/melee/vestments of havoc robe top.png deleted file mode 100644 index 6740b91e..00000000 Binary files a/static/gear_icons/melee/vestments of havoc robe top.png and /dev/null differ diff --git a/static/gear_icons/necro/crown of the first necromancer.png b/static/gear_icons/necro/crown of the first necromancer.png deleted file mode 100644 index 898bdd94..00000000 Binary files a/static/gear_icons/necro/crown of the first necromancer.png and /dev/null differ diff --git a/static/gear_icons/necro/deathdealer boots (tier 90).png b/static/gear_icons/necro/deathdealer boots (tier 90).png deleted file mode 100644 index 1370cc2e..00000000 Binary files a/static/gear_icons/necro/deathdealer boots (tier 90).png and /dev/null differ diff --git a/static/gear_icons/necro/deathdealer gloves (tier 90).png b/static/gear_icons/necro/deathdealer gloves (tier 90).png deleted file mode 100644 index 6e903fe2..00000000 Binary files a/static/gear_icons/necro/deathdealer gloves (tier 90).png and /dev/null differ diff --git a/static/gear_icons/necro/deathdealer hood (tier 90).png b/static/gear_icons/necro/deathdealer hood (tier 90).png deleted file mode 100644 index b5fd634e..00000000 Binary files a/static/gear_icons/necro/deathdealer hood (tier 90).png and /dev/null differ diff --git a/static/gear_icons/necro/deathdealer robe bottom (tier 90).png b/static/gear_icons/necro/deathdealer robe bottom (tier 90).png deleted file mode 100644 index 4ea3cc6d..00000000 Binary files a/static/gear_icons/necro/deathdealer robe bottom (tier 90).png and /dev/null differ diff --git a/static/gear_icons/necro/deathdealer robe top (tier 90).png b/static/gear_icons/necro/deathdealer robe top (tier 90).png deleted file mode 100644 index a225463b..00000000 Binary files a/static/gear_icons/necro/deathdealer robe top (tier 90).png and /dev/null differ diff --git a/static/gear_icons/necro/devourer's guard.png b/static/gear_icons/necro/devourer's guard.png deleted file mode 100644 index cbf1dc32..00000000 Binary files a/static/gear_icons/necro/devourer's guard.png and /dev/null differ diff --git a/static/gear_icons/necro/foot wraps of the first necromancer.png b/static/gear_icons/necro/foot wraps of the first necromancer.png deleted file mode 100644 index c9f93e37..00000000 Binary files a/static/gear_icons/necro/foot wraps of the first necromancer.png and /dev/null differ diff --git a/static/gear_icons/necro/hand wrap of the first necromancer.png b/static/gear_icons/necro/hand wrap of the first necromancer.png deleted file mode 100644 index 1f57367a..00000000 Binary files a/static/gear_icons/necro/hand wrap of the first necromancer.png and /dev/null differ diff --git a/static/gear_icons/necro/occultist's ring.png b/static/gear_icons/necro/occultist's ring.png deleted file mode 100644 index bfbd587c..00000000 Binary files a/static/gear_icons/necro/occultist's ring.png and /dev/null differ diff --git a/static/gear_icons/necro/omni guard.png b/static/gear_icons/necro/omni guard.png deleted file mode 100644 index 800cae9b..00000000 Binary files a/static/gear_icons/necro/omni guard.png and /dev/null differ diff --git a/static/gear_icons/necro/robe bottom of the first necromancer.png b/static/gear_icons/necro/robe bottom of the first necromancer.png deleted file mode 100644 index ec46a0d7..00000000 Binary files a/static/gear_icons/necro/robe bottom of the first necromancer.png and /dev/null differ diff --git a/static/gear_icons/necro/robe top of the first necromancer.png b/static/gear_icons/necro/robe top of the first necromancer.png deleted file mode 100644 index 8a0cbfc0..00000000 Binary files a/static/gear_icons/necro/robe top of the first necromancer.png and /dev/null differ diff --git a/static/gear_icons/necro/soulbound lantern.png b/static/gear_icons/necro/soulbound lantern.png deleted file mode 100644 index 2fc11436..00000000 Binary files a/static/gear_icons/necro/soulbound lantern.png and /dev/null differ diff --git a/static/gear_icons/necro/tokhaar-kal-ket.png b/static/gear_icons/necro/tokhaar-kal-ket.png deleted file mode 100644 index e2b60b34..00000000 Binary files a/static/gear_icons/necro/tokhaar-kal-ket.png and /dev/null differ diff --git a/static/gear_icons/necro/tokhaar-kal-mor.png b/static/gear_icons/necro/tokhaar-kal-mor.png deleted file mode 100644 index c025278d..00000000 Binary files a/static/gear_icons/necro/tokhaar-kal-mor.png and /dev/null differ diff --git a/static/gear_icons/ranged/bik arrows.png b/static/gear_icons/ranged/bik arrows.png deleted file mode 100644 index cf6c2988..00000000 Binary files a/static/gear_icons/ranged/bik arrows.png and /dev/null differ diff --git a/static/gear_icons/ranged/blightbound crossbow.png b/static/gear_icons/ranged/blightbound crossbow.png deleted file mode 100644 index d2d70f8a..00000000 Binary files a/static/gear_icons/ranged/blightbound crossbow.png and /dev/null differ diff --git a/static/gear_icons/ranged/bow of the last guardian.png b/static/gear_icons/ranged/bow of the last guardian.png deleted file mode 100644 index a5b2a552..00000000 Binary files a/static/gear_icons/ranged/bow of the last guardian.png and /dev/null differ diff --git a/static/gear_icons/ranged/deathspore arrows.png b/static/gear_icons/ranged/deathspore arrows.png deleted file mode 100644 index 771a7021..00000000 Binary files a/static/gear_icons/ranged/deathspore arrows.png and /dev/null differ diff --git a/static/gear_icons/ranged/dracolich boots.png b/static/gear_icons/ranged/dracolich boots.png deleted file mode 100644 index f0d9abb1..00000000 Binary files a/static/gear_icons/ranged/dracolich boots.png and /dev/null differ diff --git a/static/gear_icons/ranged/dracolich chaps.png b/static/gear_icons/ranged/dracolich chaps.png deleted file mode 100644 index 6bea04ca..00000000 Binary files a/static/gear_icons/ranged/dracolich chaps.png and /dev/null differ diff --git a/static/gear_icons/ranged/dracolich coif.png b/static/gear_icons/ranged/dracolich coif.png deleted file mode 100644 index d52c68da..00000000 Binary files a/static/gear_icons/ranged/dracolich coif.png and /dev/null differ diff --git a/static/gear_icons/ranged/dracolich hauberk.png b/static/gear_icons/ranged/dracolich hauberk.png deleted file mode 100644 index a1ae31b4..00000000 Binary files a/static/gear_icons/ranged/dracolich hauberk.png and /dev/null differ diff --git a/static/gear_icons/ranged/dracolich vambraces.png b/static/gear_icons/ranged/dracolich vambraces.png deleted file mode 100644 index 05749faf..00000000 Binary files a/static/gear_icons/ranged/dracolich vambraces.png and /dev/null differ diff --git a/static/gear_icons/ranged/elite dracolich boots.png b/static/gear_icons/ranged/elite dracolich boots.png deleted file mode 100644 index 6ab26530..00000000 Binary files a/static/gear_icons/ranged/elite dracolich boots.png and /dev/null differ diff --git a/static/gear_icons/ranged/elite dracolich chaps.png b/static/gear_icons/ranged/elite dracolich chaps.png deleted file mode 100644 index 885a1008..00000000 Binary files a/static/gear_icons/ranged/elite dracolich chaps.png and /dev/null differ diff --git a/static/gear_icons/ranged/elite dracolich coif.png b/static/gear_icons/ranged/elite dracolich coif.png deleted file mode 100644 index 9449b943..00000000 Binary files a/static/gear_icons/ranged/elite dracolich coif.png and /dev/null differ diff --git a/static/gear_icons/ranged/elite dracolich hauberk.png b/static/gear_icons/ranged/elite dracolich hauberk.png deleted file mode 100644 index a6675397..00000000 Binary files a/static/gear_icons/ranged/elite dracolich hauberk.png and /dev/null differ diff --git a/static/gear_icons/ranged/elite dracolich vambraces.png b/static/gear_icons/ranged/elite dracolich vambraces.png deleted file mode 100644 index e603f7f1..00000000 Binary files a/static/gear_icons/ranged/elite dracolich vambraces.png and /dev/null differ diff --git a/static/gear_icons/ranged/elite sirenic chaps.png b/static/gear_icons/ranged/elite sirenic chaps.png deleted file mode 100644 index b5800292..00000000 Binary files a/static/gear_icons/ranged/elite sirenic chaps.png and /dev/null differ diff --git a/static/gear_icons/ranged/elite sirenic hauberk.png b/static/gear_icons/ranged/elite sirenic hauberk.png deleted file mode 100644 index 26fc9c48..00000000 Binary files a/static/gear_icons/ranged/elite sirenic hauberk.png and /dev/null differ diff --git a/static/gear_icons/ranged/elite sirenic mask.png b/static/gear_icons/ranged/elite sirenic mask.png deleted file mode 100644 index 09b0b7d0..00000000 Binary files a/static/gear_icons/ranged/elite sirenic mask.png and /dev/null differ diff --git a/static/gear_icons/ranged/enhanced fleeting boots.png b/static/gear_icons/ranged/enhanced fleeting boots.png deleted file mode 100644 index 0bef1019..00000000 Binary files a/static/gear_icons/ranged/enhanced fleeting boots.png and /dev/null differ diff --git a/static/gear_icons/ranged/enhanced nightmare gauntlets.png b/static/gear_icons/ranged/enhanced nightmare gauntlets.png deleted file mode 100644 index ec4b453e..00000000 Binary files a/static/gear_icons/ranged/enhanced nightmare gauntlets.png and /dev/null differ diff --git a/static/gear_icons/ranged/farsight blood necklace.png b/static/gear_icons/ranged/farsight blood necklace.png deleted file mode 100644 index 6010165c..00000000 Binary files a/static/gear_icons/ranged/farsight blood necklace.png and /dev/null differ diff --git a/static/gear_icons/ranged/fleeting boots.png b/static/gear_icons/ranged/fleeting boots.png deleted file mode 100644 index b43339ca..00000000 Binary files a/static/gear_icons/ranged/fleeting boots.png and /dev/null differ diff --git a/static/gear_icons/ranged/ful arrows.png b/static/gear_icons/ranged/ful arrows.png deleted file mode 100644 index 63b77827..00000000 Binary files a/static/gear_icons/ranged/ful arrows.png and /dev/null differ diff --git a/static/gear_icons/ranged/gloomfire bow.png b/static/gear_icons/ranged/gloomfire bow.png deleted file mode 100644 index 2a7bff1d..00000000 Binary files a/static/gear_icons/ranged/gloomfire bow.png and /dev/null differ diff --git a/static/gear_icons/ranged/hexhunter bow+.png b/static/gear_icons/ranged/hexhunter bow+.png deleted file mode 100644 index 4a81c241..00000000 Binary files a/static/gear_icons/ranged/hexhunter bow+.png and /dev/null differ diff --git a/static/gear_icons/ranged/hexhunter bow.png b/static/gear_icons/ranged/hexhunter bow.png deleted file mode 100644 index 4a81c241..00000000 Binary files a/static/gear_icons/ranged/hexhunter bow.png and /dev/null differ diff --git a/static/gear_icons/ranged/hydrix bakriminel bolts (e).png b/static/gear_icons/ranged/hydrix bakriminel bolts (e).png deleted file mode 100644 index 1ee9702d..00000000 Binary files a/static/gear_icons/ranged/hydrix bakriminel bolts (e).png and /dev/null differ diff --git a/static/gear_icons/ranged/igneous kal-xil.png b/static/gear_icons/ranged/igneous kal-xil.png deleted file mode 100644 index 52127b3d..00000000 Binary files a/static/gear_icons/ranged/igneous kal-xil.png and /dev/null differ diff --git a/static/gear_icons/ranged/jas arrows.png b/static/gear_icons/ranged/jas arrows.png deleted file mode 100644 index e1ef14ad..00000000 Binary files a/static/gear_icons/ranged/jas arrows.png and /dev/null differ diff --git a/static/gear_icons/ranged/masterwork ranged body.png b/static/gear_icons/ranged/masterwork ranged body.png deleted file mode 100644 index 2bf2d2c8..00000000 Binary files a/static/gear_icons/ranged/masterwork ranged body.png and /dev/null differ diff --git a/static/gear_icons/ranged/masterwork ranged boots.png b/static/gear_icons/ranged/masterwork ranged boots.png deleted file mode 100644 index edeafbe5..00000000 Binary files a/static/gear_icons/ranged/masterwork ranged boots.png and /dev/null differ diff --git a/static/gear_icons/ranged/masterwork ranged chaps.png b/static/gear_icons/ranged/masterwork ranged chaps.png deleted file mode 100644 index cb47b666..00000000 Binary files a/static/gear_icons/ranged/masterwork ranged chaps.png and /dev/null differ diff --git a/static/gear_icons/ranged/masterwork ranged cowl.png b/static/gear_icons/ranged/masterwork ranged cowl.png deleted file mode 100644 index 1d679a54..00000000 Binary files a/static/gear_icons/ranged/masterwork ranged cowl.png and /dev/null differ diff --git a/static/gear_icons/ranged/masterwork ranged vambraces.png b/static/gear_icons/ranged/masterwork ranged vambraces.png deleted file mode 100644 index ffd06522..00000000 Binary files a/static/gear_icons/ranged/masterwork ranged vambraces.png and /dev/null differ diff --git a/static/gear_icons/ranged/mechanised chinchompa.png b/static/gear_icons/ranged/mechanised chinchompa.png deleted file mode 100644 index cc789b2c..00000000 Binary files a/static/gear_icons/ranged/mechanised chinchompa.png and /dev/null differ diff --git a/static/gear_icons/ranged/nightmare gauntlets.png b/static/gear_icons/ranged/nightmare gauntlets.png deleted file mode 100644 index ec4b453e..00000000 Binary files a/static/gear_icons/ranged/nightmare gauntlets.png and /dev/null differ diff --git a/static/gear_icons/ranged/off-hand blightbound crossbow.png b/static/gear_icons/ranged/off-hand blightbound crossbow.png deleted file mode 100644 index 33a6bfd0..00000000 Binary files a/static/gear_icons/ranged/off-hand blightbound crossbow.png and /dev/null differ diff --git a/static/gear_icons/ranged/pernix quiver.png b/static/gear_icons/ranged/pernix quiver.png deleted file mode 100644 index 9ff4804c..00000000 Binary files a/static/gear_icons/ranged/pernix quiver.png and /dev/null differ diff --git a/static/gear_icons/ranged/scrimshaw of cruelty.png b/static/gear_icons/ranged/scrimshaw of cruelty.png deleted file mode 100644 index e988acca..00000000 Binary files a/static/gear_icons/ranged/scrimshaw of cruelty.png and /dev/null differ diff --git a/static/gear_icons/ranged/sirenic chaps.png b/static/gear_icons/ranged/sirenic chaps.png deleted file mode 100644 index 15089985..00000000 Binary files a/static/gear_icons/ranged/sirenic chaps.png and /dev/null differ diff --git a/static/gear_icons/ranged/sirenic hauberk.png b/static/gear_icons/ranged/sirenic hauberk.png deleted file mode 100644 index 584f98e5..00000000 Binary files a/static/gear_icons/ranged/sirenic hauberk.png and /dev/null differ diff --git a/static/gear_icons/ranged/sirenic mask.png b/static/gear_icons/ranged/sirenic mask.png deleted file mode 100644 index e92a79d8..00000000 Binary files a/static/gear_icons/ranged/sirenic mask.png and /dev/null differ diff --git a/static/gear_icons/ranged/stalker's ring+.png b/static/gear_icons/ranged/stalker's ring+.png deleted file mode 100644 index 3cba5d9a..00000000 Binary files a/static/gear_icons/ranged/stalker's ring+.png and /dev/null differ diff --git a/static/gear_icons/ranged/stalker's ring.png b/static/gear_icons/ranged/stalker's ring.png deleted file mode 100644 index 3cba5d9a..00000000 Binary files a/static/gear_icons/ranged/stalker's ring.png and /dev/null differ diff --git a/static/gear_icons/ranged/superior scrimshaw of cruelty.png b/static/gear_icons/ranged/superior scrimshaw of cruelty.png deleted file mode 100644 index d6ab3edd..00000000 Binary files a/static/gear_icons/ranged/superior scrimshaw of cruelty.png and /dev/null differ diff --git a/static/gear_icons/ranged/tokhaar-kal-xil.png b/static/gear_icons/ranged/tokhaar-kal-xil.png deleted file mode 100644 index 6a816df4..00000000 Binary files a/static/gear_icons/ranged/tokhaar-kal-xil.png and /dev/null differ diff --git a/static/gear_icons/ranged/wen arrows.png b/static/gear_icons/ranged/wen arrows.png deleted file mode 100644 index e78109c5..00000000 Binary files a/static/gear_icons/ranged/wen arrows.png and /dev/null differ diff --git a/static/gear_icons/renamefiles.sh b/static/gear_icons/renamefiles.sh deleted file mode 100755 index 5d0ccee9..00000000 --- a/static/gear_icons/renamefiles.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -# Script to rename files to lowercase, replace underscores with spaces, and decode/remove unwanted encodings -# Operates on all subdirectories: melee, ranged, magic, necro, shared -for dir in melee ranged magic necro shared; do - if [[ -d "$dir" ]]; then - cd "$dir" - for file in *; do - if [[ -f "$file" ]]; then - decoded_file=$(echo "$file" | sed 's/%28/(/g; s/%29/)/g; s/%27/'\''/g') - new_name=$(echo "$decoded_file" | tr '[:upper:]' '[:lower:]' | tr '_' ' ') - if [[ "$file" != "$new_name" ]]; then - mv "$file" "$new_name" - fi - fi - done - cd .. - fi -done \ No newline at end of file diff --git a/static/gear_icons/shared/amulet of souls (or).png b/static/gear_icons/shared/amulet of souls (or).png deleted file mode 100644 index b9350298..00000000 Binary files a/static/gear_icons/shared/amulet of souls (or).png and /dev/null differ diff --git a/static/gear_icons/shared/amulet of souls.png b/static/gear_icons/shared/amulet of souls.png deleted file mode 100644 index 2fb10699..00000000 Binary files a/static/gear_icons/shared/amulet of souls.png and /dev/null differ diff --git a/static/gear_icons/shared/amulet of zealots.png b/static/gear_icons/shared/amulet of zealots.png deleted file mode 100644 index 896e7568..00000000 Binary files a/static/gear_icons/shared/amulet of zealots.png and /dev/null differ diff --git a/static/gear_icons/shared/anima core body of sliske.png b/static/gear_icons/shared/anima core body of sliske.png deleted file mode 100644 index 91814351..00000000 Binary files a/static/gear_icons/shared/anima core body of sliske.png and /dev/null differ diff --git a/static/gear_icons/shared/anima core helm of sliske.png b/static/gear_icons/shared/anima core helm of sliske.png deleted file mode 100644 index 3ec82cf8..00000000 Binary files a/static/gear_icons/shared/anima core helm of sliske.png and /dev/null differ diff --git a/static/gear_icons/shared/anima core legs of sliske.png b/static/gear_icons/shared/anima core legs of sliske.png deleted file mode 100644 index 6d3ce688..00000000 Binary files a/static/gear_icons/shared/anima core legs of sliske.png and /dev/null differ diff --git a/static/gear_icons/shared/asylum surgeons ring.png b/static/gear_icons/shared/asylum surgeons ring.png deleted file mode 100644 index 06654167..00000000 Binary files a/static/gear_icons/shared/asylum surgeons ring.png and /dev/null differ diff --git a/static/gear_icons/shared/blood amulet of fury.png b/static/gear_icons/shared/blood amulet of fury.png deleted file mode 100644 index 0236ff9c..00000000 Binary files a/static/gear_icons/shared/blood amulet of fury.png and /dev/null differ diff --git a/static/gear_icons/shared/chaotic grimoire.png b/static/gear_icons/shared/chaotic grimoire.png deleted file mode 100644 index bca3d791..00000000 Binary files a/static/gear_icons/shared/chaotic grimoire.png and /dev/null differ diff --git a/static/gear_icons/shared/cinderbane gloves.png b/static/gear_icons/shared/cinderbane gloves.png deleted file mode 100644 index f392b555..00000000 Binary files a/static/gear_icons/shared/cinderbane gloves.png and /dev/null differ diff --git a/static/gear_icons/shared/completionist cape.png b/static/gear_icons/shared/completionist cape.png deleted file mode 100644 index 7fd02f96..00000000 Binary files a/static/gear_icons/shared/completionist cape.png and /dev/null differ diff --git a/static/gear_icons/shared/custom main-hand weapon.png b/static/gear_icons/shared/custom main-hand weapon.png deleted file mode 100644 index 35b8ee61..00000000 Binary files a/static/gear_icons/shared/custom main-hand weapon.png and /dev/null differ diff --git a/static/gear_icons/shared/custom off-hand weapon.png b/static/gear_icons/shared/custom off-hand weapon.png deleted file mode 100644 index 6c8dddaa..00000000 Binary files a/static/gear_icons/shared/custom off-hand weapon.png and /dev/null differ diff --git a/static/gear_icons/shared/custom shield.png b/static/gear_icons/shared/custom shield.png deleted file mode 100644 index d937696a..00000000 Binary files a/static/gear_icons/shared/custom shield.png and /dev/null differ diff --git a/static/gear_icons/shared/custom two-hand weapon.png b/static/gear_icons/shared/custom two-hand weapon.png deleted file mode 100644 index 5d0529c1..00000000 Binary files a/static/gear_icons/shared/custom two-hand weapon.png and /dev/null differ diff --git a/static/gear_icons/shared/custom.png b/static/gear_icons/shared/custom.png deleted file mode 100644 index b19fa491..00000000 Binary files a/static/gear_icons/shared/custom.png and /dev/null differ diff --git a/static/gear_icons/shared/deathtouch bracelet.png b/static/gear_icons/shared/deathtouch bracelet.png deleted file mode 100644 index 8b9c0d46..00000000 Binary files a/static/gear_icons/shared/deathtouch bracelet.png and /dev/null differ diff --git a/static/gear_icons/shared/default gear.webp b/static/gear_icons/shared/default gear.webp deleted file mode 100644 index c65b8bc6..00000000 Binary files a/static/gear_icons/shared/default gear.webp and /dev/null differ diff --git a/static/gear_icons/shared/desert amulet 4.png b/static/gear_icons/shared/desert amulet 4.png deleted file mode 100644 index d50a0db4..00000000 Binary files a/static/gear_icons/shared/desert amulet 4.png and /dev/null differ diff --git a/static/gear_icons/shared/dragon rider amulet.png b/static/gear_icons/shared/dragon rider amulet.png deleted file mode 100644 index d6166875..00000000 Binary files a/static/gear_icons/shared/dragon rider amulet.png and /dev/null differ diff --git a/static/gear_icons/shared/erethdors grimoire.png b/static/gear_icons/shared/erethdors grimoire.png deleted file mode 100644 index 1f4786ed..00000000 Binary files a/static/gear_icons/shared/erethdors grimoire.png and /dev/null differ diff --git a/static/gear_icons/shared/essence of finality amulet (black).png b/static/gear_icons/shared/essence of finality amulet (black).png deleted file mode 100644 index 7aa90d08..00000000 Binary files a/static/gear_icons/shared/essence of finality amulet (black).png and /dev/null differ diff --git a/static/gear_icons/shared/essence of finality amulet (blue).png b/static/gear_icons/shared/essence of finality amulet (blue).png deleted file mode 100644 index c068c6d2..00000000 Binary files a/static/gear_icons/shared/essence of finality amulet (blue).png and /dev/null differ diff --git a/static/gear_icons/shared/essence of finality amulet (green).png b/static/gear_icons/shared/essence of finality amulet (green).png deleted file mode 100644 index 7db378fd..00000000 Binary files a/static/gear_icons/shared/essence of finality amulet (green).png and /dev/null differ diff --git a/static/gear_icons/shared/essence of finality amulet (or).png b/static/gear_icons/shared/essence of finality amulet (or).png deleted file mode 100644 index 8c3bf98e..00000000 Binary files a/static/gear_icons/shared/essence of finality amulet (or).png and /dev/null differ diff --git a/static/gear_icons/shared/essence of finality amulet (pink).png b/static/gear_icons/shared/essence of finality amulet (pink).png deleted file mode 100644 index 5c5d8284..00000000 Binary files a/static/gear_icons/shared/essence of finality amulet (pink).png and /dev/null differ diff --git a/static/gear_icons/shared/essence of finality amulet (purple).png b/static/gear_icons/shared/essence of finality amulet (purple).png deleted file mode 100644 index 19791614..00000000 Binary files a/static/gear_icons/shared/essence of finality amulet (purple).png and /dev/null differ diff --git a/static/gear_icons/shared/essence of finality amulet (red).png b/static/gear_icons/shared/essence of finality amulet (red).png deleted file mode 100644 index e3fde805..00000000 Binary files a/static/gear_icons/shared/essence of finality amulet (red).png and /dev/null differ diff --git a/static/gear_icons/shared/essence of finality amulet (yellow).png b/static/gear_icons/shared/essence of finality amulet (yellow).png deleted file mode 100644 index fcb5b0af..00000000 Binary files a/static/gear_icons/shared/essence of finality amulet (yellow).png and /dev/null differ diff --git a/static/gear_icons/shared/essence of finality amulet.png b/static/gear_icons/shared/essence of finality amulet.png deleted file mode 100644 index ba7c9637..00000000 Binary files a/static/gear_icons/shared/essence of finality amulet.png and /dev/null differ diff --git a/static/gear_icons/shared/ghost hunter backpack.png b/static/gear_icons/shared/ghost hunter backpack.png deleted file mode 100644 index 2e8b1240..00000000 Binary files a/static/gear_icons/shared/ghost hunter backpack.png and /dev/null differ diff --git a/static/gear_icons/shared/ghost hunter body.png b/static/gear_icons/shared/ghost hunter body.png deleted file mode 100644 index 0b41f687..00000000 Binary files a/static/gear_icons/shared/ghost hunter body.png and /dev/null differ diff --git a/static/gear_icons/shared/ghost hunter goggles.png b/static/gear_icons/shared/ghost hunter goggles.png deleted file mode 100644 index 9b305550..00000000 Binary files a/static/gear_icons/shared/ghost hunter goggles.png and /dev/null differ diff --git a/static/gear_icons/shared/ghost hunter legs.png b/static/gear_icons/shared/ghost hunter legs.png deleted file mode 100644 index aeb6b34a..00000000 Binary files a/static/gear_icons/shared/ghost hunter legs.png and /dev/null differ diff --git a/static/gear_icons/shared/hazelmere's signet ring.png b/static/gear_icons/shared/hazelmere's signet ring.png deleted file mode 100644 index fcb81dbb..00000000 Binary files a/static/gear_icons/shared/hazelmere's signet ring.png and /dev/null differ diff --git a/static/gear_icons/shared/igneous kal-xil.png b/static/gear_icons/shared/igneous kal-xil.png deleted file mode 100644 index 52127b3d..00000000 Binary files a/static/gear_icons/shared/igneous kal-xil.png and /dev/null differ diff --git a/static/gear_icons/shared/igneous kal-zuk.png b/static/gear_icons/shared/igneous kal-zuk.png deleted file mode 100644 index 299d6ba1..00000000 Binary files a/static/gear_icons/shared/igneous kal-zuk.png and /dev/null differ diff --git a/static/gear_icons/shared/illuminated book of law.png b/static/gear_icons/shared/illuminated book of law.png deleted file mode 100644 index ef9999ff..00000000 Binary files a/static/gear_icons/shared/illuminated book of law.png and /dev/null differ diff --git a/static/gear_icons/shared/luck of the dwarves.png b/static/gear_icons/shared/luck of the dwarves.png deleted file mode 100644 index 37a13d45..00000000 Binary files a/static/gear_icons/shared/luck of the dwarves.png and /dev/null differ diff --git a/static/gear_icons/shared/max cape.png b/static/gear_icons/shared/max cape.png deleted file mode 100644 index f09ed0f2..00000000 Binary files a/static/gear_icons/shared/max cape.png and /dev/null differ diff --git a/static/gear_icons/shared/reaper necklace (or).png b/static/gear_icons/shared/reaper necklace (or).png deleted file mode 100644 index 3f9a7527..00000000 Binary files a/static/gear_icons/shared/reaper necklace (or).png and /dev/null differ diff --git a/static/gear_icons/shared/reaper necklace.png b/static/gear_icons/shared/reaper necklace.png deleted file mode 100644 index 82255812..00000000 Binary files a/static/gear_icons/shared/reaper necklace.png and /dev/null differ diff --git a/static/gear_icons/shared/reavers ring.png b/static/gear_icons/shared/reavers ring.png deleted file mode 100644 index 64881361..00000000 Binary files a/static/gear_icons/shared/reavers ring.png and /dev/null differ diff --git a/static/gear_icons/shared/refined anima core body of sliske.png b/static/gear_icons/shared/refined anima core body of sliske.png deleted file mode 100644 index dbb070c9..00000000 Binary files a/static/gear_icons/shared/refined anima core body of sliske.png and /dev/null differ diff --git a/static/gear_icons/shared/refined anima core helm of sliske.png b/static/gear_icons/shared/refined anima core helm of sliske.png deleted file mode 100644 index 3ec82cf8..00000000 Binary files a/static/gear_icons/shared/refined anima core helm of sliske.png and /dev/null differ diff --git a/static/gear_icons/shared/refined anima core legs of sliske.png b/static/gear_icons/shared/refined anima core legs of sliske.png deleted file mode 100644 index b61d00aa..00000000 Binary files a/static/gear_icons/shared/refined anima core legs of sliske.png and /dev/null differ diff --git a/static/gear_icons/shared/ring of death (i).png b/static/gear_icons/shared/ring of death (i).png deleted file mode 100644 index 6c72f8e6..00000000 Binary files a/static/gear_icons/shared/ring of death (i).png and /dev/null differ diff --git a/static/gear_icons/shared/ring of death.png b/static/gear_icons/shared/ring of death.png deleted file mode 100644 index 6c72f8e6..00000000 Binary files a/static/gear_icons/shared/ring of death.png and /dev/null differ diff --git a/static/gear_icons/shared/ring of retribution.png b/static/gear_icons/shared/ring of retribution.png deleted file mode 100644 index 5553f8bd..00000000 Binary files a/static/gear_icons/shared/ring of retribution.png and /dev/null differ diff --git a/static/gear_icons/shared/ring of vigour.png b/static/gear_icons/shared/ring of vigour.png deleted file mode 100644 index 4e1789e6..00000000 Binary files a/static/gear_icons/shared/ring of vigour.png and /dev/null differ diff --git a/static/gear_icons/shared/salve amulet (e).png b/static/gear_icons/shared/salve amulet (e).png deleted file mode 100644 index 75f9e162..00000000 Binary files a/static/gear_icons/shared/salve amulet (e).png and /dev/null differ diff --git a/static/gear_icons/shared/salve amulet.png b/static/gear_icons/shared/salve amulet.png deleted file mode 100644 index a0448e13..00000000 Binary files a/static/gear_icons/shared/salve amulet.png and /dev/null differ diff --git a/static/gear_icons/shared/scripture of amascut.png b/static/gear_icons/shared/scripture of amascut.png deleted file mode 100644 index d04c2bf7..00000000 Binary files a/static/gear_icons/shared/scripture of amascut.png and /dev/null differ diff --git a/static/gear_icons/shared/scripture of bik.png b/static/gear_icons/shared/scripture of bik.png deleted file mode 100644 index e00a7fec..00000000 Binary files a/static/gear_icons/shared/scripture of bik.png and /dev/null differ diff --git a/static/gear_icons/shared/scripture of ful.png b/static/gear_icons/shared/scripture of ful.png deleted file mode 100644 index fc054acd..00000000 Binary files a/static/gear_icons/shared/scripture of ful.png and /dev/null differ diff --git a/static/gear_icons/shared/scripture of jas.png b/static/gear_icons/shared/scripture of jas.png deleted file mode 100644 index e205003a..00000000 Binary files a/static/gear_icons/shared/scripture of jas.png and /dev/null differ diff --git a/static/gear_icons/shared/scripture of wen.png b/static/gear_icons/shared/scripture of wen.png deleted file mode 100644 index 548b6449..00000000 Binary files a/static/gear_icons/shared/scripture of wen.png and /dev/null differ diff --git a/static/gear_icons/shared/silverhawk boots.png b/static/gear_icons/shared/silverhawk boots.png deleted file mode 100644 index 565b44eb..00000000 Binary files a/static/gear_icons/shared/silverhawk boots.png and /dev/null differ diff --git a/static/gear_icons/shared/skill cape.png b/static/gear_icons/shared/skill cape.png deleted file mode 100644 index 93681155..00000000 Binary files a/static/gear_icons/shared/skill cape.png and /dev/null differ diff --git a/static/gear_icons/shared/tokkul-zo.png b/static/gear_icons/shared/tokkul-zo.png deleted file mode 100644 index 7ca3fc57..00000000 Binary files a/static/gear_icons/shared/tokkul-zo.png and /dev/null differ diff --git a/static/gear_icons/shared/underworld grimoire 3.png b/static/gear_icons/shared/underworld grimoire 3.png deleted file mode 100644 index ad4a1072..00000000 Binary files a/static/gear_icons/shared/underworld grimoire 3.png and /dev/null differ diff --git a/static/gear_icons/shared/underworld grimoire 4.png b/static/gear_icons/shared/underworld grimoire 4.png deleted file mode 100644 index 951983ff..00000000 Binary files a/static/gear_icons/shared/underworld grimoire 4.png and /dev/null differ diff --git a/static/gear_icons/shared/warpriest of tuska boots.png b/static/gear_icons/shared/warpriest of tuska boots.png deleted file mode 100644 index a0dc11b3..00000000 Binary files a/static/gear_icons/shared/warpriest of tuska boots.png and /dev/null differ diff --git a/static/gear_icons/shared/warpriest of tuska cape.png b/static/gear_icons/shared/warpriest of tuska cape.png deleted file mode 100644 index 61b20f7a..00000000 Binary files a/static/gear_icons/shared/warpriest of tuska cape.png and /dev/null differ diff --git a/static/gear_icons/shared/warpriest of tuska cuirass.png b/static/gear_icons/shared/warpriest of tuska cuirass.png deleted file mode 100644 index 7750de5f..00000000 Binary files a/static/gear_icons/shared/warpriest of tuska cuirass.png and /dev/null differ diff --git a/static/gear_icons/shared/warpriest of tuska gauntlets.png b/static/gear_icons/shared/warpriest of tuska gauntlets.png deleted file mode 100644 index 194ce298..00000000 Binary files a/static/gear_icons/shared/warpriest of tuska gauntlets.png and /dev/null differ diff --git a/static/gear_icons/shared/warpriest of tuska helm.png b/static/gear_icons/shared/warpriest of tuska helm.png deleted file mode 100644 index d9129538..00000000 Binary files a/static/gear_icons/shared/warpriest of tuska helm.png and /dev/null differ diff --git a/static/gear_icons/shared/warpriest of tuska robe legs.png b/static/gear_icons/shared/warpriest of tuska robe legs.png deleted file mode 100644 index 832ffbc0..00000000 Binary files a/static/gear_icons/shared/warpriest of tuska robe legs.png and /dev/null differ diff --git a/static/gear_icons/shared/zorgoth's soul ring.png b/static/gear_icons/shared/zorgoth's soul ring.png deleted file mode 100644 index 27eaf096..00000000 Binary files a/static/gear_icons/shared/zorgoth's soul ring.png and /dev/null differ diff --git a/svelte.config.js b/svelte.config.js index 75143692..9c538c3c 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -15,7 +15,7 @@ const config = { typescript: true }), paths: { - base: '', + base: '/rs-rot', }, alias: { $components: path.resolve('src/components'),