feat(event): Habit Birthday 2016
Also adds AWS Elastic Beanstalk local config file to .gitignore.
1
.gitignore
vendored
@@ -28,5 +28,6 @@ coverage
|
||||
coverage.html
|
||||
common/dist/scripts/*
|
||||
common/dist/sprites/habitrpg-shared.css
|
||||
.elasticbeanstalk/config.yml
|
||||
|
||||
test/spec/mocks/translations.js
|
||||
|
||||
764
common/dist/sprites/spritesmith-main-0.css
vendored
BIN
common/dist/sprites/spritesmith-main-0.png
vendored
|
Before Width: | Height: | Size: 274 KiB After Width: | Height: | Size: 274 KiB |
302
common/dist/sprites/spritesmith-main-3.css
vendored
@@ -24,13 +24,13 @@
|
||||
}
|
||||
.hair_base_9_red {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1352px -546px;
|
||||
background-position: -1352px -364px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.customize-option.hair_base_9_red {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1377px -561px;
|
||||
background-position: -1377px -379px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
@@ -2286,7 +2286,7 @@
|
||||
}
|
||||
.head_armoire_lunarCrown {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1352px -364px;
|
||||
background-position: -348px -182px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -2298,7 +2298,7 @@
|
||||
}
|
||||
.head_armoire_plagueDoctorHat {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -348px -182px;
|
||||
background-position: -1352px -546px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -2370,265 +2370,265 @@
|
||||
}
|
||||
.shop_armor_armoire_crystalCrescentRobes {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1435px -1547px;
|
||||
background-position: -132px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_armoire_dragonTamerArmor {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1394px -1547px;
|
||||
background-position: -91px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_armoire_gladiatorArmor {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1353px -1547px;
|
||||
background-position: -1649px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_armoire_goldenToga {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1312px -1547px;
|
||||
background-position: -1608px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_armoire_hornedIronArmor {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1271px -1547px;
|
||||
background-position: -1567px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_armoire_lunarArmor {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1230px -1547px;
|
||||
background-position: -1526px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_armoire_plagueDoctorOvercoat {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1189px -1547px;
|
||||
background-position: -1485px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_armoire_rancherRobes {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1148px -1547px;
|
||||
background-position: -1444px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_armoire_royalRobes {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1107px -1547px;
|
||||
background-position: -1403px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_armoire_shepherdRobes {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1066px -1547px;
|
||||
background-position: -1362px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_eyewear_armoire_plagueDoctorMask {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1025px -1547px;
|
||||
background-position: -1321px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_armoire_blackCat {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -984px -1547px;
|
||||
background-position: -1280px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_armoire_blueFloppyHat {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -943px -1547px;
|
||||
background-position: -1239px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_armoire_blueHairbow {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -902px -1547px;
|
||||
background-position: -1198px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_armoire_crystalCrescentHat {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -861px -1547px;
|
||||
background-position: -1157px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_armoire_dragonTamerHelm {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -820px -1547px;
|
||||
background-position: -1116px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_armoire_gladiatorHelm {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -779px -1547px;
|
||||
background-position: -1075px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_armoire_goldenLaurels {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -738px -1547px;
|
||||
background-position: -1034px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_armoire_hornedIronHelm {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -697px -1547px;
|
||||
background-position: -993px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_armoire_lunarCrown {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -656px -1547px;
|
||||
background-position: -952px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_armoire_orangeCat {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1625px -1456px;
|
||||
background-position: -911px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_armoire_plagueDoctorHat {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -574px -1547px;
|
||||
background-position: -870px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_armoire_rancherHat {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -533px -1547px;
|
||||
background-position: -829px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_armoire_redFloppyHat {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -492px -1547px;
|
||||
background-position: -788px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_armoire_redHairbow {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -369px -1547px;
|
||||
background-position: -306px -182px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_armoire_royalCrown {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -328px -1547px;
|
||||
background-position: -583px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_armoire_shepherdHeaddress {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -287px -1547px;
|
||||
background-position: -542px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_armoire_violetFloppyHat {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -246px -1547px;
|
||||
background-position: -501px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_armoire_yellowHairbow {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -205px -1547px;
|
||||
background-position: -460px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_shield_armoire_dragonTamerShield {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -164px -1547px;
|
||||
background-position: -419px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_shield_armoire_gladiatorShield {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -123px -1547px;
|
||||
background-position: -378px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_shield_armoire_midnightShield {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -82px -1547px;
|
||||
background-position: -337px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_shield_armoire_royalCane {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -41px -1547px;
|
||||
background-position: -296px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_weapon_armoire_basicCrossbow {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: 0px -1547px;
|
||||
background-position: -255px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_weapon_armoire_batWand {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1547px -1497px;
|
||||
background-position: -214px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_weapon_armoire_blueLongbow {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1547px -1456px;
|
||||
background-position: -173px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_weapon_armoire_crystalCrescentStaff {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1456px -1406px;
|
||||
background-position: -132px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_weapon_armoire_glowingSpear {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1456px -1365px;
|
||||
background-position: -91px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_weapon_armoire_goldWingStaff {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1365px -1315px;
|
||||
background-position: -1547px -1497px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_weapon_armoire_ironCrook {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1365px -1274px;
|
||||
background-position: -1547px -1456px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_weapon_armoire_lunarSceptre {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1274px -1224px;
|
||||
background-position: -1456px -1406px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_weapon_armoire_mythmakerSword {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1274px -1183px;
|
||||
background-position: -1456px -1365px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_weapon_armoire_rancherLasso {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1183px -1133px;
|
||||
background-position: -1365px -1315px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_weapon_armoire_shepherdsCrook {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1183px -1092px;
|
||||
background-position: -1365px -1274px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
@@ -2892,311 +2892,329 @@
|
||||
}
|
||||
.shop_armor_healer_1 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1092px -1042px;
|
||||
background-position: -1274px -1224px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_healer_2 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1092px -1001px;
|
||||
background-position: -1274px -1183px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_healer_3 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1001px -951px;
|
||||
background-position: -1183px -1133px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_healer_4 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1001px -910px;
|
||||
background-position: -1183px -1092px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_healer_5 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1666px -1456px;
|
||||
background-position: -1092px -1042px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_rogue_1 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -615px -1547px;
|
||||
background-position: -1092px -1001px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_rogue_2 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1625px -1497px;
|
||||
background-position: -306px -223px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_rogue_3 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1666px -1497px;
|
||||
background-position: -747px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_rogue_4 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -306px -182px;
|
||||
background-position: -364px -273px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_rogue_5 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -306px -223px;
|
||||
background-position: -364px -314px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_special_0 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -364px -273px;
|
||||
background-position: -455px -364px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_special_1 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -364px -314px;
|
||||
background-position: -455px -405px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_special_2 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -455px -364px;
|
||||
background-position: -546px -455px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_special_finnedOceanicArmor {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -455px -405px;
|
||||
background-position: -546px -496px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_warrior_1 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -546px -455px;
|
||||
background-position: -637px -546px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_warrior_2 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -546px -496px;
|
||||
background-position: -637px -587px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_warrior_3 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -637px -546px;
|
||||
background-position: -728px -637px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_warrior_4 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -637px -587px;
|
||||
background-position: -728px -678px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_warrior_5 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -728px -637px;
|
||||
background-position: -819px -728px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_wizard_1 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -728px -678px;
|
||||
background-position: -819px -769px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_wizard_2 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -819px -728px;
|
||||
background-position: -910px -819px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_wizard_3 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -819px -769px;
|
||||
background-position: -910px -860px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_wizard_4 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -910px -819px;
|
||||
background-position: -1001px -910px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_wizard_5 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -910px -860px;
|
||||
background-position: -1001px -951px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.slim_armor_healer_1 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1625px -1365px;
|
||||
background-position: 0px -1547px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_healer_2 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1625px -1274px;
|
||||
background-position: -1625px -1456px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_healer_3 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1625px -1183px;
|
||||
background-position: -1625px -1365px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_healer_4 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1625px -1092px;
|
||||
background-position: -1625px -1274px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_healer_5 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1534px -91px;
|
||||
background-position: -1625px -1183px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_rogue_1 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1534px 0px;
|
||||
background-position: -1625px -1092px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_rogue_2 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1365px -1365px;
|
||||
background-position: -1534px -91px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_rogue_3 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1274px -1365px;
|
||||
background-position: -1534px 0px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_rogue_4 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1183px -1365px;
|
||||
background-position: -1365px -1365px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_rogue_5 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1092px -1365px;
|
||||
background-position: -1274px -1365px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_special_2 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1001px -1365px;
|
||||
background-position: -1183px -1365px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_special_finnedOceanicArmor {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -910px -1365px;
|
||||
background-position: -1092px -1365px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_warrior_1 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -819px -1365px;
|
||||
background-position: -1001px -1365px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_warrior_2 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -728px -1365px;
|
||||
background-position: -910px -1365px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_warrior_3 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -637px -1365px;
|
||||
background-position: -819px -1365px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_warrior_4 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -546px -1365px;
|
||||
background-position: -728px -1365px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_warrior_5 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -455px -1365px;
|
||||
background-position: -637px -1365px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_wizard_1 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -364px -1365px;
|
||||
background-position: -546px -1365px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_wizard_2 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -273px -1365px;
|
||||
background-position: -455px -1365px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_wizard_3 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -182px -1365px;
|
||||
background-position: -364px -1365px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_wizard_4 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -91px -1365px;
|
||||
background-position: -273px -1365px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_wizard_5 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: 0px -1365px;
|
||||
background-position: -182px -1365px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.broad_armor_special_birthday {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1443px -1274px;
|
||||
background-position: -91px -1365px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.broad_armor_special_birthday2015 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1443px -1183px;
|
||||
background-position: 0px -1365px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.broad_armor_special_birthday2016 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1443px -1274px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.shop_armor_special_birthday {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -410px -1547px;
|
||||
background-position: -624px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_special_birthday2015 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -451px -1547px;
|
||||
background-position: -665px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_special_birthday2016 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -706px -1547px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.slim_armor_special_birthday {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1443px -1092px;
|
||||
background-position: -1443px -1183px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_special_birthday2015 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1443px -1092px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.slim_armor_special_birthday2016 {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1443px -1001px;
|
||||
width: 90px;
|
||||
@@ -3336,175 +3354,133 @@
|
||||
}
|
||||
.shop_armor_special_fall2015Healer {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1476px -1547px;
|
||||
background-position: -173px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_special_fall2015Mage {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1517px -1547px;
|
||||
background-position: -214px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_special_fall2015Rogue {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1558px -1547px;
|
||||
background-position: -255px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_special_fall2015Warrior {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1599px -1547px;
|
||||
background-position: -296px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_special_fallHealer {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -1640px -1547px;
|
||||
background-position: -337px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_special_fallMage {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: 0px -1588px;
|
||||
background-position: -378px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_special_fallRogue {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -41px -1588px;
|
||||
background-position: -419px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_armor_special_fallWarrior {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -82px -1588px;
|
||||
background-position: -460px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_special_fall2015Healer {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -123px -1588px;
|
||||
background-position: -501px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_special_fall2015Mage {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -164px -1588px;
|
||||
background-position: -542px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_special_fall2015Rogue {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -205px -1588px;
|
||||
background-position: -583px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_special_fall2015Warrior {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -246px -1588px;
|
||||
background-position: -624px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_special_fallHealer {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -287px -1588px;
|
||||
background-position: -665px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_special_fallMage {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -328px -1588px;
|
||||
background-position: -706px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_special_fallRogue {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -369px -1588px;
|
||||
background-position: -747px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_head_special_fallWarrior {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -410px -1588px;
|
||||
background-position: -788px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_shield_special_fall2015Healer {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -451px -1588px;
|
||||
background-position: -829px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_shield_special_fall2015Rogue {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -492px -1588px;
|
||||
background-position: -870px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_shield_special_fall2015Warrior {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -533px -1588px;
|
||||
background-position: -911px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_shield_special_fallHealer {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -574px -1588px;
|
||||
background-position: -952px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_shield_special_fallRogue {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -615px -1588px;
|
||||
background-position: -993px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_shield_special_fallWarrior {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -656px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_weapon_special_fall2015Healer {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -697px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_weapon_special_fall2015Mage {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -738px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_weapon_special_fall2015Rogue {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -779px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_weapon_special_fall2015Warrior {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -820px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_weapon_special_fallHealer {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -861px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_weapon_special_fallMage {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -902px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.shop_weapon_special_fallRogue {
|
||||
background-image: url(spritesmith-main-3.png);
|
||||
background-position: -943px -1588px;
|
||||
background-position: -1034px -1588px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
BIN
common/dist/sprites/spritesmith-main-3.png
vendored
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB |
956
common/dist/sprites/spritesmith-main-4.css
vendored
BIN
common/dist/sprites/spritesmith-main-4.png
vendored
|
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 130 KiB |
946
common/dist/sprites/spritesmith-main-5.css
vendored
BIN
common/dist/sprites/spritesmith-main-5.png
vendored
|
Before Width: | Height: | Size: 369 KiB After Width: | Height: | Size: 371 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 420 B |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 8.8 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.1 KiB |
@@ -260,6 +260,8 @@
|
||||
"armorSpecialBirthdayNotes": "Happy Birthday, Habitica! Wear these Absurd Party Robes to celebrate this wonderful day. Confers no benefit.",
|
||||
"armorSpecialBirthday2015Text": "Silly Party Robes",
|
||||
"armorSpecialBirthday2015Notes": "Happy Birthday, Habitica! Wear these Silly Party Robes to celebrate this wonderful day. Confers no benefit.",
|
||||
"armorSpecialBirthday2016Text": "Ridiculous Party Robes",
|
||||
"armorSpecialBirthday2016Notes": "Happy Birthday, Habitica! Wear these Ridiculous Party Robes to celebrate this wonderful day. Confers no benefit.",
|
||||
|
||||
"armorSpecialGaymerxText": "Rainbow Warrior Armor",
|
||||
"armorSpecialGaymerxNotes": "In celebration of the GaymerX Conference, this special armor is decorated with a radiant, colorful rainbow pattern! GaymerX is a game convention celebrating LGTBQ and gaming and is open to everyone.",
|
||||
|
||||
@@ -160,6 +160,12 @@
|
||||
"thankyou3": "I'm very grateful - thank you!",
|
||||
"thankyouCardAchievementTitle": "Greatly Grateful",
|
||||
"thankyouCardAchievementText": "Thanks for being thankful! Sent or received <%= cards %> Thank-You cards.",
|
||||
"birthdayCard": "Birthday Card",
|
||||
"birthdayCardExplanation": "You both receive the Birthday Bonanza achievement!",
|
||||
"birthdayCardNotes": "Send a birthday card to a party member.",
|
||||
"birthday0": "Happy birthday to you!",
|
||||
"birthdayCardAchievementTitle": "Birthday Bonanza",
|
||||
"birthdayCardAchievementText": "Many happy returns! Sent or received <%= cards %> birthday cards.",
|
||||
"streakAchievement": "You earned a streak achievement!",
|
||||
"firstStreakAchievement": "21-Day Streak",
|
||||
"streakAchievementCount": "<%= streaks %> 21-Day Streaks",
|
||||
|
||||
@@ -23,6 +23,7 @@ export const EVENTS = {
|
||||
fall2015: { start: '2015-09-21', end: '2015-11-01' },
|
||||
gaymerx: { start: '2015-12-01', end: '2015-12-14' },
|
||||
winter2016: { start: '2015-12-18', end: '2016-02-02' },
|
||||
birthday2016: { start: '2016-01-29', end: '2016-02-02' },
|
||||
};
|
||||
|
||||
export const GEAR_TYPES = [
|
||||
|
||||
@@ -63,7 +63,6 @@ let armor = {
|
||||
},
|
||||
},
|
||||
birthday: {
|
||||
event: EVENTS.birthday,
|
||||
text: t('armorSpecialBirthdayText'),
|
||||
notes: t('armorSpecialBirthdayNotes'), value: 0,
|
||||
},
|
||||
@@ -359,6 +358,13 @@ let armor = {
|
||||
value: 90,
|
||||
con: 15,
|
||||
},
|
||||
birthday2016: {
|
||||
event: EVENTS.birthday2016,
|
||||
text: t('armorSpecialBirthday2016Text'),
|
||||
notes: t('armorSpecialBirthday2016Notes'),
|
||||
value: 0,
|
||||
canOwn: ownsItem('armor_special_birthday2016'),
|
||||
},
|
||||
};
|
||||
|
||||
let back = {
|
||||
|
||||
@@ -662,7 +662,42 @@ api.spells = {
|
||||
}
|
||||
return user.stats.gp -= 10;
|
||||
}
|
||||
}
|
||||
},
|
||||
birthday: {
|
||||
text: t('birthdayCard'),
|
||||
mana: 0,
|
||||
value: 10,
|
||||
immediateUse: true,
|
||||
silent: true,
|
||||
target: 'user',
|
||||
notes: t('birthdayCardNotes'),
|
||||
cast: function(user, target) {
|
||||
var base;
|
||||
if (user === target) {
|
||||
if ((base = user.achievements).birthday == null) {
|
||||
base.birthday = 0;
|
||||
}
|
||||
user.achievements.birthday++;
|
||||
} else {
|
||||
_.each([user, target], function(t) {
|
||||
var base1;
|
||||
if ((base1 = t.achievements).birthday == null) {
|
||||
base1.birthday = 0;
|
||||
}
|
||||
return t.achievements.birthday++;
|
||||
});
|
||||
}
|
||||
if (!target.items.special.birthdayReceived) {
|
||||
target.items.special.birthdayReceived = [];
|
||||
}
|
||||
target.items.special.birthdayReceived.push(user.profile.name);
|
||||
target.flags.cardReceived = true;
|
||||
if (typeof target.markModified === "function") {
|
||||
target.markModified('items.special.birthdayReceived');
|
||||
}
|
||||
return user.stats.gp -= 10;
|
||||
}
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
@@ -684,7 +719,12 @@ api.cardTypes = {
|
||||
valentine: {
|
||||
key: 'valentine',
|
||||
messageOptions: 4
|
||||
}
|
||||
},
|
||||
birthday: {
|
||||
key: 'birthday',
|
||||
messageOptions: 1,
|
||||
yearRound: true,
|
||||
},
|
||||
};
|
||||
|
||||
_.each(api.spells, function(spellClass) {
|
||||
@@ -1139,91 +1179,51 @@ api.questMounts = _.transform(api.questEggs, function(m, egg) {
|
||||
api.food = {
|
||||
Meat: {
|
||||
text: t('foodMeat'),
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
target: 'Base',
|
||||
article: ''
|
||||
},
|
||||
Milk: {
|
||||
text: t('foodMilk'),
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
target: 'White',
|
||||
article: ''
|
||||
},
|
||||
Potatoe: {
|
||||
text: t('foodPotatoe'),
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
target: 'Desert',
|
||||
article: 'a '
|
||||
},
|
||||
Strawberry: {
|
||||
text: t('foodStrawberry'),
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
target: 'Red',
|
||||
article: 'a '
|
||||
},
|
||||
Chocolate: {
|
||||
text: t('foodChocolate'),
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
target: 'Shade',
|
||||
article: ''
|
||||
},
|
||||
Fish: {
|
||||
text: t('foodFish'),
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
target: 'Skeleton',
|
||||
article: 'a '
|
||||
},
|
||||
RottenMeat: {
|
||||
text: t('foodRottenMeat'),
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
target: 'Zombie',
|
||||
article: ''
|
||||
},
|
||||
CottonCandyPink: {
|
||||
text: t('foodCottonCandyPink'),
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
target: 'CottonCandyPink',
|
||||
article: ''
|
||||
},
|
||||
CottonCandyBlue: {
|
||||
text: t('foodCottonCandyBlue'),
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
target: 'CottonCandyBlue',
|
||||
article: ''
|
||||
},
|
||||
Honey: {
|
||||
text: t('foodHoney'),
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
target: 'Golden',
|
||||
article: ''
|
||||
},
|
||||
@@ -1238,51 +1238,91 @@ api.food = {
|
||||
Cake_Skeleton: {
|
||||
text: t('foodCakeSkeleton'),
|
||||
target: 'Skeleton',
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
article: ''
|
||||
},
|
||||
Cake_Base: {
|
||||
text: t('foodCakeBase'),
|
||||
target: 'Base',
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
article: ''
|
||||
},
|
||||
Cake_CottonCandyBlue: {
|
||||
text: t('foodCakeCottonCandyBlue'),
|
||||
target: 'CottonCandyBlue',
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
article: ''
|
||||
},
|
||||
Cake_CottonCandyPink: {
|
||||
text: t('foodCakeCottonCandyPink'),
|
||||
target: 'CottonCandyPink',
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
article: ''
|
||||
},
|
||||
Cake_Shade: {
|
||||
text: t('foodCakeShade'),
|
||||
target: 'Shade',
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
article: ''
|
||||
},
|
||||
Cake_White: {
|
||||
text: t('foodCakeWhite'),
|
||||
target: 'White',
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
article: ''
|
||||
},
|
||||
Cake_Golden: {
|
||||
text: t('foodCakeGolden'),
|
||||
target: 'Golden',
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
article: ''
|
||||
},
|
||||
Cake_Zombie: {
|
||||
text: t('foodCakeZombie'),
|
||||
target: 'Zombie',
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
article: ''
|
||||
},
|
||||
Cake_Desert: {
|
||||
text: t('foodCakeDesert'),
|
||||
target: 'Desert',
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
article: ''
|
||||
},
|
||||
Cake_Red: {
|
||||
text: t('foodCakeRed'),
|
||||
target: 'Red',
|
||||
canBuy: (function() {
|
||||
return true;
|
||||
}),
|
||||
canDrop: true,
|
||||
article: ''
|
||||
},
|
||||
Candy_Skeleton: {
|
||||
|
||||
85
migrations/20160129_habit_birthday.js
Normal file
@@ -0,0 +1,85 @@
|
||||
var migrationName = '20160129_habit_birthday.js';
|
||||
var authorName = 'Sabe'; // in case script author needs to know when their ...
|
||||
var authorUuid = '7f14ed62-5408-4e1b-be83-ada62d504931'; //... own data is done
|
||||
|
||||
/*
|
||||
* Award 2016 party robes if user has 2015 robes, 2015 robes if they have the 2014 robes,
|
||||
* and 2014 robes otherwise
|
||||
*/
|
||||
|
||||
var dbserver = 'localhost:27017'; // FOR TEST DATABASE
|
||||
// var dbserver = 'username:password@ds031379-a0.mongolab.com:31379'; // FOR PRODUCTION DATABASE
|
||||
var dbname = 'habitrpg';
|
||||
|
||||
var mongo = require('mongoskin');
|
||||
var _ = require('lodash');
|
||||
|
||||
var dbUsers = mongo.db(dbserver + '/' + dbname + '?auto_reconnect').collection('users');
|
||||
|
||||
// specify a query to limit the affected users (empty for all users):
|
||||
var query = {
|
||||
};
|
||||
|
||||
// specify fields we are interested in to limit retrieved data (empty if we're not reading data):
|
||||
var fields = {
|
||||
'items.gear.owned': 1,
|
||||
};
|
||||
|
||||
console.warn('Updating users...');
|
||||
var progressCount = 1000;
|
||||
var count = 0;
|
||||
dbUsers.findEach(query, fields, {batchSize:250}, function(err, user) {
|
||||
if (err) { return exiting(1, 'ERROR! ' + err); }
|
||||
if (!user) {
|
||||
console.warn('All appropriate users found and modified.');
|
||||
return displayData();
|
||||
}
|
||||
count++;
|
||||
|
||||
// specify user data to change:
|
||||
var set = {'migration':migrationName};
|
||||
if (user.items && user.items.gear && user.items.gear.owned && user.items.gear.owned.hasOwnProperty('armor_special_birthday2015')) {
|
||||
set['items.gear.owned.armor_special_birthday2016'] = false;
|
||||
} else if (user.items && user.items.gear && user.items.gear.owned && user.items.gear.owned.hasOwnProperty('armor_special_birthday')) {
|
||||
set['items.gear.owned.armor_special_birthday2015'] = false;
|
||||
} else {
|
||||
set['items.gear.owned.armor_special_birthday'] = false;
|
||||
}
|
||||
|
||||
var inc = {
|
||||
'items.food.Cake_Skeleton':1,
|
||||
'items.food.Cake_Base':1,
|
||||
'items.food.Cake_CottonCandyBlue':1,
|
||||
'items.food.Cake_CottonCandyPink':1,
|
||||
'items.food.Cake_Shade':1,
|
||||
'items.food.Cake_White':1,
|
||||
'items.food.Cake_Golden':1,
|
||||
'items.food.Cake_Zombie':1,
|
||||
'items.food.Cake_Desert':1,
|
||||
'items.food.Cake_Red':1,
|
||||
'achievements.habitBirthdays':1
|
||||
};
|
||||
|
||||
dbUsers.update({_id:user._id}, {$set:set});
|
||||
dbUsers.update({_id:user._id}, {$inc:inc});
|
||||
|
||||
if (count%progressCount == 0) console.warn(count + ' ' + user._id);
|
||||
if (user._id == authorUuid) console.warn(authorName + ' processed');
|
||||
});
|
||||
|
||||
|
||||
function displayData() {
|
||||
console.warn('\n' + count + ' users processed\n');
|
||||
return exiting(0);
|
||||
}
|
||||
|
||||
|
||||
function exiting(code, msg) {
|
||||
code = code || 0; // 0 = success
|
||||
if (code && !msg) { msg = 'ERROR!'; }
|
||||
if (msg) {
|
||||
if (code) { console.error(msg); }
|
||||
else { console.log( msg); }
|
||||
}
|
||||
process.exit(code);
|
||||
}
|
||||
@@ -112,3 +112,6 @@ li.spaced
|
||||
|
||||
.reduce-top-margin
|
||||
margin-top: -10px
|
||||
|
||||
.slight-right-margin
|
||||
margin-right: 1em
|
||||
|
||||
@@ -58,7 +58,8 @@ var UserSchema = new Schema({
|
||||
habiticaDays: Number,
|
||||
greeting: Number,
|
||||
thankyou: Number,
|
||||
costumeContests: Number
|
||||
costumeContests: Number,
|
||||
birthday: Number
|
||||
},
|
||||
auth: {
|
||||
blocked: Boolean,
|
||||
@@ -243,7 +244,9 @@ var UserSchema = new Schema({
|
||||
greeting: Number,
|
||||
greetingReceived: Array,
|
||||
thankyou: Number,
|
||||
thankyouReceived: Array
|
||||
thankyouReceived: Array,
|
||||
birthday: Number,
|
||||
birthdayReceived: Array
|
||||
},
|
||||
|
||||
// -------------- Animals -------------------
|
||||
|
||||
@@ -1,22 +1,59 @@
|
||||
h2 1/26/2016 - JANUARY SUBSCRIBER ITEM AND AVATAR CUSTOMIZATION IN THE ANDROID APP
|
||||
h2 1/29/2016 - HABITICA BIRTHDAY BASH: CAKE, ACHIEVEMENTS, BIRTHDAY CARDS, AND PARTY ROBES! PLUS, LAST CHANCE FOR JANUARY AND WINTER WONDERLAND ITEMS
|
||||
hr
|
||||
tr
|
||||
td
|
||||
.promo_mystery_201601.pull-right
|
||||
h3 January Subscriber Item
|
||||
p The January Subscriber Item has been revealed: the Champion of Resolution Item Set! All January subscribers will receive the Resolution Slayer and the Helm of True Resolve. You still have five days to <a href='/#/options/settings/subscription'>subscribe</a> and receive the item set! Thank you so much for your support - we really do rely on you to keep Habitica free to use and running smoothly.
|
||||
p.small.muted by Lemoness
|
||||
.npc_matt.pull-right
|
||||
h3 Habitica Birthday Bash
|
||||
p January 31st is Habitica's Birthday, and this year we have something extra-special to enjoy: Habitica has hit over one million users! Thank you so much for being here with us - it means a lot.
|
||||
br
|
||||
p Now come join us and the NPCs as we celebrate!
|
||||
tr
|
||||
td
|
||||
h3 Android App Update: Avatar Customization
|
||||
p We've released an <a href='https://play.google.com/store/apps/details?id=com.habitrpg.android.habitica&hl=en' target='_blank'>update to the Android app</a> including... AVATAR CUSTOMIZATION! Now you can edit your avatar on the go. We've also crushed a bunch of bugs and crashes, so be sure to download it now.
|
||||
p.small.muted by Viirus
|
||||
.Pet_Food_Cake_Base.pull-left.slight-right-margin
|
||||
h3 Cake for Everybody!
|
||||
p In honor of the festivities, everyone has been awarded an assortment of cake to feed to your pets! Yum, yum. Plus, for the next two days <a href='/#/options/inventory/drops'>Alexander the Merchant</a> is now selling cake in his shop, and cake will sometimes drop when you complete your tasks. Cake works just like normal pet food, but if you want to know what type of pet likes each slice, <a href='http://habitica.wikia.com/wiki/Food' target='_blank'>the wiki has spoilers</a>.
|
||||
tr
|
||||
td
|
||||
.shop_armor_special_birthday2016.pull-left.slight-right-margin
|
||||
h3 Party Robes
|
||||
p Until February 1st only, there are Party Robes available for free in the <a href='/#/tasks'>Rewards column</a>! Don them with pride.
|
||||
tr
|
||||
td
|
||||
.achievement-habitBirthday2x.pull-right
|
||||
h3 Birthday Bash Achievement
|
||||
p In honor of Habitica's birthday, everyone has been awarded the Habitica Birthday Bash achievement! This achievement stacks for each Birthday Bash you celebrate with us.
|
||||
tr
|
||||
td
|
||||
.inventory_special_birthday.pull-right
|
||||
h3 Birthday Cards
|
||||
p You can now send <a href='/#/options/inventory/drops'>Birthday Cards</a> to your party mates! If you do so, you'll both get the Birthday Bonanza badge. These birthday cards will be available year-round for 10 Gold each.
|
||||
tr
|
||||
td
|
||||
.promo_mystery_201601.pull-right
|
||||
h3 Last Chance for January Item Set
|
||||
p Reminder: this is the final day to <a href='/#/options/settings/subscription'>subscribe</a> and receive the Champion of Resolution Item Set! If you want the Resolution Slayer or the Helm of True Resolve, now's the time! Thanks so much for your support <3
|
||||
tr
|
||||
td
|
||||
h3 Last Chance for Winter Wonderland Outfits & Hair Colors
|
||||
p On February 1st, everything will be back to normal in Habitica, so if you still have any remaining Winter Wonderland Items that you want to buy, you'd better do it now! The <a href='/#/options/inventory/seasonalshop'>Seasonal Edition items</a> and <a href='/#/options/profile/avatar'>Hair Colors</a> won't be back until next December, 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 1/26/2016 - JANUARY SUBSCRIBER ITEM AND AVATAR CUSTOMIZATION IN THE ANDROID APP
|
||||
tr
|
||||
td
|
||||
.promo_mystery_201601.pull-right
|
||||
h3 January Subscriber Item
|
||||
p The January Subscriber Item has been revealed: the Champion of Resolution Item Set! All January subscribers will receive the Resolution Slayer and the Helm of True Resolve. You still have five days to <a href='/#/options/settings/subscription'>subscribe</a> and receive the item set! Thank you so much for your support - we really do rely on you to keep Habitica free to use and running smoothly.
|
||||
p.small.muted by Lemoness
|
||||
tr
|
||||
td
|
||||
h3 Android App Update: Avatar Customization
|
||||
p We've released an <a href='https://play.google.com/store/apps/details?id=com.habitrpg.android.habitica&hl=en' target='_blank'>update to the Android app</a> including... AVATAR CUSTOMIZATION! Now you can edit your avatar on the go. We've also crushed a bunch of bugs and crashes, so be sure to download it now.
|
||||
p.small.muted by Viirus
|
||||
h2 1/20/2016 - NEW STAFF MEMBER, NEW YEAR'S RESOLUTION BLOG POSTS, AND RESOLUTION CHALLENGE
|
||||
tr
|
||||
td
|
||||
|
||||
@@ -238,7 +238,7 @@ div(ng-if='::profile.achievements.costumeContests')
|
||||
!=env.t('costumeContestTextPlural', {number: "{{::profile.achievements.costumeContests}}"})
|
||||
hr
|
||||
|
||||
each card in ['greeting', 'thankyou', 'nye', 'valentine']
|
||||
each card in ['greeting', 'thankyou', 'nye', 'valentine', 'birthday']
|
||||
div(ng-if='::profile.achievements.#{card}')
|
||||
div(class='achievement achievement-#{card}')
|
||||
h5=env.t(card + 'CardAchievementTitle')
|
||||
|
||||