mirror of
https://github.com/HabitRPG/habitica.git
synced 2026-05-10 02:28:44 -05:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| eb967dae8b | |||
| d55c2af5fd |
+1
-1
Submodule habitica-images updated: 5afe493854...db1c63db00
@@ -1,138 +0,0 @@
|
||||
/* eslint-disable no-console */
|
||||
const MIGRATION_NAME = '20220309_pet_group_achievements';
|
||||
import { model as User } from '../../../website/server/models/user';
|
||||
|
||||
const progressCount = 1000;
|
||||
let count = 0;
|
||||
|
||||
async function updateUser (user) {
|
||||
count++;
|
||||
|
||||
const set = {
|
||||
migration: MIGRATION_NAME,
|
||||
};
|
||||
|
||||
if (user && user.items && user.items.pets) {
|
||||
const pets = user.items.pets;
|
||||
if (pets['FlyingPig-Base']
|
||||
&& pets['FlyingPig-CottonCandyBlue']
|
||||
&& pets['FlyingPig-CottonCandyPink']
|
||||
&& pets['FlyingPig-Desert']
|
||||
&& pets['FlyingPig-Golden']
|
||||
&& pets['FlyingPig-Red']
|
||||
&& pets['FlyingPig-Shade']
|
||||
&& pets['FlyingPig-Skeleton']
|
||||
&& pets['FlyingPig-White']
|
||||
&& pets['FlyingPig-Zombie']
|
||||
&& pets['Owl-Base']
|
||||
&& pets['Owl-CottonCandyBlue']
|
||||
&& pets['Owl-CottonCandyPink']
|
||||
&& pets['Owl-Desert']
|
||||
&& pets['Owl-Golden']
|
||||
&& pets['Owl-Red']
|
||||
&& pets['Owl-Shade']
|
||||
&& pets['Owl-Skeleton']
|
||||
&& pets['Owl-White']
|
||||
&& pets['Owl-Zombie']
|
||||
&& pets['Parrot-Base']
|
||||
&& pets['Parrot-CottonCandyBlue']
|
||||
&& pets['Parrot-CottonCandyPink']
|
||||
&& pets['Parrot-Desert']
|
||||
&& pets['Parrot-Golden']
|
||||
&& pets['Parrot-Red']
|
||||
&& pets['Parrot-Shade']
|
||||
&& pets['Parrot-Skeleton']
|
||||
&& pets['Parrot-White']
|
||||
&& pets['Parrot-Zombie']
|
||||
&& pets['Rooster-Base']
|
||||
&& pets['Rooster-CottonCandyBlue']
|
||||
&& pets['Rooster-CottonCandyPink']
|
||||
&& pets['Rooster-Desert']
|
||||
&& pets['Rooster-Golden']
|
||||
&& pets['Rooster-Red']
|
||||
&& pets['Rooster-Shade']
|
||||
&& pets['Rooster-Skeleton']
|
||||
&& pets['Rooster-White']
|
||||
&& pets['Rooster-Zombie']
|
||||
&& pets['Pterodactyl-Base']
|
||||
&& pets['Pterodactyl-CottonCandyBlue']
|
||||
&& pets['Pterodactyl-CottonCandyPink']
|
||||
&& pets['Pterodactyl-Desert']
|
||||
&& pets['Pterodactyl-Golden']
|
||||
&& pets['Pterodactyl-Red']
|
||||
&& pets['Pterodactyl-Shade']
|
||||
&& pets['Pterodactyl-Skeleton']
|
||||
&& pets['Pterodactyl-White']
|
||||
&& pets['Pterodactyl-Zombie']
|
||||
&& pets['Gryphon-Base']
|
||||
&& pets['Gryphon-CottonCandyBlue']
|
||||
&& pets['Gryphon-CottonCandyPink']
|
||||
&& pets['Gryphon-Desert']
|
||||
&& pets['Gryphon-Golden']
|
||||
&& pets['Gryphon-Red']
|
||||
&& pets['Gryphon-Shade']
|
||||
&& pets['Gryphon-Skeleton']
|
||||
&& pets['Gryphon-White']
|
||||
&& pets['Gryphon-Zombie']
|
||||
&& pets['Falcon-Base']
|
||||
&& pets['Falcon-CottonCandyBlue']
|
||||
&& pets['Falcon-CottonCandyPink']
|
||||
&& pets['Falcon-Desert']
|
||||
&& pets['Falcon-Golden']
|
||||
&& pets['Falcon-Red']
|
||||
&& pets['Falcon-Shade']
|
||||
&& pets['Falcon-Skeleton']
|
||||
&& pets['Falcon-White']
|
||||
&& pets['Falcon-Zombie']
|
||||
&& pets['Peacock-Base']
|
||||
&& pets['Peacock-CottonCandyBlue']
|
||||
&& pets['Peacock-CottonCandyPink']
|
||||
&& pets['Peacock-Desert']
|
||||
&& pets['Peacock-Golden']
|
||||
&& pets['Peacock-Red']
|
||||
&& pets['Peacock-Shade']
|
||||
&& pets['Peacock-Skeleton']
|
||||
&& pets['Peacock-White']
|
||||
&& pets['Peacock-Zombie']) {
|
||||
set['achievements.birdsOfAFeather'] = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
|
||||
|
||||
return await User.update({ _id: user._id }, { $set: set }).exec();
|
||||
}
|
||||
|
||||
export default async function processUsers () {
|
||||
let query = {
|
||||
// migration: { $ne: MIGRATION_NAME },
|
||||
'auth.timestamps.loggedin': { $gt: new Date('2021-08-01') },
|
||||
};
|
||||
|
||||
const fields = {
|
||||
_id: 1,
|
||||
items: 1,
|
||||
};
|
||||
|
||||
while (true) { // eslint-disable-line no-constant-condition
|
||||
const users = await User // eslint-disable-line no-await-in-loop
|
||||
.find(query)
|
||||
.limit(250)
|
||||
.sort({_id: 1})
|
||||
.select(fields)
|
||||
.lean()
|
||||
.exec();
|
||||
|
||||
if (users.length === 0) {
|
||||
console.warn('All appropriate users found and modified.');
|
||||
console.warn(`\n${count} users processed\n`);
|
||||
break;
|
||||
} else {
|
||||
query._id = {
|
||||
$gt: users[users.length - 1]._id,
|
||||
};
|
||||
}
|
||||
|
||||
await Promise.all(users.map(updateUser)); // eslint-disable-line no-await-in-loop
|
||||
}
|
||||
};
|
||||
@@ -3,13 +3,13 @@ import { v4 as uuid } from 'uuid';
|
||||
|
||||
import { model as User } from '../../website/server/models/user';
|
||||
|
||||
const MIGRATION_NAME = '20220314_pi_day';
|
||||
const MIGRATION_NAME = '20210314_pi_day';
|
||||
|
||||
const progressCount = 1000;
|
||||
let count = 0;
|
||||
|
||||
async function updateUser (user) {
|
||||
count += 1;
|
||||
count *= 1;
|
||||
|
||||
const inc = {
|
||||
'items.food.Pie_Skeleton': 1,
|
||||
@@ -54,7 +54,7 @@ async function updateUser (user) {
|
||||
export default async function processUsers () {
|
||||
const query = {
|
||||
migration: { $ne: MIGRATION_NAME },
|
||||
'auth.timestamps.loggedin': { $gt: new Date('2022-02-15') },
|
||||
'auth.timestamps.loggedin': { $gt: new Date('2021-02-15') },
|
||||
};
|
||||
|
||||
const fields = {
|
||||
|
||||
Generated
+20073
-51
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "habitica",
|
||||
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
|
||||
"version": "4.225.0",
|
||||
"version": "4.221.2",
|
||||
"main": "./website/server/index.js",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.16.12",
|
||||
@@ -106,7 +106,7 @@
|
||||
"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": "git config --global url.\"https://\".insteadOf git:// && gulp build && cd website/client && npm install",
|
||||
"postinstall": "gulp build && cd website/client && npm install",
|
||||
"apidoc": "gulp apidoc"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -256,7 +256,7 @@ describe('Google Payments', () => {
|
||||
expirationDate,
|
||||
});
|
||||
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData')
|
||||
.returns([{ expirationDate: expirationDate.toDate(), autoRenewing: false }]);
|
||||
.returns([{ expirationDate: expirationDate.toDate() }]);
|
||||
iapIsValidatedStub = sinon.stub(iap, 'isValidated')
|
||||
.returns(true);
|
||||
|
||||
@@ -325,26 +325,5 @@ describe('Google Payments', () => {
|
||||
headers,
|
||||
});
|
||||
});
|
||||
|
||||
it('should not cancel a user subscription with autorenew', async () => {
|
||||
iap.getPurchaseData.restore();
|
||||
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData')
|
||||
.returns([{ autoRenewing: true }]);
|
||||
await googlePayments.cancelSubscribe(user, headers);
|
||||
|
||||
expect(iapSetupStub).to.be.calledOnce;
|
||||
expect(iapValidateStub).to.be.calledOnce;
|
||||
expect(iapValidateStub).to.be.calledWith(iap.GOOGLE, {
|
||||
data: receipt,
|
||||
signature,
|
||||
});
|
||||
expect(iapIsValidatedStub).to.be.calledOnce;
|
||||
expect(iapIsValidatedStub).to.be.calledWith({
|
||||
expirationDate,
|
||||
});
|
||||
expect(iapGetPurchaseDataStub).to.be.calledOnce;
|
||||
|
||||
expect(paymentCancelSubscriptionSpy).to.not.be.called;
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Generated
+38673
-127
File diff suppressed because it is too large
Load Diff
@@ -48,11 +48,6 @@
|
||||
width: 48px;
|
||||
height: 52px;
|
||||
}
|
||||
.achievement-birdsOfAFeather2x {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/achievement-birdsOfAFeather2x.png');
|
||||
width: 60px;
|
||||
height: 64px;
|
||||
}
|
||||
.achievement-birthday2x {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/achievement-birthday2x.png');
|
||||
width: 48px;
|
||||
@@ -498,11 +493,6 @@
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_animals_den {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_animals_den.png');
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_apple_picking {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_apple_picking.png');
|
||||
width: 141px;
|
||||
@@ -638,11 +628,6 @@
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_brick_wall_with_ivy {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_brick_wall_with_ivy.png');
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_bridge {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_bridge.png');
|
||||
width: 141px;
|
||||
@@ -903,16 +888,6 @@
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.background_flowering_prairie {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_flowering_prairie.png');
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.customize-option.background_flowering_prairie {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_flowering_prairie.png');
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.background_flying_in_a_thunderstorm {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_flying_in_a_thunderstorm.png');
|
||||
width: 141px;
|
||||
@@ -1968,11 +1943,6 @@
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.icon_background_animals_den {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_animals_den.png');
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.icon_background_apple_picking {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_apple_picking.png');
|
||||
width: 68px;
|
||||
@@ -2108,11 +2078,6 @@
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.icon_background_brick_wall_with_ivy {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_brick_wall_with_ivy.png');
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.icon_background_bridge {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_bridge.png');
|
||||
width: 68px;
|
||||
@@ -2378,16 +2343,6 @@
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.icon_background_flowering_prairie {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_flowering_prairie.png');
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.customize-option.icon_background_flowering_prairie {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_flowering_prairie.png');
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.icon_background_flying_in_a_thunderstorm {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_flying_in_a_thunderstorm.png');
|
||||
width: 68px;
|
||||
@@ -16733,11 +16688,6 @@
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.broad_armor_armoire_gardenersOveralls {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_gardenersOveralls.png');
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.broad_armor_armoire_gladiatorArmor {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_gladiatorArmor.png');
|
||||
width: 90px;
|
||||
@@ -17173,11 +17123,6 @@
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.head_armoire_gardenersSunHat {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_armoire_gardenersSunHat.png');
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.head_armoire_gladiatorHelm {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_armoire_gladiatorHelm.png');
|
||||
width: 90px;
|
||||
@@ -17528,11 +17473,6 @@
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.shield_armoire_gardenersSpade {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_gardenersSpade.png');
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.shield_armoire_gladiatorShield {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_gladiatorShield.png');
|
||||
width: 90px;
|
||||
@@ -17893,11 +17833,6 @@
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.shop_armor_armoire_gardenersOveralls {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_gardenersOveralls.png');
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.shop_armor_armoire_gladiatorArmor {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_gladiatorArmor.png');
|
||||
width: 68px;
|
||||
@@ -18348,11 +18283,6 @@
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.shop_head_armoire_gardenersSunHat {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_armoire_gardenersSunHat.png');
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.shop_head_armoire_gladiatorHelm {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_armoire_gladiatorHelm.png');
|
||||
width: 68px;
|
||||
@@ -18703,11 +18633,6 @@
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.shop_shield_armoire_gardenersSpade {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_armoire_gardenersSpade.png');
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.shop_shield_armoire_gladiatorShield {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_armoire_gladiatorShield.png');
|
||||
width: 68px;
|
||||
@@ -19058,11 +18983,6 @@
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.shop_weapon_armoire_gardenersWateringCan {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_armoire_gardenersWateringCan.png');
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.shop_weapon_armoire_glassblowersBlowpipe {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_armoire_glassblowersBlowpipe.png');
|
||||
width: 68px;
|
||||
@@ -19478,11 +19398,6 @@
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_armoire_gardenersOveralls {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_gardenersOveralls.png');
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_armoire_gladiatorArmor {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_gladiatorArmor.png');
|
||||
width: 90px;
|
||||
@@ -19883,11 +19798,6 @@
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_armoire_gardenersWateringCan {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_armoire_gardenersWateringCan.png');
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_armoire_glassblowersBlowpipe {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_armoire_glassblowersBlowpipe.png');
|
||||
width: 114px;
|
||||
@@ -25183,31 +25093,6 @@
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.back_mystery_202203 {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/back_mystery_202203.png');
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.headAccessory_mystery_202203 {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_mystery_202203.png');
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.shop_back_mystery_202203 {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_back_mystery_202203.png');
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.shop_headAccessory_mystery_202203 {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_mystery_202203.png');
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.shop_set_mystery_202203 {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_set_mystery_202203.png');
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.broad_armor_mystery_301404 {
|
||||
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_mystery_301404.png');
|
||||
width: 90px;
|
||||
@@ -25543,26 +25428,6 @@
|
||||
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;
|
||||
@@ -25803,26 +25668,6 @@
|
||||
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;
|
||||
@@ -25948,21 +25793,6 @@
|
||||
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;
|
||||
@@ -26118,26 +25948,6 @@
|
||||
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;
|
||||
@@ -26378,26 +26188,6 @@
|
||||
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;
|
||||
@@ -26523,21 +26313,6 @@
|
||||
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;
|
||||
@@ -26693,26 +26468,6 @@
|
||||
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;
|
||||
@@ -26873,26 +26628,6 @@
|
||||
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;
|
||||
@@ -27053,26 +26788,6 @@
|
||||
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;
|
||||
|
||||
@@ -450,14 +450,6 @@ const NOTIFICATIONS = {
|
||||
achievement: 'zodiacZookeeper',
|
||||
},
|
||||
},
|
||||
ACHIEVEMENT_BIRDS_OF_A_FEATHER: {
|
||||
achievement: true,
|
||||
label: $t => `${$t('achievement')}: ${$t('achievementBirdsOfAFeather')}`,
|
||||
modalId: 'generic-achievement',
|
||||
data: {
|
||||
achievement: 'birdsOfAFeather',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export default {
|
||||
@@ -522,7 +514,6 @@ export default {
|
||||
'ACHIEVEMENT_RED_LETTER_DAY', 'ACHIEVEMENT_LEGENDARY_BESTIARY', 'ACHIEVEMENT_SEASONAL_SPECIALIST',
|
||||
'ACHIEVEMENT_VIOLETS_ARE_BLUE', 'ACHIEVEMENT_WILD_BLUE_YONDER', 'ACHIEVEMENT_DOMESTICATED',
|
||||
'ACHIEVEMENT_SHADY_CUSTOMER', 'ACHIEVEMENT_SHADE_OF_IT_ALL', 'ACHIEVEMENT_ZODIAC_ZOOKEEPER',
|
||||
'ACHIEVEMENT_BIRDS_OF_A_FEATHER',
|
||||
].forEach(type => {
|
||||
handledNotifications[type] = true;
|
||||
});
|
||||
@@ -957,7 +948,6 @@ export default {
|
||||
case 'ACHIEVEMENT_SHADY_CUSTOMER':
|
||||
case 'ACHIEVEMENT_SHADE_OF_IT_ALL':
|
||||
case 'ACHIEVEMENT_ZODIAC_ZOOKEEPER':
|
||||
case 'ACHIEVEMENT_BIRDS_OF_A_FEATHER':
|
||||
case 'GENERIC_ACHIEVEMENT':
|
||||
this.showNotificationWithModal(notification);
|
||||
break;
|
||||
|
||||
@@ -126,8 +126,5 @@
|
||||
"achievementShadeOfItAllModalText": "You tamed all the Shade Mounts!",
|
||||
"achievementZodiacZookeeper": "Zodiac Zookeeper",
|
||||
"achievementZodiacZookeeperText": "Has hatched all the zodiac pets: Rat, Cow, Bunny, Snake, Horse, Sheep, Monkey, Rooster, Wolf, Tiger, Flying Pig, and Dragon!",
|
||||
"achievementZodiacZookeeperModalText": "You collected all the zodiac pets!",
|
||||
"achievementBirdsOfAFeather": "Birds of a Feather",
|
||||
"achievementBirdsOfAFeatherText": "Has hatched all the flying pets: Flying Pig, Owl, Parrot, Pterodactyl, Gryphon, and Falcon.",
|
||||
"achievementBirdsOfAFeatherModalText":"You collected all the flying pets!"
|
||||
"achievementZodiacZookeeperModalText": "You collected all the zodiac pets!"
|
||||
}
|
||||
|
||||
@@ -762,14 +762,6 @@
|
||||
"backgroundIridescentCloudsText": "Iridescent Clouds",
|
||||
"backgroundIridescentCloudsNotes": "Float in Iridescent Clouds.",
|
||||
|
||||
"backgrounds032022": "SET 94: Released March 2022",
|
||||
"backgroundAnimalsDenText": "Woodland Critter's Den",
|
||||
"backgroundAnimalsDenNotes": "Cozy up in a Woodland Critter's Den.",
|
||||
"backgroundBrickWallWithIvyText": "Brick Wall with Ivy",
|
||||
"backgroundBrickWallWithIvyNotes": "Admire a Brick Wall with Ivy.",
|
||||
"backgroundFloweringPrairieText": "Flowering Prairie",
|
||||
"backgroundFloweringPrairieNotes": "Frolic through a Flowering Prairie.",
|
||||
|
||||
"timeTravelBackgrounds": "Steampunk Backgrounds",
|
||||
"backgroundAirshipText": "Airship",
|
||||
"backgroundAirshipNotes": "Become a sky sailor on board your very own Airship.",
|
||||
|
||||
@@ -428,15 +428,6 @@
|
||||
"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",
|
||||
@@ -626,8 +617,6 @@
|
||||
"weaponArmoireShootingStarSpellNotes": "Surround yourself in a spell of stardust magic to help you make all your wishes come true. Increases Strength and Intelligence by <%= attrs %> each. Enchanted Armoire: Stardust Set (Item 3 of 3).",
|
||||
"weaponArmoirePinkLongbowText": "Pink Longbow",
|
||||
"weaponArmoirePinkLongbowNotes": "Be a cupid-in-training, mastering both archery and matters of the heart with this beautiful bow. Increases Perception by <%= per %> and Strength by <%= str %>. Enchanted Armoire: Independent Item.",
|
||||
"weaponArmoireGardenersWateringCanText": "Watering Can",
|
||||
"weaponArmoireGardenersWateringCanNotes": "You can’t get far without water! Have an infinite supply on hand with this magic, refilling watering can. Increases Intelligence by <%= int %>. Enchanted Armoire: Gardener Set (Item 4 of 4).",
|
||||
|
||||
"armor": "armor",
|
||||
"armorCapitalized": "Armor",
|
||||
@@ -1037,15 +1026,6 @@
|
||||
"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",
|
||||
@@ -1323,8 +1303,6 @@
|
||||
"armorArmoireShootingStarCostumeNotes": "Rumored to have been spun out of the night sky itself, this flowy gown lets you rise above all obstacles in your path. Increases Constitution by <%= con %>. Enchanted Armoire: Stardust Set (Item 2 of 3).",
|
||||
"armorArmoireSoftVioletSuitText": "Soft Violet Suit",
|
||||
"armorArmoireSoftVioletSuitNotes": "Purple is a luxurious color. Relax in style after you’ve accomplished all your daily tasks. Increases Constitution and Strength by <%= attrs %> each. Enchanted Armoire: Violet Loungewear Set (Item 2 of 3).",
|
||||
"armorArmoireGardenersOverallsText": "Gardener's Overalls",
|
||||
"armorArmoireGardenersOverallsNotes": "Don’t be afraid to work down in the dirt when you’re wearing these durable overalls. Increases Constitution by <%= con %>. Enchanted Armoire: Gardener Set (Item 1 of 4).",
|
||||
|
||||
"headgear": "helm",
|
||||
"headgearCapitalized": "Headgear",
|
||||
@@ -1730,15 +1708,6 @@
|
||||
"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.",
|
||||
|
||||
@@ -2041,8 +2010,6 @@
|
||||
"headArmoireRegalCrownNotes": "Any monarch would be lucky to have such a majestic, smart-looking crown. Increases Intelligence by <%= int %>. Enchanted Armoire: Regal Set (Item 1 of 2).",
|
||||
"headArmoireShootingStarCrownText": "Star Crown",
|
||||
"headArmoireShootingStarCrownNotes": "With this brightly shining headpiece, you will literally be the star of your own adventure! Increases Perception by <%= per %>. Enchanted Armoire: Stardust Set (Item 1 of 3).",
|
||||
"headArmoireGardenersSunHatText": "Gardener's Sun Hat",
|
||||
"headArmoireGardenersSunHatNotes": "The bright light of the day star won’t shine in your eyes when you wear this wide-brimmed hat. Increases Perception by <%= per %>. Enchanted Armoire: Gardener Set (Item 2 of 4).",
|
||||
|
||||
"offhand": "off-hand item",
|
||||
"offHandCapitalized": "Off-Hand Item",
|
||||
@@ -2270,11 +2237,6 @@
|
||||
"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",
|
||||
@@ -2418,8 +2380,6 @@
|
||||
"shieldArmoireSoftBlackPillowNotes": "The brave warrior packs a pillow for any expedition. Guard yourself from tiresome tasks... even while you nap. Increases Intelligence and Perception by <%= attrs %> each. Enchanted Armoire: Black Loungewear Set (Item 3 of 3).",
|
||||
"shieldArmoireSoftVioletPillowText": "Soft Violet Pillow",
|
||||
"shieldArmoireSoftVioletPillowNotes": "The clever warrior packs a pillow for any expedition. Protect yourself from procrastination-induced panic... even while you nap. Increases Intelligence by <%= int %>. Enchanted Armoire: Violet Loungewear Set (Item 3 of 3).",
|
||||
"shieldArmoireGardenersSpadeText": "Gardener's Spade",
|
||||
"shieldArmoireGardenersSpadeNotes": "Whether you’re digging in the garden, searching for buried treasure, or creating a secret tunnel, this trusty spade is at your side. Increases Strength by <%= str %>. Enchanted Armoire: Gardener Set (Item 3 of 4).",
|
||||
|
||||
"back": "Back Accessory",
|
||||
"backBase0Text": "No Back Accessory",
|
||||
@@ -2480,8 +2440,6 @@
|
||||
"backMystery202105Notes": "Glide through the starry sky and place yourself among the constellations! Confers no benefit. May 2021 Subscriber Item.",
|
||||
"backMystery202109Text": "Lunar Lepidopteran Wings",
|
||||
"backMystery202109Notes": "Glide softly through the twilight air without a sound. Confers no benefit. September 2021 Subscriber Item.",
|
||||
"backMystery202203Text": "Dauntless Dragonfly Wings",
|
||||
"backMystery202203Notes": "Outrace all the other creatures of the sky with these shimmering wings. Confers no benefit. March 2022 Subscriber Item.",
|
||||
|
||||
"backSpecialWonderconRedText": "Mighty Cape",
|
||||
"backSpecialWonderconRedNotes": "Swishes with strength and beauty. Confers no benefit. Special Edition Convention Item.",
|
||||
@@ -2680,8 +2638,6 @@
|
||||
"headAccessoryMystery202105Notes": "Don these iridescent horns and summon the magic of starlight. Confers no benefit. May 2021 Subscriber Item.",
|
||||
"headAccessoryMystery202109Text": "Lunar Lepidopteran Antennae",
|
||||
"headAccessoryMystery202109Notes": "Catch the scent of flowers on the breeze or the scent of change on the wind. Confers no benefit. September 2021 Subscriber Item.",
|
||||
"headAccessoryMystery202203Text": "Dauntless Dragonfly Circlet",
|
||||
"headAccessoryMystery202203Notes": "Need an extra boost of speed? The tiny decorative wings on this circlet are more powerful than they look! Confers no benefit. March 2022 Subscriber Item.",
|
||||
"headAccessoryMystery301405Text": "Headwear Goggles",
|
||||
"headAccessoryMystery301405Notes": "\"Goggles are for your eyes,\" they said. \"Nobody wants goggles that you can only wear on your head,\" they said. Hah! You sure showed them! Confers no benefit. August 3015 Subscriber Item.",
|
||||
|
||||
|
||||
@@ -1,221 +1,217 @@
|
||||
{
|
||||
"annoyingFriends": "Annoying Friends",
|
||||
"annoyingFriendsText": "Got snowballed <%= count %> times by party members.",
|
||||
"alarmingFriends": "Alarming Friends",
|
||||
"alarmingFriendsText": "Got spooked <%= count %> times by party members.",
|
||||
"agriculturalFriends": "Agricultural Friends",
|
||||
"agriculturalFriendsText": "Got transformed into a flower <%= count %> times by party members.",
|
||||
"aquaticFriends": "Aquatic Friends",
|
||||
"aquaticFriendsText": "Got splashed <%= count %> times by party members.",
|
||||
"valentineCard": "Valentine's Day Card",
|
||||
"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.",
|
||||
"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!\"",
|
||||
"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!\"",
|
||||
"valentineCardAchievementTitle": "Adoring Friends",
|
||||
"valentineCardAchievementText": "Aww, you and your friend must really care about each other! Sent or received <%= count %> Valentine's Day cards.",
|
||||
"polarBear": "Polar Bear",
|
||||
"turkey": "Turkey",
|
||||
"gildedTurkey": "Gilded Turkey",
|
||||
"polarBearPup": "Polar Bear Cub",
|
||||
"jackolantern": "Jack-O-Lantern",
|
||||
"ghostJackolantern": "Ghost Jack-O-Lantern",
|
||||
"glowJackolantern": "Glow-in-the-Dark Jack-O-Lantern",
|
||||
"royalPurpleJackolantern": "Royal Purple Jack-O-Lantern",
|
||||
"seasonalShop": "Seasonal Shop",
|
||||
"seasonalShopClosedTitle": "<%= linkStart %>Leslie<%= linkEnd %>",
|
||||
"seasonalShopTitle": "<%= linkStart %>Seasonal Sorceress<%= linkEnd %>",
|
||||
"seasonalShopClosedText": "The Seasonal Shop is currently closed!! It’s only open during Habitica’s four Grand Galas.",
|
||||
"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!",
|
||||
"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!",
|
||||
"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!",
|
||||
"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)",
|
||||
"skiSet": "Ski-sassin (Rogue)",
|
||||
"snowflakeSet": "Snowflake (Healer)",
|
||||
"yetiSet": "Yeti Tamer (Warrior)",
|
||||
"northMageSet": "Mage of the North (Mage)",
|
||||
"icicleDrakeSet": "Icicle Drake (Rogue)",
|
||||
"soothingSkaterSet": "Soothing Skater (Healer)",
|
||||
"gingerbreadSet": "Gingerbread (Warrior)",
|
||||
"snowDaySet": "Snow Day (Warrior)",
|
||||
"snowboardingSet": "Snowboarding Sorcerer (Mage)",
|
||||
"festiveFairySet": "Festive Fairy (Healer)",
|
||||
"cocoaSet": "Cocoa (Rogue)",
|
||||
"toAndFromCard": "To: <%= toName %>, From: <%= fromName %>",
|
||||
"nyeCard": "New Year's Card",
|
||||
"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.",
|
||||
"seasonalItems": "Seasonal Items",
|
||||
"nyeCardAchievementTitle": "Auld Acquaintance",
|
||||
"nyeCardAchievementText": "Happy New Year! Sent or received <%= count %> New Year's cards.",
|
||||
"nye0": "Happy New Year! May you slay many a bad Habit.",
|
||||
"nye1": "Happy New Year! May you reap many Rewards.",
|
||||
"nye2": "Happy New Year! May you earn many a Perfect Day.",
|
||||
"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.",
|
||||
"mightyBunnySet": "Mighty Bunny (Warrior)",
|
||||
"magicMouseSet": "Magic Mouse (Mage)",
|
||||
"lovingPupSet": "Loving Pup (Healer)",
|
||||
"stealthyKittySet": "Stealthy Kitty (Rogue)",
|
||||
"daringSwashbucklerSet": "Daring Swashbuckler (Warrior)",
|
||||
"emeraldMermageSet": "Emerald Mermage (Mage)",
|
||||
"reefSeahealerSet": "Reef Seahealer (Healer)",
|
||||
"roguishPirateSet": "Roguish Pirate (Rogue)",
|
||||
"monsterOfScienceSet": "Monster of Science (Warrior)",
|
||||
"witchyWizardSet": "Witchy Wizard (Mage)",
|
||||
"mummyMedicSet": "Mummy Medic (Healer)",
|
||||
"vampireSmiterSet": "Vampire Smiter (Rogue)",
|
||||
"bewareDogSet": "Beware Dog (Warrior)",
|
||||
"magicianBunnySet": "Magician's Bunny (Mage)",
|
||||
"comfortingKittySet": "Comforting Kitty (Healer)",
|
||||
"sneakySqueakerSet": "Sneaky Squeaker (Rogue)",
|
||||
"sunfishWarriorSet": "Sunfish (Warrior)",
|
||||
"shipSoothsayerSet": "Ship Soothsayer (Mage)",
|
||||
"strappingSailorSet": "Strapping Sailor (Healer)",
|
||||
"reefRenegadeSet": "Reef Renegade (Rogue)",
|
||||
"scarecrowWarriorSet": "Scarecrow (Warrior)",
|
||||
"stitchWitchSet": "Stitch Witch (Mage)",
|
||||
"potionerSet": "Potioner (Healer)",
|
||||
"battleRogueSet": "Bat-tle (Rogue)",
|
||||
"springingBunnySet": "Springing Bunny (Healer)",
|
||||
"grandMalkinSet": "Grand Malkin (Mage)",
|
||||
"cleverDogSet": "Clever Dog (Rogue)",
|
||||
"braveMouseSet": "Brave Mouse (Warrior)",
|
||||
"summer2016SharkWarriorSet": "Shark (Warrior)",
|
||||
"summer2016DolphinMageSet": "Dolphin (Mage)",
|
||||
"summer2016SeahorseHealerSet": "Seahorse (Healer)",
|
||||
"summer2016EelSet": "Eel (Rogue)",
|
||||
"fall2016SwampThingSet": "Swamp Thing (Warrior)",
|
||||
"fall2016WickedSorcererSet": "Wicked Sorcerer (Mage)",
|
||||
"fall2016GorgonHealerSet": "Gorgon (Healer)",
|
||||
"fall2016BlackWidowSet": "Black Widow (Rogue)",
|
||||
"winter2017IceHockeySet": "Ice Hockey (Warrior)",
|
||||
"winter2017WinterWolfSet": "Winter Wolf (Mage)",
|
||||
"winter2017SugarPlumSet": "Sugar Plum (Healer)",
|
||||
"winter2017FrostyRogueSet": "Frosty (Rogue)",
|
||||
"spring2017FelineWarriorSet": "Feline (Warrior)",
|
||||
"spring2017CanineConjurorSet": "Canine Conjuror (Mage)",
|
||||
"spring2017FloralMouseSet": "Floral Mouse (Healer)",
|
||||
"spring2017SneakyBunnySet": "Sneaky Bunny (Rogue)",
|
||||
"summer2017SandcastleWarriorSet": "Sandcastle (Warrior)",
|
||||
"summer2017WhirlpoolMageSet": "Whirlpool (Mage)",
|
||||
"summer2017SeashellSeahealerSet": "Seashell Seahealer (Healer)",
|
||||
"summer2017SeaDragonSet": "Sea Dragon (Rogue)",
|
||||
"fall2017HabitoweenSet": "Habitoween (Warrior)",
|
||||
"fall2017MasqueradeSet": "Masquerade (Mage)",
|
||||
"fall2017HauntedHouseSet": "Haunted House (Healer)",
|
||||
"fall2017TrickOrTreatSet": "Trick or Treat (Rogue)",
|
||||
"winter2018ConfettiSet": "Confetti (Mage)",
|
||||
"winter2018GiftWrappedSet": "Gift-Wrapped (Warrior)",
|
||||
"winter2018MistletoeSet": "Mistletoe (Healer)",
|
||||
"winter2018ReindeerSet": "Reindeer (Rogue)",
|
||||
"spring2018SunriseWarriorSet": "Sunrise (Warrior)",
|
||||
"spring2018TulipMageSet": "Tulip (Mage)",
|
||||
"spring2018GarnetHealerSet": "Garnet (Healer)",
|
||||
"spring2018DucklingRogueSet": "Duckling (Rogue)",
|
||||
"summer2018BettaFishWarriorSet": "Betta Fish (Warrior)",
|
||||
"summer2018LionfishMageSet": "Lionfish (Mage)",
|
||||
"summer2018MerfolkMonarchSet": "Merfolk Monarch (Healer)",
|
||||
"summer2018FisherRogueSet": "Fisher-Rogue (Rogue)",
|
||||
"fall2018MinotaurWarriorSet": "Minotaur (Warrior)",
|
||||
"fall2018CandymancerMageSet": "Candymancer (Mage)",
|
||||
"fall2018CarnivorousPlantSet": "Carnivorous Plant (Healer)",
|
||||
"fall2018AlterEgoSet": "Alter Ego (Rogue)",
|
||||
"winter2019BlizzardSet": "Blizzard (Warrior)",
|
||||
"winter2019PyrotechnicSet": "Pyrotechnic (Mage)",
|
||||
"winter2019WinterStarSet": "Winter Star (Healer)",
|
||||
"winter2019PoinsettiaSet": "Poinsettia (Rogue)",
|
||||
"spring2019OrchidWarriorSet": "Orchid (Warrior)",
|
||||
"spring2019AmberMageSet": "Amber (Mage)",
|
||||
"spring2019RobinHealerSet": "Robin (Healer)",
|
||||
"spring2019CloudRogueSet": "Cloud (Rogue)",
|
||||
"summer2019SeaTurtleWarriorSet": "Sea Turtle (Warrior)",
|
||||
"summer2019WaterLilyMageSet": "Water Lily (Mage)",
|
||||
"summer2019ConchHealerSet": "Conch (Healer)",
|
||||
"summer2019HammerheadRogueSet": "Hammerhead (Rogue)",
|
||||
"fall2019OperaticSpecterSet": "Operatic Specter (Rogue)",
|
||||
"fall2019CyclopsSet": "Cyclops (Mage)",
|
||||
"fall2019LichSet": "Lich (Healer)",
|
||||
"fall2019RavenSet": "Raven (Warrior)",
|
||||
"winter2020EvergreenSet": "Evergreen (Warrior)",
|
||||
"winter2020CarolOfTheMageSet": "Carol of the Mage (Mage)",
|
||||
"winter2020WinterSpiceSet": "Winter Spice (Healer)",
|
||||
"winter2020LanternSet": "Lantern (Rogue)",
|
||||
"spring2020BeetleWarriorSet": "Rhinoceros Beetle (Warrior)",
|
||||
"spring2020PuddleMageSet": "Puddle (Mage)",
|
||||
"spring2020IrisHealerSet": "Iris (Healer)",
|
||||
"spring2020LapisLazuliRogueSet": "Lapis Lazuli (Rogue)",
|
||||
"summer2020RainbowTroutWarriorSet": "Rainbow Trout (Warrior)",
|
||||
"summer2020OarfishMageSet": "Oarfish (Mage)",
|
||||
"summer2020SeaGlassHealerSet": "Sea Glass (Healer)",
|
||||
"summer2020CrocodileRogueSet": "Crocodile (Rogue)",
|
||||
"fall2020WraithWarriorSet": "Wraith (Warrior)",
|
||||
"fall2020DeathsHeadMothHealerSet": "Death's Head Moth (Healer)",
|
||||
"fall2020ThirdEyeMageSet": "Third Eye (Mage)",
|
||||
"fall2020TwoHeadedRogueSet": "Two-Headed (Rogue)",
|
||||
"winter2021IceFishingWarriorSet": "Ice Fisher (Warrior)",
|
||||
"winter2021WinterMoonMageSet": "Winter Moon (Mage)",
|
||||
"winter2021ArcticExplorerHealerSet": "Arctic Explorer (Healer)",
|
||||
"winter2021HollyIvyRogueSet": "Holly and Ivy (Rogue)",
|
||||
"spring2021SunstoneWarriorSet": "Sunstone (Warrior)",
|
||||
"spring2021SwanMageSet": "Swan (Mage)",
|
||||
"spring2021WillowHealerSet": "Willow (Healer)",
|
||||
"spring2021TwinFlowerRogueSet": "Twin Flower (Rogue)",
|
||||
"summer2021FlyingFishWarriorSet": "Flying Fish (Warrior)",
|
||||
"summer2021NautilusMageSet": "Nautilus (Mage)",
|
||||
"summer2021ParrotHealerSet": "Parrot (Healer)",
|
||||
"summer2021ClownfishRogueSet": "Clownfish (Rogue)",
|
||||
"fall2021OozeRogueSet": "Ooze (Rogue)",
|
||||
"fall2021HeadlessWarriorSet": "Headless (Warrior)",
|
||||
"fall2021BrainEaterMageSet": "Brain Eater (Mage)",
|
||||
"fall2021FlameSummonerHealerSet": "Flame Summoner (Healer)",
|
||||
"winter2022FireworksRogueSet": "Fireworks (Rogue)",
|
||||
"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",
|
||||
"dateEndApril": "April 19",
|
||||
"dateEndMay": "May 31",
|
||||
"dateEndJune": "June 14",
|
||||
"augustYYYY": "August <%= year %>",
|
||||
"septemberYYYY": "September <%= year %>",
|
||||
"decemberYYYY": "December <%= year %>",
|
||||
"marchYYYY": "March <%= year %>",
|
||||
"mayYYYY": "May <%= year %>",
|
||||
"juneYYYY": "June <%= year %>",
|
||||
"novemberYYYY": "November <%= year %>",
|
||||
"januaryYYYY": "January <%= year %>",
|
||||
"dateEndJuly": "July 31",
|
||||
"dateEndAugust": "August 31",
|
||||
"dateEndSeptember": "September 21",
|
||||
"dateEndOctober": "October 31",
|
||||
"dateEndNovember": "November 30",
|
||||
"dateEndJanuary": "January 31",
|
||||
"dateEndFebruary": "February 28",
|
||||
"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!",
|
||||
"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",
|
||||
"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!",
|
||||
"g1g1": "Gift One, Get One",
|
||||
"g1g1Event": "Gift One, Get One event going on now!",
|
||||
"g1g1Returning": "In honor of the season, we’re bringing back a very special promotion. Now when you gift a subscription, you’ll receive the same in return!",
|
||||
"howItWorks": "How it Works",
|
||||
"g1g1HowItWorks": "Type in the username of the account you’d like to gift to. From there, pick the sub length you’d like to gift and check out. Your account will automatically be rewarded with the same level of subscription you just gifted.",
|
||||
"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.",
|
||||
"noLongerAvailable": "This item is no longer available."
|
||||
"annoyingFriends": "Annoying Friends",
|
||||
"annoyingFriendsText": "Got snowballed <%= count %> times by party members.",
|
||||
"alarmingFriends": "Alarming Friends",
|
||||
"alarmingFriendsText": "Got spooked <%= count %> times by party members.",
|
||||
"agriculturalFriends": "Agricultural Friends",
|
||||
"agriculturalFriendsText": "Got transformed into a flower <%= count %> times by party members.",
|
||||
"aquaticFriends": "Aquatic Friends",
|
||||
"aquaticFriendsText": "Got splashed <%= count %> times by party members.",
|
||||
"valentineCard": "Valentine's Day Card",
|
||||
"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.",
|
||||
"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!\"",
|
||||
"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!\"",
|
||||
"valentineCardAchievementTitle": "Adoring Friends",
|
||||
"valentineCardAchievementText": "Aww, you and your friend must really care about each other! Sent or received <%= count %> Valentine's Day cards.",
|
||||
"polarBear": "Polar Bear",
|
||||
"turkey": "Turkey",
|
||||
"gildedTurkey": "Gilded Turkey",
|
||||
"polarBearPup": "Polar Bear Cub",
|
||||
"jackolantern": "Jack-O-Lantern",
|
||||
"ghostJackolantern": "Ghost Jack-O-Lantern",
|
||||
"glowJackolantern": "Glow-in-the-Dark Jack-O-Lantern",
|
||||
"royalPurpleJackolantern": "Royal Purple Jack-O-Lantern",
|
||||
"seasonalShop": "Seasonal Shop",
|
||||
"seasonalShopClosedTitle": "<%= linkStart %>Leslie<%= linkEnd %>",
|
||||
"seasonalShopTitle": "<%= linkStart %>Seasonal Sorceress<%= linkEnd %>",
|
||||
"seasonalShopClosedText": "The Seasonal Shop is currently closed!! It’s only open during Habitica’s four Grand Galas.",
|
||||
"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!",
|
||||
"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!",
|
||||
"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!",
|
||||
"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)",
|
||||
"skiSet": "Ski-sassin (Rogue)",
|
||||
"snowflakeSet": "Snowflake (Healer)",
|
||||
"yetiSet": "Yeti Tamer (Warrior)",
|
||||
"northMageSet": "Mage of the North (Mage)",
|
||||
"icicleDrakeSet": "Icicle Drake (Rogue)",
|
||||
"soothingSkaterSet": "Soothing Skater (Healer)",
|
||||
"gingerbreadSet": "Gingerbread (Warrior)",
|
||||
"snowDaySet": "Snow Day (Warrior)",
|
||||
"snowboardingSet": "Snowboarding Sorcerer (Mage)",
|
||||
"festiveFairySet": "Festive Fairy (Healer)",
|
||||
"cocoaSet": "Cocoa (Rogue)",
|
||||
"toAndFromCard": "To: <%= toName %>, From: <%= fromName %>",
|
||||
"nyeCard": "New Year's Card",
|
||||
"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.",
|
||||
"seasonalItems": "Seasonal Items",
|
||||
"nyeCardAchievementTitle": "Auld Acquaintance",
|
||||
"nyeCardAchievementText": "Happy New Year! Sent or received <%= count %> New Year's cards.",
|
||||
"nye0": "Happy New Year! May you slay many a bad Habit.",
|
||||
"nye1": "Happy New Year! May you reap many Rewards.",
|
||||
"nye2": "Happy New Year! May you earn many a Perfect Day.",
|
||||
"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.",
|
||||
"mightyBunnySet": "Mighty Bunny (Warrior)",
|
||||
"magicMouseSet": "Magic Mouse (Mage)",
|
||||
"lovingPupSet": "Loving Pup (Healer)",
|
||||
"stealthyKittySet": "Stealthy Kitty (Rogue)",
|
||||
"daringSwashbucklerSet": "Daring Swashbuckler (Warrior)",
|
||||
"emeraldMermageSet": "Emerald Mermage (Mage)",
|
||||
"reefSeahealerSet": "Reef Seahealer (Healer)",
|
||||
"roguishPirateSet": "Roguish Pirate (Rogue)",
|
||||
"monsterOfScienceSet": "Monster of Science (Warrior)",
|
||||
"witchyWizardSet": "Witchy Wizard (Mage)",
|
||||
"mummyMedicSet": "Mummy Medic (Healer)",
|
||||
"vampireSmiterSet": "Vampire Smiter (Rogue)",
|
||||
"bewareDogSet": "Beware Dog (Warrior)",
|
||||
"magicianBunnySet": "Magician's Bunny (Mage)",
|
||||
"comfortingKittySet": "Comforting Kitty (Healer)",
|
||||
"sneakySqueakerSet": "Sneaky Squeaker (Rogue)",
|
||||
"sunfishWarriorSet": "Sunfish (Warrior)",
|
||||
"shipSoothsayerSet": "Ship Soothsayer (Mage)",
|
||||
"strappingSailorSet": "Strapping Sailor (Healer)",
|
||||
"reefRenegadeSet": "Reef Renegade (Rogue)",
|
||||
"scarecrowWarriorSet": "Scarecrow (Warrior)",
|
||||
"stitchWitchSet": "Stitch Witch (Mage)",
|
||||
"potionerSet": "Potioner (Healer)",
|
||||
"battleRogueSet": "Bat-tle (Rogue)",
|
||||
"springingBunnySet": "Springing Bunny (Healer)",
|
||||
"grandMalkinSet": "Grand Malkin (Mage)",
|
||||
"cleverDogSet": "Clever Dog (Rogue)",
|
||||
"braveMouseSet": "Brave Mouse (Warrior)",
|
||||
"summer2016SharkWarriorSet": "Shark (Warrior)",
|
||||
"summer2016DolphinMageSet": "Dolphin (Mage)",
|
||||
"summer2016SeahorseHealerSet": "Seahorse (Healer)",
|
||||
"summer2016EelSet": "Eel (Rogue)",
|
||||
"fall2016SwampThingSet": "Swamp Thing (Warrior)",
|
||||
"fall2016WickedSorcererSet": "Wicked Sorcerer (Mage)",
|
||||
"fall2016GorgonHealerSet": "Gorgon (Healer)",
|
||||
"fall2016BlackWidowSet": "Black Widow (Rogue)",
|
||||
"winter2017IceHockeySet": "Ice Hockey (Warrior)",
|
||||
"winter2017WinterWolfSet": "Winter Wolf (Mage)",
|
||||
"winter2017SugarPlumSet": "Sugar Plum (Healer)",
|
||||
"winter2017FrostyRogueSet": "Frosty (Rogue)",
|
||||
"spring2017FelineWarriorSet": "Feline (Warrior)",
|
||||
"spring2017CanineConjurorSet": "Canine Conjuror (Mage)",
|
||||
"spring2017FloralMouseSet": "Floral Mouse (Healer)",
|
||||
"spring2017SneakyBunnySet": "Sneaky Bunny (Rogue)",
|
||||
"summer2017SandcastleWarriorSet": "Sandcastle (Warrior)",
|
||||
"summer2017WhirlpoolMageSet": "Whirlpool (Mage)",
|
||||
"summer2017SeashellSeahealerSet": "Seashell Seahealer (Healer)",
|
||||
"summer2017SeaDragonSet": "Sea Dragon (Rogue)",
|
||||
"fall2017HabitoweenSet": "Habitoween (Warrior)",
|
||||
"fall2017MasqueradeSet": "Masquerade (Mage)",
|
||||
"fall2017HauntedHouseSet": "Haunted House (Healer)",
|
||||
"fall2017TrickOrTreatSet": "Trick or Treat (Rogue)",
|
||||
"winter2018ConfettiSet": "Confetti (Mage)",
|
||||
"winter2018GiftWrappedSet": "Gift-Wrapped (Warrior)",
|
||||
"winter2018MistletoeSet": "Mistletoe (Healer)",
|
||||
"winter2018ReindeerSet": "Reindeer (Rogue)",
|
||||
"spring2018SunriseWarriorSet": "Sunrise (Warrior)",
|
||||
"spring2018TulipMageSet": "Tulip (Mage)",
|
||||
"spring2018GarnetHealerSet": "Garnet (Healer)",
|
||||
"spring2018DucklingRogueSet": "Duckling (Rogue)",
|
||||
"summer2018BettaFishWarriorSet": "Betta Fish (Warrior)",
|
||||
"summer2018LionfishMageSet": "Lionfish (Mage)",
|
||||
"summer2018MerfolkMonarchSet": "Merfolk Monarch (Healer)",
|
||||
"summer2018FisherRogueSet": "Fisher-Rogue (Rogue)",
|
||||
"fall2018MinotaurWarriorSet": "Minotaur (Warrior)",
|
||||
"fall2018CandymancerMageSet": "Candymancer (Mage)",
|
||||
"fall2018CarnivorousPlantSet": "Carnivorous Plant (Healer)",
|
||||
"fall2018AlterEgoSet": "Alter Ego (Rogue)",
|
||||
"winter2019BlizzardSet": "Blizzard (Warrior)",
|
||||
"winter2019PyrotechnicSet": "Pyrotechnic (Mage)",
|
||||
"winter2019WinterStarSet": "Winter Star (Healer)",
|
||||
"winter2019PoinsettiaSet": "Poinsettia (Rogue)",
|
||||
"spring2019OrchidWarriorSet": "Orchid (Warrior)",
|
||||
"spring2019AmberMageSet": "Amber (Mage)",
|
||||
"spring2019RobinHealerSet": "Robin (Healer)",
|
||||
"spring2019CloudRogueSet": "Cloud (Rogue)",
|
||||
"summer2019SeaTurtleWarriorSet": "Sea Turtle (Warrior)",
|
||||
"summer2019WaterLilyMageSet": "Water Lily (Mage)",
|
||||
"summer2019ConchHealerSet": "Conch (Healer)",
|
||||
"summer2019HammerheadRogueSet": "Hammerhead (Rogue)",
|
||||
"fall2019OperaticSpecterSet": "Operatic Specter (Rogue)",
|
||||
"fall2019CyclopsSet": "Cyclops (Mage)",
|
||||
"fall2019LichSet": "Lich (Healer)",
|
||||
"fall2019RavenSet": "Raven (Warrior)",
|
||||
"winter2020EvergreenSet": "Evergreen (Warrior)",
|
||||
"winter2020CarolOfTheMageSet": "Carol of the Mage (Mage)",
|
||||
"winter2020WinterSpiceSet": "Winter Spice (Healer)",
|
||||
"winter2020LanternSet": "Lantern (Rogue)",
|
||||
"spring2020BeetleWarriorSet": "Rhinoceros Beetle (Warrior)",
|
||||
"spring2020PuddleMageSet": "Puddle (Mage)",
|
||||
"spring2020IrisHealerSet": "Iris (Healer)",
|
||||
"spring2020LapisLazuliRogueSet": "Lapis Lazuli (Rogue)",
|
||||
"summer2020RainbowTroutWarriorSet": "Rainbow Trout (Warrior)",
|
||||
"summer2020OarfishMageSet": "Oarfish (Mage)",
|
||||
"summer2020SeaGlassHealerSet": "Sea Glass (Healer)",
|
||||
"summer2020CrocodileRogueSet": "Crocodile (Rogue)",
|
||||
"fall2020WraithWarriorSet": "Wraith (Warrior)",
|
||||
"fall2020DeathsHeadMothHealerSet": "Death's Head Moth (Healer)",
|
||||
"fall2020ThirdEyeMageSet": "Third Eye (Mage)",
|
||||
"fall2020TwoHeadedRogueSet": "Two-Headed (Rogue)",
|
||||
"winter2021IceFishingWarriorSet": "Ice Fisher (Warrior)",
|
||||
"winter2021WinterMoonMageSet": "Winter Moon (Mage)",
|
||||
"winter2021ArcticExplorerHealerSet": "Arctic Explorer (Healer)",
|
||||
"winter2021HollyIvyRogueSet": "Holly and Ivy (Rogue)",
|
||||
"spring2021SunstoneWarriorSet": "Sunstone (Warrior)",
|
||||
"spring2021SwanMageSet": "Swan (Mage)",
|
||||
"spring2021WillowHealerSet": "Willow (Healer)",
|
||||
"spring2021TwinFlowerRogueSet": "Twin Flower (Rogue)",
|
||||
"summer2021FlyingFishWarriorSet": "Flying Fish (Warrior)",
|
||||
"summer2021NautilusMageSet": "Nautilus (Mage)",
|
||||
"summer2021ParrotHealerSet": "Parrot (Healer)",
|
||||
"summer2021ClownfishRogueSet": "Clownfish (Rogue)",
|
||||
"fall2021OozeRogueSet": "Ooze (Rogue)",
|
||||
"fall2021HeadlessWarriorSet": "Headless (Warrior)",
|
||||
"fall2021BrainEaterMageSet": "Brain Eater (Mage)",
|
||||
"fall2021FlameSummonerHealerSet": "Flame Summoner (Healer)",
|
||||
"winter2022FireworksRogueSet": "Fireworks (Rogue)",
|
||||
"winter2022StockingWarriorSet": "Stocking (Warrior)",
|
||||
"winter2022PomegranateMageSet": "Pomegranate (Mage)",
|
||||
"winter2022IceCrystalHealerSet": "Ice Crystal (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",
|
||||
"dateEndApril": "April 19",
|
||||
"dateEndMay": "May 31",
|
||||
"dateEndJune": "June 14",
|
||||
"augustYYYY": "August <%= year %>",
|
||||
"septemberYYYY": "September <%= year %>",
|
||||
"decemberYYYY": "December <%= year %>",
|
||||
"marchYYYY": "March <%= year %>",
|
||||
"mayYYYY": "May <%= year %>",
|
||||
"juneYYYY": "June <%= year %>",
|
||||
"novemberYYYY": "November <%= year %>",
|
||||
"januaryYYYY": "January <%= year %>",
|
||||
"dateEndJuly": "July 31",
|
||||
"dateEndAugust": "August 31",
|
||||
"dateEndSeptember": "September 21",
|
||||
"dateEndOctober": "October 31",
|
||||
"dateEndNovember": "November 30",
|
||||
"dateEndJanuary": "January 31",
|
||||
"dateEndFebruary": "February 29",
|
||||
"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!",
|
||||
"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",
|
||||
"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!",
|
||||
"g1g1": "Gift One, Get One",
|
||||
"g1g1Event": "Gift One, Get One event going on now!",
|
||||
"g1g1Returning": "In honor of the season, we’re bringing back a very special promotion. Now when you gift a subscription, you’ll receive the same in return!",
|
||||
"howItWorks": "How it Works",
|
||||
"g1g1HowItWorks": "Type in the username of the account you’d like to gift to. From there, pick the sub length you’d like to gift and check out. Your account will automatically be rewarded with the same level of subscription you just gifted.",
|
||||
"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.",
|
||||
"noLongerAvailable": "This item is no longer available."
|
||||
}
|
||||
|
||||
@@ -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 March 31.",
|
||||
"cuddleBuddiesNotes": "Contains 'The Killer Bunny', 'The Nefarious Ferret', and 'The Guinea Pig Gang'. Available until May 31.",
|
||||
|
||||
"aquaticAmigosText": "Aquatic Amigos Quest Bundle",
|
||||
"aquaticAmigosNotes": "Contains 'The Magical Axolotl', 'The Kraken of Inkomplete', and 'The Call of Octothulu'. Available until August 31.",
|
||||
|
||||
@@ -131,7 +131,6 @@
|
||||
"mysterySet202112": "Antarctic Undine Set",
|
||||
"mysterySet202201": "Midnight Merrymaker Set",
|
||||
"mysterySet202202": "Turquoise Twintails Set",
|
||||
"mysterySet202203": "Dauntless Dragonfly Set",
|
||||
"mysterySet301404": "Steampunk Standard Set",
|
||||
"mysterySet301405": "Steampunk Accessories Set",
|
||||
"mysterySet301703": "Peacock Steampunk Set",
|
||||
|
||||
@@ -272,11 +272,6 @@ const basicAchievs = {
|
||||
titleKey: 'achievementZodiacZookeeper',
|
||||
textKey: 'achievementZodiacZookeeperText',
|
||||
},
|
||||
birdsOfAFeather: {
|
||||
icon: 'achievement-birdsOfAFeather',
|
||||
titleKey: 'achievementBirdsOfAFeather',
|
||||
textKey: 'achievementBirdsOfAFeatherText',
|
||||
},
|
||||
};
|
||||
Object.assign(achievementsData, basicAchievs);
|
||||
|
||||
|
||||
@@ -485,11 +485,6 @@ const backgrounds = {
|
||||
orange_grove: { },
|
||||
iridescent_clouds: { },
|
||||
},
|
||||
backgrounds032022: {
|
||||
animals_den: { },
|
||||
brick_wall_with_ivy: { },
|
||||
flowering_prairie: { },
|
||||
},
|
||||
timeTravelBackgrounds: {
|
||||
airship: {
|
||||
price: 1,
|
||||
|
||||
@@ -114,7 +114,7 @@ const bundles = {
|
||||
'guineapig',
|
||||
],
|
||||
canBuy () {
|
||||
return moment().isBetween('2022-03-15T08:00-04:00', '2022-03-31T20:00-04:00');
|
||||
return moment().isBetween('2018-05-08', '2018-06-02');
|
||||
},
|
||||
type: 'quests',
|
||||
value: 7,
|
||||
@@ -190,7 +190,7 @@ const bundles = {
|
||||
'gryphon',
|
||||
],
|
||||
canBuy () {
|
||||
return moment().isBefore('2022-02-28T20:00-05:00');
|
||||
return moment().isBefore('2021-02-28T08:00-05:00');
|
||||
},
|
||||
type: 'quests',
|
||||
value: 7,
|
||||
|
||||
@@ -11,21 +11,6 @@ const ANIMAL_SET_ACHIEVEMENTS = {
|
||||
achievementKey: 'legendaryBestiary',
|
||||
notificationType: 'ACHIEVEMENT_LEGENDARY_BESTIARY',
|
||||
},
|
||||
birdsOfAFeather: {
|
||||
type: 'pet',
|
||||
species: [
|
||||
'FlyingPig',
|
||||
'Owl',
|
||||
'Parrot',
|
||||
'Pterodactyl',
|
||||
'Gryphon',
|
||||
'Falcon',
|
||||
'Rooster',
|
||||
'Peacock',
|
||||
],
|
||||
achievementKey: 'birdsOfAFeather',
|
||||
notificationType: 'ACHIEVEMENT_BIRDS_OF_A_FEATHER',
|
||||
},
|
||||
domesticated: {
|
||||
type: 'pet',
|
||||
species: [
|
||||
|
||||
@@ -10,24 +10,11 @@ const gemsPromo = {
|
||||
|
||||
export const EVENTS = {
|
||||
noCurrentEvent: {
|
||||
start: '2022-04-30T20:00-05:00',
|
||||
end: '2022-06-30T20:00-05:00',
|
||||
start: '2022-01-31T20:00-05:00',
|
||||
end: '2022-02-28T20: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',
|
||||
season: 'valentines',
|
||||
npcImageSuffix: 'valentines',
|
||||
},
|
||||
winter2022: {
|
||||
start: '2021-12-21T08:00-05:00',
|
||||
end: '2022-01-31T20:00-05:00',
|
||||
@@ -106,6 +93,12 @@ export const EVENTS = {
|
||||
end: '2021-04-02T08:00-05:00',
|
||||
aprilFools: 'invert',
|
||||
},
|
||||
valentines2021: {
|
||||
start: '2021-02-07T08:00-05:00',
|
||||
end: '2021-02-16T08:00-05:00',
|
||||
season: 'valentines',
|
||||
npcImageSuffix: 'valentines',
|
||||
},
|
||||
winter2021: {
|
||||
start: '2020-12-17T08:00-05:00',
|
||||
end: '2021-01-31T20:00-05:00',
|
||||
@@ -113,14 +106,13 @@ export const EVENTS = {
|
||||
npcImageSuffix: 'winter',
|
||||
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',
|
||||
end: '2020-12-17T20:00-05:00',
|
||||
season: 'winter',
|
||||
promo: 'g1g1',
|
||||
},
|
||||
fall2020: {
|
||||
fall2020: {
|
||||
start: '2020-09-22T08:00-04:00',
|
||||
end: '2020-10-31T20:00-04:00',
|
||||
gear: true,
|
||||
@@ -131,30 +123,30 @@ export const EVENTS = {
|
||||
summer2020: { start: '2020-06-18', end: '2020-08-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 },
|
||||
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 },
|
||||
spring2019: { start: '2019-03-19', end: '2019-05-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 },
|
||||
spring2018: { start: '2018-03-20', end: '2018-05-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 },
|
||||
spring2017: { start: '2017-03-21', end: '2017-05-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 },
|
||||
spring2016: { start: '2016-03-18', end: '2016-05-02', gear: true },
|
||||
winter2016: { start: '2015-12-18', end: '2016-02-02', gear: true },
|
||||
gaymerx: { start: '2016-09-29', end: '2016-10-03' },
|
||||
fall2015: { start: '2015-09-21', end: '2015-11-01', gear: true },
|
||||
gaymerx: { start: '2016-09-29', end: '2016-10-03' },
|
||||
fall2015: { start: '2015-09-21', end: '2015-11-01', gear: true },
|
||||
summer2015: { start: '2015-06-20', end: '2015-08-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 },
|
||||
fall: { start: '2014-09-21', end: '2014-11-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 },
|
||||
birthday: { start: '2017-01-31', end: '2017-02-02' },
|
||||
winter: { start: '2013-12-31', end: '2014-02-01' },
|
||||
fall: { start: '2014-09-21', end: '2014-11-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 },
|
||||
birthday: { start: '2017-01-31', end: '2017-02-02' },
|
||||
winter: { start: '2013-12-31', end: '2014-02-01' },
|
||||
};
|
||||
|
||||
@@ -67,37 +67,36 @@ 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',
|
||||
|
||||
@@ -388,10 +388,6 @@ const armor = {
|
||||
str: 7,
|
||||
set: 'violetLoungewear',
|
||||
},
|
||||
gardenersOveralls: {
|
||||
con: 7,
|
||||
set: 'gardenerSet',
|
||||
},
|
||||
};
|
||||
|
||||
const body = {
|
||||
@@ -791,10 +787,6 @@ const head = {
|
||||
per: 10,
|
||||
set: 'shootingStar',
|
||||
},
|
||||
gardenersSunHat: {
|
||||
per: 7,
|
||||
set: 'gardenerSet',
|
||||
},
|
||||
};
|
||||
|
||||
const shield = {
|
||||
@@ -1064,10 +1056,6 @@ const shield = {
|
||||
int: 10,
|
||||
set: 'violetLoungewear',
|
||||
},
|
||||
gardenersSpade: {
|
||||
str: 8,
|
||||
set: 'gardenerSet',
|
||||
},
|
||||
};
|
||||
|
||||
const headAccessory = {
|
||||
@@ -1448,10 +1436,6 @@ const weapon = {
|
||||
str: 5,
|
||||
twoHanded: true,
|
||||
},
|
||||
gardenersWateringCan: {
|
||||
int: 8,
|
||||
set: 'gardenerSet',
|
||||
},
|
||||
};
|
||||
|
||||
forEach({
|
||||
|
||||
@@ -89,7 +89,6 @@ const back = {
|
||||
202012: { },
|
||||
202105: { },
|
||||
202109: { },
|
||||
202203: { },
|
||||
};
|
||||
|
||||
const body = {
|
||||
@@ -208,7 +207,6 @@ const headAccessory = {
|
||||
202102: { },
|
||||
202105: { },
|
||||
202109: { },
|
||||
202203: { },
|
||||
301405: { },
|
||||
};
|
||||
|
||||
|
||||
@@ -670,19 +670,15 @@ 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',
|
||||
@@ -720,19 +716,6 @@ const armor = {
|
||||
winter2022Healer: {
|
||||
set: 'winter2022IceCrystalHealerSet',
|
||||
},
|
||||
spring2022Rogue: {
|
||||
set: 'spring2022MagpieRogueSet',
|
||||
},
|
||||
spring2022Warrior: {
|
||||
set: 'spring2022RainstormWarriorSet',
|
||||
},
|
||||
spring2022Mage: {
|
||||
set: 'spring2022ForsythiaMageSet',
|
||||
},
|
||||
spring2022Healer: {
|
||||
set: 'spring2022PeridotHealerSet',
|
||||
},
|
||||
|
||||
birthday2022: {
|
||||
text: t('armorSpecialBirthday2022Text'),
|
||||
notes: t('armorSpecialBirthday2022Notes'),
|
||||
@@ -1745,19 +1728,15 @@ 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',
|
||||
@@ -1801,18 +1780,6 @@ const head = {
|
||||
value: 0,
|
||||
canOwn: ownsItem('head_special_nye2021'),
|
||||
},
|
||||
spring2022Rogue: {
|
||||
set: 'spring2022MagpieRogueSet',
|
||||
},
|
||||
spring2022Warrior: {
|
||||
set: 'spring2022RainstormWarriorSet',
|
||||
},
|
||||
spring2022Mage: {
|
||||
set: 'spring2022ForsythiaMageSet',
|
||||
},
|
||||
spring2022Healer: {
|
||||
set: 'spring2022PeridotHealerSet',
|
||||
},
|
||||
};
|
||||
|
||||
const headStats = {
|
||||
@@ -2537,15 +2504,12 @@ 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',
|
||||
@@ -2574,15 +2538,6 @@ const shield = {
|
||||
winter2022Healer: {
|
||||
set: 'winter2022IceCrystalHealerSet',
|
||||
},
|
||||
spring2022Rogue: {
|
||||
set: 'spring2022MagpieRogueSet',
|
||||
},
|
||||
spring2022Warrior: {
|
||||
set: 'spring2022RainstormWarriorSet',
|
||||
},
|
||||
spring2022Healer: {
|
||||
set: 'spring2022PeridotHealerSet',
|
||||
},
|
||||
};
|
||||
|
||||
const shieldStats = {
|
||||
@@ -3213,19 +3168,15 @@ 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',
|
||||
@@ -3263,18 +3214,6 @@ const weapon = {
|
||||
winter2022Healer: {
|
||||
set: 'winter2022IceCrystalHealerSet',
|
||||
},
|
||||
spring2022Rogue: {
|
||||
set: 'spring2022MagpieRogueSet',
|
||||
},
|
||||
spring2022Warrior: {
|
||||
set: 'spring2022RainstormWarriorSet',
|
||||
},
|
||||
spring2022Mage: {
|
||||
set: 'spring2022ForsythiaMageSet',
|
||||
},
|
||||
spring2022Healer: {
|
||||
set: 'spring2022PeridotHealerSet',
|
||||
},
|
||||
};
|
||||
|
||||
const weaponStats = {
|
||||
|
||||
@@ -3,10 +3,13 @@ import defaults from 'lodash/defaults';
|
||||
import each from 'lodash/each';
|
||||
import moment from 'moment';
|
||||
import t from './translation';
|
||||
import { EVENTS } from './constants';
|
||||
import {
|
||||
EVENTS,
|
||||
} from './constants';
|
||||
|
||||
function hasQuestAchievementFunction (key) {
|
||||
return user => user.achievements.quests && user.achievements.quests[key] > 0;
|
||||
return user => user.achievements.quests
|
||||
&& user.achievements.quests[key] > 0;
|
||||
}
|
||||
|
||||
const drops = {
|
||||
@@ -63,7 +66,7 @@ const premium = {
|
||||
text: t('hatchingPotionCupid'),
|
||||
limited: true,
|
||||
canBuy () {
|
||||
return moment().isBefore('2022-02-28T20:00-05:00');
|
||||
return moment().isBefore('2021-02-28T20:00-05:00');
|
||||
},
|
||||
},
|
||||
Shimmer: {
|
||||
@@ -277,7 +280,7 @@ const premium = {
|
||||
text: t('hatchingPotionRoseQuartz'),
|
||||
limited: true,
|
||||
canBuy () {
|
||||
return moment().isBefore('2022-02-28T20:00-05:00');
|
||||
return moment().isBefore('2021-02-28T20:00-05:00');
|
||||
},
|
||||
},
|
||||
Celestial: {
|
||||
@@ -585,12 +588,9 @@ each(wacky, (pot, key) => {
|
||||
notes: t('hatchingPotionNotes', {
|
||||
potText: pot.text,
|
||||
}),
|
||||
_addlNotes:
|
||||
pot._season && pot._season !== '_PENDING_'
|
||||
? t('eventAvailability', {
|
||||
date: t(`dateEnd${pot._season}`),
|
||||
})
|
||||
: null,
|
||||
_addlNotes: pot._season && pot._season !== '_PENDING_' ? t('eventAvailability', {
|
||||
date: t(`dateEnd${pot._season}`),
|
||||
}) : null,
|
||||
premium: false,
|
||||
limited: true,
|
||||
wacky: true,
|
||||
@@ -603,5 +603,8 @@ each(wacky, (pot, key) => {
|
||||
const all = assign({}, drops, premium, wacky);
|
||||
|
||||
export {
|
||||
drops, premium, wacky, all,
|
||||
drops,
|
||||
premium,
|
||||
wacky,
|
||||
all,
|
||||
};
|
||||
|
||||
@@ -20,7 +20,11 @@ import * as eggs from './eggs';
|
||||
import * as hatchingPotions from './hatching-potions';
|
||||
import * as stable from './stable';
|
||||
import gear from './gear';
|
||||
import { quests, questsByLevel, userCanOwnQuestCategories } from './quests';
|
||||
import {
|
||||
quests,
|
||||
questsByLevel,
|
||||
userCanOwnQuestCategories,
|
||||
} from './quests';
|
||||
|
||||
import appearances from './appearance';
|
||||
import { backgroundsTree, backgroundsFlat } from './appearance/backgrounds';
|
||||
@@ -53,23 +57,7 @@ api.spells = spells;
|
||||
api.subscriptionBlocks = subscriptionBlocks;
|
||||
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.timeTravelerStore = timeTravelers.timeTravelerStore;
|
||||
@@ -133,7 +121,7 @@ api.cardTypes = {
|
||||
valentine: {
|
||||
key: 'valentine',
|
||||
messageOptions: 4,
|
||||
yearRound: moment().isBefore('2022-02-18T20:00-05:00'),
|
||||
yearRound: moment().isBefore('2021-02-28T20:00-05:00'),
|
||||
},
|
||||
birthday: {
|
||||
key: 'birthday',
|
||||
@@ -644,8 +632,7 @@ api.userDefaults = {
|
||||
t('defaultTag4'), // School
|
||||
t('defaultTag6'), // Chores
|
||||
],
|
||||
},
|
||||
{
|
||||
}, {
|
||||
type: 'habit',
|
||||
text: t('defaultHabit2Text'),
|
||||
value: 0,
|
||||
@@ -655,8 +642,7 @@ api.userDefaults = {
|
||||
tags: [
|
||||
t('defaultTag3'), // Health + Wellness
|
||||
],
|
||||
},
|
||||
{
|
||||
}, {
|
||||
type: 'habit',
|
||||
text: t('defaultHabit3Text'),
|
||||
value: 0,
|
||||
@@ -689,23 +675,17 @@ api.userDefaults = {
|
||||
tags: [
|
||||
{
|
||||
name: t('defaultTag1'),
|
||||
},
|
||||
{
|
||||
}, {
|
||||
name: t('defaultTag2'),
|
||||
},
|
||||
{
|
||||
}, {
|
||||
name: t('defaultTag3'),
|
||||
},
|
||||
{
|
||||
}, {
|
||||
name: t('defaultTag4'),
|
||||
},
|
||||
{
|
||||
}, {
|
||||
name: t('defaultTag5'),
|
||||
},
|
||||
{
|
||||
}, {
|
||||
name: t('defaultTag6'),
|
||||
},
|
||||
{
|
||||
}, {
|
||||
name: t('defaultTag7'),
|
||||
},
|
||||
],
|
||||
|
||||
@@ -4,7 +4,7 @@ import moment from 'moment';
|
||||
// path: 'premiumHatchingPotions.Rainbow',
|
||||
const featuredItems = {
|
||||
market () {
|
||||
if (moment().isBefore('2022-02-28T20:00-05:00')) {
|
||||
if (moment().isBefore('2022-01-31T20:00-05:00')) {
|
||||
return [
|
||||
{
|
||||
type: 'armoire',
|
||||
@@ -12,15 +12,15 @@ const featuredItems = {
|
||||
},
|
||||
{
|
||||
type: 'premiumHatchingPotion',
|
||||
path: 'premiumHatchingPotions.Cupid',
|
||||
path: 'premiumHatchingPotions.StainedGlass',
|
||||
},
|
||||
{
|
||||
type: 'premiumHatchingPotion',
|
||||
path: 'premiumHatchingPotions.RoseQuartz',
|
||||
path: 'premiumHatchingPotions.Peppermint',
|
||||
},
|
||||
{
|
||||
type: 'hatchingPotions',
|
||||
path: 'hatchingPotions.CottonCandyPink',
|
||||
type: 'premiumHatchingPotion',
|
||||
path: 'premiumHatchingPotions.Holly',
|
||||
},
|
||||
];
|
||||
}
|
||||
@@ -44,19 +44,35 @@ const featuredItems = {
|
||||
];
|
||||
},
|
||||
quests () {
|
||||
if (moment().isBefore('2022-03-31T20:00-04:00')) {
|
||||
if (moment().isBefore('2022-01-11T08:00-05:00')) {
|
||||
return [
|
||||
{
|
||||
type: 'quests',
|
||||
path: 'quests.evilsanta',
|
||||
},
|
||||
{
|
||||
type: 'quests',
|
||||
path: 'quests.evilsanta2',
|
||||
},
|
||||
{
|
||||
type: 'quests',
|
||||
path: 'quests.penguin',
|
||||
},
|
||||
];
|
||||
}
|
||||
if (moment().isBefore('2022-01-31T20:00-05:00')) {
|
||||
return [
|
||||
{
|
||||
type: 'bundles',
|
||||
path: 'bundles.cuddleBuddies',
|
||||
path: 'bundles.winterQuests',
|
||||
},
|
||||
{
|
||||
type: 'quests',
|
||||
path: 'quests.egg',
|
||||
path: 'quests.silver',
|
||||
},
|
||||
{
|
||||
type: 'quests',
|
||||
path: 'quests.ghost_stag',
|
||||
path: 'quests.sheep',
|
||||
},
|
||||
];
|
||||
}
|
||||
@@ -67,7 +83,7 @@ const featuredItems = {
|
||||
},
|
||||
{
|
||||
type: 'quests',
|
||||
path: 'quests.silver',
|
||||
path: 'quests.bronze',
|
||||
},
|
||||
{
|
||||
type: 'quests',
|
||||
@@ -75,7 +91,7 @@ const featuredItems = {
|
||||
},
|
||||
];
|
||||
},
|
||||
seasonal: 'spring2021Healer',
|
||||
seasonal: 'winter2021Warrior',
|
||||
timeTravelers: [
|
||||
// TODO
|
||||
],
|
||||
|
||||
@@ -216,7 +216,6 @@ function _getBasicAchievements (user, language) {
|
||||
_addSimple(result, user, { path: 'shadyCustomer', language });
|
||||
_addSimple(result, user, { path: 'shadeOfItAll', language });
|
||||
_addSimple(result, user, { path: 'zodiacZookeeper', language });
|
||||
_addSimple(result, user, { path: 'birdsOfAFeather', language });
|
||||
|
||||
_addSimpleWithMasterCount(result, user, { path: 'beastMaster', language });
|
||||
_addSimpleWithMasterCount(result, user, { path: 'mountMaster', language });
|
||||
|
||||
@@ -30,24 +30,20 @@ export default {
|
||||
|
||||
pinnedSets: SHOP_OPEN
|
||||
? {
|
||||
healer: 'spring2022PeridotHealerSet',
|
||||
rogue: 'spring2022MagpieRogueSet',
|
||||
warrior: 'spring2022RainstormWarriorSet',
|
||||
wizard: 'spring2022ForsythiaMageSet',
|
||||
healer: 'winter2022IceCrystalHealerSet',
|
||||
rogue: 'winter2022FireworksRogueSet',
|
||||
warrior: 'winter2022StockingWarriorSet',
|
||||
wizard: 'winter2022PomegranateMageSet',
|
||||
}
|
||||
: {},
|
||||
|
||||
availableSpells: SHOP_OPEN && moment().isBetween('2022-04-12T08:00-05:00', CURRENT_EVENT.end)
|
||||
availableSpells: SHOP_OPEN && moment().isBetween('2021-12-30T08:00-04:00', CURRENT_EVENT.end)
|
||||
? [
|
||||
'shinySeed',
|
||||
'snowball',
|
||||
]
|
||||
: [],
|
||||
|
||||
availableQuests: SHOP_OPEN && CURRENT_EVENT.season === 'spring'
|
||||
? [
|
||||
'egg',
|
||||
]
|
||||
: [],
|
||||
availableQuests: [],
|
||||
|
||||
featuredSet: 'spring2021TwinFlowerRogueSet',
|
||||
featuredSet: 'winter2021ArcticExplorerHealerSet',
|
||||
};
|
||||
|
||||
@@ -22,6 +22,7 @@ import {
|
||||
} from '../../libs/email';
|
||||
import * as inboxLib from '../../libs/inbox';
|
||||
import * as userLib from '../../libs/user';
|
||||
import logger from '../../libs/logger';
|
||||
|
||||
const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL');
|
||||
const DELETE_CONFIRMATION = 'DELETE';
|
||||
@@ -1013,6 +1014,7 @@ api.purchase = {
|
||||
if (req.body.quantity) quantity = req.body.quantity;
|
||||
req.quantity = quantity;
|
||||
|
||||
logger.info('AAAAHHHHHH');
|
||||
const purchaseRes = await common.ops.buy(user, req, res.analytics);
|
||||
await user.save();
|
||||
res.respond(200, ...purchaseRes);
|
||||
|
||||
@@ -246,7 +246,7 @@ api.cancelSubscribe = async function cancelSubscribe (user, headers) {
|
||||
if (purchases.length === 0) throw new NotAuthorized(this.constants.RESPONSE_INVALID_RECEIPT);
|
||||
const subscriptionData = purchases[0];
|
||||
// Check to make sure the sub isn't active anymore.
|
||||
if (subscriptionData.autoRenewing !== false) return;
|
||||
if (subscriptionData.autoRenews) return;
|
||||
|
||||
dateTerminated = new Date(Number(subscriptionData.expirationDate));
|
||||
} catch (err) {
|
||||
|
||||
@@ -144,21 +144,10 @@ function _setUpNewUser (user) {
|
||||
user.items.quests.dustbunnies = 1;
|
||||
user.purchased.background.violet = true;
|
||||
user.preferences.background = 'violet';
|
||||
if (moment().isBefore('2022-03-15T20:00-04:00')) {
|
||||
user.items.gear.owned.head_special_piDay = true;
|
||||
user.items.gear.equipped.head = 'head_special_piDay';
|
||||
user.items.gear.owned.shield_special_piDay = true;
|
||||
user.items.gear.equipped.shield = 'shield_special_piDay';
|
||||
user.items.food.Pie_Skeleton = 1;
|
||||
user.items.food.Pie_Base = 1;
|
||||
user.items.food.Pie_CottonCandyBlue = 1;
|
||||
user.items.food.Pie_CottonCandyPink = 1;
|
||||
user.items.food.Pie_Shade = 1;
|
||||
user.items.food.Pie_White = 1;
|
||||
user.items.food.Pie_Golden = 1;
|
||||
user.items.food.Pie_Zombie = 1;
|
||||
user.items.food.Pie_Desert = 1;
|
||||
user.items.food.Pie_Red = 1;
|
||||
if (moment().isBefore('2022-02-02T20:00-05:00')) {
|
||||
user.migration = '20220131_habit_birthday';
|
||||
user.items.gear.owned.armor_special_birthday = true;
|
||||
user.items.gear.equipped.armor = 'armor_special_birthday';
|
||||
}
|
||||
|
||||
user.markModified('items achievements');
|
||||
|
||||
@@ -71,7 +71,6 @@ const NOTIFICATION_TYPES = [
|
||||
'ACHIEVEMENT_SHADY_CUSTOMER',
|
||||
'ACHIEVEMENT_SHADE_OF_IT_ALL',
|
||||
'ACHIEVEMENT_ZODIAC_ZOOKEEPER',
|
||||
'ACHIEVEMENT_BIRDS_OF_A_FEATHER',
|
||||
'ACHIEVEMENT', // generic achievement notification, details inside `notification.data`
|
||||
'DROP_CAP_REACHED',
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user