diff --git a/package-lock.json b/package-lock.json index 3abc1151d7..d8e6f5ece1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.162.0", + "version": "4.163.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 6a478bc84c..8dbefb204b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "habitica", "description": "A habit tracker app which treats your goals like a Role Playing Game.", - "version": "4.162.0", + "version": "4.163.0", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.11.6", diff --git a/test/api/unit/libs/payments/payments.test.js b/test/api/unit/libs/payments/payments.test.js index 64ced4587e..8b3c03cfd9 100644 --- a/test/api/unit/libs/payments/payments.test.js +++ b/test/api/unit/libs/payments/payments.test.js @@ -248,6 +248,7 @@ describe('payments/index', () => { quantity: 1, gift: true, purchaseValue: 15, + firstPurchase: true, headers: { 'x-client': 'habitica-web', 'user-agent': '', @@ -345,6 +346,7 @@ describe('payments/index', () => { quantity: 1, gift: false, purchaseValue: 15, + firstPurchase: true, headers: { 'x-client': 'habitica-web', 'user-agent': '', diff --git a/website/client/src/assets/css/sprites/spritesmith-largeSprites-0.css b/website/client/src/assets/css/sprites/spritesmith-largeSprites-0.css index 716544e47a..9a9c9b2841 100644 --- a/website/client/src/assets/css/sprites/spritesmith-largeSprites-0.css +++ b/website/client/src/assets/css/sprites/spritesmith-largeSprites-0.css @@ -24,16 +24,22 @@ } .promo_mystery_202009 { background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png'); - background-position: -424px -600px; + background-position: -893px 0px; width: 282px; height: 147px; } .promo_mystery_202010 { background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png'); - background-position: -893px 0px; + background-position: -893px -148px; width: 282px; height: 147px; } +.promo_sandy_sidekicks_bundle { + background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png'); + background-position: -424px -600px; + width: 420px; + height: 147px; +} .promo_spooky_sparkles { background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png'); background-position: -424px -452px; @@ -42,7 +48,7 @@ } .promo_take_this { background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png'); - background-position: -1035px -278px; + background-position: -1035px -426px; width: 96px; height: 69px; } @@ -60,13 +66,13 @@ } .scene_squall { background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png'); - background-position: -893px -278px; + background-position: -893px -426px; width: 141px; height: 169px; } .scene_strength { background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png'); - background-position: -893px -148px; + background-position: -893px -296px; width: 192px; height: 129px; } diff --git a/website/client/src/assets/css/sprites/spritesmith-main-15.css b/website/client/src/assets/css/sprites/spritesmith-main-15.css index cf7cce72d5..145affbf25 100644 --- a/website/client/src/assets/css/sprites/spritesmith-main-15.css +++ b/website/client/src/assets/css/sprites/spritesmith-main-15.css @@ -40,144 +40,150 @@ width: 68px; height: 68px; } -.quest_bundle_splashyPals { +.quest_bundle_sandySidekicks { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -414px -1429px; width: 68px; height: 68px; } -.quest_bundle_winterQuests { +.quest_bundle_splashyPals { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -483px -1429px; width: 68px; height: 68px; } -.quest_bundle_witchyFamiliars { +.quest_bundle_winterQuests { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -552px -1429px; width: 68px; height: 68px; } -.shop_gem { +.quest_bundle_witchyFamiliars { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -621px -1429px; width: 68px; height: 68px; } -.shop_opaquePotion { +.shop_gem { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -690px -1429px; width: 68px; height: 68px; } -.shop_petalFreePotion { +.shop_opaquePotion { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -759px -1429px; width: 68px; height: 68px; } -.shop_potion { +.shop_petalFreePotion { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -828px -1429px; width: 68px; height: 68px; } -.shop_salt { +.shop_potion { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -897px -1429px; width: 68px; height: 68px; } -.shop_sand { +.shop_salt { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -966px -1429px; width: 68px; height: 68px; } -.shop_seafoam { +.shop_sand { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -1035px -1429px; width: 68px; height: 68px; } -.shop_shinySeed { +.shop_seafoam { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -1104px -1429px; width: 68px; height: 68px; } -.shop_snowball { +.shop_shinySeed { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -1173px -1429px; width: 68px; height: 68px; } -.shop_spookySparkles { +.shop_snowball { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -1242px -1429px; width: 68px; height: 68px; } -.shop_mounts_Hippogriff-Hopeful { +.shop_spookySparkles { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -1311px -1429px; width: 68px; height: 68px; } -.shop_mounts_MagicalBee-Base { +.shop_mounts_Hippogriff-Hopeful { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -1380px -1429px; width: 68px; height: 68px; } -.shop_mounts_Mammoth-Base { +.shop_mounts_MagicalBee-Base { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -1514px 0px; width: 68px; height: 68px; } -.shop_mounts_MantisShrimp-Base { +.shop_mounts_Mammoth-Base { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -1514px -69px; width: 68px; height: 68px; } -.shop_mounts_Phoenix-Base { +.shop_mounts_MantisShrimp-Base { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -1514px -138px; width: 68px; height: 68px; } -.shop_pets_Hippogriff-Hopeful { +.shop_mounts_Phoenix-Base { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -1514px -207px; width: 68px; height: 68px; } -.shop_pets_MagicalBee-Base { +.shop_pets_Hippogriff-Hopeful { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -1514px -276px; width: 68px; height: 68px; } -.shop_pets_Mammoth-Base { +.shop_pets_MagicalBee-Base { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -1514px -345px; width: 68px; height: 68px; } -.shop_pets_MantisShrimp-Base { +.shop_pets_Mammoth-Base { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -1514px -414px; width: 68px; height: 68px; } -.shop_pets_Phoenix-Base { +.shop_pets_MantisShrimp-Base { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -1514px -483px; width: 68px; height: 68px; } +.shop_pets_Phoenix-Base { + background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); + background-position: -1514px -552px; + width: 68px; + height: 68px; +} .shop_backStab { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); background-position: -1652px -1587px; @@ -276,619 +282,619 @@ } .Pet_Egg_Alligator { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1514px -552px; + background-position: -1514px -621px; width: 68px; height: 68px; } .Pet_Egg_Armadillo { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1514px -621px; + background-position: -1514px -690px; width: 68px; height: 68px; } .Pet_Egg_Axolotl { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1514px -690px; + background-position: -1514px -759px; width: 68px; height: 68px; } .Pet_Egg_Badger { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1514px -759px; + background-position: -1514px -828px; width: 68px; height: 68px; } .Pet_Egg_BearCub { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1514px -828px; + background-position: -1514px -897px; width: 68px; height: 68px; } .Pet_Egg_Beetle { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1514px -897px; + background-position: -1514px -966px; width: 68px; height: 68px; } .Pet_Egg_Bunny { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1514px -966px; + background-position: -1514px -1035px; width: 68px; height: 68px; } .Pet_Egg_Butterfly { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1514px -1035px; + background-position: -1514px -1104px; width: 68px; height: 68px; } .Pet_Egg_Cactus { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1514px -1104px; + background-position: -1514px -1173px; width: 68px; height: 68px; } .Pet_Egg_Cheetah { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1514px -1173px; + background-position: -1514px -1242px; width: 68px; height: 68px; } .Pet_Egg_Cow { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1514px -1242px; + background-position: -1514px -1311px; width: 68px; height: 68px; } .Pet_Egg_Cuttlefish { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1514px -1311px; + background-position: -1514px -1380px; width: 68px; height: 68px; } .Pet_Egg_Deer { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1514px -1380px; + background-position: 0px -1498px; width: 68px; height: 68px; } .Pet_Egg_Dolphin { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: 0px -1498px; + background-position: -69px -1498px; width: 68px; height: 68px; } .Pet_Egg_Dragon { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -69px -1498px; + background-position: -138px -1498px; width: 68px; height: 68px; } .Pet_Egg_Egg { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -138px -1498px; + background-position: -207px -1498px; width: 68px; height: 68px; } .Pet_Egg_Falcon { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -207px -1498px; + background-position: -276px -1498px; width: 68px; height: 68px; } .Pet_Egg_Ferret { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -276px -1498px; + background-position: -345px -1498px; width: 68px; height: 68px; } .Pet_Egg_FlyingPig { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -345px -1498px; + background-position: -414px -1498px; width: 68px; height: 68px; } .Pet_Egg_Fox { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -414px -1498px; + background-position: -483px -1498px; width: 68px; height: 68px; } .Pet_Egg_Frog { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -483px -1498px; + background-position: -552px -1498px; width: 68px; height: 68px; } .Pet_Egg_Gryphon { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -552px -1498px; + background-position: -621px -1498px; width: 68px; height: 68px; } .Pet_Egg_GuineaPig { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -621px -1498px; + background-position: -690px -1498px; width: 68px; height: 68px; } .Pet_Egg_Hedgehog { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -690px -1498px; + background-position: -759px -1498px; width: 68px; height: 68px; } .Pet_Egg_Hippo { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -759px -1498px; + background-position: -828px -1498px; width: 68px; height: 68px; } .Pet_Egg_Horse { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -828px -1498px; + background-position: -897px -1498px; width: 68px; height: 68px; } .Pet_Egg_Kangaroo { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -897px -1498px; + background-position: -966px -1498px; width: 68px; height: 68px; } .Pet_Egg_LionCub { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -966px -1498px; + background-position: -1035px -1498px; width: 68px; height: 68px; } .Pet_Egg_Monkey { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1035px -1498px; + background-position: -1104px -1498px; width: 68px; height: 68px; } .Pet_Egg_Nudibranch { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1104px -1498px; + background-position: -1173px -1498px; width: 68px; height: 68px; } .Pet_Egg_Octopus { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1173px -1498px; + background-position: -1242px -1498px; width: 68px; height: 68px; } .Pet_Egg_Owl { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1242px -1498px; + background-position: -1311px -1498px; width: 68px; height: 68px; } .Pet_Egg_PandaCub { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1311px -1498px; + background-position: -1380px -1498px; width: 68px; height: 68px; } .Pet_Egg_Parrot { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1380px -1498px; + background-position: -1449px -1498px; width: 68px; height: 68px; } .Pet_Egg_Peacock { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1449px -1498px; + background-position: -1583px 0px; width: 68px; height: 68px; } .Pet_Egg_Penguin { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px 0px; + background-position: -1583px -69px; width: 68px; height: 68px; } .Pet_Egg_PolarBear { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -69px; + background-position: -1583px -138px; width: 68px; height: 68px; } .Pet_Egg_Pterodactyl { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -138px; + background-position: -1583px -207px; width: 68px; height: 68px; } .Pet_Egg_Rat { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -207px; + background-position: -1583px -276px; width: 68px; height: 68px; } .Pet_Egg_Robot { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -276px; + background-position: -1583px -345px; width: 68px; height: 68px; } .Pet_Egg_Rock { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -345px; + background-position: -1583px -414px; width: 68px; height: 68px; } .Pet_Egg_Rooster { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -414px; + background-position: -1583px -483px; width: 68px; height: 68px; } .Pet_Egg_Sabretooth { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -483px; + background-position: -1583px -552px; width: 68px; height: 68px; } .Pet_Egg_SeaSerpent { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -621px; + background-position: -1583px -690px; width: 68px; height: 68px; } .Pet_Egg_Seahorse { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -552px; + background-position: -1583px -621px; width: 68px; height: 68px; } .Pet_Egg_Sheep { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -690px; + background-position: -1583px -759px; width: 68px; height: 68px; } .Pet_Egg_Slime { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -759px; + background-position: -1583px -828px; width: 68px; height: 68px; } .Pet_Egg_Sloth { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -828px; + background-position: -1583px -897px; width: 68px; height: 68px; } .Pet_Egg_Snail { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -897px; + background-position: -1583px -966px; width: 68px; height: 68px; } .Pet_Egg_Snake { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -966px; + background-position: -1583px -1035px; width: 68px; height: 68px; } .Pet_Egg_Spider { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -1035px; + background-position: -1583px -1104px; width: 68px; height: 68px; } .Pet_Egg_Squirrel { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -1104px; + background-position: -1583px -1173px; width: 68px; height: 68px; } .Pet_Egg_TRex { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -1311px; + background-position: -1583px -1380px; width: 68px; height: 68px; } .Pet_Egg_TigerCub { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -1173px; + background-position: -1583px -1242px; width: 68px; height: 68px; } .Pet_Egg_Treeling { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -1242px; + background-position: -1583px -1311px; width: 68px; height: 68px; } .Pet_Egg_Triceratops { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -1380px; + background-position: -1583px -1449px; width: 68px; height: 68px; } .Pet_Egg_Turtle { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1583px -1449px; + background-position: 0px -1567px; width: 68px; height: 68px; } .Pet_Egg_Unicorn { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: 0px -1567px; + background-position: -69px -1567px; width: 68px; height: 68px; } .Pet_Egg_Velociraptor { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -69px -1567px; + background-position: -138px -1567px; width: 68px; height: 68px; } .Pet_Egg_Whale { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -138px -1567px; + background-position: -207px -1567px; width: 68px; height: 68px; } .Pet_Egg_Wolf { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -207px -1567px; + background-position: -276px -1567px; width: 68px; height: 68px; } .Pet_Egg_Yarn { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -276px -1567px; + background-position: -345px -1567px; width: 68px; height: 68px; } .Pet_Food_Cake_Base { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -345px -1567px; + background-position: -414px -1567px; width: 68px; height: 68px; } .Pet_Food_Cake_CottonCandyBlue { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -414px -1567px; + background-position: -483px -1567px; width: 68px; height: 68px; } .Pet_Food_Cake_CottonCandyPink { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -483px -1567px; + background-position: -552px -1567px; width: 68px; height: 68px; } .Pet_Food_Cake_Desert { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -552px -1567px; + background-position: -621px -1567px; width: 68px; height: 68px; } .Pet_Food_Cake_Golden { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -621px -1567px; + background-position: -690px -1567px; width: 68px; height: 68px; } .Pet_Food_Cake_Red { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -690px -1567px; + background-position: -759px -1567px; width: 68px; height: 68px; } .Pet_Food_Cake_Shade { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -759px -1567px; + background-position: -828px -1567px; width: 68px; height: 68px; } .Pet_Food_Cake_Skeleton { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -828px -1567px; + background-position: -897px -1567px; width: 68px; height: 68px; } .Pet_Food_Cake_White { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -897px -1567px; + background-position: -966px -1567px; width: 68px; height: 68px; } .Pet_Food_Cake_Zombie { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -966px -1567px; + background-position: -1035px -1567px; width: 68px; height: 68px; } .Pet_Food_Candy_Base { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1035px -1567px; + background-position: -1104px -1567px; width: 68px; height: 68px; } .Pet_Food_Candy_CottonCandyBlue { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1104px -1567px; + background-position: -1173px -1567px; width: 68px; height: 68px; } .Pet_Food_Candy_CottonCandyPink { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1173px -1567px; + background-position: -1242px -1567px; width: 68px; height: 68px; } .Pet_Food_Candy_Desert { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1242px -1567px; + background-position: -1311px -1567px; width: 68px; height: 68px; } .Pet_Food_Candy_Golden { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1311px -1567px; + background-position: -1380px -1567px; width: 68px; height: 68px; } .Pet_Food_Candy_Red { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1380px -1567px; + background-position: -1449px -1567px; width: 68px; height: 68px; } .Pet_Food_Candy_Shade { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1449px -1567px; + background-position: -1518px -1567px; width: 68px; height: 68px; } .Pet_Food_Candy_Skeleton { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1518px -1567px; + background-position: -1652px 0px; width: 68px; height: 68px; } .Pet_Food_Candy_White { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px 0px; + background-position: -1652px -69px; width: 68px; height: 68px; } .Pet_Food_Candy_Zombie { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -69px; + background-position: -1652px -138px; width: 68px; height: 68px; } .Pet_Food_Chocolate { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -138px; + background-position: -1652px -207px; width: 68px; height: 68px; } .Pet_Food_CottonCandyBlue { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -207px; + background-position: -1652px -276px; width: 68px; height: 68px; } .Pet_Food_CottonCandyPink { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -276px; + background-position: -1652px -345px; width: 68px; height: 68px; } .Pet_Food_Fish { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -345px; + background-position: -1652px -414px; width: 68px; height: 68px; } .Pet_Food_Honey { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -414px; + background-position: -1652px -483px; width: 68px; height: 68px; } .Pet_Food_Meat { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -483px; + background-position: -1652px -552px; width: 68px; height: 68px; } .Pet_Food_Milk { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -552px; + background-position: -1652px -621px; width: 68px; height: 68px; } .Pet_Food_Pie_Base { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -621px; + background-position: -1652px -690px; width: 68px; height: 68px; } .Pet_Food_Pie_CottonCandyBlue { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -690px; + background-position: -1652px -759px; width: 68px; height: 68px; } .Pet_Food_Pie_CottonCandyPink { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -759px; + background-position: -1652px -828px; width: 68px; height: 68px; } .Pet_Food_Pie_Desert { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -828px; + background-position: -1652px -897px; width: 68px; height: 68px; } .Pet_Food_Pie_Golden { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -897px; + background-position: -1652px -966px; width: 68px; height: 68px; } .Pet_Food_Pie_Red { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -966px; + background-position: -1652px -1035px; width: 68px; height: 68px; } .Pet_Food_Pie_Shade { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -1035px; + background-position: -1652px -1104px; width: 68px; height: 68px; } .Pet_Food_Pie_Skeleton { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -1104px; + background-position: -1652px -1173px; width: 68px; height: 68px; } .Pet_Food_Pie_White { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -1173px; + background-position: -1652px -1242px; width: 68px; height: 68px; } .Pet_Food_Pie_Zombie { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -1242px; + background-position: -1652px -1311px; width: 68px; height: 68px; } .Pet_Food_Potatoe { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -1311px; + background-position: -1652px -1380px; width: 68px; height: 68px; } .Pet_Food_RottenMeat { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -1380px; + background-position: -1652px -1449px; width: 68px; height: 68px; } .Pet_Food_Saddle { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -1449px; + background-position: -1652px -1518px; width: 68px; height: 68px; } .Pet_Food_Strawberry { background-image: url('~@/assets/images/sprites/spritesmith-main-15.png'); - background-position: -1652px -1518px; + background-position: 0px -1636px; width: 68px; height: 68px; } diff --git a/website/client/src/assets/images/sprites/spritesmith-largeSprites-0.png b/website/client/src/assets/images/sprites/spritesmith-largeSprites-0.png index 2c40f2419e..ed78772562 100644 Binary files a/website/client/src/assets/images/sprites/spritesmith-largeSprites-0.png and b/website/client/src/assets/images/sprites/spritesmith-largeSprites-0.png differ diff --git a/website/client/src/assets/images/sprites/spritesmith-main-15.png b/website/client/src/assets/images/sprites/spritesmith-main-15.png index d94248549a..0aa152ab73 100644 Binary files a/website/client/src/assets/images/sprites/spritesmith-main-15.png and b/website/client/src/assets/images/sprites/spritesmith-main-15.png differ diff --git a/website/common/locales/en/questsContent.json b/website/common/locales/en/questsContent.json index 7a40f5511b..80e990550b 100644 --- a/website/common/locales/en/questsContent.json +++ b/website/common/locales/en/questsContent.json @@ -832,5 +832,8 @@ "questTurquoiseCollectNeptuneRunes": "Neptune Runes", "questTurquoiseCollectTurquoiseGems": "Turquoise Gems", "questTurquoiseDropTurquoisePotion": "Turquoise Hatching Potion", - "questTurquoiseUnlockText": "Unlocks Turquoise Hatching Potions for purchase in the Market" + "questTurquoiseUnlockText": "Unlocks Turquoise Hatching Potions for purchase in the Market", + + "sandySidekicksText": "Sandy Sidekicks Quest Bundle", + "sandySidekicksNotes": "Contains 'The Indulgent Armadillo', 'The Serpent of Distraction', and 'The Icy Arachnid'. Available until <%= date %>." } diff --git a/website/common/script/content/bundles.js b/website/common/script/content/bundles.js index e0bd13aab1..28297d3d05 100644 --- a/website/common/script/content/bundles.js +++ b/website/common/script/content/bundles.js @@ -236,6 +236,21 @@ const bundles = { type: 'quests', value: 7, }, + sandySidekicks: { + key: 'sandySidekicks', + text: t('sandySidekicksText'), + notes: t('sandySidekicksNotes', { date: moment('2020-10-31').format('LL') }), + bundleKeys: [ + 'armadillo', + 'snake', + 'spider', + ], + canBuy () { + return moment().isBetween('2020-10-13', '2020-11-02'); + }, + type: 'quests', + value: 7, + }, }; export default bundles; diff --git a/website/common/script/content/shop-featuredItems.js b/website/common/script/content/shop-featuredItems.js index c004398268..6300b9bbd4 100644 --- a/website/common/script/content/shop-featuredItems.js +++ b/website/common/script/content/shop-featuredItems.js @@ -44,18 +44,34 @@ const featuredItems = { ]; }, quests () { + if (moment().isBefore('2020-11-02')) { + return [ + { + type: 'bundles', + path: 'bundles.sandySidekicks', + }, + { + type: 'quests', + path: 'quests.taskwoodsTerror1', + }, + { + type: 'quests', + path: 'quests.ruby', + }, + ]; + } return [ { type: 'quests', - path: 'quests.squirrel', + path: 'quests.gryphon', }, { type: 'quests', - path: 'quests.cow', + path: 'quests.hedgehog', }, { type: 'quests', - path: 'quests.turquoise', + path: 'quests.rat', }, ]; }, diff --git a/website/raw_sprites/spritesmith/quests/scrolls/quest_bundle_sandySidekicks.png b/website/raw_sprites/spritesmith/quests/scrolls/quest_bundle_sandySidekicks.png new file mode 100644 index 0000000000..b2058acb28 Binary files /dev/null and b/website/raw_sprites/spritesmith/quests/scrolls/quest_bundle_sandySidekicks.png differ diff --git a/website/raw_sprites/spritesmith_large/promo_sandy_sidekicks_bundle.png b/website/raw_sprites/spritesmith_large/promo_sandy_sidekicks_bundle.png new file mode 100644 index 0000000000..db6e7150c7 Binary files /dev/null and b/website/raw_sprites/spritesmith_large/promo_sandy_sidekicks_bundle.png differ diff --git a/website/server/libs/payments/gems.js b/website/server/libs/payments/gems.js index 96ec179ef5..c6aae19648 100644 --- a/website/server/libs/payments/gems.js +++ b/website/server/libs/payments/gems.js @@ -108,6 +108,7 @@ export async function buyGems (data) { gift: Boolean(data.gift), purchaseValue: amt, headers: data.headers, + firstPurchase: data.user.purchased.txnCount === 1, }); if (data.gift) await buyGemGift(data); diff --git a/website/server/libs/payments/subscriptions.js b/website/server/libs/payments/subscriptions.js index 893ab97966..8e62878e71 100644 --- a/website/server/libs/payments/subscriptions.js +++ b/website/server/libs/payments/subscriptions.js @@ -172,6 +172,8 @@ async function createSubscription (data) { txnEmail(data.user, emailType); } + if (!group && !data.promo) data.user.purchased.txnCount += 1; + if (!data.promo) { analytics.trackPurchase({ uuid: data.user._id, @@ -184,11 +186,10 @@ async function createSubscription (data) { gift: Boolean(data.gift), purchaseValue: block.price, headers: data.headers, + firstPurchase: !group && data.user.purchased.txnCount === 1, }); } - if (!group && !data.promo) data.user.purchased.txnCount += 1; - if (data.gift) { const byUserName = getUserInfo(data.user, ['name']).name;