Merge branch 'develop' of github.com:HabitRPG/habitrpg into develop
2
npm-shrinkwrap.json
generated
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "habitica",
|
||||
"version": "3.41.4",
|
||||
"version": "3.42.0",
|
||||
"dependencies": {
|
||||
"@slack/client": {
|
||||
"version": "3.6.0",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "habitica",
|
||||
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
|
||||
"version": "3.41.4",
|
||||
"version": "3.42.0",
|
||||
"main": "./website/server/index.js",
|
||||
"dependencies": {
|
||||
"@slack/client": "3.6.0",
|
||||
|
||||
@@ -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}});
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 539 KiB After Width: | Height: | Size: 489 KiB |
522
website/assets/sprites/dist/spritesmith-main-10.css
vendored
BIN
website/assets/sprites/dist/spritesmith-main-10.png
vendored
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 144 KiB |
732
website/assets/sprites/dist/spritesmith-main-11.css
vendored
BIN
website/assets/sprites/dist/spritesmith-main-11.png
vendored
|
Before Width: | Height: | Size: 149 KiB After Width: | Height: | Size: 152 KiB |
906
website/assets/sprites/dist/spritesmith-main-12.css
vendored
BIN
website/assets/sprites/dist/spritesmith-main-12.png
vendored
|
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 174 KiB |
2322
website/assets/sprites/dist/spritesmith-main-13.css
vendored
BIN
website/assets/sprites/dist/spritesmith-main-13.png
vendored
|
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 143 KiB |
1324
website/assets/sprites/dist/spritesmith-main-4.css
vendored
BIN
website/assets/sprites/dist/spritesmith-main-4.png
vendored
|
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 136 KiB |
1512
website/assets/sprites/dist/spritesmith-main-5.css
vendored
BIN
website/assets/sprites/dist/spritesmith-main-5.png
vendored
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 134 KiB |
788
website/assets/sprites/dist/spritesmith-main-6.css
vendored
BIN
website/assets/sprites/dist/spritesmith-main-6.png
vendored
|
Before Width: | Height: | Size: 404 KiB After Width: | Height: | Size: 411 KiB |
628
website/assets/sprites/dist/spritesmith-main-7.css
vendored
BIN
website/assets/sprites/dist/spritesmith-main-7.png
vendored
|
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 154 KiB |
572
website/assets/sprites/dist/spritesmith-main-8.css
vendored
BIN
website/assets/sprites/dist/spritesmith-main-8.png
vendored
|
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 139 KiB |
536
website/assets/sprites/dist/spritesmith-main-9.css
vendored
BIN
website/assets/sprites/dist/spritesmith-main-9.png
vendored
|
Before Width: | Height: | Size: 153 KiB After Width: | Height: | Size: 153 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 4.5 KiB |
BIN
website/assets/sprites/spritesmith/npcs/npc_ian.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
@@ -75,6 +75,10 @@
|
||||
"shipSoothsayerSet": "Ship Soothsayer (Mage)",
|
||||
"strappingSailorSet": "Strapping Sailor (Healer)",
|
||||
"reefRenegadeSet": "Reef Renegade (Rogue)",
|
||||
"scarecrowWarriorSet": "Scarecrow Warrior (Warrior)",
|
||||
"stitchWitchSet": "Stitch Witch (Mage)",
|
||||
"potionerSet": "Potioner (Healer)",
|
||||
"battleRogueSet": "Bat-tle Rogue (Rogue)",
|
||||
"fallEventAvailability": "Available for purchase until October 31.",
|
||||
"winterEventAvailability": "Available for purchase until December 31.",
|
||||
"springEventAvailability": "Available for purchase until May 31.",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"frequentlyAskedQuestions": "Veelgestelde vragen",
|
||||
"faqQuestion0": "Ik ben in de war. Waar kan ik een overzicht vinden? ",
|
||||
"iosFaqAnswer0": "Allereerst zet je de taken op die je in je dagelijkse leven wil doen. Vervolgens, als je de taken volbrengt en afvinkt, verdien je ervaring en goud. Goud wordt gebruikt om uitrusting en sommige voorwerpen te kopen, evenals voor persoonlijke beloningen. Ervaring zorgt ervoor dat je karakter omhoog gaat in niveau en dat je spelinhoud als huisdieren, vaardigheden en queesten vrijspeelt! Je kunt je karakter aanpassen onder Menu > Avatar aanpassen.\n\nWat simpele dingen om te beginnen: klik op de (+) in de rechterbovenhoek om een nieuwe taak toe te voegen. Tik op een bestaande taak om hem aan te passen en veeg hem naar links om de taak te verwijderen. Je kunt taken sorteren door labels te gebruiken in de linkerbovenhoek en checklists in- en uitklappen door op het checklist-bolletje te klikken.",
|
||||
"androidFaqAnswer0": "Allereerst stel je de taken in die je in je dagelijkse leven wil doen. Vervolgens, als je de taken volbrengt en afvinkt, verdien je ervaring en Goud. Goud wordt gebruikt om uitrusting en sommige voorwerpen te kopen, evenals voor aangepaste beloningen. Ervaring zorgt ervoor dat je karakter stijgt in niveau en dat je spelinhoud als huisdieren, vaardigheden en queesten vrijspeelt! Je kunt je karakter aanpassen onder Menu > [Boedel >] Avatar aanpassen.\n\nWat simpele dingen om te beginnen: klik op de (+) in de rechteronderhoek om een nieuwe taak toe te voegen. Tik op een bestaande taak om hem aan te passen en veeg hem naar links om de taak te verwijderen. Je kunt taken sorteren door labels te gebruiken in de rechterbovenhoek en checklists in- en uitklappen door op het checklist-bolletje te klikken.",
|
||||
"androidFaqAnswer0": "Eerst stel je de taken in die je in je dagelijkse leven wil doen. Vervolgens, als je de taken volbrengt en afvinkt, verdien je ervaring en Goud. Goud wordt gebruikt om uitrusting en sommige voorwerpen te kopen, evenals voor aangepaste beloningen. Ervaring zorgt ervoor dat je karakter stijgt in niveau en dat je spelinhoud als huisdieren, vaardigheden en queesten vrijspeelt! Je kunt je karakter aanpassen onder Menu > [Boedel >] Avatar aanpassen.\n\nWat simpele dingen om te beginnen: klik op de (+) in de rechteronderhoek om een nieuwe taak toe te voegen. Tik op een bestaande taak om hem aan te passen en veeg hem naar links om de taak te verwijderen. Je kunt taken sorteren door labels te gebruiken in de rechterbovenhoek en checklists in- en uitklappen door op het checklist-bolletje te klikken.",
|
||||
"webFaqAnswer0": "Allereerst creëer je de taken die je in je dagelijkse leven wil voltooien. Door vervolgens de taken te voltooien in het echte leven en deze af te vinken, verdien je ervaringspunten en goud. Goud wordt gebruikt om uitrusting en sommige voorwerpen te kopen, evenals persoonlijke beloningen. Ervaring zorgt ervoor dat je karakter omhoog gaat in speelniveau en dat je spelinhoud als huisdieren, vaardigheden en queesten vrijspeelt! Voor meer informatie kan je de de stap-voor-stap uitleg van het spel lezen op [Help -> Overzicht voor nieuwe gebruikers](https://habitica.com/static/overview).",
|
||||
"faqQuestion1": "Hoe stel ik mijn taken in?",
|
||||
"iosFaqAnswer1": "Goede gewoonten (degenen met een +) zijn taken die je meerdere keren per dag kunt doen, zoals groenten eten. Slechte gewoonten (degenen met een -) zijn taken die je zou moeten nalaten, zoals op je nagels bijten. Gewoonten met een + en een - hebben een goede en een slechte keuze, bijvoorbeeld de trap nemen tegenover de lift nemen. Goede gewoonten belonen je met ervaring en goud. Slechte gewoonten doen je levenspunten verliezen.\n\nDagelijkse taken zijn taken die je iedere dag moet doen, zoals je tanden poetsen of je e-mail bekijken. Je kunt de dagen aanpassen waarop je een bepaalde dagelijkse taak moet doen door erop te drukken en hem te bewerken. Als je een dagelijkse taak overslaat op een dag dat hij gedaan moet worden, zal je avatar gedurende de nacht schade oplopen. Wees voorzichtig en voeg niet teveel dagelijkse taken tegelijk toe!\n\nTo-do's zijn de dingen die je nog een keer moet doen. Een to-do afvinken levert geld en ervaringspunten op. Je kunt nooit levenspunten kwijtraken door een to-do. Je kunt een geplande voltooiingsdatum toevoegen aan een to-do door er op te tikken om hem aan te passen.",
|
||||
@@ -18,7 +18,7 @@
|
||||
"webFaqAnswer3": "Je taken veranderen van kleur afhankelijk van hoe goed je ze op dat moment voltooit! Iedere taak begint als neutraal geel. Voltooi dagelijkse taken of positieve gewoonten en ze veranderen naar blauw. Mis een dagelijkse taak of geef toe aan een slechte gewoonte en de taak verandert naar rood. Hoe roder de taak, hoe meer je beloond zult worden, maar als het een dagelijkse taak of slechte gewoonte is, des te meer schade doet hij je! Dit helpt je te motiveren om problematische taken te voltooien.",
|
||||
"faqQuestion4": "Waarom heeft mijn avatar levenspunten verloren en hoe krijg ik ze terug?",
|
||||
"iosFaqAnswer4": "Er zijn verschillende dingen die je kunnen schaden. Ten eerste: als je dagelijkse taken 's nachts incompleet zijn, doen ze schade. Ten tweede: als je een slechte gewoonte aanklikt, zal het je schade doen. Tenslotte: als je in een gevecht met een eindbaas bent met je groep en een van je groepsleden heeft niet al zijn/haar taken gedaan, dan zal de baas je aanvallen.\n\nDe belangrijkste manier om te genezen is om een niveau omhoog te gaan, dat herstelt al je levenspunten. Je kunt ook met goud een gezondheidsdrankje kopen in de beloningskolom. Daarbij, op niveau 10 en daarboven, kun je ervoor kiezen om een genezer te worden en dan kun je genezingsvaardigheden leren. Als je in een groep zit met een genezer, kan deze je ook genezen.",
|
||||
"androidFaqAnswer4": "There are several things that can cause you to take damage. First, if you left Dailies incomplete overnight, they will damage you. Second, if you tap a bad Habit, it will damage you. Finally, if you are in a Boss Battle with your Party and one of your Party mates did not complete all their Dailies, the Boss will attack you.\n\n The main way to heal is to gain a level, which restores all your health. You can also buy a Health Potion with gold from the Rewards tab on the Tasks page. Plus, at level 10 or above, you can choose to become a Healer, and then you will learn healing skills. If you are in a Party with a Healer, they can heal you as well.",
|
||||
"androidFaqAnswer4": "Er zijn verschillende dingen die je kunnen schaden. Ten eerste: als je dagelijkse taken 's nachts niet voltooid zijn zijn doen ze schade. Ten tweede: als je een slechte gewoonte aantikt zal die je schaden. Tenslotte: als je met je groep een gevecht met een eindbaas bent en een van je groepsleden heeft niet al zijn/haar dagelijkse taken gedaan heeft dan zal de baas je aanvallen.\n\nDe belangrijkste manier om te genezen is om een niveau omhoog te gaan., Dat herstelt al je levenspunten. Je kunt ook met goud een gezondheidsdrankje kopen in de beloningskolom. Daarenboven kun je op niveau 10 en hoger ervoor kiezen om een genezer te worden en dan kun je genezingsvaardigheden leren. Als je in een groep zit met een genezer kan deze je ook genezen.",
|
||||
"webFaqAnswer4": "Er zijn verschillende dingen die je kunnen schaden. Ten eerste: als je dagelijkse taken 's nachts incompleet zijn, doen ze schade. Ten tweede: als je een slechte gewoonte aanklikt, zal het je schade doen. Tenslotte: als je in een gevecht met een eindbaas bent met je groep en een van je groepsleden niet al zijn/haar taken gedaan heeft, dan zal de baas je aanvallen.\n<br><br>\nDe belangrijkste manier om te genezen is om een level omhoog te gaan, dat herstelt al je levenspunten. Je kunt ook met goud een gezondheidsdrankje kopen in de beloningskolom. Daarbij, op level 10 en daarboven, kun je ervoor kiezen om een genezer te worden en dan kun je genezingsvaardigheden leren. Als je in een groep zit (onder Sociaal > Groep) met een genezer, kan deze je ook genezen.",
|
||||
"faqQuestion5": "Hoe speel ik Habitica samen met mijn vrienden?",
|
||||
"iosFaqAnswer5": "De beste manier is om ze uit te nodigen voor een groep met jou! Groepen kunnen queestes doen, monsters bevechten en vaardigheden uitspreken om elkaar te ondersteunen. Ga naar Menu > Groep en klik op \"Maak Nieuwe Groep\" als je er nog geen hebt. Druk dan op de ledenlijst en druk op Uitnodigen in de rechterbovenhoek om je vrienden uit te nodigen door hun Gebruikers-ID in te voeren (een serie nummers en letters die ze kunnen vinden onder Instellingen > Account in de app en Instellingen > API op de website). Op de website kun je ook vrienden uitnodigen via e-mail, hetgeen we in een latere update aan de app zullen toevoegen.\n\nOp de website kunnen jij en je vrienden je ook aansluiten bij Gildes, dat zijn publieke chatrooms. Gildes worden aan de app toegevoegd in een toekomstige update.",
|
||||
|
||||
@@ -125,8 +125,8 @@
|
||||
"copyMessageAsToDo": "Kopiuj wiadomość jako Do-Zrobienia",
|
||||
"messageAddedAsToDo": "Wiadomość skopiowana jako Do-Zrobienia.",
|
||||
"messageWroteIn": "<%= user %> napisał w <%= group %>",
|
||||
"taskFromInbox": "<%= from %> wrote '<%= message %>'",
|
||||
"taskTextFromInbox": "Message from <%= from %>",
|
||||
"taskFromInbox": "<%= from %> napisała '<%= message %>'",
|
||||
"taskTextFromInbox": "Wiadomość od <%= from %>",
|
||||
"msgPreviewHeading": "Podgląd wiadomości",
|
||||
"leaderOnlyChallenges": "Tylko przywódca grupy może tworzyć wyzwania",
|
||||
"sendGift": "Wyślij prezent",
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
"shipSoothsayerSet": "Ship Soothsayer (Mage)",
|
||||
"strappingSailorSet": "Strapping Sailor (Healer)",
|
||||
"reefRenegadeSet": "Reef Renegade (Rogue)",
|
||||
"fallEventAvailability": "Available for purchase until October 31.",
|
||||
"fallEventAvailability": "Dostępne w sprzedaży do 31 października.",
|
||||
"winterEventAvailability": "Dostępne w sprzedaży do 31 grudnia.",
|
||||
"springEventAvailability": "Dostępne w sprzedaży do 31 maja.",
|
||||
"summerEventAvailability": "Dostępne w sprzedaży do 31 sierpnia."
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
"sureLeave": "Czy na pewno chcesz opuścić aktywną misję? Cały twój postęp zostanie stracony.",
|
||||
"questOwner": "Właściciel misji",
|
||||
"questTaskDamage": "+<%= damage %> pending damage to boss",
|
||||
"questTaskCollection": "<%= items %> items collected today",
|
||||
"questTaskCollection": "<%= items %> rzeczy zebranych dzisiaj",
|
||||
"questOwnerNotInPendingQuest": "Właściciel misji opuścił misję i nie może jej już rozpocząć. Zaleca się anulowanie jej na tym etapie. Właściciel misji zatrzyma zwój misji.",
|
||||
"questOwnerNotInRunningQuest": "Właściciel misji opuścił misję. Możesz ją porzucić, jeśli chcesz. Możesz ją także kontynować, a wszyscy uczestnicy, którzy zostaną, otrzymają nagrody misji po jej ukończeniu.",
|
||||
"questOwnerNotInPendingQuestParty": "Właściciel misji opuścił drużynę i nie może już rozpocząć misji. Zaleca się jej anulowanie jej. Zwój misji zostanie zwrócony właścicielowi.",
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"rebirthAdvList3": "Twoje Nawyki, Codzienne, oraz zadania Do-zrobienia zostaną zresetowane do poziomu żółtego, a ich serie wyzerowane. Wyjątkiem są zadania z wyzwań.",
|
||||
"rebirthAdvList4": "Na początku jesteś w klasie Wojownika, dopóki nie zapracujesz sobie na zmianę klasy.",
|
||||
"rebirthInherit": "Twoja postać dziedziczy pewne cechy ze swojego poprzedniego wcielenia.",
|
||||
"rebirthInList1": "Tasks, history, equipment, and settings remain.",
|
||||
"rebirthInList1": "Zadania, historia, wyposażenie oraz ustawienia pozostaną.",
|
||||
"rebirthInList2": "Wyzwania, Gildia oraz Drużyna pozostają bez zmian.",
|
||||
"rebirthInList3": "Zachowujesz Klejnoty, odznaki fundatora oraz pomocnika.",
|
||||
"rebirthInList4": "Przedmioty uzyskane za Klejnoty lub z łupów (takie jak chowańce i wierzchowce) pozostaną, jednakże nie będziesz miał do nich dostępu, dopóki nie odblokujesz ich ponownie.",
|
||||
@@ -20,7 +20,7 @@
|
||||
"rebirthText": "Rozpoczął <%= rebirths %> nowych przygód.",
|
||||
"rebirthOrb": "Wykorzystał Kulę Odrodzenia aby rozpocząć grę od nowa po osiągnięciu Poziomu",
|
||||
"rebirthOrb100": "Wykorzystano Kulę Odrodzenia aby rozpocząć grę od nowa po osiągnięciu Poziomu 100 lub wyższego",
|
||||
"rebirthPop": "Begin a new character at Level 1 while retaining achievements, collectibles, equipment, and tasks with history.",
|
||||
"rebirthPop": "Stwórz nową postać na Poziomie 1 zachowując osiągnięcia, przedmioty kolekcjonerskie oraz zadania wraz z historią.",
|
||||
"rebirthName": "Kula Odrodzenia",
|
||||
"reborn": "Odrodzony, najwyższy poziom <%= reLevel %>",
|
||||
"confirmReborn": "Na pewno?",
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
"beastMasterProgress": "Progresso Como Mestre das Bestas",
|
||||
"stableBeastMasterProgress": "Progresso Como Mestre das Bestas: <%= number %> Mascotes Encontrados",
|
||||
"beastAchievement": "Você adquiriu a Conquista \"Mestre das Bestas\" por coletar todos mascotes!",
|
||||
"beastMasterName": "Mestra das Bestas",
|
||||
"beastMasterName": "Mestre das Bestas",
|
||||
"beastMasterText": "Encontrou todos os 90 mascotes (incrivelmente difícil, parabenize esse usuário!) ",
|
||||
"beastMasterText2": "e soltou os seus mascotes um total de <%= count %> vezes.",
|
||||
"mountMasterProgress": "Progresso Como Mestre das Montarias",
|
||||
|
||||
@@ -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')},
|
||||
});
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -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 = [];
|
||||
|
||||
@@ -155,6 +155,7 @@ api.registerLocal = {
|
||||
gaLabel: 'local',
|
||||
uuid: savedUser._id,
|
||||
headers: req.headers,
|
||||
user: savedUser,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -144,7 +144,7 @@ let _formatDataForAmplitude = (data) => {
|
||||
let itemName = _lookUpItemName(data.itemKey);
|
||||
|
||||
if (itemName) {
|
||||
event_properties.itemName = itemName;
|
||||
ampData.event_properties.itemName = itemName;
|
||||
}
|
||||
return ampData;
|
||||
};
|
||||
|
||||
@@ -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()}}',
|
||||
|
||||
@@ -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')
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||