diff --git a/website/client/assets/css/sprites/spritesmith-largeSprites-0.css b/website/client/assets/css/sprites/spritesmith-largeSprites-0.css index a0ba5100b3..e293abeed0 100644 --- a/website/client/assets/css/sprites/spritesmith-largeSprites-0.css +++ b/website/client/assets/css/sprites/spritesmith-largeSprites-0.css @@ -12,7 +12,7 @@ } .promo_mystery_201803 { background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); - background-position: -674px -335px; + background-position: -915px -148px; width: 114px; height: 90px; } @@ -24,10 +24,16 @@ } .promo_seasonalshop_spring { background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); - background-position: -674px -196px; + background-position: -674px -344px; width: 162px; height: 138px; } +.promo_shiny_seeds { + background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); + background-position: -674px 0px; + width: 360px; + height: 147px; +} .promo_spring_fling_2018 { background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); background-position: 0px -244px; @@ -36,7 +42,7 @@ } .promo_take_this { background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); - background-position: -789px -335px; + background-position: -915px -239px; width: 114px; height: 87px; } @@ -48,7 +54,7 @@ } .scene_todos { background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); - background-position: -674px 0px; + background-position: -674px -148px; width: 240px; height: 195px; } diff --git a/website/client/assets/images/sprites/spritesmith-largeSprites-0.png b/website/client/assets/images/sprites/spritesmith-largeSprites-0.png index 84ae6fe165..90e73ece94 100644 Binary files a/website/client/assets/images/sprites/spritesmith-largeSprites-0.png and b/website/client/assets/images/sprites/spritesmith-largeSprites-0.png differ diff --git a/website/client/components/shops/buyModal.vue b/website/client/components/shops/buyModal.vue index d20bddbf6a..f9fca3908d 100644 --- a/website/client/components/shops/buyModal.vue +++ b/website/client/components/shops/buyModal.vue @@ -47,7 +47,7 @@ strong {{ $t('howManyToBuy') }} div(v-if='showAmountToBuy(item)') .box - input(type='number', min='0', v-model='selectedAmountToBuy') + input(type='number', min='0', v-model.number='selectedAmountToBuy') span(:class="{'notEnough': notEnoughCurrency}") span.svg-icon.inline.icon-32(aria-hidden="true", v-html="icons[getPriceClass()]") span.cost(:class="getPriceClass()") {{ item.value }} diff --git a/website/common/locales/en/messages.json b/website/common/locales/en/messages.json index 9a9ce2abf3..4bf55ff6c3 100644 --- a/website/common/locales/en/messages.json +++ b/website/common/locales/en/messages.json @@ -65,6 +65,7 @@ "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found", "messageNotificationNotFound": "Notification not found.", + "messageNotAbleToBuyInBulk": "This item cannot be purchased in quantities above 1.", "notificationsRequired": "Notification ids are required.", "unallocatedStatsPoints": "You have <%= points %> unallocated Stat Points", diff --git a/website/common/script/content/shop-featuredItems.js b/website/common/script/content/shop-featuredItems.js index b187e7132a..1bd69e72c6 100644 --- a/website/common/script/content/shop-featuredItems.js +++ b/website/common/script/content/shop-featuredItems.js @@ -31,8 +31,8 @@ const featuredItems = { path: 'quests.egg', }, { - type: 'bundles', - path: 'bundles.hugabug', + type: 'quests', + path: 'quests.bunny', }, ], seasonal: 'springHealer', diff --git a/website/common/script/libs/getItemInfo.js b/website/common/script/libs/getItemInfo.js index ad78810ecb..bd65552af6 100644 --- a/website/common/script/libs/getItemInfo.js +++ b/website/common/script/libs/getItemInfo.js @@ -164,7 +164,7 @@ module.exports = function getItemInfo (user, type, item, officialPinnedItems, la type: 'special', currency: 'gold', locked: false, - purchaseType: 'spells', + purchaseType: 'special', class: `inventory_special_${item.key}`, path: `spells.special.${item.key}`, pinType: 'seasonalSpell', diff --git a/website/common/script/libs/shops-seasonal.config.js b/website/common/script/libs/shops-seasonal.config.js index 6efe2d5c9d..068c0650b1 100644 --- a/website/common/script/libs/shops-seasonal.config.js +++ b/website/common/script/libs/shops-seasonal.config.js @@ -19,6 +19,7 @@ module.exports = { }, availableSpells: [ + 'shinySeed', ], availableQuests: [ diff --git a/website/common/script/ops/buy/abstractBuyOperation.js b/website/common/script/ops/buy/abstractBuyOperation.js index d641372a5f..444ab7ffb8 100644 --- a/website/common/script/ops/buy/abstractBuyOperation.js +++ b/website/common/script/ops/buy/abstractBuyOperation.js @@ -110,7 +110,7 @@ export class AbstractGoldItemOperation extends AbstractBuyOperation { } } - substractCurrency (user, item, quantity = 1) { + subtractCurrency (user, item, quantity = 1) { let itemValue = this.getItemValue(item); user.stats.gp -= itemValue * quantity; diff --git a/website/common/script/ops/buy/buyMarketGear.js b/website/common/script/ops/buy/buyMarketGear.js index 861c611249..06fe881e48 100644 --- a/website/common/script/ops/buy/buyMarketGear.js +++ b/website/common/script/ops/buy/buyMarketGear.js @@ -60,7 +60,7 @@ export class BuyMarketGearOperation extends AbstractGoldItemOperation { if (item.last) ultimateGear(user); - this.substractCurrency(user, item); + this.subtractCurrency(user, item); if (!message) { message = this.i18n('messageBought', { diff --git a/website/raw_sprites/spritesmith_large/promo_shiny_seeds.png b/website/raw_sprites/spritesmith_large/promo_shiny_seeds.png new file mode 100644 index 0000000000..aa813dbe51 Binary files /dev/null and b/website/raw_sprites/spritesmith_large/promo_shiny_seeds.png differ diff --git a/website/server/controllers/api-v3/news.js b/website/server/controllers/api-v3/news.js index d9fef42781..55388be720 100644 --- a/website/server/controllers/api-v3/news.js +++ b/website/server/controllers/api-v3/news.js @@ -3,7 +3,7 @@ import { authWithHeaders } from '../../middlewares/auth'; let api = {}; // @TODO export this const, cannot export it from here because only routes are exported from controllers -const LAST_ANNOUNCEMENT_TITLE = 'BACKGROUNDS, ARMOIRE ITEMS, AND OFFICIAL CHALLENGES FOR APRIL'; +const LAST_ANNOUNCEMENT_TITLE = 'SHINY SEEDS'; const worldDmg = { // @TODO bailey: false, }; @@ -32,25 +32,14 @@ api.getNews = {
We’ve added three new backgrounds to the Background Shop! Now your avatar can fly over an Ancient Forest, soar above a Field of Wildflowers, and dally in a pretty Tulip Garden. Check them out under User Icon > Backgrounds!
-Plus, there’s new gold-purchasable equipment in the Enchanted Armoire, including some fun joke props in honor of April Fool's Day! Better work hard on your real-life tasks to earn all the pieces! Enjoy :)
-The Habitica team has launched a special official Challenge series hosted in the Official New Year's Resolution Guild. These Challenges are designed to help you build and maintain goals that are destined for success and then stick with them as the year progresses. For this month's Challenge, Rally Your Allies, we're focusing on building accountability by reaching out to supportive people in your life ! It has a 15 gem prize, which will be awarded to five lucky winners on May 1st.
-Congratulations to the winners of March's Challenge, LuxInWonderland, kheftel, Midnight Reverie, bookishninja, and VeganValerie!
-The next Take This Challenge has also launched, "Test Thy Courage!, with a focus on initiating positive social interactions. Be sure to check it out to earn additional pieces of the Take This armor set!
-Take This is a nonprofit that seeks to inform the gamer community about mental health issues, to provide education about mental disorders and mental illness prevention, and to reduce the stigma of mental illness.
-Congratulations to the winners of the last Take This Challenge, "I Am the Night!": grand prize winner Jon Johnson, and runners-up valosin, ninaninet, awcward, Jackie Stack, and SaphirSoleil. Plus, all participants in that Challenge have received a piece of the Take This item set if they didn't have the full set already. It is located in your Rewards column. Enjoy!
-Throw a Shiny Seed at your friends and they will turn into a cheerful flower until their next cron! You can buy the Seeds in the Seasonal Shop for gold. Plus, if you get transformed by a Shiny Seed, you'll receive the Agricultural Friends badge!
+Don't want to be a flower? Just buy some Petal-Free Potion from your Rewards column to reverse it.
+Shiny Seeds will be available in the Seasonal Shop until April 30th!
+