feat(content): Cotton Candy Pink Prizes

This commit is contained in:
Sabe Jones
2020-02-17 11:37:37 -06:00
parent 6e0739c996
commit 69179c61b1
16 changed files with 399 additions and 233 deletions

View File

@@ -0,0 +1,82 @@
/* eslint-disable no-console */
const MIGRATION_NAME = '20200218_pet_color_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['Wolf-CottonCandyPink'] > 0
&& pets['TigerCub-CottonCandyPink'] > 0
&& pets['PandaCub-CottonCandyPink'] > 0
&& pets['LionCub-CottonCandyPink'] > 0
&& pets['Fox-CottonCandyPink'] > 0
&& pets['FlyingPig-CottonCandyPink'] > 0
&& pets['Dragon-CottonCandyPink'] > 0
&& pets['Cactus-CottonCandyPink'] > 0
&& pets['BearCub-CottonCandyPink'] > 0) {
set['achievements.tickledPink'] = true;
}
}
if (user && user.items && user.items.mounts) {
const mounts = user.items.mounts;
if (mounts['Wolf-CottonCandyPink']
&& mounts['TigerCub-CottonCandyPink']
&& mounts['PandaCub-CottonCandyPink']
&& mounts['LionCub-CottonCandyPink']
&& mounts['Fox-CottonCandyPink']
&& mounts['FlyingPig-CottonCandyPink']
&& mounts['Dragon-CottonCandyPink']
&& mounts['Cactus-CottonCandyPink']
&& mounts['BearCub-CottonCandyPink'] ) {
set['achievements.rosyOutlook'] = true;
}
}
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
return await User.update({ _id: user._id }, { $set: set }).exec();
}
module.exports = async function processUsers () {
let query = {
migration: { $ne: MIGRATION_NAME },
'auth.timestamps.loggedin': { $gt: new Date('2020-02-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
}
};

View File

@@ -1,3 +1,9 @@
.promo_achievement_CottonCandyPink {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -328px -148px;
width: 204px;
height: 102px;
}
.promo_armoire_backgrounds_202002 {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -328px 0px;
@@ -12,7 +18,7 @@
}
.promo_take_this {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -533px -148px;
background-position: -283px -425px;
width: 96px;
height: 69px;
}
@@ -30,7 +36,7 @@
}
.scene_cake {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -328px -148px;
background-position: -533px -148px;
width: 204px;
height: 102px;
}

View File

@@ -1,222 +1,222 @@
.achievement-alien {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1656px -1480px;
background-position: -1446px -1628px;
width: 24px;
height: 26px;
}
.achievement-alien2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -715px -1549px;
background-position: -813px -1549px;
width: 48px;
height: 52px;
}
.achievement-allYourBase2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -759px -1480px;
background-position: -1092px -1480px;
width: 64px;
height: 56px;
}
.achievement-alpha2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1225px -1628px;
background-position: -1372px -1628px;
width: 48px;
height: 52px;
}
.achievement-aridAuthority2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -954px -1480px;
background-position: -1027px -1480px;
width: 64px;
height: 56px;
}
.achievement-armor2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1127px -1628px;
background-position: -1274px -1628px;
width: 48px;
height: 52px;
}
.achievement-backToBasics2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1411px -1480px;
background-position: -1549px -1480px;
width: 48px;
height: 56px;
}
.achievement-bewilder2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1029px -1628px;
background-position: -1176px -1628px;
width: 48px;
height: 52px;
}
.achievement-birthday2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -980px -1628px;
background-position: -1127px -1628px;
width: 48px;
height: 52px;
}
.achievement-boot2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -931px -1628px;
background-position: -1078px -1628px;
width: 48px;
height: 52px;
}
.achievement-bow2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -882px -1628px;
background-position: -1029px -1628px;
width: 48px;
height: 52px;
}
.achievement-burnout2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -833px -1628px;
background-position: -980px -1628px;
width: 48px;
height: 52px;
}
.achievement-cactus2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -784px -1628px;
background-position: -931px -1628px;
width: 48px;
height: 52px;
}
.achievement-cake2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -735px -1628px;
background-position: -882px -1628px;
width: 48px;
height: 52px;
}
.achievement-cave2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -686px -1628px;
background-position: -833px -1628px;
width: 48px;
height: 52px;
}
.achievement-challenge2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -637px -1628px;
background-position: -784px -1628px;
width: 48px;
height: 52px;
}
.achievement-comment2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -588px -1628px;
background-position: -735px -1628px;
width: 48px;
height: 52px;
}
.achievement-completedTask2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1362px -1480px;
background-position: -1500px -1480px;
width: 48px;
height: 56px;
}
.achievement-congrats2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -490px -1628px;
background-position: -637px -1628px;
width: 48px;
height: 52px;
}
.achievement-costumeContest2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -441px -1628px;
background-position: -588px -1628px;
width: 48px;
height: 52px;
}
.achievement-createdTask2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1313px -1480px;
background-position: -1451px -1480px;
width: 48px;
height: 56px;
}
.achievement-dilatory2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -343px -1628px;
background-position: -490px -1628px;
width: 48px;
height: 52px;
}
.achievement-dustDevil2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1264px -1480px;
background-position: -1402px -1480px;
width: 48px;
height: 56px;
}
.achievement-dysheartener2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -245px -1628px;
background-position: -392px -1628px;
width: 48px;
height: 52px;
}
.achievement-fedPet2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1215px -1480px;
background-position: -1353px -1480px;
width: 48px;
height: 56px;
}
.achievement-friends2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -147px -1628px;
background-position: -294px -1628px;
width: 48px;
height: 52px;
}
.achievement-getwell2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -98px -1628px;
background-position: -245px -1628px;
width: 48px;
height: 52px;
}
.achievement-goodluck2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -49px -1628px;
background-position: -196px -1628px;
width: 48px;
height: 52px;
}
.achievement-greeting2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -1628px;
background-position: -147px -1628px;
width: 48px;
height: 52px;
}
.achievement-guild2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1646px -1549px;
background-position: -98px -1628px;
width: 48px;
height: 52px;
}
.achievement-habitBirthday2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1597px -1549px;
background-position: -49px -1628px;
width: 48px;
height: 52px;
}
.achievement-habiticaDay2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1548px -1549px;
background-position: 0px -1628px;
width: 48px;
height: 52px;
}
.achievement-hatchedPet2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1166px -1480px;
background-position: -1304px -1480px;
width: 48px;
height: 56px;
}
.achievement-heart2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1450px -1549px;
background-position: -1597px -1549px;
width: 48px;
height: 52px;
}
.achievement-justAddWater2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -637px -1480px;
background-position: -775px -1480px;
width: 60px;
height: 64px;
}
.achievement-karaoke-2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1352px -1549px;
background-position: -1499px -1549px;
width: 48px;
height: 52px;
}
.achievement-karaoke {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1323px -1628px;
background-position: -1421px -1628px;
width: 24px;
height: 26px;
}
@@ -228,529 +228,541 @@
}
.achievement-lostMasterclasser2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1205px -1549px;
background-position: -1352px -1549px;
width: 48px;
height: 52px;
}
.achievement-mindOverMatter2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -698px -1480px;
background-position: -836px -1480px;
width: 60px;
height: 64px;
}
.achievement-monsterMagus2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1019px -1480px;
background-position: -1157px -1480px;
width: 48px;
height: 56px;
}
.achievement-ninja2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1058px -1549px;
background-position: -1205px -1549px;
width: 48px;
height: 52px;
}
.achievement-npc2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1009px -1549px;
background-position: -1156px -1549px;
width: 48px;
height: 52px;
}
.achievement-nye2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -960px -1549px;
background-position: -1107px -1549px;
width: 48px;
height: 52px;
}
.achievement-partyOn2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -911px -1549px;
background-position: -1058px -1549px;
width: 48px;
height: 52px;
}
.achievement-partyUp2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -862px -1549px;
background-position: -1009px -1549px;
width: 48px;
height: 52px;
}
.achievement-pearlyPro2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -824px -1480px;
background-position: -962px -1480px;
width: 64px;
height: 56px;
}
.achievement-perfect2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -764px -1549px;
background-position: -911px -1549px;
width: 48px;
height: 52px;
}
.achievement-primedForPainting2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1068px -1480px;
background-position: -1206px -1480px;
width: 48px;
height: 56px;
}
.achievement-purchasedEquipment2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1117px -1480px;
background-position: -1255px -1480px;
width: 48px;
height: 56px;
}
.achievement-rat2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -617px -1549px;
background-position: -764px -1549px;
width: 48px;
height: 52px;
}
.achievement-rosyOutlook2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -706px -1480px;
width: 68px;
height: 68px;
}
.achievement-royally-loyal2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -1549px;
width: 48px;
height: 52px;
}
.achievement-seafoam2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1607px -1480px;
width: 48px;
height: 52px;
}
.achievement-shield2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1558px -1480px;
width: 48px;
height: 52px;
}
.achievement-shinySeed2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1509px -1480px;
width: 48px;
height: 52px;
}
.achievement-snowball2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1460px -1480px;
width: 48px;
height: 52px;
}
.achievement-spookySparkles2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1176px -1628px;
width: 48px;
height: 52px;
}
.achievement-stoikalm2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1078px -1628px;
width: 48px;
height: 52px;
}
.achievement-sun2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -539px -1628px;
width: 48px;
height: 52px;
}
.achievement-sword2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -392px -1628px;
width: 48px;
height: 52px;
}
.achievement-thankyou2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -294px -1628px;
width: 48px;
height: 52px;
}
.achievement-thermometer2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -196px -1628px;
width: 48px;
height: 52px;
}
.achievement-tree2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1499px -1549px;
width: 48px;
height: 52px;
}
.achievement-triadbingo2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1401px -1549px;
width: 48px;
height: 52px;
}
.achievement-ultimate-healer2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1254px -1549px;
width: 48px;
height: 52px;
}
.achievement-ultimate-mage2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1156px -1549px;
width: 48px;
height: 52px;
}
.achievement-ultimate-rogue2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1107px -1549px;
width: 48px;
height: 52px;
}
.achievement-ultimate-warrior2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -813px -1549px;
width: 48px;
height: 52px;
}
.achievement-undeadUndertaker2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -889px -1480px;
width: 64px;
height: 56px;
}
.achievement-unearned2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -666px -1549px;
width: 48px;
height: 52px;
}
.achievement-valentine2x {
.achievement-seafoam2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -617px -1549px;
width: 48px;
height: 52px;
}
.achievement-shield2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -1549px;
width: 48px;
height: 52px;
}
.achievement-shinySeed2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1647px -1480px;
width: 48px;
height: 52px;
}
.achievement-snowball2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1598px -1480px;
width: 48px;
height: 52px;
}
.achievement-spookySparkles2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1323px -1628px;
width: 48px;
height: 52px;
}
.achievement-stoikalm2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1225px -1628px;
width: 48px;
height: 52px;
}
.achievement-sun2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -686px -1628px;
width: 48px;
height: 52px;
}
.achievement-sword2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -539px -1628px;
width: 48px;
height: 52px;
}
.achievement-thankyou2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -441px -1628px;
width: 48px;
height: 52px;
}
.achievement-thermometer2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -343px -1628px;
width: 48px;
height: 52px;
}
.achievement-tickledPink2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -637px -1480px;
width: 68px;
height: 68px;
}
.achievement-tree2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1548px -1549px;
width: 48px;
height: 52px;
}
.achievement-triadbingo2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1450px -1549px;
width: 48px;
height: 52px;
}
.achievement-ultimate-healer2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1303px -1549px;
width: 48px;
height: 52px;
}
.achievement-ultimate-mage2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1254px -1549px;
width: 48px;
height: 52px;
}
.achievement-ultimate-rogue2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -960px -1549px;
width: 48px;
height: 52px;
}
.achievement-ultimate-warrior2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -862px -1549px;
width: 48px;
height: 52px;
}
.achievement-undeadUndertaker2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -897px -1480px;
width: 64px;
height: 56px;
}
.achievement-unearned2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -715px -1549px;
width: 48px;
height: 52px;
}
.achievement-valentine2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1646px -1549px;
width: 48px;
height: 52px;
}
.achievement-wolf2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1274px -1628px;
background-position: -1401px -1549px;
width: 48px;
height: 52px;
}
.background_alpine_slopes {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px 0px;
background-position: -1278px -296px;
width: 141px;
height: 147px;
}
.background_amid_ancient_ruins {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -148px;
background-position: -1278px -444px;
width: 141px;
height: 147px;
}
.background_among_giant_anemones {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -296px;
background-position: -1278px -592px;
width: 141px;
height: 147px;
}
.background_apple_picking {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -444px;
background-position: -1278px -740px;
width: 141px;
height: 147px;
}
.background_aquarium {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -592px;
background-position: -1278px -888px;
width: 141px;
height: 147px;
}
.background_archaeological_dig {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -740px;
background-position: -1278px -1036px;
width: 141px;
height: 147px;
}
.background_archery_range {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -888px;
background-position: 0px -1184px;
width: 141px;
height: 147px;
}
.background_at_the_docks {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -1036px;
background-position: -142px -1184px;
width: 141px;
height: 147px;
}
.background_aurora {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -1184px;
background-position: -284px -1184px;
width: 141px;
height: 147px;
}
.background_autumn_flower_garden {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -1184px;
background-position: -426px -1184px;
width: 141px;
height: 147px;
}
.customize-option.background_autumn_flower_garden {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -167px -1199px;
background-position: -451px -1199px;
width: 60px;
height: 60px;
}
.background_autumn_forest {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -1184px;
background-position: -568px -1184px;
width: 141px;
height: 147px;
}
.background_avalanche {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -1184px;
background-position: -710px -1184px;
width: 141px;
height: 147px;
}
.background_back_alley {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -1184px;
background-position: -852px -1184px;
width: 141px;
height: 147px;
}
.background_back_of_giant_beast {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -710px -1184px;
background-position: -994px -1184px;
width: 141px;
height: 147px;
}
.background_bamboo_forest {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -852px -1184px;
background-position: -1136px -1184px;
width: 141px;
height: 147px;
}
.background_bayou {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -1184px;
background-position: -1278px -1184px;
width: 141px;
height: 147px;
}
.background_beach {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -1184px;
background-position: -1420px 0px;
width: 141px;
height: 147px;
}
.background_beehive {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -1184px;
background-position: -1420px -148px;
width: 141px;
height: 147px;
}
.background_bell_tower {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px 0px;
background-position: -1420px -296px;
width: 141px;
height: 147px;
}
.background_beside_well {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -148px;
background-position: -1420px -444px;
width: 141px;
height: 147px;
}
.background_birch_forest {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -296px;
background-position: -1420px -592px;
width: 141px;
height: 147px;
}
.background_birthday_party {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -444px;
background-position: -1420px -740px;
width: 141px;
height: 147px;
}
.background_blacksmithy {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -592px;
background-position: -1420px -888px;
width: 141px;
height: 147px;
}
.background_blizzard {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -740px;
background-position: -1420px -1036px;
width: 141px;
height: 147px;
}
.background_blossoming_desert {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -888px;
background-position: -1420px -1184px;
width: 141px;
height: 147px;
}
.background_blue {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -1036px;
background-position: 0px 0px;
width: 141px;
height: 147px;
}
.background_bridge {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: 0px 0px;
background-position: -142px -1332px;
width: 141px;
height: 147px;
}
.background_bug_covered_log {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -1332px;
background-position: -284px -1332px;
width: 141px;
height: 147px;
}
.background_buried_treasure {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -1332px;
background-position: -426px -1332px;
width: 141px;
height: 147px;
}
.background_champions_colosseum {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -1332px;
background-position: -568px -1332px;
width: 141px;
height: 147px;
}
.background_cherry_trees {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -1332px;
background-position: -710px -1332px;
width: 141px;
height: 147px;
}
.background_chessboard_land {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -1332px;
background-position: -852px -1332px;
width: 141px;
height: 147px;
}
.background_clouds {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -710px -1332px;
background-position: -994px -1332px;
width: 141px;
height: 147px;
}
.background_coral_reef {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -852px -1332px;
background-position: -1136px -1332px;
width: 141px;
height: 147px;
}
.background_cornfields {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -1332px;
background-position: -1278px -1332px;
width: 141px;
height: 147px;
}
.background_cozy_barn {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -1332px;
background-position: -1420px -1332px;
width: 141px;
height: 147px;
}
.background_cozy_bedroom {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -1332px;
background-position: -1562px 0px;
width: 141px;
height: 147px;
}
.background_cozy_library {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -1332px;
background-position: -1562px -148px;
width: 141px;
height: 147px;
}
.background_creepy_castle {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px 0px;
background-position: -1562px -296px;
width: 141px;
height: 147px;
}
.background_crosscountry_ski_trail {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -148px;
background-position: -1562px -444px;
width: 141px;
height: 147px;
}
.background_crystal_cave {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -296px;
background-position: -1562px -592px;
width: 141px;
height: 147px;
}
.background_dark_deep {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -444px;
background-position: -1562px -740px;
width: 141px;
height: 147px;
}
.background_deep_mine {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -592px;
background-position: -1562px -888px;
width: 141px;
height: 147px;
}
.background_deep_sea {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -740px;
background-position: -1562px -1036px;
width: 141px;
height: 147px;
}
.background_desert_dunes {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -888px;
background-position: -1562px -1184px;
width: 141px;
height: 147px;
}
.background_desert_with_snow {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -1036px;
background-position: -1562px -1332px;
width: 141px;
height: 147px;
}
.background_dilatory_castle {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -1184px;
background-position: 0px -1480px;
width: 141px;
height: 147px;
}
.background_dilatory_city {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -1332px;
background-position: -142px -1480px;
width: 141px;
height: 147px;
}
.background_dilatory_ruins {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -1480px;
background-position: -284px -1480px;
width: 141px;
height: 147px;
}
.background_distant_castle {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -1480px;
background-position: -426px -1480px;
width: 141px;
height: 147px;
}
.background_dojo {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -1480px;
background-position: 0px -1332px;
width: 141px;
height: 147px;
}
.background_drifting_raft {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -1480px;
background-position: -1278px -148px;
width: 141px;
height: 147px;
}
.background_driving_a_coach {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -1184px;
background-position: -1278px 0px;
width: 141px;
height: 147px;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 475 KiB

After

Width:  |  Height:  |  Size: 475 KiB

View File

@@ -294,6 +294,22 @@ const NOTIFICATIONS = {
achievement: 'pearlyPro', // defined manually until the server sends all the necessary data
},
},
ACHIEVEMENT_TICKLED_PINK: {
achievement: true,
label: $t => `${$t('achievement')}: ${$t('achievementTickledPink')}`,
modalId: 'generic-achievement',
data: {
achievement: 'tickledPink', // defined manually until the server sends all the necessary data
},
},
ACHIEVEMENT_ROSY_OUTLOOK: {
achievement: true,
label: $t => `${$t('achievement')}: ${$t('achievementRosyOutlook')}`,
modalId: 'generic-achievement',
data: {
achievement: 'rosyOutlook', // defined manually until the server sends all the necessary data
},
},
};
export default {
@@ -352,7 +368,8 @@ export default {
'GENERIC_ACHIEVEMENT', 'ACHIEVEMENT_PARTY_UP', 'ACHIEVEMENT_PARTY_ON', 'ACHIEVEMENT_BEAST_MASTER',
'ACHIEVEMENT_MOUNT_MASTER', 'ACHIEVEMENT_TRIAD_BINGO', 'ACHIEVEMENT_DUST_DEVIL', 'ACHIEVEMENT_ARID_AUTHORITY',
'ACHIEVEMENT_MONSTER_MAGUS', 'ACHIEVEMENT_UNDEAD_UNDERTAKER', 'ACHIEVEMENT_PRIMED_FOR_PAINTING',
'ACHIEVEMENT_PEARLY_PRO', 'ACHIEVEMENT', 'ONBOARDING_COMPLETE',
'ACHIEVEMENT_PEARLY_PRO', 'ACHIEVEMENT_TICKLED_PINK', 'ACHIEVEMENT_ROSY_OUTLOOK', 'ACHIEVEMENT',
'ONBOARDING_COMPLETE',
].forEach(type => {
handledNotifications[type] = true;
});
@@ -760,6 +777,8 @@ export default {
case 'ACHIEVEMENT_UNDEAD_UNDERTAKER':
case 'ACHIEVEMENT_PRIMED_FOR_PAINTING':
case 'ACHIEVEMENT_PEARLY_PRO':
case 'ACHIEVEMENT_TICKLED_PINK':
case 'ACHIEVEMENT_ROSY_OUTLOOK':
case 'GENERIC_ACHIEVEMENT':
this.showNotificationWithModal(notification);
break;

View File

@@ -63,5 +63,11 @@
"achievementPrimedForPaintingModalText": "You collected all the White Pets!",
"achievementPearlyPro": "Pearly Pro",
"achievementPearlyProText": "Has tamed all White Mounts.",
"achievementPearlyProModalText": "You tamed all the White Mounts!"
"achievementPearlyProModalText": "You tamed all the White Mounts!",
"achievementTickledPink": "Tickled Pink",
"achievementTickledPinkText": "Has collected all Cotton Candy Pink Pets.",
"achievementTickledPinkModalText": "You collected all the Cotton Candy Pink Pets!",
"achievementRosyOutlook": "Rosy Outlook",
"achievementRosyOutlookText": "Has tamed all Cotton Candy Pink Mounts.",
"achievementRosyOutlookModalText": "You tamed all the Cotton Candy Pink Mounts!"
}

View File

@@ -177,6 +177,16 @@ const basicAchievs = {
titleKey: 'achievementPearlyPro',
textKey: 'achievementPearlyProText',
},
tickledPink: {
icon: 'achievement-tickledPink',
titleKey: 'achievementTickledPink',
textKey: 'achievementTickledPinkText',
},
rosyOutlook: {
icon: 'achievement-rosyOutlook',
titleKey: 'achievementRosyOutlook',
textKey: 'achievementRosyOutlookText',
},
};
Object.assign(achievementsData, basicAchievs);

View File

@@ -272,15 +272,38 @@ export const QUEST_SERIES_ACHIEVEMENTS = {
export const ANIMAL_COLOR_ACHIEVEMENTS = [
{
color: 'Base', petAchievement: 'backToBasics', petNotificationType: 'ACHIEVEMENT_BACK_TO_BASICS', mountAchievement: 'allYourBase', mountNotificationType: 'ACHIEVEMENT_ALL_YOUR_BASE',
color: 'Base',
petAchievement: 'backToBasics',
petNotificationType: 'ACHIEVEMENT_BACK_TO_BASICS',
mountAchievement: 'allYourBase',
mountNotificationType: 'ACHIEVEMENT_ALL_YOUR_BASE',
},
{
color: 'Desert', petAchievement: 'dustDevil', petNotificationType: 'ACHIEVEMENT_DUST_DEVIL', mountAchievement: 'aridAuthority', mountNotificationType: 'ACHIEVEMENT_ARID_AUTHORITY',
color: 'Desert',
petAchievement: 'dustDevil',
petNotificationType: 'ACHIEVEMENT_DUST_DEVIL',
mountAchievement: 'aridAuthority',
mountNotificationType: 'ACHIEVEMENT_ARID_AUTHORITY',
},
{
color: 'Zombie', petAchievement: 'monsterMagus', petNotificationType: 'ACHIEVEMENT_MONSTER_MAGUS', mountAchievement: 'undeadUndertaker', mountNotificationType: 'ACHIEVEMENT_UNDEAD_UNDERTAKER',
color: 'Zombie',
petAchievement: 'monsterMagus',
petNotificationType: 'ACHIEVEMENT_MONSTER_MAGUS',
mountAchievement: 'undeadUndertaker',
mountNotificationType: 'ACHIEVEMENT_UNDEAD_UNDERTAKER',
},
{
color: 'White', petAchievement: 'primedForPainting', petNotificationType: 'ACHIEVEMENT_PRIMED_FOR_PAINTING', mountAchievement: 'pearlyPro', mountNotificationType: 'ACHIEVEMENT_PEARLY_PRO',
color: 'White',
petAchievement: 'primedForPainting',
petNotificationType: 'ACHIEVEMENT_PRIMED_FOR_PAINTING',
mountAchievement: 'pearlyPro',
mountNotificationType: 'ACHIEVEMENT_PEARLY_PRO',
},
{
color: 'CottonCandyPink',
petAchievement: 'tickledPink',
petNotificationType: 'ACHIEVEMENT_TICKLED_PINK',
mountAchievement: 'rosyOutlook',
mountNotificationType: 'ACHIEVEMENT_ROSY_OUTLOOK',
},
];

View File

@@ -197,6 +197,8 @@ function _getBasicAchievements (user, language) {
_addSimple(result, user, { path: 'undeadUndertaker', language });
_addSimple(result, user, { path: 'primedForPainting', language });
_addSimple(result, user, { path: 'pearlyPro', language });
_addSimple(result, user, { path: 'tickledPink', language });
_addSimple(result, user, { path: 'rosyOutlook', language });
_addSimpleWithMasterCount(result, user, { path: 'beastMaster', language });
_addSimpleWithMasterCount(result, user, { path: 'mountMaster', language });

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -4,7 +4,7 @@ const api = {};
// @TODO export this const, cannot export it from here because only routes are exported from
// controllers
const LAST_ANNOUNCEMENT_TITLE = 'NEW MAGIC HATCHING POTION QUEST: RUBY!';
const LAST_ANNOUNCEMENT_TITLE = 'NEW PET COLLECTION BADGES!';
const worldDmg = { // @TODO
bailey: false,
};
@@ -31,21 +31,23 @@ api.getNews = {
<div class="mr-3 ${baileyClass}"></div>
<div class="media-body">
<h1 class="align-self-center">${res.t('newStuff')}</h1>
<h2>2/13/2020 - ${LAST_ANNOUNCEMENT_TITLE}</h2>
<h2>2/18/2020 - ${LAST_ANNOUNCEMENT_TITLE}</h2>
</div>
</div>
<hr/>
<div class="quest_ruby center-block"></div>
<div class="promo_achievement_CottonCandyPink center-block"></div>
<p>
It's time for a trip to the snowy hot springs of Stoïkalm! <a href='/shops/quests'>Get
the latest Magic Hatching Potion quest</a>, "Ruby Rapport", and collect Ruby Gems,
Aquarius Zodiac Runes, and Venus Runes to earn some glittering Ruby Magic Hatching
Potions by completing your real-life tasks!
We're releasing a new achievement so you can celebrate your successes in the world of
Habitican pet collecting! Earn the Tickled Pink and Rosy Outlook achievements by
collecting Cotton Candy Pink pets and mounts and you'll earn a nifty badge for your
profile.
</p>
<div class="small">
Art by Aspiring_Advocate, gully, Beffymaroo, Tyche_Alba, and loremi
</div>
<div class="small mb-3">Writing by JohnJSal</div>
<p>
If you already have all the Cotton Candy Pink pets and/or mounts in your stable, you'll
receive the badge automatically! Check your profile and celebrate your new achievement
with pride in your pink prowess.
</p>
<div class="small mb-3">by Piyowo and SabreCat</div>
</div>
`,
});

View File

@@ -130,6 +130,8 @@ export default new Schema({
undeadUndertaker: Boolean,
primedForPainting: Boolean,
pearlyPro: Boolean,
tickledPink: Boolean,
rosyOutlook: Boolean,
// Onboarding Guide
createdTask: Boolean,
completedTask: Boolean,

View File

@@ -50,6 +50,8 @@ const NOTIFICATION_TYPES = [
'ACHIEVEMENT_UNDEAD_UNDERTAKER',
'ACHIEVEMENT_PRIMED_FOR_PAINTING',
'ACHIEVEMENT_PEARLY_PRO',
'ACHIEVEMENT_TICKLED_PINK',
'ACHIEVEMENT_ROSY_OUTLOOK',
'ACHIEVEMENT', // generic achievement notification, details inside `notification.data`
];