Lost Masterclasser Quest Line (#9183)

* fix(sprites): serve animated GIFs
Also add new GIF for upcoming quest line

* feat(content): Masterclasser capstone quest
Also fixes Quests page for clearer lock/unlock display

* chore(sprites): compile

* feat(achievements): award quest completionist cheevo

* feat(quests): Siphoning Void
fix Achievements page styling and text spacing
fix display of Rage bar on party page

* test(quests): Lost Masterclasser

* chore(news): Bailey

* fix(test): only use Masterclasser in relevant scenario
This commit is contained in:
Sabe Jones
2017-10-13 20:32:55 -05:00
committed by GitHub
parent fac1889776
commit 6d0496fbd0
94 changed files with 9872 additions and 9326 deletions

View File

@@ -117,6 +117,11 @@ let basicAchievs = {
titleKey: 'invitedFriend',
textKey: 'invitedFriendText',
},
lostMasterclasser: {
icon: 'achievement-lostMasterclasser',
titleKey: 'achievementLostMasterclasser',
textKey: 'achievementLostMasterclasserText',
},
};
Object.assign(achievementsData, basicAchievs);

View File

@@ -788,6 +788,13 @@ let back = {
notes: t('backSpecialSnowdriftVeilNotes'),
value: 0,
},
aetherCloak: {
text: t('backSpecialAetherCloakText'),
notes: t('backSpecialAetherCloakNotes', { per: 10 }),
value: 175,
per: 10,
canOwn: ownsItem('back_special_aetherCloak'),
},
};
let body = {
@@ -861,6 +868,14 @@ let body = {
return CURRENT_SEASON === 'summer';
},
},
aetherAmulet: {
text: t('bodySpecialAetherAmuletText'),
notes: t('bodySpecialAetherAmuletNotes', { attrs: 10 }),
value: 175,
str: 10,
con: 10,
canOwn: ownsItem('body_special_aetherAmulet'),
},
};
let eyewear = {
@@ -937,6 +952,13 @@ let eyewear = {
value: 0,
canOwn: ownsItem('eyewear_special_yellowTopFrame'),
},
aetherMask: {
text: t('eyewearSpecialAetherMaskText'),
notes: t('eyewearSpecialAetherMaskNotes', { int: 10 }),
value: 175,
int: 10,
canOwn: ownsItem('eyewear_special_aetherMask'),
},
};
let head = {
@@ -2566,6 +2588,17 @@ let weapon = {
value: 0,
canOwn: ownsItem('weapon_special_tachi'),
},
aetherCrystals: {
text: t('weaponSpecialAetherCrystalsText'),
notes: t('weaponSpecialAetherCrystalsNotes', { attrs: 10 }),
con: 10,
int: 10,
per: 10,
str: 10,
value: 175,
twoHanded: true,
canOwn: ownsItem('weapon_special_aetherCrystals'),
},
yeti: {
event: EVENTS.winter,
specialClass: 'warrior',

View File

@@ -2781,6 +2781,228 @@ let quests = {
unlock: t('questHippoUnlockText'),
},
},
lostMasterclasser1: {
text: t('questLostMasterclasser1Text'),
notes: t('questLostMasterclasser1Notes'),
group: 'questGroupLostMasterclasser',
completion: t('questLostMasterclasser1Completion'),
value: 4,
goldValue: 400,
category: 'gold',
collect: {
ancientTome: {
text: t('questLostMasterclasser1CollectAncientTomes'),
count: 40,
},
forbiddenTome: {
text: t('questLostMasterclasser1CollectForbiddenTomes'),
count: 40,
},
hiddenTome: {
text: t('questLostMasterclasser1CollectHiddenTomes'),
count: 40,
},
},
drop: {
items: [
{
type: 'food',
key: 'Potatoe',
text: t('foodPotatoe'),
}, {
type: 'food',
key: 'Potatoe',
text: t('foodPotatoe'),
}, {
type: 'food',
key: 'Potatoe',
text: t('foodPotatoe'),
}, {
type: 'food',
key: 'Meat',
text: t('foodMeat'),
}, {
type: 'food',
key: 'Meat',
text: t('foodMeat'),
}, {
type: 'food',
key: 'Meat',
text: t('foodMeat'),
}, {
type: 'food',
key: 'Milk',
text: t('foodMilk'),
}, {
type: 'food',
key: 'Milk',
text: t('foodMilk'),
}, {
type: 'food',
key: 'Milk',
text: t('foodMilk'),
},
],
gp: 0,
exp: 200,
},
},
lostMasterclasser2: {
text: t('questLostMasterclasser2Text'),
notes: t('questLostMasterclasser2Notes'),
group: 'questGroupLostMasterclasser',
previous: 'lostMasterclasser1',
completion: t('questLostMasterclasser2Completion'),
value: 4,
goldValue: 500,
category: 'gold',
boss: {
name: t('questLostMasterclasser2Boss'),
hp: 1500,
str: 2.5,
},
drop: {
items: [
{
type: 'food',
key: 'Chocolate',
text: t('foodChocolate'),
}, {
type: 'food',
key: 'Chocolate',
text: t('foodChocolate'),
}, {
type: 'food',
key: 'Chocolate',
text: t('foodChocolate'),
}, {
type: 'food',
key: 'Honey',
text: t('foodHoney'),
}, {
type: 'food',
key: 'Honey',
text: t('foodHoney'),
}, {
type: 'food',
key: 'Honey',
text: t('foodHoney'),
}, {
type: 'food',
key: 'RottenMeat',
text: t('foodRottenMeat'),
}, {
type: 'food',
key: 'RottenMeat',
text: t('foodRottenMeat'),
}, {
type: 'food',
key: 'RottenMeat',
text: t('foodRottenMeat'),
}, {
type: 'gear',
key: 'eyewear_special_aetherMask',
text: t('questLostMasterclasser2DropEyewear'),
},
],
gp: 0,
exp: 1500,
},
},
lostMasterclasser3: {
text: t('questLostMasterclasser3Text'),
notes: t('questLostMasterclasser3Notes'),
group: 'questGroupLostMasterclasser',
completion: t('questLostMasterclasser3Completion'),
previous: 'lostMasterclasser2',
value: 4,
goldValue: 600,
category: 'gold',
boss: {
name: t('questLostMasterclasser3Boss'),
hp: 2000,
str: 3,
rage: {
title: t('questLostMasterclasser3RageTitle'),
description: t('questLostMasterclasser3RageDescription'),
value: 25,
healing: 0.3,
effect: t('questLostMasterclasser3RageEffect'),
},
},
drop: {
items: [
{
type: 'hatchingPotions',
key: 'Base',
text: t('questLostMasterclasser3DropBasePotion'),
}, {
type: 'hatchingPotions',
key: 'CottonCandyPink',
text: t('questLostMasterclasser3DropPinkPotion'),
}, {
type: 'hatchingPotions',
key: 'Golden',
text: t('questLostMasterclasser3DropGoldenPotion'),
}, {
type: 'hatchingPotions',
key: 'Shade',
text: t('questLostMasterclasser3DropShadePotion'),
}, {
type: 'hatchingPotions',
key: 'Zombie',
text: t('questLostMasterclasser3DropZombiePotion'),
}, {
type: 'gear',
key: 'body_special_aetherAmulet',
text: t('questLostMasterclasser3DropBodyAccessory'),
},
],
gp: 0,
exp: 2000,
},
},
lostMasterclasser4: {
text: t('questLostMasterclasser4Text'),
notes: t('questLostMasterclasser4Notes'),
group: 'questGroupLostMasterclasser',
completion: t('questLostMasterclasser4Completion'),
previous: 'lostMasterclasser3',
value: 4,
goldValue: 700,
category: 'gold',
boss: {
name: t('questLostMasterclasser4Boss'),
hp: 3000,
str: 4,
rage: {
title: t('questLostMasterclasser4RageTitle'),
description: t('questLostMasterclasser4RageDescription'),
value: 15,
mpDrain: true,
effect: t('questLostMasterclasser4RageEffect'),
},
},
drop: {
items: [
{
type: 'mounts',
key: 'Aether-Invisible',
text: t('questLostMasterclasser4DropMount'),
}, {
type: 'gear',
key: 'back_special_aetherCloak',
text: t('questLostMasterclasser4DropBackAccessory'),
}, {
type: 'gear',
key: 'weapon_special_aetherCrystals',
text: t('questLostMasterclasser4DropWeapon'),
},
],
gp: 0,
exp: 3500,
},
},
};
each(quests, (v, key) => {

View File

@@ -85,6 +85,7 @@ let specialMounts = {
'MagicalBee-Base': 'magicalBee',
'Turkey-Gilded': 'gildedTurkey',
'Jackalope-RoyalPurple': 'royalPurpleJackalope',
'Aether-Invisible': 'invisibleAether',
};
each(specialPets, (translationString, key) => {