diff --git a/habitica-images b/habitica-images index 30c7e4a39d..5afe493854 160000 --- a/habitica-images +++ b/habitica-images @@ -1 +1 @@ -Subproject commit 30c7e4a39dee61ac8e9eb127dcc1f8d4af6b2313 +Subproject commit 5afe493854d104d9105e627ac6f132885e55f6da diff --git a/package-lock.json b/package-lock.json index f3b1d4a0bc..43cb813da0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.224.2", + "version": "4.225.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1307,9 +1307,9 @@ } }, "@discoveryjs/json-ext": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", - "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==" + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==" }, "@google-cloud/common": { "version": "3.8.1", @@ -1657,9 +1657,9 @@ } }, "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" }, "@types/express": { "version": "4.17.13", @@ -2135,9 +2135,9 @@ } }, "apidoc": { - "version": "0.50.4", - "resolved": "https://registry.npmjs.org/apidoc/-/apidoc-0.50.4.tgz", - "integrity": "sha512-voAIVzHXRMO/QLh6n/2AVF3j0doLvyFY7cZXwBFuidBOSp5Ft+oJ6aVzMPyp1dUD1HF7YBmqg5O82cWrM5tepA==", + "version": "0.50.5", + "resolved": "https://registry.npmjs.org/apidoc/-/apidoc-0.50.5.tgz", + "integrity": "sha512-bp4nze32IsUgeDoRHcpZY8mdZ/GHMHyMak6ptLQkrzQ1rL6LYf0Mu4mBJmVksA+N6/hOsnOhoPQGeiZp2BVX2w==", "requires": { "bootstrap": "3.4.1", "commander": "^8.3.0", @@ -2784,18 +2784,11 @@ "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" }, "axios": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz", - "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==", + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", "requires": { "follow-redirects": "^1.14.8" - }, - "dependencies": { - "follow-redirects": { - "version": "1.14.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", - "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==" - } } }, "babel-code-frame": { @@ -5397,9 +5390,9 @@ } }, "enhanced-resolve": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.0.tgz", - "integrity": "sha512-weDYmzbBygL7HzGGS26M3hGQx68vehdEg6VUmqSOaFzXExFqlnKuSvsEJCVGQHScS8CQMbrAqftT+AzzHNt/YA==", + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", + "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -5509,100 +5502,114 @@ } }, "esbuild": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.20.tgz", - "integrity": "sha512-7aRJRnTjHZ6rFEre52tsAYZxatVELSA/QvYGUBf1iOsYKCnSJICE5seugQFFJgV1Gyl0/mngxQPhxBIqgYG2BA==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.25.tgz", + "integrity": "sha512-4JHEIOMNFvK09ziiL+iVmldIhLbn49V4NAVo888tcGFKedEZY/Y8YapfStJ6zSE23tzYPKxqKwQBnQoIO0BI/Q==", "requires": { - "esbuild-android-arm64": "0.14.20", - "esbuild-darwin-64": "0.14.20", - "esbuild-darwin-arm64": "0.14.20", - "esbuild-freebsd-64": "0.14.20", - "esbuild-freebsd-arm64": "0.14.20", - "esbuild-linux-32": "0.14.20", - "esbuild-linux-64": "0.14.20", - "esbuild-linux-arm": "0.14.20", - "esbuild-linux-arm64": "0.14.20", - "esbuild-linux-mips64le": "0.14.20", - "esbuild-linux-ppc64le": "0.14.20", - "esbuild-linux-s390x": "0.14.20", - "esbuild-netbsd-64": "0.14.20", - "esbuild-openbsd-64": "0.14.20", - "esbuild-sunos-64": "0.14.20", - "esbuild-windows-32": "0.14.20", - "esbuild-windows-64": "0.14.20", - "esbuild-windows-arm64": "0.14.20" + "esbuild-android-64": "0.14.25", + "esbuild-android-arm64": "0.14.25", + "esbuild-darwin-64": "0.14.25", + "esbuild-darwin-arm64": "0.14.25", + "esbuild-freebsd-64": "0.14.25", + "esbuild-freebsd-arm64": "0.14.25", + "esbuild-linux-32": "0.14.25", + "esbuild-linux-64": "0.14.25", + "esbuild-linux-arm": "0.14.25", + "esbuild-linux-arm64": "0.14.25", + "esbuild-linux-mips64le": "0.14.25", + "esbuild-linux-ppc64le": "0.14.25", + "esbuild-linux-riscv64": "0.14.25", + "esbuild-linux-s390x": "0.14.25", + "esbuild-netbsd-64": "0.14.25", + "esbuild-openbsd-64": "0.14.25", + "esbuild-sunos-64": "0.14.25", + "esbuild-windows-32": "0.14.25", + "esbuild-windows-64": "0.14.25", + "esbuild-windows-arm64": "0.14.25" } }, + "esbuild-android-64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.25.tgz", + "integrity": "sha512-L5vCUk7TzFbBnoESNoXjU3x9+/+7TDIE/1mTfy/erAfvZAqC+S3sp/Qa9wkypFMcFvN9FzvESkTlpeQDolREtQ==", + "optional": true + }, "esbuild-android-arm64": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.20.tgz", - "integrity": "sha512-MPKVDe3TMjGDRB5WmY9XnBaXEsPiiTpkz6GjXgBhBkMFZm27PhvZT4JE0vZ1fsLb5hnGC/fYsfAnp9rsxTZhIg==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.25.tgz", + "integrity": "sha512-4jv5xPjM/qNm27T5j3ZEck0PvjgQtoMHnz4FzwF5zNP56PvY2CT0WStcAIl6jNlsuDdN63rk2HRBIsO6xFbcFw==", "optional": true }, "esbuild-darwin-64": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.20.tgz", - "integrity": "sha512-09PPWejM3rRFsGHvtaTuRlG+KOQlOMwPW4HwwzRlO4TuP+FNV1nTW4x2Nid3dYLzCkcjznJWQ0oylLBQvGTRyQ==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.25.tgz", + "integrity": "sha512-TGp8tuudIxOyWd1+8aYPxQmC1ZQyvij/AfNBa35RubixD0zJ1vkKHVAzo0Zao1zcG6pNqiSyzfPto8vmg0s7oA==", "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.20.tgz", - "integrity": "sha512-jYLrSXAwygoFF2lpRJSUAghre+9IThbcPvJQbcZMONBQaaZft9nclNsrN3k4u7zQaC8v+xZDVSHkmw593tQvkg==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.25.tgz", + "integrity": "sha512-oTcDgdm0MDVEmw2DWu8BV68pYuImpFgvWREPErBZmNA4MYKGuBRaCiJqq6jZmBR1x+3y1DWCjez+5uLtuAm6mw==", "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.20.tgz", - "integrity": "sha512-XShznPLW3QsK8/7iCx1euZTowWaWlcrlkq4YTlRqDKXkJRe98FJ6+V2QyoSTwwCoo5koaYwc+h/SYdglF5369A==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.25.tgz", + "integrity": "sha512-ueAqbnMZ8arnuLH8tHwTCQYeptnHOUV7vA6px6j4zjjQwDx7TdP7kACPf3TLZLdJQ3CAD1XCvQ2sPhX+8tacvQ==", "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.20.tgz", - "integrity": "sha512-flb3tDd6SScKhBqzWAESVCErpaqrGmMSRrssjx1aC+Ai5ZQrEyhfs5OWL4A9qHuixkhfmXffci7rFD+bNeXmZg==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.25.tgz", + "integrity": "sha512-+ZVWud2HKh+Ob6k/qiJWjBtUg4KmJGGmbvEXXW1SNKS7hW7HU+Zq2ZCcE1akFxOPkVB+EhOty/sSek30tkCYug==", "optional": true }, "esbuild-linux-32": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.20.tgz", - "integrity": "sha512-Avtxbd0MHFJ2QhNxj/e8VGGm1/VnEJZq9qiHUl3wQZ4S0o2Wf4ReAfhqmgAbOPFTuxuZm070rRDZYiZifWzFGQ==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.25.tgz", + "integrity": "sha512-3OP/lwV3kCzEz45tobH9nj+uE4ubhGsfx+tn0L26WAGtUbmmcRpqy7XRG/qK7h1mClZ+eguIANcQntYMdYklfw==", "optional": true }, "esbuild-linux-64": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.20.tgz", - "integrity": "sha512-ugisoRA/ajCr9JMszsQnT9hKkpbD7Gr1yl1mWdZhWQnGt6JKGIndGiihMURcrR44IK/2OMkixVe66D4gCHKdPA==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.25.tgz", + "integrity": "sha512-+aKHdHZmX9qwVlQmu5xYXh7GsBFf4TWrePgeJTalhXHOG7NNuUwoHmketGiZEoNsWyyqwH9rE5BC+iwcLY30Ug==", "optional": true }, "esbuild-linux-arm": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.20.tgz", - "integrity": "sha512-uo++Mo31+P2EA38oQgOeSIWgD7GMCMpZkaLfsCqtKJTIIL9fVzQHQYLDRIiFGpLHvs1faWWHDCEcXEFSP1Ou0g==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.25.tgz", + "integrity": "sha512-aTLcE2VBoLydL943REcAcgnDi3bHtmULSXWLbjtBdtykRatJVSxKMjK9YlBXUZC4/YcNQfH7AxwVeQr9fNxPhw==", "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.20.tgz", - "integrity": "sha512-hsrMbNzhh+ud3zUyhONlR41vpYMjINS7BHEzXHbzo4YiCsG9Ht3arbiSuNGrhR/ybLr+8J/0fYVCipiVeAjy3Q==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.25.tgz", + "integrity": "sha512-UxfenPx/wSZx55gScCImPtXekvZQLI2GW3qe5dtlmU7luiqhp5GWPzGeQEbD3yN3xg/pHc671m5bma5Ns7lBHw==", "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.20.tgz", - "integrity": "sha512-MBUu2Q+pzdTBWclPe7AwmRUMTUL0R99ONa8Hswpb987fXgFUdN4XBNBcEa5zy/l2UrIJK+9FUN1jjedZlxgP2A==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.25.tgz", + "integrity": "sha512-wLWYyqVfYx9Ur6eU5RT92yJVsaBGi5RdkoWqRHOqcJ38Kn60QMlcghsKeWfe9jcYut8LangYZ98xO1LxIoSXrQ==", "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.20.tgz", - "integrity": "sha512-xkYjQtITA6q/b+/5aAf5n2L063pOxLyXUIad+zYT8GpZh0Sa7aSn18BmrFa2fHb0QSGgTEeRfYkTcBGgoPDjBA==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.25.tgz", + "integrity": "sha512-0dR6Csl6Zas3g4p9ULckEl8Mo8IInJh33VCJ3eaV1hj9+MHGdmDOakYMN8MZP9/5nl+NU/0ygpd14cWgy8uqRw==", + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.25.tgz", + "integrity": "sha512-J4d20HDmTrgvhR0bdkDhvvJGaikH3LzXQnNaseo8rcw9Yqby9A90gKUmWpfwqLVNRILvNnAmKLfBjCKU9ajg8w==", "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.20.tgz", - "integrity": "sha512-AAcj3x80TXIedpNVuZgjYNETXr2iciOBQv5pGdNGAy6rv7k6Y6sT6SXQ58l2LH2AHbaeTPQjze+Y6qgX1efzrA==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.25.tgz", + "integrity": "sha512-YI2d5V6nTE73ZnhEKQD7MtsPs1EtUZJ3obS21oxQxGbbRw1G+PtJKjNyur+3t6nzHP9oTg6GHQ3S3hOLLmbDIQ==", "optional": true }, "esbuild-loader": { @@ -5619,39 +5626,39 @@ } }, "esbuild-netbsd-64": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.20.tgz", - "integrity": "sha512-30GQKCnsID1WddUi6tr5HFUxJD0t7Uitf6tO9Cf1WqF6C44pf8EflwrhyDFmUyvkddlyfb4OrYI6NNLC/G3ajg==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.25.tgz", + "integrity": "sha512-TKIVgNWLUOkr+Exrye70XTEE1lJjdQXdM4tAXRzfHE9iBA7LXWcNtVIuSnphTqpanPzTDFarF0yqq4kpbC6miA==", "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.20.tgz", - "integrity": "sha512-zVrf8fY46BK57AkxDdqu2S8TV3p7oLmYIiW707IOHrveI0TwJ2iypAxnwOQuCvowM3UWqVBO2RDBzV7S7t0klg==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.25.tgz", + "integrity": "sha512-QgFJ37A15D7NIXBTYEqz29+uw3nNBOIyog+3kFidANn6kjw0GHZ0lEYQn+cwjyzu94WobR+fes7cTl/ZYlHb1A==", "optional": true }, "esbuild-sunos-64": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.20.tgz", - "integrity": "sha512-MYRsS1O7+aBr2T/0aA4OJrju6eMku4rm81fwGF1KLFwmymIpPGmj7n69n5JW3NKyW5j+FBt0GcyDh9nEnUL1FQ==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.25.tgz", + "integrity": "sha512-rmWfjUItYIVlqr5EnTH1+GCxXiBOC42WBZ3w++qh7n2cS9Xo0lO5pGSG2N+huOU2fX5L+6YUuJ78/vOYvefeFw==", "optional": true }, "esbuild-windows-32": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.20.tgz", - "integrity": "sha512-7VqDITqTU65LQ1Uka/4jx4sUIZc1L8NPlvc7HBRdR15TUyPxmHRQaxMGXd8aakI1FEBcImpJ9SQ4JLmPwRlS1w==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.25.tgz", + "integrity": "sha512-HGAxVUofl3iUIz9W10Y9XKtD0bNsK9fBXv1D55N/ljNvkrAYcGB8YCm0v7DjlwtyS6ws3dkdQyXadbxkbzaKOA==", "optional": true }, "esbuild-windows-64": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.20.tgz", - "integrity": "sha512-q4GxY4m5+nXSgqCKx6Cc5pavnhd2g5mHn+K8kNdfCMZsWPDlHLMRjYF5NVQ3/5mJ1M7iR3/Ai4ISjxmsCeGOGA==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.25.tgz", + "integrity": "sha512-TirEohRkfWU9hXLgoDxzhMQD1g8I2mOqvdQF2RS9E/wbkORTAqJHyh7wqGRCQAwNzdNXdg3JAyhQ9/177AadWA==", "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.20", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.20.tgz", - "integrity": "sha512-vOxfU7YwuBMjsUNUygMBhC8T60aCzeYptnHu4k7azqqOVo5EAyoueyWSkFR5GpX6bae5cXyB0vcOV/bfwqRwAg==", + "version": "0.14.25", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.25.tgz", + "integrity": "sha512-4ype9ERiI45rSh+R8qUoBtaj6kJvUOI7oVLhKqPEpcF4Pa5PpT3hm/mXAyotJHREkHpM87PAJcA442mLnbtlNA==", "optional": true }, "escalade": { @@ -6974,9 +6981,9 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -13656,9 +13663,9 @@ } }, "stripe": { - "version": "8.207.0", - "resolved": "https://registry.npmjs.org/stripe/-/stripe-8.207.0.tgz", - "integrity": "sha512-ZCjdqN2adGfrC5uAAo0v7IquzaiQ3+pDzB324/iV3Q3Deiot9VO7KMVSNVx/0i6E6ywhgV33ko3FMT7iUgxKYA==", + "version": "8.209.0", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-8.209.0.tgz", + "integrity": "sha512-ozfs8t0fxA/uvCK1DNvitSdEublOHK5CTRsrd2AWWk9LogjXcfkxmtz3KGSSQd+jyA2+rbee9TMzhJ6aabQ5WQ==", "requires": { "@types/node": ">=8.1.0", "qs": "^6.6.0" @@ -13959,15 +13966,21 @@ "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==" }, "terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.0.tgz", + "integrity": "sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A==", "requires": { + "acorn": "^8.5.0", "commander": "^2.20.0", "source-map": "~0.7.2", "source-map-support": "~0.5.20" }, "dependencies": { + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==" + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -15111,12 +15124,12 @@ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, "webpack": { - "version": "5.68.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.68.0.tgz", - "integrity": "sha512-zUcqaUO0772UuuW2bzaES2Zjlm/y3kRBQDVFVCge+s2Y8mwuUTdperGaAv65/NtRL/1zanpSJOq/MD8u61vo6g==", + "version": "5.70.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", + "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", @@ -15124,7 +15137,7 @@ "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", + "enhanced-resolve": "^5.9.2", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", diff --git a/package.json b/package.json index d9d8695102..e217176430 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "habitica", "description": "A habit tracker app which treats your goals like a Role Playing Game.", - "version": "4.224.2", + "version": "4.225.0", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.17.5", @@ -13,7 +13,7 @@ "accepts": "^1.3.8", "amazon-payments": "^0.2.9", "amplitude": "^6.0.0", - "apidoc": "^0.50.4", + "apidoc": "^0.50.5", "apple-auth": "^1.0.7", "bcrypt": "^5.0.1", "body-parser": "^1.19.2", @@ -67,7 +67,7 @@ "remove-markdown": "^0.3.0", "rimraf": "^3.0.2", "short-uuid": "^4.2.0", - "stripe": "^8.207.0", + "stripe": "^8.209.0", "superagent": "^7.1.1", "universal-analytics": "^0.5.3", "useragent": "^2.1.9", @@ -106,11 +106,11 @@ "start": "gulp nodemon", "debug": "gulp nodemon --inspect", "mongo:dev": "run-rs -v 4.2.8 -l ubuntu1804 --keep --dbpath mongodb-data --number 1 --quiet", - "postinstall": "gulp build && cd website/client && npm install", + "postinstall": "git config --global url.\"https://\".insteadOf git:// && gulp build && cd website/client && npm install", "apidoc": "gulp apidoc" }, "devDependencies": { - "axios": "^0.26.0", + "axios": "^0.26.1", "chai": "^4.3.6", "chai-as-promised": "^7.1.1", "chai-moment": "^0.1.0", diff --git a/website/client/src/assets/css/sprites/spritesmith-main.css b/website/client/src/assets/css/sprites/spritesmith-main.css index 8b9515fb86..828d014cde 100644 --- a/website/client/src/assets/css/sprites/spritesmith-main.css +++ b/website/client/src/assets/css/sprites/spritesmith-main.css @@ -50,8 +50,8 @@ } .achievement-birdsOfAFeather2x { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/achievement-birdsOfAFeather2x.png'); - width: 68px; - height: 68px; + width: 60px; + height: 64px; } .achievement-birthday2x { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/achievement-birthday2x.png'); @@ -25543,6 +25543,26 @@ width: 114px; height: 90px; } +.broad_armor_special_spring2022Healer { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_spring2022Healer.png'); + width: 114px; + height: 90px; +} +.broad_armor_special_spring2022Mage { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_spring2022Mage.png'); + width: 114px; + height: 90px; +} +.broad_armor_special_spring2022Rogue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_spring2022Rogue.png'); + width: 114px; + height: 117px; +} +.broad_armor_special_spring2022Warrior { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_spring2022Warrior.png'); + width: 114px; + height: 90px; +} .broad_armor_special_springHealer { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_springHealer.png'); width: 90px; @@ -25783,6 +25803,26 @@ width: 114px; height: 90px; } +.head_special_spring2022Healer { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_spring2022Healer.png'); + width: 114px; + height: 90px; +} +.head_special_spring2022Mage { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_spring2022Mage.png'); + width: 114px; + height: 90px; +} +.head_special_spring2022Rogue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_spring2022Rogue.png'); + width: 114px; + height: 117px; +} +.head_special_spring2022Warrior { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_spring2022Warrior.png'); + width: 114px; + height: 90px; +} .head_special_springHealer { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_springHealer.png'); width: 90px; @@ -25908,6 +25948,21 @@ width: 114px; height: 90px; } +.shield_special_spring2022Healer { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_spring2022Healer.png'); + width: 114px; + height: 90px; +} +.shield_special_spring2022Mage { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_spring2022Mage.png'); + width: 114px; + height: 117px; +} +.shield_special_spring2022Warrior { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_spring2022Warrior.png'); + width: 114px; + height: 90px; +} .shield_special_springHealer { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_springHealer.png'); width: 90px; @@ -26063,6 +26118,26 @@ width: 68px; height: 68px; } +.shop_armor_special_spring2022Healer { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_spring2022Healer.png'); + width: 68px; + height: 68px; +} +.shop_armor_special_spring2022Mage { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_spring2022Mage.png'); + width: 68px; + height: 68px; +} +.shop_armor_special_spring2022Rogue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_spring2022Rogue.png'); + width: 68px; + height: 68px; +} +.shop_armor_special_spring2022Warrior { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_spring2022Warrior.png'); + width: 68px; + height: 68px; +} .shop_armor_special_springHealer { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_springHealer.png'); width: 68px; @@ -26303,6 +26378,26 @@ width: 68px; height: 68px; } +.shop_head_special_spring2022Healer { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_spring2022Healer.png'); + width: 68px; + height: 68px; +} +.shop_head_special_spring2022Mage { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_spring2022Mage.png'); + width: 68px; + height: 68px; +} +.shop_head_special_spring2022Rogue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_spring2022Rogue.png'); + width: 68px; + height: 68px; +} +.shop_head_special_spring2022Warrior { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_spring2022Warrior.png'); + width: 68px; + height: 68px; +} .shop_head_special_springHealer { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_springHealer.png'); width: 68px; @@ -26428,6 +26523,21 @@ width: 68px; height: 68px; } +.shop_shield_special_spring2022Healer { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_spring2022Healer.png'); + width: 68px; + height: 68px; +} +.shop_shield_special_spring2022Rogue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_spring2022Rogue.png'); + width: 68px; + height: 68px; +} +.shop_shield_special_spring2022Warrior { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_spring2022Warrior.png'); + width: 68px; + height: 68px; +} .shop_shield_special_springHealer { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_springHealer.png'); width: 68px; @@ -26583,6 +26693,26 @@ width: 68px; height: 68px; } +.shop_weapon_special_spring2022Healer { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_spring2022Healer.png'); + width: 68px; + height: 68px; +} +.shop_weapon_special_spring2022Mage { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_spring2022Mage.png'); + width: 68px; + height: 68px; +} +.shop_weapon_special_spring2022Rogue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_spring2022Rogue.png'); + width: 68px; + height: 68px; +} +.shop_weapon_special_spring2022Warrior { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_spring2022Warrior.png'); + width: 68px; + height: 68px; +} .shop_weapon_special_springHealer { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_springHealer.png'); width: 68px; @@ -26743,6 +26873,26 @@ width: 114px; height: 90px; } +.slim_armor_special_spring2022Healer { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_spring2022Healer.png'); + width: 114px; + height: 90px; +} +.slim_armor_special_spring2022Mage { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_spring2022Mage.png'); + width: 114px; + height: 90px; +} +.slim_armor_special_spring2022Rogue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_spring2022Rogue.png'); + width: 114px; + height: 117px; +} +.slim_armor_special_spring2022Warrior { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_spring2022Warrior.png'); + width: 114px; + height: 90px; +} .slim_armor_special_springHealer { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_springHealer.png'); width: 90px; @@ -26903,6 +27053,26 @@ width: 114px; height: 90px; } +.weapon_special_spring2022Healer { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_spring2022Healer.png'); + width: 114px; + height: 90px; +} +.weapon_special_spring2022Mage { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_spring2022Mage.png'); + width: 114px; + height: 90px; +} +.weapon_special_spring2022Rogue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_spring2022Rogue.png'); + width: 114px; + height: 117px; +} +.weapon_special_spring2022Warrior { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_spring2022Warrior.png'); + width: 114px; + height: 90px; +} .weapon_special_springHealer { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_springHealer.png'); width: 90px; diff --git a/website/common/locales/en/gear.json b/website/common/locales/en/gear.json index 5c3b23323e..eb78d244fc 100644 --- a/website/common/locales/en/gear.json +++ b/website/common/locales/en/gear.json @@ -428,6 +428,15 @@ "headSpecialNye2021Text": "Preposterous Party Hat", "headSpecialNye2021Notes": "You've received a Preposterous Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.", + "weaponSpecialSpring2022RogueText": "Giant Earring Stud", + "weaponSpecialSpring2022RogueNotes": "A shiny! It’s so shiny and gleaming and pretty and nice and all yours! Increases Strength by <%= str %>. Limited Edition 2022 Spring Gear.", + "weaponSpecialSpring2022WarriorText": "Inside-Out Umbrella", + "weaponSpecialSpring2022WarriorNotes": "Yikes! Guess that wind was a little stronger than you thought, huh? Increases Strength by <%= str %>, Limited Edition 2022 Spring Gear.", + "weaponSpecialSpring2022MageText": "Forsythia Staff", + "weaponSpecialSpring2022MageNotes": "These bright yellow bells are ready to channel your powerful springtime magic. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2022 Spring Gear.", + "weaponSpecialSpring2022HealerText": "Peridot Wand", + "weaponSpecialSpring2022HealerNotes": "Use this wand to tap into peridot’s healing properties, whether it be to bring calm, positivity, or kindheartedness. Increases Intelligence by <%= int %>. Limited Edition 2022 Spring Gear.", + "weaponMystery201411Text": "Pitchfork of Feasting", "weaponMystery201411Notes": "Stab your enemies or dig in to your favorite foods - this versatile pitchfork does it all! Confers no benefit. November 2014 Subscriber Item.", "weaponMystery201502Text": "Shimmery Winged Staff of Love and Also Truth", @@ -1028,6 +1037,15 @@ "armorSpecialWinter2022HealerText": "Crystalline Ice Armor", "armorSpecialWinter2022HealerNotes": "Glide as if skating, just above the ground, a glittering ethereal figure come to bring cool and calm. Increases Constitution by <%= con %>. Limited Edition 2021-2022 Winter Gear.", + "armorSpecialSpring2022RogueText": "Magpie Costume", + "armorSpecialSpring2022RogueNotes": "With iridescent metallic blue-gray and lighter patches on your feathers, you will be the finest flying friend at the spring fling! Increases Perception by <%= per %>. Limited Edition 2022 Spring Gear.", + "armorSpecialSpring2022WarriorText": "Rain Slicker", + "armorSpecialSpring2022WarriorNotes": "This slicker and boots are so formidable you could sing in the rain or jump in every puddle but still be warm and dry! Increases Constitution by <%= con %>. Limited Edition 2022 Spring Gear.", + "armorSpecialSpring2022MageText": "Forsythia Robe", + "armorSpecialSpring2022MageNotes": "Show you’re ready to spring forward into the season with this robe adorned with forsythia flower petals. Intelligence by <%= int %>.Limited Edition 2022 Spring Gear.", + "armorSpecialSpring2022HealerText": "Peridot Armor", + "armorSpecialSpring2022HealerNotes": " Drive away fears and nightmares simply by wearing this green gem garment. Increases Constitution by <%= con %>. Limited Edition 2022 Spring Gear.", + "armorMystery201402Text": "Messenger Robes", "armorMystery201402Notes": "Shimmering and strong, these robes have many pockets to carry letters. Confers no benefit. February 2014 Subscriber Item.", "armorMystery201403Text": "Forest Walker Armor", @@ -1712,6 +1730,15 @@ "headSpecialWinter2022HealerText": "Crystalline Ice Crown", "headSpecialWinter2022HealerNotes": "Minute imperfections and impurities send the arms of this headdress branching out in unpredictable directions. It's symbolic! And also very, very pretty. Increases Intelligence by <%= int %>. Limited Edition 2021-2022 Winter Gear.", + "headSpecialSpring2022RogueText": "Magpie Mask", + "headSpecialSpring2022RogueNotes": "Be as clever as a magpie when wearing this mask. Maybe you’ll even be able to whistle, trill, and mimic as well as one, too. Increases Perception by <%= per %>. Limited Edition 2022 Spring Gear.", + "headSpecialSpring2022WarriorText": "Rain Slicker Hood", + "headSpecialSpring2022WarriorNotes": "Tut tut, it looks like rain! Stand tall and pull up your hood to stay dry. Increases Strength by <%= str %>. Limited Edition 2022 Spring Gear.", + "headSpecialSpring2022MageText": "Forsythia Helmet", + "headSpecialSpring2022MageNotes": "Stay dry during a rainstorm with this protective helmet of downturned petals.Increases Perception by <%= per %>. Limited Edition 2022 Spring Gear.", + "headSpecialSpring2022HealerText": "Peridot Helmet", + "headSpecialSpring2022HealerNotes": "This mysterious helmet preserves your privacy as you tackle your tasks. Increases Intelligence by <%= int %>. Limited Edition 2022 Spring Gear.", + "headSpecialGaymerxText": "Rainbow Warrior Helm", "headSpecialGaymerxNotes": "In celebration of the GaymerX Conference, this special helmet is decorated with a radiant, colorful rainbow pattern! GaymerX is a game convention celebrating LGTBQ and gaming and is open to everyone.", @@ -2243,6 +2270,11 @@ "shieldSpecialWinter2022HealerText": "Enduring Ice Crystal", "shieldSpecialWinter2022HealerNotes": "Though it melts in your hand, the power of elemental ice replenishes it from within. Increases Constitution by <%= con %>. Limited Edition 2021-2022 Winter Gear.", + "shieldSpecialSpring2022WarriorText": "Raincloud", + "shieldSpecialSpring2022WarriorNotes": "Ever had one of those days when it seems like a raincloud is following you around? Well, consider yourself lucky, because the prettiest flowers will soon be growing at your feet! Increases Constitution by <%= con %>. Limited Edition 2022 Spring Gear.", + "shieldSpecialSpring2022HealerText": "Peridot Shield", + "shieldSpecialSpring2022HealerNotes": "Formed by molten rock of the upper mantle, this shield can withstand any hit that comes its way. Increases Constitution by <%= con %>. Limited Edition 2022 Spring Gear.", + "shieldMystery201601Text": "Resolution Slayer", "shieldMystery201601Notes": "This blade can be used to parry away all distractions. Confers no benefit. January 2016 Subscriber Item.", "shieldMystery201701Text": "Time-Freezer Shield", diff --git a/website/common/locales/en/limited.json b/website/common/locales/en/limited.json index addb64411f..2992083589 100644 --- a/website/common/locales/en/limited.json +++ b/website/common/locales/en/limited.json @@ -179,6 +179,10 @@ "winter2022StockingWarriorSet": "Stocking (Warrior)", "winter2022PomegranateMageSet": "Pomegranate (Mage)", "winter2022IceCrystalHealerSet": "Ice Crystal (Healer)", + "spring2022MagpieRogueSet": "Magpie (Rogue)", + "spring2022RainstormWarriorSet": "Rainstorm (Warrior)", + "spring2022ForsythiaMageSet": "Forsythia (Mage)", + "spring2022PeridotHealerSet": "Peridot (Healer)", "eventAvailability": "Available for purchase until <%= date(locale) %>.", "eventAvailabilityReturning": "Available for purchase until <%= availableDate(locale) %>. This potion was last available in <%= previousDate(locale) %>.", "dateEndMarch": "April 30", diff --git a/website/common/locales/en/questsContent.json b/website/common/locales/en/questsContent.json index 45e4249e7d..557be32b92 100644 --- a/website/common/locales/en/questsContent.json +++ b/website/common/locales/en/questsContent.json @@ -699,7 +699,7 @@ "questSquirrelUnlockText": "Unlocks Squirrel Eggs for purchase in the Market", "cuddleBuddiesText": "Cuddle Buddies Quest Bundle", - "cuddleBuddiesNotes": "Contains 'The Killer Bunny', 'The Nefarious Ferret', and 'The Guinea Pig Gang'. Available until May 31.", + "cuddleBuddiesNotes": "Contains 'The Killer Bunny', 'The Nefarious Ferret', and 'The Guinea Pig Gang'. Available until March 31.", "aquaticAmigosText": "Aquatic Amigos Quest Bundle", "aquaticAmigosNotes": "Contains 'The Magical Axolotl', 'The Kraken of Inkomplete', and 'The Call of Octothulu'. Available until August 31.", diff --git a/website/common/script/content/bundles.js b/website/common/script/content/bundles.js index 24239f3f51..bfb7429b5a 100644 --- a/website/common/script/content/bundles.js +++ b/website/common/script/content/bundles.js @@ -114,7 +114,7 @@ const bundles = { 'guineapig', ], canBuy () { - return moment().isBetween('2022-03-15T08:00-04:00', '2022-05-31T20:00-04:00'); + return moment().isBetween('2022-03-15T08:00-04:00', '2022-03-31T20:00-04:00'); }, type: 'quests', value: 7, diff --git a/website/common/script/content/constants/events.js b/website/common/script/content/constants/events.js index 2e5d776583..08caac74ad 100644 --- a/website/common/script/content/constants/events.js +++ b/website/common/script/content/constants/events.js @@ -10,11 +10,18 @@ const gemsPromo = { export const EVENTS = { noCurrentEvent: { - start: '2022-02-18T20:00-05:00', - end: '2022-03-31T20:00-05:00', + start: '2022-04-30T20:00-05:00', + end: '2022-06-30T20:00-05:00', season: 'normal', npcImageSuffix: '', }, + spring2022: { + start: '2022-03-22T08:00-05:00', + end: '2022-04-30T20:00-05:00', + npcImageSuffix: 'spring', + season: 'spring', + gear: true, + }, valentines2022: { start: '2022-02-14T08:00-05:00', end: '2022-02-18T20:00-05:00', diff --git a/website/common/script/content/constants/seasonalSets.js b/website/common/script/content/constants/seasonalSets.js index 383e555b7c..6a03fb5865 100644 --- a/website/common/script/content/constants/seasonalSets.js +++ b/website/common/script/content/constants/seasonalSets.js @@ -67,36 +67,37 @@ const SEASONAL_SETS = { 'cleverDogSet', 'braveMouseSet', - // spring 2017 'spring2017FelineWarriorSet', 'spring2017CanineConjurorSet', 'spring2017FloralMouseSet', 'spring2017SneakyBunnySet', - // spring 2018 'spring2018TulipMageSet', 'spring2018SunriseWarriorSet', 'spring2018DucklingRogueSet', 'spring2018GarnetHealerSet', - // spring 2019 'spring2019AmberMageSet', 'spring2019OrchidWarriorSet', 'spring2019CloudRogueSet', 'spring2019RobinHealerSet', - // spring 2020 'spring2020BeetleWarriorSet', 'spring2020IrisHealerSet', 'spring2020LapisLazuliRogueSet', 'spring2020PuddleMageSet', - // spring 2021 'spring2021SwanMageSet', 'spring2021WillowHealerSet', 'spring2021SunstoneWarriorSet', 'spring2021TwinFlowerRogueSet', + + 'spring2022ForsythiaMageSet', + 'spring2022PeridotHealerSet', + 'spring2022RainstormWarriorSet', + 'spring2022MagpieRogueSet', ], + summer: [ // summer 2014 'daringSwashbucklerSet', diff --git a/website/common/script/content/gear/sets/special/index.js b/website/common/script/content/gear/sets/special/index.js index 3427057675..9bb8c79654 100644 --- a/website/common/script/content/gear/sets/special/index.js +++ b/website/common/script/content/gear/sets/special/index.js @@ -670,15 +670,19 @@ const armor = { }, spring2021Rogue: { set: 'spring2021TwinFlowerRogueSet', + canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring', }, spring2021Warrior: { set: 'spring2021SunstoneWarriorSet', + canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring', }, spring2021Mage: { set: 'spring2021SwanMageSet', + canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring', }, spring2021Healer: { set: 'spring2021WillowHealerSet', + canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring', }, summer2021Rogue: { set: 'summer2021ClownfishRogueSet', @@ -716,6 +720,19 @@ const armor = { winter2022Healer: { set: 'winter2022IceCrystalHealerSet', }, + spring2022Rogue: { + set: 'spring2022MagpieRogueSet', + }, + spring2022Warrior: { + set: 'spring2022RainstormWarriorSet', + }, + spring2022Mage: { + set: 'spring2022ForsythiaMageSet', + }, + spring2022Healer: { + set: 'spring2022PeridotHealerSet', + }, + birthday2022: { text: t('armorSpecialBirthday2022Text'), notes: t('armorSpecialBirthday2022Notes'), @@ -1728,15 +1745,19 @@ const head = { }, spring2021Rogue: { set: 'spring2021TwinFlowerRogueSet', + canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring', }, spring2021Warrior: { set: 'spring2021SunstoneWarriorSet', + canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring', }, spring2021Mage: { set: 'spring2021SwanMageSet', + canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring', }, spring2021Healer: { set: 'spring2021WillowHealerSet', + canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring', }, summer2021Rogue: { set: 'summer2021ClownfishRogueSet', @@ -1780,6 +1801,18 @@ const head = { value: 0, canOwn: ownsItem('head_special_nye2021'), }, + spring2022Rogue: { + set: 'spring2022MagpieRogueSet', + }, + spring2022Warrior: { + set: 'spring2022RainstormWarriorSet', + }, + spring2022Mage: { + set: 'spring2022ForsythiaMageSet', + }, + spring2022Healer: { + set: 'spring2022PeridotHealerSet', + }, }; const headStats = { @@ -2504,12 +2537,15 @@ const shield = { }, spring2021Rogue: { set: 'spring2021TwinFlowerRogueSet', + canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring', }, spring2021Warrior: { set: 'spring2021SunstoneWarriorSet', + canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring', }, spring2021Healer: { set: 'spring2021WillowHealerSet', + canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring', }, summer2021Rogue: { set: 'summer2021ClownfishRogueSet', @@ -2538,6 +2574,15 @@ const shield = { winter2022Healer: { set: 'winter2022IceCrystalHealerSet', }, + spring2022Rogue: { + set: 'spring2022MagpieRogueSet', + }, + spring2022Warrior: { + set: 'spring2022RainstormWarriorSet', + }, + spring2022Healer: { + set: 'spring2022PeridotHealerSet', + }, }; const shieldStats = { @@ -3168,15 +3213,19 @@ const weapon = { }, spring2021Rogue: { set: 'spring2021TwinFlowerRogueSet', + canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring', }, spring2021Warrior: { set: 'spring2021SunstoneWarriorSet', + canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring', }, spring2021Mage: { set: 'spring2021SwanMageSet', + canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring', }, spring2021Healer: { set: 'spring2021WillowHealerSet', + canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring', }, summer2021Rogue: { set: 'summer2021ClownfishRogueSet', @@ -3214,6 +3263,18 @@ const weapon = { winter2022Healer: { set: 'winter2022IceCrystalHealerSet', }, + spring2022Rogue: { + set: 'spring2022MagpieRogueSet', + }, + spring2022Warrior: { + set: 'spring2022RainstormWarriorSet', + }, + spring2022Mage: { + set: 'spring2022ForsythiaMageSet', + }, + spring2022Healer: { + set: 'spring2022PeridotHealerSet', + }, }; const weaponStats = { diff --git a/website/common/script/content/shop-featuredItems.js b/website/common/script/content/shop-featuredItems.js index 6048266118..179264d3db 100644 --- a/website/common/script/content/shop-featuredItems.js +++ b/website/common/script/content/shop-featuredItems.js @@ -44,7 +44,7 @@ const featuredItems = { ]; }, quests () { - if (moment().isBefore('2022-05-31T20:00-04:00')) { + if (moment().isBefore('2022-03-31T20:00-04:00')) { return [ { type: 'bundles', @@ -52,7 +52,7 @@ const featuredItems = { }, { type: 'quests', - path: 'quests.turquoise', + path: 'quests.egg', }, { type: 'quests', @@ -75,7 +75,7 @@ const featuredItems = { }, ]; }, - seasonal: 'winter2021Warrior', + seasonal: 'spring2021Healer', timeTravelers: [ // TODO ], diff --git a/website/common/script/libs/shops-seasonal.config.js b/website/common/script/libs/shops-seasonal.config.js index d52410158e..b921e21250 100644 --- a/website/common/script/libs/shops-seasonal.config.js +++ b/website/common/script/libs/shops-seasonal.config.js @@ -30,20 +30,24 @@ export default { pinnedSets: SHOP_OPEN ? { - healer: 'winter2022IceCrystalHealerSet', - rogue: 'winter2022FireworksRogueSet', - warrior: 'winter2022StockingWarriorSet', - wizard: 'winter2022PomegranateMageSet', + healer: 'spring2022PeridotHealerSet', + rogue: 'spring2022MagpieRogueSet', + warrior: 'spring2022RainstormWarriorSet', + wizard: 'spring2022ForsythiaMageSet', } : {}, - availableSpells: SHOP_OPEN && moment().isBetween('2021-12-30T08:00-04:00', CURRENT_EVENT.end) + availableSpells: SHOP_OPEN && moment().isBetween('2022-04-12T08:00-05:00', CURRENT_EVENT.end) ? [ - 'snowball', + 'shinySeed', ] : [], - availableQuests: [], + availableQuests: SHOP_OPEN && CURRENT_EVENT.season === 'spring' + ? [ + 'egg', + ] + : [], - featuredSet: 'winter2021ArcticExplorerHealerSet', + featuredSet: 'spring2021TwinFlowerRogueSet', };