Merge branch 'develop' into api-v3

This commit is contained in:
Matteo Pagliazzi
2016-05-11 14:36:58 +02:00
87 changed files with 17043 additions and 16750 deletions

View File

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

View File

@@ -1,46 +1,52 @@
.2014_Fall_HealerPROMO2 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -842px -1203px;
background-position: -825px -423px;
width: 90px;
height: 90px;
}
.2014_Fall_Mage_PROMO9 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -813px -569px;
background-position: -1466px -1139px;
width: 120px;
height: 90px;
}
.2014_Fall_RoguePROMO3 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -977px -1112px;
background-position: -1096px -851px;
width: 105px;
height: 90px;
}
.2014_Fall_Warrior_PROMO {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -91px -1295px;
background-position: -669px -1157px;
width: 90px;
height: 90px;
}
.promo_android {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -593px -241px;
background-position: -1096px -508px;
width: 175px;
height: 175px;
}
.promo_backgrounds_armoire_201602 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -306px -220px;
background-position: -954px 0px;
width: 141px;
height: 294px;
}
.promo_backgrounds_armoire_201603 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -813px 0px;
background-position: -306px -220px;
width: 141px;
height: 294px;
}
.promo_backgrounds_armoire_201604 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -593px 0px;
width: 140px;
height: 441px;
}
.promo_backgrounds_armoire_201605 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -452px 0px;
width: 140px;
@@ -48,19 +54,25 @@
}
.promo_backtoschool {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1236px -148px;
background-position: -1343px -251px;
width: 150px;
height: 150px;
}
.promo_burnout {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -593px 0px;
background-position: -734px 0px;
width: 219px;
height: 240px;
}
.promo_chairs_glasses {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -954px -569px;
width: 51px;
height: 210px;
}
.promo_classes_fall_2014 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -326px -912px;
background-position: -326px -957px;
width: 321px;
height: 100px;
}
@@ -72,13 +84,13 @@
}
.promo_dilatoryDistress {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -569px -1203px;
background-position: -734px -332px;
width: 90px;
height: 90px;
}
.promo_egg_mounts {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -955px 0px;
background-position: 0px -809px;
width: 280px;
height: 147px;
}
@@ -90,43 +102,43 @@
}
.promo_enchanted_armoire_201507 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -578px -1112px;
background-position: -1343px -789px;
width: 217px;
height: 90px;
}
.promo_enchanted_armoire_201508 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -796px -1112px;
background-position: -1343px -972px;
width: 180px;
height: 90px;
}
.promo_enchanted_armoire_201509 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -751px -1203px;
background-position: -825px -332px;
width: 90px;
height: 90px;
}
.promo_enchanted_armoire_201511 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1236px -915px;
background-position: -1343px -1139px;
width: 122px;
height: 90px;
}
.promo_enchanted_armoire_201601 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1115px -1203px;
background-position: -861px -525px;
width: 90px;
height: 90px;
}
.promo_floral_potions {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -813px -295px;
background-position: -954px -295px;
width: 105px;
height: 273px;
}
.promo_habitica {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -955px -480px;
background-position: -1096px -332px;
width: 175px;
height: 175px;
}
@@ -138,241 +150,241 @@
}
.promo_haunted_hair {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1236px -595px;
background-position: -1484px -402px;
width: 100px;
height: 137px;
}
.promo_item_notif {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -955px -656px;
background-position: -1343px 0px;
width: 249px;
height: 102px;
}
.promo_mystery_201405 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -364px -1295px;
background-position: -760px -1157px;
width: 90px;
height: 90px;
}
.promo_mystery_201406 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: 0px -1295px;
background-position: -1494px -251px;
width: 90px;
height: 96px;
}
.promo_mystery_201407 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -769px -241px;
background-position: -1243px -684px;
width: 42px;
height: 62px;
}
.promo_mystery_201408 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -513px -442px;
background-position: -1272px -332px;
width: 60px;
height: 71px;
}
.promo_mystery_201409 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -933px -1203px;
background-position: -770px -525px;
width: 90px;
height: 90px;
}
.promo_mystery_201410 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1131px -586px;
background-position: -1496px -1063px;
width: 72px;
height: 63px;
}
.promo_mystery_201411 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1297px -1203px;
background-position: -1005px -809px;
width: 90px;
height: 90px;
}
.promo_mystery_201412 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1342px -809px;
background-position: -1272px -578px;
width: 42px;
height: 66px;
}
.promo_mystery_201501 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1337px -595px;
background-position: -1542px -880px;
width: 48px;
height: 63px;
}
.promo_mystery_201502 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -387px -1203px;
background-position: -1033px -1157px;
width: 90px;
height: 90px;
}
.promo_mystery_201503 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -478px -1203px;
background-position: -1124px -1157px;
width: 90px;
height: 90px;
}
.promo_mystery_201504 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -646px -621px;
background-position: -1272px -404px;
width: 60px;
height: 69px;
}
.promo_mystery_201505 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -660px -1203px;
background-position: -734px -423px;
width: 90px;
height: 90px;
}
.promo_mystery_201506 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1337px -659px;
background-position: -1272px -508px;
width: 42px;
height: 69px;
}
.promo_mystery_201507 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1131px -480px;
background-position: -1500px -103px;
width: 90px;
height: 105px;
}
.promo_mystery_201508 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -293px -1203px;
background-position: -828px -241px;
width: 93px;
height: 90px;
}
.promo_mystery_201509 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1024px -1203px;
background-position: -808px -706px;
width: 90px;
height: 90px;
}
.promo_mystery_201510 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -199px -1203px;
background-position: -734px -241px;
width: 93px;
height: 90px;
}
.promo_mystery_201511 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1206px -1203px;
background-position: -578px -1157px;
width: 90px;
height: 90px;
}
.promo_mystery_201512 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -452px -442px;
background-position: -1524px -972px;
width: 60px;
height: 81px;
}
.promo_mystery_201601 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1236px -1082px;
background-position: -1096px -760px;
width: 120px;
height: 90px;
}
.promo_mystery_201602 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -182px -1295px;
background-position: -851px -1157px;
width: 90px;
height: 90px;
}
.promo_mystery_201603 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -273px -1295px;
background-position: -942px -1157px;
width: 90px;
height: 90px;
}
.promo_mystery_201604 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1083px -1112px;
background-position: -1202px -851px;
width: 93px;
height: 90px;
}
.promo_mystery_3014 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -593px -417px;
background-position: -1343px -698px;
width: 217px;
height: 90px;
}
.promo_orca {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1236px -809px;
background-position: -1484px -550px;
width: 105px;
height: 105px;
}
.promo_partyhats {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -955px -759px;
background-position: -593px -442px;
width: 115px;
height: 47px;
}
.promo_pastel_skin {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -648px -912px;
background-position: -648px -957px;
width: 330px;
height: 83px;
}
.customize-option.promo_pastel_skin {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -673px -927px;
background-position: -673px -972px;
width: 60px;
height: 60px;
}
.promo_peppermint_flame {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1236px -447px;
background-position: -1343px -550px;
width: 140px;
height: 147px;
}
.promo_pet_skins {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1236px -299px;
background-position: -1343px -402px;
width: 140px;
height: 147px;
}
.customize-option.promo_pet_skins {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1261px -314px;
background-position: -1368px -417px;
width: 60px;
height: 60px;
}
.promo_shimmer_hair {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -724px -809px;
background-position: -979px -957px;
width: 330px;
height: 83px;
}
.promo_splashyskins {
background-image: url(spritesmith-largeSprites-0.png);
background-position: 0px -1203px;
background-position: -1343px -880px;
width: 198px;
height: 91px;
}
.customize-option.promo_splashyskins {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -25px -1218px;
background-position: -1368px -895px;
width: 60px;
height: 60px;
}
.promo_spring_classes_2016 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: 0px -809px;
background-position: -281px -809px;
width: 362px;
height: 102px;
}
.promo_springclasses2014 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: 0px -1112px;
background-position: 0px -1157px;
width: 288px;
height: 90px;
}
.promo_springclasses2015 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -289px -1112px;
background-position: -289px -1157px;
width: 288px;
height: 90px;
}
@@ -384,37 +396,37 @@
}
.promo_summer_classes_2015 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: 0px -1023px;
background-position: 0px -1068px;
width: 300px;
height: 88px;
}
.promo_updos {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1236px 0px;
background-position: -1343px -103px;
width: 156px;
height: 147px;
}
.promo_veteran_pets {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1236px -1006px;
background-position: -1096px -684px;
width: 146px;
height: 75px;
}
.promo_winter_classes_2016 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -363px -809px;
background-position: -644px -809px;
width: 360px;
height: 90px;
}
.promo_winterclasses2015 {
background-image: url(spritesmith-largeSprites-0.png);
background-position: 0px -912px;
background-position: 0px -957px;
width: 325px;
height: 110px;
}
.promo_winteryhair {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -1236px -733px;
background-position: -1343px -1063px;
width: 152px;
height: 75px;
}
@@ -426,7 +438,7 @@
}
.npc_viirus {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -813px -660px;
background-position: -1217px -760px;
width: 108px;
height: 90px;
}
@@ -438,7 +450,7 @@
}
.welcome_basic_avatars {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -955px -148px;
background-position: -1096px 0px;
width: 246px;
height: 165px;
}
@@ -450,7 +462,7 @@
}
.welcome_sample_tasks {
background-image: url(spritesmith-largeSprites-0.png);
background-position: -955px -314px;
background-position: -1096px -166px;
width: 246px;
height: 165px;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 KiB

After

Width:  |  Height:  |  Size: 285 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 302 KiB

After

Width:  |  Height:  |  Size: 312 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 68 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 146 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 153 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 99 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 129 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 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: 293 KiB

After

Width:  |  Height:  |  Size: 255 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 KiB

After

Width:  |  Height:  |  Size: 286 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 145 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: 148 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 779 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 805 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 792 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 790 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 796 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 865 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 890 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 879 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 872 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 879 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

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.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 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: 4.3 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -183,6 +183,13 @@
"backgroundGiantFlowersText": "Giant Flowers",
"backgroundGiantFlowersNotes": "Frolic atop Giant Flowers.",
"backgroundRainbowsEndText": "End of the Rainbow",
"backgroundRainbowsEndNotes": "Discover gold at the End of the Rainbow."
}
"backgroundRainbowsEndNotes": "Discover gold at the End of the Rainbow.",
"backgrounds052016": "SET 24: Released May 2016",
"backgroundBeehiveText": "Beehive",
"backgroundBeehiveNotes": "Buzz and dance in a Beehive.",
"backgroundGazeboText": "Gazebo",
"backgroundGazeboNotes": "Battle a Gazebo.",
"backgroundTreeRootsText": "Tree Roots",
"backgroundTreeRootsNotes": "Explore the Tree Roots."
}

View File

@@ -208,6 +208,8 @@
"weaponArmoireMiningPickaxNotes": "Mine the maximum amount of gold from your tasks! Increases Perception by <%= per %>. Enchanted Armoire: Miner Set (Item 3 of 3).",
"weaponArmoireBasicLongbowText": "Basic Longbow",
"weaponArmoireBasicLongbowNotes": "A serviceable hand-me-down bow. Increases Strength by <%= str %>. Enchanted Armoire: Basic Archer Set (Item 1 of 3).",
"weaponArmoireHabiticanDiplomaText": "Habitican Diploma",
"weaponArmoireHabiticanDiplomaNotes": "A certificate of significant achievement -- well done! Increases Intelligence by <%= int %>. Enchanted Armoire: Graduate Set (Item 1 of 3).",
"armor": "armor",
@@ -435,6 +437,8 @@
"armorArmoireMinerOverallsNotes": "They may seem worn, but they are enchanted to repel dirt. Increases Constitution by <%= con %>. Enchanted Armoire: Miner Set (Item 2 of 3).",
"armorArmoireBasicArcherArmorText": "Basic Archer Armor",
"armorArmoireBasicArcherArmorNotes": "This camouflaged vest lets you slip unnoticed through the forests. Increases Perception by <%= per %>. Enchanted Armoire: Basic Archer Set (Item 2 of 3).",
"armorArmoireGraduateRobeText": "Graduate Robe",
"armorArmoireGraduateRobeNotes": "Congratulations! This weighty robe hangs heavy with all the knowledge you have accrued. Increases Intelligence by <%= int %>. Enchanted Armoire: Graduate Set (Item 2 of 3).",
"headgear": "headgear",
@@ -676,6 +680,8 @@
"headArmoireMinerHelmetNotes": "Protect your head from falling tasks! Increases Intelligence by <%= int %>. Enchanted Armoire: Miner Set (Item 1 of 3).",
"headArmoireBasicArcherCapText": "Basic Archer Cap",
"headArmoireBasicArcherCapNotes": "No archer would be complete without a jaunty cap! Increases Perception by <%= per %>. Enchanted Armoire: Basic Archer Set (Item 3 of 3).",
"headArmoireGraduateCapText": "Graduate Cap",
"headArmoireGraduateCapNotes": "Congratulations! Your deep thoughts have earned you this thinking cap. Increases Intelligence by <%= int %>. Enchanted Armoire: Graduate Set (Item 3 of 3).",
"offhand": "shield-hand item",
@@ -748,7 +754,7 @@
"shieldSpecialWinter2015HealerNotes": "This shield deflects the freezing wind. Increases Constitution by <%= con %>. Limited Edition 2014-2015 Winter Gear.",
"shieldSpecialSpring2015RogueText": "Exploding Squeak",
"shieldSpecialSpring2015RogueNotes": "Don't let the sound fool you - these explosives pack a punch. Increases Strength <%= str %>. Limited Edition 2015 Spring Gear.",
"shieldSpecialSpring2015RogueNotes": "Don't let the sound fool you - these explosives pack a punch. Increases Strength by <%= str %>. Limited Edition 2015 Spring Gear.",
"shieldSpecialSpring2015WarriorText": "Dish Discus",
"shieldSpecialSpring2015WarriorNotes": "Hurl it at your enemies.... or just hold it, because it will fill up with yummy kibble at dinnertime. Increases Constitution by <%= con %>. Limited Edition 2015 Spring Gear.",
"shieldSpecialSpring2015HealerText": "Patterned Pillow",
@@ -797,6 +803,8 @@
"shieldArmoireDragonTamerShieldNotes": "Distract enemies with this dragon-shaped shield. Increases Perception by <%= per %>. Enchanted Armoire: Dragon Tamer Set (Item 2 of 3).",
"shieldArmoireMysticLampText": "Mystic Lamp",
"shieldArmoireMysticLampNotes": "Light the darkest caves with this mystic lamp! Increases Perception by <%= per %>. Enchanted Armoire: Independent Item.",
"shieldArmoireFloralBouquetText": "Bouquet o' Flowers",
"shieldArmoireFloralBouquetNotes": "Not much help in battle, but aren't they beautiful? Increases Constitution by <%= con %>. Enchanted Armoire: Independent Item.",
"back": "Back Accessory",
"backBase0Text": "No Back Accessory",
@@ -918,6 +926,21 @@
"eyewearBase0Text": "No Eyewear",
"eyewearBase0Notes": "No Eyewear.",
"eyewearSpecialBlackTopFrameText": "Black Standard Eyeglasses",
"eyewearSpecialBlackTopFrameNotes": "Glasses with a black frame above the lenses. Confers no benefit.",
"eyewearSpecialBlueTopFrameText": "Blue Standard Eyeglasses",
"eyewearSpecialBlueTopFrameNotes": "Glasses with a blue frame above the lenses. Confers no benefit.",
"eyewearSpecialGreenTopFrameText": "Green Standard Eyeglasses",
"eyewearSpecialGreenTopFrameNotes": "Glasses with a green frame above the lenses. Confers no benefit.",
"eyewearSpecialPinkTopFrameText": "Pink Standard Eyeglasses",
"eyewearSpecialPinkTopFrameNotes": "Glasses with a pink frame above the lenses. Confers no benefit.",
"eyewearSpecialRedTopFrameText": "Red Standard Eyeglasses",
"eyewearSpecialRedTopFrameNotes": "Glasses with a red frame above the lenses. Confers no benefit.",
"eyewearSpecialWhiteTopFrameText": "White Standard Eyeglasses",
"eyewearSpecialWhiteTopFrameNotes": "Glasses with a white frame above the lenses. Confers no benefit.",
"eyewearSpecialYellowTopFrameText": "Yellow Standard Eyeglasses",
"eyewearSpecialYellowTopFrameNotes": "Glasses with a yellow frame above the lenses. Confers no benefit.",
"eyewearSpecialSummerRogueText": "Roguish Eyepatch",
"eyewearSpecialSummerRogueNotes": "It doesn't take a scallywag to see how stylish this is! Confers no benefit. Limited Edition 2014 Summer Gear.",
"eyewearSpecialSummerWarriorText": "Dashing Eyepatch",

View File

@@ -325,6 +325,20 @@ let backgrounds = {
notes: t('backgroundRainbowsEndNotes'),
},
},
backgrounds052016: {
beehive: {
text: t('backgroundBeehiveText'),
notes: t('backgroundBeehiveNotes'),
},
gazebo: {
text: t('backgroundGazeboText'),
notes: t('backgroundGazeboNotes'),
},
tree_roots: {
text: t('backgroundTreeRootsText'),
notes: t('backgroundTreeRootsNotes'),
},
},
};
/* eslint-enable quote-props */

View File

@@ -3,4 +3,9 @@ import prefill from './prefill.js';
export default prefill({
none: {},
black: {},
blue: {},
green: {},
pink: {},
red: {},
yellow: {},
});

View File

@@ -126,6 +126,14 @@ let armor = {
set: 'basicArcher',
canOwn: ownsItem('armor_armoire_basicArcherArmor'),
},
graduateRobe: {
text: t('armorArmoireGraduateRobeText'),
notes: t('armorArmoireGraduateRobeNotes', { int: 10 }),
value: 100,
int: 10,
set: 'graduate',
canOwn: ownsItem('armor_armoire_graduateRobe'),
},
};
let eyewear = {
@@ -330,6 +338,14 @@ let head = {
set: 'basicArcher',
canOwn: ownsItem('head_armoire_basicArcherCap'),
},
graduateCap: {
text: t('headArmoireGraduateCapText'),
notes: t('headArmoireGraduateCapNotes', { int: 9 }),
value: 100,
int: 9,
set: 'graduate',
canOwn: ownsItem('head_armoire_graduateCap'),
},
};
let shield = {
@@ -375,6 +391,13 @@ let shield = {
per: 15,
canOwn: ownsItem('shield_armoire_mysticLamp'),
},
floralBouquet: {
text: t('shieldArmoireFloralBouquetText'),
notes: t('shieldArmoireFloralBouquetNotes', { con: 3 }),
value: 100,
con: 3,
canOwn: ownsItem('shield_armoire_floralBouquet'),
},
};
let headAccessory = {
@@ -521,6 +544,14 @@ let weapon = {
set: 'basicArcher',
canOwn: ownsItem('weapon_armoire_basicLongbow'),
},
habiticanDiploma: {
text: t('weaponArmoireHabiticanDiplomaText'),
notes: t('weaponArmoireHabiticanDiplomaNotes', { int: 11 }),
value: 100,
int: 11,
set: 'graduate',
canOwn: ownsItem('weapon_armoire_habiticanDiploma'),
},
};
let armoireSet = {

View File

@@ -62,9 +62,6 @@ let armor = {
notes: t('armorSpecialSpringRogueNotes', { per: 15 }),
value: 90,
per: 15,
canBuy: () => {
return true;
},
},
springWarrior: {
event: EVENTS.spring,
@@ -73,9 +70,6 @@ let armor = {
notes: t('armorSpecialSpringWarriorNotes', { con: 9 }),
value: 90,
con: 9,
canBuy: () => {
return true;
},
},
springMage: {
event: EVENTS.spring,
@@ -84,9 +78,6 @@ let armor = {
notes: t('armorSpecialSpringMageNotes', { int: 9 }),
value: 90,
int: 9,
canBuy: () => {
return true;
},
},
springHealer: {
event: EVENTS.spring,
@@ -95,9 +86,6 @@ let armor = {
notes: t('armorSpecialSpringHealerNotes', { con: 15 }),
value: 90,
con: 15,
canBuy: () => {
return true;
},
},
summerRogue: {
event: EVENTS.summer,
@@ -208,9 +196,6 @@ let armor = {
notes: t('armorSpecialSpring2015RogueNotes', { per: 15 }),
value: 90,
per: 15,
canBuy: () => {
return true;
},
},
spring2015Warrior: {
event: EVENTS.spring2015,
@@ -219,9 +204,6 @@ let armor = {
notes: t('armorSpecialSpring2015WarriorNotes', { con: 9 }),
value: 90,
con: 9,
canBuy: () => {
return true;
},
},
spring2015Mage: {
event: EVENTS.spring2015,
@@ -230,9 +212,6 @@ let armor = {
notes: t('armorSpecialSpring2015MageNotes', { int: 9 }),
value: 90,
int: 9,
canBuy: () => {
return true;
},
},
spring2015Healer: {
event: EVENTS.spring2015,
@@ -241,9 +220,6 @@ let armor = {
notes: t('armorSpecialSpring2015HealerNotes', { con: 15 }),
value: 90,
con: 15,
canBuy: () => {
return true;
},
},
summer2015Rogue: {
event: EVENTS.summer2015,
@@ -457,6 +433,48 @@ let eyewear = {
notes: t('eyewearSpecialSummerWarriorNotes'),
value: 20,
},
blackTopFrame: {
gearSet: 'glasses',
text: t('eyewearSpecialBlackTopFrameText'),
notes: t('eyewearSpecialBlackTopFrameNotes'),
value: 0,
},
blueTopFrame: {
gearSet: 'glasses',
text: t('eyewearSpecialBlueTopFrameText'),
notes: t('eyewearSpecialBlueTopFrameNotes'),
value: 0,
},
greenTopFrame: {
gearSet: 'glasses',
text: t('eyewearSpecialGreenTopFrameText'),
notes: t('eyewearSpecialGreenTopFrameNotes'),
value: 0,
},
pinkTopFrame: {
gearSet: 'glasses',
text: t('eyewearSpecialPinkTopFrameText'),
notes: t('eyewearSpecialPinkTopFrameNotes'),
value: 0,
},
redTopFrame: {
gearSet: 'glasses',
text: t('eyewearSpecialRedTopFrameText'),
notes: t('eyewearSpecialRedTopFrameNotes'),
value: 0,
},
whiteTopFrame: {
gearSet: 'glasses',
text: t('eyewearSpecialWhiteTopFrameText'),
notes: t('eyewearSpecialWhiteTopFrameNotes'),
value: 0,
},
yellowTopFrame: {
gearSet: 'glasses',
text: t('eyewearSpecialYellowTopFrameText'),
notes: t('eyewearSpecialYellowTopFrameNotes'),
value: 0,
},
};
let head = {
@@ -515,9 +533,6 @@ let head = {
notes: t('headSpecialSpringRogueNotes', { per: 9 }),
value: 60,
per: 9,
canBuy: () => {
return true;
},
},
springWarrior: {
event: EVENTS.spring,
@@ -526,9 +541,6 @@ let head = {
notes: t('headSpecialSpringWarriorNotes', { str: 9 }),
value: 60,
str: 9,
canBuy: () => {
return true;
},
},
springMage: {
event: EVENTS.spring,
@@ -537,9 +549,6 @@ let head = {
notes: t('headSpecialSpringMageNotes', { per: 7 }),
value: 60,
per: 7,
canBuy: () => {
return true;
},
},
springHealer: {
event: EVENTS.spring,
@@ -548,9 +557,6 @@ let head = {
notes: t('headSpecialSpringHealerNotes', { int: 7 }),
value: 60,
int: 7,
canBuy: () => {
return true;
},
},
summerRogue: {
event: EVENTS.summer,
@@ -661,9 +667,6 @@ let head = {
notes: t('headSpecialSpring2015RogueNotes', { per: 9 }),
value: 60,
per: 9,
canBuy: () => {
return true;
},
},
spring2015Warrior: {
event: EVENTS.spring2015,
@@ -672,9 +675,6 @@ let head = {
notes: t('headSpecialSpring2015WarriorNotes', { str: 9 }),
value: 60,
str: 9,
canBuy: () => {
return true;
},
},
spring2015Mage: {
event: EVENTS.spring2015,
@@ -683,9 +683,6 @@ let head = {
notes: t('headSpecialSpring2015MageNotes', { per: 7 }),
value: 60,
per: 7,
canBuy: () => {
return true;
},
},
spring2015Healer: {
event: EVENTS.spring2015,
@@ -694,9 +691,6 @@ let head = {
notes: t('headSpecialSpring2015HealerNotes', { int: 7 }),
value: 60,
int: 7,
canBuy: () => {
return true;
},
},
summer2015Rogue: {
event: EVENTS.summer2015,
@@ -847,9 +841,6 @@ let headAccessory = {
text: t('headAccessorySpecialSpringRogueText'),
notes: t('headAccessorySpecialSpringRogueNotes'),
value: 20,
canBuy: () => {
return true;
},
},
springWarrior: {
event: EVENTS.spring,
@@ -857,9 +848,6 @@ let headAccessory = {
text: t('headAccessorySpecialSpringWarriorText'),
notes: t('headAccessorySpecialSpringWarriorNotes'),
value: 20,
canBuy: () => {
return true;
},
},
springMage: {
event: EVENTS.spring,
@@ -867,9 +855,6 @@ let headAccessory = {
text: t('headAccessorySpecialSpringMageText'),
notes: t('headAccessorySpecialSpringMageNotes'),
value: 20,
canBuy: () => {
return true;
},
},
springHealer: {
event: EVENTS.spring,
@@ -877,9 +862,6 @@ let headAccessory = {
text: t('headAccessorySpecialSpringHealerText'),
notes: t('headAccessorySpecialSpringHealerNotes'),
value: 20,
canBuy: () => {
return true;
},
},
spring2015Rogue: {
event: EVENTS.spring2015,
@@ -887,9 +869,6 @@ let headAccessory = {
text: t('headAccessorySpecialSpring2015RogueText'),
notes: t('headAccessorySpecialSpring2015RogueNotes'),
value: 20,
canBuy: () => {
return true;
},
},
spring2015Warrior: {
event: EVENTS.spring2015,
@@ -897,9 +876,6 @@ let headAccessory = {
text: t('headAccessorySpecialSpring2015WarriorText'),
notes: t('headAccessorySpecialSpring2015WarriorNotes'),
value: 20,
canBuy: () => {
return true;
},
},
spring2015Mage: {
event: EVENTS.spring2015,
@@ -907,9 +883,6 @@ let headAccessory = {
text: t('headAccessorySpecialSpring2015MageText'),
notes: t('headAccessorySpecialSpring2015MageNotes'),
value: 20,
canBuy: () => {
return true;
},
},
spring2015Healer: {
event: EVENTS.spring2015,
@@ -917,9 +890,6 @@ let headAccessory = {
text: t('headAccessorySpecialSpring2015HealerText'),
notes: t('headAccessorySpecialSpring2015HealerNotes'),
value: 20,
canBuy: () => {
return true;
},
},
bearEars: {
gearSet: 'animal',
@@ -1080,9 +1050,6 @@ let shield = {
notes: t('shieldSpecialSpringRogueNotes', { str: 8 }),
value: 80,
str: 8,
canBuy: () => {
return true;
},
},
springWarrior: {
event: EVENTS.spring,
@@ -1091,9 +1058,6 @@ let shield = {
notes: t('shieldSpecialSpringWarriorNotes', { con: 7 }),
value: 70,
con: 7,
canBuy: () => {
return true;
},
},
springHealer: {
event: EVENTS.spring,
@@ -1102,9 +1066,6 @@ let shield = {
notes: t('shieldSpecialSpringHealerNotes', { con: 9 }),
value: 70,
con: 9,
canBuy: () => {
return true;
},
},
summerRogue: {
event: EVENTS.summer,
@@ -1137,9 +1098,6 @@ let shield = {
notes: t('shieldSpecialFallRogueNotes', { str: 8 }),
value: 80,
str: 8,
canBuy: () => {
return true;
},
},
fallWarrior: {
event: EVENTS.fall,
@@ -1148,9 +1106,6 @@ let shield = {
notes: t('shieldSpecialFallWarriorNotes', { con: 7 }),
value: 70,
con: 7,
canBuy: () => {
return true;
},
},
fallHealer: {
event: EVENTS.fall,
@@ -1159,9 +1114,6 @@ let shield = {
notes: t('shieldSpecialFallHealerNotes', { con: 9 }),
value: 70,
con: 9,
canBuy: () => {
return true;
},
},
winter2015Rogue: {
event: EVENTS.winter2015,
@@ -1194,9 +1146,6 @@ let shield = {
notes: t('shieldSpecialSpring2015RogueNotes', { str: 8 }),
value: 80,
str: 8,
canBuy: () => {
return true;
},
},
spring2015Warrior: {
event: EVENTS.spring2015,
@@ -1205,9 +1154,6 @@ let shield = {
notes: t('shieldSpecialSpring2015WarriorNotes', { con: 7 }),
value: 70,
con: 7,
canBuy: () => {
return true;
},
},
spring2015Healer: {
event: EVENTS.spring2015,
@@ -1216,9 +1162,6 @@ let shield = {
notes: t('shieldSpecialSpring2015HealerNotes', { con: 9 }),
value: 70,
con: 9,
canBuy: () => {
return true;
},
},
summer2015Rogue: {
event: EVENTS.summer2015,
@@ -1227,9 +1170,6 @@ let shield = {
notes: t('shieldSpecialSummer2015RogueNotes', { str: 8 }),
value: 80,
str: 8,
canBuy: () => {
return true;
},
},
summer2015Warrior: {
event: EVENTS.summer2015,
@@ -1375,9 +1315,6 @@ let weapon = {
notes: t('weaponSpecialSpringRogueNotes', { str: 8 }),
value: 80,
str: 8,
canBuy: () => {
return true;
},
},
springWarrior: {
event: EVENTS.spring,
@@ -1386,9 +1323,6 @@ let weapon = {
notes: t('weaponSpecialSpringWarriorNotes', { str: 15 }),
value: 90,
str: 15,
canBuy: () => {
return true;
},
},
springMage: {
event: EVENTS.spring,
@@ -1399,9 +1333,6 @@ let weapon = {
value: 160,
int: 15,
per: 7,
canBuy: () => {
return true;
},
},
springHealer: {
event: EVENTS.spring,
@@ -1410,9 +1341,6 @@ let weapon = {
notes: t('weaponSpecialSpringHealerNotes', { int: 9 }),
value: 90,
int: 9,
canBuy: () => {
return true;
},
},
summerRogue: {
event: EVENTS.summer,
@@ -1523,9 +1451,6 @@ let weapon = {
notes: t('weaponSpecialSpring2015RogueNotes', { str: 8 }),
value: 80,
str: 8,
canBuy: () => {
return true;
},
},
spring2015Warrior: {
event: EVENTS.spring2015,
@@ -1534,9 +1459,6 @@ let weapon = {
notes: t('weaponSpecialSpring2015WarriorNotes', { str: 15 }),
value: 90,
str: 15,
canBuy: () => {
return true;
},
},
spring2015Mage: {
event: EVENTS.spring2015,
@@ -1547,9 +1469,6 @@ let weapon = {
value: 160,
int: 15,
per: 7,
canBuy: () => {
return true;
},
},
spring2015Healer: {
event: EVENTS.spring2015,
@@ -1558,9 +1477,6 @@ let weapon = {
notes: t('weaponSpecialSpring2015HealerNotes', { int: 9 }),
value: 90,
int: 9,
canBuy: () => {
return true;
},
},
summer2015Rogue: {
event: EVENTS.summer2015,

View File

@@ -127,7 +127,7 @@ function calculateImgDimensions(img, addPadding) {
}
function checkForSpecialTreatment(name) {
let regex = /^hair|skin|beard|mustach|shirt|flower|^headAccessory_special_\w+Ears/;
let regex = /^hair|skin|beard|mustach|shirt|flower|^headAccessory_special_\w+Ears|^eyewear_special_\w+TopFrame/;
return name.match(regex) || name === 'head_0';
}

View File

@@ -395,6 +395,13 @@ describe('User', () => {
expect(user).toHaveHP(50);
expect(user.items.gear.owned).to.eql({
weapon_warrior_0: false,
eyewear_special_blackTopFrame: true,
eyewear_special_blueTopFrame: true,
eyewear_special_greenTopFrame: true,
eyewear_special_pinkTopFrame: true,
eyewear_special_redTopFrame: true,
eyewear_special_yellowTopFrame: true,
eyewear_special_whiteTopFrame: true,
});
});

View File

@@ -236,7 +236,7 @@ export let schema = new Schema({
gear: {
owned: _.transform(shared.content.gear.flat, (m, v) => {
m[v.key] = {type: Boolean};
if (v.key.match(/[armor|head|shield]_warrior_0/)) {
if (v.key.match(/[armor|head|shield]_warrior_0/) || v.gearSet === 'glasses') {
m[v.key].default = true;
}
}),

View File

@@ -1,16 +1,16 @@
.container-fluid
.stable.row: .col-xs-12
div(class="#{env.worldDmg.seasonalShop ? 'seasonalshop_broken' : 'seasonalshop_open'}").pull-left-sm.col-centered
div(class="#{env.worldDmg.seasonalShop ? 'seasonalshop_broken' : 'seasonalshop_closed'}").pull-left-sm.col-centered
.popover.static-popover.fade.right.in.pull-left-sm.col-centered
.arrow.hidden-xs
h3.popover-title!=env.t('seasonalShopTitle', {linkStart:"<a href='http://blog.habitrpg.com/who' target='_blank'>", linkEnd: "</a>"})
h3.popover-title!=env.t('seasonalShopClosedTitle', {linkStart:"<a href='http://blog.habitrpg.com/who' target='_blank'>", linkEnd: "</a>"})
.popover-content
p(ng-if='!env.worldDmg.seasonalShop')!=env.t('seasonalShopText')
p(ng-if='env.worldDmg.seasonalShop')!=env.t('seasonalShopText')
p(ng-if='!env.worldDmg.seasonalShop')!=env.t('seasonalShopClosedText')
p(ng-if='env.worldDmg.seasonalShop')!=env.t('seasonalShopClosedText')
.well(ng-if='User.user.achievements.rebirths > 0')=env.t('seasonalShopRebirth')
// .well(ng-if='User.user.achievements.rebirths > 0')=env.t('seasonalShopRebirth')
li.customize-menu.inventory-gear
// li.customize-menu.inventory-gear
menu.pets-menu(label=env.t('quests'))
div(ng-repeat='quest in ::getSeasonalShopQuests()')
button.customize-option(ng-class='(quest.previous && !user.achievements.quests[quest.previous]) ? "inventory_quest_scroll_locked inventory_quest_scroll_{{::quest.key}}_locked locked" : "inventory_quest_scroll inventory_quest_scroll_{{::quest.key}}"'
@@ -30,7 +30,7 @@
ng-click='purchase("special", Content.spells.special.shinySeed)')
p {{::Content.spells.special.shinySeed.value}}
span(class='shop_gold')
// div
div
button.customize-option(class='Pet_HatchingPotion_Peppermint',
popover='{{::Content.hatchingPotions.Peppermint.notes()}}',
popover-title!=env.t("potion", {potionType: "{{::Content.hatchingPotions.Peppermint.text()}}"}),
@@ -39,7 +39,7 @@
ng-click='purchase("hatchingPotions", Content.hatchingPotions.Peppermint)')
p {{::Content.hatchingPotions.Peppermint.value}}&nbsp;
span.Pet_Currency_Gem1x.inline-gems
// div
div
button.customize-option(popover='{{::Content.spells.special.nye.notes()}}', popover-title='{{::Content.spells.special.nye.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='castStart(Content.spells.special.nye)', class='inventory_special_nye')
p {{Content.spells.special.nye.value}}
span(class='shop_gold')

View File

@@ -56,6 +56,22 @@ mixin customizeProfile(mobile)
each num in [1,2,3,4,5,6]
button(class='hair_flower_#{num} customize-option', type='button', ng-click='set({"preferences.hair.flower":#{num}})', ng-class='{selectableInventory: user.preferences.hair.flower == "#{num}"}')
// Eyeglasses
li.customize-menu
menu(label=env.t('eyewear'))
button.customize-option(ng-repeat='item in ::getGearArray("glasses")', class='{{::item.key}}',
ng-class="{selectableInventory: user.preferences.costume ? user.items.gear.costume.eyewear === item.key : user.items.gear.equipped.eyewear === item.key}",
popover='{{::item.notes()}}', popover-title='{{::item.text()}}', popover-trigger='mouseenter',
popover-placement='right', popover-append-to-body='true',
ng-click='equip(item.key)')
// Wheelchair
li.customize-menu
menu(label=env.t('wheelchair'))
button.customize-option(ng-repeat='item in ::["black","blue","green","pink","red","yellow"]', class='button_chair_{{::item}}',
ng-class="{selectableInventory: user.preferences.chair == item}",
ng-click='user.preferences.chair != item ? set({"preferences.chair":item}) : set({"preferences.chair":"none"})')
// Animal Ears
li.customize-menu
menu(label=env.t('animalEars'))
@@ -68,13 +84,6 @@ mixin customizeProfile(mobile)
popover-placement='right', popover-append-to-body='true',
ng-click='user.items.gear.owned[item.key] ? equip(item.key) : purchase(item.type,item)')
// Wheelchair
li.customize-menu
menu(label=env.t('wheelchair'))
button.customize-option(ng-repeat='item in ::["black"]', class='button_chair_{{::item}}',
ng-class="{selectableInventory: user.preferences.chair == item}",
ng-click='user.preferences.chair != item ? set({"preferences.chair":item}) : set({"preferences.chair":"none"})')
.col-md-4
h3(class=mobile?'item item-divider':'')=env.t('bodyHead')
menu(type='list')
@@ -90,7 +99,7 @@ mixin customizeProfile(mobile)
each color in ['pblue','pgreen','porange','ppink','ppurple','pyellow']
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')
+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', ['aurora','festive','hollygreen','peppermint','snowy','winterstar'], 'winteryColors', 'disabled')
@@ -157,7 +166,7 @@ mixin customizeProfile(mobile)
+buyPref('skin', ['bear','cactus','fox','lion','panda','pig','tiger','wolf'], 'animalSkins')
// 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')
+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', ['clownfish','deepocean','merblue','mergold','mergreen','merruby','shark','tropicalwater'], 'splashySkins', 'disabled')

View File

@@ -1,5 +1,46 @@
h2 4/29/2016 - LAST CHANCE FOR APRIL SUBSCRIBER ITEMS AND SPRING FLING ITEMS!
h2 5/11/2016 - NEW AVATAR CUSTOMIZATIONS AND CHALLENGE SPOTLIGHT SUBMISSIONS
hr
tr
td
.promo_chairs_glasses.pull-right
h3 Glasses and New Wheelchair Colors for Avatars
p We have two new sets of free <a href='/#/options/profile/avatar'>avatar customizations</a> available: glasses, and additional wheelchair colors! We hope that Habiticans who wear glasses and/or use wheelchairs will enjoy these options.
p.small.muted by Breadstrings and Balduranne
tr
td
h3 Challenge Spotlight Submissions
p Do you have a broadly-applicable Challenge that you would like to promote to all of Habitica? Now you can submit Challenges to be featured on our official blog! To qualify, the Challenge must have a fixed end date and a Gem prize of any amount. To submit a Challenge for consideration, just <a href='https://docs.google.com/forms/d/1Wb0TJaZrMA3URdANqoNjnhi_EfFTwfZ0WwteB8IU5E8/viewform' target='_blank'>fill out this form.</a>
p.small.muted by redphoenix
if menuItem !== 'oldNews'
hr
a(href='/static/old-news', target='_blank') Read older news
mixin oldNews
h2 5/3/2016 - iOS UPDATE, MAY BACKGROUNDS, AND MAY ARMOIRE ITEMS
tr
td
h3 iOS Update
p We've released <a href='https://itunes.apple.com/us/app/habitica/id994882113?ls=1&mt=8' target='_blank'>a new iOS update</a> which includes social media sharing and the ability to change your class from the app, as well as some bug fixes. Be sure to download it now for a better Habitica experience!
br
p If you like the improvements that weve been making to our app, please consider reviewing this new version. It really helps us out! Old reviews get hidden, but if you go to the review section you can re-post it again with a single tap. We hope you enjoy the update!
p.small.muted by viirus
tr
td
.promo_backgrounds_armoire_201605.pull-right
h3 May Backgrounds
p There are three new avatar backgrounds in the <a href='https://habitica.com/#/options/profile/backgrounds'>Background Shop!</a> Now your avatar can buzz in a Beehive, explore the Tree Roots, or battle a Gazebo.
p.small.muted by James Danger and DialFForFunky
tr
td
h3 May Armoire Items Revealed
p There is new equipment in the Enchanted Armoire, a 100 GP Reward in the Rewards Column which unlocks after you've attained Ultimate Gear!
br
p Click on the Enchanted Armoire for a random chance at special Equipment, including the Graduate Set and the Bouquet of Flowers! It may also give you random XP or food items. We'll be adding new equipment to it during the first week of each month, but even when you've exhausted the current supply, you can keep clicking for a chance at food and XP.
br
p Now go spend all that accumulated Gold! May the Random Number Generator smile upon you...
p.small.muted by Breadstrings
h2 4/29/2016 - LAST CHANCE FOR APRIL SUBSCRIBER ITEMS AND SPRING FLING ITEMS!
tr
td
.promo_mystery_201604.pull-right
@@ -10,12 +51,6 @@ h2 4/29/2016 - LAST CHANCE FOR APRIL SUBSCRIBER ITEMS AND SPRING FLING ITEMS!
.promo_spring_classes_2016.pull-right
h3 Last Chance for Spring Fling Items and Customizations
p On May 1st, everything will be back to normal in Habitica, so if you still have any remaining Spring Fling Items that you want to buy from the Rewards Column or the Seasonal Shop, you'd better do it now! The <a href='/#/options/inventory/seasonalshop'>Seasonal Edition items</a> and <a href='/#/options/profile/avatar'>Hair/Skin Colors</a> won't be back until next March, and if the Limited Edition items return they will have increased prices or changed art, so strike while the iron is hot!
if menuItem !== 'oldNews'
hr
a(href='/static/old-news', target='_blank') Read older news
mixin oldNews
h2 4/27/2016 - WORLD BOSS DEFEATED!
tr
td