From e8edc9669a0d31f6b444acb4fe00413ff29ace7d Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Fri, 3 Jan 2020 12:50:13 -0600 Subject: [PATCH] WIP(timetrav): buy BG with Hourglass --- website/client/src/assets/css/sprites.css | 59 +++++++++++------- .../BackerOnly-Equip-MythicGryphonArmor.gif | Bin .../BackerOnly-Equip-MythicGryphonGlaive.gif | Bin .../BackerOnly-Equip-MythicGryphonHelm.gif | Bin .../BackerOnly-Equip-MythicGryphonShield.gif | Bin .../BackerOnly-Equip-MythicGryphonVisor.gif | Bin .../BackerOnly-Equip-ShadeArmor.gif | Bin .../BackerOnly-Equip-ShadeHelmet.gif | Bin .../BackerOnly-Mount-Body-Gryphatrice.gif | Bin .../BackerOnly-Mount-Head-Gryphatrice.gif | Bin .../BackerOnly-Pet-CerberusPup.gif | Bin .../BackerOnly-Pet-Gryphatrice.gif | Bin .../BackerOnly-Shield-TormentedSkull.gif | Bin .../BackerOnly-Weapon-DarkSoulsBlade.gif | Bin .../ContributorOnly-Equip-CrystalArmor.gif | Bin .../ContributorOnly-Equip-CrystalHelmet.gif | Bin .../Pet_HatchingPotion_Veggie.gif | Bin .../images/animated/background_airship.gif | Bin 0 -> 21206 bytes .../images/animated/background_steamworks.gif | Bin 0 -> 27600 bytes .../assets/images/{ => animated}/npc_ian.gif | Bin .../images/{ => animated}/quest_bewilder.gif | Bin .../images/{ => animated}/quest_burnout.gif | Bin .../{ => animated}/quest_dysheartener.gif | Bin .../quest_lostMasterclasser4.gif | Bin .../weapon_special_critical.gif | Bin .../components/shops/timeTravelers/index.vue | 4 +- website/client/src/store/actions/shops.js | 3 + website/common/locales/en/subscriber.json | 1 + .../script/content/appearance/backgrounds.js | 22 ++++++- .../script/errors/commonErrorMessages.js | 1 + website/common/script/libs/shops.js | 19 ++++++ website/common/script/ops/buy/buy.js | 4 ++ .../script/ops/buy/hourglassPurchase.js | 16 ++++- .../icons/icon_background_airship.png | Bin 0 -> 3300 bytes .../icons/icon_background_clocktower.png | Bin 0 -> 2471 bytes .../icons/icon_background_steamworks.png | Bin 0 -> 2058 bytes 36 files changed, 101 insertions(+), 28 deletions(-) rename website/client/src/assets/images/{ => animated}/BackerOnly-Equip-MythicGryphonArmor.gif (100%) rename website/client/src/assets/images/{ => animated}/BackerOnly-Equip-MythicGryphonGlaive.gif (100%) rename website/client/src/assets/images/{ => animated}/BackerOnly-Equip-MythicGryphonHelm.gif (100%) rename website/client/src/assets/images/{ => animated}/BackerOnly-Equip-MythicGryphonShield.gif (100%) rename website/client/src/assets/images/{ => animated}/BackerOnly-Equip-MythicGryphonVisor.gif (100%) rename website/client/src/assets/images/{ => animated}/BackerOnly-Equip-ShadeArmor.gif (100%) rename website/client/src/assets/images/{ => animated}/BackerOnly-Equip-ShadeHelmet.gif (100%) rename website/client/src/assets/images/{ => animated}/BackerOnly-Mount-Body-Gryphatrice.gif (100%) rename website/client/src/assets/images/{ => animated}/BackerOnly-Mount-Head-Gryphatrice.gif (100%) rename website/client/src/assets/images/{ => animated}/BackerOnly-Pet-CerberusPup.gif (100%) rename website/client/src/assets/images/{ => animated}/BackerOnly-Pet-Gryphatrice.gif (100%) rename website/client/src/assets/images/{ => animated}/BackerOnly-Shield-TormentedSkull.gif (100%) rename website/client/src/assets/images/{ => animated}/BackerOnly-Weapon-DarkSoulsBlade.gif (100%) rename website/client/src/assets/images/{ => animated}/ContributorOnly-Equip-CrystalArmor.gif (100%) rename website/client/src/assets/images/{ => animated}/ContributorOnly-Equip-CrystalHelmet.gif (100%) rename website/client/src/assets/images/{ => animated}/Pet_HatchingPotion_Veggie.gif (100%) create mode 100644 website/client/src/assets/images/animated/background_airship.gif create mode 100644 website/client/src/assets/images/animated/background_steamworks.gif rename website/client/src/assets/images/{ => animated}/npc_ian.gif (100%) rename website/client/src/assets/images/{ => animated}/quest_bewilder.gif (100%) rename website/client/src/assets/images/{ => animated}/quest_burnout.gif (100%) rename website/client/src/assets/images/{ => animated}/quest_dysheartener.gif (100%) rename website/client/src/assets/images/{ => animated}/quest_lostMasterclasser4.gif (100%) rename website/client/src/assets/images/{ => animated}/weapon_special_critical.gif (100%) create mode 100644 website/raw_sprites/spritesmith/backgrounds/icons/icon_background_airship.png create mode 100644 website/raw_sprites/spritesmith/backgrounds/icons/icon_background_clocktower.png create mode 100644 website/raw_sprites/spritesmith/backgrounds/icons/icon_background_steamworks.png diff --git a/website/client/src/assets/css/sprites.css b/website/client/src/assets/css/sprites.css index e38bb7c2bf..ee34061c2a 100755 --- a/website/client/src/assets/css/sprites.css +++ b/website/client/src/assets/css/sprites.css @@ -1,17 +1,11 @@ -.quest_dysheartener { - background: url("~@/assets/images/quest_dysheartener.gif") no-repeat; - width: 219px; - height: 219px; -} - .quest_lostMasterclasser4 { - background: url("~@/assets/images/quest_lostMasterclasser4.gif") no-repeat; + background: url("~@/assets/images/animated/quest_lostMasterclasser4.gif") no-repeat; width: 219px; height: 219px; } .Pet_HatchingPotion_Veggie { - background: url("~@/assets/images/Pet_HatchingPotion_Veggie.gif") no-repeat; + background: url("~@/assets/images/animated/Pet_HatchingPotion_Veggie.gif") no-repeat; width: 68px; height: 68px; } @@ -51,7 +45,7 @@ /* Critical */ .weapon_special_critical { - background: url("~@/assets/images/weapon_special_critical.gif") no-repeat; + background: url("~@/assets/images/animated/weapon_special_critical.gif") no-repeat; width: 90px; height: 90px; margin-left:-12px; @@ -68,32 +62,32 @@ } .head_special_0 { - background: url("~@/assets/images/BackerOnly-Equip-ShadeHelmet.gif") no-repeat; + background: url("~@/assets/images/animated/BackerOnly-Equip-ShadeHelmet.gif") no-repeat; } .head_special_1 { - background: url("~@/assets/images/ContributorOnly-Equip-CrystalHelmet.gif") no-repeat; + background: url("~@/assets/images/animated/ContributorOnly-Equip-CrystalHelmet.gif") no-repeat; margin-top: 3px; } .broad_armor_special_0,.slim_armor_special_0 { - background: url("~@/assets/images/BackerOnly-Equip-ShadeArmor.gif") no-repeat; + background: url("~@/assets/images/animated/BackerOnly-Equip-ShadeArmor.gif") no-repeat; } .broad_armor_special_1,.slim_armor_special_1 { - background: url("~@/assets/images/ContributorOnly-Equip-CrystalArmor.gif") no-repeat; + background: url("~@/assets/images/animated/ContributorOnly-Equip-CrystalArmor.gif") no-repeat; } .shield_special_0 { - background: url("~@/assets/images/BackerOnly-Shield-TormentedSkull.gif") no-repeat; + background: url("~@/assets/images/animated/BackerOnly-Shield-TormentedSkull.gif") no-repeat; } .weapon_special_0 { - background: url("~@/assets/images/BackerOnly-Weapon-DarkSoulsBlade.gif") no-repeat; + background: url("~@/assets/images/animated/BackerOnly-Weapon-DarkSoulsBlade.gif") no-repeat; } .Pet-Wolf-Cerberus { width: 105px; height: 72px; - background: url("~@/assets/images/BackerOnly-Pet-CerberusPup.gif") no-repeat; + background: url("~@/assets/images/animated/BackerOnly-Pet-CerberusPup.gif") no-repeat; } .broad_armor_special_ks2019, .slim_armor_special_ks2019, .eyewear_special_ks2019, .head_special_ks2019, .shield_special_ks2019 { @@ -102,29 +96,29 @@ } .broad_armor_special_ks2019, .slim_armor_special_ks2019 { - background: url("~@/assets/images/BackerOnly-Equip-MythicGryphonArmor.gif") no-repeat; + background: url("~@/assets/images/animated/BackerOnly-Equip-MythicGryphonArmor.gif") no-repeat; } .eyewear_special_ks2019 { - background: url("~@/assets/images/BackerOnly-Equip-MythicGryphonVisor.gif") no-repeat; + background: url("~@/assets/images/animated/BackerOnly-Equip-MythicGryphonVisor.gif") no-repeat; } .head_special_ks2019 { - background: url("~@/assets/images/BackerOnly-Equip-MythicGryphonHelm.gif") no-repeat; + background: url("~@/assets/images/animated/BackerOnly-Equip-MythicGryphonHelm.gif") no-repeat; } .shield_special_ks2019 { - background: url("~@/assets/images/BackerOnly-Equip-MythicGryphonShield.gif") no-repeat; + background: url("~@/assets/images/animated/BackerOnly-Equip-MythicGryphonShield.gif") no-repeat; } .weapon_special_ks2019 { - background: url("~@/assets/images/BackerOnly-Equip-MythicGryphonGlaive.gif") no-repeat; + background: url("~@/assets/images/animated/BackerOnly-Equip-MythicGryphonGlaive.gif") no-repeat; width: 120px; height: 120px; } .Pet-Gryphon-Gryphatrice { - background: url("~@/assets/images/BackerOnly-Pet-Gryphatrice.gif") no-repeat; + background: url("~@/assets/images/animated/BackerOnly-Pet-Gryphatrice.gif") no-repeat; width: 81px; height: 99px; } @@ -135,11 +129,28 @@ } .Mount_Head_Gryphon-Gryphatrice { - background: url("~@/assets/images/BackerOnly-Mount-Head-Gryphatrice.gif") no-repeat; + background: url("~@/assets/images/animated/BackerOnly-Mount-Head-Gryphatrice.gif") no-repeat; } .Mount_Body_Gryphon-Gryphatrice { - background: url("~@/assets/images/BackerOnly-Mount-Body-Gryphatrice.gif") no-repeat; + background: url("~@/assets/images/animated/BackerOnly-Mount-Body-Gryphatrice.gif") no-repeat; +} + +.background_airship, .background_clocktower, .background_steamworks { + width: 141px; + height: 147px; +} + +.background_airship { + background: url("~@/assets/images/animated/background_airship.gif") no-repeat; +} + +.background_clocktower { + background: url("~@/assets/images/animated/background_airship.gif") no-repeat; +} + +.background_steamworks { + background: url("~@/assets/images/animated/background_steamworks.gif") no-repeat; } /* FIXME figure out how to handle customize menu!! diff --git a/website/client/src/assets/images/BackerOnly-Equip-MythicGryphonArmor.gif b/website/client/src/assets/images/animated/BackerOnly-Equip-MythicGryphonArmor.gif similarity index 100% rename from website/client/src/assets/images/BackerOnly-Equip-MythicGryphonArmor.gif rename to website/client/src/assets/images/animated/BackerOnly-Equip-MythicGryphonArmor.gif diff --git a/website/client/src/assets/images/BackerOnly-Equip-MythicGryphonGlaive.gif b/website/client/src/assets/images/animated/BackerOnly-Equip-MythicGryphonGlaive.gif similarity index 100% rename from website/client/src/assets/images/BackerOnly-Equip-MythicGryphonGlaive.gif rename to website/client/src/assets/images/animated/BackerOnly-Equip-MythicGryphonGlaive.gif diff --git a/website/client/src/assets/images/BackerOnly-Equip-MythicGryphonHelm.gif b/website/client/src/assets/images/animated/BackerOnly-Equip-MythicGryphonHelm.gif similarity index 100% rename from website/client/src/assets/images/BackerOnly-Equip-MythicGryphonHelm.gif rename to website/client/src/assets/images/animated/BackerOnly-Equip-MythicGryphonHelm.gif diff --git a/website/client/src/assets/images/BackerOnly-Equip-MythicGryphonShield.gif b/website/client/src/assets/images/animated/BackerOnly-Equip-MythicGryphonShield.gif similarity index 100% rename from website/client/src/assets/images/BackerOnly-Equip-MythicGryphonShield.gif rename to website/client/src/assets/images/animated/BackerOnly-Equip-MythicGryphonShield.gif diff --git a/website/client/src/assets/images/BackerOnly-Equip-MythicGryphonVisor.gif b/website/client/src/assets/images/animated/BackerOnly-Equip-MythicGryphonVisor.gif similarity index 100% rename from website/client/src/assets/images/BackerOnly-Equip-MythicGryphonVisor.gif rename to website/client/src/assets/images/animated/BackerOnly-Equip-MythicGryphonVisor.gif diff --git a/website/client/src/assets/images/BackerOnly-Equip-ShadeArmor.gif b/website/client/src/assets/images/animated/BackerOnly-Equip-ShadeArmor.gif similarity index 100% rename from website/client/src/assets/images/BackerOnly-Equip-ShadeArmor.gif rename to website/client/src/assets/images/animated/BackerOnly-Equip-ShadeArmor.gif diff --git a/website/client/src/assets/images/BackerOnly-Equip-ShadeHelmet.gif b/website/client/src/assets/images/animated/BackerOnly-Equip-ShadeHelmet.gif similarity index 100% rename from website/client/src/assets/images/BackerOnly-Equip-ShadeHelmet.gif rename to website/client/src/assets/images/animated/BackerOnly-Equip-ShadeHelmet.gif diff --git a/website/client/src/assets/images/BackerOnly-Mount-Body-Gryphatrice.gif b/website/client/src/assets/images/animated/BackerOnly-Mount-Body-Gryphatrice.gif similarity index 100% rename from website/client/src/assets/images/BackerOnly-Mount-Body-Gryphatrice.gif rename to website/client/src/assets/images/animated/BackerOnly-Mount-Body-Gryphatrice.gif diff --git a/website/client/src/assets/images/BackerOnly-Mount-Head-Gryphatrice.gif b/website/client/src/assets/images/animated/BackerOnly-Mount-Head-Gryphatrice.gif similarity index 100% rename from website/client/src/assets/images/BackerOnly-Mount-Head-Gryphatrice.gif rename to website/client/src/assets/images/animated/BackerOnly-Mount-Head-Gryphatrice.gif diff --git a/website/client/src/assets/images/BackerOnly-Pet-CerberusPup.gif b/website/client/src/assets/images/animated/BackerOnly-Pet-CerberusPup.gif similarity index 100% rename from website/client/src/assets/images/BackerOnly-Pet-CerberusPup.gif rename to website/client/src/assets/images/animated/BackerOnly-Pet-CerberusPup.gif diff --git a/website/client/src/assets/images/BackerOnly-Pet-Gryphatrice.gif b/website/client/src/assets/images/animated/BackerOnly-Pet-Gryphatrice.gif similarity index 100% rename from website/client/src/assets/images/BackerOnly-Pet-Gryphatrice.gif rename to website/client/src/assets/images/animated/BackerOnly-Pet-Gryphatrice.gif diff --git a/website/client/src/assets/images/BackerOnly-Shield-TormentedSkull.gif b/website/client/src/assets/images/animated/BackerOnly-Shield-TormentedSkull.gif similarity index 100% rename from website/client/src/assets/images/BackerOnly-Shield-TormentedSkull.gif rename to website/client/src/assets/images/animated/BackerOnly-Shield-TormentedSkull.gif diff --git a/website/client/src/assets/images/BackerOnly-Weapon-DarkSoulsBlade.gif b/website/client/src/assets/images/animated/BackerOnly-Weapon-DarkSoulsBlade.gif similarity index 100% rename from website/client/src/assets/images/BackerOnly-Weapon-DarkSoulsBlade.gif rename to website/client/src/assets/images/animated/BackerOnly-Weapon-DarkSoulsBlade.gif diff --git a/website/client/src/assets/images/ContributorOnly-Equip-CrystalArmor.gif b/website/client/src/assets/images/animated/ContributorOnly-Equip-CrystalArmor.gif similarity index 100% rename from website/client/src/assets/images/ContributorOnly-Equip-CrystalArmor.gif rename to website/client/src/assets/images/animated/ContributorOnly-Equip-CrystalArmor.gif diff --git a/website/client/src/assets/images/ContributorOnly-Equip-CrystalHelmet.gif b/website/client/src/assets/images/animated/ContributorOnly-Equip-CrystalHelmet.gif similarity index 100% rename from website/client/src/assets/images/ContributorOnly-Equip-CrystalHelmet.gif rename to website/client/src/assets/images/animated/ContributorOnly-Equip-CrystalHelmet.gif diff --git a/website/client/src/assets/images/Pet_HatchingPotion_Veggie.gif b/website/client/src/assets/images/animated/Pet_HatchingPotion_Veggie.gif similarity index 100% rename from website/client/src/assets/images/Pet_HatchingPotion_Veggie.gif rename to website/client/src/assets/images/animated/Pet_HatchingPotion_Veggie.gif diff --git a/website/client/src/assets/images/animated/background_airship.gif b/website/client/src/assets/images/animated/background_airship.gif new file mode 100644 index 0000000000000000000000000000000000000000..106f0cde5854b63f69713adea94bad876164a5ce GIT binary patch literal 21206 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�V{}c8!$3TC^JLt75xgja~MQ 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 J0$Es8{|k3lRFD7w literal 0 HcmV?d00001 diff --git a/website/client/src/assets/images/npc_ian.gif b/website/client/src/assets/images/animated/npc_ian.gif similarity index 100% rename from website/client/src/assets/images/npc_ian.gif rename to website/client/src/assets/images/animated/npc_ian.gif diff --git a/website/client/src/assets/images/quest_bewilder.gif b/website/client/src/assets/images/animated/quest_bewilder.gif similarity index 100% rename from website/client/src/assets/images/quest_bewilder.gif rename to website/client/src/assets/images/animated/quest_bewilder.gif diff --git a/website/client/src/assets/images/quest_burnout.gif b/website/client/src/assets/images/animated/quest_burnout.gif similarity index 100% rename from website/client/src/assets/images/quest_burnout.gif rename to website/client/src/assets/images/animated/quest_burnout.gif diff --git a/website/client/src/assets/images/quest_dysheartener.gif b/website/client/src/assets/images/animated/quest_dysheartener.gif similarity index 100% rename from website/client/src/assets/images/quest_dysheartener.gif rename to website/client/src/assets/images/animated/quest_dysheartener.gif diff --git a/website/client/src/assets/images/quest_lostMasterclasser4.gif b/website/client/src/assets/images/animated/quest_lostMasterclasser4.gif similarity index 100% rename from website/client/src/assets/images/quest_lostMasterclasser4.gif rename to website/client/src/assets/images/animated/quest_lostMasterclasser4.gif diff --git a/website/client/src/assets/images/weapon_special_critical.gif b/website/client/src/assets/images/animated/weapon_special_critical.gif similarity index 100% rename from website/client/src/assets/images/weapon_special_critical.gif rename to website/client/src/assets/images/animated/weapon_special_critical.gif diff --git a/website/client/src/components/shops/timeTravelers/index.vue b/website/client/src/components/shops/timeTravelers/index.vue index b399ecbd65..dffc0f04b9 100644 --- a/website/client/src/components/shops/timeTravelers/index.vue +++ b/website/client/src/components/shops/timeTravelers/index.vue @@ -390,9 +390,9 @@ export default { // force update for now until we restructure the data let backgroundUpdate = this.backgroundUpdate; // eslint-disable-line - const normalGroups = _filter(apiCategories, c => c.identifier === 'mounts' || c.identifier === 'pets' || c.identifier === 'quests'); + const normalGroups = _filter(apiCategories, c => c.identifier === 'mounts' || c.identifier === 'pets' || c.identifier === 'quests' || c.identifier === 'backgrounds'); - const setGroups = _filter(apiCategories, c => c.identifier !== 'mounts' && c.identifier !== 'pets' && c.identifier !== 'quests'); + const setGroups = _filter(apiCategories, c => c.identifier !== 'mounts' && c.identifier !== 'pets' && c.identifier !== 'quests' && c.identifier !== 'backgrounds'); const setCategory = { identifier: 'sets', diff --git a/website/client/src/store/actions/shops.js b/website/client/src/store/actions/shops.js index e79beb187f..d06b2fcb06 100644 --- a/website/client/src/store/actions/shops.js +++ b/website/client/src/store/actions/shops.js @@ -160,6 +160,9 @@ export async function genericPurchase (store, params) { // resetting type to pinType only here return buyItem(store, { ...params, type: params.pinType }); case 'background': + if (params.currency === 'hourglasses') { + return purchaseHourglassItem(store, params); + } return unlock(store, { query: { path: `background.${params.key}`, diff --git a/website/common/locales/en/subscriber.json b/website/common/locales/en/subscriber.json index bad5adb794..988d680830 100644 --- a/website/common/locales/en/subscriber.json +++ b/website/common/locales/en/subscriber.json @@ -180,6 +180,7 @@ "notEnoughHourglasses": "You don't have enough Mystic Hourglasses.", "hourglassBuyEquipSetConfirm": "Buy this full set of items for 1 Mystic Hourglass?", "hourglassBuyItemConfirm": "Buy this item for 1 Mystic Hourglass?", + "backgroundsAlreadyOwned": "Background already owned.", "petsAlreadyOwned": "Pet already owned.", "mountsAlreadyOwned": "Mount already owned.", "typeNotAllowedHourglass": "Item type not supported for purchase with Mystic Hourglass. Allowed types: <%= allowedTypes %>", diff --git a/website/common/script/content/appearance/backgrounds.js b/website/common/script/content/appearance/backgrounds.js index 5afd305265..23af2fa64e 100644 --- a/website/common/script/content/appearance/backgrounds.js +++ b/website/common/script/content/appearance/backgrounds.js @@ -973,6 +973,26 @@ const backgrounds = { currency: 'loginIncentive', }, }, + timeTravelBackgrounds: { + airship: { + text: t('backgroundAirshipText'), + notes: t('backgroundAirshipNotes'), + price: 1, + currency: 'hourglasses', + }, + clocktower: { + text: t('backgroundClocktowerText'), + notes: t('backgroundClocktowerNotes'), + price: 1, + currency: 'hourglasses', + }, + steamworks: { + text: t('backgroundSteamworksText'), + notes: t('backgroundSteamworksNotes'), + price: 1, + currency: 'hourglasses', + }, + }, }; /* eslint-enable quote-props */ @@ -982,7 +1002,7 @@ forOwn(backgrounds, (backgroundsInSet, set) => { forOwn(backgroundsInSet, (background, bgKey) => { background.key = bgKey; background.set = set; - background.price = 7; + background.price = background.price || 7; flat[bgKey] = background; }); diff --git a/website/common/script/errors/commonErrorMessages.js b/website/common/script/errors/commonErrorMessages.js index 7f0530f5ff..b71b37c5b4 100644 --- a/website/common/script/errors/commonErrorMessages.js +++ b/website/common/script/errors/commonErrorMessages.js @@ -13,6 +13,7 @@ export default { invalidTypeEquip: '"type" must be one of "equipped", "pet", "mount", "costume"', missingPetFoodFeed: '"pet" and "food" are required parameters.', missingEggHatchingPotion: '"egg" and "hatchingPotion" are required parameters.', + useUnlockForCosmetics: 'Use the "unlock" route to purchase backgrounds and avatar customizations using Gems.', invalidPetName: 'Invalid pet name supplied.', invalidFoodName: 'Invalid food name supplied.', diff --git a/website/common/script/libs/shops.js b/website/common/script/libs/shops.js index 949044ca3e..abd6ea734d 100644 --- a/website/common/script/libs/shops.js +++ b/website/common/script/libs/shops.js @@ -326,6 +326,25 @@ shops.getTimeTravelersCategories = function getTimeTravelersCategories (user, la } categories.push(questCategory); + const backgroundCategory = { + identifier: 'backgrounds', + text: i18n.t('backgrounds', language), + items: [], + }; + for (const bg in content.backgrounds.timeTravelBackgrounds) { + if (!user.purchased.background[bg]) { + const item = getItemInfo( + user, + 'background', + content.backgroundsFlat[bg], + officialPinnedItems, + language, + ); + backgroundCategory.items.push(item); + } + } + categories.push(backgroundCategory); + for (const type of Object.keys(stable)) { const category = { identifier: type, diff --git a/website/common/script/ops/buy/buy.js b/website/common/script/ops/buy/buy.js index 7b9795986d..6394005927 100644 --- a/website/common/script/ops/buy/buy.js +++ b/website/common/script/ops/buy/buy.js @@ -43,6 +43,10 @@ export default function buy ( buyRes = buyOp.purchase(); break; } + case 'backgrounds': + if (!hourglass) throw new BadRequest(errorMessage('useUnlockForCosmetics')); + buyRes = hourglassPurchase(user, req, analytics); + break; case 'mystery': buyRes = buyMysterySet(user, req, analytics); break; diff --git a/website/common/script/ops/buy/hourglassPurchase.js b/website/common/script/ops/buy/hourglassPurchase.js index f721acbc43..e3997957c2 100644 --- a/website/common/script/ops/buy/hourglassPurchase.js +++ b/website/common/script/ops/buy/hourglassPurchase.js @@ -16,7 +16,21 @@ export default function purchaseHourglass (user, req = {}, analytics, quantity = const type = get(req, 'params.type'); if (!type) throw new BadRequest(errorMessage('missingTypeParam')); - if (type === 'quests') { + if (type === 'backgrounds') { + if (!content.backgroundsFlat[key] || content.backgroundsFlat[key].currency !== 'hourglasses') { + throw new NotAuthorized(i18n.t('notAllowedHourglass', req.language)); + } + if (user.purchased.background[key]) { + throw new NotAuthorized(i18n.t('backgroundAlreadyOwned', req.language)); + } + if (user.purchased.plan.consecutive.trinkets <= 0) { + throw new NotAuthorized(i18n.t('notEnoughHourglasses', req.language)); + } + + user.purchased.background[key] = true; + user.purchased.plan.consecutive.trinkets -= 1; + if (user.markModified) user.markModified('purchased.background'); + } else if (type === 'quests') { if (!content.quests[key] || content.quests[key].category !== 'timeTravelers') throw new NotAuthorized(i18n.t('notAllowedHourglass', req.language)); if (user.purchased.plan.consecutive.trinkets < quantity) { throw new NotAuthorized(i18n.t('notEnoughHourglasses', req.language)); diff --git a/website/raw_sprites/spritesmith/backgrounds/icons/icon_background_airship.png b/website/raw_sprites/spritesmith/backgrounds/icons/icon_background_airship.png new file mode 100644 index 0000000000000000000000000000000000000000..5de5ee4220d70e44624aaa4b7d752fb4c632e58c GIT binary patch literal 3300 zcmV))_P)9`*cF+;K0>>*F{Zw_O4Nyt4X!06^Q-Hs1F~005tsalF-&IUZ8^ z=?w+}0AK%uzb~q;1ps8l!~+17h}!4)FYfzHH&w;JguYq2U&u&s0RWPt%m9G3e>egF z_~mm`X^EzG0KkLk2><}sLL%ekwO;@L{+|CN0HC8IsOwh^>n&w6(=Z{iN$jvx06@61 z0{~#Pb7~e-7y#gDxD5b^oAMw4pwmla`ObUze1!d3EbMRM7$PKd_81wTNDD-|VPM~9 zFc2~jgk(ON2LNcgQVIZwci8{{JH9Fd03n*|Yq3~zNOpA&Ym zXGYV)m9(&@o(NFv;{gCRw}btt{C(_DBFHA+TW@)ZG(kicX+=1Xu*Mz2G3E%7R@f~4 zm?Awch=Gv)5YqDbApk%FXrcQa$N~T~p1BAB`13}3owr{*C|-qYx_;9W0D!uB?(L$o zXdOawU4B|XkmJAP5f0%Lq7zbR;2+>!mS+lBmRDQZk!-U(Tx*IOBKNI z`~C(u`!xy2n0Vc%Dh5IZg%I1g(eyIkTn7L+-AP1_TEabeksLB@@d6q~R({XT7yv+8 zyI$7G{@DB3U9t%CrY&0RYYx7XkoE+B3wv za3Ix0uNbZ(r&W3qL?>Ma0Gvsi!12u1J{QD5NPh?kn8*Q+DO}OYz2ua2tEK}0PI$ti z6YTty-$k_$8GcjG8r3grKhzT-MMM*6!-CWu@rlWl1x>?=R5LApv4~t%R$Ku9h>0Z< zv$MP08IfV5H=O1o5>GbV;d82Rh&&!PnGA&76GBYoHzh_OQf4iu@;uj}>R7sa(^y;) zoe=5A5^jlwZpS*wA@$XaVP;GN01RnnEVJVIr*t~QB!4*VL_|b5s%}2@Q}Xtm)EzRu z+BLtsTMz>w{UK!P%BOWK9}aNO2UYZGc?}siU9@;|2RX&uOR#A(bLgu5UjYE-%v}fo zDA>J&^O!M*NQiRuh{T#Go9=pQfGiQz=BJoNp{nBjh{)^lHr;#;gbbKNd_+V@(Q|?# z3wqP#=yQcNifM4#ddZ9MO1c)EI{2K~Oxsu;c8OZ8eIhZ*8|e0*$iE`WIg~O?ybGVN zi?a7QZv!EBi;zm;0Jm^}_FY4Ww!;1S^X^=ueNSy-Oj30DYbw~YjB+m)f6SOg5aR8i z{(0!(N2rg&;eN&w{7F=6y(Llj*kL`+S2YkaNQ7wZjxr_ZF$ z7&TFcAkB`7mQfRAXq?oWo`_g^Ke<~BrDrZ6AQd6Zy!ivGGZAIt_q?g=3$HnSdM(Q=_-dJUV$ zE1W>(>d71d060@hi`%U1N=m{w?jxccf{e+dnF+%sD$~o}cF{SZKDomd#mrh(!AY5y z(x;b;2tq71^|W|4bHb|4D);%R^ukF7LV656ztvuzm!|?iY>X(wFjqWr)L0t$GBauw zHBA73H8WWs@d`8)6W2H*dsnO7?k-^rGjc>40ART25Bq}IdL82>BJFX^zE}U{1D%C? z3qn-+z1hdSM@YQll(+}nvUVi`fgFIKQ>Z;{MYl$`Ha^UiTbw?kO#4f}|&ycB+JIZbY{2D$f_zV`|M zptIGZQ^@}XhGg|63Xaqf0ZJO{FRA(e1OOC^7hC;s4glcaSv;*!yYWN*PVz2q?>%5} z$bdM+46gj5d6NJDhl?th;cDdC#Yt%L(h}By|Cmn>(9T=rd#Mm(Equ@^NE!V&S^dJ+ zeE@)yb+k~1ST;M8-k`JH+cPq>s8+m1eer23Xcu*cRr5l^CE*la4@m9U=b?grVFmLr z%E&kkAqIyG2qFKfXN*!vi_Q^Jz?DBiSFVivA&b#1Na6+XXs!4v?% zu|l3n+xON+>Xw8dV)-spQ`g)kBI=u47-PKgz9?Q+<{o~1Ex-GTlu)N%H$Ss@7ey+L zC!2_zC(@YRe=&#sdga{g`Y$=|_c9EG3=SbrE#sanIC_>|C6R1iRKrKdJ^!@Mzh_8> z?DQvlY4L(mUFPi3*MCIr@$-2_Ed9+F^kOq(=?#trY0=-T$>qdS7;SH^AXho127K-F zW9+Y$ULqvfd-q`~;yU3H&Hk-kdY4ajToI(x3+}0jHxM!?gfu2`<+Q4NME1I;m0rV9 zc#8VLK?Lk+WsEaCk@<}U(cIg|+7k57JNf+1M(PodvEXG zjfvs)h3_zSdFxC-Z#hwhQ#@8~A}F2Q7EXDcO0^8K;`K z_v_nue|;72Cpvil2lunT{1WPzvg<@%S~ZaplsrpT7LoSKdmPZ6AW^iL_dCnzZPXCI zH;dkQQM}6T-z}lCzQuW5RrqODjkh5Nhmhl2sV7#XGc#6`&RXd4a@JFpPM{Y#-N=>p z__?RAHFt^t<$YDWliN)sI92Z5`N_0sq3D|LOlS1$zQeu0wSpWpRyZfVMwDzT5%Q;{ z~a4nYW5>XB@4fx75xb4VSEby=3+bgbWlRFN~rNxhNJvIp21i znaim0s}nq5(eCB_XLB6l|A~aK)MK=0)fXfp4qT(RIBwyYublDpV(Oe30Dvmd4Quix zT9$q`UuhNO@%x+mSQmQ!Hn}cg5~JGpONijj%Q(+-(qH%YVzjp>(mb68LI#D9^Ud7D z+Iz1tHtyxQ6N!LNzhquv;cUJwaYVSqDi*ojz&uA%{1C}?a)>$8nbA6Unt2m-0_#57 zJ9Ln<^_BCPdoBEU5Bo{vxHWgEgPd{Xu5G29N1(JA0Ptig=j)NEJ7~7_`H%N{BHO@3 zKM0wYk|Ii!EPP=kv(#G@az$7H6ZcuTC=^b|M z-6aaM+i5}B<1vz5_lWXMP9pa-*OOCx5pq(rm9f-cuTi-Ul@m{6+>Cz9$K`!H@7HfL i5Mnf=8O><_$Mzp7if@h5m;urN0000(?PhnwW;fZ0K{4i0lA?p+qoYOA2Q$&4IF5wS8IYDos35PTt)x#K z#X3% z`=up?Y)i_^D-tkmLN5*i>rouM;=wJj4)%O7aW+?=Xaa;=_sSq;wB=svlyMHh;X02Tc z0Ju*xSIDrXOJ7{ASTct=Vmon!&7gTJA6Y58b9+atL_*t!W>Hu7ReuX1SBeljdj~gr z6Xj)6@3~F%%5fD6ju;6UiaRQ5=7{!+CDqcaFku_wiSokLXdXnJC-Q@+3RH2}bL4Iv{f z@cmu;iMtlg0|30y_7VUf5+Sb`><<6{yuMsQy4z{mfBNDF0RR)+w^}+RErjg+Q@sHI z!ApKpa#!W^lcTOdKkY!SFArvlc6c2^$--_E;|*JiP3y0FF+XvKH;)itC_TgLG7Lk^ zpTqssXlnhQJTCxX-Y=iB5R#q_8KUbEe2c;V+R_r1nmG)G1ogwNA;ZuSV~l_#G3?;F z4Ot!08(Ll_T@DE(dJF(~`Prud06%%OPTb$OiS$7A?;an0pfTJbeX)i0!h$i`zuERT z0KmNq=Zkvevhp$^_A(ywGUJ@4{Z-xNDYrNzBMwn)J=UEz#;9k9@Bi2=+FRQI09key z0N~XY(n*zTNQwHAIRJn?4TQL=WeWiS{q`{RZ`#3L$1BFOI3!bqcn5WcEFM;XZ?!Z6 z0A{ZG`4u6ha`_61N;$?*v4_qX-&-$DK9RP5o^#F0gPv@DAukL$Tk4#(ifb6hx zorRE$yo@Rx&70_*{8^3kHk;Yo{PwZ5qTrFrJB$z|9Fj)d6d8I^-0>#ID1F@*0093z zc^<$}&R21w!$HyVueQ~5EOU$HWinH$Iw@RXNyROSOWxVOjge73>Uf)1|Amm0OacI& zYW_U{VE6M|7!hh-LtNELd`Y+EWimv_NP8*U4da_xkdb0Nn^tcI0K}qkasLl%{wTO2 z5swRV_16q=`{OH~wh)q$m+{BD4YPd48%^YGW54<|onRy+G>(u;+prnB1Q!V3xNo=RWisNBaP$k>x$L4* z2MG52P1_@!TXl2xT}O)AH#Z~WZH{^?mQ;z}4J+tNq5H-C0y&0Gbs7-LCzY5ZhwEKk zXDklMh(p#bn{NO>{gy_2ol82JHger=J^;6;%OwZ5wGc9DszkpH4?j;FVUW&nIi12z zDNsA-XiJMFl24yGJ1VzKDlG;8)UID|aY$Mml1LJ3#}f&`@`fp@ni|sq4>WNU zyrNdL5A!B3FlQ{TVs9apWI|JxvG{5gv!6>u4C5B|E)0P#Mv%oJ=^`W$ zA_V+-9Tc&&sk3q!f(LXFXyQ?dSV0S_sL=%hb)AV*o&I4uNNR1LX})H*OI5 z3T678+I6NwwYTm80Nlf8x;h(vt=Us4tzD}v$UI0o&D^9@!z&+~BQ@7Yxziw@5}0!n zOufyFC-zugCM^z8Pu?FQKfkq}^gz*g$~0XQ?HBq)c_STjGdaiEv6W5*1_Jc#Cq(_C zUr{_EW^Sx)l+J|bxvA8__WhEx;1TtTA5G_V#W`O>BOU+jm}YNS9Fh@2rhd0rY_)pj zySwQ7#+fjE7s>U|&RlAHQ9@(bH(~m9;c_0^JB59J+sk79TPuo9?R!qq{AWY7WUq&E zskcp+2nh$jkh+6w7o$F5@5#xr5Rwr>{`a3AZKuu8djvuhbp}2PY5kxfOglHC*#|!k znIbZkLkt9Y{y}?;$_<95Sk?R%LefRZB|f9&bnrlLDgU?L`l0u-*NAG?a+XsU(3RX&0MZwC; zD1>~;c@Sl9AtYUd+*^4g>4$@zgp@2pqddbMw^7#o=&`e= z@9sTwe?U9kbHP+ExX00%`MW9!F{eH~DRy|q1K$S#l$1{-rRn!`j3Rf^?#z<&591J7 z!r`buWL`eyPcEdevk;OBAzwu<3%{=}OYcGT^TzYce+#HD%R({>R0kM%KlO{@p*knxO9XzK&_C3AwTksU# zIXx;32523gT#B8Hc+%8<@-_Lw>jWGQZ9K9|u%hni^XuWSg^;umqMqD1mqU6RJMVni zWWg2*r_0nUC}h}JNe=Eu*$w7z`cSYVbb`v7Up1bhhv#41*?idDYB@_*Hnfk#_^yXgP`002ovPDHLkV1oX>hBN>G literal 0 HcmV?d00001 diff --git a/website/raw_sprites/spritesmith/backgrounds/icons/icon_background_steamworks.png b/website/raw_sprites/spritesmith/backgrounds/icons/icon_background_steamworks.png new file mode 100644 index 0000000000000000000000000000000000000000..25b49fdb58af809ec1997189d63fcdcedd14609e GIT binary patch literal 2058 zcmV+l2=(`gP)OQo#9BGPCo3aEvt8(>GwOzx%G0lX647{ZT=TPR2m*DND$t5E2d&3Guuv|JEAZ#`k^r zt&t2RmFktvS-kl{QJ?DkwdxJcTXZF@*Cnqw&~r*eT!mcT5;7q|JRXk-VY!HSf+E#9 zQ~BASK3!C_<*TQbc&BpNvYWL@IDtF{;d-Y!Cnt%g{PJ1vznR*hZ?8LrB{)(pc}2L-dHAB(KpwNE*O` z`2c`lm6vhko?bD3UIpSLa=imI-ixp9qhY+Bsy1fry4wK&L(u|Xy8r;uLWyjK&yhw? zJIKeS>4@a+m@_Y0RY(l^&v~hIK2!@Ab zb+XGC&*;)WIAkP7uUGT!{otVRYD!jh+(;UJmuyfnodN(nu;C#hV(u)_J{cVr_1_)& z%i53zBUO1_wWfpP44LO}d~}-3Wk&%3$Gf`4?=z-NGft?JHZXKnkfx8L;u1YRS$!K3 zQsQ!vBhdvK8R=|B+)pY-q%2u9*Amj0ml>8COeHA4kj#+^ngeFrudE`)et6wQ$or_|1uY@92+0(j zx?+AsN>hMOw>>=+SF~MHwV#qPujQfnT$ips$IBVI5C9+&X%=yaic7}46ceSy&qinK zwp~8TgQMP~$Q)WMYLQ~JE@B*Q>noWMua_ER(^=83JZ4);qTU}M z^m4gTNyb>jOeD5OB6ZzxtIuOIW)rg^tm>XKBhqhc?ZW;t$1P@eos#xIofV@NS^j-kK$+NWM-6L(ryoyrz#?70=ug5-m1_1B__rJR13F88%b58Zq zO^*WrP9NF|0QluZobno{DB>+MNgkf?Tn0^&djHBi_orO(Czg=va-PY3`H7X~3%P)F zM&?<Q8re8OJ+z_<$&1e*GOr&Bn875zq7;{Zce*UU(e< zVCnK@#(7jGF2L`8zuEnowILHb%Tze0wsTIiyZ5ZHHQ6kkjz^-Dxk~*=UjTU>vsEva zOUC{w&Ug4Yvo)NEX=fmFKNW!<{qZLNKw*?l#i0PD@^YMQ5BdYf{+5vO5>ji6+UF1{ z$FqYppfVGoNXc`# z7#OXK082=%v&_A>+$ubDz^(6d_*}kVtZ%gczuiyCTL%x=v&{G+)fuzu>X^^xY8WH- z4i)NMHz4P2@CHJ4uCLO()`pCi5WmAFB-m87V}R{_UVDc9tbss~vgI-MK24#}#1@)Q zRnK>n$eU$zl+6#fv`CTyVG;2u@LmNerDHXGfN>$+lZ6UjKo1M*qT<~SZG z7OPI@XD^ZFEV}-VI2a1jc$utjHH>E=)lR(!Qa=PkVM|Cugv2tm)2%@WGS2h=90^w1 z+c0Y&#sB+OC`dAN%U>6!)6%N@ysos){EP;M1& literal 0 HcmV?d00001