diff --git a/migrations/archive/2019/20190618_summer_splash_orcas.js b/migrations/archive/2019/20190618_summer_splash_orcas.js new file mode 100644 index 0000000000..06c4bd2679 --- /dev/null +++ b/migrations/archive/2019/20190618_summer_splash_orcas.js @@ -0,0 +1,59 @@ +/* eslint-disable no-console */ +const MIGRATION_NAME = '20190618_summer_splash_orcas'; + +import { model as User } from '../../../website/server/models/user'; + +const progressCount = 1000; +let count = 0; + +async function updateUser (user) { + count++; + + let set; + + if (user && user.items && user.items.pets && typeof user.items.pets['Orca-Base'] !== 'undefined') { + set = { migration: MIGRATION_NAME }; + } else if (user && user.items && user.items.mounts && typeof user.items.mounts['Orca-Base'] !== 'undefined') { + set = { migration: MIGRATION_NAME, 'items.pets.Orca-Base': 5 }; + } else { + set = { migration: MIGRATION_NAME, 'items.mounts.Orca-Base': 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('2019-05-18')}, + }; + + 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], + }; + } + + await Promise.all(users.map(updateUser)); // eslint-disable-line no-await-in-loop + } +}; diff --git a/website/client/assets/scss/variables.scss b/website/client/assets/scss/variables.scss index 573376536b..89958c4bec 100644 --- a/website/client/assets/scss/variables.scss +++ b/website/client/assets/scss/variables.scss @@ -2,8 +2,8 @@ // possible values are: normal, fall, habitoween, thanksgiving, winter, nye, birthday, valentines, spring, summer // more to be added on future seasons -$npc_market_flavor: 'normal'; -$npc_quests_flavor: 'normal'; -$npc_seasonal_flavor: 'normal'; -$npc_timetravelers_flavor: 'normal'; -$npc_tavern_flavor: 'normal'; +$npc_market_flavor: 'summer'; +$npc_quests_flavor: 'summer'; +$npc_seasonal_flavor: 'summer'; +$npc_timetravelers_flavor: 'summer'; +$npc_tavern_flavor: 'summer'; diff --git a/website/client/components/achievements/chooseClass.vue b/website/client/components/achievements/chooseClass.vue index d6dcccf56d..c819e6b1c0 100644 --- a/website/client/components/achievements/chooseClass.vue +++ b/website/client/components/achievements/chooseClass.vue @@ -164,30 +164,31 @@ export default { classGear (heroClass) { if (heroClass === 'rogue') { return { - armor: 'armor_rogue_5', - head: 'head_rogue_5', - shield: 'shield_rogue_6', - weapon: 'weapon_rogue_6', + armor: 'armor_special_summer2019Rogue', + head: 'head_special_summer2019Rogue', + shield: 'shield_special_summer2019Rogue', + weapon: 'weapon_special_summer2019Rogue', }; } else if (heroClass === 'wizard') { return { - armor: 'armor_wizard_5', - head: 'head_wizard_5', - weapon: 'weapon_wizard_6', + armor: 'armor_special_summer2019Mage', + head: 'head_special_summer2019Mage', + shield: 'shield_special_summer2019Mage', + weapon: 'weapon_special_summer2019Mage', }; } else if (heroClass === 'healer') { return { - armor: 'armor_healer_5', - head: 'head_healer_5', - shield: 'shield_healer_5', - weapon: 'weapon_healer_6', + armor: 'armor_special_summer2019Healer', + head: 'head_special_summer2019Healer', + shield: 'shield_special_summer2019Healer', + weapon: 'weapon_special_summer2019Healer', }; } else { return { - armor: 'armor_warrior_5', - head: 'head_warrior_5', - shield: 'shield_warrior_5', - weapon: 'weapon_warrior_6', + armor: 'armor_special_summer2019Warrior', + head: 'head_special_summer2019Warrior', + shield: 'shield_special_summer2019Warrior', + weapon: 'weapon_special_summer2019Warrior', }; } }, diff --git a/website/common/locales/en/gear.json b/website/common/locales/en/gear.json index 6a51bab669..809488aa76 100644 --- a/website/common/locales/en/gear.json +++ b/website/common/locales/en/gear.json @@ -321,6 +321,15 @@ "weaponSpecialSpring2019HealerText": "Spring Song", "weaponSpecialSpring2019HealerNotes": "Your song of flowers and rain will soothe the spirits of all who hear. Increases Intelligence by <%= int %>. Limited Edition 2019 Spring Gear.", + "weaponSpecialSummer2019RogueText": "Antiquated Anchor", + "weaponSpecialSummer2019RogueNotes": "This ancient and formidable weapon will help you win any undersea battle. Increases Strength by <%= str %>. Limited Edition 2019 Summer Gear.", + "weaponSpecialSummer2019WarriorText": "Red Coral", + "weaponSpecialSummer2019WarriorNotes": "Now you're fighting with fractals! Increases Strength by <%= str %>. Limited Edition 2019 Summer Gear.", + "weaponSpecialSummer2019MageText": "Brilliant Bloom", + "weaponSpecialSummer2019MageNotes": "Fruit of your labors, first picked from the pool, this little treasure empowers and inspires. Increases Intelligence by <%= int %>. Limited Edition 2019 Summer Gear.", + "weaponSpecialSummer2019HealerText": "Bubble Wand", + "weaponSpecialSummer2019HealerNotes": "The bubbles from this wand capture healing energy and ancient oceanic magic. Increases Intelligence by <%= int %>. Limited Edition 2019 Summer 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", @@ -718,6 +727,15 @@ "armorSpecialWinter2019HealerText": "Midnight Robe", "armorSpecialWinter2019HealerNotes": "Without darkness, there wouldn't be any light. These dark robes help bring peace and rest to promote healing. Increases Constitution by <%= con %>. Limited Edition 2018-2019 Winter Gear.", + "armorSpecialSummer2019RogueText": "Hammerhead Tail", + "armorSpecialSummer2019RogueNotes": "This sinuous tail is perfect for making tight turns during daring aquatic escapes. Increases Perception by <%= per %>. Limited Edition 2019 Summer Gear.", + "armorSpecialSummer2019WarriorText": "Carapace Armor", + "armorSpecialSummer2019WarriorNotes": "Warriors are known for their sturdy defenses. Turtles are known for their thick shells. It's a perfect match! Just... try not to fall over backward, ever. Increases Constitution by <%= con %>. Limited Edition 2019 Summer Gear.", + "armorSpecialSummer2019MageText": "Floral Frock", + "armorSpecialSummer2019MageNotes": "The lilies will know you as one of their own, and will not fear your approach. Increases Intelligence by <%= int %>. Limited Edition 2019 Summer Gear.", + "armorSpecialSummer2019HealerText": "Tropical Tides Tail", + "armorSpecialSummer2019HealerNotes": "Glide sleekly through warm coastal waters with this elegant tail. Increases Constitution by <%= con %>. Limited Edition 2019 Summer Gear.", + "armorSpecialSpring2019RogueText": "Cloud Armor", "armorSpecialSpring2019RogueNotes": "Some very tuff fluff. Increases Perception by <%= per %>. Limited Edition 2019 Spring Gear.", "armorSpecialSpring2019WarriorText": "Orchid Armor", @@ -1222,6 +1240,15 @@ "headSpecialSpring2019HealerText": "Robin Helm", "headSpecialSpring2019HealerNotes": "Be ready for the first day of spring with this cute beaky helm. Increases Intelligence by <%= int %>. Limited Edition 2019 Spring Gear.", + "headSpecialSummer2019RogueText": "Hammerhead Helm", + "headSpecialSummer2019RogueNotes": "This helm gives you a 360 degree view of surrounding waters, which is perfect for sneaking up on unsuspecting red Dailies. Increases Perception by <%= per %>. Limited Edition 2019 Summer Gear.", + "headSpecialSummer2019WarriorText": "Turtle Helm", + "headSpecialSummer2019WarriorNotes": "It won't let you pull your head down between your shoulders, but it will protect you if you bonk the bottom of a boat. Increases Strength by <%= str %>. Limited Edition 2019 Summer Gear.", + "headSpecialSummer2019MageText": "Lily Pad Hat", + "headSpecialSummer2019MageNotes": "Contrary to popular belief, your head is not an appropriate place for frogs to perch. Increases Perception by <%= per %>. Limited Edition 2019 Summer Gear.", + "headSpecialSummer2019HealerText": "Conch Crown", + "headSpecialSummer2019HealerNotes": "The spiraling structure of this shell will help you hear any cry for help across the seven seas. Increases Intelligence by <%= int %>. Limited Edition 2019 Summer 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.", @@ -1626,6 +1653,13 @@ "shieldSpecialSpring2019HealerText": "Eggshell Shield", "shieldSpecialSpring2019HealerNotes": "This bright shield is actually made of candy-coated chocolate. Increases Constitution by <%= con %>. Limited Edition 2019 Spring Gear.", + "shieldSpecialSummer2019WarriorText": "Half-Shell Shield", + "shieldSpecialSummer2019WarriorNotes": "Turtle up behind this hefty round shield, etched in the pattern of your favorite reptile's back. Increases Constitution by <%= con %>. Limited Edition 2019 Summer Gear.", + "shieldSpecialSummer2019HealerText": "Conch Trumpet", + "shieldSpecialSummer2019HealerNotes": "Let those who need help know you're coming with the loud blast of this shell trumpet. Limited Edition 2019 Summer Gear. Increases Constitution by 9. ", + "shieldSpecialSummer2019MageText": "Drops of Pure Water", + "shieldSpecialSummer2019MageNotes": "Sweating in the summer sun? No! Performing a simple elemental conjuration to fill the lily pond. Increases Perception by <%= per %>. Limited Edition 2019 Summer 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", diff --git a/website/common/locales/en/limited.json b/website/common/locales/en/limited.json index 9251f9ee59..96e4729a28 100644 --- a/website/common/locales/en/limited.json +++ b/website/common/locales/en/limited.json @@ -138,6 +138,10 @@ "spring2019AmberMageSet": "Amber (Mage)", "spring2019RobinHealerSet": "Robin (Healer)", "spring2019CloudRogueSet": "Cloud (Rogue)", + "summer2019SeaTurtleWarriorSet": "Sea Turtle (Warrior)", + "summer2019WaterLilyMageSet": "Water Lily (Mage)", + "summer2019ConchHealerSet": "Conch (Healer)", + "summer2019HammerheadRogueSet": "Hammerhead (Rogue)", "eventAvailability": "Available for purchase until <%= date(locale) %>.", "dateEndMarch": "April 30", "dateEndApril": "April 19", diff --git a/website/common/script/content/constants.js b/website/common/script/content/constants.js index 45ecd24a12..3f12ba2960 100644 --- a/website/common/script/content/constants.js +++ b/website/common/script/content/constants.js @@ -36,6 +36,7 @@ export const EVENTS = { fall2018: { start: '2018-09-20', end: '2018-11-02' }, winter2019: { start: '2018-12-19', end: '2019-02-02' }, spring2019: { start: '2019-03-19', end: '2019-05-02' }, + summer2019: { start: '2019-06-18', end: '2019-07-02' }, }; export const SEASONAL_SETS = { @@ -143,6 +144,12 @@ export const SEASONAL_SETS = { 'summer2018LionfishMageSet', 'summer2018MerfolkMonarchSet', 'summer2018FisherRogueSet', + + // summer 2019 + 'summer2019SeaTurtleWarriorSet', + 'summer2019WaterLilyMageSet', + 'summer2019ConchHealerSet', + 'summer2019HammerheadRogueSet', ], fall: [ // fall 2014 diff --git a/website/common/script/content/gear/sets/special/index.js b/website/common/script/content/gear/sets/special/index.js index 2afc8aef05..5c2146b6e7 100644 --- a/website/common/script/content/gear/sets/special/index.js +++ b/website/common/script/content/gear/sets/special/index.js @@ -8,7 +8,7 @@ import takeThisGear from './special-takeThis'; import wonderconGear from './special-wondercon'; import t from '../../../translation'; -const CURRENT_SEASON = '_NONE_'; +const CURRENT_SEASON = 'summer'; let armor = { 0: backerGear.armorSpecial0, @@ -1013,6 +1013,9 @@ let armor = { notes: t('armorSpecialSummer2018RogueNotes', { per: 15 }), value: 90, per: 15, + canBuy: () => { + return CURRENT_SEASON === 'summer'; + }, }, summer2018Warrior: { event: EVENTS.summer2018, @@ -1022,6 +1025,9 @@ let armor = { notes: t('armorSpecialSummer2018WarriorNotes', { con: 9 }), value: 90, con: 9, + canBuy: () => { + return CURRENT_SEASON === 'summer'; + }, }, summer2018Mage: { event: EVENTS.summer2018, @@ -1031,6 +1037,9 @@ let armor = { notes: t('armorSpecialSummer2018MageNotes', { int: 9 }), value: 90, int: 9, + canBuy: () => { + return CURRENT_SEASON === 'summer'; + }, }, summer2018Healer: { event: EVENTS.summer2018, @@ -1040,6 +1049,9 @@ let armor = { notes: t('armorSpecialSummer2018HealerNotes', { con: 15 }), value: 90, con: 15, + canBuy: () => { + return CURRENT_SEASON === 'summer'; + }, }, fall2018Rogue: { event: EVENTS.fall2018, @@ -1161,6 +1173,42 @@ let armor = { value: 90, con: 15, }, + summer2019Rogue: { + event: EVENTS.summer2019, + specialClass: 'rogue', + set: 'summer2019HammerheadRogueSet', + text: t('armorSpecialSummer2019RogueText'), + notes: t('armorSpecialSummer2019RogueNotes', { per: 15 }), + value: 90, + per: 15, + }, + summer2019Warrior: { + event: EVENTS.summer2019, + specialClass: 'warrior', + set: 'summer2019SeaTurtleWarriorSet', + text: t('armorSpecialSummer2019WarriorText'), + notes: t('armorSpecialSummer2019WarriorNotes', { con: 9 }), + value: 90, + con: 9, + }, + summer2019Mage: { + event: EVENTS.summer2019, + specialClass: 'wizard', + set: 'summer2019WaterLilyMageSet', + text: t('armorSpecialSummer2019MageText'), + notes: t('armorSpecialSummer2019MageNotes', { int: 9 }), + value: 90, + int: 9, + }, + summer2019Healer: { + event: EVENTS.summer2019, + specialClass: 'healer', + set: 'summer2019ConchHealerSet', + text: t('armorSpecialSummer2019HealerText'), + notes: t('armorSpecialSummer2019HealerNotes', { con: 15 }), + value: 90, + con: 15, + }, }; let back = { @@ -2503,6 +2551,9 @@ let head = { notes: t('headSpecialSummer2018RogueNotes', { per: 9 }), value: 60, per: 9, + canBuy: () => { + return CURRENT_SEASON === 'summer'; + }, }, summer2018Warrior: { event: EVENTS.summer2018, @@ -2512,6 +2563,9 @@ let head = { notes: t('headSpecialSummer2018WarriorNotes', { str: 9 }), value: 60, str: 9, + canBuy: () => { + return CURRENT_SEASON === 'summer'; + }, }, summer2018Mage: { event: EVENTS.summer2018, @@ -2521,6 +2575,9 @@ let head = { notes: t('headSpecialSummer2018MageNotes', { per: 7 }), value: 60, per: 7, + canBuy: () => { + return CURRENT_SEASON === 'summer'; + }, }, summer2018Healer: { event: EVENTS.summer2018, @@ -2530,6 +2587,9 @@ let head = { notes: t('headSpecialSummer2018HealerNotes', { int: 7 }), value: 60, int: 7, + canBuy: () => { + return CURRENT_SEASON === 'summer'; + }, }, fall2018Rogue: { event: EVENTS.fall2018, @@ -2657,6 +2717,42 @@ let head = { value: 60, int: 7, }, + summer2019Rogue: { + event: EVENTS.summer2019, + specialClass: 'rogue', + set: 'summer2019HammerheadRogueSet', + text: t('headSpecialSummer2019RogueText'), + notes: t('headSpecialSummer2019RogueNotes', { per: 9 }), + value: 60, + per: 9, + }, + summer2019Warrior: { + event: EVENTS.summer2019, + specialClass: 'warrior', + set: 'summer2019SeaTurtleWarriorSet', + text: t('headSpecialSummer2019WarriorText'), + notes: t('headSpecialSummer2019WarriorNotes', { str: 9 }), + value: 60, + str: 9, + }, + summer2019Mage: { + event: EVENTS.summer2019, + specialClass: 'wizard', + set: 'summer2019WaterLilyMageSet', + text: t('headSpecialSummer2019MageText'), + notes: t('headSpecialSummer2019MageNotes', { per: 7 }), + value: 60, + per: 7, + }, + summer2019Healer: { + event: EVENTS.summer2019, + specialClass: 'healer', + set: 'summer2019ConchHealerSet', + text: t('headSpecialSummer2019HealerText'), + notes: t('headSpecialSummer2019HealerNotes', { int: 7 }), + value: 60, + int: 7, + }, }; let headAccessory = { @@ -3684,6 +3780,9 @@ let shield = { notes: t('weaponSpecialSummer2018RogueNotes', { str: 8 }), value: 80, str: 8, + canBuy: () => { + return CURRENT_SEASON === 'summer'; + }, }, summer2018Warrior: { event: EVENTS.summer2018, @@ -3693,6 +3792,9 @@ let shield = { notes: t('shieldSpecialSummer2018WarriorNotes', { con: 7 }), value: 70, con: 7, + canBuy: () => { + return CURRENT_SEASON === 'summer'; + }, }, summer2018Healer: { event: EVENTS.summer2018, @@ -3702,6 +3804,9 @@ let shield = { notes: t('shieldSpecialSummer2018HealerNotes', { con: 9 }), value: 70, con: 9, + canBuy: () => { + return CURRENT_SEASON === 'summer'; + }, }, fall2018Rogue: { event: EVENTS.fall2018, @@ -3790,6 +3895,42 @@ let shield = { value: 70, con: 9, }, + summer2019Rogue: { + event: EVENTS.summer2019, + specialClass: 'rogue', + set: 'summer2019HammerheadRogueSet', + text: t('weaponSpecialSummer2019RogueText'), + notes: t('weaponSpecialSummer2019RogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + summer2019Warrior: { + event: EVENTS.summer2019, + specialClass: 'warrior', + set: 'summer2019SeaTurtleWarriorSet', + text: t('shieldSpecialSummer2019WarriorText'), + notes: t('shieldSpecialSummer2019WarriorNotes', { con: 7 }), + value: 70, + con: 7, + }, + summer2019Healer: { + event: EVENTS.summer2019, + specialClass: 'healer', + set: 'summer2019ConchHealerSet', + text: t('shieldSpecialSummer2019HealerText'), + notes: t('shieldSpecialSummer2019HealerNotes', { con: 9 }), + value: 70, + con: 9, + }, + summer2019Mage: { + event: EVENTS.summer2019, + specialClass: 'wizard', + set: 'summer2019WaterLilyMageSet', + text: t('shieldSpecialSummer2019MageText'), + notes: t('shieldSpecialSummer2019MageNotes', { per: 7 }), + value: 70, + per: 7, + }, }; let weapon = { @@ -4801,6 +4942,9 @@ let weapon = { notes: t('weaponSpecialSummer2018RogueNotes', { str: 8 }), value: 80, str: 8, + canBuy: () => { + return CURRENT_SEASON === 'summer'; + }, }, summer2018Warrior: { event: EVENTS.summer2018, @@ -4810,6 +4954,9 @@ let weapon = { notes: t('weaponSpecialSummer2018WarriorNotes', { str: 15 }), value: 90, str: 15, + canBuy: () => { + return CURRENT_SEASON === 'summer'; + }, }, summer2018Mage: { event: EVENTS.summer2018, @@ -4821,6 +4968,9 @@ let weapon = { value: 160, int: 15, per: 7, + canBuy: () => { + return CURRENT_SEASON === 'summer'; + }, }, summer2018Healer: { event: EVENTS.summer2018, @@ -4830,6 +4980,9 @@ let weapon = { notes: t('weaponSpecialSummer2018HealerNotes', { int: 9 }), value: 90, int: 9, + canBuy: () => { + return CURRENT_SEASON === 'summer'; + }, }, fall2018Rogue: { event: EVENTS.fall2018, @@ -4945,6 +5098,42 @@ let weapon = { value: 90, int: 9, }, + summer2019Rogue: { + event: EVENTS.summer2019, + specialClass: 'rogue', + set: 'summer2019HammerheadRogueSet', + text: t('weaponSpecialSummer2019RogueText'), + notes: t('weaponSpecialSummer2019RogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + summer2019Warrior: { + event: EVENTS.summer2019, + specialClass: 'warrior', + set: 'summer2019SeaTurtleWarriorSet', + text: t('weaponSpecialSummer2019WarriorText'), + notes: t('weaponSpecialSummer2019WarriorNotes', { str: 15 }), + value: 90, + str: 15, + }, + summer2019Mage: { + event: EVENTS.summer2019, + specialClass: 'wizard', + set: 'summer2019WaterLilyMageSet', + text: t('weaponSpecialSummer2019MageText'), + notes: t('weaponSpecialSummer2019MageNotes', { int: 15 }), + value: 160, + int: 15, + }, + summer2019Healer: { + event: EVENTS.summer2019, + specialClass: 'healer', + set: 'summer2019ConchHealerSet', + text: t('weaponSpecialSummer2019HealerText'), + notes: t('weaponSpecialSummer2019HealerNotes', { int: 9 }), + value: 90, + int: 9, + }, }; let specialSet = { diff --git a/website/common/script/content/shop-featuredItems.js b/website/common/script/content/shop-featuredItems.js index 701ac10de2..677ae91d85 100644 --- a/website/common/script/content/shop-featuredItems.js +++ b/website/common/script/content/shop-featuredItems.js @@ -34,7 +34,7 @@ const featuredItems = { path: 'quests.dolphin', }, ], - seasonal: 'spring2018Healer', + seasonal: 'summer2019Mage', timeTravelers: [ // TODO ], diff --git a/website/common/script/libs/shops-seasonal.config.js b/website/common/script/libs/shops-seasonal.config.js index 4f38ef5b53..63a5d2b568 100644 --- a/website/common/script/libs/shops-seasonal.config.js +++ b/website/common/script/libs/shops-seasonal.config.js @@ -1,16 +1,21 @@ -// import { SEASONAL_SETS } from '../content/constants'; +import { SEASONAL_SETS } from '../content/constants'; module.exports = { - opened: false, + opened: true, - currentSeason: 'Closed', + currentSeason: 'Summer', - dateRange: { start: '2018-09-20', end: '2018-10-31' }, + dateRange: { start: '2019-06-18', end: '2019-07-30' }, availableSets: [ + ...SEASONAL_SETS.summer, ], pinnedSets: { + wizard: 'summer2019WaterLilyMageSet', + warrior: 'summer2019SeaTurtleWarriorSet', + rogue: 'summer2019HammerheadRogueSet', + healer: 'summer2019ConchHealerSet', }, availableSpells: [ @@ -19,5 +24,5 @@ module.exports = { availableQuests: [ ], - featuredSet: 'mummyMedicSet', + featuredSet: 'summer2018BettaFishWarriorSet', }; diff --git a/website/raw_sprites/spritesmith/gear/events/summer/broad_armor_special_summer2019Healer.png b/website/raw_sprites/spritesmith/gear/events/summer/broad_armor_special_summer2019Healer.png new file mode 100644 index 0000000000..11b7300af7 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/broad_armor_special_summer2019Healer.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/broad_armor_special_summer2019Mage.png b/website/raw_sprites/spritesmith/gear/events/summer/broad_armor_special_summer2019Mage.png new file mode 100644 index 0000000000..a99d6252a7 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/broad_armor_special_summer2019Mage.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/broad_armor_special_summer2019Rogue.png b/website/raw_sprites/spritesmith/gear/events/summer/broad_armor_special_summer2019Rogue.png new file mode 100644 index 0000000000..bf0c897b63 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/broad_armor_special_summer2019Rogue.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/broad_armor_special_summer2019Warrior.png b/website/raw_sprites/spritesmith/gear/events/summer/broad_armor_special_summer2019Warrior.png new file mode 100644 index 0000000000..d4e645c015 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/broad_armor_special_summer2019Warrior.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/head_special_summer2019Healer.png b/website/raw_sprites/spritesmith/gear/events/summer/head_special_summer2019Healer.png new file mode 100644 index 0000000000..011e37bb1a Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/head_special_summer2019Healer.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/head_special_summer2019Mage.png b/website/raw_sprites/spritesmith/gear/events/summer/head_special_summer2019Mage.png new file mode 100644 index 0000000000..b8d1602979 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/head_special_summer2019Mage.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/head_special_summer2019Rogue.png b/website/raw_sprites/spritesmith/gear/events/summer/head_special_summer2019Rogue.png new file mode 100644 index 0000000000..f87c272c53 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/head_special_summer2019Rogue.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/head_special_summer2019Warrior.png b/website/raw_sprites/spritesmith/gear/events/summer/head_special_summer2019Warrior.png new file mode 100644 index 0000000000..588bd2c2aa Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/head_special_summer2019Warrior.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shield_special_summer2019Healer.png b/website/raw_sprites/spritesmith/gear/events/summer/shield_special_summer2019Healer.png new file mode 100644 index 0000000000..40e159cbae Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shield_special_summer2019Healer.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shield_special_summer2019Mage.png b/website/raw_sprites/spritesmith/gear/events/summer/shield_special_summer2019Mage.png new file mode 100644 index 0000000000..90c1f37e54 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shield_special_summer2019Mage.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shield_special_summer2019Rogue.png b/website/raw_sprites/spritesmith/gear/events/summer/shield_special_summer2019Rogue.png new file mode 100644 index 0000000000..e08513929e Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shield_special_summer2019Rogue.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shield_special_summer2019Warrior.png b/website/raw_sprites/spritesmith/gear/events/summer/shield_special_summer2019Warrior.png new file mode 100644 index 0000000000..25c45621bb Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shield_special_summer2019Warrior.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_armor_special_summer2019Healer.png b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_armor_special_summer2019Healer.png new file mode 100644 index 0000000000..76d9109269 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_armor_special_summer2019Healer.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_armor_special_summer2019Mage.png b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_armor_special_summer2019Mage.png new file mode 100644 index 0000000000..96c96bea63 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_armor_special_summer2019Mage.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_armor_special_summer2019Rogue.png b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_armor_special_summer2019Rogue.png new file mode 100644 index 0000000000..1d423b5e6e Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_armor_special_summer2019Rogue.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_armor_special_summer2019Warrior.png b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_armor_special_summer2019Warrior.png new file mode 100644 index 0000000000..ec344fc9df Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_armor_special_summer2019Warrior.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_head_special_summer2019Healer.png b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_head_special_summer2019Healer.png new file mode 100644 index 0000000000..ce01604a4a Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_head_special_summer2019Healer.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_head_special_summer2019Mage.png b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_head_special_summer2019Mage.png new file mode 100644 index 0000000000..3b8cd308c8 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_head_special_summer2019Mage.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_head_special_summer2019Rogue.png b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_head_special_summer2019Rogue.png new file mode 100644 index 0000000000..6e5fc21fd7 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_head_special_summer2019Rogue.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_head_special_summer2019Warrior.png b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_head_special_summer2019Warrior.png new file mode 100644 index 0000000000..e99a9a28e9 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_head_special_summer2019Warrior.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_shield_special_summer2019Healer.png b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_shield_special_summer2019Healer.png new file mode 100644 index 0000000000..19c5a60649 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_shield_special_summer2019Healer.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_shield_special_summer2019Mage.png b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_shield_special_summer2019Mage.png new file mode 100644 index 0000000000..e73e97dbfa Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_shield_special_summer2019Mage.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_shield_special_summer2019Rogue.png b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_shield_special_summer2019Rogue.png new file mode 100644 index 0000000000..8d1b89415b Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_shield_special_summer2019Rogue.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_shield_special_summer2019Warrior.png b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_shield_special_summer2019Warrior.png new file mode 100644 index 0000000000..7981dc91a1 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_shield_special_summer2019Warrior.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_weapon_special_summer2019Healer.png b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_weapon_special_summer2019Healer.png new file mode 100644 index 0000000000..4fe553fcf2 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_weapon_special_summer2019Healer.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_weapon_special_summer2019Mage.png b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_weapon_special_summer2019Mage.png new file mode 100644 index 0000000000..555fecc9a8 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_weapon_special_summer2019Mage.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_weapon_special_summer2019Rogue.png b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_weapon_special_summer2019Rogue.png new file mode 100644 index 0000000000..851b14d1f7 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_weapon_special_summer2019Rogue.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_weapon_special_summer2019Warrior.png b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_weapon_special_summer2019Warrior.png new file mode 100644 index 0000000000..45576ed431 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/shop/shop_weapon_special_summer2019Warrior.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/slim_armor_special_summer2019Healer.png b/website/raw_sprites/spritesmith/gear/events/summer/slim_armor_special_summer2019Healer.png new file mode 100644 index 0000000000..da61e3de18 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/slim_armor_special_summer2019Healer.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/slim_armor_special_summer2019Mage.png b/website/raw_sprites/spritesmith/gear/events/summer/slim_armor_special_summer2019Mage.png new file mode 100644 index 0000000000..e49a161e0b Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/slim_armor_special_summer2019Mage.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/slim_armor_special_summer2019Rogue.png b/website/raw_sprites/spritesmith/gear/events/summer/slim_armor_special_summer2019Rogue.png new file mode 100644 index 0000000000..e0e5c54314 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/slim_armor_special_summer2019Rogue.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/slim_armor_special_summer2019Warrior.png b/website/raw_sprites/spritesmith/gear/events/summer/slim_armor_special_summer2019Warrior.png new file mode 100644 index 0000000000..4a146d8b04 Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/slim_armor_special_summer2019Warrior.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/weapon_special_summer2019Healer.png b/website/raw_sprites/spritesmith/gear/events/summer/weapon_special_summer2019Healer.png new file mode 100644 index 0000000000..bbca1c1dbf Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/weapon_special_summer2019Healer.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/weapon_special_summer2019Mage.png b/website/raw_sprites/spritesmith/gear/events/summer/weapon_special_summer2019Mage.png new file mode 100644 index 0000000000..69b9bf5dfe Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/weapon_special_summer2019Mage.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/weapon_special_summer2019Rogue.png b/website/raw_sprites/spritesmith/gear/events/summer/weapon_special_summer2019Rogue.png new file mode 100644 index 0000000000..44af977dce Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/weapon_special_summer2019Rogue.png differ diff --git a/website/raw_sprites/spritesmith/gear/events/summer/weapon_special_summer2019Warrior.png b/website/raw_sprites/spritesmith/gear/events/summer/weapon_special_summer2019Warrior.png new file mode 100644 index 0000000000..b440f9001c Binary files /dev/null and b/website/raw_sprites/spritesmith/gear/events/summer/weapon_special_summer2019Warrior.png differ diff --git a/website/raw_sprites/spritesmith/npcs/npc_bailey.png b/website/raw_sprites/spritesmith/npcs/npc_bailey.png index d5940b986b..f6ce232f91 100644 Binary files a/website/raw_sprites/spritesmith/npcs/npc_bailey.png and b/website/raw_sprites/spritesmith/npcs/npc_bailey.png differ diff --git a/website/raw_sprites/spritesmith/npcs/npc_justin.png b/website/raw_sprites/spritesmith/npcs/npc_justin.png index 08ba7025c2..28a58235d3 100644 Binary files a/website/raw_sprites/spritesmith/npcs/npc_justin.png and b/website/raw_sprites/spritesmith/npcs/npc_justin.png differ diff --git a/website/raw_sprites/spritesmith/npcs/npc_matt.png b/website/raw_sprites/spritesmith/npcs/npc_matt.png index 2531f1084b..d29232d6ff 100644 Binary files a/website/raw_sprites/spritesmith/npcs/npc_matt.png and b/website/raw_sprites/spritesmith/npcs/npc_matt.png differ diff --git a/website/raw_sprites/spritesmith_large/promo_orcas.png b/website/raw_sprites/spritesmith_large/promo_orcas.png new file mode 100644 index 0000000000..dd5e781815 Binary files /dev/null and b/website/raw_sprites/spritesmith_large/promo_orcas.png differ diff --git a/website/raw_sprites/spritesmith_large/promo_seasonal_shop.png b/website/raw_sprites/spritesmith_large/promo_seasonal_shop.png new file mode 100644 index 0000000000..037fb5bd87 Binary files /dev/null and b/website/raw_sprites/spritesmith_large/promo_seasonal_shop.png differ diff --git a/website/raw_sprites/spritesmith_large/promo_summer_splash_2019.png b/website/raw_sprites/spritesmith_large/promo_summer_splash_2019.png new file mode 100644 index 0000000000..05bba0c2f7 Binary files /dev/null and b/website/raw_sprites/spritesmith_large/promo_summer_splash_2019.png differ diff --git a/website/server/controllers/api-v3/news.js b/website/server/controllers/api-v3/news.js index c1ceaf8b34..389bad3440 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 = 'NEW PET QUEST, NEW ACHIEVEMENTS, AND THE RETURN OF THE ODDBALLS BUNDLE'; +const LAST_ANNOUNCEMENT_TITLE = 'SUMMER SPLASH BEGINS! CLASS OUTFITS, SEASONAL SHOP, ORCAS, AND NPC DECORATIONS'; const worldDmg = { // @TODO bailey: false, }; @@ -30,22 +30,27 @@ api.getNews = {
Feeling doubtful about your ability to tackle your tasks? Could be you have dolphin doldrums! Get the latest pet quest, The Dolphin of Doubt, and earn some chipper dolphin pets by completing your real-life tasks.
-An important announcement regarding quests: We’ll be adding new types of quests with exciting rewards like Magic Hatching Potions! We’ll also continue releasing Pet Quest Bundles so you can work on completing your collection. However, "The Dolphin of Doubt" is the final pet quest we'll be releasing in the Quest Shop for the forseeable future.
-We're also releasing new achievements so you can celebrate your successes in the world of Habitican pet collecting! Now you can earn badges for your profile when you complete certain categories of pet quests and for collecting pets and mounts in the classic pet colors. We're kicking off with: Cover Your Bases and All Your Base for collecting all the classic Base pets and mounts, Just Add Water for completing quests for aquatic pets (including the new Dolphins!), and Mind over Matter for completing all pet quests for (normally) inanimate objects.
-If you’ve already completed the required Quests for a newly released achievement, you don’t have to do them all again! Just complete any one of the relevant Quests and the Achievement will unlock.
-In celebration of our new pet quest achievements, the Oddballs Pet Quest Bundle is back! From now until June 30, you can purchase it and receive the Rock, Marshmallow Slime, and Yarn quests, all for only 7 Gems! That's a discount of 5 Gems from the price of purchasing them separately. Check it out in the Quest Shop today!
-To escape the summer heat in Habit City, everyone's moved down to the undersea city of Dilatory. The Summer Splash event has begun!
+ +From now until July 31st, limited edition outfits are available in the Rewards column. Depending on your class, you can be a Sea Turtle Warrior, Hammerhead Rogue, Conch Healer, or Water Lily Mage! You'd better get productive to earn enough gold before they disappear. Good luck!
+The Seasonal Shop has opened! The Seasonal Sorceress is stocking the seasonal edition versions of previous summer outfits, now available for Gems instead of Gold. Plus, there will be more fun things in the shop as the event progresses. The Seasonal Shop will only be open until July 31st, so don't wait!
+Dolphins aren't the only animals riding the waves around the city of Dilatory: it looks like some friendly Orcas are swimming into Habiticans' stables! In honor of the Summer Splash event, everyone who didn't already have an Orca gets either the mount or the pet. Enjoy!
+Looks like the NPCs are really getting in to the cheery summer mood around the site. Who wouldn't? After all, there's plenty more celebration to come...
+