Merge branch 'develop' of https://github.com/HabitRPG/habitica into develop

This commit is contained in:
CuriousMagpie
2022-02-14 16:37:55 -05:00
12 changed files with 471 additions and 496 deletions

2
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{ {
"name": "habitica", "name": "habitica",
"version": "4.221.0", "version": "4.222.0",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@@ -1,7 +1,7 @@
{ {
"name": "habitica", "name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.", "description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "4.221.0", "version": "4.222.0",
"main": "./website/server/index.js", "main": "./website/server/index.js",
"dependencies": { "dependencies": {
"@babel/core": "^7.17.2", "@babel/core": "^7.17.2",

View File

@@ -12816,31 +12816,11 @@
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
}, },
"emojis-list": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
"is-fullwidth-code-point": { "is-fullwidth-code-point": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
}, },
"loader-utils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
"integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
},
"minimist": { "minimist": {
"version": "1.2.5", "version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
@@ -12877,35 +12857,6 @@
"ansi-regex": "^5.0.1" "ansi-regex": "^5.0.1"
} }
}, },
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"requires": {
"has-flag": "^4.0.0"
}
},
"vue-loader-v16": {
"version": "npm:vue-loader@16.8.3",
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
"integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
},
"dependencies": {
"chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
}
}
},
"wrap-ansi": { "wrap-ansi": {
"version": "6.2.0", "version": "6.2.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
@@ -14078,19 +14029,6 @@
"version": "1.1.71", "version": "1.1.71",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz",
"integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==" "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg=="
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
},
"supports-color": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
"integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
"requires": {
"has-flag": "^3.0.0"
}
} }
} }
}, },
@@ -16428,19 +16366,6 @@
"version": "6.3.0", "version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
},
"supports-color": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
"integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
"requires": {
"has-flag": "^3.0.0"
}
} }
} }
}, },
@@ -18551,26 +18476,22 @@
"dependencies": { "dependencies": {
"abbrev": { "abbrev": {
"version": "1.1.1", "version": "1.1.1",
"resolved": false, "bundled": true,
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"optional": true "optional": true
}, },
"ansi-regex": { "ansi-regex": {
"version": "2.1.1", "version": "2.1.1",
"resolved": false, "bundled": true,
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"optional": true "optional": true
}, },
"aproba": { "aproba": {
"version": "1.2.0", "version": "1.2.0",
"resolved": false, "bundled": true,
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
"optional": true "optional": true
}, },
"are-we-there-yet": { "are-we-there-yet": {
"version": "1.1.5", "version": "1.1.5",
"resolved": false, "bundled": true,
"integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
"optional": true, "optional": true,
"requires": { "requires": {
"delegates": "^1.0.0", "delegates": "^1.0.0",
@@ -18579,14 +18500,12 @@
}, },
"balanced-match": { "balanced-match": {
"version": "1.0.0", "version": "1.0.0",
"resolved": false, "bundled": true,
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"optional": true "optional": true
}, },
"brace-expansion": { "brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
"resolved": false, "bundled": true,
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"optional": true, "optional": true,
"requires": { "requires": {
"balanced-match": "^1.0.0", "balanced-match": "^1.0.0",
@@ -18595,37 +18514,37 @@
}, },
"chownr": { "chownr": {
"version": "1.1.1", "version": "1.1.1",
<<<<<<< HEAD
"resolved": false, "resolved": false,
"integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g=="
=======
"bundled": true,
"optional": true
>>>>>>> 9af2289773af196ab1de83de6af54c8732805177
}, },
"code-point-at": { "code-point-at": {
"version": "1.1.0", "version": "1.1.0",
"resolved": false, "bundled": true,
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
"optional": true "optional": true
}, },
"concat-map": { "concat-map": {
"version": "0.0.1", "version": "0.0.1",
"resolved": false, "bundled": true,
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"optional": true "optional": true
}, },
"console-control-strings": { "console-control-strings": {
"version": "1.1.0", "version": "1.1.0",
"resolved": false, "bundled": true,
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
"optional": true "optional": true
}, },
"core-util-is": { "core-util-is": {
"version": "1.0.2", "version": "1.0.2",
"resolved": false, "bundled": true,
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"optional": true "optional": true
}, },
"debug": { "debug": {
"version": "4.1.1", "version": "4.1.1",
"resolved": false, "bundled": true,
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"optional": true, "optional": true,
"requires": { "requires": {
"ms": "^2.1.1" "ms": "^2.1.1"
@@ -18633,40 +18552,40 @@
}, },
"deep-extend": { "deep-extend": {
"version": "0.6.0", "version": "0.6.0",
"resolved": false, "bundled": true,
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
"optional": true "optional": true
}, },
"delegates": { "delegates": {
"version": "1.0.0", "version": "1.0.0",
"resolved": false, "bundled": true,
"integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
"optional": true "optional": true
}, },
"detect-libc": { "detect-libc": {
"version": "1.0.3", "version": "1.0.3",
"resolved": false, "bundled": true,
"integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
"optional": true "optional": true
}, },
"fs-minipass": { "fs-minipass": {
"version": "1.2.5", "version": "1.2.5",
<<<<<<< HEAD
"resolved": false, "resolved": false,
"integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
=======
"bundled": true,
"optional": true,
>>>>>>> 9af2289773af196ab1de83de6af54c8732805177
"requires": { "requires": {
"minipass": "^2.2.1" "minipass": "^2.2.1"
} }
}, },
"fs.realpath": { "fs.realpath": {
"version": "1.0.0", "version": "1.0.0",
"resolved": false, "bundled": true,
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"optional": true "optional": true
}, },
"gauge": { "gauge": {
"version": "2.7.4", "version": "2.7.4",
"resolved": false, "bundled": true,
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
"optional": true, "optional": true,
"requires": { "requires": {
"aproba": "^1.0.3", "aproba": "^1.0.3",
@@ -18681,8 +18600,7 @@
}, },
"glob": { "glob": {
"version": "7.1.3", "version": "7.1.3",
"resolved": false, "bundled": true,
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"optional": true, "optional": true,
"requires": { "requires": {
"fs.realpath": "^1.0.0", "fs.realpath": "^1.0.0",
@@ -18695,14 +18613,12 @@
}, },
"has-unicode": { "has-unicode": {
"version": "2.0.1", "version": "2.0.1",
"resolved": false, "bundled": true,
"integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
"optional": true "optional": true
}, },
"iconv-lite": { "iconv-lite": {
"version": "0.4.24", "version": "0.4.24",
"resolved": false, "bundled": true,
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"optional": true, "optional": true,
"requires": { "requires": {
"safer-buffer": ">= 2.1.2 < 3" "safer-buffer": ">= 2.1.2 < 3"
@@ -18710,8 +18626,7 @@
}, },
"ignore-walk": { "ignore-walk": {
"version": "3.0.1", "version": "3.0.1",
"resolved": false, "bundled": true,
"integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
"optional": true, "optional": true,
"requires": { "requires": {
"minimatch": "^3.0.4" "minimatch": "^3.0.4"
@@ -18719,8 +18634,7 @@
}, },
"inflight": { "inflight": {
"version": "1.0.6", "version": "1.0.6",
"resolved": false, "bundled": true,
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"optional": true, "optional": true,
"requires": { "requires": {
"once": "^1.3.0", "once": "^1.3.0",
@@ -18729,14 +18643,12 @@
}, },
"inherits": { "inherits": {
"version": "2.0.3", "version": "2.0.3",
"resolved": false, "bundled": true,
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"optional": true "optional": true
}, },
"is-fullwidth-code-point": { "is-fullwidth-code-point": {
"version": "1.0.0", "version": "1.0.0",
"resolved": false, "bundled": true,
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"optional": true, "optional": true,
"requires": { "requires": {
"number-is-nan": "^1.0.0" "number-is-nan": "^1.0.0"
@@ -18744,14 +18656,12 @@
}, },
"isarray": { "isarray": {
"version": "1.0.0", "version": "1.0.0",
"resolved": false, "bundled": true,
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"optional": true "optional": true
}, },
"minimatch": { "minimatch": {
"version": "3.0.4", "version": "3.0.4",
"resolved": false, "bundled": true,
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"optional": true, "optional": true,
"requires": { "requires": {
"brace-expansion": "^1.1.7" "brace-expansion": "^1.1.7"
@@ -18759,14 +18669,12 @@
}, },
"minimist": { "minimist": {
"version": "0.0.8", "version": "0.0.8",
"resolved": false, "bundled": true,
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"optional": true "optional": true
}, },
"minipass": { "minipass": {
"version": "2.3.5", "version": "2.3.5",
"resolved": false, "bundled": true,
"integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
"optional": true, "optional": true,
"requires": { "requires": {
"safe-buffer": "^5.1.2", "safe-buffer": "^5.1.2",
@@ -18775,16 +18683,20 @@
}, },
"minizlib": { "minizlib": {
"version": "1.2.1", "version": "1.2.1",
<<<<<<< HEAD
"resolved": false, "resolved": false,
"integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==",
=======
"bundled": true,
"optional": true,
>>>>>>> 9af2289773af196ab1de83de6af54c8732805177
"requires": { "requires": {
"minipass": "^2.2.1" "minipass": "^2.2.1"
} }
}, },
"mkdirp": { "mkdirp": {
"version": "0.5.1", "version": "0.5.1",
"resolved": false, "bundled": true,
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"optional": true, "optional": true,
"requires": { "requires": {
"minimist": "0.0.8" "minimist": "0.0.8"
@@ -18792,14 +18704,12 @@
}, },
"ms": { "ms": {
"version": "2.1.1", "version": "2.1.1",
"resolved": false, "bundled": true,
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
"optional": true "optional": true
}, },
"needle": { "needle": {
"version": "2.3.0", "version": "2.3.0",
"resolved": false, "bundled": true,
"integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==",
"optional": true, "optional": true,
"requires": { "requires": {
"debug": "^4.1.0", "debug": "^4.1.0",
@@ -18809,8 +18719,7 @@
}, },
"node-pre-gyp": { "node-pre-gyp": {
"version": "0.12.0", "version": "0.12.0",
"resolved": false, "bundled": true,
"integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==",
"optional": true, "optional": true,
"requires": { "requires": {
"detect-libc": "^1.0.2", "detect-libc": "^1.0.2",
@@ -18827,8 +18736,7 @@
}, },
"nopt": { "nopt": {
"version": "4.0.1", "version": "4.0.1",
"resolved": false, "bundled": true,
"integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
"optional": true, "optional": true,
"requires": { "requires": {
"abbrev": "1", "abbrev": "1",
@@ -18837,14 +18745,12 @@
}, },
"npm-bundled": { "npm-bundled": {
"version": "1.0.6", "version": "1.0.6",
"resolved": false, "bundled": true,
"integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==",
"optional": true "optional": true
}, },
"npm-packlist": { "npm-packlist": {
"version": "1.4.1", "version": "1.4.1",
"resolved": false, "bundled": true,
"integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==",
"optional": true, "optional": true,
"requires": { "requires": {
"ignore-walk": "^3.0.1", "ignore-walk": "^3.0.1",
@@ -18853,8 +18759,7 @@
}, },
"npmlog": { "npmlog": {
"version": "4.1.2", "version": "4.1.2",
"resolved": false, "bundled": true,
"integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
"optional": true, "optional": true,
"requires": { "requires": {
"are-we-there-yet": "~1.1.2", "are-we-there-yet": "~1.1.2",
@@ -18865,20 +18770,17 @@
}, },
"number-is-nan": { "number-is-nan": {
"version": "1.0.1", "version": "1.0.1",
"resolved": false, "bundled": true,
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
"optional": true "optional": true
}, },
"object-assign": { "object-assign": {
"version": "4.1.1", "version": "4.1.1",
"resolved": false, "bundled": true,
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"optional": true "optional": true
}, },
"once": { "once": {
"version": "1.4.0", "version": "1.4.0",
"resolved": false, "bundled": true,
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"optional": true, "optional": true,
"requires": { "requires": {
"wrappy": "1" "wrappy": "1"
@@ -18886,20 +18788,17 @@
}, },
"os-homedir": { "os-homedir": {
"version": "1.0.2", "version": "1.0.2",
"resolved": false, "bundled": true,
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
"optional": true "optional": true
}, },
"os-tmpdir": { "os-tmpdir": {
"version": "1.0.2", "version": "1.0.2",
"resolved": false, "bundled": true,
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
"optional": true "optional": true
}, },
"osenv": { "osenv": {
"version": "0.1.5", "version": "0.1.5",
"resolved": false, "bundled": true,
"integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
"optional": true, "optional": true,
"requires": { "requires": {
"os-homedir": "^1.0.0", "os-homedir": "^1.0.0",
@@ -18908,20 +18807,17 @@
}, },
"path-is-absolute": { "path-is-absolute": {
"version": "1.0.1", "version": "1.0.1",
"resolved": false, "bundled": true,
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"optional": true "optional": true
}, },
"process-nextick-args": { "process-nextick-args": {
"version": "2.0.0", "version": "2.0.0",
"resolved": false, "bundled": true,
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
"optional": true "optional": true
}, },
"rc": { "rc": {
"version": "1.2.8", "version": "1.2.8",
"resolved": false, "bundled": true,
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"optional": true, "optional": true,
"requires": { "requires": {
"deep-extend": "^0.6.0", "deep-extend": "^0.6.0",
@@ -18932,16 +18828,14 @@
"dependencies": { "dependencies": {
"minimist": { "minimist": {
"version": "1.2.0", "version": "1.2.0",
"resolved": false, "bundled": true,
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"optional": true "optional": true
} }
} }
}, },
"readable-stream": { "readable-stream": {
"version": "2.3.6", "version": "2.3.6",
"resolved": false, "bundled": true,
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"optional": true, "optional": true,
"requires": { "requires": {
"core-util-is": "~1.0.0", "core-util-is": "~1.0.0",
@@ -18955,8 +18849,7 @@
}, },
"rimraf": { "rimraf": {
"version": "2.6.3", "version": "2.6.3",
"resolved": false, "bundled": true,
"integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
"optional": true, "optional": true,
"requires": { "requires": {
"glob": "^7.1.3" "glob": "^7.1.3"
@@ -18964,44 +18857,37 @@
}, },
"safe-buffer": { "safe-buffer": {
"version": "5.1.2", "version": "5.1.2",
"resolved": false, "bundled": true,
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"optional": true "optional": true
}, },
"safer-buffer": { "safer-buffer": {
"version": "2.1.2", "version": "2.1.2",
"resolved": false, "bundled": true,
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"optional": true "optional": true
}, },
"sax": { "sax": {
"version": "1.2.4", "version": "1.2.4",
"resolved": false, "bundled": true,
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
"optional": true "optional": true
}, },
"semver": { "semver": {
"version": "5.7.0", "version": "5.7.0",
"resolved": false, "bundled": true,
"integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
"optional": true "optional": true
}, },
"set-blocking": { "set-blocking": {
"version": "2.0.0", "version": "2.0.0",
"resolved": false, "bundled": true,
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"optional": true "optional": true
}, },
"signal-exit": { "signal-exit": {
"version": "3.0.2", "version": "3.0.2",
"resolved": false, "bundled": true,
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
"optional": true "optional": true
}, },
"string-width": { "string-width": {
"version": "1.0.2", "version": "1.0.2",
"resolved": false, "bundled": true,
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"optional": true, "optional": true,
"requires": { "requires": {
"code-point-at": "^1.0.0", "code-point-at": "^1.0.0",
@@ -19011,8 +18897,7 @@
}, },
"string_decoder": { "string_decoder": {
"version": "1.1.1", "version": "1.1.1",
"resolved": false, "bundled": true,
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"optional": true, "optional": true,
"requires": { "requires": {
"safe-buffer": "~5.1.0" "safe-buffer": "~5.1.0"
@@ -19020,8 +18905,7 @@
}, },
"strip-ansi": { "strip-ansi": {
"version": "3.0.1", "version": "3.0.1",
"resolved": false, "bundled": true,
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"optional": true, "optional": true,
"requires": { "requires": {
"ansi-regex": "^2.0.0" "ansi-regex": "^2.0.0"
@@ -19029,20 +18913,34 @@
}, },
"strip-json-comments": { "strip-json-comments": {
"version": "2.0.1", "version": "2.0.1",
"resolved": false, "bundled": true,
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
"optional": true "optional": true
}, },
<<<<<<< HEAD
=======
"tar": {
"version": "4.4.8",
"bundled": true,
"optional": true,
"requires": {
"chownr": "^1.1.1",
"fs-minipass": "^1.2.5",
"minipass": "^2.3.4",
"minizlib": "^1.1.1",
"mkdirp": "^0.5.0",
"safe-buffer": "^5.1.2",
"yallist": "^3.0.2"
}
},
>>>>>>> 9af2289773af196ab1de83de6af54c8732805177
"util-deprecate": { "util-deprecate": {
"version": "1.0.2", "version": "1.0.2",
"resolved": false, "bundled": true,
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"optional": true "optional": true
}, },
"wide-align": { "wide-align": {
"version": "1.1.3", "version": "1.1.3",
"resolved": false, "bundled": true,
"integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
"optional": true, "optional": true,
"requires": { "requires": {
"string-width": "^1.0.2 || 2" "string-width": "^1.0.2 || 2"
@@ -19050,14 +18948,12 @@
}, },
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"resolved": false, "bundled": true,
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"optional": true "optional": true
}, },
"yallist": { "yallist": {
"version": "3.0.3", "version": "3.0.3",
"resolved": false, "bundled": true,
"integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
"optional": true "optional": true
} }
} }
@@ -22321,14 +22217,6 @@
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
"integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
}, },
"moment-timezone": {
"version": "0.5.34",
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz",
"integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==",
"requires": {
"moment": ">= 2.9.0"
}
},
"move-concurrently": { "move-concurrently": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
@@ -29017,6 +28905,85 @@
} }
} }
}, },
"vue-loader-v16": {
"version": "npm:vue-loader@16.8.3",
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
"integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
"optional": true,
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
},
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"optional": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"optional": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"optional": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"optional": true
},
"emojis-list": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"optional": true
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"optional": true
},
"loader-utils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
"integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
"optional": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"optional": true,
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
"vue-mugen-scroll": { "vue-mugen-scroll": {
"version": "0.2.6", "version": "0.2.6",
"resolved": "https://registry.npmjs.org/vue-mugen-scroll/-/vue-mugen-scroll-0.2.6.tgz", "resolved": "https://registry.npmjs.org/vue-mugen-scroll/-/vue-mugen-scroll-0.2.6.tgz",
@@ -29070,8 +29037,8 @@
} }
}, },
"vuejs-datepicker": { "vuejs-datepicker": {
"version": "git://github.com/habitrpg/vuejs-datepicker.git#153d339e4dbebb73733658aeda1d5b7fcc55b0a0", "version": "git+ssh://git@github.com/habitrpg/vuejs-datepicker.git#153d339e4dbebb73733658aeda1d5b7fcc55b0a0",
"from": "git://github.com/habitrpg/vuejs-datepicker.git#153d339e4dbebb73733658aeda1d5b7fcc55b0a0" "from": "vuejs-datepicker@git://github.com/habitrpg/vuejs-datepicker.git#153d339e4dbebb73733658aeda1d5b7fcc55b0a0"
}, },
"w3c-hr-time": { "w3c-hr-time": {
"version": "1.0.2", "version": "1.0.2",

View File

@@ -44,7 +44,6 @@
"jquery": "^3.6.0", "jquery": "^3.6.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"moment": "^2.29.1", "moment": "^2.29.1",
"moment-timezone": "^0.5.34",
"nconf": "^0.11.3", "nconf": "^0.11.3",
"sass": "^1.34.0", "sass": "^1.34.0",
"sass-loader": "^8.0.2", "sass-loader": "^8.0.2",

View File

@@ -20,11 +20,9 @@
class="draft" class="draft"
>DRAFT</small> >DRAFT</small>
<h2 class="title"> <h2 class="title">
{{ post.title.toUpperCase() }} {{ getPostDate(post) }} - {{ post.title.toUpperCase() }}
</h2> </h2>
<small>
{{ getPostedOn(post) }}
</small>
<hr> <hr>
<div v-html="renderMarkdown(post.text)"></div> <div v-html="renderMarkdown(post.text)"></div>
@@ -53,8 +51,7 @@ h1 {
} }
.title { .title {
text-align: left; display: inline;
margin-bottom: 4px;
} }
.draft { .draft {
@@ -68,7 +65,7 @@ h1 {
</style> </style>
<script> <script>
import moment from 'moment-timezone'; import moment from 'moment';
import habiticaMarkdown from 'habitica-markdown'; import habiticaMarkdown from 'habitica-markdown';
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
import seasonalNPC from '@/mixins/seasonalNPC'; import seasonalNPC from '@/mixins/seasonalNPC';
@@ -108,12 +105,9 @@ export default {
renderMarkdown (text) { renderMarkdown (text) {
return habiticaMarkdown.unsafeHTMLRender(text); return habiticaMarkdown.unsafeHTMLRender(text);
}, },
getPostedOn (post) { getPostDate (post) {
const publishDate = moment(post.publishDate) const format = this.user ? this.user.preferences.dateFormat.toUpperCase() : 'MM/DD/yyyy';
.utcOffset(-300) return moment(post.publishDate).format(format);
.format(this.user.preferences.dateFormat.toUpperCase());
const publishTime = moment(post.publishDate).tz('America/New_York').format('LT z');
return this.$t('newStuffPostedOn', { publishDate, publishTime });
}, },
}, },
}; };

View File

@@ -1,217 +1,217 @@
{ {
"annoyingFriends": "Annoying Friends", "annoyingFriends": "Annoying Friends",
"annoyingFriendsText": "Got snowballed <%= count %> times by party members.", "annoyingFriendsText": "Got snowballed <%= count %> times by party members.",
"alarmingFriends": "Alarming Friends", "alarmingFriends": "Alarming Friends",
"alarmingFriendsText": "Got spooked <%= count %> times by party members.", "alarmingFriendsText": "Got spooked <%= count %> times by party members.",
"agriculturalFriends": "Agricultural Friends", "agriculturalFriends": "Agricultural Friends",
"agriculturalFriendsText": "Got transformed into a flower <%= count %> times by party members.", "agriculturalFriendsText": "Got transformed into a flower <%= count %> times by party members.",
"aquaticFriends": "Aquatic Friends", "aquaticFriends": "Aquatic Friends",
"aquaticFriendsText": "Got splashed <%= count %> times by party members.", "aquaticFriendsText": "Got splashed <%= count %> times by party members.",
"valentineCard": "Valentine's Day Card", "valentineCard": "Valentine's Day Card",
"valentineCardExplanation": "For enduring such a saccharine poem, you both receive the \"Adoring Friends\" badge!", "valentineCardExplanation": "For enduring such a saccharine poem, you both receive the \"Adoring Friends\" badge!",
"valentineCardNotes": "Send a Valentine's Day card to a party member.", "valentineCardNotes": "Send a Valentine's Day card to a party member.",
"valentine0": "\"Roses are red\n\nMy Dailies are blue\n\nI'm happy that I'm\n\nIn a Party with you!\"", "valentine0": "\"Roses are red\n\nMy Dailies are blue\n\nI'm happy that I'm\n\nIn a Party with you!\"",
"valentine1": "\"Roses are red\n\nViolets are nice\n\nLet's get together\n\nAnd fight against Vice!\"", "valentine1": "\"Roses are red\n\nViolets are nice\n\nLet's get together\n\nAnd fight against Vice!\"",
"valentine2": "\"Roses are red\n\nThis poem style is old\n\nI hope that you like this\n\n'Cause it cost ten Gold.\"", "valentine2": "\"Roses are red\n\nThis poem style is old\n\nI hope that you like this\n\n'Cause it cost ten Gold.\"",
"valentine3": "\"Roses are red\n\nIce Drakes are blue\n\nNo treasure is better\n\nThan time spent with you!\"", "valentine3": "\"Roses are red\n\nIce Drakes are blue\n\nNo treasure is better\n\nThan time spent with you!\"",
"valentineCardAchievementTitle": "Adoring Friends", "valentineCardAchievementTitle": "Adoring Friends",
"valentineCardAchievementText": "Aww, you and your friend must really care about each other! Sent or received <%= count %> Valentine's Day cards.", "valentineCardAchievementText": "Aww, you and your friend must really care about each other! Sent or received <%= count %> Valentine's Day cards.",
"polarBear": "Polar Bear", "polarBear": "Polar Bear",
"turkey": "Turkey", "turkey": "Turkey",
"gildedTurkey": "Gilded Turkey", "gildedTurkey": "Gilded Turkey",
"polarBearPup": "Polar Bear Cub", "polarBearPup": "Polar Bear Cub",
"jackolantern": "Jack-O-Lantern", "jackolantern": "Jack-O-Lantern",
"ghostJackolantern": "Ghost Jack-O-Lantern", "ghostJackolantern": "Ghost Jack-O-Lantern",
"glowJackolantern": "Glow-in-the-Dark Jack-O-Lantern", "glowJackolantern": "Glow-in-the-Dark Jack-O-Lantern",
"royalPurpleJackolantern": "Royal Purple Jack-O-Lantern", "royalPurpleJackolantern": "Royal Purple Jack-O-Lantern",
"seasonalShop": "Seasonal Shop", "seasonalShop": "Seasonal Shop",
"seasonalShopClosedTitle": "<%= linkStart %>Leslie<%= linkEnd %>", "seasonalShopClosedTitle": "<%= linkStart %>Leslie<%= linkEnd %>",
"seasonalShopTitle": "<%= linkStart %>Seasonal Sorceress<%= linkEnd %>", "seasonalShopTitle": "<%= linkStart %>Seasonal Sorceress<%= linkEnd %>",
"seasonalShopClosedText": "The Seasonal Shop is currently closed!! Its only open during Habiticas four Grand Galas.", "seasonalShopClosedText": "The Seasonal Shop is currently closed!! Its only open during Habiticas four Grand Galas.",
"seasonalShopSummerText": "Happy Summer Splash!! Would you like to buy some rare items? Be sure to get them before the Gala ends!", "seasonalShopSummerText": "Happy Summer Splash!! Would you like to buy some rare items? Be sure to get them before the Gala ends!",
"seasonalShopFallText": "Happy Fall Festival!! Would you like to buy some rare items? Be sure to get them before the Gala ends!", "seasonalShopFallText": "Happy Fall Festival!! Would you like to buy some rare items? Be sure to get them before the Gala ends!",
"seasonalShopWinterText": "Happy Winter Wonderland!! Would you like to buy some rare items? Be sure to get them before the Gala ends!", "seasonalShopWinterText": "Happy Winter Wonderland!! Would you like to buy some rare items? Be sure to get them before the Gala ends!",
"seasonalShopSpringText": "Happy Spring Fling!! Would you like to buy some rare items? Be sure to get them before the Gala ends!", "seasonalShopSpringText": "Happy Spring Fling!! Would you like to buy some rare items? Be sure to get them before the Gala ends!",
"seasonalShopFallTextBroken": "Oh.... Welcome to the Seasonal Shop... We're stocking autumn Seasonal Edition goodies, or something... Everything here will be available to purchase during the Fall Festival event each year, but we're only open until October 31... I guess you should to stock up now, or you'll have to wait... and wait... and wait... <strong>*sigh*</strong>", "seasonalShopFallTextBroken": "Oh.... Welcome to the Seasonal Shop... We're stocking autumn Seasonal Edition goodies, or something... Everything here will be available to purchase during the Fall Festival event each year, but we're only open until October 31... I guess you should to stock up now, or you'll have to wait... and wait... and wait... <strong>*sigh*</strong>",
"seasonalShopBrokenText": "My pavilion!!!!!!! My decorations!!!! Oh, the Dysheartener's destroyed everything :( Please help defeat it in the Tavern so I can rebuild!", "seasonalShopBrokenText": "My pavilion!!!!!!! My decorations!!!! Oh, the Dysheartener's destroyed everything :( Please help defeat it in the Tavern so I can rebuild!",
"seasonalShopRebirth": "If you bought any of this equipment in the past but don't currently own it, you can repurchase it in the Rewards Column. Initially, you'll only be able to purchase the items for your current class (Warrior by default), but fear not, the other class-specific items will become available if you switch to that class.", "seasonalShopRebirth": "If you bought any of this equipment in the past but don't currently own it, you can repurchase it in the Rewards Column. Initially, you'll only be able to purchase the items for your current class (Warrior by default), but fear not, the other class-specific items will become available if you switch to that class.",
"candycaneSet": "Candy Cane (Mage)", "candycaneSet": "Candy Cane (Mage)",
"skiSet": "Ski-sassin (Rogue)", "skiSet": "Ski-sassin (Rogue)",
"snowflakeSet": "Snowflake (Healer)", "snowflakeSet": "Snowflake (Healer)",
"yetiSet": "Yeti Tamer (Warrior)", "yetiSet": "Yeti Tamer (Warrior)",
"northMageSet": "Mage of the North (Mage)", "northMageSet": "Mage of the North (Mage)",
"icicleDrakeSet": "Icicle Drake (Rogue)", "icicleDrakeSet": "Icicle Drake (Rogue)",
"soothingSkaterSet": "Soothing Skater (Healer)", "soothingSkaterSet": "Soothing Skater (Healer)",
"gingerbreadSet": "Gingerbread (Warrior)", "gingerbreadSet": "Gingerbread (Warrior)",
"snowDaySet": "Snow Day (Warrior)", "snowDaySet": "Snow Day (Warrior)",
"snowboardingSet": "Snowboarding Sorcerer (Mage)", "snowboardingSet": "Snowboarding Sorcerer (Mage)",
"festiveFairySet": "Festive Fairy (Healer)", "festiveFairySet": "Festive Fairy (Healer)",
"cocoaSet": "Cocoa (Rogue)", "cocoaSet": "Cocoa (Rogue)",
"toAndFromCard": "To: <%= toName %>, From: <%= fromName %>", "toAndFromCard": "To: <%= toName %>, From: <%= fromName %>",
"nyeCard": "New Year's Card", "nyeCard": "New Year's Card",
"nyeCardExplanation": "For celebrating the new year together, you both receive the \"Auld Acquaintance\" badge!", "nyeCardExplanation": "For celebrating the new year together, you both receive the \"Auld Acquaintance\" badge!",
"nyeCardNotes": "Send a New Year's card to a party member.", "nyeCardNotes": "Send a New Year's card to a party member.",
"seasonalItems": "Seasonal Items", "seasonalItems": "Seasonal Items",
"nyeCardAchievementTitle": "Auld Acquaintance", "nyeCardAchievementTitle": "Auld Acquaintance",
"nyeCardAchievementText": "Happy New Year! Sent or received <%= count %> New Year's cards.", "nyeCardAchievementText": "Happy New Year! Sent or received <%= count %> New Year's cards.",
"nye0": "Happy New Year! May you slay many a bad Habit.", "nye0": "Happy New Year! May you slay many a bad Habit.",
"nye1": "Happy New Year! May you reap many Rewards.", "nye1": "Happy New Year! May you reap many Rewards.",
"nye2": "Happy New Year! May you earn many a Perfect Day.", "nye2": "Happy New Year! May you earn many a Perfect Day.",
"nye3": "Happy New Year! May your To Do list stay short and sweet.", "nye3": "Happy New Year! May your To Do list stay short and sweet.",
"nye4": "Happy New Year! May you not get attacked by a raging Hippogriff.", "nye4": "Happy New Year! May you not get attacked by a raging Hippogriff.",
"mightyBunnySet": "Mighty Bunny (Warrior)", "mightyBunnySet": "Mighty Bunny (Warrior)",
"magicMouseSet": "Magic Mouse (Mage)", "magicMouseSet": "Magic Mouse (Mage)",
"lovingPupSet": "Loving Pup (Healer)", "lovingPupSet": "Loving Pup (Healer)",
"stealthyKittySet": "Stealthy Kitty (Rogue)", "stealthyKittySet": "Stealthy Kitty (Rogue)",
"daringSwashbucklerSet": "Daring Swashbuckler (Warrior)", "daringSwashbucklerSet": "Daring Swashbuckler (Warrior)",
"emeraldMermageSet": "Emerald Mermage (Mage)", "emeraldMermageSet": "Emerald Mermage (Mage)",
"reefSeahealerSet": "Reef Seahealer (Healer)", "reefSeahealerSet": "Reef Seahealer (Healer)",
"roguishPirateSet": "Roguish Pirate (Rogue)", "roguishPirateSet": "Roguish Pirate (Rogue)",
"monsterOfScienceSet": "Monster of Science (Warrior)", "monsterOfScienceSet": "Monster of Science (Warrior)",
"witchyWizardSet": "Witchy Wizard (Mage)", "witchyWizardSet": "Witchy Wizard (Mage)",
"mummyMedicSet": "Mummy Medic (Healer)", "mummyMedicSet": "Mummy Medic (Healer)",
"vampireSmiterSet": "Vampire Smiter (Rogue)", "vampireSmiterSet": "Vampire Smiter (Rogue)",
"bewareDogSet": "Beware Dog (Warrior)", "bewareDogSet": "Beware Dog (Warrior)",
"magicianBunnySet": "Magician's Bunny (Mage)", "magicianBunnySet": "Magician's Bunny (Mage)",
"comfortingKittySet": "Comforting Kitty (Healer)", "comfortingKittySet": "Comforting Kitty (Healer)",
"sneakySqueakerSet": "Sneaky Squeaker (Rogue)", "sneakySqueakerSet": "Sneaky Squeaker (Rogue)",
"sunfishWarriorSet": "Sunfish (Warrior)", "sunfishWarriorSet": "Sunfish (Warrior)",
"shipSoothsayerSet": "Ship Soothsayer (Mage)", "shipSoothsayerSet": "Ship Soothsayer (Mage)",
"strappingSailorSet": "Strapping Sailor (Healer)", "strappingSailorSet": "Strapping Sailor (Healer)",
"reefRenegadeSet": "Reef Renegade (Rogue)", "reefRenegadeSet": "Reef Renegade (Rogue)",
"scarecrowWarriorSet": "Scarecrow (Warrior)", "scarecrowWarriorSet": "Scarecrow (Warrior)",
"stitchWitchSet": "Stitch Witch (Mage)", "stitchWitchSet": "Stitch Witch (Mage)",
"potionerSet": "Potioner (Healer)", "potionerSet": "Potioner (Healer)",
"battleRogueSet": "Bat-tle (Rogue)", "battleRogueSet": "Bat-tle (Rogue)",
"springingBunnySet": "Springing Bunny (Healer)", "springingBunnySet": "Springing Bunny (Healer)",
"grandMalkinSet": "Grand Malkin (Mage)", "grandMalkinSet": "Grand Malkin (Mage)",
"cleverDogSet": "Clever Dog (Rogue)", "cleverDogSet": "Clever Dog (Rogue)",
"braveMouseSet": "Brave Mouse (Warrior)", "braveMouseSet": "Brave Mouse (Warrior)",
"summer2016SharkWarriorSet": "Shark (Warrior)", "summer2016SharkWarriorSet": "Shark (Warrior)",
"summer2016DolphinMageSet": "Dolphin (Mage)", "summer2016DolphinMageSet": "Dolphin (Mage)",
"summer2016SeahorseHealerSet": "Seahorse (Healer)", "summer2016SeahorseHealerSet": "Seahorse (Healer)",
"summer2016EelSet": "Eel (Rogue)", "summer2016EelSet": "Eel (Rogue)",
"fall2016SwampThingSet": "Swamp Thing (Warrior)", "fall2016SwampThingSet": "Swamp Thing (Warrior)",
"fall2016WickedSorcererSet": "Wicked Sorcerer (Mage)", "fall2016WickedSorcererSet": "Wicked Sorcerer (Mage)",
"fall2016GorgonHealerSet": "Gorgon (Healer)", "fall2016GorgonHealerSet": "Gorgon (Healer)",
"fall2016BlackWidowSet": "Black Widow (Rogue)", "fall2016BlackWidowSet": "Black Widow (Rogue)",
"winter2017IceHockeySet": "Ice Hockey (Warrior)", "winter2017IceHockeySet": "Ice Hockey (Warrior)",
"winter2017WinterWolfSet": "Winter Wolf (Mage)", "winter2017WinterWolfSet": "Winter Wolf (Mage)",
"winter2017SugarPlumSet": "Sugar Plum (Healer)", "winter2017SugarPlumSet": "Sugar Plum (Healer)",
"winter2017FrostyRogueSet": "Frosty (Rogue)", "winter2017FrostyRogueSet": "Frosty (Rogue)",
"spring2017FelineWarriorSet": "Feline (Warrior)", "spring2017FelineWarriorSet": "Feline (Warrior)",
"spring2017CanineConjurorSet": "Canine Conjuror (Mage)", "spring2017CanineConjurorSet": "Canine Conjuror (Mage)",
"spring2017FloralMouseSet": "Floral Mouse (Healer)", "spring2017FloralMouseSet": "Floral Mouse (Healer)",
"spring2017SneakyBunnySet": "Sneaky Bunny (Rogue)", "spring2017SneakyBunnySet": "Sneaky Bunny (Rogue)",
"summer2017SandcastleWarriorSet": "Sandcastle (Warrior)", "summer2017SandcastleWarriorSet": "Sandcastle (Warrior)",
"summer2017WhirlpoolMageSet": "Whirlpool (Mage)", "summer2017WhirlpoolMageSet": "Whirlpool (Mage)",
"summer2017SeashellSeahealerSet": "Seashell Seahealer (Healer)", "summer2017SeashellSeahealerSet": "Seashell Seahealer (Healer)",
"summer2017SeaDragonSet": "Sea Dragon (Rogue)", "summer2017SeaDragonSet": "Sea Dragon (Rogue)",
"fall2017HabitoweenSet": "Habitoween (Warrior)", "fall2017HabitoweenSet": "Habitoween (Warrior)",
"fall2017MasqueradeSet": "Masquerade (Mage)", "fall2017MasqueradeSet": "Masquerade (Mage)",
"fall2017HauntedHouseSet": "Haunted House (Healer)", "fall2017HauntedHouseSet": "Haunted House (Healer)",
"fall2017TrickOrTreatSet": "Trick or Treat (Rogue)", "fall2017TrickOrTreatSet": "Trick or Treat (Rogue)",
"winter2018ConfettiSet": "Confetti (Mage)", "winter2018ConfettiSet": "Confetti (Mage)",
"winter2018GiftWrappedSet": "Gift-Wrapped (Warrior)", "winter2018GiftWrappedSet": "Gift-Wrapped (Warrior)",
"winter2018MistletoeSet": "Mistletoe (Healer)", "winter2018MistletoeSet": "Mistletoe (Healer)",
"winter2018ReindeerSet": "Reindeer (Rogue)", "winter2018ReindeerSet": "Reindeer (Rogue)",
"spring2018SunriseWarriorSet": "Sunrise (Warrior)", "spring2018SunriseWarriorSet": "Sunrise (Warrior)",
"spring2018TulipMageSet": "Tulip (Mage)", "spring2018TulipMageSet": "Tulip (Mage)",
"spring2018GarnetHealerSet": "Garnet (Healer)", "spring2018GarnetHealerSet": "Garnet (Healer)",
"spring2018DucklingRogueSet": "Duckling (Rogue)", "spring2018DucklingRogueSet": "Duckling (Rogue)",
"summer2018BettaFishWarriorSet": "Betta Fish (Warrior)", "summer2018BettaFishWarriorSet": "Betta Fish (Warrior)",
"summer2018LionfishMageSet": "Lionfish (Mage)", "summer2018LionfishMageSet": "Lionfish (Mage)",
"summer2018MerfolkMonarchSet": "Merfolk Monarch (Healer)", "summer2018MerfolkMonarchSet": "Merfolk Monarch (Healer)",
"summer2018FisherRogueSet": "Fisher-Rogue (Rogue)", "summer2018FisherRogueSet": "Fisher-Rogue (Rogue)",
"fall2018MinotaurWarriorSet": "Minotaur (Warrior)", "fall2018MinotaurWarriorSet": "Minotaur (Warrior)",
"fall2018CandymancerMageSet": "Candymancer (Mage)", "fall2018CandymancerMageSet": "Candymancer (Mage)",
"fall2018CarnivorousPlantSet": "Carnivorous Plant (Healer)", "fall2018CarnivorousPlantSet": "Carnivorous Plant (Healer)",
"fall2018AlterEgoSet": "Alter Ego (Rogue)", "fall2018AlterEgoSet": "Alter Ego (Rogue)",
"winter2019BlizzardSet": "Blizzard (Warrior)", "winter2019BlizzardSet": "Blizzard (Warrior)",
"winter2019PyrotechnicSet": "Pyrotechnic (Mage)", "winter2019PyrotechnicSet": "Pyrotechnic (Mage)",
"winter2019WinterStarSet": "Winter Star (Healer)", "winter2019WinterStarSet": "Winter Star (Healer)",
"winter2019PoinsettiaSet": "Poinsettia (Rogue)", "winter2019PoinsettiaSet": "Poinsettia (Rogue)",
"spring2019OrchidWarriorSet": "Orchid (Warrior)", "spring2019OrchidWarriorSet": "Orchid (Warrior)",
"spring2019AmberMageSet": "Amber (Mage)", "spring2019AmberMageSet": "Amber (Mage)",
"spring2019RobinHealerSet": "Robin (Healer)", "spring2019RobinHealerSet": "Robin (Healer)",
"spring2019CloudRogueSet": "Cloud (Rogue)", "spring2019CloudRogueSet": "Cloud (Rogue)",
"summer2019SeaTurtleWarriorSet": "Sea Turtle (Warrior)", "summer2019SeaTurtleWarriorSet": "Sea Turtle (Warrior)",
"summer2019WaterLilyMageSet": "Water Lily (Mage)", "summer2019WaterLilyMageSet": "Water Lily (Mage)",
"summer2019ConchHealerSet": "Conch (Healer)", "summer2019ConchHealerSet": "Conch (Healer)",
"summer2019HammerheadRogueSet": "Hammerhead (Rogue)", "summer2019HammerheadRogueSet": "Hammerhead (Rogue)",
"fall2019OperaticSpecterSet": "Operatic Specter (Rogue)", "fall2019OperaticSpecterSet": "Operatic Specter (Rogue)",
"fall2019CyclopsSet": "Cyclops (Mage)", "fall2019CyclopsSet": "Cyclops (Mage)",
"fall2019LichSet": "Lich (Healer)", "fall2019LichSet": "Lich (Healer)",
"fall2019RavenSet": "Raven (Warrior)", "fall2019RavenSet": "Raven (Warrior)",
"winter2020EvergreenSet": "Evergreen (Warrior)", "winter2020EvergreenSet": "Evergreen (Warrior)",
"winter2020CarolOfTheMageSet": "Carol of the Mage (Mage)", "winter2020CarolOfTheMageSet": "Carol of the Mage (Mage)",
"winter2020WinterSpiceSet": "Winter Spice (Healer)", "winter2020WinterSpiceSet": "Winter Spice (Healer)",
"winter2020LanternSet": "Lantern (Rogue)", "winter2020LanternSet": "Lantern (Rogue)",
"spring2020BeetleWarriorSet": "Rhinoceros Beetle (Warrior)", "spring2020BeetleWarriorSet": "Rhinoceros Beetle (Warrior)",
"spring2020PuddleMageSet": "Puddle (Mage)", "spring2020PuddleMageSet": "Puddle (Mage)",
"spring2020IrisHealerSet": "Iris (Healer)", "spring2020IrisHealerSet": "Iris (Healer)",
"spring2020LapisLazuliRogueSet": "Lapis Lazuli (Rogue)", "spring2020LapisLazuliRogueSet": "Lapis Lazuli (Rogue)",
"summer2020RainbowTroutWarriorSet": "Rainbow Trout (Warrior)", "summer2020RainbowTroutWarriorSet": "Rainbow Trout (Warrior)",
"summer2020OarfishMageSet": "Oarfish (Mage)", "summer2020OarfishMageSet": "Oarfish (Mage)",
"summer2020SeaGlassHealerSet": "Sea Glass (Healer)", "summer2020SeaGlassHealerSet": "Sea Glass (Healer)",
"summer2020CrocodileRogueSet": "Crocodile (Rogue)", "summer2020CrocodileRogueSet": "Crocodile (Rogue)",
"fall2020WraithWarriorSet": "Wraith (Warrior)", "fall2020WraithWarriorSet": "Wraith (Warrior)",
"fall2020DeathsHeadMothHealerSet": "Death's Head Moth (Healer)", "fall2020DeathsHeadMothHealerSet": "Death's Head Moth (Healer)",
"fall2020ThirdEyeMageSet": "Third Eye (Mage)", "fall2020ThirdEyeMageSet": "Third Eye (Mage)",
"fall2020TwoHeadedRogueSet": "Two-Headed (Rogue)", "fall2020TwoHeadedRogueSet": "Two-Headed (Rogue)",
"winter2021IceFishingWarriorSet": "Ice Fisher (Warrior)", "winter2021IceFishingWarriorSet": "Ice Fisher (Warrior)",
"winter2021WinterMoonMageSet": "Winter Moon (Mage)", "winter2021WinterMoonMageSet": "Winter Moon (Mage)",
"winter2021ArcticExplorerHealerSet": "Arctic Explorer (Healer)", "winter2021ArcticExplorerHealerSet": "Arctic Explorer (Healer)",
"winter2021HollyIvyRogueSet": "Holly and Ivy (Rogue)", "winter2021HollyIvyRogueSet": "Holly and Ivy (Rogue)",
"spring2021SunstoneWarriorSet": "Sunstone (Warrior)", "spring2021SunstoneWarriorSet": "Sunstone (Warrior)",
"spring2021SwanMageSet": "Swan (Mage)", "spring2021SwanMageSet": "Swan (Mage)",
"spring2021WillowHealerSet": "Willow (Healer)", "spring2021WillowHealerSet": "Willow (Healer)",
"spring2021TwinFlowerRogueSet": "Twin Flower (Rogue)", "spring2021TwinFlowerRogueSet": "Twin Flower (Rogue)",
"summer2021FlyingFishWarriorSet": "Flying Fish (Warrior)", "summer2021FlyingFishWarriorSet": "Flying Fish (Warrior)",
"summer2021NautilusMageSet": "Nautilus (Mage)", "summer2021NautilusMageSet": "Nautilus (Mage)",
"summer2021ParrotHealerSet": "Parrot (Healer)", "summer2021ParrotHealerSet": "Parrot (Healer)",
"summer2021ClownfishRogueSet": "Clownfish (Rogue)", "summer2021ClownfishRogueSet": "Clownfish (Rogue)",
"fall2021OozeRogueSet": "Ooze (Rogue)", "fall2021OozeRogueSet": "Ooze (Rogue)",
"fall2021HeadlessWarriorSet": "Headless (Warrior)", "fall2021HeadlessWarriorSet": "Headless (Warrior)",
"fall2021BrainEaterMageSet": "Brain Eater (Mage)", "fall2021BrainEaterMageSet": "Brain Eater (Mage)",
"fall2021FlameSummonerHealerSet": "Flame Summoner (Healer)", "fall2021FlameSummonerHealerSet": "Flame Summoner (Healer)",
"winter2022FireworksRogueSet": "Fireworks (Rogue)", "winter2022FireworksRogueSet": "Fireworks (Rogue)",
"winter2022StockingWarriorSet": "Stocking (Warrior)", "winter2022StockingWarriorSet": "Stocking (Warrior)",
"winter2022PomegranateMageSet": "Pomegranate (Mage)", "winter2022PomegranateMageSet": "Pomegranate (Mage)",
"winter2022IceCrystalHealerSet": "Ice Crystal (Healer)", "winter2022IceCrystalHealerSet": "Ice Crystal (Healer)",
"eventAvailability": "Available for purchase until <%= date(locale) %>.", "eventAvailability": "Available for purchase until <%= date(locale) %>.",
"eventAvailabilityReturning": "Available for purchase until <%= availableDate(locale) %>. This potion was last available in <%= previousDate(locale) %>.", "eventAvailabilityReturning": "Available for purchase until <%= availableDate(locale) %>. This potion was last available in <%= previousDate(locale) %>.",
"dateEndMarch": "April 30", "dateEndMarch": "April 30",
"dateEndApril": "April 19", "dateEndApril": "April 19",
"dateEndMay": "May 31", "dateEndMay": "May 31",
"dateEndJune": "June 14", "dateEndJune": "June 14",
"augustYYYY": "August <%= year %>", "augustYYYY": "August <%= year %>",
"septemberYYYY": "September <%= year %>", "septemberYYYY": "September <%= year %>",
"decemberYYYY": "December <%= year %>", "decemberYYYY": "December <%= year %>",
"marchYYYY": "March <%= year %>", "marchYYYY": "March <%= year %>",
"mayYYYY": "May <%= year %>", "mayYYYY": "May <%= year %>",
"juneYYYY": "June <%= year %>", "juneYYYY": "June <%= year %>",
"novemberYYYY": "November <%= year %>", "novemberYYYY": "November <%= year %>",
"januaryYYYY": "January <%= year %>", "januaryYYYY": "January <%= year %>",
"dateEndJuly": "July 31", "dateEndJuly": "July 31",
"dateEndAugust": "August 31", "dateEndAugust": "August 31",
"dateEndSeptember": "September 21", "dateEndSeptember": "September 21",
"dateEndOctober": "October 31", "dateEndOctober": "October 31",
"dateEndNovember": "November 30", "dateEndNovember": "November 30",
"dateEndJanuary": "January 31", "dateEndJanuary": "January 31",
"dateEndFebruary": "February 29", "dateEndFebruary": "February 28",
"winterPromoGiftHeader": "GIFT A SUBSCRIPTION, GET ONE FREE!", "winterPromoGiftHeader": "GIFT A SUBSCRIPTION, GET ONE FREE!",
"winterPromoGiftDetails1": "Until January 6th only, when you gift somebody a subscription, you get the same subscription for yourself for free!", "winterPromoGiftDetails1": "Until January 6th only, when you gift somebody a subscription, you get the same subscription for yourself for free!",
"winterPromoGiftDetails2": "Please note that if you or your gift recipient already have a recurring subscription, the gifted subscription will only start after that subscription is cancelled or has expired. Thanks so much for your support! <3", "winterPromoGiftDetails2": "Please note that if you or your gift recipient already have a recurring subscription, the gifted subscription will only start after that subscription is cancelled or has expired. Thanks so much for your support! <3",
"discountBundle": "bundle", "discountBundle": "bundle",
"g1g1Announcement": "<strong>Gift a subscription and get a subscription free</strong> event going on now!", "g1g1Announcement": "<strong>Gift a subscription and get a subscription free</strong> event going on now!",
"g1g1Details": "Gift a subscription to a friend, and you'll receive the same subscription for free!", "g1g1Details": "Gift a subscription to a friend, and you'll receive the same subscription for free!",
"g1g1": "Gift One, Get One", "g1g1": "Gift One, Get One",
"g1g1Event": "Gift One, Get One event going on now!", "g1g1Event": "Gift One, Get One event going on now!",
"g1g1Returning": "In honor of the season, were bringing back a very special promotion. Now when you gift a subscription, youll receive the same in return!", "g1g1Returning": "In honor of the season, were bringing back a very special promotion. Now when you gift a subscription, youll receive the same in return!",
"howItWorks": "How it Works", "howItWorks": "How it Works",
"g1g1HowItWorks": "Type in the username of the account youd like to gift to. From there, pick the sub length youd like to gift and check out. Your account will automatically be rewarded with the same level of subscription you just gifted.", "g1g1HowItWorks": "Type in the username of the account youd like to gift to. From there, pick the sub length youd like to gift and check out. Your account will automatically be rewarded with the same level of subscription you just gifted.",
"limitations": "Limitations", "limitations": "Limitations",
"g1g1Limitations": "This is a limited time event that starts on December 16th at 8:00 AM ET (13:00 UTC) and will end January 6th at 8:00 PM ET (1:00 UTC). This promotion only applies when you gift to another Habitican. If you or your gift recipient already have a subscription, the gifted subscription will add months of credit that will only be used after the current subscription is canceled or expires.", "g1g1Limitations": "This is a limited time event that starts on December 16th at 8:00 AM ET (13:00 UTC) and will end January 6th at 8:00 PM ET (1:00 UTC). This promotion only applies when you gift to another Habitican. If you or your gift recipient already have a subscription, the gifted subscription will add months of credit that will only be used after the current subscription is canceled or expires.",
"noLongerAvailable": "This item is no longer available." "noLongerAvailable": "This item is no longer available."
} }

View File

@@ -83,7 +83,6 @@
"invalidQuantity": "Quantity to purchase must be a positive whole number.", "invalidQuantity": "Quantity to purchase must be a positive whole number.",
"USD": "(USD)", "USD": "(USD)",
"newStuff": "New Stuff by Bailey", "newStuff": "New Stuff by Bailey",
"newStuffPostedOn": "Posted on <%= publishDate %>, <%= publishTime %>",
"newBaileyUpdate": "New Bailey Update!", "newBaileyUpdate": "New Bailey Update!",
"tellMeLater": "Tell Me Later", "tellMeLater": "Tell Me Later",
"dismissAlert": "Dismiss This Alert", "dismissAlert": "Dismiss This Alert",

View File

@@ -10,11 +10,17 @@ const gemsPromo = {
export const EVENTS = { export const EVENTS = {
noCurrentEvent: { noCurrentEvent: {
start: '2022-01-31T20:00-05:00', start: '2022-02-18T20:00-05:00',
end: '2022-02-28T20:00-05:00', end: '2022-03-31T20:00-05:00',
season: 'normal', season: 'normal',
npcImageSuffix: '', npcImageSuffix: '',
}, },
valentines2022: {
start: '2022-02-14T08:00-05:00',
end: '2022-02-18T20:00-05:00',
season: 'valentines',
npcImageSuffix: 'valentines',
},
winter2022: { winter2022: {
start: '2021-12-21T08:00-05:00', start: '2021-12-21T08:00-05:00',
end: '2022-01-31T20:00-05:00', end: '2022-01-31T20:00-05:00',
@@ -93,12 +99,6 @@ export const EVENTS = {
end: '2021-04-02T08:00-05:00', end: '2021-04-02T08:00-05:00',
aprilFools: 'invert', aprilFools: 'invert',
}, },
valentines2021: {
start: '2021-02-07T08:00-05:00',
end: '2021-02-16T08:00-05:00',
season: 'valentines',
npcImageSuffix: 'valentines',
},
winter2021: { winter2021: {
start: '2020-12-17T08:00-05:00', start: '2020-12-17T08:00-05:00',
end: '2021-01-31T20:00-05:00', end: '2021-01-31T20:00-05:00',
@@ -106,13 +106,14 @@ export const EVENTS = {
npcImageSuffix: 'winter', npcImageSuffix: 'winter',
gear: true, gear: true,
}, },
winter2021Promo: { // used in tests, not an actual past event winter2021Promo: {
// used in tests, not an actual past event
start: '2020-12-01T08:00-05:00', start: '2020-12-01T08:00-05:00',
end: '2020-12-17T20:00-05:00', end: '2020-12-17T20:00-05:00',
season: 'winter', season: 'winter',
promo: 'g1g1', promo: 'g1g1',
}, },
fall2020: { fall2020: {
start: '2020-09-22T08:00-04:00', start: '2020-09-22T08:00-04:00',
end: '2020-10-31T20:00-04:00', end: '2020-10-31T20:00-04:00',
gear: true, gear: true,
@@ -123,30 +124,30 @@ export const EVENTS = {
summer2020: { start: '2020-06-18', end: '2020-08-02', gear: true }, summer2020: { start: '2020-06-18', end: '2020-08-02', gear: true },
spring2020: { start: '2020-03-17', end: '2020-05-02', gear: true }, spring2020: { start: '2020-03-17', end: '2020-05-02', gear: true },
winter2020: { start: '2019-12-19', end: '2020-02-02', gear: true }, winter2020: { start: '2019-12-19', end: '2020-02-02', gear: true },
fall2019: { start: '2019-09-24', end: '2019-11-02', gear: true }, fall2019: { start: '2019-09-24', end: '2019-11-02', gear: true },
summer2019: { start: '2019-06-18', end: '2019-08-02', gear: true }, summer2019: { start: '2019-06-18', end: '2019-08-02', gear: true },
spring2019: { start: '2019-03-19', end: '2019-05-02', gear: true }, spring2019: { start: '2019-03-19', end: '2019-05-02', gear: true },
winter2019: { start: '2018-12-19', end: '2019-02-02', gear: true }, winter2019: { start: '2018-12-19', end: '2019-02-02', gear: true },
fall2018: { start: '2018-09-20', end: '2018-11-02', gear: true }, fall2018: { start: '2018-09-20', end: '2018-11-02', gear: true },
summer2018: { start: '2018-06-19', end: '2018-08-02', gear: true }, summer2018: { start: '2018-06-19', end: '2018-08-02', gear: true },
spring2018: { start: '2018-03-20', end: '2018-05-02', gear: true }, spring2018: { start: '2018-03-20', end: '2018-05-02', gear: true },
winter2018: { start: '2017-12-19', end: '2018-02-02', gear: true }, winter2018: { start: '2017-12-19', end: '2018-02-02', gear: true },
fall2017: { start: '2017-09-21', end: '2017-11-02', gear: true }, fall2017: { start: '2017-09-21', end: '2017-11-02', gear: true },
summer2017: { start: '2017-06-20', end: '2017-08-02', gear: true }, summer2017: { start: '2017-06-20', end: '2017-08-02', gear: true },
spring2017: { start: '2017-03-21', end: '2017-05-02', gear: true }, spring2017: { start: '2017-03-21', end: '2017-05-02', gear: true },
winter2017: { start: '2016-12-16', end: '2017-02-02', gear: true }, winter2017: { start: '2016-12-16', end: '2017-02-02', gear: true },
fall2016: { start: '2016-09-20', end: '2016-11-02', gear: true }, fall2016: { start: '2016-09-20', end: '2016-11-02', gear: true },
summer2016: { start: '2016-06-21', end: '2016-08-02', gear: true }, summer2016: { start: '2016-06-21', end: '2016-08-02', gear: true },
spring2016: { start: '2016-03-18', end: '2016-05-02', gear: true }, spring2016: { start: '2016-03-18', end: '2016-05-02', gear: true },
winter2016: { start: '2015-12-18', end: '2016-02-02', gear: true }, winter2016: { start: '2015-12-18', end: '2016-02-02', gear: true },
gaymerx: { start: '2016-09-29', end: '2016-10-03' }, gaymerx: { start: '2016-09-29', end: '2016-10-03' },
fall2015: { start: '2015-09-21', end: '2015-11-01', gear: true }, fall2015: { start: '2015-09-21', end: '2015-11-01', gear: true },
summer2015: { start: '2015-06-20', end: '2015-08-02', gear: true }, summer2015: { start: '2015-06-20', end: '2015-08-02', gear: true },
spring2015: { start: '2015-03-20', end: '2015-05-02', gear: true }, spring2015: { start: '2015-03-20', end: '2015-05-02', gear: true },
winter2015: { start: '2014-12-21', end: '2015-02-02', gear: true }, winter2015: { start: '2014-12-21', end: '2015-02-02', gear: true },
fall: { start: '2014-09-21', end: '2014-11-01', gear: true }, fall: { start: '2014-09-21', end: '2014-11-01', gear: true },
summer: { start: '2014-06-20', end: '2014-08-01', gear: true }, summer: { start: '2014-06-20', end: '2014-08-01', gear: true },
spring: { start: '2014-03-21', end: '2014-05-01', gear: true }, spring: { start: '2014-03-21', end: '2014-05-01', gear: true },
birthday: { start: '2017-01-31', end: '2017-02-02' }, birthday: { start: '2017-01-31', end: '2017-02-02' },
winter: { start: '2013-12-31', end: '2014-02-01' }, winter: { start: '2013-12-31', end: '2014-02-01' },
}; };

View File

@@ -3,13 +3,10 @@ import defaults from 'lodash/defaults';
import each from 'lodash/each'; import each from 'lodash/each';
import moment from 'moment'; import moment from 'moment';
import t from './translation'; import t from './translation';
import { import { EVENTS } from './constants';
EVENTS,
} from './constants';
function hasQuestAchievementFunction (key) { function hasQuestAchievementFunction (key) {
return user => user.achievements.quests return user => user.achievements.quests && user.achievements.quests[key] > 0;
&& user.achievements.quests[key] > 0;
} }
const drops = { const drops = {
@@ -66,7 +63,7 @@ const premium = {
text: t('hatchingPotionCupid'), text: t('hatchingPotionCupid'),
limited: true, limited: true,
canBuy () { canBuy () {
return moment().isBefore('2021-02-28T20:00-05:00'); return moment().isBefore('2022-02-28T20:00-05:00');
}, },
}, },
Shimmer: { Shimmer: {
@@ -280,7 +277,7 @@ const premium = {
text: t('hatchingPotionRoseQuartz'), text: t('hatchingPotionRoseQuartz'),
limited: true, limited: true,
canBuy () { canBuy () {
return moment().isBefore('2021-02-28T20:00-05:00'); return moment().isBefore('2022-02-28T20:00-05:00');
}, },
}, },
Celestial: { Celestial: {
@@ -588,9 +585,12 @@ each(wacky, (pot, key) => {
notes: t('hatchingPotionNotes', { notes: t('hatchingPotionNotes', {
potText: pot.text, potText: pot.text,
}), }),
_addlNotes: pot._season && pot._season !== '_PENDING_' ? t('eventAvailability', { _addlNotes:
date: t(`dateEnd${pot._season}`), pot._season && pot._season !== '_PENDING_'
}) : null, ? t('eventAvailability', {
date: t(`dateEnd${pot._season}`),
})
: null,
premium: false, premium: false,
limited: true, limited: true,
wacky: true, wacky: true,
@@ -603,8 +603,5 @@ each(wacky, (pot, key) => {
const all = assign({}, drops, premium, wacky); const all = assign({}, drops, premium, wacky);
export { export {
drops, drops, premium, wacky, all,
premium,
wacky,
all,
}; };

View File

@@ -20,11 +20,7 @@ import * as eggs from './eggs';
import * as hatchingPotions from './hatching-potions'; import * as hatchingPotions from './hatching-potions';
import * as stable from './stable'; import * as stable from './stable';
import gear from './gear'; import gear from './gear';
import { import { quests, questsByLevel, userCanOwnQuestCategories } from './quests';
quests,
questsByLevel,
userCanOwnQuestCategories,
} from './quests';
import appearances from './appearance'; import appearances from './appearance';
import { backgroundsTree, backgroundsFlat } from './appearance/backgrounds'; import { backgroundsTree, backgroundsFlat } from './appearance/backgrounds';
@@ -57,7 +53,23 @@ api.spells = spells;
api.subscriptionBlocks = subscriptionBlocks; api.subscriptionBlocks = subscriptionBlocks;
api.gems = gemsBlock; api.gems = gemsBlock;
api.audioThemes = ['danielTheBard', 'gokulTheme', 'luneFoxTheme', 'wattsTheme', 'rosstavoTheme', 'dewinTheme', 'airuTheme', 'beatscribeNesTheme', 'arashiTheme', 'maflTheme', 'pizildenTheme', 'farvoidTheme', 'spacePenguinTheme', 'lunasolTheme', 'triumphTheme']; api.audioThemes = [
'danielTheBard',
'gokulTheme',
'luneFoxTheme',
'wattsTheme',
'rosstavoTheme',
'dewinTheme',
'airuTheme',
'beatscribeNesTheme',
'arashiTheme',
'maflTheme',
'pizildenTheme',
'farvoidTheme',
'spacePenguinTheme',
'lunasolTheme',
'triumphTheme',
];
api.mystery = timeTravelers.mystery; api.mystery = timeTravelers.mystery;
api.timeTravelerStore = timeTravelers.timeTravelerStore; api.timeTravelerStore = timeTravelers.timeTravelerStore;
@@ -121,7 +133,7 @@ api.cardTypes = {
valentine: { valentine: {
key: 'valentine', key: 'valentine',
messageOptions: 4, messageOptions: 4,
yearRound: moment().isBefore('2021-02-28T20:00-05:00'), yearRound: moment().isBefore('2022-02-18T20:00-05:00'),
}, },
birthday: { birthday: {
key: 'birthday', key: 'birthday',
@@ -632,7 +644,8 @@ api.userDefaults = {
t('defaultTag4'), // School t('defaultTag4'), // School
t('defaultTag6'), // Chores t('defaultTag6'), // Chores
], ],
}, { },
{
type: 'habit', type: 'habit',
text: t('defaultHabit2Text'), text: t('defaultHabit2Text'),
value: 0, value: 0,
@@ -642,7 +655,8 @@ api.userDefaults = {
tags: [ tags: [
t('defaultTag3'), // Health + Wellness t('defaultTag3'), // Health + Wellness
], ],
}, { },
{
type: 'habit', type: 'habit',
text: t('defaultHabit3Text'), text: t('defaultHabit3Text'),
value: 0, value: 0,
@@ -675,17 +689,23 @@ api.userDefaults = {
tags: [ tags: [
{ {
name: t('defaultTag1'), name: t('defaultTag1'),
}, { },
{
name: t('defaultTag2'), name: t('defaultTag2'),
}, { },
{
name: t('defaultTag3'), name: t('defaultTag3'),
}, { },
{
name: t('defaultTag4'), name: t('defaultTag4'),
}, { },
{
name: t('defaultTag5'), name: t('defaultTag5'),
}, { },
{
name: t('defaultTag6'), name: t('defaultTag6'),
}, { },
{
name: t('defaultTag7'), name: t('defaultTag7'),
}, },
], ],

View File

@@ -4,7 +4,7 @@ import moment from 'moment';
// path: 'premiumHatchingPotions.Rainbow', // path: 'premiumHatchingPotions.Rainbow',
const featuredItems = { const featuredItems = {
market () { market () {
if (moment().isBefore('2022-01-31T20:00-05:00')) { if (moment().isBefore('2022-02-28T20:00-05:00')) {
return [ return [
{ {
type: 'armoire', type: 'armoire',
@@ -12,15 +12,15 @@ const featuredItems = {
}, },
{ {
type: 'premiumHatchingPotion', type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.StainedGlass', path: 'premiumHatchingPotions.Cupid',
}, },
{ {
type: 'premiumHatchingPotion', type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.Peppermint', path: 'premiumHatchingPotions.RoseQuartz',
}, },
{ {
type: 'premiumHatchingPotion', type: 'hatchingPotions',
path: 'premiumHatchingPotions.Holly', path: 'hatchingPotions.CottonCandyPink',
}, },
]; ];
} }

View File

@@ -22,7 +22,6 @@ import {
} from '../../libs/email'; } from '../../libs/email';
import * as inboxLib from '../../libs/inbox'; import * as inboxLib from '../../libs/inbox';
import * as userLib from '../../libs/user'; import * as userLib from '../../libs/user';
import logger from '../../libs/logger';
const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL'); const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL');
const DELETE_CONFIRMATION = 'DELETE'; const DELETE_CONFIRMATION = 'DELETE';
@@ -1014,7 +1013,6 @@ api.purchase = {
if (req.body.quantity) quantity = req.body.quantity; if (req.body.quantity) quantity = req.body.quantity;
req.quantity = quantity; req.quantity = quantity;
logger.info('AAAAHHHHHH');
const purchaseRes = await common.ops.buy(user, req, res.analytics); const purchaseRes = await common.ops.buy(user, req, res.analytics);
await user.save(); await user.save();
res.respond(200, ...purchaseRes); res.respond(200, ...purchaseRes);