diff --git a/test/content/quests.test.js b/test/content/quests.test.js new file mode 100644 index 0000000000..52cf70dbcf --- /dev/null +++ b/test/content/quests.test.js @@ -0,0 +1,42 @@ +import { + each, +} from 'lodash'; +import { + expectValidTranslationString, +} from '../helpers/content.helper'; + +import { quests } from '../../website/common/script/content/quests'; + +describe('quests', () => { + let clock; + + afterEach(() => { + if (clock) { + clock.restore(); + } + }); + + it('contains basic information about each quest', () => { + each(quests, (quest, key) => { + expectValidTranslationString(quest.text); + expectValidTranslationString(quest.notes); + expectValidTranslationString(quest.completion); + expect(quest.key, key).to.equal(key); + expect(quest.category, key).to.be.a('string'); + if (quest.boss) { + expectValidTranslationString(quest.boss.name); + expect(quest.boss.hp, key).to.be.a('number'); + expect(quest.boss.str, key).to.be.a('number'); + } + expect(quest.drop).to.be.an('object'); + expect(quest.drop.gp, key).to.be.a('number'); + expect(quest.drop.exp, key).to.be.a('number'); + if (quest.drop.items) { + quest.drop.items.forEach(drop => { + expectValidTranslationString(drop.text); + expect(drop.type, key).to.exist; + }); + } + }); + }); +}); diff --git a/website/client/src/assets/css/sprites/spritesmith-main.css b/website/client/src/assets/css/sprites/spritesmith-main.css index e1aedd6e83..2590e8e8f6 100644 --- a/website/client/src/assets/css/sprites/spritesmith-main.css +++ b/website/client/src/assets/css/sprites/spritesmith-main.css @@ -2165,6 +2165,11 @@ width: 141px; height: 147px; } +.background_surrounded_by_ghosts { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_surrounded_by_ghosts.png'); + width: 141px; + height: 147px; +} .background_swan_boat { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_swan_boat.png'); width: 141px; @@ -30794,6 +30799,11 @@ width: 90px; height: 90px; } +.shield_armoire_safetyFlashlight { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_safetyFlashlight.png'); + width: 114px; + height: 90px; +} .shield_armoire_sandyBucket { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_sandyBucket.png'); width: 90px; @@ -31934,6 +31944,11 @@ width: 114px; height: 90px; } +.weapon_armoire_spookyCandyBucket { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_armoire_spookyCandyBucket.png'); + width: 114px; + height: 90px; +} .weapon_armoire_vermilionArcherBow { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_armoire_vermilionArcherBow.png'); width: 90px; @@ -35279,6 +35294,16 @@ width: 114px; height: 90px; } +.back_mystery_202410 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/back_mystery_202410.png'); + width: 114px; + height: 90px; +} +.headAccessory_mystery_202410 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_mystery_202410.png'); + width: 114px; + height: 90px; +} .broad_armor_mystery_301404 { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_mystery_301404.png'); width: 90px; @@ -40237,6 +40262,11 @@ width: 219px; height: 219px; } +.quest_dog { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/quest_dog.png'); + width: 219px; + height: 219px; +} .quest_dolphin { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/quest_dolphin.png'); width: 219px; @@ -40967,6 +40997,11 @@ width: 68px; height: 68px; } +.inventory_quest_scroll_dog { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/inventory_quest_scroll_dog.png'); + width: 68px; + height: 68px; +} .inventory_quest_scroll_dolphin { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/inventory_quest_scroll_dolphin.png'); width: 68px; @@ -42807,6 +42842,56 @@ width: 105px; height: 105px; } +.Mount_Body_Dog-Base { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Dog-Base.png'); + width: 105px; + height: 105px; +} +.Mount_Body_Dog-CottonCandyBlue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Dog-CottonCandyBlue.png'); + width: 105px; + height: 105px; +} +.Mount_Body_Dog-CottonCandyPink { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Dog-CottonCandyPink.png'); + width: 105px; + height: 105px; +} +.Mount_Body_Dog-Desert { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Dog-Desert.png'); + width: 105px; + height: 105px; +} +.Mount_Body_Dog-Golden { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Dog-Golden.png'); + width: 105px; + height: 105px; +} +.Mount_Body_Dog-Red { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Dog-Red.png'); + width: 105px; + height: 105px; +} +.Mount_Body_Dog-Shade { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Dog-Shade.png'); + width: 105px; + height: 105px; +} +.Mount_Body_Dog-Skeleton { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Dog-Skeleton.png'); + width: 105px; + height: 105px; +} +.Mount_Body_Dog-White { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Dog-White.png'); + width: 105px; + height: 105px; +} +.Mount_Body_Dog-Zombie { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Dog-Zombie.png'); + width: 105px; + height: 105px; +} .Mount_Body_Dolphin-Base { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Dolphin-Base.png'); width: 105px; @@ -48252,6 +48337,56 @@ width: 105px; height: 105px; } +.Mount_Head_Dog-Base { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Dog-Base.png'); + width: 105px; + height: 105px; +} +.Mount_Head_Dog-CottonCandyBlue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Dog-CottonCandyBlue.png'); + width: 105px; + height: 105px; +} +.Mount_Head_Dog-CottonCandyPink { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Dog-CottonCandyPink.png'); + width: 105px; + height: 105px; +} +.Mount_Head_Dog-Desert { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Dog-Desert.png'); + width: 105px; + height: 105px; +} +.Mount_Head_Dog-Golden { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Dog-Golden.png'); + width: 105px; + height: 105px; +} +.Mount_Head_Dog-Red { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Dog-Red.png'); + width: 105px; + height: 105px; +} +.Mount_Head_Dog-Shade { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Dog-Shade.png'); + width: 105px; + height: 105px; +} +.Mount_Head_Dog-Skeleton { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Dog-Skeleton.png'); + width: 105px; + height: 105px; +} +.Mount_Head_Dog-White { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Dog-White.png'); + width: 105px; + height: 105px; +} +.Mount_Head_Dog-Zombie { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Dog-Zombie.png'); + width: 105px; + height: 105px; +} .Mount_Head_Dolphin-Base { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Dolphin-Base.png'); width: 105px; @@ -53757,6 +53892,56 @@ width: 81px; height: 99px; } +.Pet-Dog-Base { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dog-Base.png'); + width: 81px; + height: 99px; +} +.Pet-Dog-CottonCandyBlue { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dog-CottonCandyBlue.png'); + width: 81px; + height: 99px; +} +.Pet-Dog-CottonCandyPink { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dog-CottonCandyPink.png'); + width: 81px; + height: 99px; +} +.Pet-Dog-Desert { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dog-Desert.png'); + width: 81px; + height: 99px; +} +.Pet-Dog-Golden { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dog-Golden.png'); + width: 81px; + height: 99px; +} +.Pet-Dog-Red { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dog-Red.png'); + width: 81px; + height: 99px; +} +.Pet-Dog-Shade { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dog-Shade.png'); + width: 81px; + height: 99px; +} +.Pet-Dog-Skeleton { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dog-Skeleton.png'); + width: 81px; + height: 99px; +} +.Pet-Dog-White { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dog-White.png'); + width: 81px; + height: 99px; +} +.Pet-Dog-Zombie { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dog-Zombie.png'); + width: 81px; + height: 99px; +} .Pet-Dolphin-Base { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dolphin-Base.png'); width: 81px; diff --git a/website/client/src/components/achievements/questCompleted.vue b/website/client/src/components/achievements/questCompleted.vue index bd220049f0..544cc09737 100644 --- a/website/client/src/components/achievements/questCompleted.vue +++ b/website/client/src/components/achievements/questCompleted.vue @@ -10,10 +10,10 @@ @hide="hide" >
@@ -93,8 +94,12 @@ import * as quests from '@/../../common/script/content/quests'; import percent from '@/../../common/script/libs/percent'; import { MAX_HEALTH as maxHealth } from '@/../../common/script/constants'; import { mapState } from '@/libs/store'; +import Sprite from '@/components/ui/sprite'; export default { + components: [ + Sprite, + ], data () { return { maxHealth, diff --git a/website/client/src/components/groups/questSidebarSection.vue b/website/client/src/components/groups/questSidebarSection.vue index e7407afc28..44c5b0e1ec 100644 --- a/website/client/src/components/groups/questSidebarSection.vue +++ b/website/client/src/components/groups/questSidebarSection.vue @@ -51,10 +51,10 @@ :class="{'not-participating': !userIsOnQuest}" >