Begin Fall Festival 2016 (#8043)

* feat(event): begin Fall Festival 2016

* feat(event): Seasonal Shop Fall 2016

* fix(test): season specific food

* chore(news): add Bailey

* fix(season): correct Sorceress & timetrav
This commit is contained in:
Sabe Jones
2016-09-20 20:11:32 -05:00
committed by GitHub
parent 67febde1cb
commit 676d9aedf1
75 changed files with 6212 additions and 5700 deletions

View File

@@ -11,6 +11,7 @@ import {
} from '../../helpers/common.helper';
describe('shared.ops.purchase', () => {
const SEASONAL_FOOD = 'Candy_Base';
let user;
let goldPoints = 40;
let gemsBought = 40;
@@ -166,7 +167,7 @@ describe('shared.ops.purchase', () => {
it('purchases food', () => {
let type = 'food';
let key = 'Meat';
let key = SEASONAL_FOOD;
purchase(user, {params: {type, key}});

View File

@@ -1,9 +1,9 @@
/* Comment out for holiday events */
.npc_ian {
/* .npc_ian {
background: url("/website/assets/sprites/npc_ian.gif") no-repeat;
width: 78px;
height: 135px;
}
} */
.quest_burnout {
background: url("/website/assets/sprites/quest_burnout.gif") no-repeat;

View File

@@ -1,6 +1,6 @@
.2014_Fall_HealerPROMO2 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -1183px -1529px;
background-position: -1114px -1306px;
width: 90px;
height: 90px;
}
@@ -12,13 +12,13 @@
}
.2014_Fall_RoguePROMO3 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -869px -1378px;
background-position: -359px -1306px;
width: 105px;
height: 90px;
}
.2014_Fall_Warrior_PROMO {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -1533px -1378px;
background-position: -1428px -1409px;
width: 90px;
height: 90px;
}
@@ -30,25 +30,25 @@
}
.promo_backgrounds_armoire_201602 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -1135px -199px;
background-position: -1277px -199px;
width: 141px;
height: 294px;
}
.promo_backgrounds_armoire_201603 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -1277px -199px;
background-position: -1135px -199px;
width: 141px;
height: 294px;
}
.promo_backgrounds_armoire_201604 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -452px 0px;
background-position: -281px -525px;
width: 140px;
height: 441px;
}
.promo_backgrounds_armoire_201605 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -452px -442px;
background-position: -452px 0px;
width: 140px;
height: 441px;
}
@@ -78,7 +78,7 @@
}
.promo_backtoschool {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -302px -1378px;
background-position: -944px -573px;
width: 150px;
height: 150px;
}
@@ -96,7 +96,7 @@
}
.promo_classes_fall_2014 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -734px -684px;
background-position: 0px -1114px;
width: 321px;
height: 100px;
}
@@ -106,6 +106,12 @@
width: 377px;
height: 99px;
}
.promo_classes_fall_2016 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -734px -573px;
width: 103px;
height: 348px;
}
.promo_contrib_spotlight_beffymaroo {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -306px -220px;
@@ -114,13 +120,13 @@
}
.promo_cow {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -281px -525px;
background-position: -452px -442px;
width: 140px;
height: 441px;
}
.promo_dilatoryDistress {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -637px -1529px;
background-position: -1155px -1409px;
width: 90px;
height: 90px;
}
@@ -132,25 +138,25 @@
}
.promo_enchanted_armoire {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: 0px -1114px;
background-position: -734px -1033px;
width: 374px;
height: 76px;
}
.promo_enchanted_armoire_201507 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -840px -967px;
background-position: -578px -1215px;
width: 217px;
height: 90px;
}
.promo_enchanted_armoire_201508 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -468px -1275px;
background-position: -944px -724px;
width: 180px;
height: 90px;
}
.promo_enchanted_armoire_201509 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -819px -1529px;
background-position: -1337px -1409px;
width: 90px;
height: 90px;
}
@@ -162,13 +168,13 @@
}
.promo_enchanted_armoire_201601 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -1001px -1529px;
background-position: -841px -1306px;
width: 90px;
height: 90px;
}
.promo_floral_potions {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -734px -785px;
background-position: -838px -573px;
width: 105px;
height: 273px;
}
@@ -186,25 +192,25 @@
}
.promo_haunted_hair {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -553px -1378px;
background-position: -402px -1409px;
width: 100px;
height: 137px;
}
.promo_item_notif {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: 0px -1275px;
background-position: 0px -1306px;
width: 249px;
height: 102px;
}
.promo_mystery_201405 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -1092px -1529px;
background-position: -1387px -1306px;
width: 90px;
height: 90px;
}
.promo_mystery_201406 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -182px -1529px;
background-position: -791px -1409px;
width: 90px;
height: 96px;
}
@@ -222,19 +228,19 @@
}
.promo_mystery_201409 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -1274px -1529px;
background-position: -1519px -1409px;
width: 90px;
height: 90px;
}
.promo_mystery_201410 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -1060px -573px;
background-position: -838px -847px;
width: 72px;
height: 63px;
}
.promo_mystery_201411 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -1365px -1529px;
background-position: -1023px -1306px;
width: 90px;
height: 90px;
}
@@ -252,13 +258,13 @@
}
.promo_mystery_201502 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -1456px -1529px;
background-position: -882px -1409px;
width: 90px;
height: 90px;
}
.promo_mystery_201503 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -910px -1529px;
background-position: -1064px -1409px;
width: 90px;
height: 90px;
}
@@ -270,7 +276,7 @@
}
.promo_mystery_201505 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -728px -1529px;
background-position: -1246px -1409px;
width: 90px;
height: 90px;
}
@@ -282,31 +288,31 @@
}
.promo_mystery_201507 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: 0px -1529px;
background-position: -609px -1409px;
width: 90px;
height: 105px;
}
.promo_mystery_201508 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -1257px -1378px;
background-position: -653px -1306px;
width: 93px;
height: 90px;
}
.promo_mystery_201509 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -455px -1529px;
background-position: 0px -1560px;
width: 90px;
height: 90px;
}
.promo_mystery_201510 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -1163px -1378px;
background-position: -747px -1306px;
width: 93px;
height: 90px;
}
.promo_mystery_201511 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -273px -1529px;
background-position: -932px -1306px;
width: 90px;
height: 90px;
}
@@ -324,55 +330,55 @@
}
.promo_mystery_201602 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -1442px -1378px;
background-position: -1205px -1306px;
width: 90px;
height: 90px;
}
.promo_mystery_201603 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -1351px -1378px;
background-position: -1296px -1306px;
width: 90px;
height: 90px;
}
.promo_mystery_201604 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -1069px -1378px;
background-position: -465px -1306px;
width: 93px;
height: 90px;
}
.promo_mystery_201605 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -546px -1529px;
background-position: -1478px -1306px;
width: 90px;
height: 90px;
}
.promo_mystery_201606 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -91px -1529px;
background-position: -700px -1409px;
width: 90px;
height: 105px;
}
.promo_mystery_201607 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -364px -1529px;
background-position: -973px -1409px;
width: 90px;
height: 90px;
}
.promo_mystery_201608 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -975px -1378px;
background-position: -559px -1306px;
width: 93px;
height: 90px;
}
.promo_mystery_3014 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -250px -1275px;
background-position: -796px -1215px;
width: 217px;
height: 90px;
}
.promo_orca {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -654px -1378px;
background-position: -503px -1409px;
width: 105px;
height: 105px;
}
@@ -384,37 +390,37 @@
}
.promo_pastel_skin {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -331px -1191px;
background-position: -653px -1114px;
width: 330px;
height: 83px;
}
.customize-option.promo_pastel_skin {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -356px -1206px;
background-position: -678px -1129px;
width: 60px;
height: 60px;
}
.promo_peppermint_flame {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -593px -879px;
background-position: -452px -884px;
width: 140px;
height: 147px;
}
.promo_pet_skins {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -452px -884px;
background-position: -593px -879px;
width: 140px;
height: 147px;
}
.customize-option.promo_pet_skins {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -477px -899px;
background-position: -618px -894px;
width: 60px;
height: 60px;
}
.promo_shimmer_hair {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: 0px -1191px;
background-position: -322px -1114px;
width: 330px;
height: 83px;
}
@@ -438,13 +444,13 @@
}
.promo_springclasses2014 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -840px -785px;
background-position: -289px -1215px;
width: 288px;
height: 90px;
}
.promo_springclasses2015 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -840px -876px;
background-position: 0px -1215px;
width: 288px;
height: 90px;
}
@@ -462,7 +468,7 @@
}
.promo_staff_spotlight_paglias {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -453px -1378px;
background-position: -302px -1409px;
width: 99px;
height: 147px;
}
@@ -486,19 +492,19 @@
}
.promo_takeThis_gear {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -649px -1275px;
background-position: -1014px -1215px;
width: 114px;
height: 87px;
}
.promo_takethis_armor {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -764px -1275px;
background-position: -1129px -1215px;
width: 114px;
height: 87px;
}
.promo_unconventional_armor {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -1056px -684px;
background-position: -911px -847px;
width: 60px;
height: 60px;
}
@@ -510,7 +516,7 @@
}
.promo_veteran_pets {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -528px -1114px;
background-position: -1137px -1114px;
width: 146px;
height: 75px;
}
@@ -522,13 +528,13 @@
}
.promo_winterclasses2015 {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -734px -573px;
background-position: -734px -922px;
width: 325px;
height: 110px;
}
.promo_winteryhair {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -375px -1114px;
background-position: -984px -1114px;
width: 152px;
height: 75px;
}
@@ -540,7 +546,7 @@
}
.npc_viirus {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -760px -1378px;
background-position: -250px -1306px;
width: 108px;
height: 90px;
}
@@ -552,19 +558,19 @@
}
.scene_coding {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -151px -1378px;
background-position: -151px -1409px;
width: 150px;
height: 150px;
}
.scene_phone_peek {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: 0px -1378px;
background-position: 0px -1409px;
width: 150px;
height: 150px;
}
.welcome_basic_avatars {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -1135px -642px;
background-position: -1382px -642px;
width: 246px;
height: 165px;
}
@@ -576,7 +582,7 @@
}
.welcome_sample_tasks {
background-image: url(/assets/sprites/spritesmith-largeSprites-0.png);
background-position: -1382px -642px;
background-position: -1135px -642px;
width: 246px;
height: 165px;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 539 KiB

After

Width:  |  Height:  |  Size: 489 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 144 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 149 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 174 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 151 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 136 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 134 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 404 KiB

After

Width:  |  Height:  |  Size: 387 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

After

Width:  |  Height:  |  Size: 176 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 143 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 KiB

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

@@ -10,12 +10,12 @@ module.exports = prefill({
pastelHairColors: {setPrice: 5, availableUntil: '2016-01-01'},
rainbowHairColors: {setPrice: 5, text: t('rainbowColors')},
shimmerHairColors: {setPrice: 5, availableUntil: '2016-05-02', text: t('shimmerColors')},
hauntedHairColors: {setPrice: 5, availableUntil: '2016-01-01', text: t('hauntedColors')},
hauntedHairColors: {setPrice: 5, availableUntil: '2016-11-01', text: t('hauntedColors')},
winteryHairColors: {setPrice: 5, availableFrom: '2015-12-18', availableUntil: '2016-02-02', text: t('winteryColors')},
rainbowSkins: {setPrice: 5, text: t('rainbowSkins')},
animalSkins: {setPrice: 5, text: t('animalSkins')},
pastelSkins: {setPrice: 5, availableUntil: '2016-05-02', text: t('pastelSkins')},
spookySkins: {setPrice: 5, availableUntil: '2016-01-01', text: t('spookySkins')},
supernaturalSkins: {setPrice: 5, availableUntil: '2016-01-01', text: t('supernaturalSkins')},
supernaturalSkins: {setPrice: 5, availableUntil: '2016-11-01', text: t('supernaturalSkins')},
splashySkins: {setPrice: 5, availableUntil: '2016-01-01', text: t('splashySkins')},
});

View File

@@ -25,6 +25,7 @@ export const EVENTS = {
winter2016: { start: '2015-12-18', end: '2016-02-02' },
spring2016: { start: '2016-03-18', end: '2016-05-02' },
summer2016: { start: '2016-06-21', end: '2016-08-02' },
fall2016: { start: '2016-09-20', end: '2016-11-02' },
};
export const GEAR_TYPES = [

View File

@@ -128,6 +128,9 @@ let armor = {
notes: t('armorSpecialFallRogueNotes', { per: 15 }),
value: 90,
per: 15,
canBuy: () => {
return true;
},
},
fallWarrior: {
event: EVENTS.fall,
@@ -136,6 +139,9 @@ let armor = {
notes: t('armorSpecialFallWarriorNotes', { con: 9 }),
value: 90,
con: 9,
canBuy: () => {
return true;
},
},
fallMage: {
event: EVENTS.fall,
@@ -144,6 +150,9 @@ let armor = {
notes: t('armorSpecialFallMageNotes', { int: 9 }),
value: 90,
int: 9,
canBuy: () => {
return true;
},
},
fallHealer: {
event: EVENTS.fall,
@@ -152,6 +161,9 @@ let armor = {
notes: t('armorSpecialFallHealerNotes', { con: 15 }),
value: 90,
con: 15,
canBuy: () => {
return true;
},
},
winter2015Rogue: {
event: EVENTS.winter2015,
@@ -262,6 +274,9 @@ let armor = {
notes: t('armorSpecialFall2015RogueNotes', { per: 15 }),
value: 90,
per: 15,
canBuy: () => {
return true;
},
},
fall2015Warrior: {
event: EVENTS.fall2015,
@@ -270,6 +285,9 @@ let armor = {
notes: t('armorSpecialFall2015WarriorNotes', { con: 9 }),
value: 90,
con: 9,
canBuy: () => {
return true;
},
},
fall2015Mage: {
event: EVENTS.fall2015,
@@ -278,6 +296,9 @@ let armor = {
notes: t('armorSpecialFall2015MageNotes', { int: 9 }),
value: 90,
int: 9,
canBuy: () => {
return true;
},
},
fall2015Healer: {
event: EVENTS.fall2015,
@@ -286,6 +307,9 @@ let armor = {
notes: t('armorSpecialFall2015HealerNotes', { con: 15 }),
value: 90,
con: 15,
canBuy: () => {
return true;
},
},
gaymerx: {
event: EVENTS.gaymerx,
@@ -395,6 +419,38 @@ let armor = {
value: 90,
con: 15,
},
fall2016Rogue: {
event: EVENTS.fall2016,
specialClass: 'rogue',
text: t('armorSpecialFall2016RogueText'),
notes: t('armorSpecialFall2016RogueNotes', { per: 15 }),
value: 90,
per: 15,
},
fall2016Warrior: {
event: EVENTS.fall2016,
specialClass: 'warrior',
text: t('armorSpecialFall2016WarriorText'),
notes: t('armorSpecialFall2016WarriorNotes', { con: 9 }),
value: 90,
con: 9,
},
fall2016Mage: {
event: EVENTS.fall2016,
specialClass: 'wizard',
text: t('armorSpecialFall2016MageText'),
notes: t('armorSpecialFall2016MageNotes', { int: 9 }),
value: 90,
int: 9,
},
fall2016Healer: {
event: EVENTS.fall2016,
specialClass: 'healer',
text: t('armorSpecialFall2016HealerText'),
notes: t('armorSpecialFall2016HealerNotes', { con: 15 }),
value: 90,
con: 15,
},
};
let back = {
@@ -641,6 +697,9 @@ let head = {
notes: t('headSpecialFallRogueNotes', { per: 9 }),
value: 60,
per: 9,
canBuy: () => {
return true;
},
},
fallWarrior: {
event: EVENTS.fall,
@@ -649,6 +708,9 @@ let head = {
notes: t('headSpecialFallWarriorNotes', { str: 9 }),
value: 60,
str: 9,
canBuy: () => {
return true;
},
},
fallMage: {
event: EVENTS.fall,
@@ -657,6 +719,9 @@ let head = {
notes: t('headSpecialFallMageNotes', { per: 7 }),
value: 60,
per: 7,
canBuy: () => {
return true;
},
},
fallHealer: {
event: EVENTS.fall,
@@ -665,6 +730,9 @@ let head = {
notes: t('headSpecialFallHealerNotes', { int: 7 }),
value: 60,
int: 7,
canBuy: () => {
return true;
},
},
winter2015Rogue: {
event: EVENTS.winter2015,
@@ -775,6 +843,9 @@ let head = {
notes: t('headSpecialFall2015RogueNotes', { per: 9 }),
value: 60,
per: 9,
canBuy: () => {
return true;
},
},
fall2015Warrior: {
event: EVENTS.fall2015,
@@ -783,6 +854,9 @@ let head = {
notes: t('headSpecialFall2015WarriorNotes', { str: 9 }),
value: 60,
str: 9,
canBuy: () => {
return true;
},
},
fall2015Mage: {
event: EVENTS.fall2015,
@@ -791,6 +865,9 @@ let head = {
notes: t('headSpecialFall2015MageNotes', { per: 7 }),
value: 60,
per: 7,
canBuy: () => {
return true;
},
},
fall2015Healer: {
event: EVENTS.fall2015,
@@ -799,6 +876,9 @@ let head = {
notes: t('headSpecialFall2015HealerNotes', { int: 7 }),
value: 60,
int: 7,
canBuy: () => {
return true;
},
},
gaymerx: {
event: EVENTS.gaymerx,
@@ -908,6 +988,38 @@ let head = {
value: 60,
int: 7,
},
fall2016Rogue: {
event: EVENTS.fall2016,
specialClass: 'rogue',
text: t('headSpecialFall2016RogueText'),
notes: t('headSpecialFall2016RogueNotes', { per: 9 }),
value: 60,
per: 9,
},
fall2016Warrior: {
event: EVENTS.fall2016,
specialClass: 'warrior',
text: t('headSpecialFall2016WarriorText'),
notes: t('headSpecialFall2016WarriorNotes', { str: 9 }),
value: 60,
str: 9,
},
fall2016Mage: {
event: EVENTS.fall2016,
specialClass: 'wizard',
text: t('headSpecialFall2016MageText'),
notes: t('headSpecialFall2016MageNotes', { per: 7 }),
value: 60,
per: 7,
},
fall2016Healer: {
event: EVENTS.fall2016,
specialClass: 'healer',
text: t('headSpecialFall2016HealerText'),
notes: t('headSpecialFall2016HealerNotes', { int: 7 }),
value: 60,
int: 7,
},
};
let headAccessory = {
@@ -1175,6 +1287,9 @@ let shield = {
notes: t('shieldSpecialFallRogueNotes', { str: 8 }),
value: 80,
str: 8,
canBuy: () => {
return true;
},
},
fallWarrior: {
event: EVENTS.fall,
@@ -1183,6 +1298,9 @@ let shield = {
notes: t('shieldSpecialFallWarriorNotes', { con: 7 }),
value: 70,
con: 7,
canBuy: () => {
return true;
},
},
fallHealer: {
event: EVENTS.fall,
@@ -1191,6 +1309,9 @@ let shield = {
notes: t('shieldSpecialFallHealerNotes', { con: 9 }),
value: 70,
con: 9,
canBuy: () => {
return true;
},
},
winter2015Rogue: {
event: EVENTS.winter2015,
@@ -1271,6 +1392,9 @@ let shield = {
notes: t('shieldSpecialFall2015RogueNotes', { str: 8 }),
value: 80,
str: 8,
canBuy: () => {
return true;
},
},
fall2015Warrior: {
event: EVENTS.fall2015,
@@ -1279,6 +1403,9 @@ let shield = {
notes: t('shieldSpecialFall2015WarriorNotes', { con: 7 }),
value: 70,
con: 7,
canBuy: () => {
return true;
},
},
fall2015Healer: {
event: EVENTS.fall2015,
@@ -1287,6 +1414,9 @@ let shield = {
notes: t('shieldSpecialFall2015HealerNotes', { con: 9 }),
value: 70,
con: 9,
canBuy: () => {
return true;
},
},
winter2016Rogue: {
event: EVENTS.winter2016,
@@ -1360,6 +1490,30 @@ let shield = {
value: 70,
con: 9,
},
fall2016Rogue: {
event: EVENTS.fall2016,
specialClass: 'rogue',
text: t('shieldSpecialFall2016RogueText'),
notes: t('shieldSpecialFall2016RogueNotes', { str: 8 }),
value: 80,
str: 8,
},
fall2016Warrior: {
event: EVENTS.fall2016,
specialClass: 'warrior',
text: t('shieldSpecialFall2016WarriorText'),
notes: t('shieldSpecialFall2016WarriorNotes', { con: 7 }),
value: 70,
con: 7,
},
fall2016Healer: {
event: EVENTS.fall2016,
specialClass: 'healer',
text: t('shieldSpecialFall2016HealerText'),
notes: t('shieldSpecialFall2016HealerNotes', { con: 9 }),
value: 70,
con: 9,
},
};
let weapon = {
@@ -1485,6 +1639,9 @@ let weapon = {
notes: t('weaponSpecialFallRogueNotes', { str: 8 }),
value: 80,
str: 8,
canBuy: () => {
return true;
},
},
fallWarrior: {
event: EVENTS.fall,
@@ -1493,6 +1650,9 @@ let weapon = {
notes: t('weaponSpecialFallWarriorNotes', { str: 15 }),
value: 90,
str: 15,
canBuy: () => {
return true;
},
},
fallMage: {
event: EVENTS.fall,
@@ -1503,6 +1663,9 @@ let weapon = {
value: 160,
int: 15,
per: 7,
canBuy: () => {
return true;
},
},
fallHealer: {
event: EVENTS.fall,
@@ -1511,6 +1674,9 @@ let weapon = {
notes: t('weaponSpecialFallHealerNotes', { int: 9 }),
value: 90,
int: 9,
canBuy: () => {
return true;
},
},
winter2015Rogue: {
event: EVENTS.winter2015,
@@ -1621,6 +1787,9 @@ let weapon = {
notes: t('weaponSpecialFall2015RogueNotes', { str: 8 }),
value: 80,
str: 8,
canBuy: () => {
return true;
},
},
fall2015Warrior: {
event: EVENTS.fall2015,
@@ -1629,6 +1798,9 @@ let weapon = {
notes: t('weaponSpecialFall2015WarriorNotes', { str: 15 }),
value: 90,
str: 15,
canBuy: () => {
return true;
},
},
fall2015Mage: {
event: EVENTS.fall2015,
@@ -1639,6 +1811,9 @@ let weapon = {
value: 160,
int: 15,
per: 7,
canBuy: () => {
return true;
},
},
fall2015Healer: {
event: EVENTS.fall2015,
@@ -1647,6 +1822,9 @@ let weapon = {
notes: t('weaponSpecialFall2015HealerNotes', { int: 9 }),
value: 90,
int: 9,
canBuy: () => {
return true;
},
},
winter2016Rogue: {
event: EVENTS.winter2016,
@@ -1750,6 +1928,40 @@ let weapon = {
value: 90,
int: 9,
},
fall2016Rogue: {
event: EVENTS.fall2016,
specialClass: 'rogue',
text: t('weaponSpecialFall2016RogueText'),
notes: t('weaponSpecialFall2016RogueNotes', { str: 8 }),
value: 80,
str: 8,
},
fall2016Warrior: {
event: EVENTS.fall2016,
specialClass: 'warrior',
text: t('weaponSpecialFall2016WarriorText'),
notes: t('weaponSpecialFall2016WarriorNotes', { str: 15 }),
value: 90,
str: 15,
},
fall2016Mage: {
event: EVENTS.fall2016,
specialClass: 'wizard',
twoHanded: true,
text: t('weaponSpecialFall2016MageText'),
notes: t('weaponSpecialFall2016MageNotes', { int: 15, per: 7 }),
value: 160,
int: 15,
per: 7,
},
fall2016Healer: {
event: EVENTS.fall2016,
specialClass: 'healer',
text: t('weaponSpecialFall2016HealerText'),
notes: t('weaponSpecialFall2016HealerNotes', { int: 9 }),
value: 90,
int: 9,
},
};
let specialSet = {

View File

@@ -169,90 +169,90 @@ api.food = {
target: 'Base',
article: '',
canBuy: (function() {
return true;
return false;
}),
canDrop: true,
canDrop: false,
},
Milk: {
text: t('foodMilk'),
target: 'White',
article: '',
canBuy: (function() {
return true;
return false;
}),
canDrop: true,
canDrop: false,
},
Potatoe: {
text: t('foodPotatoe'),
target: 'Desert',
article: 'a ',
canBuy: (function() {
return true;
return false;
}),
canDrop: true,
canDrop: false,
},
Strawberry: {
text: t('foodStrawberry'),
target: 'Red',
article: 'a ',
canBuy: (function() {
return true;
return false;
}),
canDrop: true,
canDrop: false,
},
Chocolate: {
text: t('foodChocolate'),
target: 'Shade',
article: '',
canBuy: (function() {
return true;
return false;
}),
canDrop: true,
canDrop: false,
},
Fish: {
text: t('foodFish'),
target: 'Skeleton',
article: 'a ',
canBuy: (function() {
return true;
return false;
}),
canDrop: true,
canDrop: false,
},
RottenMeat: {
text: t('foodRottenMeat'),
target: 'Zombie',
article: '',
canBuy: (function() {
return true;
return false;
}),
canDrop: true,
canDrop: false,
},
CottonCandyPink: {
text: t('foodCottonCandyPink'),
target: 'CottonCandyPink',
article: '',
canBuy: (function() {
return true;
return false;
}),
canDrop: true,
canDrop: false,
},
CottonCandyBlue: {
text: t('foodCottonCandyBlue'),
target: 'CottonCandyBlue',
article: '',
canBuy: (function() {
return true;
return false;
}),
canDrop: true,
canDrop: false,
},
Honey: {
text: t('foodHoney'),
target: 'Golden',
article: '',
canBuy: (function() {
return true;
return false;
}),
canDrop: true,
canDrop: false,
},
Saddle: {
canBuy: (function() {
@@ -265,102 +265,142 @@ api.food = {
Cake_Skeleton: {
text: t('foodCakeSkeleton'),
target: 'Skeleton',
article: ''
article: '',
},
Cake_Base: {
text: t('foodCakeBase'),
target: 'Base',
article: ''
article: '',
},
Cake_CottonCandyBlue: {
text: t('foodCakeCottonCandyBlue'),
target: 'CottonCandyBlue',
article: ''
article: '',
},
Cake_CottonCandyPink: {
text: t('foodCakeCottonCandyPink'),
target: 'CottonCandyPink',
article: ''
article: '',
},
Cake_Shade: {
text: t('foodCakeShade'),
target: 'Shade',
article: ''
article: '',
},
Cake_White: {
text: t('foodCakeWhite'),
target: 'White',
article: ''
article: '',
},
Cake_Golden: {
text: t('foodCakeGolden'),
target: 'Golden',
article: ''
article: '',
},
Cake_Zombie: {
text: t('foodCakeZombie'),
target: 'Zombie',
article: ''
article: '',
},
Cake_Desert: {
text: t('foodCakeDesert'),
target: 'Desert',
article: ''
article: '',
},
Cake_Red: {
text: t('foodCakeRed'),
target: 'Red',
article: ''
article: '',
},
Candy_Skeleton: {
text: t('foodCandySkeleton'),
target: 'Skeleton',
article: ''
article: '',
canBuy: (function() {
return true;
}),
canDrop: true,
},
Candy_Base: {
text: t('foodCandyBase'),
target: 'Base',
article: ''
article: '',
canBuy: (function() {
return true;
}),
canDrop: true,
},
Candy_CottonCandyBlue: {
text: t('foodCandyCottonCandyBlue'),
target: 'CottonCandyBlue',
article: ''
article: '',
canBuy: (function() {
return true;
}),
canDrop: true,
},
Candy_CottonCandyPink: {
text: t('foodCandyCottonCandyPink'),
target: 'CottonCandyPink',
article: ''
article: '',
canBuy: (function() {
return true;
}),
canDrop: true,
},
Candy_Shade: {
text: t('foodCandyShade'),
target: 'Shade',
article: ''
article: '',
canBuy: (function() {
return true;
}),
canDrop: true,
},
Candy_White: {
text: t('foodCandyWhite'),
target: 'White',
article: ''
article: '',
canBuy: (function() {
return true;
}),
canDrop: true,
},
Candy_Golden: {
text: t('foodCandyGolden'),
target: 'Golden',
article: ''
article: '',
canBuy: (function() {
return true;
}),
canDrop: true,
},
Candy_Zombie: {
text: t('foodCandyZombie'),
target: 'Zombie',
article: ''
article: '',
canBuy: (function() {
return true;
}),
canDrop: true,
},
Candy_Desert: {
text: t('foodCandyDesert'),
target: 'Desert',
article: ''
article: '',
canBuy: (function() {
return true;
}),
canDrop: true,
},
Candy_Red: {
text: t('foodCandyRed'),
target: 'Red',
article: ''
article: '',
canBuy: (function() {
return true;
}),
canDrop: true,
}
};

View File

@@ -214,6 +214,14 @@ shops.getTimeTravelersCategories = function getTimeTravelersCategories (user, la
// };
shops.getSeasonalShopCategories = function getSeasonalShopCategories (user, language) {
let availableSets = {
fallHealer: i18n.t('mummyMedicSet', language),
fall2015Healer: i18n.t('potionerSet', language),
fallMage: i18n.t('witchyWizardSet', language),
fall2015Mage: i18n.t('stitchWitchSet', language),
fallRogue: i18n.t('vampireSmiterSet', language),
fall2015Rogue: i18n.t('battleRogueSet', language),
fallWarrior: i18n.t('monsterOfScienceSet', language),
fall2015Warrior: i18n.t('scarecrowWarriorSet', language),
};
let categories = [];

View File

@@ -1,17 +1,17 @@
.container-fluid
.stable.row: .col-xs-12
div(class="#{env.worldDmg.seasonalShop ? 'seasonalshop_broken' : 'seasonalshop_closed'}").pull-left-sm.col-centered
div(class="#{env.worldDmg.seasonalShop ? 'seasonalshop_broken' : 'seasonalshop_open'}").pull-left-sm.col-centered
.popover.static-popover.fade.right.in.pull-left-sm.col-centered
.arrow.hidden-xs
h3.popover-title!=env.t('seasonalShopClosedTitle', {linkStart:"<a href='http://blog.habitrpg.com/who' target='_blank'>", linkEnd: "</a>"})
h3.popover-title!=env.t('seasonalShopTitle', {linkStart:"<a href='http://blog.habitrpg.com/who' target='_blank'>", linkEnd: "</a>"})
.popover-content
p(ng-if='!env.worldDmg.seasonalShop')!=env.t('seasonalShopClosedText')
p(ng-if='env.worldDmg.seasonalShop')!=env.t('seasonalShopClosedText')
p(ng-if='!env.worldDmg.seasonalShop')!=env.t('seasonalShopFallText')
p(ng-if='env.worldDmg.seasonalShop')!=env.t('seasonalShopFallText')
// .well=env.t('seasonalShopRebirth')
// li.customize-menu.inventory-gear
menu.pets-menu(label=env.t('seasonalItems'))
li.customize-menu.inventory-gear
// menu.pets-menu(label=env.t('seasonalItems'))
div
button.customize-option(class='inventory_special_seafoam',
popover='{{::Content.spells.special.seafoam.notes()}}',

View File

@@ -100,7 +100,7 @@ mixin customizeProfile(mobile)
button(type='button', ng-if='user.purchased.hair.color.#{color}', class='customize-option hair hair_bangs_1_#{color}', ng-click='unlock("hair.color.#{color}")', ng-class='{selectableInventory: user.preferences.hair.color == "#{color}"}')
+buyPref('hair.color', ['rainbow','yellow','green','purple','blue','TRUred'], 'rainbowColors')
+buyPref('hair.color', ['pblue2','pgreen2','porange2','ppink2','ppurple2','pyellow2'], 'shimmerColors', 'disabled')
+buyPref('hair.color', ['candycorn','ghostwhite','halloween','midnight','pumpkin','zombie'], 'hauntedColors', 'disabled')
+buyPref('hair.color', ['candycorn','ghostwhite','halloween','midnight','pumpkin','zombie'], 'hauntedColors')
+buyPref('hair.color', ['aurora','festive','hollygreen','peppermint','snowy','winterstar'], 'winteryColors', 'disabled')
li.customize-menu
@@ -168,7 +168,7 @@ mixin customizeProfile(mobile)
// Seasonal event skins. Note that Spooky Skins are a legacy set and should always be disabled for purchase
+buyPref('skin', ['pastelPink','pastelOrange','pastelYellow','pastelGreen','pastelBlue','pastelPurple','pastelRainbowChevron','pastelRainbowDiagonal'], 'pastelSkins', 'disabled')
+buyPref('skin', ['monster','pumpkin','skeleton','zombie','ghost','shadow'], 'spookySkins', 'disabled')
+buyPref('skin', ['candycorn','ogre','pumpkin2','reptile','shadow2','skeleton2','transparent','zombie2'], 'supernaturalSkins', 'disabled')
+buyPref('skin', ['candycorn','ogre','pumpkin2','reptile','shadow2','skeleton2','transparent','zombie2'], 'supernaturalSkins')
+buyPref('skin', ['clownfish','deepocean','merblue','mergold','mergreen','merruby','shark','tropicalwater'], 'splashySkins', 'disabled')

View File

@@ -1,5 +1,44 @@
h2 9/16/2016 - NEW BEHIND-THE-SCENES BLOG POST AND CONTRIBUTOR SPOTLIGHT!
h2 9/20/2016 - FALL FESTIVAL! LIMITED-EDITION OUTFITS, SUPERNATURAL SKIN, HAUNTED HAIR, AND CANDY FOOD DROPS
hr
tr
td
.seasonalshop_open.pull-left.slight-right-margin
h3 Fall Festival Begins!
p Autumn is upon us, and the Habiticans have moved to the Flourishing Fields! The air is crisp, the leaves are red, and everything is spooky, even the NPCs. Come celebrate the Fall Festival with us... if you dare!
tr
td
.promo_classes_fall_2016.pull-right
h3 Limited Edition Class Outfits
p Habiticans everywhere are dressing up. From now until October 31st, limited-edition outfits are available in the Rewards column. Depending on your class, you can be a Wicked Sorcerer, Swamp Thing, Black Widow Rogue, or Gorgon Healer! (For our Habiticans who have snake or spider phobias, you can block your view of the Black Widow Rogue and the Gorgon Healer by downloading our <a href='http://habitica.wikia.com/wiki/Phobia_Protection_Extension' target='_blank'>Phobia Protection Extension</a>.)
br
p You'd better get productive to earn enough gold before your time runs out...
p.small.muted by Definitely not a villain, ShoGirlGeek. cataclysms, maxpendragon, and Lemoness
tr
td
h3 Supernatural Skin Set
p The Supernatural Skin Set is also available <a href='/#/options/profile/avatar'>in the avatar customization shop</a> until October 31st! Now your avatar can become an Ogre, Skeleton, Pumpkin, Candy Corn, Reptile, or Dread Shade.
br
p Seasonal Edition items recur unchanged every year, but they are only available to purchase during a short period of time. Get them now, or you'll have to wait until next year!
p.small.muted by Lemoness
tr
td
.promo_haunted_hair.pull-left.slight-right-margin
h3 Haunted Hair Colors
p The Seasonal Edition Haunted Hair Colors are now available for purchase, also on <a href='/#/options/profile/avatar'>the avatar customizations page</a>! Now you can dye your avatar's hair Pumpkin, Midnight, Candy Corn, Ghost White, Zombie, or Halloween. Get them before October 31st!
p.small.muted by Lemoness, mariahm, and crystalphoenix
tr
td
.Pet_Food_Candy_Base.pull-right
h3 Candy Food Drops!
p For the duration of the Fall Festival, Habiticans may randomly find candy drops when they complete their tasks. These candies function just like normal food drops - can you guess which flavor your pet will like best?
p.small.muted by Lemoness
if menuItem !== 'oldNews'
hr
a(href='/static/old-news', target='_blank') Read older news
mixin oldNews
h2 9/16/2016 - NEW BEHIND-THE-SCENES BLOG POST AND CONTRIBUTOR SPOTLIGHT!
tr
td
.promo_contrib_spotlight_beffymaroo.pull-right
@@ -12,11 +51,6 @@ h2 9/16/2016 - NEW BEHIND-THE-SCENES BLOG POST AND CONTRIBUTOR SPOTLIGHT!
p There's <a href='https://habitica.wordpress.com/2016/09/16/behind-the-scenes-unconventional-post/' target='_blank'>a new Behind the Scenes post</a> on the Habitica blog, detailing the aftermath of the recent Postcard Challenge! Come see how we've been decorating our office and dealing with the flood of fun cards from Habiticans.
p.small.muted by redphoenix
if menuItem !== 'oldNews'
hr
a(href='/static/old-news', target='_blank') Read older news
mixin oldNews
h2 9/13/2016 - NEW PET QUEST, CHANGES TO ORB OF REBIRTH, AND REAL-TIME PARTY CHAT
.promo_cow.pull-right
tr