diff --git a/Gruntfile.js b/Gruntfile.js index 5b03657165..be40b40816 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -140,7 +140,7 @@ module.exports = function(grunt) { grunt.registerTask('test:prepare:translations', function() { require('coffee-script'); - var i18n = require('./website/src/i18n'), + var i18n = require('./website/src/libs/i18n'), fs = require('fs'); fs.writeFileSync('test/spec/mocks/translations.js', "if(!window.env) window.env = {};\n" + diff --git a/common/css/index.css b/common/css/index.css index e184b14328..ba74c066b0 100644 --- a/common/css/index.css +++ b/common/css/index.css @@ -1,9 +1,9 @@ -/* Comment out for holiday events +/* Comment out for holiday events */ .npc_ian { background: url("/common/img/sprites/npc_ian.gif") no-repeat; width: 78px; height: 135px; -} */ +} .quest_burnout { background: url("/common/img/sprites/quest_burnout.gif") no-repeat; diff --git a/common/dist/sprites/spritesmith-main-5.css b/common/dist/sprites/spritesmith-main-5.css index f2e25e2caa..fce246faa4 100644 --- a/common/dist/sprites/spritesmith-main-5.css +++ b/common/dist/sprites/spritesmith-main-5.css @@ -1,84 +1,84 @@ .GrimReaper { background-image: url(spritesmith-main-5.png); - background-position: -1642px -255px; + background-position: -1642px -437px; width: 57px; height: 66px; } .Pet_Currency_Gem { background-image: url(spritesmith-main-5.png); - background-position: -1782px -867px; + background-position: -1782px -1283px; width: 45px; height: 39px; } .Pet_Currency_Gem1x { background-image: url(spritesmith-main-5.png); - background-position: -1815px -1316px; + background-position: -1815px -1732px; width: 15px; height: 13px; } .Pet_Currency_Gem2x { background-image: url(spritesmith-main-5.png); - background-position: -1782px -1479px; + background-position: -1700px -559px; width: 30px; height: 26px; } .PixelPaw-Gold { background-image: url(spritesmith-main-5.png); - background-position: -1642px -979px; + background-position: -1642px -1109px; width: 51px; height: 51px; } .PixelPaw { background-image: url(spritesmith-main-5.png); - background-position: -1642px -927px; + background-position: -1642px -1161px; width: 51px; height: 51px; } .PixelPaw002 { background-image: url(spritesmith-main-5.png); - background-position: -1642px -1031px; + background-position: -1642px -1213px; width: 51px; height: 51px; } .avatar_floral_healer { background-image: url(spritesmith-main-5.png); - background-position: -1536px -1223px; + background-position: -1536px -1175px; width: 99px; height: 99px; } .avatar_floral_rogue { background-image: url(spritesmith-main-5.png); - background-position: -1536px -923px; + background-position: -1536px -1375px; width: 99px; height: 99px; } .avatar_floral_warrior { background-image: url(spritesmith-main-5.png); - background-position: -1536px -1123px; + background-position: -1536px -1075px; width: 99px; height: 99px; } .avatar_floral_wizard { background-image: url(spritesmith-main-5.png); - background-position: -1536px -1023px; + background-position: -1536px -1275px; width: 99px; height: 99px; } .inventory_present { background-image: url(spritesmith-main-5.png); - background-position: -1733px -260px; + background-position: -1733px -416px; width: 48px; height: 51px; } .inventory_present_01 { background-image: url(spritesmith-main-5.png); - background-position: -1733px -416px; + background-position: -1733px -468px; width: 48px; height: 51px; } .inventory_present_02 { background-image: url(spritesmith-main-5.png); - background-position: -1733px -468px; + background-position: -1733px -520px; width: 48px; height: 51px; } @@ -156,67 +156,67 @@ } .inventory_special_fortify { background-image: url(spritesmith-main-5.png); - background-position: -1642px -872px; + background-position: -1642px -504px; width: 57px; height: 54px; } .inventory_special_greeting { background-image: url(spritesmith-main-5.png); - background-position: -1642px -432px; + background-position: -1642px -944px; width: 57px; height: 54px; } .inventory_special_nye { background-image: url(spritesmith-main-5.png); - background-position: -1642px -817px; + background-position: -1642px -999px; width: 57px; height: 54px; } .inventory_special_opaquePotion { background-image: url(spritesmith-main-5.png); - background-position: -1782px -1030px; + background-position: -1782px -1528px; width: 40px; height: 40px; } .inventory_special_seafoam { background-image: url(spritesmith-main-5.png); - background-position: -1642px -762px; + background-position: -1642px -779px; width: 57px; height: 54px; } .inventory_special_shinySeed { background-image: url(spritesmith-main-5.png); - background-position: -1642px -322px; + background-position: -1642px -724px; width: 57px; height: 54px; } .inventory_special_snowball { background-image: url(spritesmith-main-5.png); - background-position: -1642px -652px; + background-position: -1642px -614px; width: 57px; height: 54px; } .inventory_special_spookDust { background-image: url(spritesmith-main-5.png); - background-position: -1642px -597px; + background-position: -1642px -1054px; width: 57px; height: 54px; } .inventory_special_thankyou { background-image: url(spritesmith-main-5.png); - background-position: -1642px -542px; + background-position: -1642px -834px; width: 57px; height: 54px; } .inventory_special_trinket { background-image: url(spritesmith-main-5.png); - background-position: -1519px -1662px; + background-position: -1733px -312px; width: 48px; height: 51px; } .inventory_special_valentine { background-image: url(spritesmith-main-5.png); - background-position: -1642px -487px; + background-position: -1642px -669px; width: 57px; height: 54px; } @@ -228,13 +228,13 @@ } .pet_key { background-image: url(spritesmith-main-5.png); - background-position: -1642px -707px; + background-position: -1642px -889px; width: 57px; height: 54px; } .rebirth_orb { background-image: url(spritesmith-main-5.png); - background-position: -1642px -377px; + background-position: -1642px -559px; width: 57px; height: 54px; } @@ -246,85 +246,67 @@ } .shop_armoire { background-image: url(spritesmith-main-5.png); - background-position: -1782px -989px; + background-position: -1782px -1405px; width: 40px; height: 40px; } .snowman { background-image: url(spritesmith-main-5.png); - background-position: -1536px -1414px; + background-position: -1642px -273px; width: 90px; height: 90px; } .spookman { background-image: url(spritesmith-main-5.png); - background-position: -1642px 0px; + background-position: -1642px -182px; width: 90px; height: 90px; } .zzz { background-image: url(spritesmith-main-5.png); - background-position: -1782px -948px; + background-position: -1782px -1364px; width: 40px; height: 40px; } .zzz_light { background-image: url(spritesmith-main-5.png); - background-position: -1782px -907px; + background-position: -1782px -1323px; width: 40px; height: 40px; } .npc_alex { background-image: url(spritesmith-main-5.png); - background-position: 0px -1251px; + background-position: -1121px -1070px; width: 162px; height: 138px; } .npc_bailey { background-image: url(spritesmith-main-5.png); - background-position: -1642px -182px; - width: 54px; + background-position: -1642px -364px; + width: 60px; height: 72px; } .npc_daniel { background-image: url(spritesmith-main-5.png); - background-position: -625px -1251px; + background-position: -163px -1251px; width: 135px; height: 123px; } -.npc_daniel_broken { - background-image: url(spritesmith-main-5.png); - background-position: -489px -1251px; - width: 135px; - height: 123px; -} -.npc_ian { - background-image: url(spritesmith-main-5.png); - background-position: -1536px -666px; - width: 75px; - height: 135px; -} -.npc_ian_broken { - background-image: url(spritesmith-main-5.png); - background-position: -1536px -530px; - width: 75px; - height: 135px; -} .npc_justin { background-image: url(spritesmith-main-5.png); - background-position: -1536px -802px; + background-position: -1536px -954px; width: 84px; height: 120px; } .npc_justin_head { background-image: url(spritesmith-main-5.png); - background-position: -1782px -1276px; + background-position: -1782px -1692px; width: 36px; height: 39px; } .npc_matt { background-image: url(spritesmith-main-5.png); - background-position: -1322px -815px; + background-position: -1322px -954px; width: 195px; height: 138px; } @@ -336,223 +318,211 @@ } .npc_timetravelers_active { background-image: url(spritesmith-main-5.png); - background-position: -1322px -954px; + background-position: -1322px -815px; width: 195px; height: 138px; } .npc_tyler { background-image: url(spritesmith-main-5.png); - background-position: -1536px -1323px; + background-position: -1642px 0px; width: 90px; height: 90px; } -.seasonalshop_broken { - background-image: url(spritesmith-main-5.png); - background-position: -163px -1251px; - width: 162px; - height: 138px; -} .seasonalshop_closed { background-image: url(spritesmith-main-5.png); - background-position: -1121px -1070px; - width: 162px; - height: 138px; -} -.seasonalshop_open { - background-image: url(spritesmith-main-5.png); - background-position: -326px -1251px; + background-position: 0px -1251px; width: 162px; height: 138px; } .inventory_quest_scroll_atom1 { background-image: url(spritesmith-main-5.png); - background-position: -588px -1662px; + background-position: -1176px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_atom1_locked { background-image: url(spritesmith-main-5.png); - background-position: -441px -1662px; + background-position: -1127px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_atom2 { background-image: url(spritesmith-main-5.png); - background-position: -343px -1662px; + background-position: -1078px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_atom2_locked { background-image: url(spritesmith-main-5.png); - background-position: -294px -1662px; + background-position: -1029px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_atom3 { background-image: url(spritesmith-main-5.png); - background-position: -147px -1662px; + background-position: -882px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_atom3_locked { background-image: url(spritesmith-main-5.png); - background-position: -98px -1662px; + background-position: -833px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_basilist { background-image: url(spritesmith-main-5.png); - background-position: -49px -1662px; + background-position: -784px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_bunny { background-image: url(spritesmith-main-5.png); - background-position: -245px -1610px; + background-position: -735px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_cheetah { background-image: url(spritesmith-main-5.png); - background-position: -196px -1610px; + background-position: -637px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_dilatoryDistress1 { background-image: url(spritesmith-main-5.png); - background-position: -147px -1610px; + background-position: -588px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_dilatoryDistress2 { background-image: url(spritesmith-main-5.png); - background-position: -98px -1610px; + background-position: -441px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_dilatoryDistress2_locked { background-image: url(spritesmith-main-5.png); - background-position: -49px -1610px; + background-position: -392px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_dilatoryDistress3 { background-image: url(spritesmith-main-5.png); - background-position: 0px -1610px; + background-position: -343px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_dilatoryDistress3_locked { background-image: url(spritesmith-main-5.png); - background-position: -1642px -1499px; + background-position: -294px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_dilatory_derby { background-image: url(spritesmith-main-5.png); - background-position: -1642px -1447px; + background-position: -147px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_egg { background-image: url(spritesmith-main-5.png); - background-position: -1733px -520px; + background-position: -98px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_evilsanta { background-image: url(spritesmith-main-5.png); - background-position: -294px -1610px; + background-position: -49px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_evilsanta2 { background-image: url(spritesmith-main-5.png); - background-position: -196px -1662px; + background-position: -1465px -1303px; width: 48px; height: 51px; } .inventory_quest_scroll_frog { background-image: url(spritesmith-main-5.png); - background-position: -392px -1662px; + background-position: -1465px -1251px; width: 48px; height: 51px; } .inventory_quest_scroll_ghost_stag { background-image: url(spritesmith-main-5.png); - background-position: -490px -1662px; + background-position: -1642px -1473px; width: 48px; height: 51px; } .inventory_quest_scroll_goldenknight1 { background-image: url(spritesmith-main-5.png); - background-position: -637px -1662px; + background-position: -1642px -1421px; width: 48px; height: 51px; } .inventory_quest_scroll_goldenknight1_locked { background-image: url(spritesmith-main-5.png); - background-position: -686px -1662px; + background-position: -1642px -1369px; width: 48px; height: 51px; } .inventory_quest_scroll_goldenknight2 { background-image: url(spritesmith-main-5.png); - background-position: -735px -1662px; + background-position: -1642px -1317px; width: 48px; height: 51px; } .inventory_quest_scroll_goldenknight2_locked { background-image: url(spritesmith-main-5.png); - background-position: -784px -1662px; + background-position: -1642px -1265px; width: 48px; height: 51px; } .inventory_quest_scroll_goldenknight3 { background-image: url(spritesmith-main-5.png); - background-position: -833px -1662px; + background-position: -1782px -728px; width: 48px; height: 51px; } .inventory_quest_scroll_goldenknight3_locked { background-image: url(spritesmith-main-5.png); - background-position: -882px -1662px; + background-position: -1733px -988px; width: 48px; height: 51px; } .inventory_quest_scroll_gryphon { background-image: url(spritesmith-main-5.png); - background-position: -931px -1662px; + background-position: 0px -1610px; width: 48px; height: 51px; } .inventory_quest_scroll_harpy { background-image: url(spritesmith-main-5.png); - background-position: -980px -1662px; + background-position: -196px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_hedgehog { background-image: url(spritesmith-main-5.png); - background-position: -1029px -1662px; + background-position: -490px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_horse { background-image: url(spritesmith-main-5.png); - background-position: -1078px -1662px; + background-position: -686px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_kraken { background-image: url(spritesmith-main-5.png); - background-position: -1127px -1662px; + background-position: -931px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_moonstone1 { background-image: url(spritesmith-main-5.png); - background-position: -1176px -1662px; + background-position: -980px -1662px; width: 48px; height: 51px; } @@ -594,103 +564,103 @@ } .inventory_quest_scroll_owl { background-image: url(spritesmith-main-5.png); - background-position: -1568px -1662px; + background-position: -1519px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_penguin { background-image: url(spritesmith-main-5.png); - background-position: -1617px -1662px; + background-position: -1568px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_rat { background-image: url(spritesmith-main-5.png); - background-position: -1666px -1662px; + background-position: -1617px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_rock { background-image: url(spritesmith-main-5.png); - background-position: -1733px 0px; + background-position: -1666px -1662px; width: 48px; height: 51px; } .inventory_quest_scroll_rooster { background-image: url(spritesmith-main-5.png); - background-position: -1733px -52px; + background-position: -1733px 0px; width: 48px; height: 51px; } .inventory_quest_scroll_sheep { background-image: url(spritesmith-main-5.png); - background-position: -1733px -104px; + background-position: -1733px -52px; width: 48px; height: 51px; } .inventory_quest_scroll_slime { background-image: url(spritesmith-main-5.png); - background-position: -1733px -156px; + background-position: -1733px -104px; width: 48px; height: 51px; } .inventory_quest_scroll_spider { background-image: url(spritesmith-main-5.png); - background-position: -1733px -208px; + background-position: -1733px -156px; width: 48px; height: 51px; } .inventory_quest_scroll_trex { background-image: url(spritesmith-main-5.png); - background-position: -1733px -312px; + background-position: -1733px -208px; width: 48px; height: 51px; } .inventory_quest_scroll_trex_undead { background-image: url(spritesmith-main-5.png); - background-position: -1733px -364px; + background-position: -1733px -260px; width: 48px; height: 51px; } .inventory_quest_scroll_vice1 { background-image: url(spritesmith-main-5.png); - background-position: -1642px -1083px; + background-position: -1733px -364px; width: 48px; height: 51px; } .inventory_quest_scroll_vice1_locked { background-image: url(spritesmith-main-5.png); - background-position: -1642px -1135px; + background-position: -1127px -1714px; width: 48px; height: 51px; } .inventory_quest_scroll_vice2 { background-image: url(spritesmith-main-5.png); - background-position: -1642px -1187px; + background-position: -1176px -1714px; width: 48px; height: 51px; } .inventory_quest_scroll_vice2_locked { background-image: url(spritesmith-main-5.png); - background-position: -1642px -1239px; + background-position: -1225px -1714px; width: 48px; height: 51px; } .inventory_quest_scroll_vice3 { background-image: url(spritesmith-main-5.png); - background-position: -1642px -1291px; + background-position: -1274px -1714px; width: 48px; height: 51px; } .inventory_quest_scroll_vice3_locked { background-image: url(spritesmith-main-5.png); - background-position: -1642px -1343px; + background-position: -1323px -1714px; width: 48px; height: 51px; } .inventory_quest_scroll_whale { background-image: url(spritesmith-main-5.png); - background-position: -1642px -1395px; + background-position: -1372px -1714px; width: 48px; height: 51px; } @@ -732,25 +702,25 @@ } .quest_cheetah { background-image: url(spritesmith-main-5.png); - background-position: -440px -452px; + background-position: -220px -452px; width: 219px; height: 219px; } .quest_dilatory { background-image: url(spritesmith-main-5.png); - background-position: -440px 0px; + background-position: -440px -452px; width: 219px; height: 219px; } .quest_dilatoryDistress1 { background-image: url(spritesmith-main-5.png); - background-position: -666px -1522px; + background-position: -1100px -845px; width: 221px; height: 39px; } .quest_dilatoryDistress1_blueFins { background-image: url(spritesmith-main-5.png); - background-position: -343px -1610px; + background-position: -49px -1610px; width: 51px; height: 48px; } @@ -768,19 +738,19 @@ } .quest_dilatoryDistress3 { background-image: url(spritesmith-main-5.png); - background-position: 0px -232px; + background-position: -660px -452px; width: 219px; height: 219px; } .quest_dilatory_derby { background-image: url(spritesmith-main-5.png); - background-position: -220px -232px; + background-position: -880px -440px; width: 219px; height: 219px; } .quest_egg { background-image: url(spritesmith-main-5.png); - background-position: -444px -1522px; + background-position: -1100px -805px; width: 221px; height: 39px; } @@ -798,7 +768,7 @@ } .quest_evilsanta2 { background-image: url(spritesmith-main-5.png); - background-position: -220px -452px; + background-position: 0px -672px; width: 219px; height: 219px; } @@ -810,13 +780,13 @@ } .quest_ghost_stag { background-image: url(spritesmith-main-5.png); - background-position: -880px 0px; + background-position: -440px -672px; width: 219px; height: 219px; } .quest_goldenknight1 { background-image: url(spritesmith-main-5.png); - background-position: -1100px -805px; + background-position: -444px -1522px; width: 221px; height: 39px; } @@ -828,7 +798,7 @@ } .quest_goldenknight2 { background-image: url(spritesmith-main-5.png); - background-position: -468px -1070px; + background-position: -719px -1070px; width: 250px; height: 150px; } @@ -840,13 +810,13 @@ } .quest_gryphon { background-image: url(spritesmith-main-5.png); - background-position: -440px -892px; + background-position: -1091px -892px; width: 216px; height: 177px; } .quest_harpy { background-image: url(spritesmith-main-5.png); - background-position: 0px -672px; + background-position: -880px -672px; width: 219px; height: 219px; } @@ -858,13 +828,13 @@ } .quest_horse { background-image: url(spritesmith-main-5.png); - background-position: -880px -220px; + background-position: -660px 0px; width: 219px; height: 219px; } .quest_kraken { background-image: url(spritesmith-main-5.png); - background-position: -1091px -892px; + background-position: -440px -892px; width: 216px; height: 177px; } @@ -876,19 +846,19 @@ } .quest_moonstone1_moonstone { background-image: url(spritesmith-main-5.png); - background-position: -1782px -1448px; + background-position: -1700px -504px; width: 30px; height: 30px; } .quest_moonstone2 { background-image: url(spritesmith-main-5.png); - background-position: -880px -672px; + background-position: -880px 0px; width: 219px; height: 219px; } .quest_moonstone3 { background-image: url(spritesmith-main-5.png); - background-position: -660px -672px; + background-position: -880px -220px; width: 219px; height: 219px; } @@ -900,7 +870,7 @@ } .quest_owl { background-image: url(spritesmith-main-5.png); - background-position: -220px -672px; + background-position: -660px -672px; width: 219px; height: 219px; } @@ -912,7 +882,7 @@ } .quest_rat { background-image: url(spritesmith-main-5.png); - background-position: -880px -440px; + background-position: -220px 0px; width: 219px; height: 219px; } @@ -930,43 +900,43 @@ } .quest_sheep { background-image: url(spritesmith-main-5.png); - background-position: -660px -452px; + background-position: 0px -452px; width: 219px; height: 219px; } .quest_slime { background-image: url(spritesmith-main-5.png); - background-position: -220px 0px; + background-position: -660px -220px; width: 219px; height: 219px; } .quest_spider { background-image: url(spritesmith-main-5.png); - background-position: -719px -1070px; + background-position: -468px -1070px; width: 250px; height: 150px; } .quest_stressbeast { background-image: url(spritesmith-main-5.png); - background-position: 0px -452px; + background-position: -440px -232px; width: 219px; height: 219px; } .quest_stressbeast_bailey { background-image: url(spritesmith-main-5.png); - background-position: -660px -220px; + background-position: -220px -232px; width: 219px; height: 219px; } .quest_stressbeast_guide { background-image: url(spritesmith-main-5.png); - background-position: -660px 0px; + background-position: 0px -232px; width: 219px; height: 219px; } .quest_stressbeast_stables { background-image: url(spritesmith-main-5.png); - background-position: -440px -232px; + background-position: -440px 0px; width: 219px; height: 219px; } @@ -990,13 +960,13 @@ } .quest_vice2 { background-image: url(spritesmith-main-5.png); - background-position: -1100px -845px; + background-position: -666px -1522px; width: 221px; height: 39px; } .quest_vice2_lightCrystal { background-image: url(spritesmith-main-5.png); - background-position: -1782px -1235px; + background-position: -1782px -1446px; width: 40px; height: 40px; } @@ -1008,79 +978,79 @@ } .quest_whale { background-image: url(spritesmith-main-5.png); - background-position: -440px -672px; + background-position: -220px -672px; width: 219px; height: 219px; } .shop_copper { background-image: url(spritesmith-main-5.png); - background-position: -1782px -1529px; + background-position: -1700px -586px; width: 32px; height: 22px; } .shop_eyes { background-image: url(spritesmith-main-5.png); - background-position: -1782px -1194px; + background-position: -1782px -1610px; width: 40px; height: 40px; } .shop_gold { background-image: url(spritesmith-main-5.png); - background-position: -1782px -1552px; + background-position: -1700px -614px; width: 32px; height: 22px; } .shop_opaquePotion { background-image: url(spritesmith-main-5.png); - background-position: -1782px -1153px; + background-position: -1782px -1569px; width: 40px; height: 40px; } .shop_potion { background-image: url(spritesmith-main-5.png); - background-position: -1782px -1112px; + background-position: -1782px -1651px; width: 40px; height: 40px; } .shop_reroll { background-image: url(spritesmith-main-5.png); - background-position: -1782px -1071px; + background-position: -1782px -1487px; width: 40px; height: 40px; } .shop_seafoam { background-image: url(spritesmith-main-5.png); - background-position: -1782px -1382px; + background-position: -1782px -1732px; width: 32px; height: 32px; } .shop_shinySeed { background-image: url(spritesmith-main-5.png); - background-position: -1782px -1316px; + background-position: -1733px -1664px; width: 32px; height: 32px; } .shop_silver { background-image: url(spritesmith-main-5.png); - background-position: -1782px -1506px; + background-position: -1700px -535px; width: 32px; height: 22px; } .shop_snowball { background-image: url(spritesmith-main-5.png); - background-position: -1782px -1349px; + background-position: -1700px -437px; width: 32px; height: 32px; } .shop_spookDust { background-image: url(spritesmith-main-5.png); - background-position: -1782px -1415px; + background-position: -1700px -470px; width: 32px; height: 32px; } .Pet_Egg_BearCub { background-image: url(spritesmith-main-5.png); - background-position: -1733px -988px; + background-position: -1782px -780px; width: 48px; height: 51px; } @@ -1272,61 +1242,61 @@ } .Pet_Food_Cake_Base { background-image: url(spritesmith-main-5.png); - background-position: -1782px -735px; + background-position: -1782px -1151px; width: 43px; height: 43px; } .Pet_Food_Cake_CottonCandyBlue { background-image: url(spritesmith-main-5.png); - background-position: -1782px -779px; + background-position: -1782px -1195px; width: 42px; height: 44px; } .Pet_Food_Cake_CottonCandyPink { background-image: url(spritesmith-main-5.png); - background-position: -1782px -554px; + background-position: -1782px -970px; width: 43px; height: 45px; } .Pet_Food_Cake_Desert { background-image: url(spritesmith-main-5.png); - background-position: -1782px -690px; + background-position: -1782px -1106px; width: 43px; height: 44px; } .Pet_Food_Cake_Golden { background-image: url(spritesmith-main-5.png); - background-position: -1782px -824px; + background-position: -1782px -1240px; width: 43px; height: 42px; } .Pet_Food_Cake_Red { background-image: url(spritesmith-main-5.png); - background-position: -1782px -600px; + background-position: -1782px -1061px; width: 43px; height: 44px; } .Pet_Food_Cake_Shade { background-image: url(spritesmith-main-5.png); - background-position: -1782px -645px; + background-position: -1782px -1016px; width: 43px; height: 44px; } .Pet_Food_Cake_Skeleton { background-image: url(spritesmith-main-5.png); - background-position: -1782px -461px; + background-position: -1782px -877px; width: 42px; height: 47px; } .Pet_Food_Cake_White { background-image: url(spritesmith-main-5.png); - background-position: -1782px -509px; + background-position: -1782px -925px; width: 44px; height: 44px; } .Pet_Food_Cake_Zombie { background-image: url(spritesmith-main-5.png); - background-position: -1782px -416px; + background-position: -1782px -832px; width: 45px; height: 44px; } @@ -1422,187 +1392,235 @@ } .Pet_Food_Meat { background-image: url(spritesmith-main-5.png); - background-position: -1372px -1714px; + background-position: -1782px -416px; width: 48px; height: 51px; } .Pet_Food_Milk { background-image: url(spritesmith-main-5.png); - background-position: -1323px -1714px; + background-position: -1782px -468px; width: 48px; height: 51px; } .Pet_Food_Potatoe { background-image: url(spritesmith-main-5.png); - background-position: -1274px -1714px; + background-position: -1782px -520px; width: 48px; height: 51px; } .Pet_Food_RottenMeat { background-image: url(spritesmith-main-5.png); - background-position: -1225px -1714px; + background-position: -1782px -572px; width: 48px; height: 51px; } .Pet_Food_Saddle { background-image: url(spritesmith-main-5.png); - background-position: -1176px -1714px; + background-position: -1782px -624px; width: 48px; height: 51px; } .Pet_Food_Strawberry { background-image: url(spritesmith-main-5.png); - background-position: -1127px -1714px; + background-position: -1782px -676px; width: 48px; height: 51px; } .Mount_Body_BearCub-Base { background-image: url(spritesmith-main-5.png); - background-position: -761px -1251px; + background-position: -967px -1390px; width: 105px; height: 105px; } .Mount_Body_BearCub-CottonCandyBlue { background-image: url(spritesmith-main-5.png); - background-position: -1536px -424px; + background-position: -861px -1390px; width: 105px; height: 105px; } .Mount_Body_BearCub-CottonCandyPink { background-image: url(spritesmith-main-5.png); - background-position: -1536px -318px; + background-position: -755px -1390px; width: 105px; height: 105px; } .Mount_Body_BearCub-Desert { background-image: url(spritesmith-main-5.png); - background-position: -1536px -212px; + background-position: -649px -1390px; width: 105px; height: 105px; } .Mount_Body_BearCub-Golden { background-image: url(spritesmith-main-5.png); - background-position: -1536px -106px; + background-position: -543px -1390px; width: 105px; height: 105px; } .Mount_Body_BearCub-Polar { background-image: url(spritesmith-main-5.png); - background-position: -1536px 0px; + background-position: -437px -1390px; width: 105px; height: 105px; } .Mount_Body_BearCub-Red { background-image: url(spritesmith-main-5.png); - background-position: -1391px -1390px; + background-position: -331px -1390px; width: 105px; height: 105px; } .Mount_Body_BearCub-Shade { background-image: url(spritesmith-main-5.png); - background-position: -1285px -1390px; + background-position: -225px -1390px; width: 105px; height: 105px; } .Mount_Body_BearCub-Skeleton { background-image: url(spritesmith-main-5.png); - background-position: -1179px -1390px; + background-position: -119px -1390px; width: 105px; height: 105px; } .Mount_Body_BearCub-Spooky { background-image: url(spritesmith-main-5.png); - background-position: -1073px -1390px; + background-position: -1359px -1251px; width: 105px; height: 105px; } .Mount_Body_BearCub-White { background-image: url(spritesmith-main-5.png); - background-position: -967px -1390px; + background-position: -1253px -1251px; width: 105px; height: 105px; } .Mount_Body_BearCub-Zombie { background-image: url(spritesmith-main-5.png); - background-position: -861px -1390px; + background-position: -1147px -1251px; width: 105px; height: 105px; } .Mount_Body_Bunny-Base { background-image: url(spritesmith-main-5.png); - background-position: -755px -1390px; + background-position: -1041px -1251px; width: 105px; height: 105px; } .Mount_Body_Bunny-CottonCandyBlue { background-image: url(spritesmith-main-5.png); - background-position: -649px -1390px; + background-position: -935px -1251px; width: 105px; height: 105px; } .Mount_Body_Bunny-CottonCandyPink { background-image: url(spritesmith-main-5.png); - background-position: -543px -1390px; + background-position: -829px -1251px; width: 105px; height: 105px; } .Mount_Body_Bunny-Desert { background-image: url(spritesmith-main-5.png); - background-position: -437px -1390px; + background-position: -723px -1251px; width: 105px; height: 105px; } .Mount_Body_Bunny-Golden { background-image: url(spritesmith-main-5.png); - background-position: -331px -1390px; + background-position: -617px -1251px; width: 105px; height: 105px; } .Mount_Body_Bunny-Red { background-image: url(spritesmith-main-5.png); - background-position: -225px -1390px; + background-position: -511px -1251px; width: 105px; height: 105px; } .Mount_Body_Bunny-Shade { background-image: url(spritesmith-main-5.png); - background-position: -119px -1390px; + background-position: -405px -1251px; width: 105px; height: 105px; } .Mount_Body_Bunny-Skeleton { background-image: url(spritesmith-main-5.png); - background-position: -1397px -1251px; + background-position: -299px -1251px; width: 105px; height: 105px; } .Mount_Body_Bunny-White { background-image: url(spritesmith-main-5.png); - background-position: -1291px -1251px; + background-position: -1536px -848px; width: 105px; height: 105px; } .Mount_Body_Bunny-Zombie { background-image: url(spritesmith-main-5.png); - background-position: -1185px -1251px; + background-position: -1536px -742px; width: 105px; height: 105px; } .Mount_Body_Cactus-Base { background-image: url(spritesmith-main-5.png); - background-position: -1079px -1251px; + background-position: -1536px -636px; width: 105px; height: 105px; } .Mount_Body_Cactus-CottonCandyBlue { background-image: url(spritesmith-main-5.png); - background-position: -973px -1251px; + background-position: -1536px -530px; width: 105px; height: 105px; } .Mount_Body_Cactus-CottonCandyPink { background-image: url(spritesmith-main-5.png); - background-position: -867px -1251px; + background-position: -1536px -424px; + width: 105px; + height: 105px; +} +.Mount_Body_Cactus-Desert { + background-image: url(spritesmith-main-5.png); + background-position: -1536px -318px; + width: 105px; + height: 105px; +} +.Mount_Body_Cactus-Golden { + background-image: url(spritesmith-main-5.png); + background-position: -1536px -212px; + width: 105px; + height: 105px; +} +.Mount_Body_Cactus-Red { + background-image: url(spritesmith-main-5.png); + background-position: -1536px -106px; + width: 105px; + height: 105px; +} +.Mount_Body_Cactus-Shade { + background-image: url(spritesmith-main-5.png); + background-position: -1536px 0px; + width: 105px; + height: 105px; +} +.Mount_Body_Cactus-Skeleton { + background-image: url(spritesmith-main-5.png); + background-position: -1391px -1390px; + width: 105px; + height: 105px; +} +.Mount_Body_Cactus-Spooky { + background-image: url(spritesmith-main-5.png); + background-position: -1285px -1390px; + width: 105px; + height: 105px; +} +.Mount_Body_Cactus-White { + background-image: url(spritesmith-main-5.png); + background-position: -1179px -1390px; + width: 105px; + height: 105px; +} +.Mount_Body_Cactus-Zombie { + background-image: url(spritesmith-main-5.png); + background-position: -1073px -1390px; width: 105px; height: 105px; } diff --git a/common/dist/sprites/spritesmith-main-5.png b/common/dist/sprites/spritesmith-main-5.png index 8c9c4de6da..c72a2db00e 100644 Binary files a/common/dist/sprites/spritesmith-main-5.png and b/common/dist/sprites/spritesmith-main-5.png differ diff --git a/common/dist/sprites/spritesmith-main-6.css b/common/dist/sprites/spritesmith-main-6.css index 1f85047528..c38ce53236 100644 --- a/common/dist/sprites/spritesmith-main-6.css +++ b/common/dist/sprites/spritesmith-main-6.css @@ -1,108 +1,60 @@ -.Mount_Body_Cactus-Desert { - background-image: url(spritesmith-main-6.png); - background-position: -530px -115px; - width: 105px; - height: 105px; -} -.Mount_Body_Cactus-Golden { - background-image: url(spritesmith-main-6.png); - background-position: -318px -1105px; - width: 105px; - height: 105px; -} -.Mount_Body_Cactus-Red { - background-image: url(spritesmith-main-6.png); - background-position: -1060px 0px; - width: 105px; - height: 105px; -} -.Mount_Body_Cactus-Shade { - background-image: url(spritesmith-main-6.png); - background-position: -1060px -106px; - width: 105px; - height: 105px; -} -.Mount_Body_Cactus-Skeleton { - background-image: url(spritesmith-main-6.png); - background-position: -1272px 0px; - width: 105px; - height: 105px; -} -.Mount_Body_Cactus-Spooky { - background-image: url(spritesmith-main-6.png); - background-position: -1272px -424px; - width: 105px; - height: 105px; -} -.Mount_Body_Cactus-White { - background-image: url(spritesmith-main-6.png); - background-position: -1272px -530px; - width: 105px; - height: 105px; -} -.Mount_Body_Cactus-Zombie { - background-image: url(spritesmith-main-6.png); - background-position: -530px -221px; - width: 105px; - height: 105px; -} .Mount_Body_Cheetah-Base { - background-image: url(spritesmith-main-6.png); - background-position: -530px -327px; - width: 105px; - height: 105px; -} -.Mount_Body_Cheetah-CottonCandyBlue { - background-image: url(spritesmith-main-6.png); - background-position: -221px -469px; - width: 105px; - height: 105px; -} -.Mount_Body_Cheetah-CottonCandyPink { - background-image: url(spritesmith-main-6.png); - background-position: -327px -469px; - width: 105px; - height: 105px; -} -.Mount_Body_Cheetah-Desert { background-image: url(spritesmith-main-6.png); background-position: -212px -893px; width: 105px; height: 105px; } +.Mount_Body_Cheetah-CottonCandyBlue { + background-image: url(spritesmith-main-6.png); + background-position: -318px -1105px; + width: 105px; + height: 105px; +} +.Mount_Body_Cheetah-CottonCandyPink { + background-image: url(spritesmith-main-6.png); + background-position: -954px -212px; + width: 105px; + height: 105px; +} +.Mount_Body_Cheetah-Desert { + background-image: url(spritesmith-main-6.png); + background-position: -954px -318px; + width: 105px; + height: 105px; +} .Mount_Body_Cheetah-Golden { background-image: url(spritesmith-main-6.png); - background-position: -318px -893px; + background-position: -954px -424px; width: 105px; height: 105px; } .Mount_Body_Cheetah-Red { background-image: url(spritesmith-main-6.png); - background-position: -424px -893px; + background-position: -954px -530px; width: 105px; height: 105px; } .Mount_Body_Cheetah-Shade { background-image: url(spritesmith-main-6.png); - background-position: -530px -893px; + background-position: -954px -636px; width: 105px; height: 105px; } .Mount_Body_Cheetah-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -636px -893px; + background-position: -954px -742px; width: 105px; height: 105px; } .Mount_Body_Cheetah-White { background-image: url(spritesmith-main-6.png); - background-position: -742px -893px; + background-position: 0px -893px; width: 105px; height: 105px; } .Mount_Body_Cheetah-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -848px -893px; + background-position: -106px -893px; width: 105px; height: 105px; } @@ -168,319 +120,319 @@ } .Mount_Body_Deer-Base { background-image: url(spritesmith-main-6.png); - background-position: -433px -469px; + background-position: -318px -893px; width: 105px; height: 105px; } .Mount_Body_Deer-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -636px 0px; + background-position: -424px -1105px; width: 105px; height: 105px; } .Mount_Body_Deer-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -636px -106px; + background-position: -848px -1105px; width: 105px; height: 105px; } .Mount_Body_Deer-Desert { background-image: url(spritesmith-main-6.png); - background-position: -636px -212px; + background-position: -954px -1105px; width: 105px; height: 105px; } .Mount_Body_Deer-Golden { background-image: url(spritesmith-main-6.png); - background-position: -636px -318px; + background-position: -530px -221px; width: 105px; height: 105px; } .Mount_Body_Deer-Red { background-image: url(spritesmith-main-6.png); - background-position: -636px -424px; + background-position: -530px -327px; width: 105px; height: 105px; } .Mount_Body_Deer-Shade { background-image: url(spritesmith-main-6.png); - background-position: 0px -575px; + background-position: -221px -469px; width: 105px; height: 105px; } .Mount_Body_Deer-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -106px -575px; + background-position: -327px -469px; width: 105px; height: 105px; } .Mount_Body_Deer-White { background-image: url(spritesmith-main-6.png); - background-position: -212px -575px; + background-position: -433px -469px; width: 105px; height: 105px; } .Mount_Body_Deer-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -318px -575px; + background-position: -636px 0px; width: 105px; height: 105px; } .Mount_Body_Dragon-Base { background-image: url(spritesmith-main-6.png); - background-position: -424px -575px; + background-position: -636px -106px; width: 105px; height: 105px; } .Mount_Body_Dragon-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -530px -575px; + background-position: -636px -212px; width: 105px; height: 105px; } .Mount_Body_Dragon-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -636px -575px; + background-position: -636px -318px; width: 105px; height: 105px; } .Mount_Body_Dragon-Desert { background-image: url(spritesmith-main-6.png); - background-position: -742px 0px; + background-position: -636px -424px; width: 105px; height: 105px; } .Mount_Body_Dragon-Golden { background-image: url(spritesmith-main-6.png); - background-position: -742px -106px; + background-position: 0px -575px; width: 105px; height: 105px; } .Mount_Body_Dragon-Red { background-image: url(spritesmith-main-6.png); - background-position: -742px -212px; + background-position: -106px -575px; width: 105px; height: 105px; } .Mount_Body_Dragon-Shade { background-image: url(spritesmith-main-6.png); - background-position: -742px -318px; + background-position: -212px -575px; width: 105px; height: 105px; } .Mount_Body_Dragon-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -742px -424px; + background-position: -318px -575px; width: 105px; height: 105px; } .Mount_Body_Dragon-Spooky { background-image: url(spritesmith-main-6.png); - background-position: -742px -530px; + background-position: -424px -575px; width: 105px; height: 105px; } .Mount_Body_Dragon-White { background-image: url(spritesmith-main-6.png); - background-position: 0px -681px; + background-position: -530px -575px; width: 105px; height: 105px; } .Mount_Body_Dragon-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -106px -681px; + background-position: -636px -575px; width: 105px; height: 105px; } .Mount_Body_Egg-Base { background-image: url(spritesmith-main-6.png); - background-position: -212px -681px; + background-position: -742px 0px; width: 105px; height: 105px; } .Mount_Body_Egg-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -318px -681px; + background-position: -742px -106px; width: 105px; height: 105px; } .Mount_Body_Egg-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -424px -681px; + background-position: -742px -212px; width: 105px; height: 105px; } .Mount_Body_Egg-Desert { background-image: url(spritesmith-main-6.png); - background-position: -530px -681px; + background-position: -742px -318px; width: 105px; height: 105px; } .Mount_Body_Egg-Golden { background-image: url(spritesmith-main-6.png); - background-position: -636px -681px; + background-position: -742px -424px; width: 105px; height: 105px; } .Mount_Body_Egg-Red { background-image: url(spritesmith-main-6.png); - background-position: -742px -681px; + background-position: -742px -530px; width: 105px; height: 105px; } .Mount_Body_Egg-Shade { background-image: url(spritesmith-main-6.png); - background-position: -848px 0px; + background-position: 0px -681px; width: 105px; height: 105px; } .Mount_Body_Egg-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -848px -106px; + background-position: -106px -681px; width: 105px; height: 105px; } .Mount_Body_Egg-White { background-image: url(spritesmith-main-6.png); - background-position: -848px -212px; + background-position: -212px -681px; width: 105px; height: 105px; } .Mount_Body_Egg-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -848px -318px; + background-position: -318px -681px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-Base { background-image: url(spritesmith-main-6.png); - background-position: -848px -424px; + background-position: -424px -681px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -848px -530px; + background-position: -530px -681px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -848px -636px; + background-position: -636px -681px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-Desert { background-image: url(spritesmith-main-6.png); - background-position: 0px -787px; + background-position: -742px -681px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-Golden { background-image: url(spritesmith-main-6.png); - background-position: -106px -787px; + background-position: -848px 0px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-Red { background-image: url(spritesmith-main-6.png); - background-position: -212px -787px; + background-position: -848px -106px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-Shade { background-image: url(spritesmith-main-6.png); - background-position: -318px -787px; + background-position: -848px -212px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -424px -787px; + background-position: -848px -318px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-Spooky { background-image: url(spritesmith-main-6.png); - background-position: -530px -787px; + background-position: -848px -424px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-White { background-image: url(spritesmith-main-6.png); - background-position: -636px -787px; + background-position: -848px -530px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -742px -787px; + background-position: -848px -636px; width: 105px; height: 105px; } .Mount_Body_Fox-Base { background-image: url(spritesmith-main-6.png); - background-position: -848px -787px; + background-position: 0px -787px; width: 105px; height: 105px; } .Mount_Body_Fox-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -954px 0px; + background-position: -106px -787px; width: 105px; height: 105px; } .Mount_Body_Fox-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -954px -106px; + background-position: -212px -787px; width: 105px; height: 105px; } .Mount_Body_Fox-Desert { background-image: url(spritesmith-main-6.png); - background-position: -954px -212px; + background-position: -318px -787px; width: 105px; height: 105px; } .Mount_Body_Fox-Golden { background-image: url(spritesmith-main-6.png); - background-position: -954px -318px; + background-position: -424px -787px; width: 105px; height: 105px; } .Mount_Body_Fox-Red { background-image: url(spritesmith-main-6.png); - background-position: -954px -424px; + background-position: -530px -787px; width: 105px; height: 105px; } .Mount_Body_Fox-Shade { background-image: url(spritesmith-main-6.png); - background-position: -954px -530px; + background-position: -636px -787px; width: 105px; height: 105px; } .Mount_Body_Fox-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -954px -636px; + background-position: -742px -787px; width: 105px; height: 105px; } .Mount_Body_Fox-Spooky { background-image: url(spritesmith-main-6.png); - background-position: -954px -742px; + background-position: -848px -787px; width: 105px; height: 105px; } .Mount_Body_Fox-White { background-image: url(spritesmith-main-6.png); - background-position: 0px -893px; + background-position: -954px 0px; width: 105px; height: 105px; } .Mount_Body_Fox-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -106px -893px; + background-position: -954px -106px; width: 105px; height: 105px; } @@ -546,187 +498,187 @@ } .Mount_Body_Gryphon-Base { background-image: url(spritesmith-main-6.png); - background-position: -1060px -212px; + background-position: -424px -893px; width: 105px; height: 105px; } .Mount_Body_Gryphon-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -1060px -318px; + background-position: -530px -893px; width: 105px; height: 105px; } .Mount_Body_Gryphon-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -1060px -424px; + background-position: -636px -893px; width: 105px; height: 105px; } .Mount_Body_Gryphon-Desert { background-image: url(spritesmith-main-6.png); - background-position: -1060px -530px; + background-position: -742px -893px; width: 105px; height: 105px; } .Mount_Body_Gryphon-Golden { background-image: url(spritesmith-main-6.png); - background-position: -1060px -636px; + background-position: -848px -893px; width: 105px; height: 105px; } .Mount_Body_Gryphon-Red { background-image: url(spritesmith-main-6.png); - background-position: -1060px -742px; + background-position: -954px -893px; width: 105px; height: 105px; } .Mount_Body_Gryphon-RoyalPurple { background-image: url(spritesmith-main-6.png); - background-position: -1060px -848px; + background-position: -1060px 0px; width: 105px; height: 105px; } .Mount_Body_Gryphon-Shade { background-image: url(spritesmith-main-6.png); - background-position: 0px -999px; + background-position: -1060px -106px; width: 105px; height: 105px; } .Mount_Body_Gryphon-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -106px -999px; + background-position: -1060px -212px; width: 105px; height: 105px; } .Mount_Body_Gryphon-White { background-image: url(spritesmith-main-6.png); - background-position: -212px -999px; + background-position: -1060px -318px; width: 105px; height: 105px; } .Mount_Body_Gryphon-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -318px -999px; + background-position: -1060px -424px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-Base { background-image: url(spritesmith-main-6.png); - background-position: -424px -999px; + background-position: -1060px -530px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -530px -999px; + background-position: -1060px -636px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -636px -999px; + background-position: -1060px -742px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-Desert { background-image: url(spritesmith-main-6.png); - background-position: -742px -999px; + background-position: -1060px -848px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-Golden { background-image: url(spritesmith-main-6.png); - background-position: -848px -999px; + background-position: 0px -999px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-Red { background-image: url(spritesmith-main-6.png); - background-position: -954px -999px; + background-position: -106px -999px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-Shade { background-image: url(spritesmith-main-6.png); - background-position: -1060px -999px; + background-position: -212px -999px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -1166px 0px; + background-position: -318px -999px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-White { background-image: url(spritesmith-main-6.png); - background-position: -1166px -106px; + background-position: -424px -999px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1166px -212px; + background-position: -530px -999px; width: 105px; height: 105px; } .Mount_Body_Horse-Base { background-image: url(spritesmith-main-6.png); - background-position: -1166px -318px; + background-position: -636px -999px; width: 105px; height: 105px; } .Mount_Body_Horse-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -1166px -424px; + background-position: -742px -999px; width: 105px; height: 105px; } .Mount_Body_Horse-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -1166px -530px; + background-position: -848px -999px; width: 105px; height: 105px; } .Mount_Body_Horse-Desert { background-image: url(spritesmith-main-6.png); - background-position: -1166px -636px; + background-position: -954px -999px; width: 105px; height: 105px; } .Mount_Body_Horse-Golden { background-image: url(spritesmith-main-6.png); - background-position: -1166px -742px; + background-position: -1060px -999px; width: 105px; height: 105px; } .Mount_Body_Horse-Red { background-image: url(spritesmith-main-6.png); - background-position: -1166px -848px; + background-position: -1166px 0px; width: 105px; height: 105px; } .Mount_Body_Horse-Shade { background-image: url(spritesmith-main-6.png); - background-position: -1166px -954px; + background-position: -1166px -106px; width: 105px; height: 105px; } .Mount_Body_Horse-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: 0px -1105px; + background-position: -1166px -212px; width: 105px; height: 105px; } .Mount_Body_Horse-White { background-image: url(spritesmith-main-6.png); - background-position: -106px -1105px; + background-position: -1166px -318px; width: 105px; height: 105px; } .Mount_Body_Horse-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -212px -1105px; + background-position: -1166px -424px; width: 105px; height: 105px; } @@ -738,49 +690,49 @@ } .Mount_Body_LionCub-Base { background-image: url(spritesmith-main-6.png); - background-position: -424px -1105px; + background-position: -1166px -636px; width: 105px; height: 105px; } .Mount_Body_LionCub-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -530px -1105px; + background-position: -1166px -742px; width: 105px; height: 105px; } .Mount_Body_LionCub-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -636px -1105px; + background-position: -1166px -848px; width: 105px; height: 105px; } .Mount_Body_LionCub-Desert { background-image: url(spritesmith-main-6.png); - background-position: -742px -1105px; + background-position: -1166px -954px; width: 105px; height: 105px; } .Mount_Body_LionCub-Ethereal { background-image: url(spritesmith-main-6.png); - background-position: -848px -1105px; + background-position: 0px -1105px; width: 105px; height: 105px; } .Mount_Body_LionCub-Golden { background-image: url(spritesmith-main-6.png); - background-position: -954px -1105px; + background-position: -106px -1105px; width: 105px; height: 105px; } .Mount_Body_LionCub-Red { background-image: url(spritesmith-main-6.png); - background-position: -1060px -1105px; + background-position: -212px -1105px; width: 105px; height: 105px; } .Mount_Body_LionCub-Shade { background-image: url(spritesmith-main-6.png); - background-position: -1166px -1105px; + background-position: -530px -115px; width: 105px; height: 105px; } @@ -792,19 +744,19 @@ } .Mount_Body_LionCub-Spooky { background-image: url(spritesmith-main-6.png); - background-position: -1272px -106px; + background-position: -530px -1105px; width: 105px; height: 105px; } .Mount_Body_LionCub-White { background-image: url(spritesmith-main-6.png); - background-position: -1272px -212px; + background-position: -636px -1105px; width: 105px; height: 105px; } .Mount_Body_LionCub-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1272px -318px; + background-position: -742px -1105px; width: 105px; height: 105px; } @@ -822,649 +774,697 @@ } .Mount_Body_Octopus-Base { background-image: url(spritesmith-main-6.png); - background-position: -1272px -636px; + background-position: -1060px -1105px; width: 105px; height: 105px; } .Mount_Body_Octopus-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -1272px -742px; + background-position: -1166px -1105px; width: 105px; height: 105px; } .Mount_Body_Octopus-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -1272px -848px; + background-position: -1272px 0px; width: 105px; height: 105px; } .Mount_Body_Octopus-Desert { background-image: url(spritesmith-main-6.png); - background-position: -1272px -954px; + background-position: -1272px -106px; width: 105px; height: 105px; } .Mount_Body_Octopus-Golden { background-image: url(spritesmith-main-6.png); - background-position: -1272px -1060px; + background-position: -1272px -212px; width: 105px; height: 105px; } .Mount_Body_Octopus-Red { background-image: url(spritesmith-main-6.png); - background-position: 0px -1211px; + background-position: -1272px -318px; width: 105px; height: 105px; } .Mount_Body_Octopus-Shade { background-image: url(spritesmith-main-6.png); - background-position: -106px -1211px; + background-position: -1272px -424px; width: 105px; height: 105px; } .Mount_Body_Octopus-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -212px -1211px; + background-position: -1272px -530px; width: 105px; height: 105px; } .Mount_Body_Octopus-White { background-image: url(spritesmith-main-6.png); - background-position: -318px -1211px; + background-position: -1272px -636px; width: 105px; height: 105px; } .Mount_Body_Octopus-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -424px -1211px; + background-position: -1272px -742px; width: 105px; height: 105px; } .Mount_Body_Orca-Base { background-image: url(spritesmith-main-6.png); - background-position: -530px -1211px; + background-position: -1272px -848px; width: 105px; height: 105px; } .Mount_Body_Owl-Base { background-image: url(spritesmith-main-6.png); - background-position: -636px -1211px; + background-position: -1272px -954px; width: 105px; height: 105px; } .Mount_Body_Owl-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -742px -1211px; + background-position: -1272px -1060px; width: 105px; height: 105px; } .Mount_Body_Owl-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -848px -1211px; + background-position: 0px -1211px; width: 105px; height: 105px; } .Mount_Body_Owl-Desert { background-image: url(spritesmith-main-6.png); - background-position: -954px -1211px; + background-position: -106px -1211px; width: 105px; height: 105px; } .Mount_Body_Owl-Golden { background-image: url(spritesmith-main-6.png); - background-position: -1060px -1211px; + background-position: -212px -1211px; width: 105px; height: 105px; } .Mount_Body_Owl-Red { background-image: url(spritesmith-main-6.png); - background-position: -1166px -1211px; + background-position: -318px -1211px; width: 105px; height: 105px; } .Mount_Body_Owl-Shade { background-image: url(spritesmith-main-6.png); - background-position: -1272px -1211px; + background-position: -424px -1211px; width: 105px; height: 105px; } .Mount_Body_Owl-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -1378px 0px; + background-position: -530px -1211px; width: 105px; height: 105px; } .Mount_Body_Owl-White { background-image: url(spritesmith-main-6.png); - background-position: -1378px -106px; + background-position: -636px -1211px; width: 105px; height: 105px; } .Mount_Body_Owl-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1378px -212px; + background-position: -742px -1211px; width: 105px; height: 105px; } .Mount_Body_PandaCub-Base { background-image: url(spritesmith-main-6.png); - background-position: -1378px -318px; + background-position: -848px -1211px; width: 105px; height: 105px; } .Mount_Body_PandaCub-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -1378px -424px; + background-position: -954px -1211px; width: 105px; height: 105px; } .Mount_Body_PandaCub-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -1378px -530px; + background-position: -1060px -1211px; width: 105px; height: 105px; } .Mount_Body_PandaCub-Desert { background-image: url(spritesmith-main-6.png); - background-position: -1378px -636px; + background-position: -1166px -1211px; width: 105px; height: 105px; } .Mount_Body_PandaCub-Golden { background-image: url(spritesmith-main-6.png); - background-position: -1378px -742px; + background-position: -1272px -1211px; width: 105px; height: 105px; } .Mount_Body_PandaCub-Red { background-image: url(spritesmith-main-6.png); - background-position: -1378px -848px; + background-position: -1378px 0px; width: 105px; height: 105px; } .Mount_Body_PandaCub-Shade { background-image: url(spritesmith-main-6.png); - background-position: -1378px -954px; + background-position: -1378px -106px; width: 105px; height: 105px; } .Mount_Body_PandaCub-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -1378px -1060px; + background-position: -1378px -212px; width: 105px; height: 105px; } .Mount_Body_PandaCub-Spooky { background-image: url(spritesmith-main-6.png); - background-position: -1378px -1166px; + background-position: -1378px -318px; width: 105px; height: 105px; } .Mount_Body_PandaCub-White { background-image: url(spritesmith-main-6.png); - background-position: 0px -1317px; + background-position: -1378px -424px; width: 105px; height: 105px; } .Mount_Body_PandaCub-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -106px -1317px; + background-position: -1378px -530px; width: 105px; height: 105px; } .Mount_Body_Parrot-Base { background-image: url(spritesmith-main-6.png); - background-position: -212px -1317px; + background-position: -1378px -636px; width: 105px; height: 105px; } .Mount_Body_Parrot-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -318px -1317px; + background-position: -1378px -742px; width: 105px; height: 105px; } .Mount_Body_Parrot-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -424px -1317px; + background-position: -1378px -848px; width: 105px; height: 105px; } .Mount_Body_Parrot-Desert { background-image: url(spritesmith-main-6.png); - background-position: -530px -1317px; + background-position: -1378px -954px; width: 105px; height: 105px; } .Mount_Body_Parrot-Golden { background-image: url(spritesmith-main-6.png); - background-position: -636px -1317px; + background-position: -1378px -1060px; width: 105px; height: 105px; } .Mount_Body_Parrot-Red { background-image: url(spritesmith-main-6.png); - background-position: -742px -1317px; + background-position: -1378px -1166px; width: 105px; height: 105px; } .Mount_Body_Parrot-Shade { background-image: url(spritesmith-main-6.png); - background-position: -848px -1317px; + background-position: 0px -1317px; width: 105px; height: 105px; } .Mount_Body_Parrot-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -954px -1317px; + background-position: -106px -1317px; width: 105px; height: 105px; } .Mount_Body_Parrot-White { background-image: url(spritesmith-main-6.png); - background-position: -1060px -1317px; + background-position: -212px -1317px; width: 105px; height: 105px; } .Mount_Body_Parrot-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1166px -1317px; + background-position: -318px -1317px; width: 105px; height: 105px; } .Mount_Body_Penguin-Base { background-image: url(spritesmith-main-6.png); - background-position: -1272px -1317px; + background-position: -424px -1317px; width: 105px; height: 105px; } .Mount_Body_Penguin-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -1378px -1317px; + background-position: -530px -1317px; width: 105px; height: 105px; } .Mount_Body_Penguin-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -1484px 0px; + background-position: -636px -1317px; width: 105px; height: 105px; } .Mount_Body_Penguin-Desert { background-image: url(spritesmith-main-6.png); - background-position: -1484px -106px; + background-position: -742px -1317px; width: 105px; height: 105px; } .Mount_Body_Penguin-Golden { background-image: url(spritesmith-main-6.png); - background-position: -1484px -212px; + background-position: -848px -1317px; width: 105px; height: 105px; } .Mount_Body_Penguin-Red { background-image: url(spritesmith-main-6.png); - background-position: -1484px -318px; + background-position: -954px -1317px; width: 105px; height: 105px; } .Mount_Body_Penguin-Shade { background-image: url(spritesmith-main-6.png); - background-position: -1484px -424px; + background-position: -1060px -1317px; width: 105px; height: 105px; } .Mount_Body_Penguin-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -1484px -530px; + background-position: -1166px -1317px; width: 105px; height: 105px; } .Mount_Body_Penguin-White { background-image: url(spritesmith-main-6.png); - background-position: -1484px -636px; + background-position: -1272px -1317px; width: 105px; height: 105px; } .Mount_Body_Penguin-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1484px -742px; + background-position: -1378px -1317px; width: 105px; height: 105px; } .Mount_Body_Phoenix-Base { background-image: url(spritesmith-main-6.png); - background-position: -1484px -848px; + background-position: -1484px 0px; width: 105px; height: 105px; } .Mount_Body_Rat-Base { background-image: url(spritesmith-main-6.png); - background-position: -1484px -954px; + background-position: -1484px -106px; width: 105px; height: 105px; } .Mount_Body_Rat-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -1484px -1060px; + background-position: -1484px -212px; width: 105px; height: 105px; } .Mount_Body_Rat-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -1484px -1166px; + background-position: -1484px -318px; width: 105px; height: 105px; } .Mount_Body_Rat-Desert { background-image: url(spritesmith-main-6.png); - background-position: -1484px -1272px; + background-position: -1484px -424px; width: 105px; height: 105px; } .Mount_Body_Rat-Golden { background-image: url(spritesmith-main-6.png); - background-position: 0px -1423px; + background-position: -1484px -530px; width: 105px; height: 105px; } .Mount_Body_Rat-Red { background-image: url(spritesmith-main-6.png); - background-position: -106px -1423px; + background-position: -1484px -636px; width: 105px; height: 105px; } .Mount_Body_Rat-Shade { background-image: url(spritesmith-main-6.png); - background-position: -212px -1423px; + background-position: -1484px -742px; width: 105px; height: 105px; } .Mount_Body_Rat-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -318px -1423px; + background-position: -1484px -848px; width: 105px; height: 105px; } .Mount_Body_Rat-White { background-image: url(spritesmith-main-6.png); - background-position: -424px -1423px; + background-position: -1484px -954px; width: 105px; height: 105px; } .Mount_Body_Rat-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -530px -1423px; + background-position: -1484px -1060px; width: 105px; height: 105px; } .Mount_Body_Rock-Base { background-image: url(spritesmith-main-6.png); - background-position: -636px -1423px; + background-position: -1484px -1166px; width: 105px; height: 105px; } .Mount_Body_Rock-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -742px -1423px; + background-position: -1484px -1272px; width: 105px; height: 105px; } .Mount_Body_Rock-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -848px -1423px; + background-position: 0px -1423px; width: 105px; height: 105px; } .Mount_Body_Rock-Desert { background-image: url(spritesmith-main-6.png); - background-position: -954px -1423px; + background-position: -106px -1423px; width: 105px; height: 105px; } .Mount_Body_Rock-Golden { background-image: url(spritesmith-main-6.png); - background-position: -1060px -1423px; + background-position: -212px -1423px; width: 105px; height: 105px; } .Mount_Body_Rock-Red { background-image: url(spritesmith-main-6.png); - background-position: -1166px -1423px; + background-position: -318px -1423px; width: 105px; height: 105px; } .Mount_Body_Rock-Shade { background-image: url(spritesmith-main-6.png); - background-position: -1272px -1423px; + background-position: -424px -1423px; width: 105px; height: 105px; } .Mount_Body_Rock-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -1378px -1423px; + background-position: -530px -1423px; width: 105px; height: 105px; } .Mount_Body_Rock-White { background-image: url(spritesmith-main-6.png); - background-position: -1484px -1423px; + background-position: -636px -1423px; width: 105px; height: 105px; } .Mount_Body_Rock-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1590px 0px; + background-position: -742px -1423px; width: 105px; height: 105px; } .Mount_Body_Rooster-Base { background-image: url(spritesmith-main-6.png); - background-position: -1590px -106px; + background-position: -848px -1423px; width: 105px; height: 105px; } .Mount_Body_Rooster-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -1590px -212px; + background-position: -954px -1423px; width: 105px; height: 105px; } .Mount_Body_Rooster-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -1590px -318px; + background-position: -1060px -1423px; width: 105px; height: 105px; } .Mount_Body_Rooster-Desert { background-image: url(spritesmith-main-6.png); - background-position: -1590px -424px; + background-position: -1166px -1423px; width: 105px; height: 105px; } .Mount_Body_Rooster-Golden { background-image: url(spritesmith-main-6.png); - background-position: -1590px -530px; + background-position: -1272px -1423px; width: 105px; height: 105px; } .Mount_Body_Rooster-Red { background-image: url(spritesmith-main-6.png); - background-position: -1590px -636px; + background-position: -1378px -1423px; width: 105px; height: 105px; } .Mount_Body_Rooster-Shade { background-image: url(spritesmith-main-6.png); - background-position: -1590px -742px; + background-position: -1484px -1423px; width: 105px; height: 105px; } .Mount_Body_Rooster-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -1590px -848px; + background-position: -1590px 0px; width: 105px; height: 105px; } .Mount_Body_Rooster-White { background-image: url(spritesmith-main-6.png); - background-position: -1590px -954px; + background-position: -1590px -106px; width: 105px; height: 105px; } .Mount_Body_Rooster-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1590px -1060px; + background-position: -1590px -212px; width: 105px; height: 105px; } .Mount_Body_Seahorse-Base { background-image: url(spritesmith-main-6.png); - background-position: -1590px -1166px; + background-position: -1590px -318px; width: 105px; height: 105px; } .Mount_Body_Seahorse-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -1590px -1272px; + background-position: -1590px -424px; width: 105px; height: 105px; } .Mount_Body_Seahorse-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -1590px -1378px; + background-position: -1590px -530px; width: 105px; height: 105px; } .Mount_Body_Seahorse-Desert { background-image: url(spritesmith-main-6.png); - background-position: 0px -1529px; + background-position: -1590px -636px; width: 105px; height: 105px; } .Mount_Body_Seahorse-Golden { background-image: url(spritesmith-main-6.png); - background-position: -106px -1529px; + background-position: -1590px -742px; width: 105px; height: 105px; } .Mount_Body_Seahorse-Red { background-image: url(spritesmith-main-6.png); - background-position: -212px -1529px; + background-position: -1590px -848px; width: 105px; height: 105px; } .Mount_Body_Seahorse-Shade { background-image: url(spritesmith-main-6.png); - background-position: -318px -1529px; + background-position: -1590px -954px; width: 105px; height: 105px; } .Mount_Body_Seahorse-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -424px -1529px; + background-position: -1590px -1060px; width: 105px; height: 105px; } .Mount_Body_Seahorse-White { background-image: url(spritesmith-main-6.png); - background-position: -530px -1529px; + background-position: -1590px -1166px; width: 105px; height: 105px; } .Mount_Body_Seahorse-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -636px -1529px; + background-position: -1590px -1272px; width: 105px; height: 105px; } .Mount_Body_Sheep-Base { background-image: url(spritesmith-main-6.png); - background-position: -742px -1529px; + background-position: -1590px -1378px; width: 105px; height: 105px; } .Mount_Body_Sheep-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -848px -1529px; + background-position: 0px -1529px; width: 105px; height: 105px; } .Mount_Body_Sheep-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -954px -1529px; + background-position: -106px -1529px; width: 105px; height: 105px; } .Mount_Body_Sheep-Desert { background-image: url(spritesmith-main-6.png); - background-position: -1060px -1529px; + background-position: -212px -1529px; width: 105px; height: 105px; } .Mount_Body_Sheep-Golden { background-image: url(spritesmith-main-6.png); - background-position: -1166px -1529px; + background-position: -318px -1529px; width: 105px; height: 105px; } .Mount_Body_Sheep-Red { background-image: url(spritesmith-main-6.png); - background-position: -1272px -1529px; + background-position: -424px -1529px; width: 105px; height: 105px; } .Mount_Body_Sheep-Shade { background-image: url(spritesmith-main-6.png); - background-position: -1378px -1529px; + background-position: -530px -1529px; width: 105px; height: 105px; } .Mount_Body_Sheep-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -1484px -1529px; + background-position: -636px -1529px; width: 105px; height: 105px; } .Mount_Body_Sheep-White { background-image: url(spritesmith-main-6.png); - background-position: -1590px -1529px; + background-position: -742px -1529px; width: 105px; height: 105px; } .Mount_Body_Sheep-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1696px 0px; + background-position: -848px -1529px; width: 105px; height: 105px; } .Mount_Body_Slime-Base { background-image: url(spritesmith-main-6.png); - background-position: -1696px -106px; + background-position: -954px -1529px; width: 105px; height: 105px; } .Mount_Body_Slime-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -1696px -212px; + background-position: -1060px -1529px; width: 105px; height: 105px; } .Mount_Body_Slime-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -1696px -318px; + background-position: -1166px -1529px; width: 105px; height: 105px; } .Mount_Body_Slime-Desert { background-image: url(spritesmith-main-6.png); - background-position: -1696px -424px; + background-position: -1272px -1529px; width: 105px; height: 105px; } .Mount_Body_Slime-Golden { background-image: url(spritesmith-main-6.png); - background-position: -954px -893px; + background-position: -1378px -1529px; + width: 105px; + height: 105px; +} +.Mount_Body_Slime-Red { + background-image: url(spritesmith-main-6.png); + background-position: -1484px -1529px; + width: 105px; + height: 105px; +} +.Mount_Body_Slime-Shade { + background-image: url(spritesmith-main-6.png); + background-position: -1590px -1529px; + width: 105px; + height: 105px; +} +.Mount_Body_Slime-Skeleton { + background-image: url(spritesmith-main-6.png); + background-position: -1696px 0px; + width: 105px; + height: 105px; +} +.Mount_Body_Slime-White { + background-image: url(spritesmith-main-6.png); + background-position: -1696px -106px; + width: 105px; + height: 105px; +} +.Mount_Body_Slime-Zombie { + background-image: url(spritesmith-main-6.png); + background-position: -1696px -212px; + width: 105px; + height: 105px; +} +.Mount_Body_Spider-Base { + background-image: url(spritesmith-main-6.png); + background-position: -1696px -318px; + width: 105px; + height: 105px; +} +.Mount_Body_Spider-CottonCandyBlue { + background-image: url(spritesmith-main-6.png); + background-position: -1166px -530px; + width: 105px; + height: 105px; +} +.Mount_Body_Spider-CottonCandyPink { + background-image: url(spritesmith-main-6.png); + background-position: -1696px -424px; width: 105px; height: 105px; } diff --git a/common/dist/sprites/spritesmith-main-6.png b/common/dist/sprites/spritesmith-main-6.png index 588b1eb518..8465eae4d1 100644 Binary files a/common/dist/sprites/spritesmith-main-6.png and b/common/dist/sprites/spritesmith-main-6.png differ diff --git a/common/dist/sprites/spritesmith-main-7.css b/common/dist/sprites/spritesmith-main-7.css index 65b124484b..116a42b2f0 100644 --- a/common/dist/sprites/spritesmith-main-7.css +++ b/common/dist/sprites/spritesmith-main-7.css @@ -1,90 +1,42 @@ -.Mount_Body_Slime-Red { - background-image: url(spritesmith-main-7.png); - background-position: 0px -795px; - width: 105px; - height: 105px; -} -.Mount_Body_Slime-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -848px -1113px; - width: 105px; - height: 105px; -} -.Mount_Body_Slime-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -106px -795px; - width: 105px; - height: 105px; -} -.Mount_Body_Slime-White { - background-image: url(spritesmith-main-7.png); - background-position: -212px -795px; - width: 105px; - height: 105px; -} -.Mount_Body_Slime-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -318px -795px; - width: 105px; - height: 105px; -} -.Mount_Body_Spider-Base { - background-image: url(spritesmith-main-7.png); - background-position: -424px -795px; - width: 105px; - height: 105px; -} -.Mount_Body_Spider-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -530px -795px; - width: 105px; - height: 105px; -} -.Mount_Body_Spider-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -636px -795px; - width: 105px; - height: 105px; -} .Mount_Body_Spider-Desert { background-image: url(spritesmith-main-7.png); - background-position: -1210px -318px; + background-position: -954px -1325px; width: 105px; height: 105px; } .Mount_Body_Spider-Golden { background-image: url(spritesmith-main-7.png); - background-position: -1210px -424px; + background-position: -848px -1113px; width: 105px; height: 105px; } .Mount_Body_Spider-Red { background-image: url(spritesmith-main-7.png); - background-position: -1210px -530px; + background-position: -1634px -848px; width: 105px; height: 105px; } .Mount_Body_Spider-Shade { background-image: url(spritesmith-main-7.png); - background-position: -892px -318px; + background-position: -1634px -1272px; width: 105px; height: 105px; } .Mount_Body_Spider-Skeleton { background-image: url(spritesmith-main-7.png); - background-position: -892px -424px; + background-position: -1634px -1378px; width: 105px; height: 105px; } .Mount_Body_Spider-White { background-image: url(spritesmith-main-7.png); - background-position: -892px -530px; + background-position: -742px -1325px; width: 105px; height: 105px; } .Mount_Body_Spider-Zombie { background-image: url(spritesmith-main-7.png); - background-position: -892px -636px; + background-position: -848px -1325px; width: 105px; height: 105px; } @@ -150,133 +102,133 @@ } .Mount_Body_TigerCub-Base { background-image: url(spritesmith-main-7.png); - background-position: -1210px -636px; + background-position: -892px -106px; width: 105px; height: 105px; } .Mount_Body_TigerCub-CottonCandyBlue { background-image: url(spritesmith-main-7.png); - background-position: -1210px -742px; + background-position: -892px -212px; width: 105px; height: 105px; } .Mount_Body_TigerCub-CottonCandyPink { background-image: url(spritesmith-main-7.png); - background-position: -1210px -848px; + background-position: -892px -318px; width: 105px; height: 105px; } .Mount_Body_TigerCub-Desert { background-image: url(spritesmith-main-7.png); - background-position: -1210px -954px; + background-position: -892px -424px; width: 105px; height: 105px; } .Mount_Body_TigerCub-Golden { background-image: url(spritesmith-main-7.png); - background-position: 0px -1113px; + background-position: -892px -530px; width: 105px; height: 105px; } .Mount_Body_TigerCub-Red { background-image: url(spritesmith-main-7.png); - background-position: -106px -1113px; + background-position: -636px -1007px; width: 105px; height: 105px; } .Mount_Body_TigerCub-Shade { background-image: url(spritesmith-main-7.png); - background-position: -212px -1113px; + background-position: -742px -1007px; width: 105px; height: 105px; } .Mount_Body_TigerCub-Skeleton { background-image: url(spritesmith-main-7.png); - background-position: -848px -1325px; + background-position: -848px -1007px; width: 105px; height: 105px; } .Mount_Body_TigerCub-Spooky { background-image: url(spritesmith-main-7.png); - background-position: -954px -1325px; + background-position: -954px -1007px; width: 105px; height: 105px; } .Mount_Body_TigerCub-White { background-image: url(spritesmith-main-7.png); - background-position: -1060px -1325px; + background-position: -1060px -1007px; width: 105px; height: 105px; } .Mount_Body_TigerCub-Zombie { background-image: url(spritesmith-main-7.png); - background-position: -1166px -1325px; + background-position: -1210px 0px; width: 105px; height: 105px; } .Mount_Body_Turkey-Base { background-image: url(spritesmith-main-7.png); - background-position: -1272px -1325px; + background-position: -1210px -106px; width: 105px; height: 105px; } .Mount_Body_Whale-Base { background-image: url(spritesmith-main-7.png); - background-position: -1378px -1325px; + background-position: -1210px -212px; width: 105px; height: 105px; } .Mount_Body_Whale-CottonCandyBlue { background-image: url(spritesmith-main-7.png); - background-position: -1528px 0px; + background-position: -1210px -318px; width: 105px; height: 105px; } .Mount_Body_Whale-CottonCandyPink { background-image: url(spritesmith-main-7.png); - background-position: -1528px -106px; + background-position: -1210px -424px; width: 105px; height: 105px; } .Mount_Body_Whale-Desert { background-image: url(spritesmith-main-7.png); - background-position: -1528px -212px; + background-position: 0px -1325px; width: 105px; height: 105px; } .Mount_Body_Whale-Golden { background-image: url(spritesmith-main-7.png); - background-position: -1528px -318px; + background-position: -106px -1325px; width: 105px; height: 105px; } .Mount_Body_Whale-Red { background-image: url(spritesmith-main-7.png); - background-position: -212px -1537px; + background-position: -212px -1325px; width: 105px; height: 105px; } .Mount_Body_Whale-Shade { background-image: url(spritesmith-main-7.png); - background-position: -636px -1537px; + background-position: -318px -1325px; width: 105px; height: 105px; } .Mount_Body_Whale-Skeleton { background-image: url(spritesmith-main-7.png); - background-position: -742px -1537px; + background-position: -424px -1325px; width: 105px; height: 105px; } .Mount_Body_Whale-White { background-image: url(spritesmith-main-7.png); - background-position: -892px -106px; + background-position: -530px -1325px; width: 105px; height: 105px; } .Mount_Body_Whale-Zombie { background-image: url(spritesmith-main-7.png); - background-position: -892px -212px; + background-position: -636px -1325px; width: 105px; height: 105px; } @@ -348,259 +300,259 @@ } .Mount_Head_BearCub-Base { background-image: url(spritesmith-main-7.png); - background-position: -742px -795px; + background-position: -892px -636px; width: 105px; height: 105px; } .Mount_Head_BearCub-CottonCandyBlue { background-image: url(spritesmith-main-7.png); - background-position: -848px -795px; + background-position: 0px -795px; width: 105px; height: 105px; } .Mount_Head_BearCub-CottonCandyPink { background-image: url(spritesmith-main-7.png); - background-position: -998px 0px; + background-position: -106px -795px; width: 105px; height: 105px; } .Mount_Head_BearCub-Desert { background-image: url(spritesmith-main-7.png); - background-position: -998px -106px; + background-position: -212px -795px; width: 105px; height: 105px; } .Mount_Head_BearCub-Golden { background-image: url(spritesmith-main-7.png); - background-position: -998px -212px; + background-position: -318px -795px; width: 105px; height: 105px; } .Mount_Head_BearCub-Polar { background-image: url(spritesmith-main-7.png); - background-position: -998px -318px; + background-position: -424px -795px; width: 105px; height: 105px; } .Mount_Head_BearCub-Red { background-image: url(spritesmith-main-7.png); - background-position: -998px -424px; + background-position: -530px -795px; width: 105px; height: 105px; } .Mount_Head_BearCub-Shade { background-image: url(spritesmith-main-7.png); - background-position: -998px -530px; + background-position: -636px -795px; width: 105px; height: 105px; } .Mount_Head_BearCub-Skeleton { background-image: url(spritesmith-main-7.png); - background-position: -998px -636px; + background-position: -742px -795px; width: 105px; height: 105px; } .Mount_Head_BearCub-Spooky { background-image: url(spritesmith-main-7.png); - background-position: -998px -742px; + background-position: -848px -795px; width: 105px; height: 105px; } .Mount_Head_BearCub-White { background-image: url(spritesmith-main-7.png); - background-position: 0px -901px; + background-position: -998px 0px; width: 105px; height: 105px; } .Mount_Head_BearCub-Zombie { background-image: url(spritesmith-main-7.png); - background-position: -106px -901px; + background-position: -998px -106px; width: 105px; height: 105px; } .Mount_Head_Bunny-Base { background-image: url(spritesmith-main-7.png); - background-position: -212px -901px; + background-position: -998px -212px; width: 105px; height: 105px; } .Mount_Head_Bunny-CottonCandyBlue { background-image: url(spritesmith-main-7.png); - background-position: -318px -901px; + background-position: -998px -318px; width: 105px; height: 105px; } .Mount_Head_Bunny-CottonCandyPink { background-image: url(spritesmith-main-7.png); - background-position: -424px -901px; + background-position: -998px -424px; width: 105px; height: 105px; } .Mount_Head_Bunny-Desert { background-image: url(spritesmith-main-7.png); - background-position: -530px -901px; + background-position: -998px -530px; width: 105px; height: 105px; } .Mount_Head_Bunny-Golden { background-image: url(spritesmith-main-7.png); - background-position: -636px -901px; + background-position: -998px -636px; width: 105px; height: 105px; } .Mount_Head_Bunny-Red { background-image: url(spritesmith-main-7.png); - background-position: -742px -901px; + background-position: -998px -742px; width: 105px; height: 105px; } .Mount_Head_Bunny-Shade { background-image: url(spritesmith-main-7.png); - background-position: -848px -901px; + background-position: 0px -901px; width: 105px; height: 105px; } .Mount_Head_Bunny-Skeleton { background-image: url(spritesmith-main-7.png); - background-position: -954px -901px; + background-position: -106px -901px; width: 105px; height: 105px; } .Mount_Head_Bunny-White { background-image: url(spritesmith-main-7.png); - background-position: -1104px 0px; + background-position: -212px -901px; width: 105px; height: 105px; } .Mount_Head_Bunny-Zombie { background-image: url(spritesmith-main-7.png); - background-position: -1104px -106px; + background-position: -318px -901px; width: 105px; height: 105px; } .Mount_Head_Cactus-Base { background-image: url(spritesmith-main-7.png); - background-position: -1104px -212px; + background-position: -424px -901px; width: 105px; height: 105px; } .Mount_Head_Cactus-CottonCandyBlue { background-image: url(spritesmith-main-7.png); - background-position: -1104px -318px; + background-position: -530px -901px; width: 105px; height: 105px; } .Mount_Head_Cactus-CottonCandyPink { background-image: url(spritesmith-main-7.png); - background-position: -1104px -424px; + background-position: -636px -901px; width: 105px; height: 105px; } .Mount_Head_Cactus-Desert { background-image: url(spritesmith-main-7.png); - background-position: -1104px -530px; + background-position: -742px -901px; width: 105px; height: 105px; } .Mount_Head_Cactus-Golden { background-image: url(spritesmith-main-7.png); - background-position: -1104px -636px; + background-position: -848px -901px; width: 105px; height: 105px; } .Mount_Head_Cactus-Red { background-image: url(spritesmith-main-7.png); - background-position: -1104px -742px; + background-position: -954px -901px; width: 105px; height: 105px; } .Mount_Head_Cactus-Shade { background-image: url(spritesmith-main-7.png); - background-position: -1104px -848px; + background-position: -1104px 0px; width: 105px; height: 105px; } .Mount_Head_Cactus-Skeleton { background-image: url(spritesmith-main-7.png); - background-position: 0px -1007px; + background-position: -1104px -106px; width: 105px; height: 105px; } .Mount_Head_Cactus-Spooky { background-image: url(spritesmith-main-7.png); - background-position: -106px -1007px; + background-position: -1104px -212px; width: 105px; height: 105px; } .Mount_Head_Cactus-White { background-image: url(spritesmith-main-7.png); - background-position: -212px -1007px; + background-position: -1104px -318px; width: 105px; height: 105px; } .Mount_Head_Cactus-Zombie { background-image: url(spritesmith-main-7.png); - background-position: -318px -1007px; + background-position: -1104px -424px; width: 105px; height: 105px; } .Mount_Head_Cheetah-Base { background-image: url(spritesmith-main-7.png); - background-position: -424px -1007px; + background-position: -1104px -530px; width: 105px; height: 105px; } .Mount_Head_Cheetah-CottonCandyBlue { background-image: url(spritesmith-main-7.png); - background-position: -530px -1007px; + background-position: -1104px -636px; width: 105px; height: 105px; } .Mount_Head_Cheetah-CottonCandyPink { background-image: url(spritesmith-main-7.png); - background-position: -636px -1007px; + background-position: -1104px -742px; width: 105px; height: 105px; } .Mount_Head_Cheetah-Desert { background-image: url(spritesmith-main-7.png); - background-position: -742px -1007px; + background-position: -1104px -848px; width: 105px; height: 105px; } .Mount_Head_Cheetah-Golden { background-image: url(spritesmith-main-7.png); - background-position: -848px -1007px; + background-position: 0px -1007px; width: 105px; height: 105px; } .Mount_Head_Cheetah-Red { background-image: url(spritesmith-main-7.png); - background-position: -954px -1007px; + background-position: -106px -1007px; width: 105px; height: 105px; } .Mount_Head_Cheetah-Shade { background-image: url(spritesmith-main-7.png); - background-position: -1060px -1007px; + background-position: -212px -1007px; width: 105px; height: 105px; } .Mount_Head_Cheetah-Skeleton { background-image: url(spritesmith-main-7.png); - background-position: -1210px 0px; + background-position: -318px -1007px; width: 105px; height: 105px; } .Mount_Head_Cheetah-White { background-image: url(spritesmith-main-7.png); - background-position: -1210px -106px; + background-position: -424px -1007px; width: 105px; height: 105px; } .Mount_Head_Cheetah-Zombie { background-image: url(spritesmith-main-7.png); - background-position: -1210px -212px; + background-position: -530px -1007px; width: 105px; height: 105px; } @@ -666,319 +618,319 @@ } .Mount_Head_Deer-Base { background-image: url(spritesmith-main-7.png); - background-position: -318px -1113px; + background-position: -1210px -530px; width: 105px; height: 105px; } .Mount_Head_Deer-CottonCandyBlue { background-image: url(spritesmith-main-7.png); - background-position: -424px -1113px; + background-position: -1210px -636px; width: 105px; height: 105px; } .Mount_Head_Deer-CottonCandyPink { background-image: url(spritesmith-main-7.png); - background-position: -530px -1113px; + background-position: -1210px -742px; width: 105px; height: 105px; } .Mount_Head_Deer-Desert { background-image: url(spritesmith-main-7.png); - background-position: -636px -1113px; + background-position: -1210px -848px; width: 105px; height: 105px; } .Mount_Head_Deer-Golden { background-image: url(spritesmith-main-7.png); - background-position: -742px -1113px; + background-position: -1210px -954px; width: 105px; height: 105px; } .Mount_Head_Deer-Red { background-image: url(spritesmith-main-7.png); - background-position: -892px 0px; + background-position: 0px -1113px; width: 105px; height: 105px; } .Mount_Head_Deer-Shade { background-image: url(spritesmith-main-7.png); - background-position: -954px -1113px; + background-position: -106px -1113px; width: 105px; height: 105px; } .Mount_Head_Deer-Skeleton { background-image: url(spritesmith-main-7.png); - background-position: -1060px -1113px; + background-position: -212px -1113px; width: 105px; height: 105px; } .Mount_Head_Deer-White { background-image: url(spritesmith-main-7.png); - background-position: -1166px -1113px; + background-position: -318px -1113px; width: 105px; height: 105px; } .Mount_Head_Deer-Zombie { background-image: url(spritesmith-main-7.png); - background-position: -1316px 0px; + background-position: -424px -1113px; width: 105px; height: 105px; } .Mount_Head_Dragon-Base { background-image: url(spritesmith-main-7.png); - background-position: -1316px -106px; + background-position: -530px -1113px; width: 105px; height: 105px; } .Mount_Head_Dragon-CottonCandyBlue { background-image: url(spritesmith-main-7.png); - background-position: -1316px -212px; + background-position: -636px -1113px; width: 105px; height: 105px; } .Mount_Head_Dragon-CottonCandyPink { background-image: url(spritesmith-main-7.png); - background-position: -1316px -318px; + background-position: -742px -1113px; width: 105px; height: 105px; } .Mount_Head_Dragon-Desert { background-image: url(spritesmith-main-7.png); - background-position: -1316px -424px; + background-position: -892px 0px; width: 105px; height: 105px; } .Mount_Head_Dragon-Golden { background-image: url(spritesmith-main-7.png); - background-position: -1316px -530px; + background-position: -954px -1113px; width: 105px; height: 105px; } .Mount_Head_Dragon-Red { background-image: url(spritesmith-main-7.png); - background-position: -1316px -636px; + background-position: -1060px -1113px; width: 105px; height: 105px; } .Mount_Head_Dragon-Shade { background-image: url(spritesmith-main-7.png); - background-position: -1316px -742px; + background-position: -1166px -1113px; width: 105px; height: 105px; } .Mount_Head_Dragon-Skeleton { background-image: url(spritesmith-main-7.png); - background-position: -1316px -848px; + background-position: -1316px 0px; width: 105px; height: 105px; } .Mount_Head_Dragon-Spooky { background-image: url(spritesmith-main-7.png); - background-position: -1316px -954px; + background-position: -1316px -106px; width: 105px; height: 105px; } .Mount_Head_Dragon-White { background-image: url(spritesmith-main-7.png); - background-position: -1316px -1060px; + background-position: -1316px -212px; width: 105px; height: 105px; } .Mount_Head_Dragon-Zombie { background-image: url(spritesmith-main-7.png); - background-position: 0px -1219px; + background-position: -1316px -318px; width: 105px; height: 105px; } .Mount_Head_Egg-Base { background-image: url(spritesmith-main-7.png); - background-position: -106px -1219px; + background-position: -1316px -424px; width: 105px; height: 105px; } .Mount_Head_Egg-CottonCandyBlue { background-image: url(spritesmith-main-7.png); - background-position: -212px -1219px; + background-position: -1316px -530px; width: 105px; height: 105px; } .Mount_Head_Egg-CottonCandyPink { background-image: url(spritesmith-main-7.png); - background-position: -318px -1219px; + background-position: -1316px -636px; width: 105px; height: 105px; } .Mount_Head_Egg-Desert { background-image: url(spritesmith-main-7.png); - background-position: -424px -1219px; + background-position: -1316px -742px; width: 105px; height: 105px; } .Mount_Head_Egg-Golden { background-image: url(spritesmith-main-7.png); - background-position: -530px -1219px; + background-position: -1316px -848px; width: 105px; height: 105px; } .Mount_Head_Egg-Red { background-image: url(spritesmith-main-7.png); - background-position: -636px -1219px; + background-position: -1316px -954px; width: 105px; height: 105px; } .Mount_Head_Egg-Shade { background-image: url(spritesmith-main-7.png); - background-position: -742px -1219px; + background-position: -1316px -1060px; width: 105px; height: 105px; } .Mount_Head_Egg-Skeleton { background-image: url(spritesmith-main-7.png); - background-position: -848px -1219px; + background-position: 0px -1219px; width: 105px; height: 105px; } .Mount_Head_Egg-White { background-image: url(spritesmith-main-7.png); - background-position: -954px -1219px; + background-position: -106px -1219px; width: 105px; height: 105px; } .Mount_Head_Egg-Zombie { background-image: url(spritesmith-main-7.png); - background-position: -1060px -1219px; + background-position: -212px -1219px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-Base { background-image: url(spritesmith-main-7.png); - background-position: -1166px -1219px; + background-position: -318px -1219px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-CottonCandyBlue { background-image: url(spritesmith-main-7.png); - background-position: -1272px -1219px; + background-position: -424px -1219px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-CottonCandyPink { background-image: url(spritesmith-main-7.png); - background-position: -1422px 0px; + background-position: -530px -1219px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-Desert { background-image: url(spritesmith-main-7.png); - background-position: -1422px -106px; + background-position: -636px -1219px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-Golden { background-image: url(spritesmith-main-7.png); - background-position: -1422px -212px; + background-position: -742px -1219px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-Red { background-image: url(spritesmith-main-7.png); - background-position: -1422px -318px; + background-position: -848px -1219px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-Shade { background-image: url(spritesmith-main-7.png); - background-position: -1422px -424px; + background-position: -954px -1219px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-Skeleton { background-image: url(spritesmith-main-7.png); - background-position: -1422px -530px; + background-position: -1060px -1219px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-Spooky { background-image: url(spritesmith-main-7.png); - background-position: -1422px -636px; + background-position: -1166px -1219px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-White { background-image: url(spritesmith-main-7.png); - background-position: -1422px -742px; + background-position: -1272px -1219px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-Zombie { background-image: url(spritesmith-main-7.png); - background-position: -1422px -848px; + background-position: -1422px 0px; width: 105px; height: 105px; } .Mount_Head_Fox-Base { background-image: url(spritesmith-main-7.png); - background-position: -1422px -954px; + background-position: -1422px -106px; width: 105px; height: 105px; } .Mount_Head_Fox-CottonCandyBlue { background-image: url(spritesmith-main-7.png); - background-position: -1422px -1060px; + background-position: -1422px -212px; width: 105px; height: 105px; } .Mount_Head_Fox-CottonCandyPink { background-image: url(spritesmith-main-7.png); - background-position: -1422px -1166px; + background-position: -1422px -318px; width: 105px; height: 105px; } .Mount_Head_Fox-Desert { background-image: url(spritesmith-main-7.png); - background-position: 0px -1325px; + background-position: -1422px -424px; width: 105px; height: 105px; } .Mount_Head_Fox-Golden { background-image: url(spritesmith-main-7.png); - background-position: -106px -1325px; + background-position: -1422px -530px; width: 105px; height: 105px; } .Mount_Head_Fox-Red { background-image: url(spritesmith-main-7.png); - background-position: -212px -1325px; + background-position: -1422px -636px; width: 105px; height: 105px; } .Mount_Head_Fox-Shade { background-image: url(spritesmith-main-7.png); - background-position: -318px -1325px; + background-position: -1422px -742px; width: 105px; height: 105px; } .Mount_Head_Fox-Skeleton { background-image: url(spritesmith-main-7.png); - background-position: -424px -1325px; + background-position: -1422px -848px; width: 105px; height: 105px; } .Mount_Head_Fox-Spooky { background-image: url(spritesmith-main-7.png); - background-position: -530px -1325px; + background-position: -1422px -954px; width: 105px; height: 105px; } .Mount_Head_Fox-White { background-image: url(spritesmith-main-7.png); - background-position: -636px -1325px; + background-position: -1422px -1060px; width: 105px; height: 105px; } .Mount_Head_Fox-Zombie { background-image: url(spritesmith-main-7.png); - background-position: -742px -1325px; + background-position: -1422px -1166px; width: 105px; height: 105px; } @@ -1044,187 +996,187 @@ } .Mount_Head_Gryphon-Base { background-image: url(spritesmith-main-7.png); - background-position: -1528px -424px; + background-position: -1060px -1325px; width: 105px; height: 105px; } .Mount_Head_Gryphon-CottonCandyBlue { background-image: url(spritesmith-main-7.png); - background-position: -1528px -530px; + background-position: -1166px -1325px; width: 105px; height: 105px; } .Mount_Head_Gryphon-CottonCandyPink { background-image: url(spritesmith-main-7.png); - background-position: -1528px -636px; + background-position: -1272px -1325px; width: 105px; height: 105px; } .Mount_Head_Gryphon-Desert { background-image: url(spritesmith-main-7.png); - background-position: -1528px -742px; + background-position: -1378px -1325px; width: 105px; height: 105px; } .Mount_Head_Gryphon-Golden { background-image: url(spritesmith-main-7.png); - background-position: -1528px -848px; + background-position: -1528px 0px; width: 105px; height: 105px; } .Mount_Head_Gryphon-Red { background-image: url(spritesmith-main-7.png); - background-position: -1528px -954px; + background-position: -1528px -106px; width: 105px; height: 105px; } .Mount_Head_Gryphon-RoyalPurple { background-image: url(spritesmith-main-7.png); - background-position: -1528px -1060px; + background-position: -1528px -212px; width: 105px; height: 105px; } .Mount_Head_Gryphon-Shade { background-image: url(spritesmith-main-7.png); - background-position: -1528px -1166px; + background-position: -1528px -318px; width: 105px; height: 105px; } .Mount_Head_Gryphon-Skeleton { background-image: url(spritesmith-main-7.png); - background-position: -1528px -1272px; + background-position: -1528px -424px; width: 105px; height: 105px; } .Mount_Head_Gryphon-White { background-image: url(spritesmith-main-7.png); - background-position: 0px -1431px; + background-position: -1528px -530px; width: 105px; height: 105px; } .Mount_Head_Gryphon-Zombie { background-image: url(spritesmith-main-7.png); - background-position: -106px -1431px; + background-position: -1528px -636px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-Base { background-image: url(spritesmith-main-7.png); - background-position: -212px -1431px; + background-position: -1528px -742px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-CottonCandyBlue { background-image: url(spritesmith-main-7.png); - background-position: -318px -1431px; + background-position: -1528px -848px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-CottonCandyPink { background-image: url(spritesmith-main-7.png); - background-position: -424px -1431px; + background-position: -1528px -954px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-Desert { background-image: url(spritesmith-main-7.png); - background-position: -530px -1431px; + background-position: -1528px -1060px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-Golden { background-image: url(spritesmith-main-7.png); - background-position: -636px -1431px; + background-position: -1528px -1166px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-Red { background-image: url(spritesmith-main-7.png); - background-position: -742px -1431px; + background-position: -1528px -1272px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-Shade { background-image: url(spritesmith-main-7.png); - background-position: -848px -1431px; + background-position: 0px -1431px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-Skeleton { background-image: url(spritesmith-main-7.png); - background-position: -954px -1431px; + background-position: -106px -1431px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-White { background-image: url(spritesmith-main-7.png); - background-position: -1060px -1431px; + background-position: -212px -1431px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-Zombie { background-image: url(spritesmith-main-7.png); - background-position: -1166px -1431px; + background-position: -318px -1431px; width: 105px; height: 105px; } .Mount_Head_Horse-Base { background-image: url(spritesmith-main-7.png); - background-position: -1272px -1431px; + background-position: -424px -1431px; width: 105px; height: 105px; } .Mount_Head_Horse-CottonCandyBlue { background-image: url(spritesmith-main-7.png); - background-position: -1378px -1431px; + background-position: -530px -1431px; width: 105px; height: 105px; } .Mount_Head_Horse-CottonCandyPink { background-image: url(spritesmith-main-7.png); - background-position: -1484px -1431px; + background-position: -636px -1431px; width: 105px; height: 105px; } .Mount_Head_Horse-Desert { background-image: url(spritesmith-main-7.png); - background-position: -1634px 0px; + background-position: -742px -1431px; width: 105px; height: 105px; } .Mount_Head_Horse-Golden { background-image: url(spritesmith-main-7.png); - background-position: -1634px -106px; + background-position: -848px -1431px; width: 105px; height: 105px; } .Mount_Head_Horse-Red { background-image: url(spritesmith-main-7.png); - background-position: -1634px -212px; + background-position: -954px -1431px; width: 105px; height: 105px; } .Mount_Head_Horse-Shade { background-image: url(spritesmith-main-7.png); - background-position: -1634px -318px; + background-position: -1060px -1431px; width: 105px; height: 105px; } .Mount_Head_Horse-Skeleton { background-image: url(spritesmith-main-7.png); - background-position: -1634px -424px; + background-position: -1166px -1431px; width: 105px; height: 105px; } .Mount_Head_Horse-White { background-image: url(spritesmith-main-7.png); - background-position: -1634px -530px; + background-position: -1272px -1431px; width: 105px; height: 105px; } .Mount_Head_Horse-Zombie { background-image: url(spritesmith-main-7.png); - background-position: -1634px -636px; + background-position: -1378px -1431px; width: 105px; height: 105px; } @@ -1236,49 +1188,49 @@ } .Mount_Head_LionCub-Base { background-image: url(spritesmith-main-7.png); - background-position: -1634px -848px; + background-position: -1634px 0px; width: 105px; height: 105px; } .Mount_Head_LionCub-CottonCandyBlue { background-image: url(spritesmith-main-7.png); - background-position: -1634px -954px; + background-position: -1634px -106px; width: 105px; height: 105px; } .Mount_Head_LionCub-CottonCandyPink { background-image: url(spritesmith-main-7.png); - background-position: -1634px -1060px; + background-position: -1634px -212px; width: 105px; height: 105px; } .Mount_Head_LionCub-Desert { background-image: url(spritesmith-main-7.png); - background-position: -1634px -1166px; + background-position: -1634px -318px; width: 105px; height: 105px; } .Mount_Head_LionCub-Ethereal { background-image: url(spritesmith-main-7.png); - background-position: -1634px -1272px; + background-position: -1634px -424px; width: 105px; height: 105px; } .Mount_Head_LionCub-Golden { background-image: url(spritesmith-main-7.png); - background-position: -1634px -1378px; + background-position: -1634px -530px; width: 105px; height: 105px; } .Mount_Head_LionCub-Red { background-image: url(spritesmith-main-7.png); - background-position: 0px -1537px; + background-position: -1634px -636px; width: 105px; height: 105px; } .Mount_Head_LionCub-Shade { background-image: url(spritesmith-main-7.png); - background-position: -106px -1537px; + background-position: -1634px -742px; width: 105px; height: 105px; } @@ -1290,19 +1242,19 @@ } .Mount_Head_LionCub-Spooky { background-image: url(spritesmith-main-7.png); - background-position: -318px -1537px; + background-position: -1634px -954px; width: 105px; height: 105px; } .Mount_Head_LionCub-White { background-image: url(spritesmith-main-7.png); - background-position: -424px -1537px; + background-position: -1634px -1060px; width: 105px; height: 105px; } .Mount_Head_LionCub-Zombie { background-image: url(spritesmith-main-7.png); - background-position: -530px -1537px; + background-position: -1634px -1166px; width: 105px; height: 105px; } @@ -1320,77 +1272,125 @@ } .Mount_Head_Octopus-Base { background-image: url(spritesmith-main-7.png); - background-position: -848px -1537px; + background-position: 0px -1537px; width: 105px; height: 105px; } .Mount_Head_Octopus-CottonCandyBlue { background-image: url(spritesmith-main-7.png); - background-position: -954px -1537px; + background-position: -106px -1537px; width: 105px; height: 105px; } .Mount_Head_Octopus-CottonCandyPink { background-image: url(spritesmith-main-7.png); - background-position: -1060px -1537px; + background-position: -212px -1537px; width: 105px; height: 105px; } .Mount_Head_Octopus-Desert { background-image: url(spritesmith-main-7.png); - background-position: -1166px -1537px; + background-position: -318px -1537px; width: 105px; height: 105px; } .Mount_Head_Octopus-Golden { background-image: url(spritesmith-main-7.png); - background-position: -1272px -1537px; + background-position: -424px -1537px; width: 105px; height: 105px; } .Mount_Head_Octopus-Red { background-image: url(spritesmith-main-7.png); - background-position: -1378px -1537px; + background-position: -530px -1537px; width: 105px; height: 105px; } .Mount_Head_Octopus-Shade { background-image: url(spritesmith-main-7.png); - background-position: -1484px -1537px; + background-position: -636px -1537px; width: 105px; height: 105px; } .Mount_Head_Octopus-Skeleton { background-image: url(spritesmith-main-7.png); - background-position: -1590px -1537px; + background-position: -742px -1537px; width: 105px; height: 105px; } .Mount_Head_Octopus-White { background-image: url(spritesmith-main-7.png); - background-position: -1740px 0px; + background-position: -848px -1537px; width: 105px; height: 105px; } .Mount_Head_Octopus-Zombie { background-image: url(spritesmith-main-7.png); - background-position: -1740px -106px; + background-position: -954px -1537px; width: 105px; height: 105px; } .Mount_Head_Orca-Base { background-image: url(spritesmith-main-7.png); - background-position: -1740px -212px; + background-position: -1060px -1537px; width: 105px; height: 105px; } .Mount_Head_Owl-Base { background-image: url(spritesmith-main-7.png); - background-position: -1634px -742px; + background-position: -1166px -1537px; width: 105px; height: 105px; } .Mount_Head_Owl-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -1272px -1537px; + width: 105px; + height: 105px; +} +.Mount_Head_Owl-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -1378px -1537px; + width: 105px; + height: 105px; +} +.Mount_Head_Owl-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -1484px -1537px; + width: 105px; + height: 105px; +} +.Mount_Head_Owl-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -1590px -1537px; + width: 105px; + height: 105px; +} +.Mount_Head_Owl-Red { + background-image: url(spritesmith-main-7.png); + background-position: -1740px 0px; + width: 105px; + height: 105px; +} +.Mount_Head_Owl-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -1740px -106px; + width: 105px; + height: 105px; +} +.Mount_Head_Owl-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -1740px -212px; + width: 105px; + height: 105px; +} +.Mount_Head_Owl-White { + background-image: url(spritesmith-main-7.png); + background-position: -1484px -1431px; + width: 105px; + height: 105px; +} +.Mount_Head_Owl-Zombie { background-image: url(spritesmith-main-7.png); background-position: -1740px -318px; width: 105px; diff --git a/common/dist/sprites/spritesmith-main-7.png b/common/dist/sprites/spritesmith-main-7.png index 4c2e9f8d7f..d6829cda58 100644 Binary files a/common/dist/sprites/spritesmith-main-7.png and b/common/dist/sprites/spritesmith-main-7.png differ diff --git a/common/dist/sprites/spritesmith-main-8.css b/common/dist/sprites/spritesmith-main-8.css index a6cd963bab..c166eb0437 100644 --- a/common/dist/sprites/spritesmith-main-8.css +++ b/common/dist/sprites/spritesmith-main-8.css @@ -1,663 +1,615 @@ -.Mount_Head_Owl-CottonCandyPink { - background-image: url(spritesmith-main-8.png); - background-position: -1060px -1104px; - width: 105px; - height: 105px; -} -.Mount_Head_Owl-Desert { - background-image: url(spritesmith-main-8.png); - background-position: -954px -1210px; - width: 105px; - height: 105px; -} -.Mount_Head_Owl-Golden { - background-image: url(spritesmith-main-8.png); - background-position: -1210px 0px; - width: 105px; - height: 105px; -} -.Mount_Head_Owl-Red { - background-image: url(spritesmith-main-8.png); - background-position: -1210px -106px; - width: 105px; - height: 105px; -} -.Mount_Head_Owl-Shade { - background-image: url(spritesmith-main-8.png); - background-position: -1210px -212px; - width: 105px; - height: 105px; -} -.Mount_Head_Owl-Skeleton { - background-image: url(spritesmith-main-8.png); - background-position: -1210px -318px; - width: 105px; - height: 105px; -} -.Mount_Head_Owl-White { - background-image: url(spritesmith-main-8.png); - background-position: -1210px -424px; - width: 105px; - height: 105px; -} -.Mount_Head_Owl-Zombie { - background-image: url(spritesmith-main-8.png); - background-position: -1210px -530px; - width: 105px; - height: 105px; -} .Mount_Head_PandaCub-Base { - background-image: url(spritesmith-main-8.png); - background-position: -1210px -636px; - width: 105px; - height: 105px; -} -.Mount_Head_PandaCub-CottonCandyBlue { - background-image: url(spritesmith-main-8.png); - background-position: -1210px -742px; - width: 105px; - height: 105px; -} -.Mount_Head_PandaCub-CottonCandyPink { - background-image: url(spritesmith-main-8.png); - background-position: -1210px -848px; - width: 105px; - height: 105px; -} -.Mount_Head_PandaCub-Desert { - background-image: url(spritesmith-main-8.png); - background-position: -1316px -848px; - width: 105px; - height: 105px; -} -.Mount_Head_PandaCub-Golden { - background-image: url(spritesmith-main-8.png); - background-position: -1316px -954px; - width: 105px; - height: 105px; -} -.Mount_Head_PandaCub-Red { - background-image: url(spritesmith-main-8.png); - background-position: -1316px -1060px; - width: 105px; - height: 105px; -} -.Mount_Head_PandaCub-Shade { - background-image: url(spritesmith-main-8.png); - background-position: -1316px -1166px; - width: 105px; - height: 105px; -} -.Mount_Head_PandaCub-Skeleton { - background-image: url(spritesmith-main-8.png); - background-position: 0px -1316px; - width: 105px; - height: 105px; -} -.Mount_Head_PandaCub-Spooky { - background-image: url(spritesmith-main-8.png); - background-position: -106px -1316px; - width: 105px; - height: 105px; -} -.Mount_Head_PandaCub-White { - background-image: url(spritesmith-main-8.png); - background-position: -212px -1316px; - width: 105px; - height: 105px; -} -.Mount_Head_PandaCub-Zombie { - background-image: url(spritesmith-main-8.png); - background-position: -318px -1316px; - width: 105px; - height: 105px; -} -.Mount_Head_Parrot-Base { - background-image: url(spritesmith-main-8.png); - background-position: -424px -1316px; - width: 105px; - height: 105px; -} -.Mount_Head_Parrot-CottonCandyBlue { - background-image: url(spritesmith-main-8.png); - background-position: -530px -1316px; - width: 105px; - height: 105px; -} -.Mount_Head_Parrot-CottonCandyPink { - background-image: url(spritesmith-main-8.png); - background-position: -636px -1316px; - width: 105px; - height: 105px; -} -.Mount_Head_Parrot-Desert { - background-image: url(spritesmith-main-8.png); - background-position: -242px -544px; - width: 105px; - height: 105px; -} -.Mount_Head_Parrot-Golden { - background-image: url(spritesmith-main-8.png); - background-position: -348px -544px; - width: 105px; - height: 105px; -} -.Mount_Head_Parrot-Red { - background-image: url(spritesmith-main-8.png); - background-position: -454px -544px; - width: 105px; - height: 105px; -} -.Mount_Head_Parrot-Shade { - background-image: url(spritesmith-main-8.png); - background-position: -560px -544px; - width: 105px; - height: 105px; -} -.Mount_Head_Parrot-Skeleton { - background-image: url(spritesmith-main-8.png); - background-position: -680px 0px; - width: 105px; - height: 105px; -} -.Mount_Head_Parrot-White { - background-image: url(spritesmith-main-8.png); - background-position: -680px -106px; - width: 105px; - height: 105px; -} -.Mount_Head_Parrot-Zombie { - background-image: url(spritesmith-main-8.png); - background-position: -680px -212px; - width: 105px; - height: 105px; -} -.Mount_Head_Penguin-Base { - background-image: url(spritesmith-main-8.png); - background-position: -680px -318px; - width: 105px; - height: 105px; -} -.Mount_Head_Penguin-CottonCandyBlue { - background-image: url(spritesmith-main-8.png); - background-position: -680px -424px; - width: 105px; - height: 105px; -} -.Mount_Head_Penguin-CottonCandyPink { - background-image: url(spritesmith-main-8.png); - background-position: -680px -530px; - width: 105px; - height: 105px; -} -.Mount_Head_Penguin-Desert { - background-image: url(spritesmith-main-8.png); - background-position: 0px -680px; - width: 105px; - height: 105px; -} -.Mount_Head_Penguin-Golden { - background-image: url(spritesmith-main-8.png); - background-position: -106px -680px; - width: 105px; - height: 105px; -} -.Mount_Head_Penguin-Red { - background-image: url(spritesmith-main-8.png); - background-position: -212px -680px; - width: 105px; - height: 105px; -} -.Mount_Head_Penguin-Shade { - background-image: url(spritesmith-main-8.png); - background-position: -318px -680px; - width: 105px; - height: 105px; -} -.Mount_Head_Penguin-Skeleton { - background-image: url(spritesmith-main-8.png); - background-position: -424px -680px; - width: 105px; - height: 105px; -} -.Mount_Head_Penguin-White { - background-image: url(spritesmith-main-8.png); - background-position: -530px -680px; - width: 105px; - height: 105px; -} -.Mount_Head_Penguin-Zombie { - background-image: url(spritesmith-main-8.png); - background-position: -636px -680px; - width: 105px; - height: 105px; -} -.Mount_Head_Phoenix-Base { - background-image: url(spritesmith-main-8.png); - background-position: -786px 0px; - width: 105px; - height: 105px; -} -.Mount_Head_Rat-Base { - background-image: url(spritesmith-main-8.png); - background-position: -786px -106px; - width: 105px; - height: 105px; -} -.Mount_Head_Rat-CottonCandyBlue { - background-image: url(spritesmith-main-8.png); - background-position: -786px -212px; - width: 105px; - height: 105px; -} -.Mount_Head_Rat-CottonCandyPink { - background-image: url(spritesmith-main-8.png); - background-position: -786px -318px; - width: 105px; - height: 105px; -} -.Mount_Head_Rat-Desert { - background-image: url(spritesmith-main-8.png); - background-position: -786px -424px; - width: 105px; - height: 105px; -} -.Mount_Head_Rat-Golden { - background-image: url(spritesmith-main-8.png); - background-position: -786px -530px; - width: 105px; - height: 105px; -} -.Mount_Head_Rat-Red { - background-image: url(spritesmith-main-8.png); - background-position: -786px -636px; - width: 105px; - height: 105px; -} -.Mount_Head_Rat-Shade { - background-image: url(spritesmith-main-8.png); - background-position: 0px -786px; - width: 105px; - height: 105px; -} -.Mount_Head_Rat-Skeleton { - background-image: url(spritesmith-main-8.png); - background-position: -106px -786px; - width: 105px; - height: 105px; -} -.Mount_Head_Rat-White { - background-image: url(spritesmith-main-8.png); - background-position: -212px -786px; - width: 105px; - height: 105px; -} -.Mount_Head_Rat-Zombie { - background-image: url(spritesmith-main-8.png); - background-position: -318px -786px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-Base { - background-image: url(spritesmith-main-8.png); - background-position: -424px -786px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-CottonCandyBlue { - background-image: url(spritesmith-main-8.png); - background-position: -530px -786px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-CottonCandyPink { - background-image: url(spritesmith-main-8.png); - background-position: -636px -786px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-Desert { - background-image: url(spritesmith-main-8.png); - background-position: -742px -786px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-Golden { - background-image: url(spritesmith-main-8.png); - background-position: -892px 0px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-Red { - background-image: url(spritesmith-main-8.png); - background-position: -892px -106px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-Shade { - background-image: url(spritesmith-main-8.png); - background-position: -892px -212px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-Skeleton { - background-image: url(spritesmith-main-8.png); - background-position: -892px -318px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-White { - background-image: url(spritesmith-main-8.png); - background-position: -892px -424px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-Zombie { - background-image: url(spritesmith-main-8.png); - background-position: -892px -530px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-Base { - background-image: url(spritesmith-main-8.png); - background-position: -892px -636px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-CottonCandyBlue { - background-image: url(spritesmith-main-8.png); - background-position: -892px -742px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-CottonCandyPink { - background-image: url(spritesmith-main-8.png); - background-position: 0px -892px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-Desert { - background-image: url(spritesmith-main-8.png); - background-position: -106px -892px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-Golden { - background-image: url(spritesmith-main-8.png); - background-position: -212px -892px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-Red { - background-image: url(spritesmith-main-8.png); - background-position: -318px -892px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-Shade { - background-image: url(spritesmith-main-8.png); - background-position: -424px -892px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-Skeleton { - background-image: url(spritesmith-main-8.png); - background-position: -530px -892px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-White { - background-image: url(spritesmith-main-8.png); - background-position: -636px -892px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-Zombie { - background-image: url(spritesmith-main-8.png); - background-position: -742px -892px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-Base { - background-image: url(spritesmith-main-8.png); - background-position: -848px -892px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-CottonCandyBlue { - background-image: url(spritesmith-main-8.png); - background-position: -998px 0px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-CottonCandyPink { - background-image: url(spritesmith-main-8.png); - background-position: -998px -106px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-Desert { - background-image: url(spritesmith-main-8.png); - background-position: -998px -212px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-Golden { - background-image: url(spritesmith-main-8.png); - background-position: -998px -318px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-Red { - background-image: url(spritesmith-main-8.png); - background-position: -998px -424px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-Shade { - background-image: url(spritesmith-main-8.png); - background-position: -998px -530px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-Skeleton { - background-image: url(spritesmith-main-8.png); - background-position: -998px -636px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-White { - background-image: url(spritesmith-main-8.png); - background-position: -998px -742px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-Zombie { - background-image: url(spritesmith-main-8.png); - background-position: -998px -848px; - width: 105px; - height: 105px; -} -.Mount_Head_Sheep-Base { - background-image: url(spritesmith-main-8.png); - background-position: 0px -998px; - width: 105px; - height: 105px; -} -.Mount_Head_Sheep-CottonCandyBlue { - background-image: url(spritesmith-main-8.png); - background-position: -106px -998px; - width: 105px; - height: 105px; -} -.Mount_Head_Sheep-CottonCandyPink { - background-image: url(spritesmith-main-8.png); - background-position: -212px -998px; - width: 105px; - height: 105px; -} -.Mount_Head_Sheep-Desert { - background-image: url(spritesmith-main-8.png); - background-position: -318px -998px; - width: 105px; - height: 105px; -} -.Mount_Head_Sheep-Golden { - background-image: url(spritesmith-main-8.png); - background-position: -424px -998px; - width: 105px; - height: 105px; -} -.Mount_Head_Sheep-Red { - background-image: url(spritesmith-main-8.png); - background-position: -530px -998px; - width: 105px; - height: 105px; -} -.Mount_Head_Sheep-Shade { - background-image: url(spritesmith-main-8.png); - background-position: -636px -998px; - width: 105px; - height: 105px; -} -.Mount_Head_Sheep-Skeleton { - background-image: url(spritesmith-main-8.png); - background-position: -742px -998px; - width: 105px; - height: 105px; -} -.Mount_Head_Sheep-White { - background-image: url(spritesmith-main-8.png); - background-position: -848px -998px; - width: 105px; - height: 105px; -} -.Mount_Head_Sheep-Zombie { - background-image: url(spritesmith-main-8.png); - background-position: -954px -998px; - width: 105px; - height: 105px; -} -.Mount_Head_Slime-Base { - background-image: url(spritesmith-main-8.png); - background-position: -1104px 0px; - width: 105px; - height: 105px; -} -.Mount_Head_Slime-CottonCandyBlue { - background-image: url(spritesmith-main-8.png); - background-position: -1104px -106px; - width: 105px; - height: 105px; -} -.Mount_Head_Slime-CottonCandyPink { - background-image: url(spritesmith-main-8.png); - background-position: -1104px -212px; - width: 105px; - height: 105px; -} -.Mount_Head_Slime-Desert { - background-image: url(spritesmith-main-8.png); - background-position: -1104px -318px; - width: 105px; - height: 105px; -} -.Mount_Head_Slime-Golden { - background-image: url(spritesmith-main-8.png); - background-position: -1104px -424px; - width: 105px; - height: 105px; -} -.Mount_Head_Slime-Red { - background-image: url(spritesmith-main-8.png); - background-position: -1104px -530px; - width: 105px; - height: 105px; -} -.Mount_Head_Slime-Shade { - background-image: url(spritesmith-main-8.png); - background-position: -1104px -636px; - width: 105px; - height: 105px; -} -.Mount_Head_Slime-Skeleton { - background-image: url(spritesmith-main-8.png); - background-position: -1104px -742px; - width: 105px; - height: 105px; -} -.Mount_Head_Slime-White { - background-image: url(spritesmith-main-8.png); - background-position: -1104px -848px; - width: 105px; - height: 105px; -} -.Mount_Head_Slime-Zombie { - background-image: url(spritesmith-main-8.png); - background-position: -1104px -954px; - width: 105px; - height: 105px; -} -.Mount_Head_Spider-Base { - background-image: url(spritesmith-main-8.png); - background-position: 0px -1104px; - width: 105px; - height: 105px; -} -.Mount_Head_Spider-CottonCandyBlue { - background-image: url(spritesmith-main-8.png); - background-position: -106px -1104px; - width: 105px; - height: 105px; -} -.Mount_Head_Spider-CottonCandyPink { background-image: url(spritesmith-main-8.png); background-position: -212px -1104px; width: 105px; height: 105px; } -.Mount_Head_Spider-Desert { +.Mount_Head_PandaCub-CottonCandyBlue { + background-image: url(spritesmith-main-8.png); + background-position: -1166px -1210px; + width: 105px; + height: 105px; +} +.Mount_Head_PandaCub-CottonCandyPink { background-image: url(spritesmith-main-8.png); background-position: -318px -1104px; width: 105px; height: 105px; } -.Mount_Head_Spider-Golden { +.Mount_Head_PandaCub-Desert { background-image: url(spritesmith-main-8.png); background-position: -424px -1104px; width: 105px; height: 105px; } -.Mount_Head_Spider-Red { +.Mount_Head_PandaCub-Golden { background-image: url(spritesmith-main-8.png); background-position: -530px -1104px; width: 105px; height: 105px; } -.Mount_Head_Spider-Shade { +.Mount_Head_PandaCub-Red { background-image: url(spritesmith-main-8.png); background-position: -636px -1104px; width: 105px; height: 105px; } -.Mount_Head_Spider-Skeleton { +.Mount_Head_PandaCub-Shade { background-image: url(spritesmith-main-8.png); background-position: -742px -1104px; width: 105px; height: 105px; } -.Mount_Head_Spider-White { +.Mount_Head_PandaCub-Skeleton { background-image: url(spritesmith-main-8.png); background-position: -848px -1104px; width: 105px; height: 105px; } -.Mount_Head_Spider-Zombie { +.Mount_Head_PandaCub-Spooky { background-image: url(spritesmith-main-8.png); background-position: -954px -1104px; width: 105px; height: 105px; } +.Mount_Head_PandaCub-White { + background-image: url(spritesmith-main-8.png); + background-position: -1060px -1104px; + width: 105px; + height: 105px; +} +.Mount_Head_PandaCub-Zombie { + background-image: url(spritesmith-main-8.png); + background-position: -1210px 0px; + width: 105px; + height: 105px; +} +.Mount_Head_Parrot-Base { + background-image: url(spritesmith-main-8.png); + background-position: -1316px 0px; + width: 105px; + height: 105px; +} +.Mount_Head_Parrot-CottonCandyBlue { + background-image: url(spritesmith-main-8.png); + background-position: -1316px -106px; + width: 105px; + height: 105px; +} +.Mount_Head_Parrot-CottonCandyPink { + background-image: url(spritesmith-main-8.png); + background-position: -1316px -212px; + width: 105px; + height: 105px; +} +.Mount_Head_Parrot-Desert { + background-image: url(spritesmith-main-8.png); + background-position: -1316px -318px; + width: 105px; + height: 105px; +} +.Mount_Head_Parrot-Golden { + background-image: url(spritesmith-main-8.png); + background-position: -1316px -424px; + width: 105px; + height: 105px; +} +.Mount_Head_Parrot-Red { + background-image: url(spritesmith-main-8.png); + background-position: -1316px -530px; + width: 105px; + height: 105px; +} +.Mount_Head_Parrot-Shade { + background-image: url(spritesmith-main-8.png); + background-position: -1316px -636px; + width: 105px; + height: 105px; +} +.Mount_Head_Parrot-Skeleton { + background-image: url(spritesmith-main-8.png); + background-position: -1316px -742px; + width: 105px; + height: 105px; +} +.Mount_Head_Parrot-White { + background-image: url(spritesmith-main-8.png); + background-position: -1316px -848px; + width: 105px; + height: 105px; +} +.Mount_Head_Parrot-Zombie { + background-image: url(spritesmith-main-8.png); + background-position: -1316px -954px; + width: 105px; + height: 105px; +} +.Mount_Head_Penguin-Base { + background-image: url(spritesmith-main-8.png); + background-position: -1316px -1060px; + width: 105px; + height: 105px; +} +.Mount_Head_Penguin-CottonCandyBlue { + background-image: url(spritesmith-main-8.png); + background-position: -242px -544px; + width: 105px; + height: 105px; +} +.Mount_Head_Penguin-CottonCandyPink { + background-image: url(spritesmith-main-8.png); + background-position: -348px -544px; + width: 105px; + height: 105px; +} +.Mount_Head_Penguin-Desert { + background-image: url(spritesmith-main-8.png); + background-position: -454px -544px; + width: 105px; + height: 105px; +} +.Mount_Head_Penguin-Golden { + background-image: url(spritesmith-main-8.png); + background-position: -560px -544px; + width: 105px; + height: 105px; +} +.Mount_Head_Penguin-Red { + background-image: url(spritesmith-main-8.png); + background-position: -680px 0px; + width: 105px; + height: 105px; +} +.Mount_Head_Penguin-Shade { + background-image: url(spritesmith-main-8.png); + background-position: -680px -106px; + width: 105px; + height: 105px; +} +.Mount_Head_Penguin-Skeleton { + background-image: url(spritesmith-main-8.png); + background-position: -680px -212px; + width: 105px; + height: 105px; +} +.Mount_Head_Penguin-White { + background-image: url(spritesmith-main-8.png); + background-position: -680px -318px; + width: 105px; + height: 105px; +} +.Mount_Head_Penguin-Zombie { + background-image: url(spritesmith-main-8.png); + background-position: -680px -424px; + width: 105px; + height: 105px; +} +.Mount_Head_Phoenix-Base { + background-image: url(spritesmith-main-8.png); + background-position: -680px -530px; + width: 105px; + height: 105px; +} +.Mount_Head_Rat-Base { + background-image: url(spritesmith-main-8.png); + background-position: 0px -680px; + width: 105px; + height: 105px; +} +.Mount_Head_Rat-CottonCandyBlue { + background-image: url(spritesmith-main-8.png); + background-position: -106px -680px; + width: 105px; + height: 105px; +} +.Mount_Head_Rat-CottonCandyPink { + background-image: url(spritesmith-main-8.png); + background-position: -212px -680px; + width: 105px; + height: 105px; +} +.Mount_Head_Rat-Desert { + background-image: url(spritesmith-main-8.png); + background-position: -318px -680px; + width: 105px; + height: 105px; +} +.Mount_Head_Rat-Golden { + background-image: url(spritesmith-main-8.png); + background-position: -424px -680px; + width: 105px; + height: 105px; +} +.Mount_Head_Rat-Red { + background-image: url(spritesmith-main-8.png); + background-position: -530px -680px; + width: 105px; + height: 105px; +} +.Mount_Head_Rat-Shade { + background-image: url(spritesmith-main-8.png); + background-position: -636px -680px; + width: 105px; + height: 105px; +} +.Mount_Head_Rat-Skeleton { + background-image: url(spritesmith-main-8.png); + background-position: -786px 0px; + width: 105px; + height: 105px; +} +.Mount_Head_Rat-White { + background-image: url(spritesmith-main-8.png); + background-position: -786px -106px; + width: 105px; + height: 105px; +} +.Mount_Head_Rat-Zombie { + background-image: url(spritesmith-main-8.png); + background-position: -786px -212px; + width: 105px; + height: 105px; +} +.Mount_Head_Rock-Base { + background-image: url(spritesmith-main-8.png); + background-position: -786px -318px; + width: 105px; + height: 105px; +} +.Mount_Head_Rock-CottonCandyBlue { + background-image: url(spritesmith-main-8.png); + background-position: -786px -424px; + width: 105px; + height: 105px; +} +.Mount_Head_Rock-CottonCandyPink { + background-image: url(spritesmith-main-8.png); + background-position: -786px -530px; + width: 105px; + height: 105px; +} +.Mount_Head_Rock-Desert { + background-image: url(spritesmith-main-8.png); + background-position: -786px -636px; + width: 105px; + height: 105px; +} +.Mount_Head_Rock-Golden { + background-image: url(spritesmith-main-8.png); + background-position: 0px -786px; + width: 105px; + height: 105px; +} +.Mount_Head_Rock-Red { + background-image: url(spritesmith-main-8.png); + background-position: -106px -786px; + width: 105px; + height: 105px; +} +.Mount_Head_Rock-Shade { + background-image: url(spritesmith-main-8.png); + background-position: -212px -786px; + width: 105px; + height: 105px; +} +.Mount_Head_Rock-Skeleton { + background-image: url(spritesmith-main-8.png); + background-position: -318px -786px; + width: 105px; + height: 105px; +} +.Mount_Head_Rock-White { + background-image: url(spritesmith-main-8.png); + background-position: -424px -786px; + width: 105px; + height: 105px; +} +.Mount_Head_Rock-Zombie { + background-image: url(spritesmith-main-8.png); + background-position: -530px -786px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-Base { + background-image: url(spritesmith-main-8.png); + background-position: -636px -786px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-CottonCandyBlue { + background-image: url(spritesmith-main-8.png); + background-position: -742px -786px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-CottonCandyPink { + background-image: url(spritesmith-main-8.png); + background-position: -892px 0px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-Desert { + background-image: url(spritesmith-main-8.png); + background-position: -892px -106px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-Golden { + background-image: url(spritesmith-main-8.png); + background-position: -892px -212px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-Red { + background-image: url(spritesmith-main-8.png); + background-position: -892px -318px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-Shade { + background-image: url(spritesmith-main-8.png); + background-position: -892px -424px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-Skeleton { + background-image: url(spritesmith-main-8.png); + background-position: -892px -530px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-White { + background-image: url(spritesmith-main-8.png); + background-position: -892px -636px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-Zombie { + background-image: url(spritesmith-main-8.png); + background-position: -892px -742px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-Base { + background-image: url(spritesmith-main-8.png); + background-position: 0px -892px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-CottonCandyBlue { + background-image: url(spritesmith-main-8.png); + background-position: -106px -892px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-CottonCandyPink { + background-image: url(spritesmith-main-8.png); + background-position: -212px -892px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-Desert { + background-image: url(spritesmith-main-8.png); + background-position: -318px -892px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-Golden { + background-image: url(spritesmith-main-8.png); + background-position: -424px -892px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-Red { + background-image: url(spritesmith-main-8.png); + background-position: -530px -892px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-Shade { + background-image: url(spritesmith-main-8.png); + background-position: -636px -892px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-Skeleton { + background-image: url(spritesmith-main-8.png); + background-position: -742px -892px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-White { + background-image: url(spritesmith-main-8.png); + background-position: -848px -892px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-Zombie { + background-image: url(spritesmith-main-8.png); + background-position: -998px 0px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-Base { + background-image: url(spritesmith-main-8.png); + background-position: -998px -106px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-CottonCandyBlue { + background-image: url(spritesmith-main-8.png); + background-position: -998px -212px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-CottonCandyPink { + background-image: url(spritesmith-main-8.png); + background-position: -998px -318px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-Desert { + background-image: url(spritesmith-main-8.png); + background-position: -998px -424px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-Golden { + background-image: url(spritesmith-main-8.png); + background-position: -998px -530px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-Red { + background-image: url(spritesmith-main-8.png); + background-position: -998px -636px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-Shade { + background-image: url(spritesmith-main-8.png); + background-position: -998px -742px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-Skeleton { + background-image: url(spritesmith-main-8.png); + background-position: -998px -848px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-White { + background-image: url(spritesmith-main-8.png); + background-position: 0px -998px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-Zombie { + background-image: url(spritesmith-main-8.png); + background-position: -106px -998px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-Base { + background-image: url(spritesmith-main-8.png); + background-position: -212px -998px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-CottonCandyBlue { + background-image: url(spritesmith-main-8.png); + background-position: -318px -998px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-CottonCandyPink { + background-image: url(spritesmith-main-8.png); + background-position: -424px -998px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-Desert { + background-image: url(spritesmith-main-8.png); + background-position: -530px -998px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-Golden { + background-image: url(spritesmith-main-8.png); + background-position: -636px -998px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-Red { + background-image: url(spritesmith-main-8.png); + background-position: -742px -998px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-Shade { + background-image: url(spritesmith-main-8.png); + background-position: -848px -998px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-Skeleton { + background-image: url(spritesmith-main-8.png); + background-position: -954px -998px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-White { + background-image: url(spritesmith-main-8.png); + background-position: -1104px 0px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-Zombie { + background-image: url(spritesmith-main-8.png); + background-position: -1104px -106px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-Base { + background-image: url(spritesmith-main-8.png); + background-position: -1104px -212px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-CottonCandyBlue { + background-image: url(spritesmith-main-8.png); + background-position: -1104px -318px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-CottonCandyPink { + background-image: url(spritesmith-main-8.png); + background-position: -1104px -424px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-Desert { + background-image: url(spritesmith-main-8.png); + background-position: -1104px -530px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-Golden { + background-image: url(spritesmith-main-8.png); + background-position: -1104px -636px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-Red { + background-image: url(spritesmith-main-8.png); + background-position: -1104px -742px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-Shade { + background-image: url(spritesmith-main-8.png); + background-position: -1104px -848px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-Skeleton { + background-image: url(spritesmith-main-8.png); + background-position: -1104px -954px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-White { + background-image: url(spritesmith-main-8.png); + background-position: 0px -1104px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-Zombie { + background-image: url(spritesmith-main-8.png); + background-position: -106px -1104px; + width: 105px; + height: 105px; +} .Mount_Head_TRex-Base { background-image: url(spritesmith-main-8.png); background-position: -408px -272px; @@ -720,133 +672,133 @@ } .Mount_Head_TigerCub-Base { background-image: url(spritesmith-main-8.png); - background-position: -1210px -954px; + background-position: -1210px -106px; width: 105px; height: 105px; } .Mount_Head_TigerCub-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -1210px -1060px; + background-position: -1210px -212px; width: 105px; height: 105px; } .Mount_Head_TigerCub-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: 0px -1210px; + background-position: -1210px -318px; width: 105px; height: 105px; } .Mount_Head_TigerCub-Desert { background-image: url(spritesmith-main-8.png); - background-position: -106px -1210px; + background-position: -1210px -424px; width: 105px; height: 105px; } .Mount_Head_TigerCub-Golden { background-image: url(spritesmith-main-8.png); - background-position: -212px -1210px; + background-position: -1210px -530px; width: 105px; height: 105px; } .Mount_Head_TigerCub-Red { background-image: url(spritesmith-main-8.png); - background-position: -318px -1210px; + background-position: -1210px -636px; width: 105px; height: 105px; } .Mount_Head_TigerCub-Shade { background-image: url(spritesmith-main-8.png); - background-position: -424px -1210px; + background-position: -1210px -742px; width: 105px; height: 105px; } .Mount_Head_TigerCub-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -530px -1210px; + background-position: -1210px -848px; width: 105px; height: 105px; } .Mount_Head_TigerCub-Spooky { background-image: url(spritesmith-main-8.png); - background-position: -636px -1210px; + background-position: -1210px -954px; width: 105px; height: 105px; } .Mount_Head_TigerCub-White { background-image: url(spritesmith-main-8.png); - background-position: -742px -1210px; + background-position: -1210px -1060px; width: 105px; height: 105px; } .Mount_Head_TigerCub-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -848px -1210px; + background-position: 0px -1210px; width: 105px; height: 105px; } .Mount_Head_Turkey-Base { background-image: url(spritesmith-main-8.png); - background-position: -136px -544px; + background-position: -106px -1210px; width: 105px; height: 105px; } .Mount_Head_Whale-Base { background-image: url(spritesmith-main-8.png); - background-position: -1060px -1210px; + background-position: -212px -1210px; width: 105px; height: 105px; } .Mount_Head_Whale-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -1166px -1210px; + background-position: -318px -1210px; width: 105px; height: 105px; } .Mount_Head_Whale-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -1316px 0px; + background-position: -424px -1210px; width: 105px; height: 105px; } .Mount_Head_Whale-Desert { background-image: url(spritesmith-main-8.png); - background-position: -1316px -106px; + background-position: -530px -1210px; width: 105px; height: 105px; } .Mount_Head_Whale-Golden { background-image: url(spritesmith-main-8.png); - background-position: -1316px -212px; + background-position: -636px -1210px; width: 105px; height: 105px; } .Mount_Head_Whale-Red { background-image: url(spritesmith-main-8.png); - background-position: -1316px -318px; + background-position: -742px -1210px; width: 105px; height: 105px; } .Mount_Head_Whale-Shade { background-image: url(spritesmith-main-8.png); - background-position: -1316px -424px; + background-position: -848px -1210px; width: 105px; height: 105px; } .Mount_Head_Whale-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -1316px -530px; + background-position: -954px -1210px; width: 105px; height: 105px; } .Mount_Head_Whale-White { background-image: url(spritesmith-main-8.png); - background-position: -1316px -636px; + background-position: -1060px -1210px; width: 105px; height: 105px; } .Mount_Head_Whale-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -1316px -742px; + background-position: -136px -544px; width: 105px; height: 105px; } @@ -918,661 +870,727 @@ } .Pet-BearCub-Base { background-image: url(spritesmith-main-8.png); - background-position: -824px -1316px; + background-position: 0px -1316px; width: 81px; height: 99px; } .Pet-BearCub-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -1586px 0px; + background-position: -1148px -1416px; width: 81px; height: 99px; } .Pet-BearCub-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -906px -1316px; + background-position: -82px -1316px; width: 81px; height: 99px; } .Pet-BearCub-Desert { background-image: url(spritesmith-main-8.png); - background-position: -988px -1316px; + background-position: -164px -1316px; width: 81px; height: 99px; } .Pet-BearCub-Golden { background-image: url(spritesmith-main-8.png); - background-position: -1070px -1316px; + background-position: -246px -1316px; width: 81px; height: 99px; } .Pet-BearCub-Polar { background-image: url(spritesmith-main-8.png); - background-position: -1152px -1316px; + background-position: -328px -1316px; width: 81px; height: 99px; } .Pet-BearCub-Red { background-image: url(spritesmith-main-8.png); - background-position: -1234px -1316px; + background-position: -410px -1316px; width: 81px; height: 99px; } .Pet-BearCub-Shade { background-image: url(spritesmith-main-8.png); - background-position: -1316px -1316px; + background-position: -492px -1316px; width: 81px; height: 99px; } .Pet-BearCub-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -1422px 0px; + background-position: -574px -1316px; width: 81px; height: 99px; } .Pet-BearCub-Spooky { background-image: url(spritesmith-main-8.png); - background-position: -1422px -100px; + background-position: -656px -1316px; width: 81px; height: 99px; } .Pet-BearCub-White { background-image: url(spritesmith-main-8.png); - background-position: -1422px -200px; + background-position: -738px -1316px; width: 81px; height: 99px; } .Pet-BearCub-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -1422px -300px; + background-position: -820px -1316px; width: 81px; height: 99px; } .Pet-Bunny-Base { background-image: url(spritesmith-main-8.png); - background-position: -1422px -400px; + background-position: -902px -1316px; width: 81px; height: 99px; } .Pet-Bunny-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -1422px -500px; + background-position: -984px -1316px; width: 81px; height: 99px; } .Pet-Bunny-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -1422px -600px; + background-position: -1066px -1316px; width: 81px; height: 99px; } .Pet-Bunny-Desert { background-image: url(spritesmith-main-8.png); - background-position: -1422px -700px; + background-position: -1148px -1316px; width: 81px; height: 99px; } .Pet-Bunny-Golden { background-image: url(spritesmith-main-8.png); - background-position: -1422px -800px; + background-position: -1230px -1316px; width: 81px; height: 99px; } .Pet-Bunny-Red { background-image: url(spritesmith-main-8.png); - background-position: -1422px -900px; + background-position: -1312px -1316px; width: 81px; height: 99px; } .Pet-Bunny-Shade { background-image: url(spritesmith-main-8.png); - background-position: -1422px -1000px; + background-position: -1422px 0px; width: 81px; height: 99px; } .Pet-Bunny-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -1422px -1100px; + background-position: -1422px -100px; width: 81px; height: 99px; } .Pet-Bunny-White { background-image: url(spritesmith-main-8.png); - background-position: -1422px -1200px; + background-position: -1422px -200px; width: 81px; height: 99px; } .Pet-Bunny-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -1422px -1300px; + background-position: -1422px -300px; width: 81px; height: 99px; } .Pet-Cactus-Base { background-image: url(spritesmith-main-8.png); - background-position: -1504px 0px; + background-position: -1422px -400px; width: 81px; height: 99px; } .Pet-Cactus-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -1504px -100px; + background-position: -1422px -500px; width: 81px; height: 99px; } .Pet-Cactus-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -1504px -200px; + background-position: -1422px -600px; width: 81px; height: 99px; } .Pet-Cactus-Desert { background-image: url(spritesmith-main-8.png); - background-position: -1504px -300px; + background-position: -1422px -700px; width: 81px; height: 99px; } .Pet-Cactus-Golden { background-image: url(spritesmith-main-8.png); - background-position: -1504px -400px; + background-position: -1422px -800px; width: 81px; height: 99px; } .Pet-Cactus-Red { background-image: url(spritesmith-main-8.png); - background-position: -1504px -500px; + background-position: -1422px -900px; width: 81px; height: 99px; } .Pet-Cactus-Shade { background-image: url(spritesmith-main-8.png); - background-position: -1504px -600px; + background-position: -1422px -1000px; width: 81px; height: 99px; } .Pet-Cactus-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -1504px -700px; + background-position: -1422px -1100px; width: 81px; height: 99px; } .Pet-Cactus-Spooky { background-image: url(spritesmith-main-8.png); - background-position: -1504px -800px; + background-position: -1422px -1200px; width: 81px; height: 99px; } .Pet-Cactus-White { background-image: url(spritesmith-main-8.png); - background-position: -1504px -900px; + background-position: -1422px -1300px; width: 81px; height: 99px; } .Pet-Cactus-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -1504px -1000px; + background-position: -1504px 0px; width: 81px; height: 99px; } .Pet-Cheetah-Base { background-image: url(spritesmith-main-8.png); - background-position: -1504px -1100px; + background-position: -1504px -100px; width: 81px; height: 99px; } .Pet-Cheetah-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -1504px -1200px; + background-position: -1504px -200px; width: 81px; height: 99px; } .Pet-Cheetah-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -1504px -1300px; + background-position: -1504px -300px; width: 81px; height: 99px; } .Pet-Cheetah-Desert { background-image: url(spritesmith-main-8.png); - background-position: 0px -1422px; + background-position: -1504px -400px; width: 81px; height: 99px; } .Pet-Cheetah-Golden { background-image: url(spritesmith-main-8.png); - background-position: -82px -1422px; + background-position: -1504px -500px; width: 81px; height: 99px; } .Pet-Cheetah-Red { background-image: url(spritesmith-main-8.png); - background-position: -164px -1422px; + background-position: -1504px -600px; width: 81px; height: 99px; } .Pet-Cheetah-Shade { background-image: url(spritesmith-main-8.png); - background-position: -246px -1422px; + background-position: -1504px -700px; width: 81px; height: 99px; } .Pet-Cheetah-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -328px -1422px; + background-position: -1504px -800px; width: 81px; height: 99px; } .Pet-Cheetah-White { background-image: url(spritesmith-main-8.png); - background-position: -410px -1422px; + background-position: -1504px -900px; width: 81px; height: 99px; } .Pet-Cheetah-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -492px -1422px; + background-position: -1504px -1000px; width: 81px; height: 99px; } .Pet-Cuttlefish-Base { background-image: url(spritesmith-main-8.png); - background-position: -574px -1422px; + background-position: -1504px -1100px; width: 81px; height: 99px; } .Pet-Cuttlefish-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -656px -1422px; + background-position: -1504px -1200px; width: 81px; height: 99px; } .Pet-Cuttlefish-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -738px -1422px; + background-position: -1504px -1300px; width: 81px; height: 99px; } .Pet-Cuttlefish-Desert { background-image: url(spritesmith-main-8.png); - background-position: -820px -1422px; + background-position: 0px -1416px; width: 81px; height: 99px; } .Pet-Cuttlefish-Golden { background-image: url(spritesmith-main-8.png); - background-position: -902px -1422px; + background-position: -82px -1416px; width: 81px; height: 99px; } .Pet-Cuttlefish-Red { background-image: url(spritesmith-main-8.png); - background-position: -984px -1422px; + background-position: -164px -1416px; width: 81px; height: 99px; } .Pet-Cuttlefish-Shade { background-image: url(spritesmith-main-8.png); - background-position: -1066px -1422px; + background-position: -246px -1416px; width: 81px; height: 99px; } .Pet-Cuttlefish-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -1148px -1422px; + background-position: -328px -1416px; width: 81px; height: 99px; } .Pet-Cuttlefish-White { background-image: url(spritesmith-main-8.png); - background-position: -1230px -1422px; + background-position: -410px -1416px; width: 81px; height: 99px; } .Pet-Cuttlefish-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -1312px -1422px; + background-position: -492px -1416px; width: 81px; height: 99px; } .Pet-Deer-Base { background-image: url(spritesmith-main-8.png); - background-position: -1394px -1422px; + background-position: -574px -1416px; width: 81px; height: 99px; } .Pet-Deer-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -1476px -1422px; + background-position: -656px -1416px; width: 81px; height: 99px; } .Pet-Deer-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -742px -1316px; + background-position: -738px -1416px; width: 81px; height: 99px; } .Pet-Deer-Desert { background-image: url(spritesmith-main-8.png); - background-position: -1586px -100px; + background-position: -820px -1416px; width: 81px; height: 99px; } .Pet-Deer-Golden { background-image: url(spritesmith-main-8.png); - background-position: -1586px -200px; + background-position: -902px -1416px; width: 81px; height: 99px; } .Pet-Deer-Red { background-image: url(spritesmith-main-8.png); - background-position: -1586px -300px; + background-position: -984px -1416px; width: 81px; height: 99px; } .Pet-Deer-Shade { background-image: url(spritesmith-main-8.png); - background-position: -1586px -400px; + background-position: -1066px -1416px; width: 81px; height: 99px; } .Pet-Deer-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -1586px -500px; + background-position: -1316px -1166px; width: 81px; height: 99px; } .Pet-Deer-White { background-image: url(spritesmith-main-8.png); - background-position: -1586px -600px; + background-position: -1230px -1416px; width: 81px; height: 99px; } .Pet-Deer-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -1586px -700px; + background-position: -1312px -1416px; width: 81px; height: 99px; } .Pet-Dragon-Base { background-image: url(spritesmith-main-8.png); - background-position: -1586px -800px; + background-position: -1394px -1416px; width: 81px; height: 99px; } .Pet-Dragon-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -1586px -900px; + background-position: -1476px -1416px; width: 81px; height: 99px; } .Pet-Dragon-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -1586px -1000px; + background-position: -1586px 0px; width: 81px; height: 99px; } .Pet-Dragon-Desert { background-image: url(spritesmith-main-8.png); - background-position: -1586px -1100px; + background-position: -1586px -100px; width: 81px; height: 99px; } .Pet-Dragon-Golden { background-image: url(spritesmith-main-8.png); - background-position: -1586px -1200px; + background-position: -1586px -200px; width: 81px; height: 99px; } .Pet-Dragon-Hydra { background-image: url(spritesmith-main-8.png); - background-position: -1586px -1300px; + background-position: -1586px -300px; width: 81px; height: 99px; } .Pet-Dragon-Red { background-image: url(spritesmith-main-8.png); - background-position: -1586px -1400px; + background-position: -1586px -400px; width: 81px; height: 99px; } .Pet-Dragon-Shade { background-image: url(spritesmith-main-8.png); - background-position: 0px -1522px; + background-position: -1586px -500px; width: 81px; height: 99px; } .Pet-Dragon-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -82px -1522px; + background-position: -1586px -600px; width: 81px; height: 99px; } .Pet-Dragon-Spooky { background-image: url(spritesmith-main-8.png); - background-position: -164px -1522px; + background-position: -1586px -700px; width: 81px; height: 99px; } .Pet-Dragon-White { background-image: url(spritesmith-main-8.png); - background-position: -246px -1522px; + background-position: -1586px -800px; width: 81px; height: 99px; } .Pet-Dragon-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -328px -1522px; + background-position: -1586px -900px; width: 81px; height: 99px; } .Pet-Egg-Base { background-image: url(spritesmith-main-8.png); - background-position: -410px -1522px; + background-position: -1586px -1000px; width: 81px; height: 99px; } .Pet-Egg-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -492px -1522px; + background-position: -1586px -1100px; width: 81px; height: 99px; } .Pet-Egg-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -574px -1522px; + background-position: -1586px -1200px; width: 81px; height: 99px; } .Pet-Egg-Desert { background-image: url(spritesmith-main-8.png); - background-position: -656px -1522px; + background-position: -1586px -1300px; width: 81px; height: 99px; } .Pet-Egg-Golden { background-image: url(spritesmith-main-8.png); - background-position: -738px -1522px; + background-position: -1586px -1400px; width: 81px; height: 99px; } .Pet-Egg-Red { background-image: url(spritesmith-main-8.png); - background-position: -820px -1522px; + background-position: 0px -1516px; width: 81px; height: 99px; } .Pet-Egg-Shade { background-image: url(spritesmith-main-8.png); - background-position: -902px -1522px; + background-position: -82px -1516px; width: 81px; height: 99px; } .Pet-Egg-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -984px -1522px; + background-position: -164px -1516px; width: 81px; height: 99px; } .Pet-Egg-White { background-image: url(spritesmith-main-8.png); - background-position: -1066px -1522px; + background-position: -246px -1516px; width: 81px; height: 99px; } .Pet-Egg-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -1148px -1522px; + background-position: -328px -1516px; width: 81px; height: 99px; } .Pet-FlyingPig-Base { background-image: url(spritesmith-main-8.png); - background-position: -1230px -1522px; + background-position: -410px -1516px; width: 81px; height: 99px; } .Pet-FlyingPig-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -1312px -1522px; + background-position: -492px -1516px; width: 81px; height: 99px; } .Pet-FlyingPig-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -1394px -1522px; + background-position: -574px -1516px; width: 81px; height: 99px; } .Pet-FlyingPig-Desert { background-image: url(spritesmith-main-8.png); - background-position: -1476px -1522px; + background-position: -656px -1516px; width: 81px; height: 99px; } .Pet-FlyingPig-Golden { background-image: url(spritesmith-main-8.png); - background-position: -1558px -1522px; + background-position: -738px -1516px; width: 81px; height: 99px; } .Pet-FlyingPig-Red { background-image: url(spritesmith-main-8.png); - background-position: -1668px 0px; + background-position: -820px -1516px; width: 81px; height: 99px; } .Pet-FlyingPig-Shade { background-image: url(spritesmith-main-8.png); - background-position: -1668px -100px; + background-position: -902px -1516px; width: 81px; height: 99px; } .Pet-FlyingPig-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -1668px -200px; + background-position: -984px -1516px; width: 81px; height: 99px; } .Pet-FlyingPig-Spooky { background-image: url(spritesmith-main-8.png); - background-position: -1668px -300px; + background-position: -1066px -1516px; width: 81px; height: 99px; } .Pet-FlyingPig-White { background-image: url(spritesmith-main-8.png); - background-position: -1668px -400px; + background-position: -1148px -1516px; width: 81px; height: 99px; } .Pet-FlyingPig-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -1668px -500px; + background-position: -1230px -1516px; width: 81px; height: 99px; } .Pet-Fox-Base { background-image: url(spritesmith-main-8.png); - background-position: -1668px -600px; + background-position: -1312px -1516px; width: 81px; height: 99px; } .Pet-Fox-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -1668px -700px; + background-position: -1394px -1516px; width: 81px; height: 99px; } .Pet-Fox-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -1668px -800px; + background-position: -1476px -1516px; width: 81px; height: 99px; } .Pet-Fox-Desert { background-image: url(spritesmith-main-8.png); - background-position: -1668px -900px; + background-position: -1558px -1516px; width: 81px; height: 99px; } .Pet-Fox-Golden { background-image: url(spritesmith-main-8.png); - background-position: -1668px -1000px; + background-position: -1668px 0px; width: 81px; height: 99px; } .Pet-Fox-Red { background-image: url(spritesmith-main-8.png); - background-position: -1668px -1100px; + background-position: -1668px -100px; width: 81px; height: 99px; } .Pet-Fox-Shade { background-image: url(spritesmith-main-8.png); - background-position: -1668px -1200px; + background-position: -1668px -200px; width: 81px; height: 99px; } .Pet-Fox-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -1668px -1300px; + background-position: -1668px -300px; width: 81px; height: 99px; } .Pet-Fox-Spooky { background-image: url(spritesmith-main-8.png); - background-position: -1668px -1400px; + background-position: -1668px -400px; width: 81px; height: 99px; } .Pet-Fox-White { background-image: url(spritesmith-main-8.png); - background-position: -1668px -1500px; + background-position: -1668px -500px; width: 81px; height: 99px; } .Pet-Fox-Zombie { background-image: url(spritesmith-main-8.png); - background-position: 0px -1622px; + background-position: -1668px -600px; width: 81px; height: 99px; } .Pet-Frog-Base { background-image: url(spritesmith-main-8.png); - background-position: -82px -1622px; + background-position: -1668px -700px; width: 81px; height: 99px; } .Pet-Frog-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -164px -1622px; + background-position: -1668px -800px; width: 81px; height: 99px; } .Pet-Frog-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -246px -1622px; + background-position: -1668px -900px; + width: 81px; + height: 99px; +} +.Pet-Frog-Desert { + background-image: url(spritesmith-main-8.png); + background-position: -1668px -1000px; + width: 81px; + height: 99px; +} +.Pet-Frog-Golden { + background-image: url(spritesmith-main-8.png); + background-position: -1668px -1100px; + width: 81px; + height: 99px; +} +.Pet-Frog-Red { + background-image: url(spritesmith-main-8.png); + background-position: -1668px -1200px; + width: 81px; + height: 99px; +} +.Pet-Frog-Shade { + background-image: url(spritesmith-main-8.png); + background-position: -1668px -1300px; + width: 81px; + height: 99px; +} +.Pet-Frog-Skeleton { + background-image: url(spritesmith-main-8.png); + background-position: -1668px -1400px; + width: 81px; + height: 99px; +} +.Pet-Frog-White { + background-image: url(spritesmith-main-8.png); + background-position: -1668px -1500px; + width: 81px; + height: 99px; +} +.Pet-Frog-Zombie { + background-image: url(spritesmith-main-8.png); + background-position: 0px -1616px; + width: 81px; + height: 99px; +} +.Pet-Gryphon-Base { + background-image: url(spritesmith-main-8.png); + background-position: -82px -1616px; + width: 81px; + height: 99px; +} +.Pet-Gryphon-CottonCandyBlue { + background-image: url(spritesmith-main-8.png); + background-position: -164px -1616px; + width: 81px; + height: 99px; +} +.Pet-Gryphon-CottonCandyPink { + background-image: url(spritesmith-main-8.png); + background-position: -246px -1616px; + width: 81px; + height: 99px; +} +.Pet-Gryphon-Desert { + background-image: url(spritesmith-main-8.png); + background-position: -328px -1616px; width: 81px; height: 99px; } diff --git a/common/dist/sprites/spritesmith-main-8.png b/common/dist/sprites/spritesmith-main-8.png index d5ba172fd9..7c0c60104a 100644 Binary files a/common/dist/sprites/spritesmith-main-8.png and b/common/dist/sprites/spritesmith-main-8.png differ diff --git a/common/dist/sprites/spritesmith-main-9.css b/common/dist/sprites/spritesmith-main-9.css index bf25ef460e..b4c673a788 100644 --- a/common/dist/sprites/spritesmith-main-9.css +++ b/common/dist/sprites/spritesmith-main-9.css @@ -1,1374 +1,1308 @@ -.Pet-Frog-Desert { +.Pet-Gryphon-Golden { background-image: url(spritesmith-main-9.png); background-position: -82px 0px; width: 81px; height: 99px; } -.Pet-Frog-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -984px -600px; - width: 81px; - height: 99px; -} -.Pet-Frog-Red { - background-image: url(spritesmith-main-9.png); - background-position: -164px 0px; - width: 81px; - height: 99px; -} -.Pet-Frog-Shade { - background-image: url(spritesmith-main-9.png); - background-position: 0px -100px; - width: 81px; - height: 99px; -} -.Pet-Frog-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -82px -100px; - width: 81px; - height: 99px; -} -.Pet-Frog-White { - background-image: url(spritesmith-main-9.png); - background-position: -164px -100px; - width: 81px; - height: 99px; -} -.Pet-Frog-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -246px 0px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-Base { - background-image: url(spritesmith-main-9.png); - background-position: -246px -100px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: 0px -200px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -82px -200px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -164px -200px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -246px -200px; - width: 81px; - height: 99px; -} .Pet-Gryphon-Red { - background-image: url(spritesmith-main-9.png); - background-position: -328px 0px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-Shade { - background-image: url(spritesmith-main-9.png); - background-position: -328px -100px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -328px -200px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-White { - background-image: url(spritesmith-main-9.png); - background-position: 0px -300px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -82px -300px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-Base { - background-image: url(spritesmith-main-9.png); - background-position: -164px -300px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -246px -300px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -328px -300px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -410px 0px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -410px -100px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-Red { - background-image: url(spritesmith-main-9.png); - background-position: -410px -200px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-Shade { - background-image: url(spritesmith-main-9.png); - background-position: -410px -300px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -492px 0px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-White { - background-image: url(spritesmith-main-9.png); - background-position: -492px -100px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -492px -200px; - width: 81px; - height: 99px; -} -.Pet-Horse-Base { - background-image: url(spritesmith-main-9.png); - background-position: -492px -300px; - width: 81px; - height: 99px; -} -.Pet-Horse-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: 0px -400px; - width: 81px; - height: 99px; -} -.Pet-Horse-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -82px -400px; - width: 81px; - height: 99px; -} -.Pet-Horse-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -164px -400px; - width: 81px; - height: 99px; -} -.Pet-Horse-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -246px -400px; - width: 81px; - height: 99px; -} -.Pet-Horse-Red { - background-image: url(spritesmith-main-9.png); - background-position: -328px -400px; - width: 81px; - height: 99px; -} -.Pet-Horse-Shade { - background-image: url(spritesmith-main-9.png); - background-position: -410px -400px; - width: 81px; - height: 99px; -} -.Pet-Horse-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -492px -400px; - width: 81px; - height: 99px; -} -.Pet-Horse-White { - background-image: url(spritesmith-main-9.png); - background-position: -574px 0px; - width: 81px; - height: 99px; -} -.Pet-Horse-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -574px -100px; - width: 81px; - height: 99px; -} -.Pet-JackOLantern-Base { - background-image: url(spritesmith-main-9.png); - background-position: -574px -200px; - width: 81px; - height: 99px; -} -.Pet-LionCub-Base { - background-image: url(spritesmith-main-9.png); - background-position: -574px -300px; - width: 81px; - height: 99px; -} -.Pet-LionCub-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -574px -400px; - width: 81px; - height: 99px; -} -.Pet-LionCub-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: 0px -500px; - width: 81px; - height: 99px; -} -.Pet-LionCub-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -82px -500px; - width: 81px; - height: 99px; -} -.Pet-LionCub-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -164px -500px; - width: 81px; - height: 99px; -} -.Pet-LionCub-Red { - background-image: url(spritesmith-main-9.png); - background-position: -246px -500px; - width: 81px; - height: 99px; -} -.Pet-LionCub-Shade { - background-image: url(spritesmith-main-9.png); - background-position: -328px -500px; - width: 81px; - height: 99px; -} -.Pet-LionCub-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -410px -500px; - width: 81px; - height: 99px; -} -.Pet-LionCub-Spooky { - background-image: url(spritesmith-main-9.png); - background-position: -492px -500px; - width: 81px; - height: 99px; -} -.Pet-LionCub-White { - background-image: url(spritesmith-main-9.png); - background-position: -574px -500px; - width: 81px; - height: 99px; -} -.Pet-LionCub-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -656px 0px; - width: 81px; - height: 99px; -} -.Pet-Mammoth-Base { - background-image: url(spritesmith-main-9.png); - background-position: -656px -100px; - width: 81px; - height: 99px; -} -.Pet-MantisShrimp-Base { - background-image: url(spritesmith-main-9.png); - background-position: -656px -200px; - width: 81px; - height: 99px; -} -.Pet-Octopus-Base { - background-image: url(spritesmith-main-9.png); - background-position: -656px -300px; - width: 81px; - height: 99px; -} -.Pet-Octopus-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -656px -400px; - width: 81px; - height: 99px; -} -.Pet-Octopus-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -656px -500px; - width: 81px; - height: 99px; -} -.Pet-Octopus-Desert { - background-image: url(spritesmith-main-9.png); - background-position: 0px -600px; - width: 81px; - height: 99px; -} -.Pet-Octopus-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -82px -600px; - width: 81px; - height: 99px; -} -.Pet-Octopus-Red { - background-image: url(spritesmith-main-9.png); - background-position: -164px -600px; - width: 81px; - height: 99px; -} -.Pet-Octopus-Shade { - background-image: url(spritesmith-main-9.png); - background-position: -246px -600px; - width: 81px; - height: 99px; -} -.Pet-Octopus-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -328px -600px; - width: 81px; - height: 99px; -} -.Pet-Octopus-White { - background-image: url(spritesmith-main-9.png); - background-position: -410px -600px; - width: 81px; - height: 99px; -} -.Pet-Octopus-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -492px -600px; - width: 81px; - height: 99px; -} -.Pet-Owl-Base { - background-image: url(spritesmith-main-9.png); - background-position: -574px -600px; - width: 81px; - height: 99px; -} -.Pet-Owl-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -656px -600px; - width: 81px; - height: 99px; -} -.Pet-Owl-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -738px 0px; - width: 81px; - height: 99px; -} -.Pet-Owl-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -738px -100px; - width: 81px; - height: 99px; -} -.Pet-Owl-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -738px -200px; - width: 81px; - height: 99px; -} -.Pet-Owl-Red { - background-image: url(spritesmith-main-9.png); - background-position: -738px -300px; - width: 81px; - height: 99px; -} -.Pet-Owl-Shade { - background-image: url(spritesmith-main-9.png); - background-position: -738px -400px; - width: 81px; - height: 99px; -} -.Pet-Owl-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -738px -500px; - width: 81px; - height: 99px; -} -.Pet-Owl-White { - background-image: url(spritesmith-main-9.png); - background-position: -738px -600px; - width: 81px; - height: 99px; -} -.Pet-Owl-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: 0px -700px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-Base { - background-image: url(spritesmith-main-9.png); - background-position: -82px -700px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -164px -700px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -246px -700px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -328px -700px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -410px -700px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-Red { - background-image: url(spritesmith-main-9.png); - background-position: -492px -700px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-Shade { - background-image: url(spritesmith-main-9.png); - background-position: -574px -700px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -656px -700px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-Spooky { - background-image: url(spritesmith-main-9.png); - background-position: -738px -700px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-White { - background-image: url(spritesmith-main-9.png); - background-position: -820px 0px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -820px -100px; - width: 81px; - height: 99px; -} -.Pet-Parrot-Base { - background-image: url(spritesmith-main-9.png); - background-position: -820px -200px; - width: 81px; - height: 99px; -} -.Pet-Parrot-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -820px -300px; - width: 81px; - height: 99px; -} -.Pet-Parrot-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -820px -400px; - width: 81px; - height: 99px; -} -.Pet-Parrot-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -820px -500px; - width: 81px; - height: 99px; -} -.Pet-Parrot-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -820px -600px; - width: 81px; - height: 99px; -} -.Pet-Parrot-Red { - background-image: url(spritesmith-main-9.png); - background-position: -820px -700px; - width: 81px; - height: 99px; -} -.Pet-Parrot-Shade { - background-image: url(spritesmith-main-9.png); - background-position: 0px -800px; - width: 81px; - height: 99px; -} -.Pet-Parrot-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -82px -800px; - width: 81px; - height: 99px; -} -.Pet-Parrot-White { - background-image: url(spritesmith-main-9.png); - background-position: -164px -800px; - width: 81px; - height: 99px; -} -.Pet-Parrot-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -246px -800px; - width: 81px; - height: 99px; -} -.Pet-Penguin-Base { - background-image: url(spritesmith-main-9.png); - background-position: -328px -800px; - width: 81px; - height: 99px; -} -.Pet-Penguin-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -410px -800px; - width: 81px; - height: 99px; -} -.Pet-Penguin-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -492px -800px; - width: 81px; - height: 99px; -} -.Pet-Penguin-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -574px -800px; - width: 81px; - height: 99px; -} -.Pet-Penguin-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -656px -800px; - width: 81px; - height: 99px; -} -.Pet-Penguin-Red { - background-image: url(spritesmith-main-9.png); - background-position: -738px -800px; - width: 81px; - height: 99px; -} -.Pet-Penguin-Shade { - background-image: url(spritesmith-main-9.png); - background-position: -820px -800px; - width: 81px; - height: 99px; -} -.Pet-Penguin-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -902px 0px; - width: 81px; - height: 99px; -} -.Pet-Penguin-White { - background-image: url(spritesmith-main-9.png); - background-position: -902px -100px; - width: 81px; - height: 99px; -} -.Pet-Penguin-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -902px -200px; - width: 81px; - height: 99px; -} -.Pet-Phoenix-Base { - background-image: url(spritesmith-main-9.png); - background-position: -902px -300px; - width: 81px; - height: 99px; -} -.Pet-Rat-Base { - background-image: url(spritesmith-main-9.png); - background-position: -902px -400px; - width: 81px; - height: 99px; -} -.Pet-Rat-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -902px -500px; - width: 81px; - height: 99px; -} -.Pet-Rat-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -902px -600px; - width: 81px; - height: 99px; -} -.Pet-Rat-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -902px -700px; - width: 81px; - height: 99px; -} -.Pet-Rat-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -902px -800px; - width: 81px; - height: 99px; -} -.Pet-Rat-Red { - background-image: url(spritesmith-main-9.png); - background-position: -984px 0px; - width: 81px; - height: 99px; -} -.Pet-Rat-Shade { background-image: url(spritesmith-main-9.png); background-position: -984px -100px; width: 81px; height: 99px; } +.Pet-Gryphon-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -164px 0px; + width: 81px; + height: 99px; +} +.Pet-Gryphon-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: 0px -100px; + width: 81px; + height: 99px; +} +.Pet-Gryphon-White { + background-image: url(spritesmith-main-9.png); + background-position: -82px -100px; + width: 81px; + height: 99px; +} +.Pet-Gryphon-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -164px -100px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-Base { + background-image: url(spritesmith-main-9.png); + background-position: -246px 0px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: -246px -100px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: 0px -200px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -82px -200px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -164px -200px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-Red { + background-image: url(spritesmith-main-9.png); + background-position: -246px -200px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -328px 0px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -328px -100px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-White { + background-image: url(spritesmith-main-9.png); + background-position: -328px -200px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: 0px -300px; + width: 81px; + height: 99px; +} +.Pet-Horse-Base { + background-image: url(spritesmith-main-9.png); + background-position: -82px -300px; + width: 81px; + height: 99px; +} +.Pet-Horse-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: -164px -300px; + width: 81px; + height: 99px; +} +.Pet-Horse-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: -246px -300px; + width: 81px; + height: 99px; +} +.Pet-Horse-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -328px -300px; + width: 81px; + height: 99px; +} +.Pet-Horse-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -410px 0px; + width: 81px; + height: 99px; +} +.Pet-Horse-Red { + background-image: url(spritesmith-main-9.png); + background-position: -410px -100px; + width: 81px; + height: 99px; +} +.Pet-Horse-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -410px -200px; + width: 81px; + height: 99px; +} +.Pet-Horse-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -410px -300px; + width: 81px; + height: 99px; +} +.Pet-Horse-White { + background-image: url(spritesmith-main-9.png); + background-position: -492px 0px; + width: 81px; + height: 99px; +} +.Pet-Horse-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -492px -100px; + width: 81px; + height: 99px; +} +.Pet-JackOLantern-Base { + background-image: url(spritesmith-main-9.png); + background-position: -492px -200px; + width: 81px; + height: 99px; +} +.Pet-LionCub-Base { + background-image: url(spritesmith-main-9.png); + background-position: -492px -300px; + width: 81px; + height: 99px; +} +.Pet-LionCub-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: 0px -400px; + width: 81px; + height: 99px; +} +.Pet-LionCub-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: -82px -400px; + width: 81px; + height: 99px; +} +.Pet-LionCub-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -164px -400px; + width: 81px; + height: 99px; +} +.Pet-LionCub-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -246px -400px; + width: 81px; + height: 99px; +} +.Pet-LionCub-Red { + background-image: url(spritesmith-main-9.png); + background-position: -328px -400px; + width: 81px; + height: 99px; +} +.Pet-LionCub-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -410px -400px; + width: 81px; + height: 99px; +} +.Pet-LionCub-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -492px -400px; + width: 81px; + height: 99px; +} +.Pet-LionCub-Spooky { + background-image: url(spritesmith-main-9.png); + background-position: -574px 0px; + width: 81px; + height: 99px; +} +.Pet-LionCub-White { + background-image: url(spritesmith-main-9.png); + background-position: -574px -100px; + width: 81px; + height: 99px; +} +.Pet-LionCub-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -574px -200px; + width: 81px; + height: 99px; +} +.Pet-Mammoth-Base { + background-image: url(spritesmith-main-9.png); + background-position: -574px -300px; + width: 81px; + height: 99px; +} +.Pet-MantisShrimp-Base { + background-image: url(spritesmith-main-9.png); + background-position: -574px -400px; + width: 81px; + height: 99px; +} +.Pet-Octopus-Base { + background-image: url(spritesmith-main-9.png); + background-position: 0px -500px; + width: 81px; + height: 99px; +} +.Pet-Octopus-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: -82px -500px; + width: 81px; + height: 99px; +} +.Pet-Octopus-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: -164px -500px; + width: 81px; + height: 99px; +} +.Pet-Octopus-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -246px -500px; + width: 81px; + height: 99px; +} +.Pet-Octopus-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -328px -500px; + width: 81px; + height: 99px; +} +.Pet-Octopus-Red { + background-image: url(spritesmith-main-9.png); + background-position: -410px -500px; + width: 81px; + height: 99px; +} +.Pet-Octopus-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -492px -500px; + width: 81px; + height: 99px; +} +.Pet-Octopus-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -574px -500px; + width: 81px; + height: 99px; +} +.Pet-Octopus-White { + background-image: url(spritesmith-main-9.png); + background-position: -656px 0px; + width: 81px; + height: 99px; +} +.Pet-Octopus-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -656px -100px; + width: 81px; + height: 99px; +} +.Pet-Owl-Base { + background-image: url(spritesmith-main-9.png); + background-position: -656px -200px; + width: 81px; + height: 99px; +} +.Pet-Owl-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: -656px -300px; + width: 81px; + height: 99px; +} +.Pet-Owl-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: -656px -400px; + width: 81px; + height: 99px; +} +.Pet-Owl-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -656px -500px; + width: 81px; + height: 99px; +} +.Pet-Owl-Golden { + background-image: url(spritesmith-main-9.png); + background-position: 0px -600px; + width: 81px; + height: 99px; +} +.Pet-Owl-Red { + background-image: url(spritesmith-main-9.png); + background-position: -82px -600px; + width: 81px; + height: 99px; +} +.Pet-Owl-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -164px -600px; + width: 81px; + height: 99px; +} +.Pet-Owl-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -246px -600px; + width: 81px; + height: 99px; +} +.Pet-Owl-White { + background-image: url(spritesmith-main-9.png); + background-position: -328px -600px; + width: 81px; + height: 99px; +} +.Pet-Owl-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -410px -600px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-Base { + background-image: url(spritesmith-main-9.png); + background-position: -492px -600px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: -574px -600px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: -656px -600px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -738px 0px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -738px -100px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-Red { + background-image: url(spritesmith-main-9.png); + background-position: -738px -200px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -738px -300px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -738px -400px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-Spooky { + background-image: url(spritesmith-main-9.png); + background-position: -738px -500px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-White { + background-image: url(spritesmith-main-9.png); + background-position: -738px -600px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: 0px -700px; + width: 81px; + height: 99px; +} +.Pet-Parrot-Base { + background-image: url(spritesmith-main-9.png); + background-position: -82px -700px; + width: 81px; + height: 99px; +} +.Pet-Parrot-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: -164px -700px; + width: 81px; + height: 99px; +} +.Pet-Parrot-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: -246px -700px; + width: 81px; + height: 99px; +} +.Pet-Parrot-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -328px -700px; + width: 81px; + height: 99px; +} +.Pet-Parrot-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -410px -700px; + width: 81px; + height: 99px; +} +.Pet-Parrot-Red { + background-image: url(spritesmith-main-9.png); + background-position: -492px -700px; + width: 81px; + height: 99px; +} +.Pet-Parrot-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -574px -700px; + width: 81px; + height: 99px; +} +.Pet-Parrot-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -656px -700px; + width: 81px; + height: 99px; +} +.Pet-Parrot-White { + background-image: url(spritesmith-main-9.png); + background-position: -738px -700px; + width: 81px; + height: 99px; +} +.Pet-Parrot-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -820px 0px; + width: 81px; + height: 99px; +} +.Pet-Penguin-Base { + background-image: url(spritesmith-main-9.png); + background-position: -820px -100px; + width: 81px; + height: 99px; +} +.Pet-Penguin-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: -820px -200px; + width: 81px; + height: 99px; +} +.Pet-Penguin-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: -820px -300px; + width: 81px; + height: 99px; +} +.Pet-Penguin-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -820px -400px; + width: 81px; + height: 99px; +} +.Pet-Penguin-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -820px -500px; + width: 81px; + height: 99px; +} +.Pet-Penguin-Red { + background-image: url(spritesmith-main-9.png); + background-position: -820px -600px; + width: 81px; + height: 99px; +} +.Pet-Penguin-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -820px -700px; + width: 81px; + height: 99px; +} +.Pet-Penguin-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: 0px -800px; + width: 81px; + height: 99px; +} +.Pet-Penguin-White { + background-image: url(spritesmith-main-9.png); + background-position: -82px -800px; + width: 81px; + height: 99px; +} +.Pet-Penguin-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -164px -800px; + width: 81px; + height: 99px; +} +.Pet-Phoenix-Base { + background-image: url(spritesmith-main-9.png); + background-position: -246px -800px; + width: 81px; + height: 99px; +} +.Pet-Rat-Base { + background-image: url(spritesmith-main-9.png); + background-position: -328px -800px; + width: 81px; + height: 99px; +} +.Pet-Rat-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: -410px -800px; + width: 81px; + height: 99px; +} +.Pet-Rat-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: -492px -800px; + width: 81px; + height: 99px; +} +.Pet-Rat-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -574px -800px; + width: 81px; + height: 99px; +} +.Pet-Rat-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -656px -800px; + width: 81px; + height: 99px; +} +.Pet-Rat-Red { + background-image: url(spritesmith-main-9.png); + background-position: -738px -800px; + width: 81px; + height: 99px; +} +.Pet-Rat-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -820px -800px; + width: 81px; + height: 99px; +} .Pet-Rat-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -984px -200px; + background-position: -902px 0px; width: 81px; height: 99px; } .Pet-Rat-White { background-image: url(spritesmith-main-9.png); - background-position: -984px -300px; + background-position: -902px -100px; width: 81px; height: 99px; } .Pet-Rat-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -984px -400px; + background-position: -902px -200px; width: 81px; height: 99px; } .Pet-Rock-Base { background-image: url(spritesmith-main-9.png); - background-position: -984px -500px; + background-position: -902px -300px; width: 81px; height: 99px; } .Pet-Rock-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: 0px 0px; + background-position: -902px -400px; width: 81px; height: 99px; } .Pet-Rock-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -984px -700px; + background-position: -902px -500px; width: 81px; height: 99px; } .Pet-Rock-Desert { background-image: url(spritesmith-main-9.png); - background-position: -984px -800px; + background-position: -902px -600px; width: 81px; height: 99px; } .Pet-Rock-Golden { background-image: url(spritesmith-main-9.png); - background-position: 0px -900px; + background-position: -902px -700px; width: 81px; height: 99px; } .Pet-Rock-Red { background-image: url(spritesmith-main-9.png); - background-position: -82px -900px; + background-position: -902px -800px; width: 81px; height: 99px; } .Pet-Rock-Shade { background-image: url(spritesmith-main-9.png); - background-position: -164px -900px; + background-position: -984px 0px; width: 81px; height: 99px; } .Pet-Rock-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -246px -900px; + background-position: 0px 0px; width: 81px; height: 99px; } .Pet-Rock-White { background-image: url(spritesmith-main-9.png); - background-position: -328px -900px; + background-position: -984px -200px; width: 81px; height: 99px; } .Pet-Rock-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -410px -900px; + background-position: -984px -300px; width: 81px; height: 99px; } .Pet-Rooster-Base { background-image: url(spritesmith-main-9.png); - background-position: -492px -900px; + background-position: -984px -400px; width: 81px; height: 99px; } .Pet-Rooster-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -574px -900px; + background-position: -984px -500px; width: 81px; height: 99px; } .Pet-Rooster-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -656px -900px; + background-position: -984px -600px; width: 81px; height: 99px; } .Pet-Rooster-Desert { background-image: url(spritesmith-main-9.png); - background-position: -738px -900px; + background-position: -984px -700px; width: 81px; height: 99px; } .Pet-Rooster-Golden { background-image: url(spritesmith-main-9.png); - background-position: -820px -900px; + background-position: -984px -800px; width: 81px; height: 99px; } .Pet-Rooster-Red { background-image: url(spritesmith-main-9.png); - background-position: -902px -900px; + background-position: 0px -900px; width: 81px; height: 99px; } .Pet-Rooster-Shade { background-image: url(spritesmith-main-9.png); - background-position: -984px -900px; + background-position: -82px -900px; width: 81px; height: 99px; } .Pet-Rooster-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -1066px 0px; + background-position: -164px -900px; width: 81px; height: 99px; } .Pet-Rooster-White { background-image: url(spritesmith-main-9.png); - background-position: -1066px -100px; + background-position: -246px -900px; width: 81px; height: 99px; } .Pet-Rooster-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -1066px -200px; + background-position: -328px -900px; width: 81px; height: 99px; } .Pet-Seahorse-Base { background-image: url(spritesmith-main-9.png); - background-position: -1066px -300px; + background-position: -410px -900px; width: 81px; height: 99px; } .Pet-Seahorse-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -1066px -400px; + background-position: -492px -900px; width: 81px; height: 99px; } .Pet-Seahorse-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -1066px -500px; + background-position: -574px -900px; width: 81px; height: 99px; } .Pet-Seahorse-Desert { background-image: url(spritesmith-main-9.png); - background-position: -1066px -600px; + background-position: -656px -900px; width: 81px; height: 99px; } .Pet-Seahorse-Golden { background-image: url(spritesmith-main-9.png); - background-position: -1066px -700px; + background-position: -738px -900px; width: 81px; height: 99px; } .Pet-Seahorse-Red { background-image: url(spritesmith-main-9.png); - background-position: -1066px -800px; + background-position: -820px -900px; width: 81px; height: 99px; } .Pet-Seahorse-Shade { background-image: url(spritesmith-main-9.png); - background-position: -1066px -900px; + background-position: -902px -900px; width: 81px; height: 99px; } .Pet-Seahorse-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: 0px -1000px; + background-position: -984px -900px; width: 81px; height: 99px; } .Pet-Seahorse-White { background-image: url(spritesmith-main-9.png); - background-position: -82px -1000px; + background-position: -1066px 0px; width: 81px; height: 99px; } .Pet-Seahorse-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -164px -1000px; + background-position: -1066px -100px; width: 81px; height: 99px; } .Pet-Sheep-Base { background-image: url(spritesmith-main-9.png); - background-position: -246px -1000px; + background-position: -1066px -200px; width: 81px; height: 99px; } .Pet-Sheep-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -328px -1000px; + background-position: -1066px -300px; width: 81px; height: 99px; } .Pet-Sheep-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -410px -1000px; + background-position: -1066px -400px; width: 81px; height: 99px; } .Pet-Sheep-Desert { background-image: url(spritesmith-main-9.png); - background-position: -492px -1000px; + background-position: -1066px -500px; width: 81px; height: 99px; } .Pet-Sheep-Golden { background-image: url(spritesmith-main-9.png); - background-position: -574px -1000px; + background-position: -1066px -600px; width: 81px; height: 99px; } .Pet-Sheep-Red { background-image: url(spritesmith-main-9.png); - background-position: -656px -1000px; + background-position: -1066px -700px; width: 81px; height: 99px; } .Pet-Sheep-Shade { background-image: url(spritesmith-main-9.png); - background-position: -738px -1000px; + background-position: -1066px -800px; width: 81px; height: 99px; } .Pet-Sheep-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -820px -1000px; + background-position: -1066px -900px; width: 81px; height: 99px; } .Pet-Sheep-White { background-image: url(spritesmith-main-9.png); - background-position: -902px -1000px; + background-position: 0px -1000px; width: 81px; height: 99px; } .Pet-Sheep-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -984px -1000px; + background-position: -82px -1000px; width: 81px; height: 99px; } .Pet-Slime-Base { background-image: url(spritesmith-main-9.png); - background-position: -1066px -1000px; + background-position: -164px -1000px; width: 81px; height: 99px; } .Pet-Slime-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -1148px 0px; + background-position: -246px -1000px; width: 81px; height: 99px; } .Pet-Slime-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -1148px -100px; + background-position: -328px -1000px; width: 81px; height: 99px; } .Pet-Slime-Desert { background-image: url(spritesmith-main-9.png); - background-position: -1148px -200px; + background-position: -410px -1000px; width: 81px; height: 99px; } .Pet-Slime-Golden { background-image: url(spritesmith-main-9.png); - background-position: -1148px -300px; + background-position: -492px -1000px; width: 81px; height: 99px; } .Pet-Slime-Red { background-image: url(spritesmith-main-9.png); - background-position: -1148px -400px; + background-position: -574px -1000px; width: 81px; height: 99px; } .Pet-Slime-Shade { background-image: url(spritesmith-main-9.png); - background-position: -1148px -500px; + background-position: -656px -1000px; width: 81px; height: 99px; } .Pet-Slime-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -1148px -600px; + background-position: -738px -1000px; width: 81px; height: 99px; } .Pet-Slime-White { background-image: url(spritesmith-main-9.png); - background-position: -1148px -700px; + background-position: -820px -1000px; width: 81px; height: 99px; } .Pet-Slime-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -1148px -800px; + background-position: -902px -1000px; width: 81px; height: 99px; } .Pet-Spider-Base { background-image: url(spritesmith-main-9.png); - background-position: -1148px -900px; + background-position: -984px -1000px; width: 81px; height: 99px; } .Pet-Spider-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -1148px -1000px; + background-position: -1066px -1000px; width: 81px; height: 99px; } .Pet-Spider-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: 0px -1100px; + background-position: -1148px 0px; width: 81px; height: 99px; } .Pet-Spider-Desert { background-image: url(spritesmith-main-9.png); - background-position: -82px -1100px; + background-position: -1148px -100px; width: 81px; height: 99px; } .Pet-Spider-Golden { background-image: url(spritesmith-main-9.png); - background-position: -164px -1100px; + background-position: -1148px -200px; width: 81px; height: 99px; } .Pet-Spider-Red { background-image: url(spritesmith-main-9.png); - background-position: -246px -1100px; + background-position: -1148px -300px; width: 81px; height: 99px; } .Pet-Spider-Shade { background-image: url(spritesmith-main-9.png); - background-position: -328px -1100px; + background-position: -1148px -400px; width: 81px; height: 99px; } .Pet-Spider-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -410px -1100px; + background-position: -1148px -500px; width: 81px; height: 99px; } .Pet-Spider-White { background-image: url(spritesmith-main-9.png); - background-position: -492px -1100px; + background-position: -1148px -600px; width: 81px; height: 99px; } .Pet-Spider-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -574px -1100px; + background-position: -1148px -700px; width: 81px; height: 99px; } .Pet-TRex-Base { background-image: url(spritesmith-main-9.png); - background-position: -656px -1100px; + background-position: -1148px -800px; width: 81px; height: 99px; } .Pet-TRex-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -738px -1100px; + background-position: -1148px -900px; width: 81px; height: 99px; } .Pet-TRex-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -820px -1100px; + background-position: -1148px -1000px; width: 81px; height: 99px; } .Pet-TRex-Desert { background-image: url(spritesmith-main-9.png); - background-position: -902px -1100px; + background-position: 0px -1100px; width: 81px; height: 99px; } .Pet-TRex-Golden { background-image: url(spritesmith-main-9.png); - background-position: -984px -1100px; + background-position: -82px -1100px; width: 81px; height: 99px; } .Pet-TRex-Red { background-image: url(spritesmith-main-9.png); - background-position: -1066px -1100px; + background-position: -164px -1100px; width: 81px; height: 99px; } .Pet-TRex-Shade { background-image: url(spritesmith-main-9.png); - background-position: -1148px -1100px; + background-position: -246px -1100px; width: 81px; height: 99px; } .Pet-TRex-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -1230px 0px; + background-position: -328px -1100px; width: 81px; height: 99px; } .Pet-TRex-White { background-image: url(spritesmith-main-9.png); - background-position: -1230px -100px; + background-position: -410px -1100px; width: 81px; height: 99px; } .Pet-TRex-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -1230px -200px; + background-position: -492px -1100px; width: 81px; height: 99px; } .Pet-Tiger-Veteran { background-image: url(spritesmith-main-9.png); - background-position: -1230px -300px; + background-position: -574px -1100px; width: 81px; height: 99px; } .Pet-TigerCub-Base { background-image: url(spritesmith-main-9.png); - background-position: -1230px -400px; + background-position: -656px -1100px; width: 81px; height: 99px; } .Pet-TigerCub-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -1230px -500px; + background-position: -738px -1100px; width: 81px; height: 99px; } .Pet-TigerCub-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -1230px -600px; + background-position: -820px -1100px; width: 81px; height: 99px; } .Pet-TigerCub-Desert { background-image: url(spritesmith-main-9.png); - background-position: -1230px -700px; + background-position: -902px -1100px; width: 81px; height: 99px; } .Pet-TigerCub-Golden { background-image: url(spritesmith-main-9.png); - background-position: -1230px -800px; + background-position: -984px -1100px; width: 81px; height: 99px; } .Pet-TigerCub-Red { background-image: url(spritesmith-main-9.png); - background-position: -1230px -900px; + background-position: -1066px -1100px; width: 81px; height: 99px; } .Pet-TigerCub-Shade { background-image: url(spritesmith-main-9.png); - background-position: -1230px -1000px; + background-position: -1148px -1100px; width: 81px; height: 99px; } .Pet-TigerCub-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -1230px -1100px; + background-position: -1230px 0px; width: 81px; height: 99px; } .Pet-TigerCub-Spooky { background-image: url(spritesmith-main-9.png); - background-position: 0px -1200px; + background-position: -1230px -100px; width: 81px; height: 99px; } .Pet-TigerCub-White { background-image: url(spritesmith-main-9.png); - background-position: -82px -1200px; + background-position: -1230px -200px; width: 81px; height: 99px; } .Pet-TigerCub-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -164px -1200px; + background-position: -1230px -300px; width: 81px; height: 99px; } .Pet-Turkey-Base { background-image: url(spritesmith-main-9.png); - background-position: -246px -1200px; + background-position: -1230px -400px; width: 81px; height: 99px; } .Pet-Whale-Base { background-image: url(spritesmith-main-9.png); - background-position: -328px -1200px; + background-position: -1230px -500px; width: 81px; height: 99px; } .Pet-Whale-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -410px -1200px; + background-position: -1230px -600px; width: 81px; height: 99px; } .Pet-Whale-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -492px -1200px; + background-position: -1230px -700px; width: 81px; height: 99px; } .Pet-Whale-Desert { background-image: url(spritesmith-main-9.png); - background-position: -574px -1200px; + background-position: -1230px -800px; width: 81px; height: 99px; } .Pet-Whale-Golden { background-image: url(spritesmith-main-9.png); - background-position: -656px -1200px; + background-position: -1230px -900px; width: 81px; height: 99px; } .Pet-Whale-Red { background-image: url(spritesmith-main-9.png); - background-position: -738px -1200px; + background-position: -1230px -1000px; width: 81px; height: 99px; } .Pet-Whale-Shade { background-image: url(spritesmith-main-9.png); - background-position: -820px -1200px; + background-position: -1230px -1100px; width: 81px; height: 99px; } .Pet-Whale-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -902px -1200px; + background-position: 0px -1200px; width: 81px; height: 99px; } .Pet-Whale-White { background-image: url(spritesmith-main-9.png); - background-position: -984px -1200px; + background-position: -82px -1200px; width: 81px; height: 99px; } .Pet-Whale-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -1066px -1200px; + background-position: -164px -1200px; width: 81px; height: 99px; } .Pet-Wolf-Base { background-image: url(spritesmith-main-9.png); - background-position: -1148px -1200px; + background-position: -246px -1200px; width: 81px; height: 99px; } .Pet-Wolf-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -1230px -1200px; + background-position: -328px -1200px; width: 81px; height: 99px; } .Pet-Wolf-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -1312px 0px; + background-position: -410px -1200px; width: 81px; height: 99px; } .Pet-Wolf-Desert { background-image: url(spritesmith-main-9.png); - background-position: -1312px -100px; + background-position: -492px -1200px; width: 81px; height: 99px; } .Pet-Wolf-Golden { background-image: url(spritesmith-main-9.png); - background-position: -1312px -200px; + background-position: -574px -1200px; width: 81px; height: 99px; } .Pet-Wolf-Red { background-image: url(spritesmith-main-9.png); - background-position: -1312px -300px; + background-position: -656px -1200px; width: 81px; height: 99px; } .Pet-Wolf-Shade { background-image: url(spritesmith-main-9.png); - background-position: -1312px -400px; + background-position: -738px -1200px; width: 81px; height: 99px; } .Pet-Wolf-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -1312px -500px; + background-position: -820px -1200px; width: 81px; height: 99px; } .Pet-Wolf-Spooky { background-image: url(spritesmith-main-9.png); - background-position: -1312px -600px; + background-position: -902px -1200px; width: 81px; height: 99px; } .Pet-Wolf-Veteran { background-image: url(spritesmith-main-9.png); - background-position: -1312px -700px; + background-position: -984px -1200px; width: 81px; height: 99px; } .Pet-Wolf-White { background-image: url(spritesmith-main-9.png); - background-position: -1312px -800px; + background-position: -1066px -1200px; width: 81px; height: 99px; } .Pet-Wolf-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -1312px -900px; + background-position: -1148px -1200px; width: 81px; height: 99px; } .Pet_HatchingPotion_Base { background-image: url(spritesmith-main-9.png); - background-position: -1312px -1052px; + background-position: -1312px 0px; width: 48px; height: 51px; } .Pet_HatchingPotion_CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: 0px -1300px; + background-position: -1312px -208px; width: 48px; height: 51px; } .Pet_HatchingPotion_CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -1312px -1104px; + background-position: -1312px -52px; width: 48px; height: 51px; } .Pet_HatchingPotion_Desert { background-image: url(spritesmith-main-9.png); - background-position: -1312px -1156px; + background-position: -1312px -104px; width: 48px; height: 51px; } .Pet_HatchingPotion_Golden { background-image: url(spritesmith-main-9.png); - background-position: -1312px -1208px; + background-position: -1312px -156px; width: 48px; height: 51px; } .Pet_HatchingPotion_Red { background-image: url(spritesmith-main-9.png); - background-position: -1312px -1000px; + background-position: -1230px -1200px; width: 48px; height: 51px; } .Pet_HatchingPotion_Shade { background-image: url(spritesmith-main-9.png); - background-position: -49px -1300px; + background-position: -1312px -260px; width: 48px; height: 51px; } .Pet_HatchingPotion_Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -98px -1300px; + background-position: -1312px -312px; width: 48px; height: 51px; } .Pet_HatchingPotion_Spooky { background-image: url(spritesmith-main-9.png); - background-position: -147px -1300px; + background-position: -1312px -364px; width: 48px; height: 51px; } .Pet_HatchingPotion_White { background-image: url(spritesmith-main-9.png); - background-position: -196px -1300px; + background-position: -1312px -416px; width: 48px; height: 51px; } .Pet_HatchingPotion_Zombie { background-image: url(spritesmith-main-9.png); - background-position: -245px -1300px; + background-position: -1312px -468px; width: 48px; height: 51px; } diff --git a/common/dist/sprites/spritesmith-main-9.png b/common/dist/sprites/spritesmith-main-9.png index efe24a7966..d75c58fbe6 100644 Binary files a/common/dist/sprites/spritesmith-main-9.png and b/common/dist/sprites/spritesmith-main-9.png differ diff --git a/common/img/sprites/spritesmith/npcs/npc_alex.png b/common/img/sprites/spritesmith/npcs/npc_alex.png index c80cefa977..e904970937 100644 Binary files a/common/img/sprites/spritesmith/npcs/npc_alex.png and b/common/img/sprites/spritesmith/npcs/npc_alex.png differ diff --git a/common/img/sprites/spritesmith/npcs/npc_bailey.png b/common/img/sprites/spritesmith/npcs/npc_bailey.png index 6611a6a563..f6e58617a8 100644 Binary files a/common/img/sprites/spritesmith/npcs/npc_bailey.png and b/common/img/sprites/spritesmith/npcs/npc_bailey.png differ diff --git a/common/img/sprites/spritesmith/npcs/npc_daniel.png b/common/img/sprites/spritesmith/npcs/npc_daniel.png index 1898ba7960..b12dd9e254 100644 Binary files a/common/img/sprites/spritesmith/npcs/npc_daniel.png and b/common/img/sprites/spritesmith/npcs/npc_daniel.png differ diff --git a/common/img/sprites/spritesmith/npcs/npc_daniel_broken.png b/common/img/sprites/spritesmith/npcs/npc_daniel_broken.png deleted file mode 100644 index b5090f3b67..0000000000 Binary files a/common/img/sprites/spritesmith/npcs/npc_daniel_broken.png and /dev/null differ diff --git a/common/img/sprites/spritesmith/npcs/npc_ian.png b/common/img/sprites/spritesmith/npcs/npc_ian.png deleted file mode 100644 index 482eb467a8..0000000000 Binary files a/common/img/sprites/spritesmith/npcs/npc_ian.png and /dev/null differ diff --git a/common/img/sprites/spritesmith/npcs/npc_ian_broken.png b/common/img/sprites/spritesmith/npcs/npc_ian_broken.png deleted file mode 100644 index d1f256d8a8..0000000000 Binary files a/common/img/sprites/spritesmith/npcs/npc_ian_broken.png and /dev/null differ diff --git a/common/img/sprites/spritesmith/npcs/npc_justin.png b/common/img/sprites/spritesmith/npcs/npc_justin.png index 97ce158c9f..08cb56f206 100644 Binary files a/common/img/sprites/spritesmith/npcs/npc_justin.png and b/common/img/sprites/spritesmith/npcs/npc_justin.png differ diff --git a/common/img/sprites/spritesmith/npcs/npc_matt.png b/common/img/sprites/spritesmith/npcs/npc_matt.png index 30e95d29f3..b643153c46 100644 Binary files a/common/img/sprites/spritesmith/npcs/npc_matt.png and b/common/img/sprites/spritesmith/npcs/npc_matt.png differ diff --git a/common/img/sprites/spritesmith/npcs/seasonalshop_broken.png b/common/img/sprites/spritesmith/npcs/seasonalshop_broken.png deleted file mode 100644 index 891609ee6f..0000000000 Binary files a/common/img/sprites/spritesmith/npcs/seasonalshop_broken.png and /dev/null differ diff --git a/common/img/sprites/spritesmith/npcs/seasonalshop_open.png b/common/img/sprites/spritesmith/npcs/seasonalshop_open.png deleted file mode 100644 index f69fb9d792..0000000000 Binary files a/common/img/sprites/spritesmith/npcs/seasonalshop_open.png and /dev/null differ diff --git a/common/locales/cs/character.json b/common/locales/cs/character.json index 66997aa819..c50344dbcf 100644 --- a/common/locales/cs/character.json +++ b/common/locales/cs/character.json @@ -52,7 +52,7 @@ "classEquipBonus": "Bonus třídy", "battleGear": "Bojová výzbroj", "battleGearText": "Tohle je tvé vybavení, které máš na sobě do bitvy; ovlivňuje čísla, když pracuješ se svými úkoly.", - "autoEquipBattleGear": "Auto-equip new gear", + "autoEquipBattleGear": "Automaticky použít nové vybavení", "costume": "Kostým", "costumeText": "Pokud se ti více líbí vzhled jiného vybavení, než toho, které máš na sobě, zaškrtni \"použít kostým\". Kostým se ti zobrazí na tvém právě používaném vybavení, které tak hezky schová.", "useCostume": "Použít kostým", diff --git a/common/locales/cs/generic.json b/common/locales/cs/generic.json index 34151db0a7..058209f640 100644 --- a/common/locales/cs/generic.json +++ b/common/locales/cs/generic.json @@ -28,7 +28,7 @@ "market": "Trh", "subscriberItem": "Záhadný předmět", "newSubscriberItem": "Nový záhadný předmět", - "subscriberItemText": "Each month, subscribers will receive a mystery item. This is usually released about one week before the end of the month. See the wiki's 'Mystery Item' page for more information.", + "subscriberItemText": "Předplatitelé obdrží každý měsíc záhadný předmět. Ten je zpravidla představen týden před koncem měsíce. Pro více informací mrkni na stránku 'Mystery Item' na wiki.", "all": "Vše", "none": "Žádné", "or": "Nebo", @@ -79,7 +79,7 @@ "errorUpCase": "CHYBA:", "newPassSent": "Nové heslo odesláno.", "serverUnreach": "Server je momentálně nedostupný.", - "requestError": "Yikes, an error occurred! Please reload the page, your last action may not have been saved correctly.", + "requestError": "Jéje, chybka! Prosíme, načti stránku znovu, tvé poslední akce se nemusely uložit správně.", "seeConsole": "Pokud chyba přetrvává, prosíme, nahlaš jí přes Nápověda > Nahlásit chybu. Pokud znáš konzoli svého prohlížeče, prosíme, připoj k hlášení všechny chybové hlášky z ní,", "error": "Chyba", "menu": "Menu", diff --git a/common/locales/cs/messages.json b/common/locales/cs/messages.json index 8370e21123..28409e22d5 100644 --- a/common/locales/cs/messages.json +++ b/common/locales/cs/messages.json @@ -31,19 +31,25 @@ "armoireEquipment": "<%= image %> Ve zbrojnici jsi našel kus vzácného vybavení ve Zbrojnici: <%= dropText %>! Skvělé!", "armoireFood": "<%= image %> Prohledáváš zbrojnici a nacházíš <%= dropArticle %><%= dropText %>. Co to tu dělá?", "armoireExp": "Zápasíš se Zbrojnicí a získáváš zkušenost. To jsi jí to nandal!", - "messageInsufficientGems": "Not enough gems!", - "messageAuthPasswordMustMatch": ":password and :confirmPassword don't match", - "messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required", - "messageAuthUsernameTaken": "Username already taken", - "messageAuthEmailTaken": "Email already taken", - "messageAuthNoUserFound": "No user found.", - "messageAuthMustBeLoggedIn": "You must be logged in.", - "messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request", - "messageGroupNotFound": "Group not found or you don't have access.", - "messageGroupAlreadyInParty": "Already in a party, try refreshing.", - "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", - "messageGroupRequiresInvite": "Can't join a group you're not invited to.", - "messageGroupCannotRemoveSelf": "You cannot remove yourself!", - "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", - "messageUserOperationNotFound": "<%= operation %> operation not found" + "messageInsufficientGems": "Nedostatek drahokamů!", + "messageAuthPasswordMustMatch": ":password a :confirmPassword se neshodují", + "messageAuthCredentialsRequired": "Je vyžadováno :username, :email, :password, :confirmPassword ", + "messageAuthUsernameTaken": "Toto jméno již existuje.", + "messageAuthEmailTaken": "Email se již používá", + "messageAuthNoUserFound": "Uživatel nenalezen.", + "messageAuthMustBeLoggedIn": "Musíš být přihlášen.", + "messageAuthMustIncludeTokens": "Ve svém požadavku musíš uvést token a uid (uživatelské id)", + "messageGroupNotFound": "Družina nenalezena, nebo do ní nemáš přístup.", + "messageGroupAlreadyInParty": "Již jsi ve skupině, zkus znovu načíst stránku.", + "messageGroupOnlyLeaderCanUpdate": "Pouze velitel družiny může jí může upravovat!", + "messageGroupRequiresInvite": "Nemůžeš se přidat do družiny, do které nejsi pozván.", + "messageGroupCannotRemoveSelf": "Nemůžeš se sám odebrat!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", + "messageUserOperationProtected": "cesta `<%= operation %>` nebyla uložena, protože je chráněná.", + "messageUserOperationNotFound": "<%= operation %> operace nebyla nalezena" } \ No newline at end of file diff --git a/common/locales/cs/npc.json b/common/locales/cs/npc.json index 6f331d9b03..1747309ae0 100644 --- a/common/locales/cs/npc.json +++ b/common/locales/cs/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Eh... Jestli se účastníš boje s příšerou, ublíží ti i za nesplněné denní úkoly ostatních členů tvé družiny... Navíc, jakákoliv újma, kterou uštědříš příšeře (nebo nasbírané předměty) se ti nepřipíšou dokud se z Hostince neodhlásíš...", "alexander": "Obchodník Alexander", "welcomeMarket": "Vítej na trhu! Kup si vzácná vejce a lektvary! Prodej, co máš navíc! Objednej si užitečné služby! Přijď se podívat, co všechno nabízíme.", - "sellForGold": "Prodej <%= item %> za <%= gold %> zlaťáků", - "sellEggForGold": "Prodej vejce <%= itemType %>a za <%= gold %> zlaťáky.", - "sellPotionForGold": "Prodej <%= itemType %> lektvar za <%= gold %> zlaťáky.", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Kup drahokamy", "justin": "Justin", "ian": "Ian", diff --git a/common/locales/cs/rebirth.json b/common/locales/cs/rebirth.json index 2e051f157a..507e5bb119 100644 --- a/common/locales/cs/rebirth.json +++ b/common/locales/cs/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "Také dostaneš ocenění za začátek nového dobrodružství.", "beReborn": "Buď znovuzrozen", "rebirthAchievement": "Začal jsi nové dobrodružství! Tohle je Znovuzrození číslo <%= number %> a nejvyšší úroveň, které jsi dosáhl je <%= level %>. K dosažení dalšího ocenění začni nové dobrodružství až dosáhneš ještě vyšší úrovně!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Začal nové dobrodružství", "rebirthText": "Začal <%= rebirths %> nových dobrodružství", "rebirthOrb": "Použil Kouli znovuzrození, aby začal odznovu po dosažení úrovně", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "Začni s novou postavou na úrovni 1 a přitom si zachovej ocenění, sběratelské předměty a úkoly s historií.", "rebirthName": "Koule znovuzrození", "reborn": "Znovuzrozen, maximální úroveň <%= reLevel %>" diff --git a/common/locales/da/messages.json b/common/locales/da/messages.json index eda06b896d..1941c9f658 100644 --- a/common/locales/da/messages.json +++ b/common/locales/da/messages.json @@ -44,6 +44,12 @@ "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", "messageGroupRequiresInvite": "Can't join a group you're not invited to.", "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" } \ No newline at end of file diff --git a/common/locales/da/npc.json b/common/locales/da/npc.json index 9d1376484c..c72dcd66ed 100644 --- a/common/locales/da/npc.json +++ b/common/locales/da/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", "alexander": "Købmanden Alexander", "welcomeMarket": "Velkommen til Markedet! Her kan du købe æg og eliksirer, der er svære at finde, eller sælge dine overskydende! Bestil nyttige tjenester! Kom og se hvad vi har at tilbyde.", - "sellForGold": "Sælg <%= item %> for <%= gold %> Guld", - "sellEggForGold": "Sælg <%= itemType %> Æg for <%= gold %> Guld", - "sellPotionForGold": "Sælg <%= itemType %> Eliksir for <%= gold %> Guld", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Køb Ædelsten", "justin": "Justin", "ian": "Ian", diff --git a/common/locales/da/rebirth.json b/common/locales/da/rebirth.json index de0930b444..6669c9aab5 100644 --- a/common/locales/da/rebirth.json +++ b/common/locales/da/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "Du får også en Præstation for at begynde et nyt eventyr!", "beReborn": "Bliv Genfødt", "rebirthAchievement": "Du har begyndt et nyt eventyr! Dette er Genfødsel nummer <%= number %> for dig, og det højeste Niveau du har opnået er <%= level %>. Hvis du vil slå denne Præstation skal du først begynde et nyt eventyr, når du har opnået et endnu højere Niveau!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Begyndte et Nyt Eventyr", "rebirthText": "Begyndte <%= rebirths %> Nye Eventyr", "rebirthOrb": "Brugte en Genfødselskugle til at starte forfra efter at have opnået Niveau", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "Begynd en ny karakter på Niveau 1 mens du beholder præstationer, samlerobjekter, og opgaver med historik.", "rebirthName": "Genfødselskugle", "reborn": "Genfødt, højeste Niveau <%= reLevel %>" diff --git a/common/locales/de/challenge.json b/common/locales/de/challenge.json index 2ceb72eb4b..62ead3b921 100644 --- a/common/locales/de/challenge.json +++ b/common/locales/de/challenge.json @@ -60,6 +60,6 @@ "noPermissionEditChallenge": "Du hast keine Berechtigung, um diesen Wettbewerb zu ändern.", "noPermissionDeleteChallenge": "Du hast keine Berechtigung, um diesen Wettbewerb zu löschen.", "noPermissionCloseChallenge": "Du hast keine Berechtigung, um diesen Wettbewerb zu schließen.", - "noChallengeOwner": "no owner", - "noChallengeOwnerPopover": "This challenge does not have an owner because the person who created the challenge deleted their account." + "noChallengeOwner": "Kein Besitzer", + "noChallengeOwnerPopover": "Dieser Wettbewerb hat keinen Besitzer, da der Spieler, der den Wettbewerb erstellt hat, sein Benutzerkonto gelöscht hat." } \ No newline at end of file diff --git a/common/locales/de/character.json b/common/locales/de/character.json index 3f5df0e545..7ccb086804 100644 --- a/common/locales/de/character.json +++ b/common/locales/de/character.json @@ -52,7 +52,7 @@ "classEquipBonus": "Klassenbonus", "battleGear": "Kampfausrüstung", "battleGearText": "Das ist deine Kampfausrüstung; sie beeinflusst Zahlen, wenn du mit deinen Aufgaben interagierst.", - "autoEquipBattleGear": "Auto-equip new gear", + "autoEquipBattleGear": "Neue Ausrüstung automatisch verwenden", "costume": "Verkleidung", "costumeText": "Wenn Du das Aussehen einer anderen Ausrüstung Deiner Kampfausrüstung vorziehst, dann klicke auf die \"Verkleidung tragen\" Box um über Deiner Kampfausrüstung andere Ausrüstungsgegenstände zu tragen.", "useCostume": "Verkleidung tragen", diff --git a/common/locales/de/content.json b/common/locales/de/content.json index d8d7a74849..48ab3944e2 100644 --- a/common/locales/de/content.json +++ b/common/locales/de/content.json @@ -95,9 +95,9 @@ "questEggHorseText": "Hengst", "questEggHorseMountText": "Hengst", "questEggHorseAdjective": "ein galoppierender", - "questEggFrogText": "Frog", - "questEggFrogMountText": "Frog", - "questEggFrogAdjective": "a princely", + "questEggFrogText": "Frosch", + "questEggFrogMountText": "Frosch", + "questEggFrogAdjective": "ein fürstlicher", "eggNotes": "Finde einen Schlüpftrank, den du über dieses Ei gießen kannst, damit ein <%= eggAdjective(locale) %> <%= eggText(locale) %> schlüpfen kann.", "hatchingPotionBase": "Normaler", "hatchingPotionWhite": "Weißer", diff --git a/common/locales/de/death.json b/common/locales/de/death.json index b0ba690087..6fcfe394d2 100644 --- a/common/locales/de/death.json +++ b/common/locales/de/death.json @@ -4,7 +4,7 @@ "deathPenaltyDetails": "Du hast einen Level, dein Gold und ein Stück Ausrüstung verloren, aber du kannst alles durch harte Arbeit wieder zurückbekommen! Viel Glück -- Du schaffst das.", "refillHealthTryAgain": "Leben wieder auffüllen & Nochmal versuchen", "dyingOftenTips": "Passiert das öfters? Hier gibt es einige Tipps!", - "losingHealthWarning": "Vorsicht - Du verlierst Leben!", + "losingHealthWarning": "Vorsicht - Du verlierst Lebenspunkte!", "losingHealthWarning2": "Lass Deine Lebensenergie nicht auf null fallen! Sollte das passieren wirst Du ein Level, Dein Gold und einen Gegenstand Deiner Ausrüstung verlieren.", "toRegainHealth": "Um Deine Lebensenergie aufzufüllen:", "lowHealthTips1": "Steige ein Level auf um Dich voll zu heilen!", diff --git a/common/locales/de/faq.json b/common/locales/de/faq.json index 8f1fb61b3d..96a22ce6d1 100644 --- a/common/locales/de/faq.json +++ b/common/locales/de/faq.json @@ -36,7 +36,7 @@ "faqQuestion11": "Wie melde ich einen Fehler oder schlage ein Feature vor?", "iosFaqAnswer11": "Um einen Fehler zu melden, ein Feature vorzuschlagen oder Feedback zu senden, gehe im Menü unter Hilfe > Melde einen Fehler und Hilfe > Feature vorschlagen! Wir werden alles tun, um dir zu helfen.", "webFaqAnswer11": "Gemeldete Fehler werden in GitHub gesammelt. Gehe zu [Hilfe > Melde einen Fehler](https://github.com/HabitRPG/habitrpg/issues/2760) und folge den Anweisungen. Keine Sorge, wir werden ihn so bald wie möglich beheben!\n

\nVorgeschlagene Features werden in Trello gesammelt. Gehe zu [Hilfe > Feature vorschlagen](https://trello.com/c/odmhIqyW/440-read-first-table-of-contents) und folge den Anweisungen. Tadaa!", - "faqQuestion12": "How do I battle a World Boss?", + "faqQuestion12": "Wie bekämpfe ich einen Weltboss?", "iosFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and skills will damage the Boss as usual.\n\n You can also be in a normal Quest at the same time. Your tasks and skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.", "webFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and skills will damage the Boss as usual.\n

\n You can also be in a normal Quest at the same time. Your tasks and skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n

\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n

\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.", "iosFaqStillNeedHelp": "Wenn du eine Frage hast, die hier nicht beantwortet wurde, stelle sie im Chat im Gasthaus unter Soziales > Gasthaus! Wir helfen dir gerne.", diff --git a/common/locales/de/messages.json b/common/locales/de/messages.json index d4db41bb0c..d611eb56c7 100644 --- a/common/locales/de/messages.json +++ b/common/locales/de/messages.json @@ -31,19 +31,25 @@ "armoireEquipment": "<%= image %> Du hast ein Stück seltener Ausrüstung im verzauberten Schrank gefunden: <%= dropText %>! Wow!", "armoireFood": "<%= image %> Du wühlst im verzauberten Schrank herum und findest <%= dropArticle %><%= dropText %>. Was macht das denn da drin?", "armoireExp": "Du ringst mit dem verzauberten Schrank und gewinnst Erfahrung. Nimm das!", - "messageInsufficientGems": "Not enough gems!", - "messageAuthPasswordMustMatch": ":password and :confirmPassword don't match", - "messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required", - "messageAuthUsernameTaken": "Username already taken", - "messageAuthEmailTaken": "Email already taken", - "messageAuthNoUserFound": "No user found.", - "messageAuthMustBeLoggedIn": "You must be logged in.", - "messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request", - "messageGroupNotFound": "Group not found or you don't have access.", - "messageGroupAlreadyInParty": "Already in a party, try refreshing.", - "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", - "messageGroupRequiresInvite": "Can't join a group you're not invited to.", - "messageGroupCannotRemoveSelf": "You cannot remove yourself!", - "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", - "messageUserOperationNotFound": "<%= operation %> operation not found" + "messageInsufficientGems": "Nicht genügend Edelsteine!", + "messageAuthPasswordMustMatch": ":password und :confirmPassword stimmen nicht überein", + "messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword erforderlich", + "messageAuthUsernameTaken": "Benutzername existiert bereits", + "messageAuthEmailTaken": "E-Mail existiert bereits", + "messageAuthNoUserFound": "Kein Benutzer gefunden", + "messageAuthMustBeLoggedIn": "Du musst angemeldet sein.", + "messageAuthMustIncludeTokens": "Deine Anfrage muss ein Token und eine UID (Benutzer-Kennung) beinhalten", + "messageGroupNotFound": "Gruppe nicht gefunden, oder du hast keine Zugriffsrechte.", + "messageGroupAlreadyInParty": "Der Gruppe bereits beigetreten, versuche neu zu laden.", + "messageGroupOnlyLeaderCanUpdate": "Nur der Gruppenleiter kann die Gruppe aktualisieren!", + "messageGroupRequiresInvite": "Du kannst keiner Gruppe beitreten, zu der du nicht eingeladen wurdest.", + "messageGroupCannotRemoveSelf": "Du kannst dich nicht selbst entfernen!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", + "messageUserOperationProtected": "Pfad `<%= operation %>` nicht gespeichert, da dieser geschützt ist.", + "messageUserOperationNotFound": "<%= operation %> Operation nicht gefunden" } \ No newline at end of file diff --git a/common/locales/de/npc.json b/common/locales/de/npc.json index ed0d5f0151..4319caa0b0 100644 --- a/common/locales/de/npc.json +++ b/common/locales/de/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", "alexander": "Alexander der Händler", "welcomeMarket": "Willkommen auf dem Marktplatz! Kaufe schwer zu findende Eier und Tränke! Verkaufe Überflüssiges! Gib' wichtige Dienste in Auftrag! Komm' und schau', was wir anzubieten haben.", - "sellForGold": "Verkaufe <%= item %> für <%= gold %> Gold", - "sellEggForGold": "Verkaufe <%= itemType %> Ei für <%= gold %> Gold", - "sellPotionForGold": "Verkaufe <%= itemType %> Trank für <%= gold %> Gold", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Kaufe Edelsteine", "justin": "Justin", "ian": "Jan", diff --git a/common/locales/de/quests.json b/common/locales/de/quests.json index b0687ad984..959e6fb6d1 100644 --- a/common/locales/de/quests.json +++ b/common/locales/de/quests.json @@ -43,7 +43,7 @@ "bossColl1": "Um Gegenstände zu sammeln musst Du Deine Aufgaben erfüllen. Quest Gegenstände sind genauso wie normale Gegenstände zu finden, aber Du kannst das Ergebnis erst zum Tageswechsel sehen. Dann wird alles, was jeder Teilnehmer gefunden hat zusammengerechnet und dem Quest zugerechnet.", "bossColl2": "Nur Teilnehmer können Gegenstände sammeln und erhalten ihren Anteil an der Beute.", "bossColl1Broken": "To collect items, do your positive tasks... Quest items drop just like normal items; however, you won't see the drops until the next day, then everything you've found will be tallied up and contributed to the pile...", - "bossColl2Broken": "Only participants can collect items and share in the quest loot...", + "bossColl2Broken": "Nur Mitglieder können Gegenstände sammeln und sich die Quest-Beute teilen ...", "abort": "Abbrechen", "leaveQuest": "Quest verlassen", "sureLeave": "Willst Du die aktive Quest wirklich verlassen? Dein kompletter Questfortschritt wird verlorengehen.", @@ -62,7 +62,7 @@ "alreadyEarnedQuestReward": "Du hast diese Quest bereits durch Abschließen der Quest <%= priorQuest %> freigeschaltet.", "completedQuests": "Hat die folgenden Quests abgeschlossen", "mustComplete": "Du musst vorher das <%= quest %> Quest abschließen.", - "mustLevel": "Um diese Quest zu starten, musst Dein Level mindestens <%= level %> betragen.", + "mustLevel": "Du musst Level <%= level %> sein, um diese Quest zu starten.", "mustLvlQuest": "Du musst Level <%= level %> sein um dieses Quest zu erwerben!", "mustInviteFriend": "Um diese Quest freizuschalten, musst du einen Freund in deine Gruppe einladen. Jetzt jemanden einladen?", "unlockByQuesting": "Um diese Quest freizuschalten, schließe <%= title %> ab.", diff --git a/common/locales/de/questscontent.json b/common/locales/de/questscontent.json index 2d2effc74a..4dc4365ae6 100644 --- a/common/locales/de/questscontent.json +++ b/common/locales/de/questscontent.json @@ -12,7 +12,7 @@ "questEvilSanta2DropBearCubPolarPet": "Eisbär (Haustier)", "questGryphonText": "Der Feurige Greif", "questGryphonNotes": "Der große Herr aller Bestien, baconsaur, kommt zu deiner Gruppe, denn er sucht nach Hilfe. \"Abenteurer, bitte, ihr müsst mir helfen! Mein preisgekrönter Greif ist ausgebrochen und terrorisiert nun Habit City! Wenn ihr sie aufhaltet, kann ich euch mit einigen von ihren Eiern belohnen!\"", - "questGryphonCompletion": "Das mächtige Tier schleigt besiegt zu seinem Meister zurück. \"Ich bin beeindruckt! Gut gemacht, Abenteurer!\" ruft baconsaur, \"Bitte nehmt ein paar Greifeneier als Dank an. Ich bin sicher, Ihr werdet Euch gut um sie kümmern!\"", + "questGryphonCompletion": "Das mächtige Tier schleicht besiegt zu seinem Meister zurück. \"Ich bin beeindruckt! Gut gemacht, Abenteurer!\" ruft baconsaur, \"Bitte nehmt ein paar Greifeneier als Dank an. Ich bin sicher, Ihr werdet Euch gut um sie kümmern!\"", "questGryphonBoss": "Feuriger Greif", "questGryphonDropGryphonEgg": "Greif (Ei)", "questGryphonUnlockText": "Ermöglicht den Kauf von Greifeneiern auf dem Marktplatz.", @@ -96,7 +96,7 @@ "questGoldenknight2Boss": "Goldene Ritterin", "questGoldenknight2DropGoldenknight3Quest": "Die Goldene Ritterin-Kette Teil 3: Der Eiserne Ritter (Rolle)", "questGoldenknight3Text": "Der goldene Ritter, Teil 3: Der eiserne Ritter", - "questGoldenknight3Notes": "

@Jon Arinbjorn cries out to you to get your attention. In the aftermath of your battle, a new figure has appeared. A knight coated in stained-black iron slowly approaches you with sword in hand. The Golden Knight shouts to the figure, \"Father, no!\" but the knight shows no signs of stopping. She turns to you and says, \"I am sorry. I have been a fool, with a head too big to see how cruel I have been. But my father is crueler than I could ever be. If he isn't stopped he'll destroy us all. Here, use my morningstar and halt the Iron Knight!\"

", + "questGoldenknight3Notes": "

@Jon Arinbjorn ruft zu Dir, um deine Aufmerksamkeit zu erlangen. Im Nachspiel Deiner Schlacht ist eine neue Figur aufgetaucht. Ein Ritter, gerüstet in schwarz geflecktem Eisen, kommt Dir langsam mit einem Schwert in der Hand entgegen. Die goldene Ritterin ruft ihm zu: \"Vater, nein!\" Aber der Ritter zeigt keinerlei Anzeichen anzuhalten. Sie wendet sich an Dich: \"Es tut mir Leid. Ich war ein Narr und zu stolz zu erkennen, wie grausam ich war. Aber mein Vater ist noch viel grausamer als ich es je sein könnte. Wenn er nicht aufgehalten wird, dann wird er uns alle vernichten. Hier, nimm meinen Morgenstern und halte den eisernen Ritter auf!\"

", "questGoldenknight3Completion": "

Mit einem befriedigenden Geklirr fällt der Eiserne Ritter zu Knie und sackt zusammen. \"Du bist ziemlich stark,\" keucht er. \"Mir wurde heute Bescheidenheit gelehrt.\" Die Goldene Ritterin kommt zu dir und sagt, \"Ich danke dir. Ich glaube, wir beide haben aus der Begegnung mit dir etwas Bescheidenheit gelernt. Ich werde mit meinem Vater sprechen und ihm die Beschwerden über uns erklären. Vielleicht sollten wir damit anfangen, uns bei den anderen Habiticanern zu entschuldigen.\" Sie denkt darüber nach und wendet sich dann wieder dir zu. \"Hier: als ein Geschenk für dich gebe ich dir meinen Morgenstern. Er gehört jetzt dir.\"

", "questGoldenknight3Boss": "Der Eiserne Ritter", "questGoldenknight3DropHoney": "Honig (Futter)", diff --git a/common/locales/de/rebirth.json b/common/locales/de/rebirth.json index dab181db0f..0cc265cb7e 100644 --- a/common/locales/de/rebirth.json +++ b/common/locales/de/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "Du erhältst den Erfolg für das Beginnen eines neuen Abenteuers!", "beReborn": "Werde wiedergeboren", "rebirthAchievement": "Du hast ein neues Abenteuer begonnen! Das ist Wiedergeburt Nummer <%= number %> für Dich, Dein höchstes jemals erreichtes Level ist <%= level %>. Um diesen Erfolg zu stapeln, beginne Dein nächstes Abenteuer wenn Du ein noch höheres Level erreicht hast!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Hat ein neues Abenteuer begonnen", "rebirthText": "Hat <%= rebirths %> neue Abenteuer begonnen", "rebirthOrb": "Hat eine Sphäre der Wiedergeburt verwendet nachdem er folgendes Level erreicht hatte:", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "Starte einen neuen Charakter mit Level 1, aber behalte Erfolge, Sammlungen und Aufgaben mit Verlauf bei.", "rebirthName": "Sphäre der Wiedergeburt", "reborn": "Wiedergeboren, max. Level <%= reLevel %>" diff --git a/common/locales/en@pirate/faq.json b/common/locales/en@pirate/faq.json index 5980c8daee..36f63e2ae6 100644 --- a/common/locales/en@pirate/faq.json +++ b/common/locales/en@pirate/faq.json @@ -30,7 +30,7 @@ "faqQuestion9": "How do I fight monsters and go on Quests?", "iosFaqAnswer9": "First, you need to join or start a Party (see above). Although you can battle monsters alone, we recommend playing in a group, because this will make Quests much easier. Plus, having a friend to cheer you on as you accomplish your tasks is very motivating!\n\n Next, you need a Quest Scroll, which are stored under Menu > Items. There are three ways to get a scroll:\n\n - At level 15, you get a Quest-line, aka three linked quests. More Quest-lines unlock at levels 30, 40, and 60 respectively. \n - When you invite people to your Party on the [website](https://habitica.com/#/options/groups/party), you'll be rewarded with the Basi-List Scroll! (We will add this feature to the app in a future update.)\n - You can buy Quests from the Quests Page on the [website](https://habitica.com/#/options/inventory/quests) for gold and gems. (We will add this feature to the app in a future update.)\n\n To battle the Boss or collect items for a Collection Quest, simply complete your tasks normally, and they will be tallied into damage overnight. (Reloading by pulling down on the screen may be required to see the Boss's health bar go down.) If you are fighting a Boss and you missed any Dailies, the Boss will damage your Party at the same time that you damage the Boss. \n\n After level 11 Mages and Warriors will gain Skills that allow them to deal additional damage to the Boss, so these are excellent classes to choose at level 10 if you want to be a heavy hitter.", "webFaqAnswer9": "First, you need to join or start a party (under Social > Party). Although you can battle monsters alone, we recommend playing in a group, because this will make quests much easier. Plus, having a friend to cheer you on as you accomplish your tasks is very motivating!\n

\n Next, you need a Quest Scroll, which are stored under Inventory > Quests. There are three ways to get a scroll:\n

\n * When you invite people to your party, you’ll be rewarded with the Basi-List Scroll!\n * At level 15, you get a Quest-line, i.e., three linked quests. More Quest-lines unlock at levels 30, 40, and 60 respectively.\n * You can buy Quests from the Quests Page (Inventory > Quests) for Gold and Gems.\n

\n To battle the Boss or collect items for a Collection Quest, simply complete your tasks normally, and they will be tallied into damage overnight. (Reloading may be required to see the Boss's Health bar go down.) If you are fighting a Boss and you missed any Dailies, the Boss will damage your party at the same time that you damage the Boss.\n

\n After level 11 Mages and Warriors will gain Skills that allow them to deal additional damage to the Boss, so these are excellent classes to choose at level 10 if you want to be a heavy hitter.", - "faqQuestion10": "What are gems, and how do I get them?", + "faqQuestion10": "What be gems, and how do I get them?", "iosFaqAnswer10": "Gems are purchased with real money by tapping on the gem icon in the header. When people buy gems, they are helping us to keep the site running. We're very grateful for their support!\n\n In addition to buying gems directly, there are three other ways players can gain gems:\n\n * Win a Challenge on the [website](https://habitica.com) that has been set up by another player under Social > Challenges. (We will be adding Challenges to the app in a future update!)\n * Subscribe on the [website](https://habitica.com/#/options/settings/subscription) and unlock the ability to buy a certain number of gems per month.\n * Contribute your skills to the Habitica project. See this wiki page for more details: [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica).\n\n Keep in mind that items purchased with gems do not offer any statistical advantages, so players can still make use of the app without them!", "webFaqAnswer10": "Gems are [purchased with real money](https://habitica.com/#/options/settings/subscription), although [subscribers](https://habitica.com/#/options/settings/subscription) can purchase them with Gold. When people subscribe or buy Gems, they are helping us to keep the site running. We're very grateful for their support!\n

\n In addition to buying Gems directly or becoming a subscriber, there are two other ways players can gain Gems:\n

\n * Win a Challenge that has been set up by another player under Social > Challenges.\n * Contribute your skills to the Habitica project. See this wiki page for more details: [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica)\n

\n Keep in mind that items purchased with Gems do not offer any statistical advantages, so players can still make use of the site without them!", "faqQuestion11": "How do I report a bug or request a feature?", diff --git a/common/locales/en@pirate/messages.json b/common/locales/en@pirate/messages.json index 0d1a7a2df7..5abbbe2aff 100644 --- a/common/locales/en@pirate/messages.json +++ b/common/locales/en@pirate/messages.json @@ -44,6 +44,12 @@ "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", "messageGroupRequiresInvite": "Can't join a group you're not invited to.", "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" } \ No newline at end of file diff --git a/common/locales/en@pirate/npc.json b/common/locales/en@pirate/npc.json index dd3434f568..4da335ab93 100644 --- a/common/locales/en@pirate/npc.json +++ b/common/locales/en@pirate/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", "alexander": "Alexander th' Sutler", "welcomeMarket": "Welcome t' th' Market! Buy harrrd-to-find eggs 'n potions! Sell yer extras! Commission useful services! Come 'n see what we have to offer ye.", - "sellForGold": "Sell <%= item %> fer <%= gold %> Doubloons", - "sellEggForGold": "Sell <%= itemType %> Egg for <%= gold %> Gold", - "sellPotionForGold": "Sell <%= itemType %> Potion for <%= gold %> Gold", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Buy Sapphires", "justin": "Justin", "ian": "Shipmate Ian", diff --git a/common/locales/en@pirate/rebirth.json b/common/locales/en@pirate/rebirth.json index 6430676dba..3b2e4fd40c 100644 --- a/common/locales/en@pirate/rebirth.json +++ b/common/locales/en@pirate/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "Ye also earn an Achievement fer embarkin' on a new adventure!", "beReborn": "Be Reborn", "rebirthAchievement": "Ye've begun a new adventure! 'tis be Rebirth <%= number %> fer ye, 'n th' highest Level ye've attained be <%= level %>. To stack 'tis Achievement, begin ye next new adventure when ye've reached an even higher Level!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Embarked on a New Adventure", "rebirthText": "Embarked on <%= rebirths %> New Adventures", "rebirthOrb": "Used an Orb o' Rebirth to start ov'r after attainin' Level", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "Begin a new character at Level 1 whilst retainin' achievements, collectibles, an' tasks with history.", "rebirthName": "Orb o' Rebirth", "reborn": "Reborn, max level <%= reLevel %>" diff --git a/common/locales/en_GB/messages.json b/common/locales/en_GB/messages.json index e4e8f75f26..b02f6f6761 100644 --- a/common/locales/en_GB/messages.json +++ b/common/locales/en_GB/messages.json @@ -44,6 +44,12 @@ "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", "messageGroupRequiresInvite": "Can't join a group you're not invited to.", "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" } \ No newline at end of file diff --git a/common/locales/en_GB/npc.json b/common/locales/en_GB/npc.json index 86c24d2ebf..c70fc41568 100644 --- a/common/locales/en_GB/npc.json +++ b/common/locales/en_GB/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", "alexander": "Alexander the Merchant", "welcomeMarket": "Welcome to the Market! Buy hard-to-find eggs and potions! Sell your extras! Commission useful services! Come see what we have to offer.", - "sellForGold": "Sell <%= item %> for <%= gold %> Gold", - "sellEggForGold": "Sell <%= itemType %> Egg for <%= gold %> Gold", - "sellPotionForGold": "Sell <%= itemType %> Potion for <%= gold %> Gold", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Buy Gems", "justin": "Justin", "ian": "Ian", diff --git a/common/locales/en_GB/rebirth.json b/common/locales/en_GB/rebirth.json index da6612796f..e379042ec4 100644 --- a/common/locales/en_GB/rebirth.json +++ b/common/locales/en_GB/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "You also earn an Achievement for beginning a new adventure!", "beReborn": "Be Reborn", "rebirthAchievement": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is <%= level %>. To stack this Achievement, begin your next new adventure when you've reached an even higher Level!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Began a New Adventure", "rebirthText": "Began <%= rebirths %> New Adventures", "rebirthOrb": "Used an Orb of Rebirth to start over after attaining Level", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "Begin a new character at Level 1 while retaining achievements, collectibles, and tasks with history.", "rebirthName": "Orb of Rebirth", "reborn": "Reborn, max level <%= reLevel %>" diff --git a/common/locales/es/messages.json b/common/locales/es/messages.json index 6214df79c2..5bb61d4385 100644 --- a/common/locales/es/messages.json +++ b/common/locales/es/messages.json @@ -44,6 +44,12 @@ "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", "messageGroupRequiresInvite": "Can't join a group you're not invited to.", "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" } \ No newline at end of file diff --git a/common/locales/es/npc.json b/common/locales/es/npc.json index 4a47bc0714..21a11636e1 100644 --- a/common/locales/es/npc.json +++ b/common/locales/es/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", "alexander": "Alexander el Mercader", "welcomeMarket": "¡Bienvenido al Mercado! ¡Compra huevos dificiles de encontrar y pociones! ¡Vende los que te sobren! ¡Encarga servicios utiles! Ven a ver lo que tenemos que ofrecer.", - "sellForGold": "Vender <%= item %> por <%= gold %> Oro", - "sellEggForGold": "Vender Huevo <%= itemType %> por <%= gold %> oro", - "sellPotionForGold": "Vender Poción <%= itemType %> por <%= gold %> oro", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Comprar Gemas", "justin": "Justin", "ian": "Ian", diff --git a/common/locales/es/rebirth.json b/common/locales/es/rebirth.json index c815488505..39f582ab24 100644 --- a/common/locales/es/rebirth.json +++ b/common/locales/es/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "¡También recibirás un Logro por haber empezado una nueva aventura!", "beReborn": "Renacer", "rebirthAchievement": "¡Has comenzado una nueva aventura! Este es Renacimiento <%= number %> para ti, y el Nivel más alto que has conseguido es <%= level %>. Para apilar este Logro, ¡empieza tu aventura siguiente después de haber conseguido un nivel más alto!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Comienza una nueva aventura", "rebirthText": "Comenzó <%= rebirths %> nuevas aventuras", "rebirthOrb": "Usó una Esfera de Renacimiento para comenzar de nuevo después de llegar al Nivel", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "Comienza con un personaje en Nivel 1, manteniendo logros, coleccionables, y tareas con historial.", "rebirthName": "Esfera de Renacimiento", "reborn": "Renacido, nivel máximo <%= reLevel %>" diff --git a/common/locales/es_419/character.json b/common/locales/es_419/character.json index e86be49727..dfd9d6fba2 100644 --- a/common/locales/es_419/character.json +++ b/common/locales/es_419/character.json @@ -52,7 +52,7 @@ "classEquipBonus": "Bono por Equipamiento de clase", "battleGear": "Equipamiento de combate", "battleGearText": "Este es el equipamiento que usas en combate, afecta los resultados cuando interactúas con tus tareas.", - "autoEquipBattleGear": "Auto-equip new gear", + "autoEquipBattleGear": "Auto vestir nuevo equipamiento", "costume": "Disfraz", "costumeText": "Si prefieres el aspecto de otro equipo al que estás usando, marca la casilla \"Usar Disfraz\" para llevarlo como disfraz mientras usas tu equipo de batalla por debajo.", "useCostume": "Llevar disfraz", diff --git a/common/locales/es_419/generic.json b/common/locales/es_419/generic.json index 2c15474cfc..9facdaa911 100644 --- a/common/locales/es_419/generic.json +++ b/common/locales/es_419/generic.json @@ -28,7 +28,7 @@ "market": "Mercado", "subscriberItem": "Objeto misterio", "newSubscriberItem": "Nuevo objeto misterio", - "subscriberItemText": "Each month, subscribers will receive a mystery item. This is usually released about one week before the end of the month. See the wiki's 'Mystery Item' page for more information.", + "subscriberItemText": "Cada mes, suscriptores recibirán un ítem misterioso. Esto sucede usualmente una semana antes de fin de mes. Ve la pagina de la wiki llamada \"Ítem Misterioso\" para más información.", "all": "Todo", "none": "Ninguno", "or": "O", @@ -79,7 +79,7 @@ "errorUpCase": "ERROR:", "newPassSent": "Nueva contraseña enviada.", "serverUnreach": "Error en la conexión al servidor.", - "requestError": "Yikes, an error occurred! Please reload the page, your last action may not have been saved correctly.", + "requestError": "Rayos!, ha ocurrido un error! Por favor recarga la página, tu última acción puede no haberse guardado correctamente.", "seeConsole": "Si el error persiste, por favor reportalo en Ayuda > Reportar un error. Si estas familiarizado con la consola de tu navegador, por favor incluye cualquier mensaje de error.", "error": "Error", "menu": "Menú", diff --git a/common/locales/es_419/groups.json b/common/locales/es_419/groups.json index f479c6dd60..6544d1a3ce 100644 --- a/common/locales/es_419/groups.json +++ b/common/locales/es_419/groups.json @@ -3,7 +3,7 @@ "innCheckOut": "Dejar la posada", "innCheckIn": "Descansar en la posada", "innText": "¡Has entrado a descansar en la Posada! Mientras permanezcas aquí tus Diarias no te dañarán al finalizar el día, pero sí se renovarán cada día.\nTen cuidado: si tu equipo está en medio de una Batalla contra un Jefe ¡sus Diarias incompletas te seguirán haciendo daño! Además, tú no dañarás al jefe (ni obtendrás los objetos recolectados) hasta que no hayas salido de la Posada.", - "innTextBroken": "You're resting in the Inn, I guess... While checked-in, your Dailies won't hurt you at the day's end, but they will still refresh every day... If you are participating in a Boss Quest, the Boss will still damage you for your party mates' missed Dailies... unless they are also in the Inn... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn... so tired...", + "innTextBroken": "Te quedarás en la Posada supongo.... Mientras estés aquí , tus diarias no reducirán tu salud al acabar el dia, pero sí se refrescarán... Si estás participando en una misión contra un Jefe, él te hará daño igualmente si tus compañeros no realizan sus diarias... a menos que ellos también estén en la Posada... Además, tu daño contra el Jefe (o inventario que hayas obtenido) no será aplicado hasta que dejes la Posada... que cansancio....", "lfgPosts": "Publicaciones en la búsqueda de un grupo (Se busca Equipo)", "tutorial": "Tutoría", "glossary": "Glosario", @@ -147,5 +147,5 @@ "partyChatEmpty": "¡El chat de tu equipo está vacío! Escribe un mensaje en el recuadro de arriba para empezar a conversar.", "guildChatEmpty": "¡El chat de este gremio está vacío! Escribe un mensaje en el recuadro de arriba para empezar a conversar.", "possessiveParty": "El equipo de <%= name %>", - "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Communit Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them." + "requestAcceptGuidelines": "Si quieres publicar mensajes en la Taberna o en cualquier chat de grupo o gremio, por favor primero lee nuestras Normas de la Comunidad y selecciona el botón \"Acepto las Normas\" para indicar que las aceptas." } \ No newline at end of file diff --git a/common/locales/es_419/messages.json b/common/locales/es_419/messages.json index 16b25f0ddb..8b540ad9ac 100644 --- a/common/locales/es_419/messages.json +++ b/common/locales/es_419/messages.json @@ -5,7 +5,7 @@ "messageTagNotFound": "Etiqueta no encontrada.", "messagePetNotFound": ":pet no encontrado en user.items.pets", "messageFoodNotFound": ":food no encontrado en user.items.food", - "messageNotAvailable": "This item is not currently available for purchase.", + "messageNotAvailable": "Esta cosa no está disponible para comprar.", "messageCannotFeedPet": "No se pudo alimentar a esta mascota.", "messageAlreadyMount": "Ya posees esta montura. Intenta alimentar a otra mascota.", "messageEvolve": "Has domesticado a <%= egg %>, ¡vamos a dar una vuelta!", @@ -32,10 +32,10 @@ "armoireFood": "<%= image %> You rummage in the Armoire and find <%= dropArticle %><%= dropText %>. What's that doing in here?", "armoireExp": "You wrestle with the Armoire and gain Experience. Take that!", "messageInsufficientGems": "Not enough gems!", - "messageAuthPasswordMustMatch": ":password and :confirmPassword don't match", + "messageAuthPasswordMustMatch": ":password y :confirmPassword no coinciden", "messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required", - "messageAuthUsernameTaken": "Username already taken", - "messageAuthEmailTaken": "Email already taken", + "messageAuthUsernameTaken": "El nombre de usuario no está disponible", + "messageAuthEmailTaken": "Esta dirección de correo electrónico ya esta siendo usada", "messageAuthNoUserFound": "No user found.", "messageAuthMustBeLoggedIn": "You must be logged in.", "messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request", @@ -44,6 +44,12 @@ "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", "messageGroupRequiresInvite": "Can't join a group you're not invited to.", "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" } \ No newline at end of file diff --git a/common/locales/es_419/npc.json b/common/locales/es_419/npc.json index e4458e7c8c..0f89073b15 100644 --- a/common/locales/es_419/npc.json +++ b/common/locales/es_419/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", "alexander": "Alexander el Comerciante", "welcomeMarket": "¡Bienvenidos al Mercado! ¡Compra huevos difíciles de encontrar y pociones! ¡Vende tus extras! ¡Encarga servicios útiles! Ven a ver lo que tenemos para ofrecer.", - "sellForGold": "Vender <%= item %> por <%= gold %> Oro", - "sellEggForGold": "Vender huevo de <%= itemType %> por <%= gold %> monedas de oro", - "sellPotionForGold": "Vender pócima <%= itemType %> por <%= gold %> monedas de oro", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Comprar Gemas", "justin": "Justin", "ian": "Ian", diff --git a/common/locales/es_419/questscontent.json b/common/locales/es_419/questscontent.json index 2a3bf7c57a..9b26d0e827 100644 --- a/common/locales/es_419/questscontent.json +++ b/common/locales/es_419/questscontent.json @@ -58,45 +58,45 @@ "questSpiderBoss": "Araña", "questSpiderDropSpiderEgg": "Araña (Huevo)", "questSpiderUnlockText": "Desbloquea huevos de araña comprables en el Mercado", - "questVice1Text": "Vice, Part 1: Free Yourself of the Dragon's Influence", + "questVice1Text": "Vicio, Parte 1: Libérate de la Influencia del Dragón", "questVice1Notes": "

Dicen que se encuentra un mal terrible en las cavernas del monte Habitica. Un monstruo cuya presencia retuerce la voluntad de los gran héroes del país, conduciéndolos a los malos hábitos y a la pereza. La bestia es un gran dragón de inmenso poder, compuesto de las mismas sombras. Vicio, el traicionero Guivre Sombrío. ¡Valientes héroes, levántense y venzan a esta bestia infame de una vez por todas, pero sólo si creen que pueden mantenerse firmes contra su inmenso poder.

Vice Parte 1:

¿Cómo puedes pretender enfrentarte a la bestia si ya tiene control sobre ti? ¡No caigas víctima de la pereza y el vicio! ¡Trabaja duro para vencer la oscura influencia del dragón, y disipar su control sobre ti!

", "questVice1Boss": "Sombra de Vicio", "questVice1DropVice2Quest": "Vicio parte 2 (Pergamino)", - "questVice2Text": "Vice, Part 2: Find the Lair of the Wyrm", + "questVice2Text": "Vicio, Parte 2: Encuentra la Guarida del Guivre", "questVice2Notes": "Al disiparse la influencia que Vicio tenía sobre ti, sientes un arrebato de fuerza que no sabías que tenías volver a ti. Sintiéndose seguros de sí mismos y de su capacidad de soportar la influencia del guivre, tú y tu equipo marchan hacia Monte Habitica. Se aproximan a la entrada de las cavernas de la montaña y hacen una pausa. Oleadas de sombras, casi como niebla, flotan en la entrada. Es casi imposible ver lo que tienen enfrente. La luz de sus linternas parecen terminar abruptamente donde las sombras comienzan. Se dice que sólo luz mágica puede atravesar la niebla infernal del dragón. Si fueran capaces de encontrar suficientes cristales de luz, podrían abrirse camino hacia el dragón.", "questVice2CollectLightCrystal": "Cristales de luz", "questVice2DropVice3Quest": "Vicio parte 3 (Pergamino)", - "questVice3Text": "Vice, Part 3: Vice Awakens", + "questVice3Text": "Vicio, Parte 3: Vicio Despierta", "questVice3Notes": "Tras mucho esfuerzo, tu equipo ha descubierto la guarida de Vicio. El enorme monstruo observa a tu equipo repugnado. Mientras sombras se retuercen a tu alrededor, una voz susurra en tu interior, \"¿Más necios de Habitica que intentan detenerme? Qué lindos. Hubiera sido más inteligente no haber venido.\" El escamado titán alza su cabeza y se prepara para atacar. ¡Es tu oportunidad! ¡Da lo mejor de ti y derrota a Vicio de una vez por todas!", "questVice3Completion": "Las sombras se disipan de la caverna mientras se asienta un férreo silencio. ¡Vaya, lo has logrado! ¡Haz vencido a Vicio! Tú y tu equipo al fin podrán respirar tranquilos. Disfruten de la victoria, valientes Habiteros, pero recuerdan las lecciones que han aprendido al combatir a Vicio y sigan adelante. Todavía hay tareas que completar y peores males que conquistar.", "questVice3Boss": "Vicio, el Guivre Sombrío", "questVice3DropWeaponSpecial2": "La vara del Dragón de Stephen Weber", "questVice3DropDragonEgg": "Dragón (Huevo)", "questVice3DropShadeHatchingPotion": "Poción de eclosión de sombra", - "questMoonstone1Text": "The Moonstone Chain, Part 1: The Moonstone Chain", + "questMoonstone1Text": "La Cadena de Piedra Lunar, Parte 1: La Cadena de Piedra Lunar", "questMoonstone1Notes": "

Una terrible aflicción ha golpeado a los Habiticanos. Malos Hábitos que se creían muertos hace tiempo, se han levantado de nuevo en venganza. Los platos se encuentran sin lavar, los libros de texto permanecen sin leer, ¡y la procrastinación corre sin nadie que la detenga!


Sigues el rastro de algunos de tus propios Malos Hábitos a las Ciénagas del Estancamiento y descubres a la culpable: la fantasmal Necromante, Recidiva. Te lanzas a atacarla, pero tus armas atraviesan su cuerpo espectral inútilmente.


\"No te molestes,\" susurra con un tono áspero y seco. \"Sin una cadena de piedras de luna, nada puede hacerme daño – ¡y el maestro joyero @aurakami dispersó todas las piedras de luna a través de Habitica hace mucho tiempo!\" Jadeante, te retiras... pero sabes qué es lo que debes hacer.

", "questMoonstone1CollectMoonstone": "Piedras de luna", "questMoonstone1DropMoonstone2Quest": "La Cadena de la piedra de luna parte 2: Recidiva la Necromante (Pergamino)", - "questMoonstone2Text": "The Moonstone Chain, Part 2: Recidivate The Necromancer", + "questMoonstone2Text": "La Cadena de Piedra Lunar, Parte 2: Reincidencia La Necromante", "questMoonstone2Notes": "

El valiente armero @Inventrix te ayuda a dar forma a las piedras de luna encantadas hasta hacerlas una cadena. Estás listo para confrontar finalmente a Recidiva, pero en cuanto entras a las Ciénagas de Estancamiento, te recorre un terrible escalofrío.


Un soplo podrido susurra en tu oído. \"¿Has regresado? Qué deleite...\" Giras y atacas, y bajo la luz de la cadena de piedras de luna, tu arma golpea la carne sólida. \"Tal vez me hayas atado al mundo una vez más,\" gruñe Recidiva, \"¡pero ahora es tiempo de que lo dejes!\"

", "questMoonstone2Boss": "La Necromante", "questMoonstone2DropMoonstone3Quest": "La Cadena de la piedra de luna parte 3: Recidiva transformada (Pergamino)", - "questMoonstone3Text": "The Moonstone Chain, Part 3: Recidivate Transformed", + "questMoonstone3Text": "La Cadena de Piedra Lunar, Parte 3: Reincidencia Transformada", "questMoonstone3Notes": "

Recidiva se desploma al suelo, y lq golpeas con tu cadena de piedras de luna. Para tu terror, Recidiva se apodera de las gemas, sus ojos ardiendo triunfantes.


\"¡Tonta criatura de carne!\" grita. \"Estas piedras de luna me restaurarán a mi forma física, es cierto, pero no como tú imaginaste. A medida de que la luna crezca en la oscuridad, también crecen mis poderes, y de las sombras convoco al espectro de tu más temido enemigo!\"


Una enfermiza neblina verde se levanta de la ciénaga, y el cuerpo Recidiva se retuerce y se contorsiona en una forma que te llena de horror – el cuerpo no-muerto de Vicio, horriblemente renacido.

", "questMoonstone3Completion": "

Respiras difícilmente y el sudor hace que ardan tus ojos mentras el Guivre se colapsa. Los restos de Recidiva se desvanecen formando una gruesa bruma gris que desaparece rápidamente bajo la ráfaga de una refrescante brisa, y escuchas en la distancia los gritos de multitudes de Habiticanos derrotando a sus Malos Hábitos de una vez por todas.


@Baconsaur el maestro de las bestias se abalanza montado en un grifo. \"Vi el final de tu batalla desde el cielo, y fue increíblemente conmovedora. Por favor, toma esta túnica encantada – tu valentía habla de un noble corazón, y creo que estabas destinado a tenerla.\"

", "questMoonstone3Boss": "Necrovicio", "questMoonstone3DropRottenMeat": "Carne podrida (Comida)", "questMoonstone3DropZombiePotion": "Poción de ecolsion Zombie", - "questGoldenknight1Text": "El Caballero dorado, Parte 1: Un regaño severo", + "questGoldenknight1Text": "El Caballero Dorado, Parte 1: Un Regaño Severo", "questGoldenknight1Notes": "

La Dama de oro ha estado molestando a los pobres Habiticanos. ¿No cumpliste todas tus Diarias? ¿Marcaste un hábito negativo? Ella lo usará como razón para acosarte y decir que tienes que seguir su ejemplo. Ella es el ejemplo brillante de un Habiticano perfecto y tú no eres más que un fracaso. Bueno, ¡eso no es para nada agradable! Todos comiten errores y no debieran ser tratados con tanta negatividad. ¡Tal vez es hora para reunir unos cuantos testimonios de los Habitacanos ofendidos y darle una a la Dama de oro una severa reprimenda!

", "questGoldenknight1CollectTestimony": "Testimonios", "questGoldenknight1DropGoldenknight2Quest": "La Cadena de la Dama de oro parte 2: Oro deslustrado (Pergamino)", - "questGoldenknight2Text": "El Caballero dorado, Parte 2: El Caballero de oro", + "questGoldenknight2Text": "El Caballero Dorado, Parte 2: El Caballero de Oro", "questGoldenknight2Notes": "

Armado con cientos de testimonios de Habiticanos, enfrentas finalmente a la Dama de oro. Empiezas a recitar las quejas de los Habiticanos, una por una. \"Y @Pfeffernusse dice que tus constantes fanfarronadas-\" Ella alza su mano para silenciarte y se burla, \"Por favor, estas personas simplemente están celosas de mi éxito. En lugar de quejarse, ¡deberían trabajar tan duro como yo! ¡Quizás pueda mostrarte el poder que puedes obtener mediante una diligencia como la mía!\" Entonces levanta su lucero del alba, ¡y se prepara para atacarte!

", "questGoldenknight2Boss": "Dama de oro", "questGoldenknight2DropGoldenknight3Quest": "La Cadena de la Dama de oro parte 3: El Caballero de hierro (Pergamino)", - "questGoldenknight3Text": "El Caballero dorado, Parte 1: El Caballero de hierro", - "questGoldenknight3Notes": "

@Jon Arinbjorn cries out to you to get your attention. In the aftermath of your battle, a new figure has appeared. A knight coated in stained-black iron slowly approaches you with sword in hand. The Golden Knight shouts to the figure, \"Father, no!\" but the knight shows no signs of stopping. She turns to you and says, \"I am sorry. I have been a fool, with a head too big to see how cruel I have been. But my father is crueler than I could ever be. If he isn't stopped he'll destroy us all. Here, use my morningstar and halt the Iron Knight!\"

", + "questGoldenknight3Text": "El Caballero Dorado, Parte 3: El Caballero de Hierro", + "questGoldenknight3Notes": "

@Jon Arinbjorn grita para llamar tu atención. En los momentos siguientes a tu batalla, una nueva figura ha aparecido. Un caballero revestido de hierro teñido de negro se aproxima a ti lentamente con su espada en mano. La Dama Dorada vocifera hacia la figura \"¡Padre, no!\" pero el otro caballero no parece querer detenerse. Ella se vuelve hacia ti y dice \"Lo siento. He sido una tonta, con un ego demasiado grande para ver lo cruel que he sido. Pero mi padre es aún más cruel de lo que yo jamás podría ser. Si nadie lo detiene nos destruirá a todos. ¡Toma, usa mi Lucero del Alba y termina con el Caballero de Hierro!\"

", "questGoldenknight3Completion": "

Con un satisfactorio sonido metálico, el Caballero de hierro cae de rodillas y se desploma. \"Eres bastante fuerte\", jadea. \"Hoy me han humillado\". La Dama de oro se acerca a ti y dice: \"Gracias. Creo que hemos ganado algo de humildad al enfrentarnos contigo. Hablaré con mi padre y le explicaré las quejas sobre nosotros. Quizás deberíamos empezar por disculparnos ante los otros Habiticanos\". Se detiene a pensar por un momento antes de volverse nuevamente hacia ti. \"Ten: como obsequio, quiero que te quedes con mi Lucero del Alba. Es tuyo ahora\".

", "questGoldenknight3Boss": "El Caballero de hierro", "questGoldenknight3DropHoney": "Miel (Comida)", @@ -128,15 +128,15 @@ "questSeahorseBoss": "Semental de mar", "questSeahorseDropSeahorseEgg": "Caballito de mar (Huevo)", "questSeahorseUnlockText": "Desbloquea huevos de caballito de mar comprables en el Mercado", - "questAtom1Text": "Attack of the Mundane, Part 1: Dish Disaster!", + "questAtom1Text": "Ataque de lo Mundano, Parte 1: ¡Desastre de Platos!", "questAtom1Notes": "Llegas a la orilla del Lago Lavado para relajación bien merecida... ¡Pero el lago está contaminado con platos sucios! ¿Cómo sucedió esto? Bueno, simplemente no puedes permitir que el lago siga en este estado. Sólo hay una cosa que puedes hacer: ¡limpiar los platos y salvar tu lugar de vacaciones! Mejor encontrar un poco de jabón para limpiar este desastre. Mucho jabón...", "questAtom1CollectSoapBars": "Barras de jabón", - "questAtom1Drop": "The SnackLess Monster (Quest Scroll)", - "questAtom2Text": "Attack of the Mundane, Part 2: The SnackLess Monster", + "questAtom1Drop": "El Monstruo SnackLess (Pergamino de Misión)", + "questAtom2Text": "Ataque de lo Mundano, Parte 2: El Monstruo SnackLess", "questAtom2Notes": "Puf, este lugar se ve mucho más bonito con todos estos platos limpiados. Quizás, al fin, podrás pasar un buen rato. Oh - parece que hay una caja de pizza flotando en el lago. Bueno, realmente ¿que es una cosa más para limpiar? Con una súbita oleada la caja se levanta del agua y se revela como la cabeza de un monstruo. ¡No puede ser! ¡¿El legendario Monstruo SnackLess?! Se dice que ha existido escondido en el lago desde la prehistoria: una criatura engendrado de los restos de comida y basura de los antiguos Habiticanos. ¡Qué asco!", "questAtom2Boss": "El Monstruo SnackLess", - "questAtom2Drop": "The Laundromancer (Quest Scroll)", - "questAtom3Text": "Ataque del Mundano, Parte 3: El Lavandomante", + "questAtom2Drop": "El Lavadomante (Pergamino de Misión)", + "questAtom3Text": "Ataque de lo Mundano, Parte 3: El Lavadomante", "questAtom3Notes": "Con un grito ensordecedor, y cinco deliciosos tipos de queso emergiendo de su boca, el Monstruo SnackLess se cae a pedazos. \"¡CÓMO TE ATREVES!\" resuena una voz desde debajo de la superficie del agua. Una figura azul, con túnica, emerge del agua, empuñando un cepillo de baño mágico. Ropa sucia comienza a burbujear a la superficie del lago. \"Soy el Lavandomante!\" anuncia furiosamente. \"Que desfachatez - lavar mis esplendidamente sucio platos, destruir mi mascota, y entrar a mi dominio con ropa tan limpia. ¡Prepárate a sentir la ira empapada de mi magia anti-lavado!\"", "questAtom3Completion": "¡El malvado Lavandomante ha sido vencido! Ropa limpia cae en pilas a tu alrededor. Las cosas se ven mucho mejor por aquí. Mientras comienzas a vadear por la armadura recién planchada, un centelleo de metal llama tu atención, y tu mirada cae sobre un casco resplandeciente. El dueño original de este objeto radiante puede ser desconocido, pero mientras te lo pones, sientes la presencia alentadora de un espíritu generoso. Lástima que no le cocieron sus iniciales.", "questAtom3Boss": "El Lavandomante", @@ -165,7 +165,7 @@ "questStressbeastBossRageGuide": "`¡La Abominable Bestia del Estrés usó Ataque de Estrés!`\n\nEl aumento del estrés cura a La Abominable Bestia del Estrés!\n\n¡Cuidado! Justin el Guía está tratando de distraer a La Abominable Bestia del Estrés corriendo alrededor de sus tobillos, gritando consejos de productividad! La Abominable Bestia del Estrés está pisoteando locamente, pero parece que realmente estamos desgastando a esta bestia. Dudo que tenga suficiente energía para otro ataque. No te rindas... ¡estamos muy cerca de acabar con ella!", "questStressbeastDesperation": "`¡LaAbominable Bestia del Estrés llega a 500K de salud! ¡La Abominable Bestia del Estrés usa Defensa Desesperada!`\n\n¡Ya casi estamos, Habiticanos! ¡Con diligencia y Diarias, hemos dejado a La Abominable Bestia del Estrés en solo 500K! La criatura ruge y golpea desesperadamente, mientras su furia aumenta más rápido que nunca. Bailey y Matt gritan de terror a medida que comienza a moverlos de un lado al otro a un ritmo terrador, levantando una enceguecedora tormenta de nieve que hace más difícil golpearla.\n\n¡Tendremos que redoblar nuestros esfuerzos, pero tomen valor - esto es una señal de que La Abominable Bestia del Estrés sabe que está a punto de ser derrotada! ¡No te rindas ahora!", "questStressbeastCompletion": "¡LaAbominable Bestia del Estrés ha sido DERROTADA!

¡Lo hicimos! Con un rugido final la Abominable Bestia del Estrés se disipa en una nube de nieve. Las copos de nieve brillan a través del aire mientras los Habiticanos aplauden y abrazan a sus mascotas y monturas. ¡Nuestros animales y nuestros NPCs están seguros una vez más!

¡Stoïkalm se ha salvado!

SabreCat habla suavemente a un pequeño tigre dientes de sable. \"Encuentra los ciudadanos de las Estepas de Stoïkalm y tréelos a nosotros,\" dice. Varias horas más tarde, el tigre diente de sable regresa, con una manada de jinetes de mamut siguiéndolo lentamente detrás. Reconoces al jinete a la cabeza como Lady Glaciate, líder de Stoïkalm.

\"Valientes Habiticanos,\" dice, \"Mis ciudadanos y yo les debemos el más profundo agradecimiento, y las más sinceras disculpas. En un esfuerzo por proteger nuestras Estepas de la agitación, empezamos a desterrar en secreto todo nuestro estrés hacia las montañas heladas. ¡No teníamos idea de que con las generaciones se convertiria en la Abominable Bestia del Estrés que vieron! Cuando se desató, nos dejó atrapados en su lugar a todos en las montañas y se fue en un alboroto contra nuestros queridos animales.\" Su triste mirada sigue el caer de la nieve. \"Pusimos a todos en riesgo con nuestra necedad. Tengan por seguro que en el futuro, vamos a ir a ustedes con nuestros problemas antes de que nuestros problemas vayan a ustedes\".

Ella se vuelve hacia donde @Baconsaur abraza a unos mamuts bebé. \"Hemos traído a tus animales una ofrenda de alimentos para disculparnos por asustarlos, y como un símbolo de confianza, vamos a dejar algunas de nuestras mascotas y monturas contigo. Sabemos que todos ustedes van cuidar bien de ellos\".", - "questStressbeastCompletionChat": "`La Bestia Abominable del Estrés ha sido VENCIDA`\n\nLo hemos hecho! Con un rugido final La Bestia Abominable del Estrés se disipa en una nube de nieve. Las copos de nieve brillan a través del aire mientras Habiticanos aplaudiendo abrazan a sus mascotas y monturas. ¡Nuestros animales y nuestros NPCs están seguros una vez más!\n\n`¡Stoïkalm se ha salvado!`\n\nSabreCat le habla suavemente a un pequeño dientes de sable. \"Encuentra los ciudadanos de las Estepas de Stoïkalm y tráelos a nosotros,\" dice. Varias horas más tarde, el dientes de sable regresa, con una manada de jinetes de mamut siguiendo lentamente detrás. Reconoces al jinete a la cabeza como Lady glaciate, líder de Stoïkalm.\n\n\"Valientes Habiticanos,\" ella dice, \"Mis ciudadanos y yo les debemos el más profundo agradecimiento, y las más sinceras disculpas. En un esfuerzo por proteger nuestras Estepas de la agitación, empezamos a desterrar en secreto todo nuestro estrés en las montañas heladas. ¡No teníamos idea de que con las generaciones se convertiría en La Bestia Abominable del Estrés que viste! Cuando se desató, nos atrapó a todos nosotros en las montañas en su lugar y se fue en un alboroto contra nuestros queridos animales.\" Su triste mirada sigue el caer de la nieve. \"Pusimos a todos en riesgo con nuestra necedad. Ten por seguro que en el futuro, vamos a ir a ustedes con nuestros problemas antes de que nuestros problemas vayan a ustedes.\"\n\nSe vuelve hacia donde @Baconsaur está abrazando a unos mamuts bebé. \"Hemos traído a tus animales una ofrenda de alimentos para disculparnos por asustarlos, y como símbolo de confianza, vamos a dejar algunas de nuestras mascotas y monturas contigo. Sabemos que todos ustedes van cuidar bien de ellos.\"", + "questStressbeastCompletionChat": "`¡La Abominable Bestia del Estrés ha sido VENCIDA!`\n\n¡Lo hemos hecho! Con un rugido final La Abominable Bestia del Estrés se disipa en una nube de nieve. Las copos de nieve brillan a través del aire mientras Habiticanos entusiastas abrazan a sus mascotas y monturas. ¡Nuestros animales y nuestros PNJs están seguros una vez más!\n\n`¡Stoïkalm se ha salvado!`\n\nSabreCat le habla suavemente a un pequeño dientes de sable. \"Encuentra a los ciudadanos de las Estepas de Stoïkalm y tráelos a nosotros,\" dice. Varias horas más tarde, el dientes de sable regresa, con una manada de jinetes de mamut avanzando lentamente detrás. Reconoces al jinete a la cabeza como Lady Glaciate, líder de Stoïkalm.\n\n\"Valientes Habiticanos,\" ella dice, \"Mis ciudadanos y yo les debemos el más profundo agradecimiento, y las más sinceras disculpas. En un esfuerzo por proteger nuestras Estepas de la agitación, empezamos a desterrar en secreto a todo nuestro estrés a las montañas heladas. ¡No teníamos idea de que con las generaciones se convertiría en la Bestia del Estrés que vieron! Cuando se liberó, nos atrapó a todos nosotros en las montañas en su lugar y salió en un frenesí a arremeter contra nuestros queridos animales.\" Su triste mirada sigue el caer de la nieve. \"Pusimos a todos en riesgo con nuestra necedad. Ten por seguro que en el futuro, nos acercaremos a ustedes con nuestros problemas antes de que nuestros problemas lleguen a ustedes.\"\n\nSe vuelve hacia donde @Baconsaur está abrazando a unos mamuts bebé. \"Hemos traído a tus animales una ofrenda de alimentos para disculparnos por asustarlos, y como símbolo de confianza, vamos a dejar algunas de nuestras mascotas y monturas con ustedes. Sabemos que todos ustedes van cuidar bien de ellos.\"", "questTRexText": "Rey de los dinosaurios", "questTRexNotes": "Ahora que las antiguas criaturas de las estepas de Stoïkalm están vagando por toda Habitica, @Urse ha decidido adoptar un Tiranosaurio completamente desarrollado. ¿Que podría salir mal?

Todo.", "questTRexCompletion": "El salvaje dinosaurio finalmente frena su acometida y se aquieta para hacer amigos con los gallos gigantes. @Urse exclama viendo esto. \"¡No son tan malas mascotas después de todo! Todo lo que necesitan es un poco de disciplina. Ten, toma algunos huevos de dinosaurio para ti mismo\".", @@ -191,81 +191,81 @@ "questBunnyCompletion": "Con un golpe final el conejo asesino se hunde en el suelo. Una niebla brillante se levanta de su cuerpo mientras se encoge en un diminuto conejito ... ya no es como la bestia cruel a la que te enfrentaste tan solo un momento antes. Su nariz se movió de manera adorable y saltó a otro lado, dejando algunos huevos atrás. @Gully ríe. \"El Monte Procastinación hace que incluso los desafíos más pequeños parezcan insuperables. Reunamos estos huevos y vayamos a casa\".", "questBunnyDropBunnyEgg": "Conejito (huevo)", "questBunnyUnlockText": "Desbloquea huevos de conejito comprables en el Mercado", - "questSlimeText": "The Jelly Regent", - "questSlimeNotes": "As you work on your tasks, you notice you are moving slower and slower. \"It's like walking through molasses,\" @Leephon grumbles. \"No, like walking through jelly!\" @starsystemic says. \"That slimy Jelly Regent has slathered his stuff all over Habitica. It's gumming up the works. Everybody is slowing down.\" You look around. The streets are slowly filling with clear, colorful ooze, and Habiticans are struggling to get anything done. As others flee the area, you grab a mop and prepare for battle!", - "questSlimeBoss": "Jelly Regent", - "questSlimeCompletion": "With a final jab, you trap the Jelly Regent in an over-sized donut, rushed in by @Overomega, @LordDarkly, and @Shaner, the quick-thinking leaders of the pastry club. As everyone is patting you on the back, you feel someone slip something into your pocket. It’s the reward for your sweet success: three Marshmallow Slime eggs.", - "questSlimeDropSlimeEgg": "Slime de malvavisco (Huevo)", - "questSlimeUnlockText": "Desbloquea huevos de babosa comprables en el Mercado", + "questSlimeText": "La Jalea Regente", + "questSlimeNotes": "Mientras te ocupas de tus tareas, te das cuenta de que te estás moviendo más y más lento. \"Es como caminar a través de melaza,\" se queja @Leephon. \"¡No, como atravesar jalea!\" dice @starsystemic. \"Esa babosa Jalea Regente ha untado su sustancia por toda Habitica. Está arruinando los trabajos. Todo el mundo se está volviendo más lento.\" Tú miras alrededor. Las calles se están llenando de a poco con un cieno claro y colorido, y los Habiticanos están luchando para poder terminar algo. Mientras otros huyen del área, ¡tú agarras un trapeador y te preparas para la batalla!", + "questSlimeBoss": "Jalea Regente", + "questSlimeCompletion": "Con un golpe final, atrapas a la Jalea Regente en una dona demasiado grande que te fue alcanzada por @Overomega, @LordDarkly y @Shaner, los líderes con reflejos rápidos del club de pastelería. Mientras todos te dan palmadas en la espalda, sientes a alguien poner discretamente algo en tu bolsillo. Es la recompensa por tu dulce éxito: tres huevos de Baba de Malvavisco.", + "questSlimeDropSlimeEgg": "Baba de Malvavisco (Huevo)", + "questSlimeUnlockText": "Desbloquea huevos de baba adquiribles en el Mercado", "questSheepText": "El carnero del trueno", - "questSheepNotes": "Mientras deambulas por las campiñas de Taskan con tus amigos, tomando un \"rápido descanso\" de tus obligaciones, encuentras una acogedora tienda de estambre. Estás tan sumergido en tu procastinación que apenas y te das cuenta de las siniestras nubes que cubren el cielo. \"Tengo un ma-a-al presentimiento de este clima\", balbucea @Misceo mientras miras hacia arriba. Las tempestuosas nubes se arremolinan y se parecen mucho a... \"¡No tenemos tiempo para mirar nubes!\" grita @starsystemic. \"¡Está atacando!\" ¡El carnero del trueno se abalanza, lanzando relámpagos y truenos hacia ti!", + "questSheepNotes": "Mientras deambulas por las campiñas de Taskan con tus amigos, tomando un \"rápido descanso\" de tus obligaciones, encuentras una acogedora tienda de estambre. Estás tan sumergido en tu procrastinación que apenas y te das cuenta de las siniestras nubes que cubren el cielo. \"Tengo un ma-a-al presentimiento de este clima\", balbucea @Misceo mientras miras hacia arriba. Las tempestuosas nubes se arremolinan y se parecen mucho a... \"¡No tenemos tiempo para mirar nubes!\" grita @starsystemic. \"¡Está atacando!\" ¡El carnero del trueno se abalanza, lanzando relámpagos y truenos hacia ti!", "questSheepBoss": "Carnero del trueno", "questSheepCompletion": "Impressed by your diligence, the Thunder Ram is drained of its fury. It launches three huge hailstones in your direction, and then fades away with a low rumble. Upon closer inspection, you discover that the hailstones are actually three fluffy eggs. You gather them up, and then stroll home under a blue sky.", "questSheepDropSheepEgg": "Oveja (Huevo)", - "questSheepUnlockText": "Desbloquea huevos de oveja comprables en el Mercado", - "questKrakenText": "El Kraken de lo incompleto", - "questKrakenNotes": "It's a warm, sunny day as you sail across the Inkomplete Bay, but your thoughts are clouded with worries about everything that you still need to do. It seems that as soon as you finish one task, another crops up, and then another...

Suddenly, the boat gives a horrible jolt, and slimy tentacles burst out of the water on all sides! \"We're being attacked by the Kraken of Inkomplete!\" Wolvenhalo cries.

\"Quickly!\" Lemoness calls to you. \"Strike down as many tentacles and tasks as you can, before new ones can rise up to take their place!\"", - "questKrakenBoss": "El Kraken de lo incompleto", - "questKrakenCompletion": "As the Kraken flees, several eggs float to the surface of the water. Lemoness examines them, and her suspicion turns to delight. \"Cuttlefish eggs!\" she says. \"Here, take them as a reward for everything you've completed.\"", - "questKrakenDropCuttlefishEgg": "Cuttlefish (Egg)", - "questKrakenUnlockText": "Unlocks purchasable cuttlefish eggs in the Market", + "questSheepUnlockText": "Desbloquea huevos de oveja adquiribles en el Mercado", + "questKrakenText": "El Kraken de Inkompleta", + "questKrakenNotes": "Es un día cálido y soleado mientras navegas a través de la Bahía Inkompleta, pero tus pensamientos están llenos de preocupaciones sobre todo lo que aún te queda por hacer. Pareciera que apenas terminas una tarea, otra brota de la nada, y luego otra...

De pronto, el bote da una horrible sacudida, ¡y tentáculos babosos emergen del agua por todas partes! \"¡Estamos siendo atacados por el Kraken de Inkompleta!\" grita Wolvenhalo.

\"¡Rápido!\" te llama Lemoness. \"¡Derriba la mayor cantidad de tentáculos que puedas antes de que otros se alzen y tomen su lugar!\"", + "questKrakenBoss": "El Kraken de Inkompleta", + "questKrakenCompletion": "Mientras el Kraken huye, varios huevos flotan hacia la superficie del agua. Lemoness los examina, y su recelo se transforma en placer. \"¡Huevos de sepia!\" dice. \"Aquí tienes, tómalos como recompensa por todo lo que has completado.\"", + "questKrakenDropCuttlefishEgg": "Sepia (Huevo)", + "questKrakenUnlockText": "Desbloquea huevos de sepia adquiribles en el Mercado", "questWhaleText": "El lamento de la ballena", "questWhaleNotes": "You arrive at the Diligent Docks, hoping to take a submarine to watch the Dilatory Derby. Suddenly, a deafening bellow forces you to stop and cover your ears. \"Thar she blows!\" cries Captain @krazjega, pointing to a huge, wailing whale. \"It's not safe to send out the submarines while she's thrashing around!\"

\"Quick,\" calls @UncommonCriminal. \"Help me calm the poor creature so we can figure out why she's making all this noise!\"", "questWhaleBoss": "Ballena lamentosa ", "questWhaleCompletion": "After much hard work, the whale finally ceases her thunderous cry. \"Looks like she was drowning in waves of negative habits,\" @zoebeagle explains. \"Thanks to your consistent effort, we were able to turn the tides!\" As you step into the submarine, several whale eggs bob towards you, and you scoop them up.", "questWhaleDropWhaleEgg": "Ballena (Huevo)", - "questWhaleUnlockText": "Desbloquea huevos de ballena comprables en el Mercado", - "questDilatoryDistress1Text": "Dilatory Distress, Part 1: Message in a Bottle", + "questWhaleUnlockText": "Desbloquea huevos de ballena adquiribles en el Mercado", + "questDilatoryDistress1Text": "Peligro en Dilatoria, Parte 1: Mensaje en una Botella", "questDilatoryDistress1Notes": "A message in a bottle arrived from the newly rebuilt city of Dilatory! It reads: \"Dear Habiticans, we need your help once again. Our princess has disappeared and the city is under siege by some unknown watery demons! The mantis shrimps are holding the attackers at bay. Please aid us!\" To make the long journey to the sunken city, one must be able to breathe water. Fortunately, the alchemists @Benga and @hazel can make it all possible! You only have to find the proper ingredients.", "questDilatoryDistress1Completion": "You don the the finned armor and swim to Dilatory as quickly as you can. The merfolk and their mantis shrimp allies have managed to keep the monsters outside the city for the moment, but they are losing. No sooner are you within the castle walls than the horrifying siege descends!", "questDilatoryDistress1CollectFireCoral": "Coral de fuego", "questDilatoryDistress1CollectBlueFins": "Aletas Azules", "questDilatoryDistress1DropArmor": "Armadura Oceánica con Aletas (Armadura)", - "questDilatoryDistress2Text": "Dilatory Distress, Part 2: Creatures of the Crevasse", + "questDilatoryDistress2Text": "Peligro en Dilatoria, Parte 2: Criaturas de la Grieta", "questDilatoryDistress2Notes": "The siege can be seen from miles away: thousands of disembodied skulls rushing through a portal in the crevasse walls and making their way towards Dilatory.

When you meet King Manta in his war room, his eyes seem sunken, and his face is worried. \"My daughter Adva disappeared into the Dark Crevasse just before this siege began. Please find her and bring her back home safely! I will lend you my Fire Coral Circlet to aid you. If you succeed, it is yours.\"", "questDilatoryDistress2Completion": "You vanquish the nightmarish horde of skulls, but you feel no closer to finding Adva. You speak to @Kiwibot, the royal tracker, to see if she has any ideas. \"The mantis shrimps that defend the city must have seen Adva escape,\" @Kiwibot says. \"Try following them into the Dark Crevasse.\"", "questDilatoryDistress2Boss": "Water Skull Swarm", "questDilatoryDistress2RageTitle": "Swarm Respawn", "questDilatoryDistress2RageDescription": "Swarm Respawn: This bar fills when you don't complete your Dailies. When it is full, the Water Skull Swarm will heal 30% of its remaining health!", "questDilatoryDistress2RageEffect": "`Water Skull Swarm uses SWARM RESPAWN!`\n\nEmboldened by their victories, more skulls pour forth from the crevasse, bolstering the swarm!", - "questDilatoryDistress2DropSkeletonPotion": "Poción Esqueleto", - "questDilatoryDistress2DropCottonCandyBluePotion": "Poción Algodón de Azúcar Azul", + "questDilatoryDistress2DropSkeletonPotion": "Poción de Eclosión Esqueleto", + "questDilatoryDistress2DropCottonCandyBluePotion": "Poción de Eclosión de Algodón de Azúcar Azul", "questDilatoryDistress2DropHeadgear": "Fire Coral Circlet (Headgear)", - "questDilatoryDistress3Text": "Dilatory Distress, Part 3: Not a Mere Maid", + "questDilatoryDistress3Text": "Peligro en Dilatoria, Parte 3: No Sólo una Simple Doncella", "questDilatoryDistress3Notes": "You follow the mantis shrimps deep into the Crevasse, and discover an underwater fortress. Princess Adva, escorted by more watery skulls, awaits you inside the main hall. \"My father has sent you, has he not? Tell him I refuse to return. I am content to stay here and practice my sorcery. Leave now, or you shall feel the wrath of the ocean's new queen!\" Adva seems very adamant, but as she speaks you notice a strange, ruby pendant on her neck glowing ominously... Perhaps her delusions would cease should you break it?", "questDilatoryDistress3Completion": "Finally, you manage to pull the bewitched pendant from Adva's neck and throw it away. Adva clutches her head. \"Where am I? What happened here?\" After hearing your story, she frowns. \"This necklace was given to me by a strange ambassador - a lady called 'Tzina'. I don't remember anything after that!\"

Back at Dilatory, Manta is overjoyed by your success. \"Allow me to reward you with this trident and shield! I ordered them from @aiseant and @starsystemic as a gift for Adva, but... I'd rather not put weapons in her hands any time soon.\"", - "questDilatoryDistress3Boss": "Adva, the Usurping Mermaid", + "questDilatoryDistress3Boss": "Adva, la Sirena Usurpadora", "questDilatoryDistress3DropFish": "Pescado (Comida)", - "questDilatoryDistress3DropWeapon": "Trident of Crashing Tides (Weapon)", + "questDilatoryDistress3DropWeapon": "Tridente de Mareas Estruendosas (Arma)", "questDilatoryDistress3DropShield": "Escudo Luna perlada (Objeto Escudo-Mano)", - "questCheetahText": "Como un Chita", + "questCheetahText": "Como un Guepardo", "questCheetahNotes": "As you hike across the Sloensteadi Savannah with your friends @PainterProphet, @tivaquinn, @Unruly Hyena, and @Crawford, you're startled to see a Cheetah screeching past with a new Habitican clamped in its jaws. Under the Cheetah's scorching paws, tasks burn away as though complete -- before anyone has the chance to actually finish them! The Habitican sees you and yells, \"Please help me! This Cheetah is making me level too quickly, but I'm not getting anything done. I want to slow down and enjoy the game. Make it stop!\" You fondly remember your own fledgling days, and know that you have to help the newbie by stopping the Cheetah!", "questCheetahCompletion": "The new Habitican is breathing heavily after the wild ride, but thanks you and your friends for your help. \"I'm glad that Cheetah won't be able to grab anyone else. It did leave some Cheetah eggs for us, so maybe we can raise them into more trustworthy pets!\"", - "questCheetahBoss": "Chita", - "questCheetahDropCheetahEgg": "Chita (Huevo)", - "questCheetahUnlockText": "Desbloquea huevos de Chita comprables en el Mercado", + "questCheetahBoss": "Guepardo", + "questCheetahDropCheetahEgg": "Guepardo (Huevo)", + "questCheetahUnlockText": "Desbloquea huevos de Guepardo adquiribles en el Mercado", "questHorseText": "Ride the Night-Mare", "questHorseNotes": "While relaxing in the Tavern with @beffymaroo and @JessicaChase, the talk turns to good-natured boasting about your adventuring accomplishments. Proud of your deeds, and perhaps getting a bit carried away, you brag that you can tame any task around. A nearby stranger turns toward you and smiles. One eye twinkles as he invites you to prove your claim by riding his horse.\nAs you all head for the stables, @UncommonCriminal whispers, \"You may have bitten off more than you can chew. That's no horse - that's a Night-Mare!\" Looking at its stamping hooves, you begin to regret your words...", "questHorseCompletion": "It takes all your skill, but finally the horse stamps a couple of hooves and nuzzles you in the shoulder before allowing you to mount. You ride briefly but proudly around the Tavern grounds while your friends cheer. The stranger breaks into a broad grin.\n\"I can see that was no idle boast! Your determination is truly impressive. Take these eggs to raise horses of your own, and perhaps we'll meet again one day.\" You take the eggs, the stranger tips his hat... and vanishes.", "questHorseBoss": "Night-Mare", "questHorseDropHorseEgg": "Caballo (Huevo)", - "questHorseUnlockText": "Desbloquea huevos de Caballo comprables en el Mercado", - "questBurnoutText": "Burnout and the Exhaust Spirits", + "questHorseUnlockText": "Desbloquea huevos de Caballo adquiribles en el Mercado", + "questBurnoutText": "Burnout y los Espíritus Consumidos", "questBurnoutNotes": "It is well past midnight, still and stiflingly hot, when Redphoenix and scout captain Kiwibot abruptly burst through the city gates. \"We need to evacuate all the wooden buildings!\" Redphoenix shouts. \"Hurry!\"

Kiwibot grips the wall as she catches her breath. \"It's draining people and turning them into Exhaust Spirits! That's why everything was delayed. That's where the missing people have gone. It's been stealing their energy!\"

\"'It'?'\" asks Lemoness.

And then the heat takes form.

It rises from the earth in a billowing, twisting mass, and the air chokes with the scent of smoke and sulphur. Flames lick across the molten ground and contort into limbs, writhing to horrific heights. Smoldering eyes snap open, and the creature lets out a deep and crackling cackle.

Kiwibot whispers a single word.

\"Burnout.\"", "questBurnoutCompletion": "Burnout is DEFEATED!

With a great, soft sigh, Burnout slowly releases the ardent energy that was fueling its fire. As the monster curls quietly into ashes, its stolen energy shimmers through the air, rejuvenating the Exhaust Spirits and returning them to their true forms.

Ian, Daniel, and the Seasonal Sorceress cheer as Habiticans rush to greet them, and all the missing citizens of the Flourishing Fields embrace their friends and families. The final Exhaust Spirit transforms into the Joyful Reaper herself!

\"Look!\" whispers @Baconsaur, as the ashes begin to glitter. Slowly, they resolve into hundreds of shining phoenixes!

One of the glowing birds alights on the Joyful Reaper's skeletal arm, and she grins at it. \"It has been a long time since I've had the exquisite privilege to behold a phoenix in the Flourishing Fields,\" she says. \"Although given recent occurrences, I must say, this is highly thematically appropriate!\"

Her tone sobers, although (naturally) her grin remains. \"We're known for being hard-working here, but we are also known for our feasts and festivities. Rather ironic, I suppose, that as we strove to plan a spectacular party, we refused to permit ourselves any time for fun. We certainly won't make the same mistake twice!\"

She claps her hands. \"Now - let's celebrate!\"", "questBurnoutCompletionChat": "`Burnout is DEFEATED!`\n\nWith a great, soft sigh, Burnout slowly releases the ardent energy that was fueling its fire. As the monster curls quietly into ashes, its stolen energy shimmers through the air, rejuvenating the Exhaust Spirits and returning them to their true forms.\n\nIan, Daniel, and the Seasonal Sorceress cheer as Habiticans rush to greet them, and all the missing citizens of the Flourishing Fields embrace their friends and families. The final Exhaust Spirit transforms into the Joyful Reaper herself!\n\n\"Look!\" whispers @Baconsaur, as the ashes begin to glitter. Slowly, they resolve into hundreds of shining phoenixes!\n\nOne of the glowing birds alights on the Joyful Reaper's skeletal arm, and she grins at it. \"It has been a long time since I've had the exquisite privilege to behold a phoenix in the Flourishing Fields,\" she says. \"Although given recent occurrences, I must say, this is highly thematically appropriate!\"\n\nHer tone sobers, although (naturally) her grin remains. \"We're known for being hard-working here, but we are also known for our feasts and festivities. Rather ironic, I suppose, that as we strove to plan a spectacular party, we refused to permit ourselves any time for fun. We certainly won't make the same mistake twice!\"\n\nShe claps her hands. \"Now - let's celebrate!\"\n\nAll Habiticans receive:\n\nPhoenix Pet\nPhoenix Mount\nAchievement: Savior of the Flourishing Fields\nBasic Candy\nVanilla Candy\nSand Candy\nCinnamon Candy\nChocolate Candy\nRotten Candy\nSour Pink Candy\nSour Blue Candy\nHoney Candy", "questBurnoutBoss": "Burnout", - "questBurnoutBossRageTitle": "Exhaust Strike", - "questBurnoutBossRageDescription": "When this gauge fills, Burnout will unleash its Exhaust Strike on Habitica!", - "questBurnoutDropPhoenixPet": "Phoenix (Pet)", - "questBurnoutDropPhoenixMount": "Phoenix (Mount)", + "questBurnoutBossRageTitle": "Ataque Consumidor", + "questBurnoutBossRageDescription": "¡Cuando este medidor se llene, Burnout desatará su Ataque Consumidor sobre Habitica!", + "questBurnoutDropPhoenixPet": "Fénix (Mascota)", + "questBurnoutDropPhoenixMount": "Fénix (Montura)", "questBurnoutBossRageQuests": "`Burnout uses EXHAUST STRIKE!`\n\nOh no! Despite our best efforts, we've let some Dailies get away from us, and now Burnout is inflamed with energy! With a crackling snarl, it engulfs Ian the Quest Master in a surge of spectral fire. As fallen quest scrolls smolder, the smoke clears, and you see that Ian has been drained of energy and turned into a drifting Exhaust Spirit!\n\nOnly defeating Burnout can break the spell and restore our beloved Quest Master. Let's keep our Dailies in check and defeat this monster before it attacks again!", "questBurnoutBossRageSeasonalShop": "`Burnout uses EXHAUST STRIKE!`\n\nAhh!!! Our incomplete Dailies have fed the flames of Burnout, and now it has enough energy to strike again! It lets loose a gout of spectral flame that sears the Seasonal Shop. You're horrified to see that the cheery Seasonal Sorceress has been transformed into a drooping Exhaust Spirit.\n\nWe have to rescue our NPCs! Hurry, Habiticans, complete your tasks and defeat Burnout before it strikes for a third time!", "questBurnoutBossRageTavern": "`Burnout uses EXHAUST STRIKE!`\n\nMany Habiticans have been hiding from Burnout in the Tavern, but no longer! With a screeching howl, Burnout rakes the Tavern with its white-hot hands. As the Tavern patrons flee, Daniel is caught in Burnout's grip, and transforms into an Exhaust Spirit right in front of you!\n\nThis hot-headed horror has gone on for too long. Don't give up... we're so close to vanquishing Burnout for once and for all!", - "questFrogText": "Swamp of the Clutter Frog", + "questFrogText": "Pantano de la Rana Desastrosa", "questFrogNotes": "As you and your friends are slogging through the Swamps of Stagnation, @starsystemic points at a large sign. \"Stay on the path -- if you can.\"

\"Surely that isn't hard!\" @RosemonkeyCT says. \"It's broad and clear.\"

But as you continue, you notice that path is gradually overtaken by the muck of the swamp, laced with bits of strange blue debris and clutter, until it's impossible to proceed.

As you look around, wondering how it got this messy, @Jon Arjinborn shouts, \"Look out!\" An angry frog leaps from the sludge, clad in dirty laundry and lit by blue fire. You will have to overcome this poisonous Clutter Frog to progress!", "questFrogCompletion": "The frog cowers back into the muck, defeated. As it slinks away, the blue slime fades, leaving the way ahead clear.

Sitting in the middle of the path are three pristine eggs. \"You can even see the tiny tadpoles and through the clear casing!\" @Breadstrings says. \"Here, you should take them.\"", - "questFrogBoss": "Clutter Frog", - "questFrogDropFrogEgg": "Frog (Egg)", - "questFrogUnlockText": "Unlocks purchasable Frog eggs in the Market" + "questFrogBoss": "Rana Desastrosa", + "questFrogDropFrogEgg": "Rana (Huevo)", + "questFrogUnlockText": "Desbloquea huevos de Rana adquiribles en el Mercado" } \ No newline at end of file diff --git a/common/locales/es_419/rebirth.json b/common/locales/es_419/rebirth.json index d57abaaced..ad359824cc 100644 --- a/common/locales/es_419/rebirth.json +++ b/common/locales/es_419/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "¡También recibirás un Logro por haber empezado una nueva aventura!", "beReborn": "Ser renacido", "rebirthAchievement": "¡Has comenzado una nueva aventura! Este es tu <%= number %> Renacimiento, y el Nivel más alto que has logrado es <%= level %>. Para apilar este Logro, ¡empieza tu aventura siguiente después de haber conseguido un nivel aún más alto!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Comienzo una aventura nueva", "rebirthText": "Comenzó <%= rebirths %> aventuras nuevas", "rebirthOrb": "Uso una Esfera derenacimiento para comenzar de nuevo después de conseguir Nivel", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "Comenzar con un personaje nuevo a Nivel 1, mientras manteniendo logros, lo coleccionable, y tareas con historial.", "rebirthName": "Esfera de renacimiento", "reborn": "Renacido, nivel máximo <%= reLevel %>" diff --git a/common/locales/fr/challenge.json b/common/locales/fr/challenge.json index bf5ad5f867..c6c9d85dd1 100644 --- a/common/locales/fr/challenge.json +++ b/common/locales/fr/challenge.json @@ -60,6 +60,6 @@ "noPermissionEditChallenge": "Vous n'avez pas le droit d'éditer ce défi.", "noPermissionDeleteChallenge": "Vous n'avez pas le droit de supprimer ce défi.", "noPermissionCloseChallenge": "Vous n'avez pas le droit de fermer ce défi.", - "noChallengeOwner": "no owner", - "noChallengeOwnerPopover": "This challenge does not have an owner because the person who created the challenge deleted their account." + "noChallengeOwner": "Sans propriétaire", + "noChallengeOwnerPopover": "Ce défi n'a pas de propriétaire, parce que la personne qui a créé le défi a supprimé son compte." } \ No newline at end of file diff --git a/common/locales/fr/character.json b/common/locales/fr/character.json index 9ea4ca8eb7..b53b4f7388 100644 --- a/common/locales/fr/character.json +++ b/common/locales/fr/character.json @@ -52,7 +52,7 @@ "classEquipBonus": "Bonus de Classe", "battleGear": "Équipement de combat", "battleGearText": "Voici l'équipement que vous portez au combat ; il affecte les chiffres obtenus lorsque vous interagissez avec vos tâches.", - "autoEquipBattleGear": "Auto-equip new gear", + "autoEquipBattleGear": "Équiper automatiquement le nouvel équipement", "costume": "Costume", "costumeText": "Si vous préférez l'apparence d'un équipement différent de celui que vous avez équipé, choisissez \"Utiliser un Costume\" pour le porter en costume tout en conservant les bonus de votre équipement.", "useCostume": "Utiliser un Costume", diff --git a/common/locales/fr/content.json b/common/locales/fr/content.json index eb53605e26..1d3f54fef1 100644 --- a/common/locales/fr/content.json +++ b/common/locales/fr/content.json @@ -95,9 +95,9 @@ "questEggHorseText": "Cheval", "questEggHorseMountText": "Cheval", "questEggHorseAdjective": "un galopant", - "questEggFrogText": "Frog", - "questEggFrogMountText": "Frog", - "questEggFrogAdjective": "a princely", + "questEggFrogText": "Grenouille", + "questEggFrogMountText": "Grenouille", + "questEggFrogAdjective": "un prestigieux", "eggNotes": "Trouvez une potion d’éclosion à verser sur cet œuf et il en sortira <%= eggAdjective(locale) %> <%= eggText(locale) %>.", "hatchingPotionBase": "de Base", "hatchingPotionWhite": "Blanc", diff --git a/common/locales/fr/faq.json b/common/locales/fr/faq.json index 9437504efd..78d5f03b11 100644 --- a/common/locales/fr/faq.json +++ b/common/locales/fr/faq.json @@ -36,9 +36,9 @@ "faqQuestion11": "Comment signaler un bug ou demander une fonctionnalité ?", "iosFaqAnswer11": "Vous pouvez signaler une erreur, demander une fonctionnalité ou envoyer un avis depuis Menu > Signaler une erreur et Menu > Envoyer un avis ! Nous ferons notre possible pour vous aider.", "webFaqAnswer11": "Les rapports d'erreur sont rassemblés sur GitHub. Aller dans [Aide > Signaler un Bug](https://github.com/HabitRPG/habitrpg/issues/2760) et suivez les instructions. Ne vous en faites pas, nous corrigerons ça rapidement !\n

\nLes demandes de fonctionnalités sont rassemblées sur Trello. Allez dans [Aide > Demander une Fonctionnalité](https://trello.com/c/odmhIqyW/440-read-first-table-of-contents) et suivez les instructions. Ta-Da!", - "faqQuestion12": "How do I battle a World Boss?", - "iosFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and skills will damage the Boss as usual.\n\n You can also be in a normal Quest at the same time. Your tasks and skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.", - "webFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and skills will damage the Boss as usual.\n

\n You can also be in a normal Quest at the same time. Your tasks and skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n

\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n

\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.", + "faqQuestion12": "Comment combat-on un Boss Mondial?", + "iosFaqAnswer12": "Les Boss Mondiaux sont des monstres spéciaux qui apparaissent dans la Taverne. Tous les membres actifs combattent automatiquement le boss : leurs tâches et habiletés blesseront le Boss comme à l'habitude.\n\nVous pouvez également participer à une quête normale en même temps. Vos tâches et habiletés seront pris en compte pour les deux boss : le Boss Mondial et le Boss/Quête de collection de votre équipe.\n\nUn Boss Mondial ne blessera jamais, vous et votre compte, de quelque manière que ce soit. Il a plutôt une Barre de colère qui se remplit lorsque les membres manquent les Quotidiennes. Si la Barre se remplit, il attaque l'un des Personnages non-joueurs du site et son image changera.\n\nPour en savoir plus, visitez la page [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) (en anglais) du wiki.", + "webFaqAnswer12": "Les Boss Mondiaux sont des monstres spéciaux qui apparaissent dans la Taverne. Tous les membres actifs combattent automatiquement le boss : leurs tâches et habiletés blesseront le Boss comme à l'habitude.\n

\nVous pouvez également participer à une quête normale en même temps. Vos tâches et habiletés seront pris en compte pour les deux boss : le Boss Mondial et le Boss/Quête de collection de votre équipe.\n

\nUn Boss Mondial ne blessera jamais, vous et votre compte, de quelque manière que ce soit. Il a plutôt une Barre de colère qui se remplit lorsque les membres manquent les Quotidiennes. Si la Barre se remplit, il attaque l'un des Personnages non-joueurs du site et son image changera.\n

\nPour en savoir plus, visitez la page [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) (en anglais) du wiki.", "iosFaqStillNeedHelp": "Si vous avez une question qui n'est pas dans cette liste, venez la poser dans la Taverne depuis Menu > Taverne ! Nous serons heureux de vous aider.", "webFaqStillNeedHelp": "Si vous avez une question qui n'est pas dans cette liste, venez la poser dans la [Guilde des Nouveaux Arrivants](https://habitica.com/#/options/groups/guilds/5481ccf3-5d2d-48a9-a871-70a7380cee5a) ! Nous serons heureux de vous aider." } \ No newline at end of file diff --git a/common/locales/fr/gear.json b/common/locales/fr/gear.json index 7edf657eeb..2ce0b210ca 100644 --- a/common/locales/fr/gear.json +++ b/common/locales/fr/gear.json @@ -592,8 +592,8 @@ "backMystery201504Notes": "Bzzz bzzz bzzz ! Voltigez de tâche en tâche. Ne confère aucun bonus. Équipement d'Abonné d'Avril 2015", "backMystery201507Text": "Planche de surf excellente", "backMystery201507Notes": "Surfez loin du Quai Assidu et domptez les vagues de la Baie d'Inkomplet ! N'apporte aucun bonus. Équipement d'Abonné de Juillet 2015.", - "backMystery201510Text": "Goblin Tail", - "backMystery201510Notes": "Prehensile and powerful! Confers no benefit. October 2015 Subscriber Item.", + "backMystery201510Text": "Queue de Goblin", + "backMystery201510Notes": "Préhensile et puissante! Aucun bénéfice. Objet d'Abonné d'Octobre 2015.", "backSpecialWonderconRedText": "Cape de Puissance", "backSpecialWonderconRedNotes": "Bruisse avec force et élégance. N'apporte aucun bonus. Équipement de Convention en Édition Spéciale.", "backSpecialWonderconBlackText": "Cape de Dissimulation", @@ -664,8 +664,8 @@ "headAccessoryMystery201409Notes": "Cette puissante ramure change de couleur en harmonie avec celle des feuilles. N'apporte aucun bonus. Équipement d'Abonné de Septembre 2014.", "headAccessoryMystery201502Text": "Ailes de la Pensée", "headAccessoryMystery201502Notes": "Laissez votre imagination s'envoler ! N'apporte aucun bonus. Équipement d'Abonné de Février 2015.", - "headAccessoryMystery201510Text": "Goblin Horns", - "headAccessoryMystery201510Notes": "These fearsome horns are slightly slimy. Confers no benefit. October 2015 Subscriber Item.", + "headAccessoryMystery201510Text": "Cornes de Goblin", + "headAccessoryMystery201510Notes": "Terrifiantes et un peu visqueuses. N'apportent aucun bonus. Equipement d'abonné d'Octobre 2015.", "headAccessoryMystery301405Text": "Lunettes Frontales", "headAccessoryMystery301405Notes": "\"Les lunettes c'est pour les yeux,\" disaient-ils. \"Personne ne voudrait de lunettes qu'on ne peut porter que sur la tête\" disaient-ils. Ha ! Vous leur avez bien montré ! N'apporte aucun bonus. Équipement d'Abonné d'Août 3015.", "eyewear": "Lunettes", diff --git a/common/locales/fr/generic.json b/common/locales/fr/generic.json index fdaa31b14d..80c0567577 100644 --- a/common/locales/fr/generic.json +++ b/common/locales/fr/generic.json @@ -28,7 +28,7 @@ "market": "Marché", "subscriberItem": "Objet mystère", "newSubscriberItem": "Nouvel Objet Mystère", - "subscriberItemText": "Each month, subscribers will receive a mystery item. This is usually released about one week before the end of the month. See the wiki's 'Mystery Item' page for more information.", + "subscriberItemText": "Les Abonnés recevront chaque mois un objet mystère. Celui-ci est généralement dévoilé une semaine avant la fin du mois. Consultez la page \"Mystery Item\" du wiki pour avoir plus d'information.", "all": "Tous", "none": "Aucun", "or": "Ou", @@ -79,7 +79,7 @@ "errorUpCase": "ERREUR :", "newPassSent": "Nouveau mot de passe envoyé.", "serverUnreach": "Serveur inaccessible.", - "requestError": "Yikes, an error occurred! Please reload the page, your last action may not have been saved correctly.", + "requestError": "Oups, il y a eu une erreur! Veuillez s.v.p. actualiser la page, votre dernière action peut ne pas avoir été enregistrée correctement.", "seeConsole": "Si l'erreur persiste, veuillez la signaler à Aide > Signaler un Bug. Si vous avez connaissance de la console de votre navigateur, veuillez inclure les messages d'erreur de celle-ci.", "error": "Erreur", "menu": "Menu", diff --git a/common/locales/fr/groups.json b/common/locales/fr/groups.json index 880c1a05fe..9b7bbb12bd 100644 --- a/common/locales/fr/groups.json +++ b/common/locales/fr/groups.json @@ -3,7 +3,7 @@ "innCheckOut": "Quitter l'Auberge", "innCheckIn": "Se reposer à l'Auberge", "innText": "Vous êtes installé à l'Auberge ! Tant que vous y séjournez, vous n'êtes pas affecté par vos Quotidiennes à la fin de la journée, mais elles vont tout de même se remettre à zéro tous les jours. Attention : si vous êtes en pleine Quête contre un Boss, il pourra toujours vous blesser pour les Quotidiennes manquées par les potes de votre Equipe, sauf s'ils séjournent aussi à l'Auberge ! Et vous ne pourrez vous-même blesser le Boss (ou récolter des objets) que lorsque vous quitterez l'Auberge.", - "innTextBroken": "You're resting in the Inn, I guess... While checked-in, your Dailies won't hurt you at the day's end, but they will still refresh every day... If you are participating in a Boss Quest, the Boss will still damage you for your party mates' missed Dailies... unless they are also in the Inn... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn... so tired...", + "innTextBroken": "Vous êtes installé à l'Auberge, je suppose... Tant que vous y séjournez, vous n'êtes pas affecté par vos Quotidiennes à la fin de la journée, mais elles vont tout de même se remettre à zéro tous les jours... Si vous êtes en pleine Quête contre un Boss, il pourra toujours vous blesser pour les Quotidiennes manquées par les potes de votre Équipe... sauf s'ils séjournent aussi à l'Auberge... De plus, vous ne pourrez vous-même blesser le Boss (ou récolter des objets) que lorsque vous quitterez l'Auberge... si fatigué...", "lfgPosts": "Sujets de recherche de Groupe (Recherche d'Équipe)", "tutorial": "Tutoriel", "glossary": "Glossaire", @@ -147,5 +147,5 @@ "partyChatEmpty": "Votre discussion d'équipe est vide ! Écrivez un message dans le champ ci-dessus pour commencer la discussion.", "guildChatEmpty": "La discussion de cette guilde est vide ! Écrivez un message dans le champ ci-dessus pour commencer la discussion.", "possessiveParty": "Équipe de <%= name %>", - "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Communit Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them." + "requestAcceptGuidelines": "Avant de poster un message dans la Taverne, dans votre Équipe ou dans une Guilde, veuillez lire nos <%= linkStart %>Règles de Vie en Communauté<%= linkEnd %> et cliquer sur le bouton ci-dessous pour indiquer que vous les avez compris ." } \ No newline at end of file diff --git a/common/locales/fr/limited.json b/common/locales/fr/limited.json index 68cb1b02f7..fec3b08127 100644 --- a/common/locales/fr/limited.json +++ b/common/locales/fr/limited.json @@ -30,7 +30,7 @@ "seasonalShopText": "Bienvenue à la Boutique Saisonnière !! Nous avons actuellement reçu les nouveautés Édition Saisonnière du Printemps. Tout l'équipement est disponible à l'achat pendant la Fête du Printemps chaque année, mais nous ne sommes ouverts que jusqu'au 30 Avril, alors faites un stock dès maintenant, ou vous devrez attendre un an pour acheter à nouveau cet équipement !", "seasonalShopSummerText": "Bienvenue à la Boutique Saisonnière !! Nous avons reçu les nouveautés Édition Saisonnière de l'Été. Tout l'équipement sera disponible à l'achat pendant la Fête de l'Été chaque année, mais nous ne sommes ouverts que jusqu'au 31 juillet, alors faites un stock dès maintenant ou vous devrez attendre un an pour acheter à nouveau cet équipement !", "seasonalShopFallText": "Bienvenue à la Boutique Saisonnière !! Nous avons actuellement reçu les nouveautés Édition Saisonnière d'automne. Tout l'équipement est disponible à l'achat pendant le Festival d'Automne chaque année, mais nous ne sommes ouverts que jusqu'au 31 octobre, alors faites un stock dès maintenant, ou vous devrez attendre un an pour acheter à nouveau cet équipement !", - "seasonalShopFallTextBroken": "Oh.... Welcome to the Seasonal Shop... We're stocking autumn Seasonal Edition goodies, or something... Everything here will be available to purchase during the Fall Festival event each year, but we're only open until October 31... I guess you should to stock up now, or you'll have to wait... and wait... and wait... *sigh*", + "seasonalShopFallTextBroken": "Oh... Bienvenue à la Boutique Saisonnière... Nous avons actuellement reçu les nouveautés Édition Saisonnière d'automne, ou quelque chose du genre... Tout l'équipement est disponible à l'achat pendant le Festival d'Automne chaque année, mais nous ne sommes ouverts que jusqu'au 31 octobre... alors je suppose que vous devriez faire le stock dès maintenant, ou vous devrez attendre... et attendre... et attendre... *soupir*", "seasonalShopRebirth": "Si vous avez utilisé l'Orbe de Renaissance, vous pouvez racheter cet équipement dans la colonne des Récompenses. Au début, vous pourrez seulement acheter les objets associés à votre classe actuelle (Guerrier par défaut), mais n'ayez crainte, les objets spécifiques à une classe deviendront disponibles si vous choisissez cette classe.", "candycaneSet": "Sucre d'Orge (Mage)", "skiSet": "Ski-sassin (Voleur)", diff --git a/common/locales/fr/messages.json b/common/locales/fr/messages.json index 500daf65a9..de9d56164f 100644 --- a/common/locales/fr/messages.json +++ b/common/locales/fr/messages.json @@ -31,19 +31,25 @@ "armoireEquipment": "<%= image %> Vous avez trouvé une pièce d'équipement rare dans l'Armoire : <%= dropText %> ! Génial !", "armoireFood": "<%= image %> Vous farfouillez dans l'Armoire et trouvez du/de la <%= dropArticle %><%= dropText %>. Qu'est-ce que ça fait là ?", "armoireExp": "Vous luttez contre l'Armoire et gagnez de l'Expérience. Prends ça !", - "messageInsufficientGems": "Not enough gems!", - "messageAuthPasswordMustMatch": ":password and :confirmPassword don't match", - "messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required", - "messageAuthUsernameTaken": "Username already taken", - "messageAuthEmailTaken": "Email already taken", - "messageAuthNoUserFound": "No user found.", - "messageAuthMustBeLoggedIn": "You must be logged in.", - "messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request", - "messageGroupNotFound": "Group not found or you don't have access.", - "messageGroupAlreadyInParty": "Already in a party, try refreshing.", - "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", - "messageGroupRequiresInvite": "Can't join a group you're not invited to.", - "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageInsufficientGems": "Pas assez de gemmes!", + "messageAuthPasswordMustMatch": ":password et :confirmPassword ne correspondent pas", + "messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword requis", + "messageAuthUsernameTaken": "Nom d'utilisateur déjà pris.", + "messageAuthEmailTaken": "E-mail déjà pris.", + "messageAuthNoUserFound": "Utilisateur introuvable.", + "messageAuthMustBeLoggedIn": "Vous devez être connecté.", + "messageAuthMustIncludeTokens": "Votre demande doit contenir un jeton d'API et un ID d'Utilisateur.", + "messageGroupNotFound": "Groupe introuvable ou vous n'y avez pas accès.", + "messageGroupAlreadyInParty": "Déjà dans un équipe, essayer d'actualiser.", + "messageGroupOnlyLeaderCanUpdate": "Seul le responsable du groupe mettre à jour le groupe!", + "messageGroupRequiresInvite": "Vous ne pouvez rejoindre un groupe sans invitation.", + "messageGroupCannotRemoveSelf": "Vous ne pouvez pas vous supprimer vous-même!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", - "messageUserOperationNotFound": "<%= operation %> operation not found" + "messageUserOperationNotFound": "<%= operation %> opération introuvable" } \ No newline at end of file diff --git a/common/locales/fr/npc.json b/common/locales/fr/npc.json index a39245e2ae..57fe6fe7c3 100644 --- a/common/locales/fr/npc.json +++ b/common/locales/fr/npc.json @@ -7,18 +7,19 @@ "daniel": "Daniel", "danielText": "Bienvenue à la Taverne ! Restez un moment et rencontrez les habitants. Si vous avez besoin de vous reposer (vacances ? maladie ?), je vous installerai à l'Auberge. Pendant votre séjour, vos tâches Quotidiennes ne vous infligeront pas de dommages à la fin de la journée, mais vous pourrez quand même les réaliser.", "danielText2": "Prenez garde : si vous êtes au milieu d'une quête contre un boss, celui-ci vous infligera tout de même des blessures en fonction des Quotidiennes manquées des membres de votre groupe ! De façon identique, vos propres dégâts au Boss (ou les objets récoltés) ne seront pas appliqués tant que vous ne quitterez pas l'Auberge.", - "danielTextBroken": "Welcome to the Tavern... I guess... If you need to rest, I'll set you up at the Inn... While checked-in, your Dailies won't hurt you at the day's end, but you can still check them off... if you have the energy...", - "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", + "danielTextBroken": "Bienvenue à la Taverne... je suppose... Si vous avez besoin de vous reposer, je vous installerai à l'Auberge... Pendant votre séjour, vos tâches Quotidiennes ne vous infligeront pas de dommages à la fin de la journée, mais vous pourrez quand même les réaliser... si vous en avez la force...", + "danielText2Broken": "Oh...: si vous êtes au milieu d'une quête contre un boss, celui-ci vous infligera tout de même des blessures si les membres de votre groupe rate des Quotidiennes! De plus, vos propres dégâts infligés au Boss (ou les objets récoltés) ne seront pas appliqués tant que vous n'aurez pas quitté l'Auberge.", "alexander": "Alexander le Marchand", "welcomeMarket": "Bienvenue au Marché ! Achetez des œufs rares et des potions ! Vendez vos surplus ! Commandez des services utiles ! Venez voir ce que nous avons à proposer.", - "sellForGold": "Vendre <%= item %> pour <%= gold %> Or", - "sellEggForGold": "Vendre un oeuf de <%= itemType %> pour <%= gold %> Or.", - "sellPotionForGold": "Vendre une potion <%= itemType %> pour <%= gold %> Or", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Acheter des Gemmes", "justin": "Justin", "ian": "Ian", "ianText": "Bienvenue à la boutique des Quêtes ! Vous pouvez utiliser des parchemins de quête pour battre des monstres avec vos amis. Soyez sûr de vérifier notre ensemble de parchemins de Quêtes à l'achat sur votre droite !", - "ianBrokenText": "Welcome to the Quest Shop... Here you can use Quest Scrolls to battle monsters with your friends... Be sure to check out our fine array of Quest Scrolls for purchase on the right...", + "ianBrokenText": "Bienvenue à la boutique des Quêtes... Ici, vous pouvez utiliser des Parchemins de quêtes pour combattre des monstres avec vos amis. Assurez-vous de regarder notre ensemble de Parchemins de quêtes en vente sur votre droite...", "USD": "USD", "newStuff": "Nouveauté", "cool": "Rappelez-le moi plus tard", diff --git a/common/locales/fr/quests.json b/common/locales/fr/quests.json index 504f13fe42..7fbbcbd057 100644 --- a/common/locales/fr/quests.json +++ b/common/locales/fr/quests.json @@ -25,7 +25,7 @@ "rejected": "Rejetée", "pending": "En attente", "questStart": "Une fois que tous les membres ont soit accepté, soit refusé, la quête commence. Seuls ceux qui ont cliqué sur \"accepter\" pourront participer à la quête et recevoir les récompenses. Si certains membres mettent trop de temps à répondre (peut-être sont-ils inactifs ?), le lanceur de quête peut démarrer la quête sans eux en cliquant sur \"commencer\". Le lanceur de quête peut également annuler la quête et récupérer le parchemin de quête en cliquant sur \"Annuler\".", - "questStartBroken": "Once all members have either accepted or rejected, the quest begins... Only those that clicked \"accept\" will be able to participate in the quest and receive the drops... If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\"... The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\"...", + "questStartBroken": "Une fois que tous les membres ont soit accepté, soit refusé, la quête commence... Seuls ceux qui ont cliqué sur « Accepter » pourront participer à la quête et recevoir les récompenses... Si certains membres mettent trop de temps à répondre (peut-être sont-ils inactifs ?), le propriétaire de la quête peut démarrer la quête sans eux en cliquant sur « Commencer »... Le propriétaire de la quête peut également annuler la quête et récupérer le parchemin de quête en cliquant sur « Annuler »....", "begin": "Commencer", "bossHP": "Santé du Boss", "bossStrength": "Force du Boss", @@ -36,10 +36,10 @@ "itemsToCollect": "Objets à récupérer", "bossDmg1": "Chaque tâche Quotidienne ou À Faire et chaque Habitude positive inflige des dommages au boss. Frappez plus fort avec des tâches plus rouges ou avec les sorts Frappe Brutale et Eplosion de Flammes. Le boss infligera des dommages à chacun des participants de la quête pour chaque Quotidienne que vous aurez manquée (multipliés par la Force du boss) en plus des dommages normaux. Alors protégez votre équipe en effectuant vos Quotidiennes ! Tout dommage causé par vous et par le boss est pris en compte au cron (la réinitialisation de votre journée).", "bossDmg2": "Seuls les participants pourront combattre le boss et partager le butin de la quête.", - "bossDmg1Broken": "Each completed Daily and To-Do and each positive Habit hurts the boss... Hurt it more with redder tasks or Brutal Smash and Burst of Flames... The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies... All damage to and from a boss is tallied on cron (your day roll-over)...", - "bossDmg2Broken": "Only participants will fight the boss and share in the quest loot...", + "bossDmg1Broken": "Chaque tâche Quotidienne ou À Faire et chaque Habitude positive effectuée inflige des dommages au boss... Frappez plus fort avec des tâches plus rouges ou avec les sorts Frappe Brutale et Explosion de Flammes... Le boss infligera des dommages à chacun des participants de la quête pour chaque Quotidienne manquée (multipliés par la Force du boss) en plus des dommages normaux... Alors protégez votre équipe en effectuant vos Quotidiennes... Tout dommage causé par vous et par le boss est pris en compte au cron (la réinitialisation de votre journée)...", + "bossDmg2Broken": "Seuls les participants pourront combattre le boss et partager le butin de la quête...", "tavernBossInfo": "Complétez les Quotidiennes et les Tâches À faire et mainenez vous bonnes habitudes pour blesser le Boss Mondial! Les Quotidiennes incomplètes remplissent la jauge d'Attaques d'Echappement. Lorsque la jauge d'Attaques d'échappement est pleine, le Boss Mondial attaquera un PNJ. Un Boss Mondial ne blessera jamais de joueurs individiels ou leurs comptes d'aucune façon. Seules les tâches des comptes actifs ne reposant pas à l'Auberge seront compabilisées.", - "tavernBossInfoBroken": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss... Incomplete Dailies fill the Exhaust Strike Bar... When the Exhaust Strike bar is full, the World Boss will attack an NPC... A World Boss will never damage individual players or accounts in any way... Only active accounts not resting in the Inn will have their tasks tallied...", + "tavernBossInfoBroken": "Effectuez vos tâches Quotidiennes et À Faire et maintenez vos Habitudes positives pour blesser le Boss Mondial... Chaque Quotidienne non effectuée remplit la barre d'Attaque d'Échappement... Lorsque la barre d'Attaque d'Échappement est pleine, le Boss Mondial attaquera un PNJ... Un Boss Mondial ne blessera jamais des joueurs individuels ou des comptes de quelque façon que ce soit... Seules les tâches des comptes actifs de joueurs qui ne se reposent pas à l'Auberge sont prises en compte...", "bossColl1": "Pour obtenir des objets, accomplissez vos tâches positives. Vous trouvez les objets de quêtes de la même façon que vous trouvez les objets normaux mais vous ne les verrez que le jour suivant. À ce moment, tous les objets de quêtes que vous aurez trouvés seront comptabilisés et s'ajouteront à la pile.", "bossColl2": "Seuls les participants peuvent collecter des objets et partager le butin de la quête.", "bossColl1Broken": "Pour collectionnner des objets, accomplissez vos tâches positives... Vous trouverez les objets de quête exactement comme les objets normaux, mais vous ne les verrez que le jour suivant, lorsque tous les objets trouvés seront comptabilisés dans votre collection...", diff --git a/common/locales/fr/questscontent.json b/common/locales/fr/questscontent.json index 32dffe8a37..8490e5d91e 100644 --- a/common/locales/fr/questscontent.json +++ b/common/locales/fr/questscontent.json @@ -262,10 +262,10 @@ "questBurnoutBossRageQuests": "`Burnout lance ATTAQUE D'ÉCHAPPEMENT!`\n\nOh non! Malgré nos efforts redoublés , nous avons laissé quelques Quotidiennes nous échapper, et maintenant Burnout est embrasé d'énergie! Avec un grognement crépitant, il engloutit Ian le Maître des Quêtes dans une vague de feu spectral. Alors que des parchemins de quêtes, tombés au sol, se consument, la fumée se lève et vous voyez que Ian a été vidé de son énergie et n'est plus maintenant qu'un Esprit d'Échappement à la dérive. \n\nSeule la victoire contre Burnout peut rompre le sort et revivifier notre Maître des Quêtes bien-aimé. Effectuons nos Quotidiennes et vainquons ce monstre avant qu'il n'attaque encore!", "questBurnoutBossRageSeasonalShop": "`Burnout lance ATTAQUE D'ÉCHAPPEMENT!`\n\nAhh!!! Les Quotidiennes que nous n'avons pas effectuées ont nourri les flammes de Burnout, et maintenant il a assez d'énergie pour frapper à nouveau! Il envoie une langue de feu spectral qui brûle la Boutique Saisonnière. Vous êtes horrifié de voir que la joyeuse Sorcière Saisonnière a été transformée en un Esprit d'Échappement tout affaissé.\n\nNous devons sauver nos PNJ! Vite, Habiticien-ne-s, effectuez vos tâches et vainquez Burnout avant qu'il ne frappe pour la troisième fois!", "questBurnoutBossRageTavern": "`Burnout lance ATTAQUE D'ÉCHAPPEMENT!`\n\nBeaucoup d'Habiticien-ne-s ont échappé à Burnout dans la Taverne, mai c'est terminé! Avec un hurlement perçant, Burnout râtisse la Taverne avec ses mains chauffées à blanc. Alors que les usagers de la Taverne s'enfuient, Daniel est empoigné par Burnout et se transforme en Esprit d'Échappement sous vos yeux!\n\nCette horreur exaltée se prolonge vraiment trop. N'abandonnez pas... nous sommes si près de vaincre Burnout une fois pour toutes!", - "questFrogText": "Swamp of the Clutter Frog", - "questFrogNotes": "As you and your friends are slogging through the Swamps of Stagnation, @starsystemic points at a large sign. \"Stay on the path -- if you can.\"

\"Surely that isn't hard!\" @RosemonkeyCT says. \"It's broad and clear.\"

But as you continue, you notice that path is gradually overtaken by the muck of the swamp, laced with bits of strange blue debris and clutter, until it's impossible to proceed.

As you look around, wondering how it got this messy, @Jon Arjinborn shouts, \"Look out!\" An angry frog leaps from the sludge, clad in dirty laundry and lit by blue fire. You will have to overcome this poisonous Clutter Frog to progress!", - "questFrogCompletion": "The frog cowers back into the muck, defeated. As it slinks away, the blue slime fades, leaving the way ahead clear.

Sitting in the middle of the path are three pristine eggs. \"You can even see the tiny tadpoles and through the clear casing!\" @Breadstrings says. \"Here, you should take them.\"", - "questFrogBoss": "Clutter Frog", - "questFrogDropFrogEgg": "Frog (Egg)", - "questFrogUnlockText": "Unlocks purchasable Frog eggs in the Market" + "questFrogText": "Marécage de la Grenouille du Désordre", + "questFrogNotes": "Alors que vous et vos amis cheminez péniblement dans les Marécages de la Stagnation, @starsystemic désigne un grand panneau. \"Restez sur le chemin principal - si vous le pouvez.\"

\"Ca ne peut pas être si compliqué!\", dit @RosemonkeyCT. \"Il est large, et bien délimité\"

Mais, alors que vous poursuivez votre chemin, vous remarquez que le chemin disparaît petit à petit sous la boue du marécage, mêlée d'étranges petits débris bleus et de tout un bric-à-brac, jusqu'à ce qu'il devienne impossible de continuer à le suivre.

Alors que vous regardez tout autour de vous en vous demandant comment la route a bien pu finir dans cet état, @Jon Arjinborn pousse un cri. \"Attention!\". Une grenouille, manifestement furieuse, bondit hors de la vase, enroulée dans du linge sale et éclairée d'une flamme bleue. Il vous faudra vaincre cette Grenouille du Désordre empoisonnée pour poursuivre!", + "questFrogCompletion": "La grenouille se replie dans la vase, vaincue. Tandis qu'elle s'éloigne en titubant, la vase bleue disparaît, laissant la voie libre.

Au beau milieu du chemin se trouvent trois oeufs immaculés. \"L'enveloppe est tellement claire qu'on peut même voir les têtards au travers!\" dit @Breadstrings. \"Tiens, tu devrais les prendre.\"", + "questFrogBoss": "La Grenouille du Désordre", + "questFrogDropFrogEgg": "Grenouille (Œuf)", + "questFrogUnlockText": "Déverrouille l'achat d’œufs de grenouilles au Marché" } \ No newline at end of file diff --git a/common/locales/fr/rebirth.json b/common/locales/fr/rebirth.json index 4abe514106..67ee850aa3 100644 --- a/common/locales/fr/rebirth.json +++ b/common/locales/fr/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "Vous avez également obtenu un Succès pour avoir commencé une nouvelle aventure !", "beReborn": "Renaître", "rebirthAchievement": "Vous avez commencé une nouvelle aventure ! C'est votre Renaissance n°<%= number %> et le niveau le plus élevé que vous avez atteint est <%= level %>. Pour cumuler ce Succès, commencez votre nouvelle aventure une fois que vous aurez atteint un niveau encore plus élevé !", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "A commencé une Nouvelle Aventure", "rebirthText": "A débuté <%= rebirths %> Nouvelles Aventures", "rebirthOrb": "A utilisé un Orbe de Renaissance pour recommencer à zéro après avoir atteint le niveau", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "Commencez un nouveau personnage au Niveau 1 en conservant les succès, les objets de collection et les tâches avec historique.", "rebirthName": "Orbe de Renaissance", "reborn": "Né de nouveau, niveau maximum <%= reLevel %>" diff --git a/common/locales/fr/settings.json b/common/locales/fr/settings.json index 76ad0a90f5..8fd71f7342 100644 --- a/common/locales/fr/settings.json +++ b/common/locales/fr/settings.json @@ -119,24 +119,24 @@ "promoCodeApplied": "Code promotionnel validé ! Vérifiez votre inventaire", "promoPlaceholder": "Entrez le Code promotionnel", "displayInviteToPartyWhenPartyIs1": "Afficher le bouton Inviter Dans L'équipe lorsque l'équipe a 1 seul membre.", - "saveCustomDayStart": "Save Custom Day Start", + "saveCustomDayStart": "Enregistrer l'Heure personnalisée de début de journée", "registration": "S'enregistrer", "addLocalAuth": "Ajouter authentification locale", "generateCodes": "Générer Codes", "generate": "Générer", - "getCodes": "Get Codes", + "getCodes": "Obtenir les Codes", "webhooks": "Webhooks", "enabled": "Activé", - "webhookURL": "Webhook URL", + "webhookURL": "URL du webhook", "add": "Ajouter", - "buyGemsGoldCap": "Cap raised to <%= amount %>", + "buyGemsGoldCap": "Limite augmentée à <%= amount %>", "mysticHourglass": "<%= amount %> Sablier Mystique ", "mysticHourglassText": "Un Sablier Mystique vous permet d'acheter des Sets d'Objets Mystère d'un mois passé.", - "purchasedPlanId": "$<%= price %> tous les <%= months %> mois() (<%= plan %>)", + "purchasedPlanId": "<%= price %> $ tous les <%= months %> mois (<%= plan %>)", "purchasedPlanExtraMonths": "Il vous reste <%= months %> mois de crédit d' abonnement ", "consecutiveSubscription": "Abonnement consécutif", "consecutiveMonths": "Mois consécutifs", - "gemCapExtra": "Gem Cap Extra:", + "gemCapExtra": "Gemmes disponibles en plus :", "mysticHourglasses": "Sablier Mystique", "paypal": "PayPal", "amazonPayments": "Paiments Amazon" diff --git a/common/locales/he/messages.json b/common/locales/he/messages.json index 69b9b84064..16fb793361 100644 --- a/common/locales/he/messages.json +++ b/common/locales/he/messages.json @@ -44,6 +44,12 @@ "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", "messageGroupRequiresInvite": "Can't join a group you're not invited to.", "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" } \ No newline at end of file diff --git a/common/locales/he/npc.json b/common/locales/he/npc.json index a7100b9ff8..ad136d03a5 100644 --- a/common/locales/he/npc.json +++ b/common/locales/he/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", "alexander": "אלכסנדר הסוחר.", "welcomeMarket": "ברוכים הבאים לשוק! רכשו ביצים ושיקויים נדירים! מכרו את העודפים שלכם! היעזרו בשירותיי המעולים! בואו וראו מה יש לי עבורכם.", - "sellForGold": "מכר/י <%= item %> עבור <%= gold %> מטבעות זהב", - "sellEggForGold": "Sell <%= itemType %> Egg for <%= gold %> Gold", - "sellPotionForGold": "Sell <%= itemType %> Potion for <%= gold %> Gold", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "קנה אבני חן", "justin": "ג'סטין", "ian": "איאן", diff --git a/common/locales/he/rebirth.json b/common/locales/he/rebirth.json index d1e6df1019..73e2fd6683 100644 --- a/common/locales/he/rebirth.json +++ b/common/locales/he/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "את/ה גם מקבל/ת הישג מכך שהתחלת הרפתקה חדשה!", "beReborn": "היוולד מחדש", "rebirthAchievement": "התחלת הרפתקה חדשה! זוהי הלידה ה<%= number %> שלך מחדש, והרמה הכי גבוהה אליה הגעת היא <%= level %>. כדי לשבור שיא זה, נסה/י להגיע לרמה גבוהה יותר לפני שתתחיל/י מחדש שוב!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "התחיל/ה הרפתקה חדשה", "rebirthText": "התחיל/ה <%= rebirths %> הרפתקאות חדשות", "rebirthOrb": "השתמש/ה בכדור הלידה מחדש כדי להתחיל מהתחלה אחרי רמה", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "התחיל/י דמות חדשה ברמה 1 עם אותם הישגים, חפצי אספנות, משימות והיסטוריה.", "rebirthName": "כדור הלידה מחדש", "reborn": "היוולד/י מחדש. רמה מירבית: <%= reLevel %>" diff --git a/common/locales/hu/backgrounds.json b/common/locales/hu/backgrounds.json index a52092bc43..c730b2625f 100644 --- a/common/locales/hu/backgrounds.json +++ b/common/locales/hu/backgrounds.json @@ -112,11 +112,11 @@ "backgroundStableNotes": "Hátasok ápolása a Habitika Istállóban", "backgroundTavernText": "Habitika Fogadó", "backgroundTavernNotes": "Habitika Fogadó meglátogatása", - "backgrounds102015": "SET 17: Released October 2015", - "backgroundHarvestMoonText": "Harvest Moon", - "backgroundHarvestMoonNotes": "Cackle under the Harvest Moon.", - "backgroundSlimySwampText": "Slimy Swamp", - "backgroundSlimySwampNotes": "Slog through a Slimy Swamp.", - "backgroundSwarmingDarknessText": "Swarming Darkness", - "backgroundSwarmingDarknessNotes": "Shiver in the Swarming Darkness." + "backgrounds102015": "KÉSZLET 17: kiadva 2015 októberében", + "backgroundHarvestMoonText": "Telihold", + "backgroundHarvestMoonNotes": "Csacsogj a Telihold alatt.", + "backgroundSlimySwampText": "Iszapos Mocsár", + "backgroundSlimySwampNotes": "Ballagj át az Iszapos Mocsáron.", + "backgroundSwarmingDarknessText": "Sötétség leple", + "backgroundSwarmingDarknessNotes": "Dideregj a Sötétség leple alatt." } \ No newline at end of file diff --git a/common/locales/hu/challenge.json b/common/locales/hu/challenge.json index b6a420cb1b..e6a74e45b3 100644 --- a/common/locales/hu/challenge.json +++ b/common/locales/hu/challenge.json @@ -60,6 +60,6 @@ "noPermissionEditChallenge": "Nincs jogod szerkeszteni ezt a kihívást", "noPermissionDeleteChallenge": "Nincs jogod törölni ezt a kihívást", "noPermissionCloseChallenge": "Nincs jogod lezárni ezt a kihívást", - "noChallengeOwner": "no owner", - "noChallengeOwnerPopover": "This challenge does not have an owner because the person who created the challenge deleted their account." + "noChallengeOwner": "nincs tulajdonosa", + "noChallengeOwnerPopover": "Ennek a kihívásnak nincs tulajdonosa, mert a személy aki létrehozta törölte fiókját." } \ No newline at end of file diff --git a/common/locales/hu/character.json b/common/locales/hu/character.json index afb21752a4..362d1c41f8 100644 --- a/common/locales/hu/character.json +++ b/common/locales/hu/character.json @@ -52,7 +52,7 @@ "classEquipBonus": "Kaszt Tárgy Bónusz", "battleGear": "Harci felszerelés", "battleGearText": "Ez itt a felszerelésed, amit a csatákban viselsz; hatással van számokra, amikor a feladataidat teljesíted.", - "autoEquipBattleGear": "Auto-equip new gear", + "autoEquipBattleGear": "Új felszerelés automatikus hordása", "costume": "Ruha", "costumeText": "Ha tetszenek a ruhák, amiket hordasz, akkor pipáld ki a \"Ruha használata\" gombot, hogy felöltsd őket és a harci felszereléseid felett látszódjanak.", "useCostume": "Ruha használata", diff --git a/common/locales/hu/generic.json b/common/locales/hu/generic.json index a7ed00fa35..9c797e401a 100644 --- a/common/locales/hu/generic.json +++ b/common/locales/hu/generic.json @@ -28,7 +28,7 @@ "market": "Piac", "subscriberItem": "Rejtélyes tárgy", "newSubscriberItem": "Új rejtélyes tárgy", - "subscriberItemText": "Each month, subscribers will receive a mystery item. This is usually released about one week before the end of the month. See the wiki's 'Mystery Item' page for more information.", + "subscriberItemText": "Minden hónapban az előfizetők kapnak egy rejtélyes tárgyat. Ezt általában egy héttel a hónap vége előtt hozzuk nyilvánosságra. A Wiki 'Rejtélyes Tárgyak' oldalán találhatsz több információt.", "all": "Összes", "none": "Semelyik", "or": "vagy", @@ -79,7 +79,7 @@ "errorUpCase": "HIBA:", "newPassSent": "Új jelszó elküldve.", "serverUnreach": "A kiszolgáló jelenleg nem elérhető.", - "requestError": "Yikes, an error occurred! Please reload the page, your last action may not have been saved correctly.", + "requestError": "Ajjaj, egy hiba történt! Kérlek töltsd újra az oldalt, az előző műveleted nem biztos hogy sikeres volt.", "seeConsole": "Ha a hiba továbbra is fennáll, akkor jelentsd itt: Súgó > Hiba jelentése. Ha ismered a böngésződ konzolját, akkor csatold a hibaüzeneteket is.", "error": "Hiba", "menu": "Menü", @@ -111,9 +111,9 @@ "December": "December", "dateFormat": "Dátum formátum", "achievementStressbeast": "Stoïkalm megmentője", - "achievementStressbeastText": "Helped defeat the Abominable Stressbeast during the 2014 Winter Wonderland Event!", - "achievementBurnout": "Savior of the Flourishing Fields", - "achievementBurnoutText": "Helped defeat Burnout and restore the Exhaust Spirits during the 2015 Fall Festival Event!", + "achievementStressbeastText": "Segített legyőzni az Utálatos Stresszrémet a 2014-es Téli Csodaország esemény alatt!", + "achievementBurnout": "Virágzó Mezők megmentője", + "achievementBurnoutText": "Segített legyőzni Kiégést és visszaszerezte a Távozó Szellemeket a 2015-ös Őszi Fesztivál esemény alatt!", "checkOutProgress": "Haladásom megtekintése Habitikán!", "cardReceived": "Egy kártyád érkezett!", "cardReceivedFrom": "<%= userName %> küldött neked egy <%= cardType %>", diff --git a/common/locales/hu/messages.json b/common/locales/hu/messages.json index 8370b1ba6a..8954f780e6 100644 --- a/common/locales/hu/messages.json +++ b/common/locales/hu/messages.json @@ -44,6 +44,12 @@ "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", "messageGroupRequiresInvite": "Can't join a group you're not invited to.", "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" } \ No newline at end of file diff --git a/common/locales/hu/npc.json b/common/locales/hu/npc.json index 289ce862a0..3cc63741dd 100644 --- a/common/locales/hu/npc.json +++ b/common/locales/hu/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", "alexander": "Alexander a kereskedő", "welcomeMarket": "Üdvözöllek a Piacon! Vegyél ritka tojásokat és főzeteket. Add el a feleselges készleted. Vegyél igénybe hasznos szolgáltatásokat! Nézd meg mit tudunk ajánlani.", - "sellForGold": "<%= item %> eladása <%= gold %> aranyért", - "sellEggForGold": "<%= itemType %> Tojás eladása <%= gold %> Aranyért", - "sellPotionForGold": "<%= itemType %> Főzet eladása <%= gold %> Aranyért", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Drágakő vásárlás", "justin": "Justin", "ian": "Ian", diff --git a/common/locales/hu/rebirth.json b/common/locales/hu/rebirth.json index d2ec863978..d4a8fa0ef4 100644 --- a/common/locales/hu/rebirth.json +++ b/common/locales/hu/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "Kapsz továbbá egy Kitűntetést, amiért új kalandot kezdesz!", "beReborn": "Szüless Újjá", "rebirthAchievement": "Új kalandot kezdtél! Ez a(z) <%= number %>. Újjászületésed. A legmagasabb szint, amit elértél: <%= level %>. Ahhoz, hogy halmozd ezt a Kitüntetést kezdj új kalandot, amikor elértél egy még magasabb Szintet!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Új Kalandot kezdtél", "rebirthText": "Eddig <%= rebirths %> Új Kalandot kezdtél", "rebirthOrb": "Az Újjászületés Gömbjét használtad, hogy újrakezdj miután elérted ezt a Szintet", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "Kezdj új karaktert 1-es Szinttől, megtartva a kitűntetéseidet, a gyűjteményeidet, a feladataidat és a történetedet.", "rebirthName": "Az Újjászületés Gömbje", "reborn": "Újjászülettél, maximális szint <%= reLevel %>" diff --git a/common/locales/it/backgrounds.json b/common/locales/it/backgrounds.json index 7144c31492..cf9815b9ef 100644 --- a/common/locales/it/backgrounds.json +++ b/common/locales/it/backgrounds.json @@ -113,10 +113,10 @@ "backgroundTavernText": "Taverna di Habitica", "backgroundTavernNotes": "Fai una visita alla Taverna.", "backgrounds102015": "SERIE 17: Ottobre 2015", - "backgroundHarvestMoonText": "Harvest Moon", - "backgroundHarvestMoonNotes": "Cackle under the Harvest Moon.", + "backgroundHarvestMoonText": "Luna del Raccolto", + "backgroundHarvestMoonNotes": "Schiamazzare sotto la Luna del Raccolto", "backgroundSlimySwampText": "Palude Melmosa", - "backgroundSlimySwampNotes": "Slog through a Slimy Swamp.", + "backgroundSlimySwampNotes": "Arrancare attraverso una Palude Melmosa.", "backgroundSwarmingDarknessText": "Oscurità Brulicante", - "backgroundSwarmingDarknessNotes": "Shiver in the Swarming Darkness." + "backgroundSwarmingDarknessNotes": "Tremare nel Oscurità Brulicante." } \ No newline at end of file diff --git a/common/locales/it/character.json b/common/locales/it/character.json index e9db26a1f1..e230cc3e5e 100644 --- a/common/locales/it/character.json +++ b/common/locales/it/character.json @@ -52,7 +52,7 @@ "classEquipBonus": "Bonus classe", "battleGear": "Assetto di battaglia", "battleGearText": "Questo è l'equipaggiamento che indossi in battaglia, esso modifica alcuni valori quando interagisci con le tue attività.", - "autoEquipBattleGear": "Auto-equip new gear", + "autoEquipBattleGear": "Equipaggiare automatica nuova attrezzatura", "costume": "Costume", "costumeText": "Se preferisci il look di oggetti diversi da quelli equipaggiati, metti una spunta su \"Usa costume\" per visualizzare un costume anzichè l'equipaggiamento da battaglia (nonostante il cambio di aspetto, rimangono tutti i bonus delle armi e delle armature).", "useCostume": "Usa costume", @@ -66,8 +66,8 @@ "level": "Livello", "levelUp": "Livello aumentato!", "mana": "Mana", - "hp": "HP", - "mp": "MP", + "hp": "PV", + "mp": "PM", "xp": "XP", "health": "Salute", "allocateStr": "Punti assegnati a Forza:", diff --git a/common/locales/it/faq.json b/common/locales/it/faq.json index b3edf87756..8c9eb3ac20 100644 --- a/common/locales/it/faq.json +++ b/common/locales/it/faq.json @@ -20,7 +20,7 @@ "webFaqAnswer5": "Il modo migliore e' quello di invitarli a fare Squadra con te, dal menu' Social > Squadra! Le Squadre possono partecipare alle missioni, combattere i mostri e dividersi le abilita' per aiutarsi a vicenda. Insieme potete inoltre unirvi alle Gilde (Social > Gilde). Le Gilde sono delle chat rivolte ad un interesse condiviso o al raggiungimento di un obiettivo comune, possono essere pubbliche o private. Puoi unirti a tutte le Gilde che desideri ma ad un'unica Squadra.\n

\nPer informazioni piu' dettagliate, puoi guardare sulla pagina wiki [Parties](http://habitrpg.wikia.com/wiki/Party) and [Guilds](http://habitrpg.wikia.com/wiki/Guilds).", "faqQuestion6": "Come posso prendere un Animale o una Cavalcatura?", "iosFaqAnswer6": "Dopo il livello 3 sbloccherai il Sistema di Drop. Ogni volta che completi un'attività avrai una possibilità di vincere un Uovo, una Pozione di schiusura o del Cibo. Questi verranno archiviati in Menù > Inventario.\n\nPer far nascere un Animale avrai bisogno di un Uovo e di una Pozione di schiusura. Premi sull'uovo per scegliere la specie che vuoi far schiudere, e seleziona quindi la Pozione di Schiusura per determinare il colore! Torna su Menù > Animali per equipaggiare il tuo nuovo animale al tuo Avatar premendoci sopra.\n\nPuoi anche far evolvere i tuoi Animali in Cavalcature cibandoli in Menù > Animali. Clicca sul Cibo nel riquadro a destra \"Cibo e Selle\", quindi seleziona l'Animale. Dovrai alimentare l'Animale diverse volte prima di farlo diventare una Cavalcatura, ma se riesci a trovare il suo cibo preferito crescerà molto più in fretta. Fai diverse prove o [Spoiler qui](http://habitica.wikia.com/wiki/Food#Food_Preferences). Una volta che hai una Cavalcatura, vai in Menù > Cavalcature e selezionala per equipaggiarla al tuo avatar.\n\nPotrai inoltre ricevere Uova dalle Missioni Animali completandole.(Vedi sotto per saperne di più sulle Missioni)", - "webFaqAnswer6": "At level 3, you will unlock the Drop System. Every time you complete a task, you'll have a random chance at receiving an egg, a hatching potion, or a piece of food. They will be stored in Inventory > Market.\n

\n To hatch a Pet, you'll need an egg and a hatching potion. Click on the egg to determine the species you want to hatch, and then click on the hatching potion to determine its color! Go to Inventory > Pets to equip it to your avatar by clicking on it.\n

\n You can also grow your Pets into Mounts by feeding them under Inventory > Pets. Click on a Pet, and then click on a piece of food from the right-hand menu to feed it! You'll have to feed a pet many times before it becomes a Mount, but if you can figure out its favorite food, it will grow more quickly. Use trial and error, or [see the spoilers here](http://habitica.wikia.com/wiki/Food#Food_Preferences). Once you have a Mount, go to Inventory > Mounts and click on it to equip it to your avatar.\n

\n You can also get eggs for Quest Pets by completing certain Quests. (See below to learn more about Quests.)", + "webFaqAnswer6": "Dopo il livello 3 sbloccherai il Sistema di Drop. Ogni volta che completi un'attività avrai una possibilità di vincere un Uovo, una Pozione di Schiusura o del Cibo. Questi verranno immagazzinati in Inventario > Mercato.\n

\nPer far nascere un Animale avrai bisogno di un Uovo e di una Pozione di schiusura. Premi sull'uovo per scegliere la specie che vuoi far schiudere, e seleziona quindi la Pozione di Schiusura per determinarne il colore! Vai su Inventario > Animali per equipaggiare il tuo nuovo animale al tuo Avatar cliccandoci sopra.\n

\nPuoi anche far evolvere i tuoi Animali in Cavalcature cibandoli in Inventario > Animali. Clicca su un animale e seleziona quindi un pezzo di Cibo dal menù a destra per dargli da mangiare! Dovrai alimentare l'Animale diverse volte prima di farlo diventare una Cavalcatura, ma se riesci a trovare il suo cibo preferito, crescerà molto più in fretta. Fai diverse prove, o [Spoiler qui](http://habitica.wikia.com/wiki/Food#Food_Preferences). Una volta che hai una Cavalcatura, vai in Inventario > Cavalcature e selezionala per equipaggiarla al tuo avatar.\n

\nPotrai inoltre ricevere Uova dalle Missioni Animali completandole. (Vedi sotto per saperne di più sulle Missioni.)", "faqQuestion7": "Come faccio a diventare un Guerriero, un Mago, un'Assassino o un Guaritore?", "iosFaqAnswer7": "Al livello 10, puoi scegliere di diventare un Guerriero, un Mago, un Assassino, o un Guaritore. (Tutti i giocatori iniziano come Guerrieri per impostazione predefinita.) Ogni classe ha diverse opzioni di equipaggiamento, diverse abilità che possono lanciare dopo il livello 11, e diversi vantaggi. I Guerrieri possono facilmente danneggiare i Boss, sopportare più danni dalle loro attività, e contribuire a rendere la loro squadra più forte. Anche i Maghi possono facilmente danneggiare i Boss, così come possono salire di livello velocemente e ripristinare mana per la loro squadra. Gli Assassini guadagnano più oro e trovano più item drop, e possono aiutare la loro squadra a fare lo stesso. Infine, i Guaritori possono curare loro stessi e i loro compagni di squadra.\n\nSe non vuoi scegliere subito una Classe -- per esempio, se stai ancora lavorando per comprare tutto l'equipaggiamento della tua classe attuale -- puoi cliccare \"Decidi più tardi\" e riattivarla successivamente in Menu > Scegli Classe.", "webFaqAnswer7": "At level 10, you can choose to become a Warrior, Mage, Rogue, or Healer. (All players start as Warriors by default.) Each Class has different equipment options, different Skills that they can cast after level 11, and different advantages. Warriors can easily damage Bosses, withstand more damage from their tasks, and help make their party tougher. Mages can also easily damage Bosses, as well as level up quickly and restore Mana for their party. Rogues earn the most Gold and find the most item drops, and they can help their party do the same. Finally, Healers can heal themselves and their party members.\n

\n If you don't want to choose a Class immediately -- for example, if you are still working to buy all the gear of your current class -- you can click \"Opt Out\" and re-enable it later under User > Stats.", diff --git a/common/locales/it/generic.json b/common/locales/it/generic.json index b1f11042da..5ba667d099 100644 --- a/common/locales/it/generic.json +++ b/common/locales/it/generic.json @@ -28,7 +28,7 @@ "market": "Mercato", "subscriberItem": "Oggetto misterioso", "newSubscriberItem": "Nuovo oggetto misterioso!", - "subscriberItemText": "Each month, subscribers will receive a mystery item. This is usually released about one week before the end of the month. See the wiki's 'Mystery Item' page for more information.", + "subscriberItemText": "Ogni mese, gli abbonati ricevono un oggetto misterioso. Questo oggetto in genere viene rivelato circa una settimana prima della fine del mese. Leggi la pagina della wiki 'Mystery Item' per maggiori informazioni.", "all": "Tutto", "none": "Nessuno", "or": "Oppure", diff --git a/common/locales/it/groups.json b/common/locales/it/groups.json index 92499e651f..46f66c4f5c 100644 --- a/common/locales/it/groups.json +++ b/common/locales/it/groups.json @@ -3,7 +3,7 @@ "innCheckOut": "Esci dalla Locanda", "innCheckIn": "Riposa nella Locanda", "innText": "Stai riposando nella Locanda! Mentre sei qui, le tue Daily non ti danneggeranno alla fine della giornata, ma si resetteranno comunque ogni giorno. Fai attenzione: se stai partecipando ad una missione Boss, il Boss ti danneggerà comunque per le Daily mancate dei tuoi compagni di squadra a meno che non stiano riposando anche loro nella Locanda! Inoltre, il tuo danno al Boss (o la raccolta di oggetti) non avrà effetto finchè non lasci la Locanda.", - "innTextBroken": "You're resting in the Inn, I guess... While checked-in, your Dailies won't hurt you at the day's end, but they will still refresh every day... If you are participating in a Boss Quest, the Boss will still damage you for your party mates' missed Dailies... unless they are also in the Inn... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn... so tired...", + "innTextBroken": "Stai riposando nella Locanda, credo... Mentre sei qui, le tue Daily non ti danneggeranno alla fine della giornata, ma si resetteranno comunque ogni giorno... Se stai partecipando ad una missione Boss, il Boss ti danneggerà comunque per le Daily mancate dei tuoi compagni di squadra... a meno che non stiano riposando anche loro nella Locanda... Inoltre, il tuo danno al Boss (o gli oggetti raccolti) non avrà effetto finché non lasci la Locanda... sono così stanco...", "lfgPosts": "Sei in cerca di una squadra? Guarda qui! (in inglese)", "tutorial": "Tutorial", "glossary": "Glossario", @@ -147,5 +147,5 @@ "partyChatEmpty": "La chat della squadra è vuota! Scrivi un messaggio nella casella qui sopra per cominciare una conversazione.", "guildChatEmpty": "La chat della gilda è vuota! Scrivi un messaggio nella casella qui sopra per cominciare una conversazione.", "possessiveParty": "Squadra di <%= name %>", - "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Communit Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them." + "requestAcceptGuidelines": "Se si desidera inviare messaggi in taverna o di qualsiasi partito o la chat della gilda, si prega di leggere prima la nostra <%= linkStart %>Orientamenti Comunitari<%= linkEnd %> e quindi fare clic sul pulsante qui sotto per indicare di accettarle." } \ No newline at end of file diff --git a/common/locales/it/messages.json b/common/locales/it/messages.json index 71232bd8d5..600c6ba03f 100644 --- a/common/locales/it/messages.json +++ b/common/locales/it/messages.json @@ -31,19 +31,25 @@ "armoireEquipment": "<%= image %> Hai trovato dell'equipaggiamento raro nello Scrigno: <%= dropText %>! Fantastico!", "armoireFood": "<%= image %> Frughi nello Scrigno e trovi <%= dropArticle %><%= dropText %>. Cosa ci fa qui dentro?", "armoireExp": "Fai a botte con lo Scrigno e ottieni Esperienza. Prendi questo!", - "messageInsufficientGems": "Not enough gems!", + "messageInsufficientGems": "Non hai abbastanza gemme!", "messageAuthPasswordMustMatch": ":password and :confirmPassword don't match", "messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required", - "messageAuthUsernameTaken": "Username already taken", + "messageAuthUsernameTaken": "Nome utente già in uso", "messageAuthEmailTaken": "Email already taken", - "messageAuthNoUserFound": "No user found.", - "messageAuthMustBeLoggedIn": "You must be logged in.", + "messageAuthNoUserFound": "Nessun utente trovato.", + "messageAuthMustBeLoggedIn": "Devi aver eseguito l'accesso.", "messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request", "messageGroupNotFound": "Group not found or you don't have access.", "messageGroupAlreadyInParty": "Already in a party, try refreshing.", "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", "messageGroupRequiresInvite": "Can't join a group you're not invited to.", "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" } \ No newline at end of file diff --git a/common/locales/it/npc.json b/common/locales/it/npc.json index 855858c83a..5e9c24c2a4 100644 --- a/common/locales/it/npc.json +++ b/common/locales/it/npc.json @@ -7,18 +7,19 @@ "daniel": "Daniel", "danielText": "Benvenuto nella Taverna! Resta per un po' e incontra la gente del posto. Se hai bisogno di riposare (vacanza? malattia?), ti sistemerò nella Locanda. Mentre riposi, le tue Daily non ti danneggeranno alla fine del giorno, ma potrai comunque spuntarle.", "danielText2": "Fai attenzione: se stai partecipando ad una missione Boss, il boss ti danneggerà comunque per le Daily non completate dei tuoi compagni di squadra! Inoltre, il tuo danno al Boss (o la raccolta di oggetti) non avrà effetto finchè non lasci la Locanda.", - "danielTextBroken": "Welcome to the Tavern... I guess... If you need to rest, I'll set you up at the Inn... While checked-in, your Dailies won't hurt you at the day's end, but you can still check them off... if you have the energy...", - "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", + "danielTextBroken": "Benvenuto nella Taverna... Credo... Se hai bisogno di riposare, ti sistemerò nella Locanda... Mentre riposi, le tue Daily non ti danneggeranno alla fine del giorno, ma potrai comunque spuntarle... se ne hai le forze...", + "danielText2Broken": "Oh... Se stai partecipando ad una missione Boss, il boss ti danneggerà comunque per le Daily non completate dei tuoi compagni di squadra... Inoltre, il tuo danno al Boss (o gli oggetti raccolti) non avrà effetto finché non lasci la Locanda...", "alexander": "Alexander il Mercante", "welcomeMarket": "Benvenuto nel Mercato! Compra uova rare e pozioni! Vendi la merce che ti avanza! Commissiona servizi utili! Vieni a vedere cosa abbiamo da offrire.", - "sellForGold": "Vendi <%= item %> per <%= gold %> Oro", - "sellEggForGold": "Vendi Uovo di <%= itemType %> per <%= gold %> Oro", - "sellPotionForGold": "Vendi Pozione <%= itemType %> per <%= gold %> Oro", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Compra Gemme", "justin": "Justin", "ian": "Ian", "ianText": "Benvenuto nel Negozio delle Missioni! Qui puoi utilizzare le Pergamene delle missioni per combattere i mostri con i tuoi amici. Assicurati di controllare la nostra raffinata scelta di Pergamene delle missioni per l'acquisto a destra!", - "ianBrokenText": "Welcome to the Quest Shop... Here you can use Quest Scrolls to battle monsters with your friends... Be sure to check out our fine array of Quest Scrolls for purchase on the right...", + "ianBrokenText": "Benvenuto nel Negozio delle Missioni... Qui puoi utilizzare le Pergamene delle missioni per combattere i mostri con i tuoi amici... Assicurati di controllare la nostra raffinata scelta di Pergamene delle missioni per l'acquisto a destra...", "USD": "USD", "newStuff": "Novità", "cool": "Ricordamelo più tardi", diff --git a/common/locales/it/quests.json b/common/locales/it/quests.json index c4a0fd66c5..4a1842c6a7 100644 --- a/common/locales/it/quests.json +++ b/common/locales/it/quests.json @@ -13,7 +13,7 @@ "youReceived": "Hai ricevuto", "dropQuestCongrats": "Congratulazioni per aver ottenuto questa Pergamena! Puoi invitare la tua squadra a cominciare questa missione ora, oppure puoi farlo in un secondo momento andando in Inventario > Missioni.", "questSend": "Cliccando \"Invita\" manderai un invito ai membri della tua squadra. Quando tutti i membri avranno accettato o rifiutato, la missione inizierà. Vedi lo stato in Social > Squadra.", - "questSendBroken": "Clicking \"Invite\" will send an invitation to your party members... When all members have accepted or denied, the quest begins... See status under Social > Party...", + "questSendBroken": "Cliccando \"Invita\" manderai un invito ai membri della tua squadra... Quando tutti i membri avranno accettato o rifiutato, la missione inizierà... Vedi lo stato in Social > Squadra...", "inviteParty": "Invita squadra nella missione", "questInvitation": "Invito alla missione:", "questInvitationTitle": "Invito alla missione", diff --git a/common/locales/it/rebirth.json b/common/locales/it/rebirth.json index 1fc77cac38..fedc511b67 100644 --- a/common/locales/it/rebirth.json +++ b/common/locales/it/rebirth.json @@ -2,9 +2,9 @@ "rebirthNew": "Rinascita: una nuova avventura è disponibile!", "rebirthUnlock": "Hai sbloccato Rinascita! Questo speciale oggetto del Mercato ti permette di iniziare una nuova partita al livello 1, ma mantenendo le tue attività, gli obiettivi, gli animali, ed altro. Usalo per dare nuova vita ad Habitica se senti di avere già ottenuto tutto, oppure per provare le nuove funzionalità con gli occhi di un personaggio principiante!", "rebirthBegin": "Rinascita: comincia una nuova avventura", - "rebirthStartOver": "Rebirth starts your character over from Level 1.", + "rebirthStartOver": "La rinascita riporta il tuo personaggio al livello 1.", "rebirthAdvList1": "Torni ad avere tutti i punti vita.", - "rebirthAdvList2": "You have no Experience, Gold, or Equipment (with the exception of free items like Mystery items).", + "rebirthAdvList2": "Non hai punti esperienza, oro o equipaggiamento (ad eccezione degli oggetti gratuiti come gli Oggetti Misteriosi)", "rebirthAdvList3": "Le tue Habit, le Daily e i To-Do si resettano tornando al colore giallo, e le serie si azzerano.", "rebirthAdvList4": "La tua classe iniziale sarà Guerriero fino a quando non otterrai una nuova classe.", "rebirthInherit": "Il tuo nuovo personaggio eredita delle cose dal suo predecessore:", @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "Ottieni inoltre una Medaglia per aver iniziato una nuova avventura!", "beReborn": "Rinasci", "rebirthAchievement": "Hai iniziato una nuova avventura! Questa è la rinascita numero <%= number %> per te, il livello più alto che hai raggiunto è <%= level %>. Per ottenere un'altra medaglia, inizia una nuova avventura quando avrai raggiunto un livello ancora più alto!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Ha cominciato una nuova avventura", "rebirthText": "Ha cominciato <%= rebirths %> nuove avventure", "rebirthOrb": "Ha utilizzato una Sfera della Rinascita al livello", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "Ricomincia con un nuovo personaggio al livello 1 mantenendo medaglie, oggetti, attività e cronologia.", "rebirthName": "Sfera della Rinascita", "reborn": "Rinasci, livello massimo <%= reLevel %>" diff --git a/common/locales/ja/messages.json b/common/locales/ja/messages.json index 000bdc5e4a..671b121f73 100644 --- a/common/locales/ja/messages.json +++ b/common/locales/ja/messages.json @@ -44,6 +44,12 @@ "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", "messageGroupRequiresInvite": "Can't join a group you're not invited to.", "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" } \ No newline at end of file diff --git a/common/locales/ja/npc.json b/common/locales/ja/npc.json index c50e0ebf4a..c7537b1ab0 100644 --- a/common/locales/ja/npc.json +++ b/common/locales/ja/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", "alexander": "アレクサンダー商人", "welcomeMarket": "マーケットへようこそ!レアペットとポーションを買えます。", - "sellForGold": "<%= item %>を<%= gold %>ゴールドで売る", - "sellEggForGold": "<%= itemType %>のたまごを<%= gold %>ゴールドで売る", - "sellPotionForGold": "<%= itemType %>ポーションを<%= gold %>ゴールドで売る", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "ジェムを買う", "justin": "ジャスティン", "ian": "イアン", diff --git a/common/locales/ja/rebirth.json b/common/locales/ja/rebirth.json index 3a73c0859a..3a8d05a0b8 100644 --- a/common/locales/ja/rebirth.json +++ b/common/locales/ja/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "また新しい冒険を開始するために、実績を獲得しましょう!", "beReborn": "転生する", "rebirthAchievement": "あなたは新しい冒険を始めました! これは転生 <%= number %> で、あなたが達成した最高レベルは <%= level %>.です。この実績を積み重ねるために、より高いレベルに達したときに、次の新しい冒険を始めましょう!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "新しい冒険が始まりました", "rebirthText": "<%= rebirths %> 新しい冒険を始めました", "rebirthOrb": "レベルに達成したらオーブオブリバースを使って再スタートしてください", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "実績、グッズ、およびタスクと履歴を保持して、レベル1で新しいキャラクターを始めます。", "rebirthName": "転生のオーブ", "reborn": "転生しました、最大レベル<%= reLevel %>" diff --git a/common/locales/nl/character.json b/common/locales/nl/character.json index f6e67124f8..4183942158 100644 --- a/common/locales/nl/character.json +++ b/common/locales/nl/character.json @@ -52,7 +52,7 @@ "classEquipBonus": "Klassebonus", "battleGear": "Strijduitrusting", "battleGearText": "Dit is de uitrusting die je in de strijd draagt. Het beïnvloedt scores als je met taken bezig bent.", - "autoEquipBattleGear": "Auto-equip new gear", + "autoEquipBattleGear": "Automatisch nieuwe uitrusting gebruiken", "costume": "Kostuum", "costumeText": "Als een andere uitrusting mooier vindt dan de uitrusting die je gebruikt, vink dan \"Kostuum gebruiken\" aan om een andere uitrusting zichtbaar te maken terwijl je je strijduitrusting eronder draagt.", "useCostume": "Kostuum gebruiken", diff --git a/common/locales/nl/gear.json b/common/locales/nl/gear.json index ea2320469e..3dfd1b6308 100644 --- a/common/locales/nl/gear.json +++ b/common/locales/nl/gear.json @@ -592,7 +592,7 @@ "backMystery201504Notes": "Bzzz bzzz bzzz! Vlieg van taak naar taak. Verleent geen voordelen. Abonnee-uitrusting april 2015.", "backMystery201507Text": "Koele Surfplank", "backMystery201507Notes": "Surf uit de IJverige Havens en berijd de golven in Baai Incompleet! Verleent geen voordelen. Abonnee-uitrusting juli 2015.", - "backMystery201510Text": "Kobolt staart", + "backMystery201510Text": "Koboldstaart", "backMystery201510Notes": "Grijpgraag en krachtig! Geeft geen voordeel. Abonnee-uitrusting oktober 2015.", "backSpecialWonderconRedText": "Machtige cape", "backSpecialWonderconRedNotes": "Zwiept met kracht en schoonheid. Verleent geen voordelen. Speciale congresuitrusting.", @@ -664,7 +664,7 @@ "headAccessoryMystery201409Notes": "Dit krachtige gewei verkleurt gelijk met de bladeren. Verleent geen voordelen. Abonnee-uitrusting september 2014.", "headAccessoryMystery201502Text": "Gevleugelde gedachten", "headAccessoryMystery201502Notes": "Geef je fantasie de vrije vlucht! Verleent geen voordelen. Abonnee-uitrusting februari 2015.", - "headAccessoryMystery201510Text": "Kobolt hoorns", + "headAccessoryMystery201510Text": "Koboldhoorns", "headAccessoryMystery201510Notes": "Deze angstaanjagende hoorns zijn een beetje slijmerig. Geeft geen voordeel. Abonnee-uitrusting oktober 2015.", "headAccessoryMystery301405Text": "Veiligheidsbril voor op je hoofd", "headAccessoryMystery301405Notes": "\"Veiligheidsbrillen zijn voor je ogen,\" zeiden ze. \"Niemand wil een veiligheidsbril die je alleen maar op je hoofd kunt dragen,\" zeiden ze. Ha! Jij hebt ze laten zien hoe het echt moet! Verleent geen voordelen. Abonnee-uitrusting augustus 3015.", diff --git a/common/locales/nl/generic.json b/common/locales/nl/generic.json index 3980e073df..323b2c95b2 100644 --- a/common/locales/nl/generic.json +++ b/common/locales/nl/generic.json @@ -28,7 +28,7 @@ "market": "Markt", "subscriberItem": "Verrassingsartikel", "newSubscriberItem": "Nieuw verrassingsartikel", - "subscriberItemText": "Each month, subscribers will receive a mystery item. This is usually released about one week before the end of the month. See the wiki's 'Mystery Item' page for more information.", + "subscriberItemText": "Elke maand ontvangen abonnees een verrassingsvoorwerp. Dit voorwerp wordt meestal in de laatste week van de maand uitgebracht. Zie de wiki pagina 'Mystery Item' voor meer informatie.", "all": "Alle", "none": "Geen", "or": "Of", @@ -79,7 +79,7 @@ "errorUpCase": "FOUT:", "newPassSent": "Nieuw wachtwoord verstuurd.", "serverUnreach": "Server momenteel niet bereikbaar.", - "requestError": "Yikes, an error occurred! Please reload the page, your last action may not have been saved correctly.", + "requestError": "Oei, er deed zich een fout voor! Herlaad alsjeblieft de pagina, je laatste handelingen zijn misschien niet goed opgeslagen.", "seeConsole": "Als de fout blijft optreden, geef dat dan door via Help > Fout melden. Als je de console van je browser kunt vinden, geef dan alsjeblieft de foutmeldingen mee door.", "error": "Fout", "menu": "Menu", diff --git a/common/locales/nl/messages.json b/common/locales/nl/messages.json index 5bada79094..f46ea7e70d 100644 --- a/common/locales/nl/messages.json +++ b/common/locales/nl/messages.json @@ -31,19 +31,25 @@ "armoireEquipment": "<%= image %> Je hebt een zeldzaam uitrustingsstuk gevonden in het kabinet: <%= dropText %>! Super!", "armoireFood": "<%= image %> Je rommelt wat in het kabinet en vindt <%= dropText %>. Hoe komt dat nou hier?", "armoireExp": "Je worstelt met het kabinet en krijgt er ervaringspunten bij. Daar met je!", - "messageInsufficientGems": "Not enough gems!", - "messageAuthPasswordMustMatch": ":password and :confirmPassword don't match", + "messageInsufficientGems": "Niet genoeg edelstenen!", + "messageAuthPasswordMustMatch": ":password en :confirmPassword komen niet overeen", "messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required", - "messageAuthUsernameTaken": "Username already taken", - "messageAuthEmailTaken": "Email already taken", - "messageAuthNoUserFound": "No user found.", - "messageAuthMustBeLoggedIn": "You must be logged in.", - "messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request", - "messageGroupNotFound": "Group not found or you don't have access.", - "messageGroupAlreadyInParty": "Already in a party, try refreshing.", - "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", - "messageGroupRequiresInvite": "Can't join a group you're not invited to.", - "messageGroupCannotRemoveSelf": "You cannot remove yourself!", - "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", - "messageUserOperationNotFound": "<%= operation %> operation not found" + "messageAuthUsernameTaken": "Gebruikersnaam reeds in rebruik", + "messageAuthEmailTaken": "E-mailadres al in gebruik", + "messageAuthNoUserFound": "Geen gebruiker gevonden.", + "messageAuthMustBeLoggedIn": "Je moet ingelogd zijn.", + "messageAuthMustIncludeTokens": "Je moet een token en gid (gebruikers-ID) bijvoegen in je verzoek", + "messageGroupNotFound": "Groep niet gevonden of je hebt geen toegang.", + "messageGroupAlreadyInParty": "Zit al in een groep, probeer te verversen.", + "messageGroupOnlyLeaderCanUpdate": "Alleen de groepsleider kan de groep updaten!", + "messageGroupRequiresInvite": "Je kunt je niet aansluiten bij een groep waar je niet voor bent uitgenodigd.", + "messageGroupCannotRemoveSelf": "Je kunt jezelf niet verwijderen!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", + "messageUserOperationProtected": "path `<%= operation %>` is niet opgeslagen, omdat het een beschermd path is.", + "messageUserOperationNotFound": "<%= operation %> operatie niet gevonden" } \ No newline at end of file diff --git a/common/locales/nl/npc.json b/common/locales/nl/npc.json index 2e4461421e..43346d3f44 100644 --- a/common/locales/nl/npc.json +++ b/common/locales/nl/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Oh... Als je meedoet aan een queeste met een eindbaas, zal de eindbaas je nog steeds pijn doen voor de gemiste dagelijkse taken van je groepsgenoten... Je zult zelf ook geen schade toebrengen aan de eindbaas (of voorwerpen krijgen) totdat je de Herberg verlaat...", "alexander": "Alexander de Koopman", "welcomeMarket": "Welkom op de markt! Koop zeldzame eieren en drankjes! Verkoop je overschot! Gebruik nuttige diensten! Kom langs en bekijk zelf wat we voor je hebben.", - "sellForGold": "Verkoop <%= item %> voor <%= gold %> goud", - "sellEggForGold": "Verkoop <%= itemType %> ei voor <%= gold %> goud", - "sellPotionForGold": "Verkoop <%= itemType %> toverdrank voor <%= gold %> goud", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Koop edelstenen", "justin": "Justin", "ian": "Ian", diff --git a/common/locales/nl/rebirth.json b/common/locales/nl/rebirth.json index 312e8bcdd1..850bd4399a 100644 --- a/common/locales/nl/rebirth.json +++ b/common/locales/nl/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "Je kunt ook een prestatie verdienen voor het beginnen van een nieuw avontuur!", "beReborn": "Herboren worden", "rebirthAchievement": "Je bent een nieuw avontuur begonnen! Dit is hergeboorte <%= number %> voor jou, en het hoogste niveau dat je behaald hebt is <%= level %>. Begin je volgende nieuwe avontuur als je een nog hoger niveau hebt bereikt om deze prestatie nog een keer te behalen!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Is een nieuw avontuur begonnen", "rebirthText": "Is <%= rebirths %> nieuwe avonturen begonnen", "rebirthOrb": "Heeft een Bol der Hergeboorte gebruikt om opnieuw te beginnen na het bereiken van niveau", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "Begin een nieuw personage vanaf niveau 1 terwijl je je prestaties, verzamelobjecten en taken met hun geschiedenis behoudt.", "rebirthName": "Bol der Hergeboorte", "reborn": "Herboren, maximale niveau <%= reLevel %>" diff --git a/common/locales/pl/backgrounds.json b/common/locales/pl/backgrounds.json index bae98b7fb8..18cf2c4be0 100644 --- a/common/locales/pl/backgrounds.json +++ b/common/locales/pl/backgrounds.json @@ -100,18 +100,18 @@ "backgroundSunkenShipNotes": "Badaj zatopiony statek.", "backgrounds082015": "ZESTAW 15: Opublikowany w sierpniu 2015", "backgroundPyramidsText": "Piramidy", - "backgroundPyramidsNotes": "Podziwiaj piramidy", + "backgroundPyramidsNotes": "Podziwiaj piramidy.", "backgroundSunsetSavannahText": "Sawanna Zachodzącego Słońca", - "backgroundSunsetSavannahNotes": "Buszuj po Sawannie Zachodzącego Słońca", + "backgroundSunsetSavannahNotes": "Buszuj po Sawannie Zachodzącego Słońca.", "backgroundTwinklyPartyLightsText": "Migotliwe imprezowe światełka", "backgroundTwinklyPartyLightsNotes": "Tańcz w blasku migotliwych imprezowych światełek!", "backgrounds092015": "ZESTAW 16: Opublikowany we Wrześniu 2015", - "backgroundMarketText": "Targowisko Habitici", - "backgroundMarketNotes": "Stragan na Targowisku Habitici.", - "backgroundStableText": "Stajnia Habitici", - "backgroundStableNotes": "Namiot wierzchowców w Stajni Habitici.", - "backgroundTavernText": "Karczma Habitici", - "backgroundTavernNotes": "Odwiedź Karczmę Habitici.", + "backgroundMarketText": "Targowisko Habitiki", + "backgroundMarketNotes": "Stragan na Targowisku Habitiki.", + "backgroundStableText": "Stajnia Habitiki", + "backgroundStableNotes": "Namiot wierzchowców w Stajni Habitiki.", + "backgroundTavernText": "Karczma Habitiki", + "backgroundTavernNotes": "Odwiedź Karczmę Habitiki.", "backgrounds102015": "ZESTAW 17: Opublikowany w październiku 2015", "backgroundHarvestMoonText": "Dożynkowy Księżyc", "backgroundHarvestMoonNotes": "Rechocz w świetle Dożynkowego Księżyca.", diff --git a/common/locales/pl/character.json b/common/locales/pl/character.json index ad73acb7d5..113c0dc6ba 100644 --- a/common/locales/pl/character.json +++ b/common/locales/pl/character.json @@ -52,7 +52,7 @@ "classEquipBonus": "Premia klasowa", "battleGear": "Wyposażenie bojowe", "battleGearText": "Z tym wyposażeniem ruszasz do boju. Ma ono wpływ na punkty podczas interakcji z zadaniami.", - "autoEquipBattleGear": "Auto-equip new gear", + "autoEquipBattleGear": "Automatycznie załóż nowe wyposażenie", "costume": "Kostium", "costumeText": "Jeśli podoba Ci się inny strój, niż ten, w którym chcesz walczyć, zaznacz \"Załóż kostium\". Odziana w kostium, Twoja postać będzie nadal miała pod spodem wybrany strój bojowy.", "useCostume": "Załóż kostium", @@ -78,7 +78,7 @@ "allocatePerPop": "Dodaj punkt do Percepcji", "allocateInt": "Punkty przydzielone do Inteligencji:", "allocateIntPop": "Dodaj punkt do Inteligencji", - "noMoreAllocate": "Teraz gdy osiągniesz poziom 100, nie będziesz już zyskiwać punktów atrybutów. Możesz dalej podnosić poziom lub zacząć przygodę nową od poziomu 1 używając Kuli Odrodzenia, dostępnej teraz za darmo na Targu.", + "noMoreAllocate": "Teraz, gdy osiągnąłeś poziom 100, nie będziesz już zyskiwać punktów atrybutów. Możesz dalej podnosić poziom lub zacząć przygodę nową od poziomu 1 używając Kuli Odrodzenia, dostępnej teraz za darmo na Targu.", "stats": "Statystyki", "strength": "Siła", "strengthText": "Siła zwiększa szansę na losowe \"trafienia krytyczne\", a także wpływa na ilość otrzymanego za nie Złota, Doświadczenia i prawdopodobieństwa łupów. Pomaga także zadawać obrażenia bossom.", diff --git a/common/locales/pl/communityguidelines.json b/common/locales/pl/communityguidelines.json index 270c9ed255..c35021d075 100644 --- a/common/locales/pl/communityguidelines.json +++ b/common/locales/pl/communityguidelines.json @@ -61,10 +61,10 @@ "commGuideHeadingTrello": "Tablice Trello", "commGuidePara040": "Trello służy jako otwarte forum przeznaczone do dzielenia się sugestiami i prowadzenia dyskusji na temat funkcji strony. Habitiką zarządzają ludzie poprzez różnego rodzaju wkład - wszyscy razem budujemy tę stronę. Trello to system, który nadaje temu szaleństwu metodę. Przez wzgląd na dobro strony starajcie się streszczać swoje myśli w pojedynczych komentarzach, zamiast pisać parę razy z rzędu na tej samej karcie. Jeśli wpadniecie na coś nowego, nie krępujcie się edytować Waszych starych komentarzy. Prosimy, miejcie litość nad tymi z nas, którzy otrzymują powiadomienie za każdym razem, gdy ktoś doda nowy komentarz. Wytrzymałość naszych skrzynek odbiorczych ma swoje granice.", "commGuidePara041": "Habitica używa na Trello pięciu różnych tablic:", - "commGuideList03A": "Main Board (Tablica Główna) koncentruje się na nowych funkcjach HabitRPG. Można na nią wpisywać prośby ich dotyczące oraz głosować w ankietach.", + "commGuideList03A": "Main Board (Tablica Główna) koncentruje się na nowych funkcjach Habitiki. Można na nią wpisywać prośby ich dotyczące oraz głosować w ankietach.", "commGuideList03B": "Mobile Board (Tablica Urządzeń Przenośnych) to miejsce poświęcone funkcjom aplikacji mobilnych. Tutaj przedstawiamy własne pomysły dotyczące tych funkcji i głosujemy na cudze.", - "commGuideList03C": "Pixel Art Board (Tablica Grafiki Pikselowej) to miejsce na dyskusje o grafice pikselowej i umieszczanie własnych prac wykonanych tą techniką dla HabitRPG.", - "commGuideList03D": "Quest Board (Tablica Misji) służy opracowywaniu nowych misji.", + "commGuideList03C": "Pixel Art Board (Tablica Grafiki Pikselowej) to miejsce na dyskusje o grafice pikselowej i umieszczanie własnych prac wykonanych tą techniką dla Habitiki.", + "commGuideList03D": "Quest Board (Tablica Misji) to miejsce do zgłaszania i dyskusji na temat nowych misji.", "commGuideList03E": "Na Wiki Board (Tablica Wiki) wysuwamy propozycje dotyczące zarówno ulepszeń istniejących stron naszej wiki jak i napisania nowych artykułów. ", "commGuidePara042": "Wszystkie mają precyzyjne reguły, a zasady Przestrzeni Publicznych nadal obowiązują. Użytkownicy powinni unikać zbaczania z tematu na tablicach i kartach. Uwierzcie, tablice i bez tego są przepełnione. Przedłużające się dyskusje powinny być przenoszone do Gildii na Zapleczu.", "commGuideHeadingGitHub": "GitHub", diff --git a/common/locales/pl/content.json b/common/locales/pl/content.json index 9045a42dc6..0dea37e75a 100644 --- a/common/locales/pl/content.json +++ b/common/locales/pl/content.json @@ -13,7 +13,7 @@ "dropEggTigerCubAdjective": "dziki", "dropEggPandaCubText": "mała panda", "dropEggPandaCubMountText": "panda", - "dropEggPandaCubAdjective": "łagodny", + "dropEggPandaCubAdjective": "łagodna", "dropEggLionCubText": "lwiątko", "dropEggLionCubMountText": "lew", "dropEggLionCubAdjective": "królewski", @@ -49,7 +49,7 @@ "questEggRatAdjective": "brudny", "questEggOctopusText": "ośmiornica", "questEggOctopusMountText": "Ośmiornica", - "questEggOctopusAdjective": "śliski", + "questEggOctopusAdjective": "śliska", "questEggSeahorseText": "konik morski", "questEggSeahorseMountText": "Konik morski", "questEggSeahorseAdjective": "cenny", @@ -64,28 +64,28 @@ "questEggSpiderAdjective": "pełzający", "questEggOwlText": "sowa", "questEggOwlMountText": "Sowa", - "questEggOwlAdjective": "mądry", + "questEggOwlAdjective": "mądra", "questEggPenguinText": "Pingwin", "questEggPenguinMountText": "Pingwin", "questEggPenguinAdjective": "przenikliwy", "questEggTRexText": "tyranozaur", - "questEggTRexMountText": "tyranozaur", + "questEggTRexMountText": "Tyranozaur", "questEggTRexAdjective": "krótkołapy", "questEggRockText": "kamień", - "questEggRockMountText": "kamień", + "questEggRockMountText": "Kamień", "questEggRockAdjective": "ruchliwy", "questEggBunnyText": "króliczek", - "questEggBunnyMountText": "króliczek", + "questEggBunnyMountText": "Króliczek", "questEggBunnyAdjective": "przytulaśny", "questEggSlimeText": "piankowy śluz", - "questEggSlimeMountText": "piankowy śluz", + "questEggSlimeMountText": "Piankowy Śluz", "questEggSlimeAdjective": "słodki", "questEggSheepText": "owca", "questEggSheepMountText": "Owca", "questEggSheepAdjective": "wełnista", "questEggCuttlefishText": "mątwa", - "questEggCuttlefishMountText": "mątwa", - "questEggCuttlefishAdjective": "przytulaśny", + "questEggCuttlefishMountText": "Mątwa", + "questEggCuttlefishAdjective": "milusia", "questEggWhaleText": "wieloryb", "questEggWhaleMountText": "Wieloryb", "questEggWhaleAdjective": "pluskający", @@ -98,7 +98,7 @@ "questEggFrogText": "Żaba", "questEggFrogMountText": "Żaba", "questEggFrogAdjective": "książęca", - "eggNotes": "Znajdź eliksir wyklucia i oblej nim to jajo, a wykluje się z niego <%= eggAdjective(locale) %> <%= eggText(locale) %>. ", + "eggNotes": "Znajdź eliksir wyklucia i wylej go na to jajo, a wykluje się z niego <%= eggAdjective(locale) %> <%= eggText(locale) %>. ", "hatchingPotionBase": "Zwyczajny", "hatchingPotionWhite": "Biały", "hatchingPotionDesert": "Pustynny", diff --git a/common/locales/pl/death.json b/common/locales/pl/death.json index 5ac8402cb9..be8404013b 100644 --- a/common/locales/pl/death.json +++ b/common/locales/pl/death.json @@ -1,13 +1,13 @@ { - "lostAllHealth": "Kończą ci się punkty zdrowia!", + "lostAllHealth": "Skończyły ci się punkty zdrowia!", "dontDespair": "Nie rozpaczaj!", "deathPenaltyDetails": "Tracisz poziom, złoto i część wyposażenia, ale możesz to wszystko odzyskać przykładając się do pracy. Powodzenia, na pewno dasz radę! ", "refillHealthTryAgain": "Uzupełnij punkty zdrowia i spróbuj jeszcze raz", "dyingOftenTips": "Czy to się często zdarza? Tutaj znajdziesz pewne wskazówki!", "losingHealthWarning": "Ostrożnie - tracisz zdrowie!", - "losingHealthWarning2": "Nie pozwól swojemu zdrowiu spaść do zera! Jeśli to się stanie, to stracisz poziom, złoto i element wyposażenia.", + "losingHealthWarning2": "Nie pozwól swojemu zdrowiu spaść do zera! Jeśli się to stanie, stracisz poziom, złoto i element wyposażenia.", "toRegainHealth": "By odzyskać zdrowie:", - "lowHealthTips1": "Zdobądź poziom, by odzyskać zdrowie!", + "lowHealthTips1": "Zdobądź poziom, by odzyskać pełne zdrowie!", "lowHealthTips2": "Kup Eliksir uzdrawiający z kolumny Nagrody, by przywrócić 15 punktów zdrowia.", "losingHealthQuickly": "Szybko tracisz zdrowie?", "lowHealthTips3": "Niewykonane Codzienne ranią ciebie w nocy, więc uważaj, by na początku nie dodać ich zbyt dużo!", diff --git a/common/locales/pl/defaulttasks.json b/common/locales/pl/defaulttasks.json index 98b429be9c..e689a434c5 100644 --- a/common/locales/pl/defaulttasks.json +++ b/common/locales/pl/defaulttasks.json @@ -1,7 +1,7 @@ { "defaultHabit1Text": "Produktywna praca (kliknij ołówek aby edytować)", "defaultHabit1Notes": "Przykładowe dobre nawyki: + Zjedz warzywo + 15 minut produktywnej pracy", - "defaultHabit2Text": "Jedz śmiecowe jedzenie (kliknij ołówek aby edytować)", + "defaultHabit2Text": "Jedz śmieciowe jedzenie (kliknij ołówek aby edytować)", "defaultHabit2Notes": "Przykładowe złe Nawyki: - Palenie - Odkładanie na później", "defaultHabit3Text": "Wybierz schody/windę (kliknij ołówek aby edytować)", "defaultHabit3Notes": "Przykładowe dobre i złe Nawyki: +/- Użyj schodów/windy ; +/- Wypij wodę/napój gazowany", diff --git a/common/locales/pl/faq.json b/common/locales/pl/faq.json index 9d04250de7..9357e96cb2 100644 --- a/common/locales/pl/faq.json +++ b/common/locales/pl/faq.json @@ -16,8 +16,8 @@ "iosFaqAnswer4": "Jest kilka rzeczy, które mogą zadać ci obrażenia. Po pierwsze, jeśli nie wypełnisz Codziennego zadania do końca dnia. Po drugie, jeśli poddasz się złemu Nawykowi. Po trzecie, jeśli walczysz z bossem w swojej drużynie i jeden z jej członków nie wypełnił swojego Codziennego, wtedy boss cię zaatakuje.\n\nGłównym sposobem leczenia się jest zdobycie poziomu, co przywraca całe zdrowie. Możesz też zapłacić złotem za eliksir zdrowia z kolumny Nagrody. Poza tym, od poziomu 10. wzwyż, możesz stać się Uzdrowicielem, a wtedy nauczysz się leczenia. Jeśli masz w drużynie Uzdrowiciela, też może cię wyleczyć.", "webFaqAnswer4": "Jest kilka rzeczy, które mogą zadać ci obrażenia. Po pierwsze, jeśli nie wypełnisz Codziennego zadania do końca dnia. Po drugie, jeśli poddasz się złemu Nawykowi. Po trzecie, jeśli walczysz z bossem w swojej drużynie i jeden z jej członków nie wypełnił swojego Codziennego, wtedy boss cię zaatakuje.\n

\nGłównym sposobem leczenia się jest zdobycie poziomu, co przywraca całe zdrowie. Możesz też zapłacić złotem za eliksir zdrowia z kolumny Nagrody. Poza tym, od poziomu 10. wzwyż, możesz stać się Uzdrowicielem, a wtedy nauczysz się leczenia. Jeśli masz w drużynie (Społeczność > Drużyna) Uzdrowiciela, też może cię wyleczyć.", "faqQuestion5": "Jak grać w Habiticę z moimi przyjaciółmi?", - "iosFaqAnswer5": "The best way is to invite them to a Party with you, via the [website](https://habitica.com/#/options/groups/party)! We'll add the ability to create a Party from this app soon, but in the meantime you can use the [website](https://habitica.com/#/options/groups/party). Parties can go on quests, battle monsters, and cast skills to support each other. On the website, you and your friends can also join Guilds, which are public chat rooms. Guilds will be added to the app in a future update!", - "webFaqAnswer5": "The best way is to invite them to a party with you, under Social > Party! Parties can go on quests, battle monsters, and cast skills to support each other. You can also join guilds together (Social > Guilds). Guilds are chat rooms focusing on a shared interest or the pursuit of a common goal, and can be public or private. You can join as many guilds as you'd like, but only one party.\n

\n For more detailed info, check out the wiki pages on [Parties](http://habitrpg.wikia.com/wiki/Party) and [Guilds](http://habitrpg.wikia.com/wiki/Guilds).", + "iosFaqAnswer5": "Najlepszy sposób to zaproszenie ich do twojej drużyny, przez [stronę internetową] (https://habitica.com/#/options/groups/party)! Wkrótce dodamy możliwość utworzenia drużyny w tej aplikacji, ale w międzyczasie możesz użyć [strony] (https://habitica.com/#/options/groups/party). W drużynie można wypełniać misje, walczyć z potwoerami i używać umiejętności aby wzajemnie się wspierać. Na stronie ty i twoi przyjaciele możecie też dołączyć do gildii, czyli publicznych czatów. Gildie zostaną dodane w aplikacji w przyszłej aktualizacji.", + "webFaqAnswer5": "Najlepszy sposób to zaproszenie ich do Twojej drużyny, przez Społeczność > Drużyna! W drużynie można wypełniać misje, walczyć z potworami i używać umiejętności aby wspierać się wzajemnie. Możecie również razem dołączyć do gildii (Społeczność > Gildie). Gildie są publicznymi czatami, poświęconymi wspólnym zainteresowaniom lub celom i mogą być publiczne lub prywatne. Możesz dołączyć do dowolnej liczby gildii, ale tylko do jednej drużyny. \n

\nAby uzyskac szczegółowe informacje, zajrzyj na strony wiki: [Drużyny](http://habitrpg.wikia.com/wiki/Party) i [Gildie](http://habitrpg.wikia.com/wiki/Guilds).", "faqQuestion6": "Jak zdobyć chowańca albo wierzchowca?", "iosFaqAnswer6": "At level 3, you will unlock the Drop System. Every time you complete a task, you'll have a random chance at receiving an egg, a hatching potion, or a piece of food. They will be stored in Menu > Items.\n\n To hatch a Pet, you'll need an egg and a hatching potion. Tap on the egg to determine the species you want to hatch, and select \"Hatch Egg.\" Then choose a hatching potion to determine its color! Go to Menu > Pets to equip your new Pet to your avatar by clicking on it. \n\n You can also grow your Pets into Mounts by feeding them under Menu > Pets. Tap on a Pet, and then select \"Feed Pet\"! You'll have to feed a pet many times before it becomes a Mount, but if you can figure out its favorite food, it will grow more quickly. Use trial and error, or [see the spoilers here](http://habitica.wikia.com/wiki/Food#Food_Preferences). Once you have a Mount, go to Menu > Mounts and tap on it to equip it to your avatar.\n\n You can also get eggs for Quest Pets by completing certain Quests. (See below to learn more about Quests.)", "webFaqAnswer6": "At level 3, you will unlock the Drop System. Every time you complete a task, you'll have a random chance at receiving an egg, a hatching potion, or a piece of food. They will be stored in Inventory > Market.\n

\n To hatch a Pet, you'll need an egg and a hatching potion. Click on the egg to determine the species you want to hatch, and then click on the hatching potion to determine its color! Go to Inventory > Pets to equip it to your avatar by clicking on it.\n

\n You can also grow your Pets into Mounts by feeding them under Inventory > Pets. Click on a Pet, and then click on a piece of food from the right-hand menu to feed it! You'll have to feed a pet many times before it becomes a Mount, but if you can figure out its favorite food, it will grow more quickly. Use trial and error, or [see the spoilers here](http://habitica.wikia.com/wiki/Food#Food_Preferences). Once you have a Mount, go to Inventory > Mounts and click on it to equip it to your avatar.\n

\n You can also get eggs for Quest Pets by completing certain Quests. (See below to learn more about Quests.)", diff --git a/common/locales/pl/front.json b/common/locales/pl/front.json index aa89fb249a..1b38fc8cf5 100644 --- a/common/locales/pl/front.json +++ b/common/locales/pl/front.json @@ -68,7 +68,7 @@ "healthSample1": "Wybierz zwykłą wodę/napój gazowany", "healthSample2": "Żuj gumę/pal papierosy", "healthSample3": "Wejdź schodami/pojedź windą", - "healthSample4": "Zjedz zdrowe/szkodliwe jedzenie", + "healthSample4": "Zjedz zdrowe/śmieciowe jedzenie", "healthSample5": "Przelewaj pot przez 1 godz.", "history": "Historia", "infhQuote": "[Habitica] naprawdę pomogła mi poukładać sobie życie na studiach.", diff --git a/common/locales/pl/gear.json b/common/locales/pl/gear.json index 4d39a1ed1a..597b4ecb21 100644 --- a/common/locales/pl/gear.json +++ b/common/locales/pl/gear.json @@ -133,7 +133,7 @@ "weaponSpecialFall2015MageText": "Zaczarowana Nić", "weaponSpecialFall2015MageNotes": "Potężna Wiedźma Szwaczka nawet nie potrzebuje dotykać tej zaczarowanej nici, aby ją kontrolować! Zwiększa Inteligencję o <%= int %> i Percepcję o <%= per %>. Edycja Limitowana Jesień 2015.", "weaponSpecialFall2015HealerText": "Eliksir z mułu bagiennego", - "weaponSpecialFall2015HealerNotes": "Doskonale uwarzony! Teraz musisz tylko przekonać się do wypicia go. Ponosi Inteligencję o <%= int %>. Limitowana edycja jesiennego wyposażenia 2015.", + "weaponSpecialFall2015HealerNotes": "Doskonale uwarzony! Teraz musisz tylko przekonać się do wypicia go. Ponosi Inteligencję o <%= int %>. Edycja Limitowana Jesień 2015.", "weaponMystery201411Text": "Widły Ucztowania", "weaponMystery201411Notes": "Dźgaj swoich wrogów lub rzuć się na ulubione potrawy - te wielofunkcyjne widły nadają się do wszystkiego! Brak dodatkowych korzyści. Przedmiot Abonencki Listopad 2014.", "weaponMystery201502Text": "Lśniąca Skrzydlata Laska Miłości oraz Prawdy", @@ -141,7 +141,7 @@ "weaponMystery201505Text": "Lanca zielonego rycerza", "weaponMystery201505Notes": "Ta zielona i srebrna lanca zdjęła z siodeł ich wierzchowców wielu przeciwników. Brak dodatkowych korzyści. Przedmiot Abonencki Maj 2015.", "weaponMystery301404Text": "Steampunkowa laska", - "weaponMystery301404Notes": "Doskonały na przejażdżkę po mieście. Przedmiot Abonencki Marzec 3015. Brak dodatkowych korzyści.", + "weaponMystery301404Notes": "Doskonała na wycieczkę po mieście. Przedmiot Abonencki Marzec 3015. Brak dodatkowych korzyści.", "weaponArmoireBasicCrossbowText": "Zwyczajna kusza", "weaponArmoireBasicCrossbowNotes": "Ta kusza potrafi przebić pancerz zadania z bardzo daleka! Zwiększa Siłę o <%= str %>, Percepcję o <%= per %> i Kondycję o <%= con %>. Zaczarowana szafa: przedmiot niezależny.", "weaponArmoireLunarSceptreText": "Księżycowe Kojące Berło", diff --git a/common/locales/pl/groups.json b/common/locales/pl/groups.json index da8ce2d639..7fb3d2b115 100644 --- a/common/locales/pl/groups.json +++ b/common/locales/pl/groups.json @@ -13,7 +13,7 @@ "community": "Forum społeczności", "dataTool": "Narzędzie podglądu danych", "resources": "Zasoby", - "askQuestionNewbiesGuild": "Zadaj pytanie (Gildia Nowicjuszy)", + "askQuestionNewbiesGuild": "Zadaj pytanie (Gildia Świeżaków)", "tavernTalk": "Pogaduszki w Karczmie", "tavernAlert1": "Uwaga: nie zgłaszaj tu błędów w grze, bo Twórcy nie zauważą Twojego wpisu. Zgłoś błędy", "tavernAlert2": "w zamian użyj GitHuba", diff --git a/common/locales/pl/messages.json b/common/locales/pl/messages.json index 512bbc9c55..c8008870c7 100644 --- a/common/locales/pl/messages.json +++ b/common/locales/pl/messages.json @@ -44,6 +44,12 @@ "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", "messageGroupRequiresInvite": "Can't join a group you're not invited to.", "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" } \ No newline at end of file diff --git a/common/locales/pl/npc.json b/common/locales/pl/npc.json index af532c2eba..11c6ea8565 100644 --- a/common/locales/pl/npc.json +++ b/common/locales/pl/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Aha... Jeśli uczestniczysz w walce z bossem, wciąż może on zadać ci obrażenia, jeśli członkowie twojej drużyny ominą Codzienne... Twoje obrażenia dla bossa (lub zebrane przedmioty) też nie zostaną zaaplikowane, dopóki nie zakończysz odpoczynku w gospodzie...", "alexander": "Handlarz Aleksander", "welcomeMarket": "Witaj na Targu! Tu kupisz rzadkie jaja oraz eliksiry! Sprzedasz nadmiar towaru! Zamówisz usługi! Zobacz, co dla Ciebie mamy.", - "sellForGold": "Sprzedaj <%= item %> za <%= gold %> Złota", - "sellEggForGold": "Sprzedaj <%= itemType %> jajo za <%= gold %> złota", - "sellPotionForGold": "Sprzedaj <%= itemType %> eliksir za <%= gold %> złota", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Kup Klejnoty", "justin": "Justin", "ian": "Ian", @@ -45,22 +46,22 @@ "tourExp": "Świetna robota! Odhaczanie zadań daje Ci doświadczenie i złoto.", "tourDailies": "Ta kolumna jest dla zadań Codziennych. Aby kontynuować, wprowadź zadanie, które powinieneś robić każdego dnia! Przykładowe Codzienne: Pościel łóżko, Umyj zęby, Sprawdź służbowego e-maila", "tourCron": "Wspaniale! Twoje Codzienne zadania będą resetowane codziennie.", - "tourHP": "Uważaj! Jeśli nie dokończysz Codziennego Zadania do północy odniesiesz szkodę!", + "tourHP": "Uważaj! Jeśli nie zakończysz Codziennego Zadania do północy odniesiesz szkodę!", "tourHabits": "Ta kolumna jest dla dobrych i złych Nawyków, które możesz robić wiele razy dziennie. Aby kontynuować, kliknij na ołówek w celu edycji nazwy, a następnie kliknij na ptaszka w celu zapisania.", "tourStats": "Dobre nawyki dodają Doświadczenia i Złota. Złe nawyki zabierają Życie.", "tourGP": "Aby kontynuować kup Miecz treningowy za właśnie zarobione złoto!", "tourAvatar": "Dostosuj swój awatar", "tourScrollDown": "Zobacz całą stronę aby upewnić się, że widziałeś wszystkie opcje! Kliknij ponownie na swój awatar aby wrócić do strony zadań.", "tourMuchMore": "Gdy zakończysz zadania, możesz wraz z przyjaciółmi stworzyć Drużynę, czatować o wspólnych zainteresowaniach w Gildiach, dołączyć do Wyzwań i więcej!", - "tourStatsPage": "To jest twoja strona Statystyki! Zdobądź osiągnięcia wykonując wymienione zadania.", + "tourStatsPage": "To jest strona z twoimi Statystykami! Zdobywaj osiągnięcia wykonując wymienione zadania.", "tourTavernPage": "Witaj w Karczmie, wielowiekowym czacie! W przypadku choroby lub podróży możesz tutaj powstrzymać swoje Codzienne od zadawania ci obrażeń klikając \"Odpoczywaj w Gospodzie\". Przywitaj się!", "tourPartyPage": "Twoja drużyna pomoże Ci zostać odpowiedzialnym. Zaproś przyjaciół aby odblokować zwój misji!", - "tourGuildsPage": "Gildie są grupami czatowymi zrzeszającymi graczy o wspólnych zainteresowaniach. Tworzone są przez graczy i dla graczy. Przeszukaj listę i dołącz do Gildii, które Cię interesują. Zajrzyj do popularnej Newbies Guild (Gildii Nowicjuszy), gdzie wszyscy mogą zadawać pytania dotyczące Habitiki!", + "tourGuildsPage": "Gildie są grupami czatowymi zrzeszającymi graczy o wspólnych zainteresowaniach. Tworzone są przez graczy i dla graczy. Przeszukaj listę i dołącz do Gildii, które Cię interesują. Zajrzyj do popularnej Newbies Guild (Gildii Świeżaków), gdzie wszyscy mogą zadawać pytania dotyczące Habitiki!", "tourChallengesPage": "Wyzwania są tematycznymi listami zadań utworzonymi przez użytkowników! Dołączenie do wyzwania spowoduje dodanie jego zadań do Twojego konta. Rywalizuj z innymi i wygrywaj klejnoty!", - "tourMarketPage": "Od poziomu 4, jaja i eliksiry wyklucia zdobywasz losowo po ukończeniu zadań. Pojawiają się one tutaj - użyj ich, a wyklują się chowańce! Możesz także kupować przedmioty na Targu.", + "tourMarketPage": "Od poziomu 3, jaja i eliksiry wyklucia zdobywasz losowo po ukończeniu zadań. Pojawiają się one tutaj - użyj ich, a wyklują się chowańce! Możesz także kupować przedmioty na Targu.", "tourHallPage": "Witaj w Galerii Bohaterów, gdzie honorujemy wolontariuszy pracujących na rzecz Habitiki. Współtworzyli kod, obrazy, muzykę, pisali teksty albo byli po prostu pomocni, za co otrzymali klejnoty, wyjątkowe wyposażenie i prestiżowe tytuły. Ty także możesz dać Habitice coś od siebie!", - "tourPetsPage": "Oto i stajnia! Po uzyskaniu 4 poziomu można, przy użyciu jaj i eliksirów, wykluwać chowańce. Chowaniec wykluty na targu pojawi się tutaj! Kliknij na obrazku przedstawiającym chowańca, aby dołączył do Twojego awatara. Racz chowańce karmą, która będzie dostępna od poziomu 4, a wyrosną na potężne wierzchowce.", - "tourMountsPage": "Kiedy ofiarujesz chowańcowi wystarczającą ilość karmy, by zmienił się w wierzchowca, pojawi się tutaj. (Chowańce, wierzchowce i karmę odblokowuje uzyskanie poziomu 4.) Kliknij na wierzchowcu, aby go osiodłać!", + "tourPetsPage": "Oto i stajnia! Po uzyskaniu 3 poziomu można, przy użyciu jaj i eliksirów, wykluwać chowańce. Chowaniec wykluty na targu pojawi się tutaj! Kliknij na obrazku przedstawiającym chowańca, aby dołączył do Twojego awatara. Racz chowańce karmą, która będzie dostępna od poziomu 3, a wyrosną na potężne wierzchowce.", + "tourMountsPage": "Kiedy ofiarujesz chowańcowi wystarczającą ilość karmy, by zmienił się w wierzchowca, pojawi się tutaj. (Chowańce, wierzchowce i karmę odblokowuje uzyskanie poziomu 3.) Kliknij na wierzchowcu, aby go osiodłać!", "tourEquipmentPage": "Tutaj znajduje się Twoje wyposażenie! Twój rynsztunek wpływa na statystyki. Jeśli chcesz, by Twój awatar posiadał inny rynsztunek bez zmiany statystyk, kliknij \"Dostosuj strój\".", "tourOkay": "Oki!", "tourAwesome": "Świetnie!", @@ -78,9 +79,9 @@ "welcome1": "Stwórz podstawowy awatar.", "welcome1notes": "Ten awatar będzie reprezentował Cię w trakcie Twojego rozwoju.", "welcome2": "Ustaw swoje zadania.", - "welcome2notes": "Twoja efektywność w prawdziwym życiu równa się Twojej efektywności w grze!", + "welcome2notes": "Twoja efektywność w prawdziwym życiu kontroluje Twoją efektywność w grze!", "welcome3": "Rób postępy w życiu i w grze!", - "welcome3notes": "Gdy będziesz ulepszać swoje życie, twój awatar będzie zyskiwał poziomy i odblokowywał chowańce, misje, wyposażenie i więcej!", + "welcome3notes": "W miarę jak będziesz ulepszać swoje życie, twój awatar będzie zyskiwał poziomy i odblokowywał chowańce, misje, wyposażenie i więcej!", "welcome4": "Unikaj złych nawyków, które wysysają punkty Zdrowia (HP), inaczej Twój awatar umrze!", "welcome5": "Teraz spersonalizujesz swój awatar i ustawisz swoje zadania...", "imReady": "Wejdź do Habitiki" diff --git a/common/locales/pl/pets.json b/common/locales/pl/pets.json index 7dfd80983b..3517225345 100644 --- a/common/locales/pl/pets.json +++ b/common/locales/pl/pets.json @@ -19,7 +19,7 @@ "orca": "Orka", "royalPurpleGryphon": "Purpurowy królewski gryf", "phoenix": "Feniks", - "rarePetPop1": "Kliknij na złotą łapkę, aby dowiedzieć się, jak możesz zdobyć tego rzadkiego chowańca poprzez pomoc w tworzeniu Habitica!", + "rarePetPop1": "Kliknij na złotą łapę, aby dowiedzieć się, jak możesz zdobyć tego rzadkiego chowańca poprzez pomoc w tworzeniu Habitica!", "rarePetPop2": "Jak zdobyć tego Chowańca?", "potion": "Eliksir <%= potionType %>", "egg": "<%= eggType %> jajo", @@ -34,24 +34,24 @@ "foodText": "karma", "food": "Jedzenie i siodła", "noFood": "Nie masz żadnego jedzenia ani siodeł.", - "dropsExplanation": "Zdobądź te przedmioty szybciej przy pomocy Klejnotów jeśli nie chcesz czekać aż wypadną przy ukończeniu zadania. Dowiedz się więcej o systemie zdobywczym", + "dropsExplanation": "Zdobądź te przedmioty szybciej przy pomocy Klejnotów jeśli nie chcesz czekać aż wypadną przy ukończeniu zadania. Dowiedz się więcej o systemie zdobyczy.", "premiumPotionNoDropExplanation": "Magiczne Eliksiry Wyklucia nie mogą zostać użyte na jajach otrzymanych z Misji. Jedynym sposobem na zdobycie Magicznych Eliksirów Wyklucia jest kupienie ich poniżej, nie stanowią losowych zdobyczy.", "beastMasterProgress": "Postęp Władcy chowańców", "stableBeastMasterProgress": "Postęp Władcy chowańców: znaleziono <%= number %> chowańców", "beastAchievement": "Zdobyłeś odznakę \"Władca Chowańców\", gdyż zebrałeś wszystkie możliwe Chowańce!", "beastMasterName": "Władca chowańców", "beastMasterText": "Odnalazł wszystkie 90 chowańców (niesłychanie trudne, pogratuluj tej osobie!).", - "beastMasterText2": "i wypuścił swoje chowańce <%= count %> razy.", + "beastMasterText2": "i wypuścił swoje chowańce <%= count %> razy", "mountMasterProgress": "Postęp Władcy wierzchowców", "stableMountMasterProgress": "Postęp Władcy wierzchowców: oswojono <%= number %> wierzchowców", "mountAchievement": "Zdobyłeś odznakę „Władca wierzchowców\" za oswojenie wszystkich wierzchowców!", "mountMasterName": "Władca wierzchowców", "mountMasterText": "Oswoił wszystkie 90 wierzchowców (to jeszcze trudniejsze, pogratuluj tej osobie!)", - "mountMasterText2": "i wypuścił wszystkie swoje wierzchowce <%= count %> razy.", + "mountMasterText2": "i wypuścił wszystkie swoje wierzchowce <%= count %> razy", "beastMountMasterName": "Władca chowańców i Władca wierzchowców", "triadBingoName": "Potrójne bingo", "triadBingoText": "Odnalazł wszystkie 90 chowańców, wszystkie 90 wierzchowców, a potem JESZCZE RAZ wszystkie 90 chowańców (JAK CI SIĘ TO UDAŁO?!).", - "triadBingoText2": "i wypuścił całą stajnię <%= count %> razy.", + "triadBingoText2": "i wypuścił całą stajnię <%= count %> razy", "triadBingoAchievement": "Zdobyłeś odznakę „Potrójne bingo” za odnalezienie wszystkich chowańców, oswojenie wierzchowców i ponowne odnalezienie wszystkich chowańców!", "dropsEnabled": "Łupy włączone!", "itemDrop": "Znaleziono łup!", diff --git a/common/locales/pl/rebirth.json b/common/locales/pl/rebirth.json index fe85a8236f..94c4514dca 100644 --- a/common/locales/pl/rebirth.json +++ b/common/locales/pl/rebirth.json @@ -2,9 +2,9 @@ "rebirthNew": "Odrodzenie – nowa przygoda czeka!", "rebirthUnlock": "Odblokowałeś opcję odrodzenia! Specjalna Kula, którą możesz kupić na targu, pozwoli Ci rozpocząć grę od nowa na poziomie 1, przy czym zachowasz wszystkie swoje zadania, chowańce, itd. Jeśli masz wrażenie, że wszystko już w tej grze osiągnąłeś, wykorzystaj tę funkcję aby ją odświeżyć. Poczuj się znów jak nowo narodzony!", "rebirthBegin": "Odrodzenie – rozpocznij nową przygodę", - "rebirthStartOver": "Rebirth starts your character over from Level 1.", + "rebirthStartOver": "Po odrodzeniu twoja postać rozpocznie grę na poziomie 1.", "rebirthAdvList1": "Odzyskujesz pełnię zdrowia.", - "rebirthAdvList2": "You have no Experience, Gold, or Equipment (with the exception of free items like Mystery items).", + "rebirthAdvList2": "Nie posiadasz żadnych punktów doświadczenia, złota ani ekwipunku (z pominięciem darmowych przedmiotów takich jak tajemnicze przedmioty).", "rebirthAdvList3": "Twoje Nawyki, Codzienne, oraz Do-Zrobienia zostaną zresetowane do poziomu żółtego, a ich serie wyzerowane.", "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.", @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "Dodatkowo otrzymujesz nowe Osiągnięcie za rozpoczęcie nowej przygody!", "beReborn": "Odródź się.", "rebirthAchievement": "Rozpocząłeś nową przygodę! To Twoje Odrodzenie numer <%= number %>, a najwyższy poziom, jaki udało Ci się osiągnąć, to <%= level %>. Aby powielić to Osiągnięcie, rozpocznij następną przygodę, gdy osiągnąłeś jeszcze wyższy Poziom!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Rozpoczął nową przygodę", "rebirthText": "Rozpoczął <%= rebirths %> nowych przygód.", "rebirthOrb": "Wykorzystał Kulę Odrodzenia aby rozpocząć grę od nowa po osiągnięciu Poziomu", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "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 %>" diff --git a/common/locales/pl/tasks.json b/common/locales/pl/tasks.json index 47201b89d8..7482d46bb2 100644 --- a/common/locales/pl/tasks.json +++ b/common/locales/pl/tasks.json @@ -95,7 +95,7 @@ "habitHelp1": "Dobre nawyki są czynnościami, które wykonujesz często. Dostajesz za to nagrody w postaci złota i punktów doświadczenia za każdym razem, gdy klikniesz <%= plusIcon %>.", "habitHelp2": "Złe nawyki są czynnościami, których należy unikać. Wysysają punkty zdrowia za każdym razem, gdy klikniesz <%= minusIcon %>.", "habitHelp3": "Dla inspiracji sprawdź te przykładowe nawyki!", - "newbieGuild": "Masz jeszcze jakieś pytania? Zadaj je w <%= linkStart %>Gildii Nowicjuszy (Newbies Guild)<%= linkEnd %>!", + "newbieGuild": "Masz jeszcze jakieś pytania? Zadaj je w <%= linkStart %>Gildii Świeżaków (Newbies Guild)<%= linkEnd %>!", "dailyHelp1": "Zadania codzienne powtarzają się <%= emphasisStart %>każdego dnia<%= emphasisEnd %>, kiedy są aktywne. Kliknij na <%= pencilIcon %>, aby zmienić dni, w których zadanie codzienne jest aktywne.", "dailyHelp2": "Jeśli nie wypełnisz aktywnych zadań codziennych, utracisz pewną liczbę punktów zdrowia, gdy dzień dobiegnie końca.", "dailyHelp3": "Zadania codzienne <%= emphasisStart %>czerwienieją<%= emphasisEnd %> kiedy je opuszczasz, zaś <%= emphasisStart %>niebieścieją<%= emphasisEnd %> gdy je wypełniasz. Im intensywniejszy kolor ma zadanie codzienne, tym większa Twoja nagroda... albo Twoje obrażenia.", diff --git a/common/locales/pt/faq.json b/common/locales/pt/faq.json index 73f2b12b17..5654606584 100644 --- a/common/locales/pt/faq.json +++ b/common/locales/pt/faq.json @@ -18,7 +18,7 @@ "faqQuestion5": "Como jogo Habitica com meus amigos?", "iosFaqAnswer5": "O melhor jeito é convida-los para uma Equipe com você, pelo [site](https://habitica.com/#/options/groups/party)! Nós adicionaremos a habilidade de criar uma Equipe pelo aplicativo em breve, mas enquanto isso você pode usar o [site](https://habitica.com/#/options/groups/party). Equipes podem fazer missões, batalhar monstros, e usar habilidades que ajudam um ao outro. No site, você e seus amigos também podem se unir a Guildas, que são salas de bate-papo públicas. Guildas serão adicionadas ao aplicativo em uma atualização futura!", "webFaqAnswer5": "O melhor jeito é convida-los para uma equipe com você, em Social > Equipe! Equipes podem fazer missões, batalhar monstros e usar habilidades que ajudam um ao outro. Vocês também podem se unir a Guildas juntos (Social > Guildas). Guildas são salas de bate -papo focadas em um interesse em comum ou na busca de um mesmo objetivo, e podem ser tanto públicas como privadas. Você pode participar de quantas guildas desejar, mas apenas uma equipe.\n

\nPara informações mais detalhadas, confira nossas paginas na wiki em [Equipes](http://habitrpg.wikia.com/wiki/Party) e [Guildas](http://habitrpg.wikia.com/wiki/Guilds).", - "faqQuestion6": "Como recebo um Mascote ou uma Montaria?", + "faqQuestion6": "Como consigo um Mascote ou Montaria?", "iosFaqAnswer6": "No nível 3, você irá destravar o sistema de Drop. Toda vez que você completar uma tarefa, você terá uma chance aleatória de receber um ovo, uma poção de eclosão ou um pedaço de comida. Eles serão guardados em Menu > Itens.\n\nPara eclodir um Mascote, você precisará de um ovo e uma poção de eclosão. Toque no ovo para determinar que espécie você quer eclodir e selecione \"Eclodir Ovo.\" Depois escolha uma poção de eclosão para determinar sua cor! Vá para Menu > Mascotes para equipar o novo Mascote ao seu avatar ao toca-lo.\n\nVocê também pode transformar seus Mascotes em Montarias ao alimenta-los em Menu > Mascotes. Selecione um Mascote, e depois escolha \"Alimentar Mascote\"! Você tera que alimentar um mascote várias vezes antes dele se tornar uma Montaria, mas se você conseguir descobrir qual é sua comida favorita, ele crescerá mais rapidamente. Use tentativa e erro, ou [veja os spoilers aqui](http://habitica.wikia.com/wiki/Food#Food_Preferences). Logo que conseguir uma Montaria, vá para Menu > Montarias e toque nele para equipa-lo ao seu avatar.\n\nVocê também pode conseguir ovos para Mascotes de Missão ao completar certas Missões. (Veja abaixo para aprender mais sobre Missões.)", "webFaqAnswer6": "No nível 3, você irá desbloquear o sistema de Drop. Toda vez que completar uma tarefa, você terá uma chance aleatória de receber um ovo, uma poção de eclosão ou um pedaço de comida. Eles serão guardados em Inventário > Loja.\n

\nPara eclodir um Mascote, você precisará de um ovo e uma poção de eclosão. Clique em um ovo para determinar a espécie que você quer eclodir, e em seguida clique na poção de eclosão para determinar sua cor! Vá para Inventário > Mascotes para equipar o mascote ao ser avatar ao clica-lo.\n

\nVocê também pode transformar seus Mascotes em Montarias ao alimenta-los em Inventário > Mascotes. Clique em um Mascote, e depois clique em um pedaço de comida no menu direito para alimenta-lo! Você tera que alimentar um Mascote várias vezes antes deles se tornar uma Montaria, mas se vocÇe conseguir descobrir qual é a sua comida favorita, ele crescerá mais rapidamente. Use tentativa e erro, ou [veja os spoilers aqui](http://habitica.wikia.com/wiki/Food#Food_Preferences). Logo que conseguir uma Montaria, vá para Inventário > Montaria e clique na Montaria para equipa-la ao seu avatar.\n

\nVocê tambem pode conseguir ovos para Mascotes de Missão ao completar certas Missões. (Veja abaixo para aprender mais sobre Missões)", "faqQuestion7": "Como eu me torno um Guerreiro, Mago, Ladino ou Curandeiro?", diff --git a/common/locales/pt/messages.json b/common/locales/pt/messages.json index 5b92444517..abbab0c053 100644 --- a/common/locales/pt/messages.json +++ b/common/locales/pt/messages.json @@ -44,6 +44,12 @@ "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", "messageGroupRequiresInvite": "Can't join a group you're not invited to.", "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" } \ No newline at end of file diff --git a/common/locales/pt/npc.json b/common/locales/pt/npc.json index 36b1802ae8..075deb0bad 100644 --- a/common/locales/pt/npc.json +++ b/common/locales/pt/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", "alexander": "Alexander o Comerciante", "welcomeMarket": "Bem-vindo ao Mercado! Compre ovos e poções difíceis de encontrar! Venda seus extras! Encomende serviços úteis! Veja ver o que temos para oferecer.", - "sellForGold": "Vender <%= item %> por <%= gold %> Ouro", - "sellEggForGold": "Vender Ovo de <%= itemType %> por <%= gold %> moedas de Ouro", - "sellPotionForGold": "Vender Porção de <%= itemType %> por <%= gold %> modedas de Ouro", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Comprar Gemas", "justin": "Justin", "ian": "Ian", diff --git a/common/locales/pt/rebirth.json b/common/locales/pt/rebirth.json index c4fad257b9..ed1c6d4acf 100644 --- a/common/locales/pt/rebirth.json +++ b/common/locales/pt/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "Você também ganha uma Conquista por começar uma nova aventura!", "beReborn": "Renasça", "rebirthAchievement": "Você iniciou uma nova aventura! Esse é o seu Renascimento número <%= number %>, e o nível mais alto que você atingiu foi <%= level %>. Para acumular essa Conquista, comece sua próxima nova aventura quando atingir um Nível ainda maior!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Iniciou uma Nova Aventura", "rebirthText": "Iniciou <%= rebirths %> Novas Aventuras", "rebirthOrb": "Usou um Orbe do Renascimento para recomeçar depois de alcançar Nível", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "Comece um novo personagem do Nível 1 mantendo conquistas, colecionáveis, e tarefas com histórico.", "rebirthName": "Orbe do Renascimento", "reborn": "Renascido, nível max <%= reLevel %>" diff --git a/common/locales/pt/subscriber.json b/common/locales/pt/subscriber.json index d9f095739e..aa13fb5cf9 100644 --- a/common/locales/pt/subscriber.json +++ b/common/locales/pt/subscriber.json @@ -68,7 +68,7 @@ "subUpdateDescription": "Atualize o cartão para ser cobrado.", "notEnoughHourglasses": "Você não tem Ampulhetas Místicas suficientes.", "hourglassBuyEquipSetConfirm": "Comprar este conjunto completo de itens por 1 Ampulheta Mística?", - "hourglassBuyItemConfirm": "Comprar este item por 1 Ampulheta Mística", + "hourglassBuyItemConfirm": "Comprar este item por 1 Ampulheta Mística?", "petsAlreadyOwned": "Você já possui este mascote.", "mountsAlreadyOwned": "Você já possui esta montaria.", "typeNotAllowedHourglass": "Tipo de item não disponível para compra usando Ampulhetas Místicas. Tipos permitidos:", diff --git a/common/locales/ro/messages.json b/common/locales/ro/messages.json index 30b486cb99..421259751e 100644 --- a/common/locales/ro/messages.json +++ b/common/locales/ro/messages.json @@ -44,6 +44,12 @@ "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", "messageGroupRequiresInvite": "Can't join a group you're not invited to.", "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" } \ No newline at end of file diff --git a/common/locales/ro/npc.json b/common/locales/ro/npc.json index c20be79ba0..5c39ab7ffc 100644 --- a/common/locales/ro/npc.json +++ b/common/locales/ro/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", "alexander": "Negustorul Alexander", "welcomeMarket": "Bine ai venit la Piață! Cumpără ouă și poțiuni greu de găsit! Vinde ce n-ai nevoie! Apelează la servicii utile! Vino să vezi ce avem de oferit.", - "sellForGold": "Vinde <%= item %> pentru <%= gold %> Aur", - "sellEggForGold": "Sell <%= itemType %> Egg for <%= gold %> Gold", - "sellPotionForGold": "Sell <%= itemType %> Potion for <%= gold %> Gold", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Cumpără Nestemate", "justin": "Justin", "ian": "Ian", diff --git a/common/locales/ro/rebirth.json b/common/locales/ro/rebirth.json index ce1ed52972..a4d11a2a03 100644 --- a/common/locales/ro/rebirth.json +++ b/common/locales/ro/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "Vei primi de asemenea o Realizare pentru începerea unei noi aventuri!", "beReborn": "Renaște-te", "rebirthAchievement": "Ai început o aventură nouă! Asta este Renașterea cu numărul <%= number %> pentru tine, iar cel mai înalt Nivel pe care l-ai atins este <%= level %>. Pentru a primi această Realizare din nou, începe-ți următoarea aventură când ai atins un Nivel și mai înalt!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Începe un nou joc", "rebirthText": "A început <%= rebirths %> Aventuri Noi", "rebirthOrb": "A folosit un Glob al Renașterii pentru a o lua de la început după ce a atins Nivelul", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "Începe un nou personaj la Nivelul 1 păstrând realizările, obiectele de colecție și țelurile cu istoric.", "rebirthName": "Globul Renașterii", "reborn": "Renăscut, nivel maxim <%= reLevel %>" diff --git a/common/locales/ru/challenge.json b/common/locales/ru/challenge.json index 9ed79ba979..a76f27da7b 100644 --- a/common/locales/ru/challenge.json +++ b/common/locales/ru/challenge.json @@ -60,6 +60,6 @@ "noPermissionEditChallenge": "У вас нет прав на редактирование этого испытания.", "noPermissionDeleteChallenge": "У вас нет прав на удаление этого испытания.", "noPermissionCloseChallenge": "У вас нет прав на закрытие этого испытания.", - "noChallengeOwner": "no owner", - "noChallengeOwnerPopover": "This challenge does not have an owner because the person who created the challenge deleted their account." + "noChallengeOwner": "нет владельца", + "noChallengeOwnerPopover": "Это испытание не имеет владельца, потому что игрок, который его создал, удалил свой аккаунт." } \ No newline at end of file diff --git a/common/locales/ru/character.json b/common/locales/ru/character.json index 78521b187c..712a2d36d7 100644 --- a/common/locales/ru/character.json +++ b/common/locales/ru/character.json @@ -52,7 +52,7 @@ "classEquipBonus": "Бонус класса", "battleGear": "Боевая экипировка", "battleGearText": "Это ваша экипировка для сражений, она влияет на игровые результаты от взаимодействия с задачами.", - "autoEquipBattleGear": "Auto-equip new gear", + "autoEquipBattleGear": "Самонадевание нового снаряжения", "costume": "Костюм", "costumeText": "Если внешний вид какой-либо экипировки вам нравится больше, чем надетой сейчас, можете отметить «Использовать костюм» для того, чтобы визуально предстать в желаемом костюме поверх боевой экипировки.", "useCostume": "Использовать костюм", diff --git a/common/locales/ru/content.json b/common/locales/ru/content.json index 4d03d2c326..92fe0babf0 100644 --- a/common/locales/ru/content.json +++ b/common/locales/ru/content.json @@ -95,9 +95,9 @@ "questEggHorseText": "Конь", "questEggHorseMountText": "Конь", "questEggHorseAdjective": "быстрый", - "questEggFrogText": "Frog", - "questEggFrogMountText": "Frog", - "questEggFrogAdjective": "a princely", + "questEggFrogText": "Лягушонок", + "questEggFrogMountText": "Лягушонок", + "questEggFrogAdjective": "царственный", "eggNotes": "Найдите инкубационный эликсир, чтобы полить им это яйцо, и из него вылупится <%= eggAdjective(locale) %> <%= eggText(locale) %>.", "hatchingPotionBase": "Обыкновенный", "hatchingPotionWhite": "Белый", diff --git a/common/locales/ru/faq.json b/common/locales/ru/faq.json index 409f063b8a..efad6c73af 100644 --- a/common/locales/ru/faq.json +++ b/common/locales/ru/faq.json @@ -36,7 +36,7 @@ "faqQuestion11": "Как сообщить о проблеме или предложить новую функцию?", "iosFaqAnswer11": "Вы можете сообщить о проблеме, предложить новую функцию или оставить отзыв через Меню > Сообщить о проблеме и Меню > Оставить отзыв! Мы сделаем всё, что в наших силах, чтобы вам помочь.", "webFaqAnswer11": "Мы принимаем отчёты об ошибках на сайте GitHub. Перейдите в [Меню > Сообщить о проблеме](https://github.com/HabitRPG/habitrpg/issues/2760) и следуйте инструкции. Не беспокойтесь, мы очень скоро всё починим!\n

\nПредложения о новых функциях принимаются на сайте Trello. Перейдите в меню [Помощь > Предложить новую функцию](https://trello.com/c/odmhIqyW/440-read-first-table-of-contents) и следуйте инструкции. Та-да!", - "faqQuestion12": "How do I battle a World Boss?", + "faqQuestion12": "Как сражаться с мировым боссом?", "iosFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and skills will damage the Boss as usual.\n\n You can also be in a normal Quest at the same time. Your tasks and skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.", "webFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and skills will damage the Boss as usual.\n

\n You can also be in a normal Quest at the same time. Your tasks and skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n

\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n

\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.", "iosFaqStillNeedHelp": "Если у вас возник вопрос, которого нет в этом списке, приходите и задайте его в чате Таверны в Меню > Таверна! Мы будем рады помочь.", diff --git a/common/locales/ru/gear.json b/common/locales/ru/gear.json index 84106e4104..8e2e3fdf6d 100644 --- a/common/locales/ru/gear.json +++ b/common/locales/ru/gear.json @@ -592,7 +592,7 @@ "backMystery201504Notes": "Бз - бзз - бззз! Перелетаем с задания на задание. Бонусов не дает. Подарок подписчикам в апреле 2015.", "backMystery201507Text": "Крутая доска для сёрфинга", "backMystery201507Notes": "Прокатитесь по волнам от причала Прилежности до бухты Незавершённости! Бонусов не даёт. Подарок подписчикам в июле 2015 года.", - "backMystery201510Text": "Goblin Tail", + "backMystery201510Text": "Хвост гоблина", "backMystery201510Notes": "Prehensile and powerful! Confers no benefit. October 2015 Subscriber Item.", "backSpecialWonderconRedText": "Могущественный плащ", "backSpecialWonderconRedNotes": "Развевается мощно и красиво. Бонусов не дает. Предмет специального фестивального выпуска.", @@ -664,7 +664,7 @@ "headAccessoryMystery201409Notes": "Эти могучие рога меняют цвет вместе с листвой. Бонусов не дают. Подарок подписчикам сентября 2014.", "headAccessoryMystery201502Text": "Крылья раздумий", "headAccessoryMystery201502Notes": "Позвольте своему воображению унести вас в мир грез! Бонусов не дает. Подарок подписчикам в феврале 2015.", - "headAccessoryMystery201510Text": "Goblin Horns", + "headAccessoryMystery201510Text": "Рога гоблина", "headAccessoryMystery201510Notes": "These fearsome horns are slightly slimy. Confers no benefit. October 2015 Subscriber Item.", "headAccessoryMystery301405Text": "Очки на голове", "headAccessoryMystery301405Notes": "\"Защищать очками надо глаза,\" говорили они. \"Кому сдались защитные очки на макушке,\" говорили они. Ха! Вы им показали! Подарок подписчикам августа 3015. Бонусов не дает.", diff --git a/common/locales/ru/generic.json b/common/locales/ru/generic.json index f3c030bfd5..b637efe4e9 100644 --- a/common/locales/ru/generic.json +++ b/common/locales/ru/generic.json @@ -28,7 +28,7 @@ "market": "Рынок", "subscriberItem": "Таинственный предмет", "newSubscriberItem": "Новый таинственный предмет", - "subscriberItemText": "Each month, subscribers will receive a mystery item. This is usually released about one week before the end of the month. See the wiki's 'Mystery Item' page for more information.", + "subscriberItemText": "Каждый месяц подписчики получают таинственный предмет. Обычно это происходит за неделю до конца месяца. Читайте статью \"Таинственный предмет\" на вики для подробной информации.", "all": "Все", "none": "Ничего", "or": "Или", @@ -79,7 +79,7 @@ "errorUpCase": "ОШИБКА:", "newPassSent": "Новый пароль отправлен.", "serverUnreach": "Сервер сейчас недоступен.", - "requestError": "Yikes, an error occurred! Please reload the page, your last action may not have been saved correctly.", + "requestError": "Упс, произошла ошибка! Пожалуйста, перезагрузите страницу, ваше последнее действие, возможно, было сохранено неправильно.", "seeConsole": "Если ошибка появляется вновь, пожалуйста, сообщите о ней через меню Помощь > Сообщить о проблеме. Если вы знакомы с консолью браузера, пожалуйста, включите в отчет возможные сообщения об ошибках.", "error": "Ошибка", "menu": "Меню", diff --git a/common/locales/ru/messages.json b/common/locales/ru/messages.json index 8ff4e77a9e..5d9cccd720 100644 --- a/common/locales/ru/messages.json +++ b/common/locales/ru/messages.json @@ -31,19 +31,25 @@ "armoireEquipment": "<%= image %> Вы нашли в сундуке редкий предмет: <%= dropText %>! Потрясающе!", "armoireFood": "<%= image %> Копаясь в сундуке, вы что-то находите. Откуда здесь <%= dropArticle %><%= dropText %>?", "armoireExp": "Вы сражаетесь с сундуком и набираете опыт. Получай!", - "messageInsufficientGems": "Not enough gems!", - "messageAuthPasswordMustMatch": ":password and :confirmPassword don't match", - "messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required", - "messageAuthUsernameTaken": "Username already taken", - "messageAuthEmailTaken": "Email already taken", - "messageAuthNoUserFound": "No user found.", - "messageAuthMustBeLoggedIn": "You must be logged in.", - "messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request", - "messageGroupNotFound": "Group not found or you don't have access.", - "messageGroupAlreadyInParty": "Already in a party, try refreshing.", - "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", - "messageGroupRequiresInvite": "Can't join a group you're not invited to.", - "messageGroupCannotRemoveSelf": "You cannot remove yourself!", - "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", - "messageUserOperationNotFound": "<%= operation %> operation not found" + "messageInsufficientGems": "Недостаточно самоцветов!", + "messageAuthPasswordMustMatch": ":password и :confirmPassword не совпадают", + "messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword обязательны", + "messageAuthUsernameTaken": "Имя пользователя уже занято", + "messageAuthEmailTaken": "Электронная почта уже занята", + "messageAuthNoUserFound": "Пользователь не найден.", + "messageAuthMustBeLoggedIn": "Вы должны быть авторизованы.", + "messageAuthMustIncludeTokens": "Вы должны указать токен и uid (идентификатор пользователя) в своём запросе", + "messageGroupNotFound": "Группа не найдена, либо вы не имеете доступа.", + "messageGroupAlreadyInParty": "Вы уже в команде, попробуйте обновить страницу.", + "messageGroupOnlyLeaderCanUpdate": "Только лидер группы может обновить её!", + "messageGroupRequiresInvite": "Невозможно присоединиться к группе, в которую вы не приглашены.", + "messageGroupCannotRemoveSelf": "Вы не можете удалить себя!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", + "messageUserOperationProtected": "путь `<%= operation %>` не был сохранён, это зарезервированный путь.", + "messageUserOperationNotFound": "Операция <%= operation %> не найдена" } \ No newline at end of file diff --git a/common/locales/ru/npc.json b/common/locales/ru/npc.json index bccd99e478..f84a2d610b 100644 --- a/common/locales/ru/npc.json +++ b/common/locales/ru/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", "alexander": "Торговец Александр", "welcomeMarket": "Заходите на рынок! Купите редкие яйца и эликсиры! Продайте то, что вам не нужно! Воспользуйтесь полезными услугами! Загляните и ознакомьтесь со всеми предложениями.", - "sellForGold": "Продать <%= item %> за <%= gold %> золота", - "sellEggForGold": "Продать <%= itemType %> в яйце за <%= gold %> золота", - "sellPotionForGold": "Продать <%= itemType %> эликсир за <%= gold %> золота", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Купить самоцветы", "justin": "Джастин", "ian": "Ян", diff --git a/common/locales/ru/quests.json b/common/locales/ru/quests.json index 427495a993..eecd2ef4c7 100644 --- a/common/locales/ru/quests.json +++ b/common/locales/ru/quests.json @@ -37,13 +37,13 @@ "bossDmg1": "Босс получает урон от каждого завершенного ежедневного задания, каждой задачи и каждой полезной привычки. Вы можете нанести больше урона, выполняя красные задания и используя Мощный удар или Всплеск пламени. Босс нанесет урон каждому участнику квеста за каждое пропущенное ежедневное задание (ущерб от задания, умноженный на силу босса) в дополнение к обычному урону. Старайтесь поддерживать здоровье команды, выполняя ежедневные задания! Весь урон, нанесенный команде и боссу, засчитывается в момент смены суток (по окончании вашего дня).", "bossDmg2": "Только участники будут сражаться с боссом и разделят квестовые трофеи.", "bossDmg1Broken": "Each completed Daily and To-Do and each positive Habit hurts the boss... Hurt it more with redder tasks or Brutal Smash and Burst of Flames... The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies... All damage to and from a boss is tallied on cron (your day roll-over)...", - "bossDmg2Broken": "Only participants will fight the boss and share in the quest loot...", + "bossDmg2Broken": "Только участники будут сражаться с боссом и разделят квестовые трофеи.", "tavernBossInfo": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss! Incomplete Dailies fill the Exhaust Strike Bar. When the Exhaust Strike bar is full, the World Boss will attack an NPC. A World Boss will never damage individual players or accounts in any way. Only active accounts not resting in the Inn will have their tasks tallied.", "tavernBossInfoBroken": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss... Incomplete Dailies fill the Exhaust Strike Bar... When the Exhaust Strike bar is full, the World Boss will attack an NPC... A World Boss will never damage individual players or accounts in any way... Only active accounts not resting in the Inn will have their tasks tallied...", "bossColl1": "Чтобы собирать предметы, выполняйте положительные задания. Квестовые предметы падают точно так же, как обычные; однако, вы не увидите, что упало, до начала следующего дня — тогда всё, что вы нашли, будет посчитано и сложено в общую стопку.", "bossColl2": "Только участники могут собрать предметы и разделять квестовые трофеи.", "bossColl1Broken": "To collect items, do your positive tasks... Quest items drop just like normal items; however, you won't see the drops until the next day, then everything you've found will be tallied up and contributed to the pile...", - "bossColl2Broken": "Only participants can collect items and share in the quest loot...", + "bossColl2Broken": "Только участники могут собирать предметы и разделять квестовые трофеи.", "abort": "Прервать", "leaveQuest": "Покинуть квест", "sureLeave": "Вы уверены, что хотите покинуть активный квест? Весь ваш прогресс будет потерян.", diff --git a/common/locales/ru/questscontent.json b/common/locales/ru/questscontent.json index 206b0d7c45..7586dd596b 100644 --- a/common/locales/ru/questscontent.json +++ b/common/locales/ru/questscontent.json @@ -250,7 +250,7 @@ "questHorseBoss": "Лошмар", "questHorseDropHorseEgg": "Лошадь (яйцо)", "questHorseUnlockText": "Позволяет покупать на рынке лошадь в яйце.", - "questBurnoutText": "Выжженные и Истощённые Духи", + "questBurnoutText": "Выжженные и истощённые духи", "questBurnoutNotes": "Уже далеко за полночь. Было спокойно и очень душно, когда Красный Феникс и капитан скаутов Кивибот резко ворвался через городские ворота. \"Нам нужно эвакуировать все деревянные здания!\" - закричал Красный Феникс. \"Торопись!\"

Кивибот цепляется за стену, пока переводит дыхание. \"Оно высасывает людей и превращает их в Истощённых Духов! Вот почему всё задерживалось. Вот куда пропали недостающие люди. Оно крало их энергию!\"

\"Оно..?\" - спросила Лэмонесс.

И тогда тепло обретает форму.

Оно поднимается с земли в развевающейся, скручивающейся массе, и воздух переполняется запахами дыма и серы. Корчась до страшных высот, пламя возлизало расплавленную замлю, на кончиках искривляясь. Дымящиеся глаза распахиваются, и тварь издаёт глубокое и трещащее гоготание.

Кивибот прошептала единое слово.

\"Вижигатель.\"", "questBurnoutCompletion": "Burnout is DEFEATED!

With a great, soft sigh, Burnout slowly releases the ardent energy that was fueling its fire. As the monster curls quietly into ashes, its stolen energy shimmers through the air, rejuvenating the Exhaust Spirits and returning them to their true forms.

Ian, Daniel, and the Seasonal Sorceress cheer as Habiticans rush to greet them, and all the missing citizens of the Flourishing Fields embrace their friends and families. The final Exhaust Spirit transforms into the Joyful Reaper herself!

\"Look!\" whispers @Baconsaur, as the ashes begin to glitter. Slowly, they resolve into hundreds of shining phoenixes!

One of the glowing birds alights on the Joyful Reaper's skeletal arm, and she grins at it. \"It has been a long time since I've had the exquisite privilege to behold a phoenix in the Flourishing Fields,\" she says. \"Although given recent occurrences, I must say, this is highly thematically appropriate!\"

Her tone sobers, although (naturally) her grin remains. \"We're known for being hard-working here, but we are also known for our feasts and festivities. Rather ironic, I suppose, that as we strove to plan a spectacular party, we refused to permit ourselves any time for fun. We certainly won't make the same mistake twice!\"

She claps her hands. \"Now - let's celebrate!\"", "questBurnoutCompletionChat": "`Burnout is DEFEATED!`\n\nWith a great, soft sigh, Burnout slowly releases the ardent energy that was fueling its fire. As the monster curls quietly into ashes, its stolen energy shimmers through the air, rejuvenating the Exhaust Spirits and returning them to their true forms.\n\nIan, Daniel, and the Seasonal Sorceress cheer as Habiticans rush to greet them, and all the missing citizens of the Flourishing Fields embrace their friends and families. The final Exhaust Spirit transforms into the Joyful Reaper herself!\n\n\"Look!\" whispers @Baconsaur, as the ashes begin to glitter. Slowly, they resolve into hundreds of shining phoenixes!\n\nOne of the glowing birds alights on the Joyful Reaper's skeletal arm, and she grins at it. \"It has been a long time since I've had the exquisite privilege to behold a phoenix in the Flourishing Fields,\" she says. \"Although given recent occurrences, I must say, this is highly thematically appropriate!\"\n\nHer tone sobers, although (naturally) her grin remains. \"We're known for being hard-working here, but we are also known for our feasts and festivities. Rather ironic, I suppose, that as we strove to plan a spectacular party, we refused to permit ourselves any time for fun. We certainly won't make the same mistake twice!\"\n\nShe claps her hands. \"Now - let's celebrate!\"\n\nAll Habiticans receive:\n\nPhoenix Pet\nPhoenix Mount\nAchievement: Savior of the Flourishing Fields\nBasic Candy\nVanilla Candy\nSand Candy\nCinnamon Candy\nChocolate Candy\nRotten Candy\nSour Pink Candy\nSour Blue Candy\nHoney Candy", @@ -266,6 +266,6 @@ "questFrogNotes": "As you and your friends are slogging through the Swamps of Stagnation, @starsystemic points at a large sign. \"Stay on the path -- if you can.\"

\"Surely that isn't hard!\" @RosemonkeyCT says. \"It's broad and clear.\"

But as you continue, you notice that path is gradually overtaken by the muck of the swamp, laced with bits of strange blue debris and clutter, until it's impossible to proceed.

As you look around, wondering how it got this messy, @Jon Arjinborn shouts, \"Look out!\" An angry frog leaps from the sludge, clad in dirty laundry and lit by blue fire. You will have to overcome this poisonous Clutter Frog to progress!", "questFrogCompletion": "The frog cowers back into the muck, defeated. As it slinks away, the blue slime fades, leaving the way ahead clear.

Sitting in the middle of the path are three pristine eggs. \"You can even see the tiny tadpoles and through the clear casing!\" @Breadstrings says. \"Here, you should take them.\"", "questFrogBoss": "Clutter Frog", - "questFrogDropFrogEgg": "Frog (Egg)", + "questFrogDropFrogEgg": "Лягушонок (Яйцо)", "questFrogUnlockText": "Unlocks purchasable Frog eggs in the Market" } \ No newline at end of file diff --git a/common/locales/ru/rebirth.json b/common/locales/ru/rebirth.json index 4503109b0d..c3b2ea56c8 100644 --- a/common/locales/ru/rebirth.json +++ b/common/locales/ru/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "А еще вы получите достижение за начало нового приключения!", "beReborn": "Родитесь заново", "rebirthAchievement": "Вы начали новое приключение! Это ваше возрождение <%= number %> и самый высокий уровень, который вы достигали — <%= level %>. Чтобы увеличить это достижение, начните свое следующее новое приключение после того, как достигните еще более высокого уровня!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Начато новое приключение", "rebirthText": "Начато новых приключений: <%= rebirths %>", "rebirthOrb": "Использован шар возрождения, чтобы начать заново после достижения уровня", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "Начните заново с персонажем 1 уровня, сохранив достижения, коллекционные предметы и задания с историей.", "rebirthName": "Шар возрождения", "reborn": "Возрождение, макс. уровень <%= reLevel %>" diff --git a/common/locales/ru/settings.json b/common/locales/ru/settings.json index 41cc110f65..fea2f2709d 100644 --- a/common/locales/ru/settings.json +++ b/common/locales/ru/settings.json @@ -119,25 +119,25 @@ "promoCodeApplied": "Промокод принят! Проверьте инвентарь", "promoPlaceholder": "Введите Промокод", "displayInviteToPartyWhenPartyIs1": "Отображать кнопку приглашения в команду, когда в команде 1 человек", - "saveCustomDayStart": "Save Custom Day Start", - "registration": "Registration", - "addLocalAuth": "Add local authentication:", - "generateCodes": "Generate Codes", - "generate": "Generate", - "getCodes": "Get Codes", - "webhooks": "Webhooks", - "enabled": "Enabled", - "webhookURL": "Webhook URL", - "add": "Add", - "buyGemsGoldCap": "Cap raised to <%= amount %>", - "mysticHourglass": "<%= amount %> Mystic Hourglass", + "saveCustomDayStart": "Сохранить персональное начало суток", + "registration": "Регистрация", + "addLocalAuth": "Добавить локальную аутентификацию:", + "generateCodes": "Сгенерировать коды", + "generate": "Сгенерировать", + "getCodes": "Получить коды", + "webhooks": "Веб-хуки", + "enabled": "Включено", + "webhookURL": "Ссылка на веб-хук", + "add": "Добавить", + "buyGemsGoldCap": "Предел повышен до <%= amount %>", + "mysticHourglass": "Кол-во мистических песочных часов: <%= amount %>", "mysticHourglassText": "Mystic Hourglasses allow purchasing a previous month's Mystery Item set.", - "purchasedPlanId": "Recurring $<%= price %> each <%= months %> Month(s) (<%= plan %>)", - "purchasedPlanExtraMonths": "You have <%= months %> months of subscription credit.", - "consecutiveSubscription": "Consecutive Subscription", - "consecutiveMonths": "Consecutive Months:", - "gemCapExtra": "Gem Cap Extra:", - "mysticHourglasses": "Mystic Hourglasses:", + "purchasedPlanId": "Возобновляемая подписка за <%= price %> долларов каждые <%= months %> мес. (<%= plan %>)", + "purchasedPlanExtraMonths": "Вы были подписаны в течение <%= months %> мес.", + "consecutiveSubscription": "Непрерывная подписка", + "consecutiveMonths": "Месяцев подряд:", + "gemCapExtra": "Доп. предел самоцветов:", + "mysticHourglasses": "Мистические песочные часы:", "paypal": "PayPal", - "amazonPayments": "Amazon Payments" + "amazonPayments": "Платёж с помощью Amazon" } \ No newline at end of file diff --git a/common/locales/sk/messages.json b/common/locales/sk/messages.json index c7574b042e..b1a55e3395 100644 --- a/common/locales/sk/messages.json +++ b/common/locales/sk/messages.json @@ -44,6 +44,12 @@ "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", "messageGroupRequiresInvite": "Can't join a group you're not invited to.", "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" } \ No newline at end of file diff --git a/common/locales/sk/npc.json b/common/locales/sk/npc.json index 143e23f73f..61f0089fab 100644 --- a/common/locales/sk/npc.json +++ b/common/locales/sk/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", "alexander": "Kupec Alexander", "welcomeMarket": "Vitaj na trhu! Kúp si u nás vzácne vajcia a elixíry! Predaj všetko, čo máš navyše! Objednaj si užitočné služby. Pozri sa, čo všetko ponúkame.", - "sellForGold": "Predať: <%= item %>? Cena v zlate: <%= gold %>", - "sellEggForGold": "Sell <%= itemType %> Egg for <%= gold %> Gold", - "sellPotionForGold": "Sell <%= itemType %> Potion for <%= gold %> Gold", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Kúpiť drahokamy", "justin": "Justin", "ian": "Ian", diff --git a/common/locales/sk/rebirth.json b/common/locales/sk/rebirth.json index 16731e1c03..7ca74f7469 100644 --- a/common/locales/sk/rebirth.json +++ b/common/locales/sk/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "Za začatie nového dobrodružstva získavaš aj špeciálny odznak!", "beReborn": "Znovu sa zrodiť", "rebirthAchievement": "Začal si nové dobrodružstvo! Toto je tvoje znovuzrodenie čislo <%= number %> a najvušší level, ktorý si dosiahol je <%= level %>. Ak chceš tento odznak vylepšiť, začni nové dobrodružstvo po dosiahnutí ešte vyššieho levelu!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Začal nové dobrodružstvo", "rebirthText": "Začal niekoľko nových dobrodružstiev: <%= rebirths %>", "rebirthOrb": "Použil Orb znovuzrodenia, aby začal odznovu, po dosiahnutí levelu", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "Začni s novou postavou na leveli 1, pričom ti ostanú odznaky, zberateľské predmety, a úlohy.", "rebirthName": "Orb znovuzrodenia", "reborn": "Znovuzrodený, najvyšší dosiahnutý level: <%= reLevel %>" diff --git a/common/locales/sr/messages.json b/common/locales/sr/messages.json index 69c951f86b..22e44b788f 100644 --- a/common/locales/sr/messages.json +++ b/common/locales/sr/messages.json @@ -44,6 +44,12 @@ "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", "messageGroupRequiresInvite": "Can't join a group you're not invited to.", "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" } \ No newline at end of file diff --git a/common/locales/sr/npc.json b/common/locales/sr/npc.json index d852794e3d..38428fa5c4 100644 --- a/common/locales/sr/npc.json +++ b/common/locales/sr/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", "alexander": "Trgovac Aleksander", "welcomeMarket": "Dobro došli na Pijacu! Kupite jaja i napitke koje ne možete da nađete! Prodajte što Vam nije potrebno! Razgledajte našu robu.", - "sellForGold": "Prodati <%= item %> za <%= gold %> Zlata", - "sellEggForGold": "Sell <%= itemType %> Egg for <%= gold %> Gold", - "sellPotionForGold": "Sell <%= itemType %> Potion for <%= gold %> Gold", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Kupiti dragulje", "justin": "Džastin", "ian": "Ian", diff --git a/common/locales/sr/rebirth.json b/common/locales/sr/rebirth.json index b427c47669..b4bc11f66d 100644 --- a/common/locales/sr/rebirth.json +++ b/common/locales/sr/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "Možete da steknete i odlikovanje za započinjanje nove avanture!", "beReborn": "Reinkarnirajte se", "rebirthAchievement": "Započeli ste novu avanturu! Ovo Vam je <%= number %>. reinkarnacija, a najviši nivo koji ste dostigli je <%= level %>. Da biste dobili još odlikovanja za reinkarnaciju, započnite novu avanturu kad dostignete još viši nivo!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Započeo novu avanturu", "rebirthText": "Korisnik je započeo <%= rebirths %> novih avantura", "rebirthOrb": "Upotrebio Sferu za reinkarnaciju da se vrati na početak igre nakon što je dostigao nivo", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "Počnite iz početka s nivoa 1, i zadržite odlikovanja, kolekcionarske predmete, i zadatke, zajedno sa istorijom.", "rebirthName": "Sfera za reinkarnaciju", "reborn": "Reinkarniran, najviši nivo <%= reLevel %>" diff --git a/common/locales/sv/messages.json b/common/locales/sv/messages.json index efa324e007..c2f5494793 100644 --- a/common/locales/sv/messages.json +++ b/common/locales/sv/messages.json @@ -44,6 +44,12 @@ "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", "messageGroupRequiresInvite": "Can't join a group you're not invited to.", "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" } \ No newline at end of file diff --git a/common/locales/sv/npc.json b/common/locales/sv/npc.json index 5807baa558..0dfe47ac64 100644 --- a/common/locales/sv/npc.json +++ b/common/locales/sv/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", "alexander": "Köpmannen Alexander", "welcomeMarket": "Välkommen till Marknaden! Köp svårfunna ägg och drycker! Sälj de du inte behöver! Beställ praktiska tjänster! Kom och se vad vi har att erbjuda.", - "sellForGold": "Sälj <%= item %> för <%= gold %> Guld", - "sellEggForGold": "Sell <%= itemType %> Egg for <%= gold %> Gold", - "sellPotionForGold": "Sell <%= itemType %> Potion for <%= gold %> Gold", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Köp Juveler", "justin": "Justin", "ian": "Ian", diff --git a/common/locales/sv/rebirth.json b/common/locales/sv/rebirth.json index 2746091d89..6f3f2d4db7 100644 --- a/common/locales/sv/rebirth.json +++ b/common/locales/sv/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "Du får även en Bedrift för att du börjar på ett nytt äventyr!", "beReborn": "Bli pånyttfödd", "rebirthAchievement": "Du har börjat på ett nytt äventyr! Det här är Pånyttfödelse nummer <%= number %> för dig, och den högsta Leveln du har nått är <%= level %>. För att stapla denna Bedrift, börja ditt nästa nya äventyr när du har nått en ännu högre Level!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Började på ett Nytt Äventyr", "rebirthText": "Började <%= rebirths %> Nytt/Nya Äventyr", "rebirthOrb": "Använde en Pånyttfödelsesfär för att börja om efter att ha nått Level", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "Starta en ny karaktär från Level 1 medan du behåller bedrifter, samlarobjekt och uppgifter med dess historik.", "rebirthName": "Pånyttfödelsesfär", "reborn": "Pånyttfödd, max level <%= reLevel %>" diff --git a/common/locales/uk/backgrounds.json b/common/locales/uk/backgrounds.json index 8e9809cb91..fb9be3acf4 100644 --- a/common/locales/uk/backgrounds.json +++ b/common/locales/uk/backgrounds.json @@ -112,11 +112,11 @@ "backgroundStableNotes": "Турбуйтся про скакунів у Стайні Habitica", "backgroundTavernText": "Таверна Habitica", "backgroundTavernNotes": "Відвідайте Таверну Habitica", - "backgrounds102015": "SET 17: Released October 2015", - "backgroundHarvestMoonText": "Harvest Moon", - "backgroundHarvestMoonNotes": "Cackle under the Harvest Moon.", - "backgroundSlimySwampText": "Slimy Swamp", - "backgroundSlimySwampNotes": "Slog through a Slimy Swamp.", - "backgroundSwarmingDarknessText": "Swarming Darkness", - "backgroundSwarmingDarknessNotes": "Shiver in the Swarming Darkness." + "backgrounds102015": "Набір 17: випущеній у жовтні 2015", + "backgroundHarvestMoonText": "Повний Місяць перед осіннім рівноденням", + "backgroundHarvestMoonNotes": "Посмійтесь під повнім Місяцем.", + "backgroundSlimySwampText": "Склизьке Болото", + "backgroundSlimySwampNotes": "Плентайтеся крізь Склизьке Болото", + "backgroundSwarmingDarknessText": "Суцільна Темрява", + "backgroundSwarmingDarknessNotes": "Тремтіть від жаху у Суцільній Темряві." } \ No newline at end of file diff --git a/common/locales/uk/challenge.json b/common/locales/uk/challenge.json index 23f6d342b3..dbaedffb8c 100644 --- a/common/locales/uk/challenge.json +++ b/common/locales/uk/challenge.json @@ -60,6 +60,6 @@ "noPermissionEditChallenge": "У вас немає дозволу редагувати це випробування", "noPermissionDeleteChallenge": "У вас немає дозволу видаляти це випробування", "noPermissionCloseChallenge": "У вас немає дозволу закривати це випробування", - "noChallengeOwner": "no owner", - "noChallengeOwnerPopover": "This challenge does not have an owner because the person who created the challenge deleted their account." + "noChallengeOwner": "немає власника", + "noChallengeOwnerPopover": "У цього випробування немає власника, тому що людина, що створила його, вилучила свій акаунт." } \ No newline at end of file diff --git a/common/locales/uk/character.json b/common/locales/uk/character.json index 317eaf73bd..28a9b53b75 100644 --- a/common/locales/uk/character.json +++ b/common/locales/uk/character.json @@ -52,17 +52,17 @@ "classEquipBonus": "Класовий бонус", "battleGear": "Бойове спорядження", "battleGearText": "Це спорядження ви носите в бій; це впливає на число при взаємодії з вашими завданнями.", - "autoEquipBattleGear": "Auto-equip new gear", + "autoEquipBattleGear": "Автоматично одягати нове спорядження", "costume": "Костюм", "costumeText": "Якщо зовнішній вигляд іншого спорядженням Вам подобається більше, оберіть „Надягти костюм“, аби зовні постати у костюмі, допоки бойове спорядження вдягнене під низ.", "useCostume": "Надягти костюм", - "useCostumeInfo1": "Click \"Use Costume\" to equip items to your avatar without affecting the stats from your Battle Gear! This means that you can equip for the best stats on the left, and dress up your avatar with your equipment on the right.", - "useCostumeInfo2": "Once you click \"Use Costume\" your avatar will look pretty basic... but don't worry! If you look on the left, you'll see that your Battle Gear is still equipped. Next, you can make things fancy! Anything you equip on the right won't affect your stats, but can make you look super awesome. Try out different combos, mixing sets, and coordinating your Costume with your pets, mounts, and backgrounds.

Got more questions? Check out the Costume page on the wiki. Find the perfect ensemble? Show it off in the Costume Carnival guild or brag in the Tavern!", - "gearAchievement": "You have earned the \"Ultimate Gear\" Achievement for upgrading to the maximum gear set for a class! You have attained the following complete sets:", - "moreGearAchievements": "To attain more Ultimate Gear badges, change classes on your stats page and buy up your new class's gear!", - "armoireUnlocked": "You've also unlocked the Enchanted Armoire! Click on the Enchanted Armoire Reward for a random chance at special Equipment! It may also give you random XP or food items.", + "useCostumeInfo1": "Натисніть \"Використати Костюм\", щоб одягнути на персонажа одяг, що не вплине на характеристики, які надає ваше Бойове Спорядження! Це означає, що ви можете вибрати найбільш ефективне спорядження ліворуч, а також окремо налаштувати зовнішній вигляд персонажа праворуч.", + "useCostumeInfo2": "Коли ви натисните \"Використати Костюм\" за вашого персонажу зникне весь одяг. Але не лякайтесь! Ліворуч ви побачите, что все Бойове Спорядження продовжує впливати на ваші характеристики. Все, що ви одягнете на персонажа праворуч не вплине на ваші характеристики, але дозволить персонажу добре виглядати. Ви можете одягати елементи різних наборів спорядження, а також обрати улюбленця, скакуна та фон.

Є питання? Перевірте Сторінку Костюмів на вікі. Знайшли чудову комбінацію? Продемонструйте її в Ґільдії Карнавалу Костюмів або похизуйтесь нею у Таверні.", + "gearAchievement": "Ви заробили досягнення \"Найкраще спорядження\" за повне вдосконалення набору спорядження для вашого класу! Ви зІбрали повні набори для наступних класів:", + "moreGearAchievements": "Щоб заробити більше досягнень \"Найкраще споряждення\", змінюйте класи на сторінці характеристик та купуйте споряждення для нових класів!", + "armoireUnlocked": "Ви також відкрили Чарівну Скриню! Клацніть на Чаріну Скриню, щоб отримати випадковий предмет. Це може бути їжа, ОД або навить спеціальне Спорядження!", "ultimGearName": "Найкраще спорядження", - "ultimGearText": "Has upgraded to the maximum weapon and armor set for the following classes:", + "ultimGearText": "Повністю вдосконалено зброю та набір броні для наступних класів:", "level": "Рівень", "levelUp": "Новий рівень!", "mana": "Мана", @@ -78,7 +78,7 @@ "allocatePerPop": "Додати очко сприйняття", "allocateInt": "Призначено очок інтелекту:", "allocateIntPop": "Додати очко інтелекту", - "noMoreAllocate": "Now that you've hit level 100, you won't gain any more Attribute Points. You can continue leveling up, or start a new adventure at level 1 by using the Orb of Rebirth, now available for free in the Market.", + "noMoreAllocate": "Ви досягли 100-го рівня, тому ви більше не будете отримувати Очки Характеристик. Ви можете продовжувати підвищувати свій рівень або почати ваші пригоди з першого рівня, скористувавшись Кулею Переродження, яку можно бескоштовно отримати на Ринку.", "stats": "Характеристики", "strength": "Сила", "strengthText": "Сила зменшує ступінь небезпеки завдань (почервоніння), збільшує приріст від випадкових \"критичних ударів\" та допомагає завдавати ушкодження монстрам-босам.", @@ -122,7 +122,7 @@ "rogueText": "Шибайголови обожнюють збагачуватися, отримуючи більше Золота, ніж інші класи. Також вони експерти зі знайдення випадкових предметів. Їхня неперевершена потайливість дозволяє їм ухилитися від наслідків невиконаних щоденних завдань. Грайте Шибайголовою, якщо Вас мотивують нагороди, досягнення та жага до награбованого та значків!", "healerText": "Цілителі невразливі до ушкоджень та поширюють захист на інших. Невиконані щоденні завдання та шкідливі звички ледь турбують їх, у них є шляхи підняти своє Здоров'я після поразки. Грайте цілителем, якщо Вам подобається допомагати іншим членам гурту, або Вас надихає ідея через старанну працю обманути Смерть!", "optOut": "Не обрано", - "optOutText": "Can't be bothered with classes? Want to choose later? Opt out - you'll be a warrior with no special abilities. You can read about the class system later on the wiki and enable classes at any time under User -> Stats.", + "optOutText": "Не хочете розбиратися з класами? Хочете вибрати клас пізніше? Відмовтеся — ви залишитесь воїном без класових здібностей. Ви завжди можете увімкнути класи у меню Користувач -> Характеристики. Наша вікі має додакову інформацію щодо класів.", "select": "Обрати", "stealth": "Потайливість", "stealthNewDay": "Коли почнеться новий день, ви ухилитеся від ушкоджень за невиконані щоденні завдання у такому числі.", @@ -146,14 +146,14 @@ "unequipCostume": "Зняти костюм", "unequipPetMountBackground": "Заховати олюбленця, скакуна, фон", "animalSkins": "Шкіра тварин", - "chooseClassHeading": "Choose your Class! Or opt out to choose later.", + "chooseClassHeading": "Виберіть Клас! Ви можете відмовитися та вибрати його пізніше.", "warriorWiki": "Воїн", "mageWiki": "Чародій", "rogueWiki": "Харциз", "healerWiki": "Цілитель", - "chooseClassLearn": "Learn more about classes", - "str": "STR", - "con": "CON", - "per": "PER", - "int": "INT" + "chooseClassLearn": "Дізнайтесь більше про класи", + "str": "СИЛ", + "con": "КОМ", + "per": "СПР", + "int": "ІНТ" } \ No newline at end of file diff --git a/common/locales/uk/messages.json b/common/locales/uk/messages.json index 51b7588fbd..63c9a93ad8 100644 --- a/common/locales/uk/messages.json +++ b/common/locales/uk/messages.json @@ -44,6 +44,12 @@ "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", "messageGroupRequiresInvite": "Can't join a group you're not invited to.", "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" } \ No newline at end of file diff --git a/common/locales/uk/npc.json b/common/locales/uk/npc.json index 37ff361f44..f2f08345aa 100644 --- a/common/locales/uk/npc.json +++ b/common/locales/uk/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", "alexander": "Купець Олександр", "welcomeMarket": "Вітаю на ринку! Купуйте тут рідкісні яйця та зілля! Продавайте непотріб! Оплачуйте корисні послуги! Погляньте, що тут є в продажу.", - "sellForGold": "Продати <%= item %> за <%= gold %> золота", - "sellEggForGold": "Sell <%= itemType %> Egg for <%= gold %> Gold", - "sellPotionForGold": "Sell <%= itemType %> Potion for <%= gold %> Gold", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "Придбати cамоцвіти", "justin": "Юстин", "ian": "Ian", diff --git a/common/locales/uk/rebirth.json b/common/locales/uk/rebirth.json index 0a763a23cc..71f3ba9dec 100644 --- a/common/locales/uk/rebirth.json +++ b/common/locales/uk/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "Ви отримали досягнення за початок нової пригоди!", "beReborn": "Переродись-но!", "rebirthAchievement": "Ви почали нову пригоду! Це Ваше <%= number %> переродження, Ви досягали найбільше <%= level %> рівня. Аби збільшити це досягнення, почніть свою нову пригоду після того, як досягнете вищого рівня!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Нова пригода починається", "rebirthText": "Нова пригода <%= rebirths %> починається", "rebirthOrb": "Куля переродження була використана, аби почати заново після досягнення рівня", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "Розпочніть заново з персонажем 1 рівня, зберігши досягнення, колекційні предмети та завдання з історією.", "rebirthName": "Куля переродження", "reborn": "Переродження, максимальний рівень <%= reLevel %>" diff --git a/common/locales/uk/tasks.json b/common/locales/uk/tasks.json index 8aad8577d5..1c48c6d400 100644 --- a/common/locales/uk/tasks.json +++ b/common/locales/uk/tasks.json @@ -14,7 +14,7 @@ "save": "Зберегти", "addChecklist": "Додати перелік", "checklist": "Перелік", - "checklistText": "Break a task into smaller pieces! Checklists increase the Experience and Gold gained from a To-Do, and reduce the damage caused by a Daily.", + "checklistText": "Розбийте задачі на меньші шматки! Переліки збільшують кількість досвіду та золота, які ви отримаєте за виконання задачі, та зменьшують ушкодження від щоденніх задач.", "expandCollapse": "Показати/Приховати", "text": "Назва", "extraNotes": "Додаткові примітки", @@ -39,8 +39,8 @@ "repeat": "Повторювати", "repeatEvery": "Повторювати кожні", "repeatHelpTitle": "Як часто треба повторювати це завдання?", - "dailyRepeatHelpContent": "This task will be due every X days. You can set that value below.", - "weeklyRepeatHelpContent": "This task will be due on the highlighted days below. Click on a day to activate/deactivate it.", + "dailyRepeatHelpContent": "Це завдання треба виконувати кожні Х днів. Значення Х можно задати нижче.", + "weeklyRepeatHelpContent": "Це завдання треба виконувати в обрані нижче дні. Клацніть на день, щоб додати чи виключити його.", "repeatDays": "Кожні X днів", "repeatWeek": "У певні дні тижня", "day": "День", @@ -52,9 +52,9 @@ "dueDate": "Виконати до", "remaining": "Активні", "complete": "Виконано", - "dated": "Dated", + "dated": "З датою", "due": "Повинен зробити", - "notDue": "Not Due", + "notDue": "Не обов'язково", "grey": "Сірі", "score": "Рахунок", "rewards": "Нагороди", @@ -72,26 +72,26 @@ "showTags": "Показати", "startDate": "Дата початку", "startDateHelpTitle": "Коли має починатися це завдання?", - "startDateHelp": "Set the date for which this task takes effect. Will not be due on earlier days.", + "startDateHelp": "Вкажіть дату, коли це завдання набуде чинності. До цієї дати воно буде не обов'язковим.", "streakName": "Показати досягнення", "streakText": "Удалося <%= streaks %> рази зробити 21-денні серії щоденних завдань", "streakSingular": "Серійник", "streakSingularText": "Виконав 21-денну серію щоденних завдань", "perfectName": "Ідеальні дні", - "perfectText": "Completed all active Dailies on <%= perfects %> days. With this achievement you get a +level/2 buff to all attributes for the next day. Levels greater than 100 don't have any additional effects on buffs.", + "perfectText": "Кількість днів, коли було завершено всі активні щоденні задачі: <%= perfects %>. З цим досягненням ви отримуєте підсилювач +рівень/2 для всіх характеристик наступного дня. Рівні вище 100-го не отримують жодних додатокових бонусів до підсилювачів.", "perfectSingular": "Ідеальний день", - "perfectSingularText": "Completed all active Dailies in one day. With this achievement you get a +level/2 buff to all attributes for the next day. Levels greater than 100 don't have any additional effects on buffs.", + "perfectSingularText": "Усі активні щоденні задачі виконано. З цим досягненнім ви отримаєте підсилювач +рівень/2 для всіх характеристик наступного дня. Рівні вище 100-го не отримують жодних додатокових бонусів до підсилювачів.", "streakerAchievement": "Ви відкрили досягнення \"Серійник\" ! 21-денна позначка — це наріжний камінь для формування звички. Ви можете продовжувати отримувати це досягнення наступні 21 дні в цьому або іншому Щоденному завданні!", "fortifyName": "Зілля підсилення", "fortifyPop": "Повернути завдання до нейтрального стану (жовтого кольору) та відновити все здоров'я.", "fortify": "Підсилитися", - "fortifyText": "Fortify will return all your tasks to a neutral (yellow) state, as if you'd just added them, and top your Health off to full. This is great if all your red tasks are making the game too hard, or all your blue tasks are making the game too easy. If starting fresh sounds much more motivating, spend the Gems and catch a reprieve!", + "fortifyText": "Підсилення поверне всі ваші завдання у нейтральний (жовтий) колір, немов ви щойно їх додали, та відновить все ваше здоров’я. Це дуже корисно, якщо ваші червоні задачі роблять гру занадто складною, а сині — занадто простою. Якщо новий початок з чистої сторінки вас мотивує, не шкодуйте самоцвіти та отримайте тимчасове полегшення!", "sureDelete": "Ви справді бажаєте вилучити це завдання?", "streakCoins": "Бонус за серію!", "pushTaskToTop": "Перемістити завдання вгору", "pushTaskToBottom": "Перемістити завдання вниз", "emptyTask": "Спочатку введіть назву завдання", - "dailiesRestingInInn": "You're Resting in the Inn! Your Dailies will NOT hurt you tonight, but they WILL still refresh every day. If you're in a quest, you won't deal damage/collect items until you check out of the Inn, but you can still be injured by a Boss if your Party mates skip their own Dailies.", + "dailiesRestingInInn": "Ви відпочиваєте у Господі! Ващі щоденні задачі НЕ пошкодять вас сьогодні, але вони БУДУТЬ оновлюватися кожної доби. Якщо ви у квесті, ви не будете наносити пошкоджень чи отримувати предмети, поки не залишите Господу, але ви все одно можете бути пошкоджени Босом, якщо хтось з вашого Гурту не виконає щоденні задачі.", "habitHelp1": "Корисні звички - це те, що ви часто робите. Вони приносять Золото та Досвід щоразу, як ви клацаєте <%= plusIcon %>.", "habitHelp2": "Шкідливі звички - це те, чого ви не хотіли б робити. Вони забирають Здоров'я щоразу, як ви клацаєте <%= minusIcon %>.", "habitHelp3": "Для натхнення огляньте ці приклади Звичок!", @@ -99,7 +99,7 @@ "dailyHelp1": "Щоденна задача повторюється <%= emphasisStart %>кожного дня<%= emphasisEnd %>, коли вона активна. Клацніть <%= pencilIcon %>, щоб змінити дні, коли щоденне завдання активне.", "dailyHelp2": "Якщо ви не виконуєте активне Щоденне завдання, ви втрачаєте Здоров'я, коли день закінчується.", "dailyHelp3": "Щоденне завдання стає <%= emphasisStart %>червонішим<%= emphasisEnd %>, коли ви його пропускаєте, і <%= emphasisStart %>синішим<%= emphasisEnd %>, коли ви його виконуєте. Чим червонішим є Щоденне завдання, тим більше за нього ви отримаєте винагороди... або ушкоджень.", - "dailyHelp4": "To change when your day rolls over, go to <%= linkStart %> Settings > Site<%= linkEnd %> > Custom Day Start.", + "dailyHelp4": "Щоб змінити час, коли починається нова доба, зайдіть у <%= linkStart %> Налаштування > Сайт<%= linkEnd %> > Обрати початок доби.", "dailyHelp5": "Для натхнення, огляньте ці приклади Щоденних завдань!", "toDoHelp1": "Задачі з'являються жовтими, і червоніють (стають більш цінними) відповідно до того, скільки часу йде на їх виконання.", "toDoHelp2": "Задачі ніколи вам не шкодять! Вони тільки приносять Золото та Досвід.", diff --git a/common/locales/zh/character.json b/common/locales/zh/character.json index 87e01f3284..414764eb36 100644 --- a/common/locales/zh/character.json +++ b/common/locales/zh/character.json @@ -52,7 +52,7 @@ "classEquipBonus": "职业奖励", "battleGear": "战斗装备", "battleGearText": "这是你在战斗中的装备;这会影响您在任务重的各项数值", - "autoEquipBattleGear": "Auto-equip new gear", + "autoEquipBattleGear": "自动装备新装甲", "costume": "服装", "costumeText": "如果你更喜欢其它装备的样子,勾选\"显示服装\"的按钮,在装备战斗装备的情况下换一个造型。", "useCostume": "显示服装", diff --git a/common/locales/zh/faq.json b/common/locales/zh/faq.json index 31d00c386c..1c96abf738 100644 --- a/common/locales/zh/faq.json +++ b/common/locales/zh/faq.json @@ -23,9 +23,9 @@ "webFaqAnswer6": "当你等级升到3的时候,就会解锁掉落系统。每当你完成任务时,你就会有一定的机率收到宠物蛋、孵化药水,或是喂养宠物的食物。当你收到时系统就会自动存入「背包」>「市场」。\n

\n想要孵化宠物,你需要同时拥有宠物蛋和孵化药水各一。点选宠物蛋确认你要孵化的种类,然后选择孵化药水就能够确认宠物的颜色啰!孵化完成后你可以到「背包」>「宠物」将你的宠物装备到角色上。\n

\n你也可以用喂食的方式让宠物进化成坐骑。点选「背包」>「宠物」后选择宠物,这时画面右方会出现选单,点选食物然后「喂食」就可以了!你会看到一条绿色的状态列随着你喂食次数而增长,当状态列额满后就会进化成坐骑。这需要花点时间,不过如果你能找到宠物最喜欢的食物,就可以加速宠物进化的速度啰!请多多尝试食物种类或者看这个[see the spoilers here](http://habitica.wikia.com/wiki/Food#Food_Preferences)。\n当你拥有了一只座骑,你可以到「背包」>「坐骑」将它装备到角色上。\n

\n当你完成某些任务卷轴时,你也可能收到任务宠物蛋。 (你可以看看下面有一些关于任务卷轴的介绍)。", "faqQuestion7": "我怎样才能够成为战士、法师、盗贼或是医师?", "iosFaqAnswer7": "在等级10的时候,你可以选择成为战士、法师、盗贼或是医者。 (所有玩家在一开始都会被系统默认为是战士直到你升等为10。) 每种职业都有各自的优点以及不同的装备选择,当你等级11时还能够施放职业技能。战士可以很轻松地击退魔王,还能够抵挡来自任务的伤害,同时也是队伍攻击主力。法师也能够给予魔王有效的攻击,等级提升快速且能够帮助队伍的成员补充魔力。盗贼能获得最多金币,也是能捡到最多掉落物品的职业,而这些优点也能回馈给队伍。最后是医师,医师拥有特殊技能可以治愈他们自身以及队伍成员的生命值。\n\n如果你还没能够决定该选择哪种作为职业的话--举例,如果你觉得与​​其马上选择职业,不如先补足目前所需的装备的话--你可以点选「之后再决定」,等你觉得时机到了就可以到「选单」>「选择职业」。", - "webFaqAnswer7": "At level 10, you can choose to become a Warrior, Mage, Rogue, or Healer. (All players start as Warriors by default.) Each Class has different equipment options, different Skills that they can cast after level 11, and different advantages. Warriors can easily damage Bosses, withstand more damage from their tasks, and help make their party tougher. Mages can also easily damage Bosses, as well as level up quickly and restore Mana for their party. Rogues earn the most Gold and find the most item drops, and they can help their party do the same. Finally, Healers can heal themselves and their party members.\n

\n If you don't want to choose a Class immediately -- for example, if you are still working to buy all the gear of your current class -- you can click \"Opt Out\" and re-enable it later under User > Stats.", - "faqQuestion8": "What is the blue stat bar that appears in the Header after level 10?", - "iosFaqAnswer8": "The blue bar that appeared when you hit level 10 and chose a Class is your Mana bar. As you continue to level up, you will unlock special Skills that cost Mana to use. Each Class has different Skills, which appear after level 11 under Menu > Use Skills. Unlike your health bar, your Mana bar does not reset when you gain a level. Instead, Mana is gained when you complete Good Habits, Dailies, and To-Dos, and lost when you indulge bad Habits. You'll also regain some Mana overnight -- the more Dailies you completed, the more you will gain.", + "webFaqAnswer7": "在达到第 10级时,你可以在战士,法师,盗贼和医师当中选择自己的职业(所有玩家的初始职业都是战士)。每个职业有不同的装备选择和在11级时可以使用的技能,以及不同的优点。战士可以很轻松地击退BOSS们,还能够抵挡来自任务的伤害,同时也是队伍的凝聚力。法师也能够给予魔王有效的攻击,等级提升快速且能够帮助队伍的成员补充魔力。盗贼能赚取最多的金币,也是能捡到最多掉落物品的职业,而这些优点也能回馈给队伍。最后,医师拥有特殊技能可以治愈他们自身以及队伍成员的生命值。\n

\n如果你还不想立刻选择职业的话--比如,如果你觉得与​​其马上选择职业,不如先补足目前所需的装备的--你可以点选「之后再决定」,等你觉得时机到了就可以到「选单」>「选择职业」。", + "faqQuestion8": "在达到第10级成为医师以后,头像里出现的蓝条是什么?", + "iosFaqAnswer8": "在你达到第10级,选择一个职业之后出现在头像里的蓝条是你的法力条。在你接下来不断升级的过程中,你会解锁各种特殊技能,它们需要耗费魔法才能使用。每个职业都有不同技能,在到达11级以后会在 目录 > 使用技能 下面出现。和你的健康值不同,你的法力条在你升级时不会回复,只有在培养了好的习惯,完成了每日任务和待办事项时才会获取法力。每过一夜你也会回复小部分的法力——完成的日常任务越多,回复的法力也越多。", "webFaqAnswer8": "The blue bar that appeared when you hit level 10 and chose a Class is your Mana bar. As you continue to level up, you will unlock special Skills that cost Mana to use. Each Class has different Skills, which appear after level 11 in a special section in the Rewards Column. Unlike your Health bar, your Mana bar does not reset when you gain a level. Instead, Mana is gained when you complete Good Habits, Dailies, and To-Dos, and lost when you indulge bad Habits. You’ll also regain some Mana overnight -- the more Dailies you completed, the more you will gain.", "faqQuestion9": "我怎么和怪兽战斗,继续任务?", "iosFaqAnswer9": "First, you need to join or start a Party (see above). Although you can battle monsters alone, we recommend playing in a group, because this will make Quests much easier. Plus, having a friend to cheer you on as you accomplish your tasks is very motivating!\n\n Next, you need a Quest Scroll, which are stored under Menu > Items. There are three ways to get a scroll:\n\n - At level 15, you get a Quest-line, aka three linked quests. More Quest-lines unlock at levels 30, 40, and 60 respectively. \n - When you invite people to your Party on the [website](https://habitica.com/#/options/groups/party), you'll be rewarded with the Basi-List Scroll! (We will add this feature to the app in a future update.)\n - You can buy Quests from the Quests Page on the [website](https://habitica.com/#/options/inventory/quests) for gold and gems. (We will add this feature to the app in a future update.)\n\n To battle the Boss or collect items for a Collection Quest, simply complete your tasks normally, and they will be tallied into damage overnight. (Reloading by pulling down on the screen may be required to see the Boss's health bar go down.) If you are fighting a Boss and you missed any Dailies, the Boss will damage your Party at the same time that you damage the Boss. \n\n After level 11 Mages and Warriors will gain Skills that allow them to deal additional damage to the Boss, so these are excellent classes to choose at level 10 if you want to be a heavy hitter.", @@ -34,11 +34,11 @@ "iosFaqAnswer10": "Gems are purchased with real money by tapping on the gem icon in the header. When people buy gems, they are helping us to keep the site running. We're very grateful for their support!\n\n In addition to buying gems directly, there are three other ways players can gain gems:\n\n * Win a Challenge on the [website](https://habitica.com) that has been set up by another player under Social > Challenges. (We will be adding Challenges to the app in a future update!)\n * Subscribe on the [website](https://habitica.com/#/options/settings/subscription) and unlock the ability to buy a certain number of gems per month.\n * Contribute your skills to the Habitica project. See this wiki page for more details: [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica).\n\n Keep in mind that items purchased with gems do not offer any statistical advantages, so players can still make use of the app without them!", "webFaqAnswer10": "Gems are [purchased with real money](https://habitica.com/#/options/settings/subscription), although [subscribers](https://habitica.com/#/options/settings/subscription) can purchase them with Gold. When people subscribe or buy Gems, they are helping us to keep the site running. We're very grateful for their support!\n

\n In addition to buying Gems directly or becoming a subscriber, there are two other ways players can gain Gems:\n

\n * Win a Challenge that has been set up by another player under Social > Challenges.\n * Contribute your skills to the Habitica project. See this wiki page for more details: [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica)\n

\n Keep in mind that items purchased with Gems do not offer any statistical advantages, so players can still make use of the site without them!", "faqQuestion11": "我怎么才能报告一个bug,或者请求增加功能?", - "iosFaqAnswer11": "You can report a bug, request a feature, or send feedback under Menu > Report a Bug and Menu > Send Feedback! We'll do everything we can to assist you.", + "iosFaqAnswer11": "你可以在菜单>报告bug以及菜单>提供反馈下面报告bug,请求增加功能,或者提供你的反馈。我们会尽力协助你。", "webFaqAnswer11": "Bug reports are collected on GitHub. Go to [Help > Report a Bug](https://github.com/HabitRPG/habitrpg/issues/2760) and follow the instructions. Don't worry, we'll get you fixed up soon!\n

\n Feature requests are collected on Trello. Go to [Help > Request a Feature](https://trello.com/c/odmhIqyW/440-read-first-table-of-contents) and follow the instructions. Ta-da!", - "faqQuestion12": "How do I battle a World Boss?", - "iosFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and skills will damage the Boss as usual.\n\n You can also be in a normal Quest at the same time. Your tasks and skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.", - "webFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and skills will damage the Boss as usual.\n

\n You can also be in a normal Quest at the same time. Your tasks and skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n

\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n

\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.", - "iosFaqStillNeedHelp": "If you have a question that isn't on this list, come ask in the Tavern chat under Menu > Tavern! We're happy to help.", - "webFaqStillNeedHelp": "If you have a question that isn't on this list, come ask in the [Newbies Guild](https://habitica.com/#/options/groups/guilds/5481ccf3-5d2d-48a9-a871-70a7380cee5a)! We're happy to help." + "faqQuestion12": "如何参与世界级的首领战?", + "iosFaqAnswer12": "世界级首领是出现在酒馆的特殊怪物。所有活跃的玩家都会自动参与首领战,玩家们的完成的任务和技能都会对首领造成伤害。\n\n你可以像平时那样完成探索任务。你完成的任务和技能会被算入世界级首领以及你队伍首领的进度当中。\n\n世界级首领并不会伤害你以及你的账户。它会有一个愤怒值,取决于用户跳过的每日任务。如果愤怒值满了,它会攻击一个NPC并使这个NPC的形象产生永久性改变。\n\n你可以获知更多关于过去的[世界级首领的信息]。\n请参阅(http://habitica.wikia.com/wiki/World_Bosses) ", + "webFaqAnswer12": "世界级首领是出现在酒馆的特殊怪物。所有活跃的玩家都会自动参与首领战,玩家们的完成的任务和技能都会对首领造成伤害。\n

\n你可以像平时那样完成探索任务。你完成的任务和技能会被算入世界级首领以及你队伍首领的进度当中。\n

\n世界级首领并不会伤害你以及你的账户。它会有一个愤怒值,取决于用户跳过的每日任务。如果愤怒值满了,它会攻击一个NPC并使这个NPC的形象产生永久性改变。\n

\n你可以获知更多关于过去的[世界级首领的信息]。\n请参阅(http://habitica.wikia.com/wiki/World_Bosses) ", + "iosFaqStillNeedHelp": "如果你的问题没有在这里被列出来,可以到 目录 > 酒馆下的酒馆聊天来询问!我们很乐意帮忙。", + "webFaqStillNeedHelp": "如果你的问题没有在这里被列出来,可以到 [新手工会] (https://habitica.com/#/options/groups/guilds/5481ccf3-5d2d-48a9-a871-70a7380cee5a) 来咨询!我们很乐意帮忙。" } \ No newline at end of file diff --git a/common/locales/zh/front.json b/common/locales/zh/front.json index 5fa654db02..d3d86f3f6b 100644 --- a/common/locales/zh/front.json +++ b/common/locales/zh/front.json @@ -2,10 +2,10 @@ "FAQ": "常问问题", "accept1Terms": "我同意接受", "accept2Terms": "和", - "alexandraQuote": "Couldn't NOT talk about [Habitica] during my speech in Madrid. Must-have tool for freelancers who still need a boss.", - "althaireQuote": "Having a quest constantly on really motivates me to do all my dailies and do all my to-dos. My biggest motivation is not letting my party down.", - "andeeliaoQuote": "Awesome product, just started a few days ago and already more conscious and productive with my time!", - "autumnesquirrelQuote": "I'm procrastinating less on work and housework and pay bills on time.", + "alexandraQuote": "忍不住在马德里做演讲时提到了[Habitica],对依然需要一个老板管着的自由职业者来说,这个你必须拥有。", + "althaireQuote": "持续地去完成任务真的能鼓励我去完成我每天要做的事和其他所有待办事项,激励我最多的是我不能辜负我的战友。", + "andeeliaoQuote": "超赞的东西,前几天刚开始尝试,现在已经让我的生活变得更加充实丰富!", + "autumnesquirrelQuote": "我在工作,做家务,付账单的时候已经不那么拖延症了。", "businessSample1": "Confirm 1 page of Inventory", "businessSample2": "20分钟的文档整理", "businessSample3": "整理收件箱", @@ -39,14 +39,14 @@ "email": "邮箱", "emailNewPass": "把新密码发到我的邮箱", "evagantzQuote": "My very first dentist appointment where the hygienist was actually excited about my flossing habits. Thanks [Habitica]!", - "examplesHeading": "Players use Habitica to manage...", + "examplesHeading": "玩家们用Habitica来管理……", "featureAchievementByline": "想做一件非常棒的事情吗?炫耀一下得到的徽章吧!", "featureAchievementHeading": "成就徽章", "featureEquipByline": "在商店用你的任务奖励去购买限量的装备,药水和其他的虚拟物品吧!", "featureEquipHeading": "装备和其他", - "featurePetByline": "Eggs and items drop when you complete your tasks. Be as productive as possible to collect pets and mounts!", + "featurePetByline": "完成你的任务时就可以收到掉落的宠物蛋或道具,尽可能勤快地完成任务,去收集宠物和坐骑!", "featurePetHeading": "宠物和坐骑", - "featureSocialByline": "Join common-interest groups with like-minded people. Create Challenges to compete against other users.", + "featureSocialByline": "加入志同道合的伙伴们,设立挑战来互相竞赛。", "featureSocialHeading": "Social play", "featuredIn": "Featured in", "featuresHeading": "We also feature...", @@ -57,24 +57,24 @@ "forgotPass": "找回密码", "frabjabulousQuote": "[Habitica] is the reason I got a killer, high-paying job... and even more miraculous, I'm now a daily flosser!", "free": "免费加入", - "gamifyButton": "Gamify your life today!", + "gamifyButton": "生活即游戏!", "goalSample1": "练习钢琴1小时", - "goalSample2": "Work on article for publication", - "goalSample3": "Work on blog post", - "goalSample4": "Japanese lesson on Duolingo", + "goalSample2": "写要发表的文章", + "goalSample3": "创作博客文章", + "goalSample4": "Duolingo上的日语课程", "goalSample5": "阅读一篇论文", "goals": "目标", - "health": "生命值", + "health": "健康", "healthSample1": "喝矿泉水/汽水", - "healthSample2": "口香糖/香烟", - "healthSample3": "Take Stairs/Elevator", + "healthSample2": "嚼口香糖/抽烟", + "healthSample3": "走楼梯/乘电梯", "healthSample4": "吃健康食品/吃垃圾食品", "healthSample5": "锻炼到出汗1小时", "history": "历史", - "infhQuote": "[Habitica] has really helped me impart structure to my life in graduate school.", + "infhQuote": "[Habitica]真的帮了我,让我把研究生生活整理得井井有条。", "invalidEmail": "执行密码重置需要一个有效的电子邮件地址。", "irishfeet123Quote": "I've had horrible habits with clearing my place completely after meals and leaving cups all over the place. [Habitica] has cured that!", - "joinOthers": "Join 250,000 people making it fun to achieve goals!", + "joinOthers": "加入250,000个游戏人生的伙伴!", "kazuiQuote": "Before [Habitica], I was stuck with my thesis, as well as dissatisfied with my personal discipline regarding housework and things like learning vocabulary and studying Go theory. It turns out breaking down these tasks into smaller manageable checklists is quite the thing to keep me motivated and constantly working.", "landingadminlink": "管理包", "landingend": "还没被说服?", @@ -118,10 +118,10 @@ "marketing4Lead3-3": "希望学到更多?", "marketing4Lead3Title": "游戏化任何事情", "mobileAndroid": "安卓", - "mobileIOS": "iOS", - "motivate": "Motivate yourself and your team!", - "motivate1": "Motivate yourself to do anything.", - "motivate2": "Get Organized. Get Motivated. Get Gold.", + "mobileIOS": "IOS", + "motivate": "鼓励自己,鼓励战友!", + "motivate1": "鼓励自己去做任何事情。", + "motivate2": "培养条理,收获动力,赢取金币!", "passConfirm": "确认密码", "passMan": "如果你用密码管理工具 (如 1Password) 登录出现问题,尝试手动用用户名密码登录。", "password": "密码", @@ -137,20 +137,20 @@ "punishHeading2": "失去生命值", "questByline1": "Playing with your friends keeps you accountable for your tasks.", "questByline2": "Issue each other Challenges to complete a goal together!", - "questHeading1": "Battle monsters with your friends!", + "questHeading1": "与朋友一起大战怪兽!", "questHeading2": "If you slack off, they all get hurt!", "register": "注册", "rewardByline1": "Spend gold on virtual and real-life rewards.", - "rewardByline2": "Instant rewards keep you motivated!", - "rewardHeading": "Complete a task to earn gold!", - "sampleDailies": "Sample Dailies", - "sampleHabits": "Sample Habits", + "rewardByline2": "即时奖励,给你持续动力!", + "rewardHeading": "达成目标,就能赚取金币!", + "sampleDailies": "每日任务示例", + "sampleHabits": "习惯培养示例", "sampleToDo": "待办的例子", "school": "学校", "schoolSample1": "完成1项作业", "schoolSample2": "学习1小时", - "schoolSample3": "Meet with Study Group", - "schoolSample4": "Notes for 1 Chapter", + "schoolSample3": "和学习小组碰头", + "schoolSample4": "第1章的注释", "schoolSample5": "读1个章节", "sixteenBitFilQuote": "I'm getting my jobs and tasks done in record time thanks to [Habitica]. I'm just always so eager to reach my next level-up!", "skysailorQuote": "My party and our quests keep me engaged in the game, which keeps me motivated to get things done and change my life in positive ways", @@ -158,14 +158,14 @@ "supermouse35Quote": "I'm exercising more and I haven't forgotten to take my meds for months! Thanks, Habit. :D", "sync": "同步", "tasks": "任务", - "teamSample1": "Outline Meeting Itinerary for Tuesday", + "teamSample1": "计划星期二的会议日程", "teamSample2": "Brainstorm Growth Hacking", - "teamSample3": "Discuss this week's KPIs", + "teamSample3": "讨论本周的KPI", "teams": "团队", "terms": "使用条款", - "testimonialHeading": "What people say...", + "testimonialHeading": "看看大家怎么说……", "tutorials": "教程", - "unlockByline1": "Achieve your goals and level up.", + "unlockByline1": "完成目标,提升等级。", "unlockByline2": "Unlock new motivational tools, such as pet collecting, random rewards, spell-casting, and more!", "unlockHeadline": "当你保持生产,你会解锁新内容哦!", "useUUID": "用户ID / API令牌 (面向 Facebook 用户)", @@ -173,11 +173,11 @@ "watchVideos": "观看视频", "work": "工作", "zelahQuote": "With [Habitica], I can be persuaded to go to bed on time by the thought of gaining points for an early night or losing health for a late one!", - "reportAccountProblems": "Report Account Problems", - "reportCommunityIssues": "Report Community Issues", + "reportAccountProblems": "报告账户问题", + "reportCommunityIssues": "报告社区问题", "generalQuestionsSite": "General Questions about the Site", "businessInquiries": "Business Inquiries", "merchandiseInquiries": "Merchandise Inquiries", "marketingInquiries": "Marketing/Social Media Inquiries", - "tweet": "Tweet" + "tweet": "发布推特" } \ No newline at end of file diff --git a/common/locales/zh/gear.json b/common/locales/zh/gear.json index 7ded31d382..7c6363a749 100644 --- a/common/locales/zh/gear.json +++ b/common/locales/zh/gear.json @@ -138,20 +138,20 @@ "weaponMystery201411Notes": "刺伤你的仇敌或是插进你最爱的食物——这把多才多艺的叉子可是无所不能!没有属性加成。2014年11月捐助者物品。", "weaponMystery201502Text": "爱与真理之微光翅膀法杖", "weaponMystery201502Notes": "为了翅膀!为了爱!也为了真理!没有属性加成。2015年2月捐赠者物品。", - "weaponMystery201505Text": "Green Knight Lance", + "weaponMystery201505Text": "绿色骑士长矛", "weaponMystery201505Notes": "This green and silver lance has unseated many opponents from their mounts. Confers no benefit. May 2015 Subscriber Item.", "weaponMystery301404Text": "蒸汽朋克手杖", "weaponMystery301404Notes": "特别适合在城里散步。3015年3月订阅者物品。没有属性加成。", - "weaponArmoireBasicCrossbowText": "Basic Crossbow", + "weaponArmoireBasicCrossbowText": "基本款弩", "weaponArmoireBasicCrossbowNotes": "This crossbow can pierce a task's armor from very far away! Increases Strength by <%= str %>, Perception by <%= per %>, and Constitution by <%= con %>. Enchanted Armoire: Independent Item.", "weaponArmoireLunarSceptreText": "Soothing Lunar Sceptre", "weaponArmoireLunarSceptreNotes": "The healing power of this wand waxes and wanes. Increases Constitution by <%= con %> and Intelligence by <%= int %>. Enchanted Armoire: Soothing Lunar Set (Item 3 of 3).", - "weaponArmoireRancherLassoText": "Rancher Lasso", + "weaponArmoireRancherLassoText": "牧场用套索", "weaponArmoireRancherLassoNotes": "Lassos: the ideal tool for rounding up and wrangling. Increases Strength by <%= str %>, Perception by <%= per %>, and Intelligence by <%= int %>. Enchanted Armoire: Rancher Set (Item 3 of 3).", "weaponArmoireMythmakerSwordText": "Mythmaker Sword", "weaponArmoireMythmakerSwordNotes": "Though it may seem humble, this sword has made many mythic heroes. Increases Perception and Strength by <%= attrs %> each. Enchanted Armoire: Golden Toga Set (Item 3 of 3)", - "weaponArmoireIronCrookText": "Iron Crook", - "weaponArmoireIronCrookNotes": "Fiercely hammered from iron, this iron crook is good at herding sheep. Increases Perception and Strength by <%= attrs %> each. Enchanted Armoire: Horned Iron Set (Item 3 of 3)", + "weaponArmoireIronCrookText": "钢铁手杖", + "weaponArmoireIronCrookNotes": "由铁打制而成。这个钢铁手杖十分适合用来驱赶羊群。加强感知和力量 <%= attrs %> 点。魔法衣橱:钢铁号角系列(第3件物品)", "weaponArmoireGoldWingStaffText": "Gold Wing Staff", "weaponArmoireGoldWingStaffNotes": "The wings on this staff constantly flutter and twist. Increases all attributes by <%= attrs %> each. Enchanted Armoire: Independent Item.", "weaponArmoireBatWandText": "Bat Wand", diff --git a/common/locales/zh/messages.json b/common/locales/zh/messages.json index c9ab4f552d..a210354183 100644 --- a/common/locales/zh/messages.json +++ b/common/locales/zh/messages.json @@ -31,19 +31,25 @@ "armoireEquipment": "<%= image %> 你发现了一件稀有装备!恭喜你 <%= dropText %>! ", "armoireFood": "<%= image %> 你找到了 <%= dropArticle %><%= dropText %>. 它是用来做什么的?", "armoireExp": "你和大衣柜展开了殊死搏斗,并赢得了经验,尝尝这个吧!", - "messageInsufficientGems": "Not enough gems!", - "messageAuthPasswordMustMatch": ":password and :confirmPassword don't match", - "messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required", - "messageAuthUsernameTaken": "Username already taken", - "messageAuthEmailTaken": "Email already taken", - "messageAuthNoUserFound": "No user found.", - "messageAuthMustBeLoggedIn": "You must be logged in.", + "messageInsufficientGems": "宝石不够了!", + "messageAuthPasswordMustMatch": "密码不匹配", + "messageAuthCredentialsRequired": "需要输入用户名,邮箱,密码和确认密码", + "messageAuthUsernameTaken": "用户名已被使用", + "messageAuthEmailTaken": "邮箱已被使用", + "messageAuthNoUserFound": "没有找到这个用户", + "messageAuthMustBeLoggedIn": "你必须登入", "messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request", - "messageGroupNotFound": "Group not found or you don't have access.", - "messageGroupAlreadyInParty": "Already in a party, try refreshing.", - "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", - "messageGroupRequiresInvite": "Can't join a group you're not invited to.", - "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageGroupNotFound": "没有找到这个小组,或者你没有权限", + "messageGroupAlreadyInParty": "你已加入这个队伍,请刷新页面", + "messageGroupOnlyLeaderCanUpdate": "只有小组官员才可以更新小组信息", + "messageGroupRequiresInvite": "无法加入没有邀请你的小组", + "messageGroupCannotRemoveSelf": "你不能将自己移除", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" } \ No newline at end of file diff --git a/common/locales/zh/npc.json b/common/locales/zh/npc.json index f9acf8d9f0..d146951176 100644 --- a/common/locales/zh/npc.json +++ b/common/locales/zh/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "哦……如果你正在一场BOSS战当中,你仍然会因为队友未完成的每日任务受到BOSS的伤害……同样,你对Boss的伤害(或者道具的收集)在你离开客栈之前不会结算……", "alexander": "商人Alexander", "welcomeMarket": "欢迎来到市场!在这里购买稀有的蛋和药水!卖掉你多余的物品!委托服务!来瞧瞧我们能为你提供什么。", - "sellForGold": "以<%= gold %>金币售出<%= item %>", - "sellEggForGold": "以<%= gold %> 金币卖出<%= itemType %> 蛋", - "sellPotionForGold": "以 <%= gold %>金币出售<%= itemType %>药水", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "购买宝石", "justin": "Justin", "ian": "岚", diff --git a/common/locales/zh/questscontent.json b/common/locales/zh/questscontent.json index ade203aece..f9765370e1 100644 --- a/common/locales/zh/questscontent.json +++ b/common/locales/zh/questscontent.json @@ -95,7 +95,7 @@ "questGoldenknight2Notes": "

身上带着上百个Habitican们的证据,你最终面对着黄金骑士,开始一个接着一个地对她陈述Habitican们对她的不满,“还有@Pfeffernusse说你总是不停的讨价还价-”黄金骑士举起了她的手打断了你,嘲弄道,“拜托,这些人只不过是嫉妒我的成功。比起抱怨,他们更应该像我一样努力的工作!也许我应该向你展示一下,就像我一样,勤奋所能给予你的力量!”说着她举起狼牙棒,准备攻击你!

", "questGoldenknight2Boss": "黄金骑士", "questGoldenknight2DropGoldenknight3Quest": "黄金骑士项链第3部:钢铁骑士 (卷轴)", - "questGoldenknight3Text": "The Golden Knight, Part 3: The Iron Knight", + "questGoldenknight3Text": "黄金骑士第三部:钢铁骑士", "questGoldenknight3Notes": "

@Jon Arinbjorn cries out to you to get your attention. In the aftermath of your battle, a new figure has appeared. A knight coated in stained-black iron slowly approaches you with sword in hand. The Golden Knight shouts to the figure, \"Father, no!\" but the knight shows no signs of stopping. She turns to you and says, \"I am sorry. I have been a fool, with a head too big to see how cruel I have been. But my father is crueler than I could ever be. If he isn't stopped he'll destroy us all. Here, use my morningstar and halt the Iron Knight!\"

", "questGoldenknight3Completion": "

铿锵一声,钢铁骑士双膝跪地倒下了。“你太强了,” 他喘着粗气说, “今天,我被轻而易举地打败了。”黄金骑士向你走来,说道:“ 谢谢你。我相信我们都从与你的相遇中学会了谦逊。我会和我的父亲好好谈谈,并解释那些针对我们的怨言。也许是时候向其他Habitican道歉了。” 她考虑了一会儿,又向你转过身来,“拿上它吧,作为我们给你的礼物,我希望你能带上我的流星锤。它现在是你的了。”

", "questGoldenknight3Boss": "钢铁骑士", @@ -228,28 +228,28 @@ "questDilatoryDistress2RageTitle": "Swarm Respawn", "questDilatoryDistress2RageDescription": "Swarm Respawn: This bar fills when you don't complete your Dailies. When it is full, the Water Skull Swarm will heal 30% of its remaining health!", "questDilatoryDistress2RageEffect": "`Water Skull Swarm uses SWARM RESPAWN!`\n\nEmboldened by their victories, more skulls pour forth from the crevasse, bolstering the swarm!", - "questDilatoryDistress2DropSkeletonPotion": "Skeleton Hatching Potion", - "questDilatoryDistress2DropCottonCandyBluePotion": "Cotton Candy Blue Hatching Potion", + "questDilatoryDistress2DropSkeletonPotion": "骷髅孵化药水", + "questDilatoryDistress2DropCottonCandyBluePotion": "蓝色棉花糖孵化药水", "questDilatoryDistress2DropHeadgear": "Fire Coral Circlet (Headgear)", "questDilatoryDistress3Text": "Dilatory Distress, Part 3: Not a Mere Maid", "questDilatoryDistress3Notes": "You follow the mantis shrimps deep into the Crevasse, and discover an underwater fortress. Princess Adva, escorted by more watery skulls, awaits you inside the main hall. \"My father has sent you, has he not? Tell him I refuse to return. I am content to stay here and practice my sorcery. Leave now, or you shall feel the wrath of the ocean's new queen!\" Adva seems very adamant, but as she speaks you notice a strange, ruby pendant on her neck glowing ominously... Perhaps her delusions would cease should you break it?", "questDilatoryDistress3Completion": "Finally, you manage to pull the bewitched pendant from Adva's neck and throw it away. Adva clutches her head. \"Where am I? What happened here?\" After hearing your story, she frowns. \"This necklace was given to me by a strange ambassador - a lady called 'Tzina'. I don't remember anything after that!\"

Back at Dilatory, Manta is overjoyed by your success. \"Allow me to reward you with this trident and shield! I ordered them from @aiseant and @starsystemic as a gift for Adva, but... I'd rather not put weapons in her hands any time soon.\"", "questDilatoryDistress3Boss": "Adva, the Usurping Mermaid", - "questDilatoryDistress3DropFish": "Fish (Food)", + "questDilatoryDistress3DropFish": "鱼(食物)", "questDilatoryDistress3DropWeapon": "Trident of Crashing Tides (Weapon)", "questDilatoryDistress3DropShield": "Moonpearl Shield (Shield-Hand Item)", - "questCheetahText": "Such a Cheetah", + "questCheetahText": "真是一个猎豹", "questCheetahNotes": "As you hike across the Sloensteadi Savannah with your friends @PainterProphet, @tivaquinn, @Unruly Hyena, and @Crawford, you're startled to see a Cheetah screeching past with a new Habitican clamped in its jaws. Under the Cheetah's scorching paws, tasks burn away as though complete -- before anyone has the chance to actually finish them! The Habitican sees you and yells, \"Please help me! This Cheetah is making me level too quickly, but I'm not getting anything done. I want to slow down and enjoy the game. Make it stop!\" You fondly remember your own fledgling days, and know that you have to help the newbie by stopping the Cheetah!", "questCheetahCompletion": "The new Habitican is breathing heavily after the wild ride, but thanks you and your friends for your help. \"I'm glad that Cheetah won't be able to grab anyone else. It did leave some Cheetah eggs for us, so maybe we can raise them into more trustworthy pets!\"", "questCheetahBoss": "猎豹", - "questCheetahDropCheetahEgg": "Cheetah (Egg)", - "questCheetahUnlockText": "Unlocks purchasable Cheetah eggs in the Market", + "questCheetahDropCheetahEgg": "猎豹(蛋)", + "questCheetahUnlockText": "解锁猎豹蛋购买功能", "questHorseText": "Ride the Night-Mare", "questHorseNotes": "While relaxing in the Tavern with @beffymaroo and @JessicaChase, the talk turns to good-natured boasting about your adventuring accomplishments. Proud of your deeds, and perhaps getting a bit carried away, you brag that you can tame any task around. A nearby stranger turns toward you and smiles. One eye twinkles as he invites you to prove your claim by riding his horse.\nAs you all head for the stables, @UncommonCriminal whispers, \"You may have bitten off more than you can chew. That's no horse - that's a Night-Mare!\" Looking at its stamping hooves, you begin to regret your words...", "questHorseCompletion": "It takes all your skill, but finally the horse stamps a couple of hooves and nuzzles you in the shoulder before allowing you to mount. You ride briefly but proudly around the Tavern grounds while your friends cheer. The stranger breaks into a broad grin.\n\"I can see that was no idle boast! Your determination is truly impressive. Take these eggs to raise horses of your own, and perhaps we'll meet again one day.\" You take the eggs, the stranger tips his hat... and vanishes.", "questHorseBoss": "Night-Mare", - "questHorseDropHorseEgg": "Horse (Egg)", - "questHorseUnlockText": "Unlocks purchasable Horse eggs in the Market", + "questHorseDropHorseEgg": "马(蛋)", + "questHorseUnlockText": "解锁购买马蛋功能", "questBurnoutText": "Burnout and the Exhaust Spirits", "questBurnoutNotes": "It is well past midnight, still and stiflingly hot, when Redphoenix and scout captain Kiwibot abruptly burst through the city gates. \"We need to evacuate all the wooden buildings!\" Redphoenix shouts. \"Hurry!\"

Kiwibot grips the wall as she catches her breath. \"It's draining people and turning them into Exhaust Spirits! That's why everything was delayed. That's where the missing people have gone. It's been stealing their energy!\"

\"'It'?'\" asks Lemoness.

And then the heat takes form.

It rises from the earth in a billowing, twisting mass, and the air chokes with the scent of smoke and sulphur. Flames lick across the molten ground and contort into limbs, writhing to horrific heights. Smoldering eyes snap open, and the creature lets out a deep and crackling cackle.

Kiwibot whispers a single word.

\"Burnout.\"", "questBurnoutCompletion": "Burnout is DEFEATED!

With a great, soft sigh, Burnout slowly releases the ardent energy that was fueling its fire. As the monster curls quietly into ashes, its stolen energy shimmers through the air, rejuvenating the Exhaust Spirits and returning them to their true forms.

Ian, Daniel, and the Seasonal Sorceress cheer as Habiticans rush to greet them, and all the missing citizens of the Flourishing Fields embrace their friends and families. The final Exhaust Spirit transforms into the Joyful Reaper herself!

\"Look!\" whispers @Baconsaur, as the ashes begin to glitter. Slowly, they resolve into hundreds of shining phoenixes!

One of the glowing birds alights on the Joyful Reaper's skeletal arm, and she grins at it. \"It has been a long time since I've had the exquisite privilege to behold a phoenix in the Flourishing Fields,\" she says. \"Although given recent occurrences, I must say, this is highly thematically appropriate!\"

Her tone sobers, although (naturally) her grin remains. \"We're known for being hard-working here, but we are also known for our feasts and festivities. Rather ironic, I suppose, that as we strove to plan a spectacular party, we refused to permit ourselves any time for fun. We certainly won't make the same mistake twice!\"

She claps her hands. \"Now - let's celebrate!\"", @@ -257,15 +257,15 @@ "questBurnoutBoss": "Burnout", "questBurnoutBossRageTitle": "Exhaust Strike", "questBurnoutBossRageDescription": "When this gauge fills, Burnout will unleash its Exhaust Strike on Habitica!", - "questBurnoutDropPhoenixPet": "Phoenix (Pet)", - "questBurnoutDropPhoenixMount": "Phoenix (Mount)", + "questBurnoutDropPhoenixPet": "凤凰(宠物)", + "questBurnoutDropPhoenixMount": "凤凰(坐骑)", "questBurnoutBossRageQuests": "`Burnout uses EXHAUST STRIKE!`\n\nOh no! Despite our best efforts, we've let some Dailies get away from us, and now Burnout is inflamed with energy! With a crackling snarl, it engulfs Ian the Quest Master in a surge of spectral fire. As fallen quest scrolls smolder, the smoke clears, and you see that Ian has been drained of energy and turned into a drifting Exhaust Spirit!\n\nOnly defeating Burnout can break the spell and restore our beloved Quest Master. Let's keep our Dailies in check and defeat this monster before it attacks again!", "questBurnoutBossRageSeasonalShop": "`Burnout uses EXHAUST STRIKE!`\n\nAhh!!! Our incomplete Dailies have fed the flames of Burnout, and now it has enough energy to strike again! It lets loose a gout of spectral flame that sears the Seasonal Shop. You're horrified to see that the cheery Seasonal Sorceress has been transformed into a drooping Exhaust Spirit.\n\nWe have to rescue our NPCs! Hurry, Habiticans, complete your tasks and defeat Burnout before it strikes for a third time!", "questBurnoutBossRageTavern": "`Burnout uses EXHAUST STRIKE!`\n\nMany Habiticans have been hiding from Burnout in the Tavern, but no longer! With a screeching howl, Burnout rakes the Tavern with its white-hot hands. As the Tavern patrons flee, Daniel is caught in Burnout's grip, and transforms into an Exhaust Spirit right in front of you!\n\nThis hot-headed horror has gone on for too long. Don't give up... we're so close to vanquishing Burnout for once and for all!", "questFrogText": "Swamp of the Clutter Frog", "questFrogNotes": "As you and your friends are slogging through the Swamps of Stagnation, @starsystemic points at a large sign. \"Stay on the path -- if you can.\"

\"Surely that isn't hard!\" @RosemonkeyCT says. \"It's broad and clear.\"

But as you continue, you notice that path is gradually overtaken by the muck of the swamp, laced with bits of strange blue debris and clutter, until it's impossible to proceed.

As you look around, wondering how it got this messy, @Jon Arjinborn shouts, \"Look out!\" An angry frog leaps from the sludge, clad in dirty laundry and lit by blue fire. You will have to overcome this poisonous Clutter Frog to progress!", "questFrogCompletion": "The frog cowers back into the muck, defeated. As it slinks away, the blue slime fades, leaving the way ahead clear.

Sitting in the middle of the path are three pristine eggs. \"You can even see the tiny tadpoles and through the clear casing!\" @Breadstrings says. \"Here, you should take them.\"", - "questFrogBoss": "Clutter Frog", - "questFrogDropFrogEgg": "Frog (Egg)", - "questFrogUnlockText": "Unlocks purchasable Frog eggs in the Market" + "questFrogBoss": "一群青蛙", + "questFrogDropFrogEgg": "青蛙 (宠物蛋)", + "questFrogUnlockText": "解锁购买青蛙蛋功能" } \ No newline at end of file diff --git a/common/locales/zh/rebirth.json b/common/locales/zh/rebirth.json index f520784a48..81985bb42d 100644 --- a/common/locales/zh/rebirth.json +++ b/common/locales/zh/rebirth.json @@ -16,9 +16,11 @@ "rebirthEarnAchievement": "你会因为开始一段新冒险而获得一个成就!", "beReborn": "重生", "rebirthAchievement": "你开始了一段新冒险!这是你的第<%= number %>次冒险,你曾经获得的最高级别是<%= level %>级。有这个成就加持,当你开始下一次新冒险会达到更高的水平!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "开始新的冒险", "rebirthText": "开始了<%= rebirths %> 个新的冒险", "rebirthOrb": "使用重生球来重新开始获得级别", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "开始一个1级的新角色并保留成就,物品和任务历史。", "rebirthName": "重生球", "reborn": "重生, 最高级别 <%= reLevel %>" diff --git a/common/locales/zh/settings.json b/common/locales/zh/settings.json index 2b9783b681..fa74b0ee95 100644 --- a/common/locales/zh/settings.json +++ b/common/locales/zh/settings.json @@ -133,11 +133,11 @@ "mysticHourglass": "<%= amount %> 个神秘沙漏", "mysticHourglassText": "神秘沙漏能让你购买几个月之前的神秘道具套装。", "purchasedPlanId": "Recurring $<%= price %> each <%= months %> Month(s) (<%= plan %>)", - "purchasedPlanExtraMonths": "You have <%= months %> months of subscription credit.", - "consecutiveSubscription": "Consecutive Subscription", - "consecutiveMonths": "Consecutive Months:", + "purchasedPlanExtraMonths": "你的剩余捐助时长为: <%= months %> 个月", + "consecutiveSubscription": "连续捐助", + "consecutiveMonths": "持续的月份:", "gemCapExtra": "Gem Cap Extra:", - "mysticHourglasses": "Mystic Hourglasses:", + "mysticHourglasses": "神秘沙漏:", "paypal": "PayPal", - "amazonPayments": "Amazon Payments" + "amazonPayments": "亚马逊支付" } \ No newline at end of file diff --git a/common/locales/zh_TW/messages.json b/common/locales/zh_TW/messages.json index fdc5cbd466..bb90a1e897 100644 --- a/common/locales/zh_TW/messages.json +++ b/common/locales/zh_TW/messages.json @@ -44,6 +44,12 @@ "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", "messageGroupRequiresInvite": "Can't join a group you're not invited to.", "messageGroupCannotRemoveSelf": "You cannot remove yourself!", + "messageGroupChatBlankMessage": "You cannot send a blank message", + "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", + "messageGroupChatFlagOwnMessage": "Can't report your own message.", + "messageGroupChatFlagAlreadyReported": "You have already reported this message", + "messageGroupChatNotFound": "Message not found!", + "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" } \ No newline at end of file diff --git a/common/locales/zh_TW/npc.json b/common/locales/zh_TW/npc.json index b8ae8e65fe..e9c5c35040 100644 --- a/common/locales/zh_TW/npc.json +++ b/common/locales/zh_TW/npc.json @@ -11,9 +11,10 @@ "danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...", "alexander": "商人Alexander", "welcomeMarket": "歡迎來到市場!在這裡買少見的蛋和藥水!賣掉你多餘的物品!委託服務!來瞧瞧我們能為你提供什麼。", - "sellForGold": "以 <%= gold %> 金幣把 <%= item %> 賣掉", - "sellEggForGold": "賣 <%= itemType %> 蛋得到 <%= gold %> 黃金", - "sellPotionForGold": "賣 <%= itemType %> 藥水得到 <%= gold %> 黃金", + "displayItemForGold": "Do you want to sell a <%= itemType %>?", + "displayEggForGold": "Do you want to sell a <%= itemType %> Egg?", + "displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?", + "sellForGold": "Sell it for <%= gold %> Gold", "buyGems": "購買寶石", "justin": "Justin", "ian": "Ian", diff --git a/common/locales/zh_TW/rebirth.json b/common/locales/zh_TW/rebirth.json index e9b0e3597a..5a562937dc 100644 --- a/common/locales/zh_TW/rebirth.json +++ b/common/locales/zh_TW/rebirth.json @@ -1,10 +1,10 @@ { "rebirthNew": "重生:開始新的冒險!", - "rebirthUnlock": "你開啟了「重生」!這個特殊的物品,會讓你從 1 級重新開始遊戲,不過你的任務、成就、寵物等會被保留下來。如果你覺得已經達成了所有目標,用它來開啟全新的視角,體驗新的人生!", + "rebirthUnlock": "你解鎖了「重生」!這個特殊的商品讓你可以回到 1 級重新開始遊戲,並保留你的任務、成就、寵物等紀錄。如果你覺得已經達成了所有目標,就用它來開啟全新的視角,體驗新的人生吧!", "rebirthBegin": "重生:開始新的冒險", - "rebirthStartOver": "Rebirth starts your character over from Level 1.", + "rebirthStartOver": "「重生」讓你的角色重返等級 1 !", "rebirthAdvList1": "生命值完全復原", - "rebirthAdvList2": "You have no Experience, Gold, or Equipment (with the exception of free items like Mystery items).", + "rebirthAdvList2": "你沒有任何經驗值,黃金,或裝備。(除了一些免費的物品例如「神秘物品」)", "rebirthAdvList3": "你的習慣、日常任務、待辦事項會被重置為黃色,連擊數也會被重置。", "rebirthAdvList4": "你會從戰士職業開始,直到你解鎖了新的職業。", "rebirthInherit": "你的新角色繼承了一些前輩的東西:", @@ -16,10 +16,12 @@ "rebirthEarnAchievement": "你會因為開始一段新冒險,而獲得一個成就!", "beReborn": "重生", "rebirthAchievement": "你開始了一段新冒險!這是你的第<%= number %>次冒險,你曾經獲得的最高級別是<%= level %>級。要累積這個成就,你要在獲得更高等級之後,再開始下一次冒險!", + "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "開始新的冒險", "rebirthText": "開始<%= rebirths %> 次新的冒險", - "rebirthOrb": "使用重生球來重新開始,曾經到達級別", + "rebirthOrb": "使用重生之球來歸零曾經到達的級別,重新開始遊戲", + "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", "rebirthPop": "開始一個等級 1 的新角色,並保留成就、物品和任務歷史。", - "rebirthName": "重生球", + "rebirthName": "重生之球", "reborn": "重生,最高級別 <%= reLevel %>" } \ No newline at end of file diff --git a/common/script/content/index.coffee b/common/script/content/index.coffee index 5fd84cb243..0355a1071b 100644 --- a/common/script/content/index.coffee +++ b/common/script/content/index.coffee @@ -1181,13 +1181,13 @@ api.dropHatchingPotions = Golden: value: 5, text: t('hatchingPotionGolden') api.premiumHatchingPotions = - Spooky: value: 2, text: t('hatchingPotionSpooky'), addlNotes: t('premiumPotionAddlNotes'), premium: true, limited: true + Spooky: value: 2, text: t('hatchingPotionSpooky'), limited: true, canBuy: (()->false) _.each api.dropHatchingPotions, (pot,key) -> _.defaults pot, {key, value: 2, notes: t('hatchingPotionNotes', {potText: pot.text}), premium: false, limited: false, canBuy: (()->true)} _.each api.premiumHatchingPotions, (pot,key) -> - _.defaults pot, {key, value: 2, notes: t('hatchingPotionNotes', {potText: pot.text}), premium: true, limited: false, canBuy: (()->true)} + _.defaults pot, {key, value: 2, notes: t('hatchingPotionNotes', {potText: pot.text}), addlNotes: t('premiumPotionAddlNotes'), premium: true, limited: false, canBuy: (()->true)} api.hatchingPotions = {} _.merge(api.hatchingPotions, api.dropHatchingPotions) @@ -1220,16 +1220,16 @@ api.questMounts = _.transform api.questEggs, (m, egg) -> api.food = # Base - Meat: text: t('foodMeat'), target: 'Base', article: '' - Milk: text: t('foodMilk'), target: 'White', article: '' - Potatoe: text: t('foodPotatoe'), target: 'Desert', article: 'a ' - Strawberry: text: t('foodStrawberry'), target: 'Red', article: 'a ' - Chocolate: text: t('foodChocolate'), target: 'Shade', article: '' - Fish: text: t('foodFish'), target: 'Skeleton', article: 'a ' - RottenMeat: text: t('foodRottenMeat'), target: 'Zombie', article: '' - CottonCandyPink: text: t('foodCottonCandyPink'), target: 'CottonCandyPink', article: '' - CottonCandyBlue: text: t('foodCottonCandyBlue'), target: 'CottonCandyBlue', article: '' - Honey: text: t('foodHoney'), target: 'Golden', article: '' + Meat: text: t('foodMeat'), canBuy:(()->true), canDrop:true, target: 'Base', article: '' + Milk: text: t('foodMilk'), canBuy:(()->true), canDrop:true, target: 'White', article: '' + Potatoe: text: t('foodPotatoe'), canBuy:(()->true), canDrop:true, target: 'Desert', article: 'a ' + Strawberry: text: t('foodStrawberry'), canBuy:(()->true), canDrop:true, target: 'Red', article: 'a ' + Chocolate: text: t('foodChocolate'), canBuy:(()->true), canDrop:true, target: 'Shade', article: '' + Fish: text: t('foodFish'), canBuy:(()->true), canDrop:true, target: 'Skeleton', article: 'a ' + RottenMeat: text: t('foodRottenMeat'), canBuy:(()->true), canDrop:true, target: 'Zombie', article: '' + CottonCandyPink: text: t('foodCottonCandyPink'), canBuy:(()->true), canDrop:true, target: 'CottonCandyPink', article: '' + CottonCandyBlue: text: t('foodCottonCandyBlue'), canBuy:(()->true), canDrop:true, target: 'CottonCandyBlue', article: '' + Honey: text: t('foodHoney'), canBuy:(()->true), canDrop:true, target: 'Golden', article: '' Saddle: canBuy:(()->true), text: t('foodSaddleText'), value: 5, notes: t('foodSaddleNotes') @@ -1246,16 +1246,16 @@ api.food = Cake_Red: text: t('foodCakeRed'), target: 'Red', article: '' # Fall - Candy_Skeleton: canBuy:(()->true), canDrop:true, text: t('foodCandySkeleton'), target: 'Skeleton', article: '' - Candy_Base: canBuy:(()->true), canDrop:true, text: t('foodCandyBase'), target: 'Base', article: '' - Candy_CottonCandyBlue: canBuy:(()->true), canDrop:true, text: t('foodCandyCottonCandyBlue'), target: 'CottonCandyBlue', article: '' - Candy_CottonCandyPink: canBuy:(()->true), canDrop:true, text: t('foodCandyCottonCandyPink'), target: 'CottonCandyPink', article: '' - Candy_Shade: canBuy:(()->true), canDrop:true, text: t('foodCandyShade'), target: 'Shade', article: '' - Candy_White: canBuy:(()->true), canDrop:true, text: t('foodCandyWhite'), target: 'White', article: '' - Candy_Golden: canBuy:(()->true), canDrop:true, text: t('foodCandyGolden'), target: 'Golden', article: '' - Candy_Zombie: canBuy:(()->true), canDrop:true, text: t('foodCandyZombie'), target: 'Zombie', article: '' - Candy_Desert: canBuy:(()->true), canDrop:true, text: t('foodCandyDesert'), target: 'Desert', article: '' - Candy_Red: canBuy:(()->true), canDrop:true, text: t('foodCandyRed'), target: 'Red', article: '' + Candy_Skeleton: text: t('foodCandySkeleton'), target: 'Skeleton', article: '' + Candy_Base: text: t('foodCandyBase'), target: 'Base', article: '' + Candy_CottonCandyBlue: text: t('foodCandyCottonCandyBlue'), target: 'CottonCandyBlue', article: '' + Candy_CottonCandyPink: text: t('foodCandyCottonCandyPink'), target: 'CottonCandyPink', article: '' + Candy_Shade: text: t('foodCandyShade'), target: 'Shade', article: '' + Candy_White: text: t('foodCandyWhite'), target: 'White', article: '' + Candy_Golden: text: t('foodCandyGolden'), target: 'Golden', article: '' + Candy_Zombie: text: t('foodCandyZombie'), target: 'Zombie', article: '' + Candy_Desert: text: t('foodCandyDesert'), target: 'Desert', article: '' + Candy_Red: text: t('foodCandyRed'), target: 'Red', article: '' _.each api.food, (food,key) -> _.defaults food, {value: 1, key, notes: t('foodNotes'), canBuy:(()->false), canDrop:false} diff --git a/common/script/src/content/food/base.js b/common/script/src/content/food/base.js index aec05e7b1e..27a84c22d2 100644 --- a/common/script/src/content/food/base.js +++ b/common/script/src/content/food/base.js @@ -3,8 +3,8 @@ import { setFoodDefaults } from '../helpers'; -const CAN_BUY = false; -const CAN_DROP = false; +const CAN_BUY = true; +const CAN_DROP = true; let baseFood = { Meat: { diff --git a/common/script/src/content/food/fall.js b/common/script/src/content/food/fall.js index b9ec1f00fa..385b7c2d34 100644 --- a/common/script/src/content/food/fall.js +++ b/common/script/src/content/food/fall.js @@ -3,8 +3,8 @@ import { setFoodDefaults } from '../helpers'; -const CAN_BUY = true; -const CAN_DROP = true; +const CAN_BUY = false; +const CAN_DROP = false; let candy = { Candy_Skeleton: { diff --git a/common/script/src/content/hatching-potions.js b/common/script/src/content/hatching-potions.js index 38d1fbcb60..feab00328e 100644 --- a/common/script/src/content/hatching-potions.js +++ b/common/script/src/content/hatching-potions.js @@ -43,6 +43,7 @@ let premiumPotions = { addlNotes: t('premiumPotionAddlNotes'), premium: true, limited: true, + canBuy: () => { return false }, }, }; diff --git a/tasks/gulp-console.js b/tasks/gulp-console.js index 5b98853845..95a1962fd4 100644 --- a/tasks/gulp-console.js +++ b/tasks/gulp-console.js @@ -2,9 +2,9 @@ import 'coffee-script'; import mongoose from 'mongoose'; import autoinc from 'mongoose-id-autoinc'; -import logging from '../website/src/logging'; +import logging from '../website/src/libs/logging'; import nconf from 'nconf'; -import utils from '../website/src/utils'; +import utils from '../website/src/libs/utils'; import repl from 'repl'; import gulp from 'gulp'; diff --git a/test/api-legacy/pushNotifications.coffee b/test/api-legacy/pushNotifications.coffee index 3cbac5ab3d..d5df5d51e9 100644 --- a/test/api-legacy/pushNotifications.coffee +++ b/test/api-legacy/pushNotifications.coffee @@ -19,7 +19,7 @@ describe "Push-Notifications", -> done() context "Challenges", -> - challenges = rewire("../../website/src/controllers/challenges") + challenges = rewire("../../website/src/controllers/api-v2/challenges") challenges.__set__('pushNotify', pushSpy) challengeMock = { findById: (arg, cb) -> @@ -65,7 +65,7 @@ describe "Push-Notifications", -> recipient = null - groups = rewire("../../website/src/controllers/groups") + groups = rewire("../../website/src/controllers/api-v2/groups") groups.__set__('pushNotify', pushSpy) before (done) -> @@ -226,7 +226,7 @@ describe "Push-Notifications", -> , false context "sending gems from balance", -> - members = rewire("../../website/src/controllers/members") + members = rewire("../../website/src/controllers/api-v2/members") members.sendMessage = -> true members.__set__('pushNotify', pushSpy) diff --git a/test/common/algos.mocha.coffee b/test/common/algos.mocha.coffee index 642156b752..b413c3e000 100644 --- a/test/common/algos.mocha.coffee +++ b/test/common/algos.mocha.coffee @@ -3,7 +3,7 @@ expect = require 'expect.js' sinon = require 'sinon' moment = require 'moment' shared = require '../../common/script/index.coffee' -shared.i18n.translations = require('../../website/src/i18n.js').translations +shared.i18n.translations = require('../../website/src/libs/i18n.js').translations test_helper = require './test_helper' test_helper.addCustomMatchers() $w = (s)->s.split(' ') diff --git a/test/common/dailies.coffee b/test/common/dailies.coffee index d06c291f27..e5e3fad81a 100644 --- a/test/common/dailies.coffee +++ b/test/common/dailies.coffee @@ -3,7 +3,7 @@ expect = require 'expect.js' sinon = require 'sinon' moment = require 'moment' shared = require '../../common/script/index.coffee' -shared.i18n.translations = require('../../website/src/i18n.js').translations +shared.i18n.translations = require('../../website/src/libs/i18n.js').translations repeatWithoutLastWeekday = ()-> repeat = {su:true,m:true,t:true,w:true,th:true,f:true,s:true} diff --git a/test/common/user.fns.ultimateGear.test.js b/test/common/user.fns.ultimateGear.test.js index b7c091e3f5..d2b82f43e8 100644 --- a/test/common/user.fns.ultimateGear.test.js +++ b/test/common/user.fns.ultimateGear.test.js @@ -1,7 +1,7 @@ 'use strict'; var shared = require('../../common/script/index.coffee'); -shared.i18n.translations = require('../../website/src/i18n.js').translations +shared.i18n.translations = require('../../website/src/libs/i18n.js').translations require('./test_helper'); diff --git a/test/helpers/api.helper.js b/test/helpers/api.helper.js index 4a2084e4ea..f34c0d1384 100644 --- a/test/helpers/api.helper.js +++ b/test/helpers/api.helper.js @@ -9,7 +9,7 @@ import {v4 as generateUUID} from 'uuid'; import superagent from 'superagent'; import i18n from '../../common/script/src/i18n'; require('coffee-script'); -i18n.translations = require('../../website/src/i18n.js').translations; +i18n.translations = require('../../website/src/libs/i18n.js').translations; const API_TEST_SERVER_PORT = 3003; diff --git a/test/helpers/content.helper.js b/test/helpers/content.helper.js index 83178c1a52..c54a62d508 100644 --- a/test/helpers/content.helper.js +++ b/test/helpers/content.helper.js @@ -3,7 +3,7 @@ import {each} from 'lodash'; import i18n from '../../common/script/src/i18n'; require('coffee-script'); -i18n.translations = require('../../website/src/i18n.js').translations; +i18n.translations = require('../../website/src/libs/i18n.js').translations; export const STRING_ERROR_MSG = 'Error processing the string. Please see Help > Report a Bug.'; export const STRING_DOES_NOT_EXIST_MSG = /^String '.*' not found.$/; diff --git a/test/server_side/analytics.test.js b/test/server_side/analytics.test.js index b88d24c364..7cde7aede8 100644 --- a/test/server_side/analytics.test.js +++ b/test/server_side/analytics.test.js @@ -30,7 +30,7 @@ describe('analytics', function() { }); describe('init', function() { - var analytics = rewire('../../website/src/analytics'); + var analytics = rewire('../../website/src/libs/analytics'); it('throws an error if no options are passed in', function() { expect(analytics).to.throw('No options provided'); @@ -62,7 +62,7 @@ describe('analytics', function() { describe('track', function() { var analyticsData, event_type; - var analytics = rewire('../../website/src/analytics'); + var analytics = rewire('../../website/src/libs/analytics'); var initializedAnalytics; beforeEach(function() { @@ -370,7 +370,7 @@ describe('analytics', function() { var purchaseData; - var analytics = rewire('../../website/src/analytics'); + var analytics = rewire('../../website/src/libs/analytics'); var initializedAnalytics; beforeEach(function() { diff --git a/test/server_side/controllers/groups.test.js b/test/server_side/controllers/groups.test.js index ad9196e13f..9e970c4afc 100644 --- a/test/server_side/controllers/groups.test.js +++ b/test/server_side/controllers/groups.test.js @@ -5,10 +5,10 @@ var expect = chai.expect; var Q = require('q'); var Group = require('../../../website/src/models/group').model; -var groupsController = require('../../../website/src/controllers/groups'); +var groupsController = require('../../../website/src/controllers/api-v2/groups'); describe('Groups Controller', function() { - var utils = require('../../../website/src/utils'); + var utils = require('../../../website/src/libs/utils'); describe('#invite', function() { var res, req, user, group; diff --git a/test/server_side/controllers/user.test.js b/test/server_side/controllers/user.test.js index aac7bf69b7..a000c0cde1 100644 --- a/test/server_side/controllers/user.test.js +++ b/test/server_side/controllers/user.test.js @@ -4,7 +4,7 @@ chai.use(require("sinon-chai")) var expect = chai.expect var rewire = require('rewire'); -var userController = rewire('../../../website/src/controllers/user'); +var userController = rewire('../../../website/src/controllers/api-v2/user'); describe('User Controller', function() { @@ -359,7 +359,7 @@ describe('User Controller', function() { }); it('sends webhooks', function() { - var webhook = require('../../../website/src/webhook'); + var webhook = require('../../../website/src/libs/webhook'); sinon.spy(webhook, 'sendTaskWebhook'); userController.score(req, res); diff --git a/test/server_side/webhooks.test.js b/test/server_side/webhooks.test.js index 596e441620..ef6636bf93 100644 --- a/test/server_side/webhooks.test.js +++ b/test/server_side/webhooks.test.js @@ -4,7 +4,7 @@ chai.use(require("sinon-chai")) var expect = chai.expect var rewire = require('rewire'); -var webhook = rewire('../../website/src/webhook'); +var webhook = rewire('../../website/src/libs/webhook'); describe('webhooks', function() { var postSpy; diff --git a/website/src/controllers/auth.js b/website/src/controllers/api-v2/auth.js similarity index 98% rename from website/src/controllers/auth.js rename to website/src/controllers/api-v2/auth.js index 7fa551689e..7f6ae19bd3 100644 --- a/website/src/controllers/auth.js +++ b/website/src/controllers/api-v2/auth.js @@ -1,16 +1,16 @@ var _ = require('lodash'); var validator = require('validator'); var passport = require('passport'); -var shared = require('../../../common'); +var shared = require('../../../../common'); var async = require('async'); -var utils = require('../utils'); +var utils = require('../../libs/utils'); var nconf = require('nconf'); var request = require('request'); var FirebaseTokenGenerator = require('firebase-token-generator'); -var User = require('../models/user').model; -var EmailUnsubscription = require('../models/emailUnsubscription').model; +var User = require('../../models/user').model; +var EmailUnsubscription = require('../../models/emailUnsubscription').model; var analytics = utils.analytics; -var i18n = require('./../i18n'); +var i18n = require('./../../libs/i18n'); var isProd = nconf.get('NODE_ENV') === 'production'; diff --git a/website/src/controllers/challenges.js b/website/src/controllers/api-v2/challenges.js similarity index 97% rename from website/src/controllers/challenges.js rename to website/src/controllers/api-v2/challenges.js index 6ac40b2571..72f28d9f3d 100644 --- a/website/src/controllers/challenges.js +++ b/website/src/controllers/api-v2/challenges.js @@ -3,15 +3,15 @@ var _ = require('lodash'); var nconf = require('nconf'); var async = require('async'); -var shared = require('../../../common'); -var User = require('./../models/user').model; -var Group = require('./../models/group').model; -var Challenge = require('./../models/challenge').model; -var logging = require('./../logging'); +var shared = require('../../../../common'); +var User = require('./../../models/user').model; +var Group = require('./../../models/group').model; +var Challenge = require('./../../models/challenge').model; +var logging = require('./../../libs/logging'); var csv = require('express-csv'); -var utils = require('../utils'); +var utils = require('../../libs/utils'); var api = module.exports; -var pushNotify = require('./pushNotifications'); +var pushNotify = require('./../pushNotifications'); /* ------------------------------------------------------------------------ diff --git a/website/src/controllers/coupon.js b/website/src/controllers/api-v2/coupon.js similarity index 95% rename from website/src/controllers/coupon.js rename to website/src/controllers/api-v2/coupon.js index b8450d34f3..c6811037e5 100644 --- a/website/src/controllers/coupon.js +++ b/website/src/controllers/api-v2/coupon.js @@ -1,5 +1,5 @@ var _ = require('lodash'); -var Coupon = require('./../models/coupon').model; +var Coupon = require('./../../models/coupon').model; var api = module.exports; var csv = require('express-csv'); var async = require('async'); diff --git a/website/src/controllers/groups.js b/website/src/controllers/api-v2/groups.js similarity index 98% rename from website/src/controllers/groups.js rename to website/src/controllers/api-v2/groups.js index 216315fa4c..40a01f32a5 100644 --- a/website/src/controllers/groups.js +++ b/website/src/controllers/api-v2/groups.js @@ -9,17 +9,17 @@ var _ = require('lodash'); var nconf = require('nconf'); var async = require('async'); var Q = require('q'); -var utils = require('./../utils'); -var shared = require('../../../common'); -var User = require('./../models/user').model; -var Group = require('./../models/group').model; -var Challenge = require('./../models/challenge').model; -var EmailUnsubscription = require('./../models/emailUnsubscription').model; +var utils = require('./../../libs/utils'); +var shared = require('../../../../common'); +var User = require('./../../models/user').model; +var Group = require('./../../models/group').model; +var Challenge = require('./../../models/challenge').model; +var EmailUnsubscription = require('./../../models/emailUnsubscription').model; var isProd = nconf.get('NODE_ENV') === 'production'; var api = module.exports; -var pushNotify = require('./pushNotifications'); +var pushNotify = require('./../pushNotifications'); var analytics = utils.analytics; -var firebase = require('../libs/firebase'); +var firebase = require('../../libs/firebase'); /* ------------------------------------------------------------------------ diff --git a/website/src/controllers/hall.js b/website/src/controllers/api-v2/hall.js similarity index 95% rename from website/src/controllers/hall.js rename to website/src/controllers/api-v2/hall.js index 8754bc2e94..f3a3ead240 100644 --- a/website/src/controllers/hall.js +++ b/website/src/controllers/api-v2/hall.js @@ -1,9 +1,9 @@ var _ = require('lodash'); var nconf = require('nconf'); var async = require('async'); -var shared = require('../../../common'); -var User = require('./../models/user').model; -var Group = require('./../models/group').model; +var shared = require('../../../../common'); +var User = require('./../../models/user').model; +var Group = require('./../../models/group').model; var api = module.exports; api.ensureAdmin = function(req, res, next) { diff --git a/website/src/controllers/members.js b/website/src/controllers/api-v2/members.js similarity index 95% rename from website/src/controllers/members.js rename to website/src/controllers/api-v2/members.js index c7fe341d3d..c528b92cd7 100644 --- a/website/src/controllers/members.js +++ b/website/src/controllers/api-v2/members.js @@ -1,13 +1,13 @@ var User = require('mongoose').model('User'); -var groups = require('../models/group'); +var groups = require('../../models/group'); var partyFields = require('./groups').partyFields var api = module.exports; var async = require('async'); var _ = require('lodash'); -var shared = require('../../../common'); -var utils = require('../utils'); +var shared = require('../../../../common'); +var utils = require('../../libs/utils'); var nconf = require('nconf'); -var pushNotify = require('./pushNotifications'); +var pushNotify = require('./../pushNotifications'); var fetchMember = function(uuid, restrict){ return function(cb){ diff --git a/website/src/controllers/unsubscription.js b/website/src/controllers/api-v2/unsubscription.js similarity index 84% rename from website/src/controllers/unsubscription.js rename to website/src/controllers/api-v2/unsubscription.js index 8c0edffd5f..f768236ee5 100644 --- a/website/src/controllers/unsubscription.js +++ b/website/src/controllers/api-v2/unsubscription.js @@ -1,7 +1,7 @@ -var User = require('../models/user').model; -var EmailUnsubscription = require('../models/emailUnsubscription').model; -var utils = require('../utils'); -var i18n = require('../../../common').i18n; +var User = require('../../models/user').model; +var EmailUnsubscription = require('../../models/emailUnsubscription').model; +var utils = require('../../libs/utils'); +var i18n = require('../../../../common').i18n; var api = module.exports = {}; diff --git a/website/src/controllers/user.js b/website/src/controllers/api-v2/user.js similarity index 97% rename from website/src/controllers/user.js rename to website/src/controllers/api-v2/user.js index b9559e23c5..caf3c092a4 100644 --- a/website/src/controllers/user.js +++ b/website/src/controllers/api-v2/user.js @@ -5,19 +5,19 @@ var ipn = require('paypal-ipn'); var _ = require('lodash'); var nconf = require('nconf'); var async = require('async'); -var shared = require('../../../common'); -var User = require('./../models/user').model; -var utils = require('./../utils'); +var shared = require('../../../../common'); +var User = require('./../../models/user').model; +var utils = require('./../../libs/utils'); var analytics = utils.analytics; -var Group = require('./../models/group').model; -var Challenge = require('./../models/challenge').model; +var Group = require('./../../models/group').model; +var Challenge = require('./../../models/challenge').model; var moment = require('moment'); -var logging = require('./../logging'); +var logging = require('./../../libs/logging'); var acceptablePUTPaths; var api = module.exports; var qs = require('qs'); -var firebase = require('../libs/firebase'); -var webhook = require('../webhook'); +var firebase = require('../../libs/firebase'); +var webhook = require('../../libs/webhook'); // api.purchase // Shared.ops @@ -290,7 +290,7 @@ api.getUserAnonymized = function(req, res, next) { * The trick here is to only accept leaf paths, not root/intermediate paths (see http://goo.gl/OEzkAs) * FIXME - one-by-one we want to widdle down this list, instead replacing each needed set path with API operations */ -acceptablePUTPaths = _.reduce(require('./../models/user').schema.paths, function(m,v,leaf){ +acceptablePUTPaths = _.reduce(require('./../../models/user').schema.paths, function(m,v,leaf){ var found= _.find('achievements filters flags invitations lastCron party preferences profile stats inbox'.split(' '), function(root){ return leaf.indexOf(root) == 0; }); diff --git a/website/src/controllers/payments/index.js b/website/src/controllers/payments/index.js index 1f8935645d..fd7f98a9c2 100644 --- a/website/src/controllers/payments/index.js +++ b/website/src/controllers/payments/index.js @@ -2,13 +2,13 @@ var _ = require('lodash'); var shared = require('../../../../common'); var nconf = require('nconf'); -var utils = require('./../../utils'); +var utils = require('./../../libs/utils'); var moment = require('moment'); var isProduction = nconf.get("NODE_ENV") === "production"; var stripe = require('./stripe'); var paypal = require('./paypal'); var amazon = require('./amazon'); -var members = require('../members') +var members = require('../api-v2/members') var async = require('async'); var iap = require('./iap'); var mongoose= require('mongoose'); diff --git a/website/src/controllers/payments/paypal.js b/website/src/controllers/payments/paypal.js index 094171e3af..30970f72cf 100644 --- a/website/src/controllers/payments/paypal.js +++ b/website/src/controllers/payments/paypal.js @@ -5,7 +5,7 @@ var _ = require('lodash'); var url = require('url'); var User = require('mongoose').model('User'); var payments = require('./index'); -var logger = require('../../logging'); +var logger = require('../../libs/logging'); var ipn = require('paypal-ipn'); var paypal = require('paypal-rest-sdk'); var shared = require('../../../../common'); diff --git a/website/src/analytics.js b/website/src/libs/analytics.js similarity index 98% rename from website/src/analytics.js rename to website/src/libs/analytics.js index 19a8a9b14c..769a5cf8e1 100644 --- a/website/src/analytics.js +++ b/website/src/libs/analytics.js @@ -2,7 +2,7 @@ require('coffee-script'); require('./i18n'); var _ = require('lodash'); -var Content = require('../../common').content; +var Content = require('../../../common').content; var Amplitude = require('amplitude'); var googleAnalytics = require('universal-analytics'); diff --git a/website/src/i18n.js b/website/src/libs/i18n.js similarity index 94% rename from website/src/i18n.js rename to website/src/libs/i18n.js index 463565ac3e..f2170b453c 100644 --- a/website/src/i18n.js +++ b/website/src/libs/i18n.js @@ -1,11 +1,11 @@ var fs = require('fs'), path = require('path'), _ = require('lodash'), - User = require('./models/user').model, - shared = require('../../common'), + User = require('../models/user').model, + shared = require('../../../common'), translations = {}; -var localePath = path.join(__dirname, "/../../common/locales/") +var localePath = path.join(__dirname, "/../../../common/locales/") var loadTranslations = function(locale){ var files = fs.readdirSync(path.join(localePath, locale)); @@ -54,7 +54,7 @@ _.each(langCodes, function(code){ lang.momentLangCode = (momentLangsMapping[code] || code); try{ // MomentJS lang files are JS files that has to be executed in the browser so we load them as plain text files - var f = fs.readFileSync(path.join(__dirname, '/../../node_modules/moment/locale/' + lang.momentLangCode + '.js'), 'utf8'); + var f = fs.readFileSync(path.join(__dirname, '/../../../node_modules/moment/locale/' + lang.momentLangCode + '.js'), 'utf8'); momentLangs[code] = f; }catch (e){} }); diff --git a/website/src/logging.js b/website/src/libs/logging.js similarity index 100% rename from website/src/logging.js rename to website/src/libs/logging.js diff --git a/website/src/utils.js b/website/src/libs/utils.js similarity index 98% rename from website/src/utils.js rename to website/src/libs/utils.js index d63c54b531..1b1231e102 100644 --- a/website/src/utils.js +++ b/website/src/libs/utils.js @@ -170,7 +170,7 @@ module.exports.setupConfig = function(){ nconf.argv() .env() //.file('defaults', path.join(path.resolve(__dirname, '../config.json.example'))) - .file('user', path.join(path.resolve(__dirname, './../../config.json'))); + .file('user', path.join(path.resolve(__dirname, './../../../config.json'))); if (nconf.get('NODE_ENV') === "development") Error.stackTraceLimit = Infinity; diff --git a/website/src/webhook.js b/website/src/libs/webhook.js similarity index 100% rename from website/src/webhook.js rename to website/src/libs/webhook.js diff --git a/website/src/middlewares/errorHandler.js b/website/src/middlewares/errorHandler.js index eebf25ac6b..9a82316a75 100644 --- a/website/src/middlewares/errorHandler.js +++ b/website/src/middlewares/errorHandler.js @@ -1,4 +1,4 @@ -var logging = require('../logging'); +var logging = require('../libs/logging'); module.exports = function(err, req, res, next) { //res.locals.domain.emit('error', err); diff --git a/website/src/middlewares/locals.js b/website/src/middlewares/locals.js index e9dbb31260..2f238a6a99 100644 --- a/website/src/middlewares/locals.js +++ b/website/src/middlewares/locals.js @@ -1,8 +1,8 @@ var nconf = require('nconf'); var _ = require('lodash'); -var utils = require('../utils'); +var utils = require('../libs/utils'); var shared = require('../../../common'); -var i18n = require('../i18n.js'); +var i18n = require('../libs/i18n'); var buildManifest = require('../libs/buildManifest'); var shared = require('../../../common'); var forceRefresh = require('./forceRefresh'); diff --git a/website/src/models/group.js b/website/src/models/group.js index 9ec1f28a21..17817994c1 100644 --- a/website/src/models/group.js +++ b/website/src/models/group.js @@ -4,7 +4,7 @@ var User = require('./user').model; var shared = require('../../../common'); var _ = require('lodash'); var async = require('async'); -var logging = require('../logging'); +var logging = require('../libs/logging'); var Challenge = require('./../models/challenge').model; var firebase = require('../libs/firebase'); diff --git a/website/src/routes/apiv1.js b/website/src/routes/api-v1.js similarity index 96% rename from website/src/routes/apiv1.js rename to website/src/routes/api-v1.js index f2876fedc4..1002391cae 100644 --- a/website/src/routes/apiv1.js +++ b/website/src/routes/api-v1.js @@ -3,10 +3,10 @@ var router = new express.Router(); var _ = require('lodash'); var async = require('async'); var icalendar = require('icalendar'); -var api = require('./../controllers/user'); -var auth = require('./../controllers/auth'); -var logging = require('./../logging'); -var i18n = require('./../i18n'); +var api = require('./../controllers/api-v2/user'); +var auth = require('./../controllers/api-v2/auth'); +var logging = require('./../libs/logging'); +var i18n = require('./../libs/i18n'); var forceRefresh = require('../middlewares/forceRefresh').middleware; /* ---------- Deprecated API ------------*/ @@ -170,4 +170,4 @@ router.get('*', i18n.getUserLanguage, deprecated); router.post('*', i18n.getUserLanguage, deprecated); router.put('*', i18n.getUserLanguage, deprecated); -module.exports = router; +module.exports = router; \ No newline at end of file diff --git a/website/src/routes/auth.js b/website/src/routes/api-v2/auth.js similarity index 89% rename from website/src/routes/auth.js rename to website/src/routes/api-v2/auth.js index 7d53253210..39f2f6e069 100644 --- a/website/src/routes/auth.js +++ b/website/src/routes/api-v2/auth.js @@ -1,6 +1,6 @@ -var auth = require('../controllers/auth'); +var auth = require('../../controllers/api-v2/auth'); var express = require('express'); -var i18n = require('../i18n'); +var i18n = require('../../libs/i18n'); var router = new express.Router(); /* auth.auth*/ @@ -15,8 +15,7 @@ router.post('/api/v2/user/change-username', i18n.getUserLanguage, auth.auth, aut router.post('/api/v2/user/change-email', i18n.getUserLanguage, auth.auth, auth.changeEmail); router.post('/api/v2/user/auth/firebase', i18n.getUserLanguage, auth.auth, auth.getFirebaseToken); -router.post('/api/v1/register', i18n.getUserLanguage, auth.registerUser); -router.post('/api/v1/user/auth/local', i18n.getUserLanguage, auth.loginLocal); -router.post('/api/v1/user/auth/social', i18n.getUserLanguage, auth.loginSocial); - +router.post('/api/v1/register', i18n.getUserLanguage, auth.registerUser); +router.post('/api/v1/user/auth/local', i18n.getUserLanguage, auth.loginLocal); +router.post('/api/v1/user/auth/social', i18n.getUserLanguage, auth.loginSocial); module.exports = router; \ No newline at end of file diff --git a/website/src/routes/coupon.js b/website/src/routes/api-v2/coupon.js similarity index 75% rename from website/src/routes/coupon.js rename to website/src/routes/api-v2/coupon.js index 57a33866c6..811d81a6f2 100644 --- a/website/src/routes/coupon.js +++ b/website/src/routes/api-v2/coupon.js @@ -1,9 +1,9 @@ var nconf = require('nconf'); var express = require('express'); var router = new express.Router(); -var auth = require('../controllers/auth'); -var coupon = require('../controllers/coupon'); -var i18n = require('../i18n'); +var auth = require('../../controllers/api-v2/auth'); +var coupon = require('../../controllers/api-v2/coupon'); +var i18n = require('../../libs/i18n'); router.get('/api/v2/coupons', auth.authWithUrl, i18n.getUserLanguage, coupon.ensureAdmin, coupon.getCoupons); router.post('/api/v2/coupons/generate/:event', auth.auth, i18n.getUserLanguage, coupon.ensureAdmin, coupon.generateCoupons); diff --git a/website/src/routes/api-v2/swagger.js b/website/src/routes/api-v2/swagger.js new file mode 100644 index 0000000000..d93cfe6271 --- /dev/null +++ b/website/src/routes/api-v2/swagger.js @@ -0,0 +1,777 @@ +/* +---------- /api/v2 API ------------ +see https://github.com/wordnik/swagger-node-express +Every url added to router is prefaced by /api/v2 +Note: Many user-route ops exist in ../../common/script/index.coffee#user.ops, so that they can (1) be called both +client and server. +v1 user. Requires x-api-user (user id) and x-api-key (api key) headers, Test with: +$ mocha test/user.mocha.coffee + */ + +require('coffee-script'); +var user = require("../../controllers/api-v2/user"); +var groups = require("../../controllers/api-v2/groups"); +var members = require("../../controllers/api-v2/members"); +var auth = require("../../controllers/api-v2/auth"); +var hall = require("../../controllers/api-v2/hall"); +var challenges = require("../../controllers/api-v2/challenges"); +var dataexport = require("../../controllers/dataexport"); +var nconf = require("nconf"); +var cron = user.cron; +var _ = require('lodash'); +var content = require('../../../../common').content; +var i18n = require('../../libs/i18n'); +var forceRefresh = require('../../middlewares/forceRefresh').middleware; + +module.exports = function(swagger, v2) { + var path = swagger.pathParam; + var body = swagger.bodyParam; + var query = swagger.queryParam; + + swagger.setAppHandler(v2); + swagger.setErrorHandler("next"); + swagger.setHeaders = function() {}; + swagger.configureSwaggerPaths("", "/api-docs", ""); + + var api = { + '/status': { + spec: { + description: "Returns the status of the server (up or down). Does not require authentication." + }, + action: function(req, res) { + return res.json({ + status: "up" + }); + } + }, + '/content': { + spec: { + description: "Get all available content objects. This is essential, since Habit often depends on item keys (eg, when purchasing a weapon). Does not require authentication.", + parameters: [query("language", "Optional language to use for content's strings. Default is english.", "string")] + }, + action: user.getContent + }, + '/content/paths': { + spec: { + description: "Show user model tree. Does not require authentication." + }, + action: user.getModelPaths + }, + "/export/history": { + spec: { + description: "Export user history", + method: 'GET' + }, + middleware: [auth.auth, i18n.getUserLanguage], + action: dataexport.history + }, + "/user/tasks/{id}/{direction}": { + spec: { + description: "Simple scoring of a task (Habit, Daily, To-Do, or Reward). This is most-likely the only API route you'll be using as a 3rd-party developer. The most common operation is for the user to gain or lose points based on some action (browsing Reddit, running a mile, 1 Pomodor, etc). Call this route, if the task you're trying to score doesn't exist, it will be created for you. When random events occur, the user._tmp variable will be filled. Critical hits can be accessed through user._tmp.crit. The Streakbonus can be accessed through user._tmp.streakBonus. Both will contain the multiplier value. When random drops occur, the following values are available: user._tmp.drop = {text,type,dialog,value,key,notes}", + parameters: [path("id", "ID of the task to score. If this task doesn't exist, a task will be created automatically", "string"), path("direction", "Either 'up' or 'down'", "string"), body('', "If you're creating a 3rd-party task, pass up any task attributes in the body (see TaskSchema).", 'object')], + method: 'POST' + }, + action: user.score + }, + "/user/tasks:GET": { + spec: { + path: '/user/tasks', + description: "Get all user's tasks" + }, + action: user.getTasks + }, + "/user/tasks:POST": { + spec: { + path: '/user/tasks', + description: "Create a task", + method: 'POST', + parameters: [body("", "Send up the whole task (see TaskSchema)", "object")] + }, + action: user.addTask + }, + "/user/tasks/{id}:GET": { + spec: { + path: '/user/tasks/{id}', + description: "Get an individual task", + parameters: [path("id", "Task ID", "string")] + }, + action: user.getTask + }, + "/user/tasks/{id}:PUT": { + spec: { + path: '/user/tasks/{id}', + description: "Update a user's task", + method: 'PUT', + parameters: [path("id", "Task ID", "string"), body("", "Send up the whole task (see TaskSchema)", "object")] + }, + action: user.updateTask + }, + "/user/tasks/{id}:DELETE": { + spec: { + path: '/user/tasks/{id}', + description: "Delete a task", + method: 'DELETE', + parameters: [path("id", "Task ID", "string")] + }, + action: user.deleteTask + }, + "/user/tasks/{id}/sort": { + spec: { + method: 'POST', + description: 'Sort tasks', + parameters: [path("id", "Task ID", "string"), query("from", "Index where you're sorting from (0-based)", "integer"), query("to", "Index where you're sorting to (0-based)", "integer")] + }, + action: user.sortTask + }, + "/user/tasks/clear-completed": { + spec: { + method: 'POST', + description: "Clears competed To-Dos (needed periodically for performance)." + }, + action: user.clearCompleted + }, + "/user/tasks/{id}/unlink": { + spec: { + method: 'POST', + description: 'Unlink a task from its challenge', + parameters: [path("id", "Task ID", "string"), query('keep', "When unlinking a challenge task, how to handle the orphans?", 'string', ['keep', 'keep-all', 'remove', 'remove-all'])] + }, + middleware: [auth.auth, i18n.getUserLanguage], + action: challenges.unlink + }, + "/user/inventory/buy": { + spec: { + description: "Get a list of buyable gear" + }, + action: user.getBuyList + }, + "/user/inventory/buy/{key}": { + spec: { + method: 'POST', + description: "Buy a gear piece and equip it automatically", + parameters: [path('key', "The key of the item to buy (call /content route for available keys)", 'string', _.keys(content.gear.flat))] + }, + action: user.buy + }, + "/user/inventory/sell/{type}/{key}": { + spec: { + method: 'POST', + description: "Sell inventory items back to Alexander", + parameters: [path('type', "The type of object you're selling back.", 'string', ['eggs', 'hatchingPotions', 'food']), path('key', "The object key you're selling back (call /content route for available keys)", 'string')] + }, + action: user.sell + }, + "/user/inventory/purchase/{type}/{key}": { + spec: { + method: 'POST', + description: "Purchase a Gem-purchasable item from Alexander", + parameters: [path('type', "The type of object you're purchasing.", 'string', ['eggs', 'hatchingPotions', 'food', 'quests', 'special']), path('key', "The object key you're purchasing (call /content route for available keys)", 'string')] + }, + action: user.purchase + }, + "/user/inventory/hourglass/{type}/{key}": { + spec: { + method: 'POST', + description: "Purchase a pet or mount using a Mystic Hourglass", + parameters: [path('type', "The type of object you're purchasing.", 'string', ['pets', 'mounts']), path('key', "The object key you're purchasing (call /content route for available keys)", 'string')] + }, + action: user.hourglassPurchase + }, + "/user/inventory/mystery/{key}": { + spec: { + method: 'POST', + description: "Purchase a Mystery Item Set using a Mystic Hourglass", + parameters: [path('key', "The key for the Mystery Set you're purchasing (call /content route for available keys)", 'string')] + }, + action: user.buyMysterySet + }, + "/user/inventory/feed/{pet}/{food}": { + spec: { + method: 'POST', + description: "Feed your pet some food", + parameters: [path('pet', "The key of the pet you're feeding", 'string', _.keys(content.pets)), path('food', "The key of the food to feed your pet", 'string', _.keys(content.food))] + }, + action: user.feed + }, + "/user/inventory/equip/{type}/{key}": { + spec: { + method: 'POST', + description: "Equip an item (either pet, mount, equipped or costume)", + parameters: [path('type', "Type to equip", 'string', ['pet', 'mount', 'equipped', 'costume']), path('key', "The object key you're equipping (call /content route for available keys)", 'string')] + }, + action: user.equip + }, + "/user/inventory/hatch/{egg}/{hatchingPotion}": { + spec: { + method: 'POST', + description: "Pour a hatching potion on an egg", + parameters: [path('egg', "The egg key to hatch", 'string', _.keys(content.eggs)), path('hatchingPotion', "The hatching potion to pour", 'string', _.keys(content.hatchingPotions))] + }, + action: user.hatch + }, + "/user:GET": { + spec: { + path: '/user', + description: "Get the full user object" + }, + action: user.getUser + }, + "/user/anonymized": { + spec: { + description: "Get the user object without any personal data" + }, + action: user.getUserAnonymized + }, + "/user:PUT": { + spec: { + path: '/user', + method: 'PUT', + description: "Update the user object (only certain attributes are supported)", + parameters: [body('', 'The user object (see UserSchema)', 'object')] + }, + action: user.update + }, + "/user:DELETE": { + spec: { + path: '/user', + method: 'DELETE', + description: "Delete a user object entirely, USE WITH CAUTION!" + }, + middleware: [auth.auth, i18n.getUserLanguage], + action: user["delete"] + }, + "/user/revive": { + spec: { + method: 'POST', + description: "Revive your dead user" + }, + action: user.revive + }, + "/user/reroll": { + spec: { + method: 'POST', + description: 'Drink the Fortify Potion (Note, it used to be called re-roll)' + }, + action: user.reroll + }, + "/user/reset": { + spec: { + method: 'POST', + description: "Completely reset your account" + }, + action: user.reset + }, + "/user/sleep": { + spec: { + method: 'POST', + description: "Toggle whether you're resting in the inn" + }, + action: user.sleep + }, + "/user/rebirth": { + spec: { + method: 'POST', + description: "Rebirth your avatar" + }, + action: user.rebirth + }, + "/user/class/change": { + spec: { + method: 'POST', + description: "Either remove your avatar's class, or change it to something new", + parameters: [query('class', "The key of the class to change to. If not provided, user's class is removed.", 'string', ['warrior', 'healer', 'rogue', 'wizard', ''])] + }, + action: user.changeClass + }, + "/user/class/allocate": { + spec: { + method: 'POST', + description: "Allocate one point towards an attribute", + parameters: [query('stat', 'The stat to allocate towards', 'string', ['str', 'per', 'int', 'con'])] + }, + action: user.allocate + }, + "/user/class/cast/{spell}": { + spec: { + method: 'POST', + description: "Casts a spell on a target.", + parameters: [path('spell', "The key of the spell to cast (see ../../common#content/index.coffee)", 'string'), query('targetType', "The type of object you're targeting", 'string', ['party', 'self', 'user', 'task']), query('targetId', "The ID of the object you're targeting", 'string')] + }, + action: user.cast + }, + "/user/unlock": { + spec: { + method: 'POST', + description: "Unlock a certain gem-purchaseable path (or multiple paths)", + parameters: [query('path', "The path to unlock, such as hair.green or shirts.red,shirts.blue", 'string')] + }, + action: user.unlock + }, + "/user/batch-update": { + spec: { + method: 'POST', + description: "This is an advanced route which is useful for apps which might for example need offline support. You can send a whole batch of user-based operations, which allows you to queue them up offline and send them all at once. The format is {op:'nameOfOperation',parameters:{},body:{},query:{}}", + parameters: [body('', 'The array of batch-operations to perform', 'object')] + }, + middleware: [forceRefresh, auth.auth, i18n.getUserLanguage, cron, user.sessionPartyInvite], + action: user.batchUpdate + }, + "/user/tags/{id}:GET": { + spec: { + path: '/user/tags/{id}', + method: 'GET', + description: "Get a tag", + parameters: [path('id', 'The id of the tag to get', 'string')] + }, + action: user.getTag + }, + "/user/tags:POST": { + spec: { + path: "/user/tags", + method: 'POST', + description: 'Create a new tag', + parameters: [body('', 'New tag (see UserSchema.tags)', 'object')] + }, + action: user.addTag + }, + "/user/tags:GET": { + spec: { + path: "/user/tags", + method: 'GET', + description: 'List all of a user\'s tags' + }, + action: user.getTags + }, + "/user/tags/sort": { + spec: { + method: 'POST', + description: 'Sort tags', + parameters: [query("from", "Index where you're sorting from (0-based)", "integer"), query("to", "Index where you're sorting to (0-based)", "integer")] + }, + action: user.sortTag + }, + "/user/tags/{id}:PUT": { + spec: { + path: '/user/tags/{id}', + method: 'PUT', + description: "Edit a tag", + parameters: [path('id', 'The id of the tag to edit', 'string'), body('', 'Tag edits (see UserSchema.tags)', 'object')] + }, + action: user.updateTag + }, + "/user/tags/{id}:DELETE": { + spec: { + path: '/user/tags/{id}', + method: 'DELETE', + description: 'Delete a tag', + parameters: [path('id', 'Id of tag to delete', 'string')] + }, + action: user.deleteTag + }, + "/user/webhooks": { + spec: { + method: 'POST', + description: 'Create a new webhook', + parameters: [body('', 'New Webhook {url:"webhook endpoint (required)", id:"id of webhook (shared.uuid(), optional)", enabled:"whether webhook is enabled (true by default, optional)"}', 'object')] + }, + action: user.addWebhook + }, + "/user/webhooks/{id}:PUT": { + spec: { + path: '/user/webhooks/{id}', + method: 'PUT', + description: "Edit a webhook", + parameters: [path('id', 'The id of the webhook to edit', 'string'), body('', 'New Webhook {url:"webhook endpoint (required)", id:"id of webhook (shared.uuid(), optional)", enabled:"whether webhook is enabled (true by default, optional)"}', 'object')] + }, + action: user.updateWebhook + }, + "/user/webhooks/{id}:DELETE": { + spec: { + path: '/user/webhooks/{id}', + method: 'DELETE', + description: 'Delete a webhook', + parameters: [path('id', 'Id of webhook to delete', 'string')] + }, + action: user.deleteWebhook + }, + "/user/pushDevice": { + spec: { + method: 'POST', + description: 'Add a new push devices registration ID', + parameters: [body('', 'New push registration { regId: "123123", type: "android"}', 'object')] + }, + action: user.addPushDevice + }, + "/groups:GET": { + spec: { + path: '/groups', + description: "Get a list of groups", + parameters: [query('type', "Comma-separated types of groups to return, eg 'party,guilds,public,tavern'", 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage], + action: groups.list + }, + "/groups:POST": { + spec: { + path: '/groups', + method: 'POST', + description: 'Create a group', + parameters: [body('', 'Group object (see GroupSchema)', 'object')] + }, + middleware: [auth.auth, i18n.getUserLanguage], + action: groups.create + }, + "/groups/{gid}:GET": { + spec: { + path: '/groups/{gid}', + description: "Get a group. The party the user currently is in can be accessed with the gid 'party'.", + parameters: [path('gid', 'Group ID', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage], + action: groups.get + }, + "/groups/{gid}:POST": { + spec: { + path: '/groups/{gid}', + method: 'POST', + description: "Edit a group", + parameters: [body('', 'Group object (see GroupSchema)', 'object')] + }, + middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup], + action: groups.update + }, + "/groups/{gid}/join": { + spec: { + method: 'POST', + description: 'Join a group', + parameters: [path('gid', 'Id of the group to join', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup], + action: groups.join + }, + "/groups/{gid}/leave": { + spec: { + method: 'POST', + description: 'Leave a group', + parameters: [path('gid', 'ID of the group to leave', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup], + action: groups.leave + }, + "/groups/{gid}/invite": { + spec: { + method: 'POST', + description: "Invite a user to a group", + parameters: [path('gid', 'Group id', 'string'), body('', 'a payload of invites either under body.uuids or body.emails, only one of them!', 'object')] + }, + middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup], + action: groups.invite + }, + "/groups/{gid}/removeMember": { + spec: { + method: 'POST', + description: "Remove / boot a member from a group", + parameters: [path('gid', 'Group id', 'string'), query('uuid', 'User id to boot', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup], + action: groups.removeMember + }, + "/groups/{gid}/questAccept": { + spec: { + method: 'POST', + description: "Accept a quest invitation", + parameters: [path('gid', "Group id", 'string'), query('key', "optional. if provided, trigger new invite, if not, accept existing invite", 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup], + action: groups.questAccept + }, + "/groups/{gid}/questReject": { + spec: { + method: 'POST', + description: 'Reject quest invitation', + parameters: [path('gid', 'Group id', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup], + action: groups.questReject + }, + "/groups/{gid}/questCancel": { + spec: { + method: 'POST', + description: 'Cancel quest before it starts (in invitation stage)', + parameters: [path('gid', 'Group to cancel quest in', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup], + action: groups.questCancel + }, + "/groups/{gid}/questAbort": { + spec: { + method: 'POST', + description: 'Abort quest after it has started (all progress will be lost)', + parameters: [path('gid', 'Group to abort quest in', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup], + action: groups.questAbort + }, + "/groups/{gid}/questLeave": { + spec: { + method: 'POST', + description: 'Leave an active quest (Quest leaders cannot leave active quests. They must abort the quest to leave)', + parameters: [path('gid', 'Group to leave quest in', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup], + action: groups.questLeave + }, + "/groups/{gid}/chat:GET": { + spec: { + path: "/groups/{gid}/chat", + description: "Get all chat messages", + parameters: [path('gid', 'Group to return the chat from ', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup], + action: groups.getChat + }, + "/groups/{gid}/chat:POST": { + spec: { + method: 'POST', + path: "/groups/{gid}/chat", + description: "Send a chat message", + parameters: [query('message', 'Chat message', 'string'), path('gid', 'Group id', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup], + action: groups.postChat + }, + "/groups/{gid}/chat/seen": { + spec: { + method: 'POST', + description: "Flag chat messages for a particular group as seen", + parameters: [path('gid', 'Group id', 'string')] + }, + action: groups.seenMessage + }, + "/groups/{gid}/chat/{messageId}": { + spec: { + method: 'DELETE', + description: 'Delete a chat message in a given group', + parameters: [path('gid', 'ID of the group containing the message to be deleted', 'string'), path('messageId', 'ID of message to be deleted', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup], + action: groups.deleteChatMessage + }, + "/groups/{gid}/chat/{mid}/like": { + spec: { + method: 'POST', + description: "Like a chat message", + parameters: [path('gid', 'Group id', 'string'), path('mid', 'Message id', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup], + action: groups.likeChatMessage + }, + "/groups/{gid}/chat/{mid}/flag": { + spec: { + method: 'POST', + description: "Flag a chat message", + parameters: [path('gid', 'Group id', 'string'), path('mid', 'Message id', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup], + action: groups.flagChatMessage + }, + "/groups/{gid}/chat/{mid}/clearflags": { + spec: { + method: 'POST', + description: "Clear flag count from message and unhide it", + parameters: [path('gid', 'Group id', 'string'), path('mid', 'Message id', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup], + action: groups.clearFlagCount + }, + "/members/{uuid}:GET": { + spec: { + path: '/members/{uuid}', + description: "Get a member.", + parameters: [path('uuid', 'Member ID', 'string')] + }, + middleware: [i18n.getUserLanguage], + action: members.getMember + }, + "/members/{uuid}/message": { + spec: { + method: 'POST', + description: 'Send a private message to a member', + parameters: [path('uuid', 'The UUID of the member to message', 'string'), body('', '{"message": "The private message to send"}', 'object')] + }, + middleware: [auth.auth], + action: members.sendPrivateMessage + }, + "/members/{uuid}/block": { + spec: { + method: 'POST', + description: 'Block a member from sending private messages', + parameters: [path('uuid', 'The UUID of the member to message', 'string')] + }, + middleware: [auth.auth], + action: user.blockUser + }, + "/members/{uuid}/gift": { + spec: { + method: 'POST', + description: 'Send a gift to a member', + parameters: [path('uuid', 'The UUID of the member', 'string'), body('', '{"type": "gems or subscription", "gems":{"amount":Number, "fromBalance":Boolean}, "subscription":{"months":Number}}', 'object')] + }, + middleware: [auth.auth], + action: members.sendGift + }, + "/hall/heroes": { + spec: {}, + middleware: [auth.auth, i18n.getUserLanguage], + action: hall.getHeroes + }, + "/hall/heroes/{uid}:GET": { + spec: { + path: "/hall/heroes/{uid}" + }, + middleware: [auth.auth, i18n.getUserLanguage, hall.ensureAdmin], + action: hall.getHero + }, + "/hall/heroes/{uid}:POST": { + spec: { + method: 'POST', + path: "/hall/heroes/{uid}" + }, + middleware: [auth.auth, i18n.getUserLanguage, hall.ensureAdmin], + action: hall.updateHero + }, + "/hall/patrons": { + spec: { + parameters: [query('page', 'Page number to fetch (this list is long)', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage], + action: hall.getPatrons + }, + "/challenges:GET": { + spec: { + path: '/challenges', + description: "Get a list of challenges" + }, + middleware: [auth.auth, i18n.getUserLanguage], + action: challenges.list + }, + "/challenges:POST": { + spec: { + path: '/challenges', + method: 'POST', + description: "Create a challenge", + parameters: [body('', 'Challenge object (see ChallengeSchema)', 'object')] + }, + middleware: [auth.auth, i18n.getUserLanguage], + action: challenges.create + }, + "/challenges/{cid}:GET": { + spec: { + path: '/challenges/{cid}', + description: 'Get a challenge', + parameters: [path('cid', 'Challenge id', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage], + action: challenges.get + }, + "/challenges/{cid}/csv": { + spec: { + description: 'Get a challenge (csv format)', + parameters: [path('cid', 'Challenge id', 'string')] + }, + action: challenges.csv + }, + "/challenges/{cid}:POST": { + spec: { + path: '/challenges/{cid}', + method: 'POST', + description: "Update a challenge", + parameters: [path('cid', 'Challenge id', 'string'), body('', 'Challenge object (see ChallengeSchema)', 'object')] + }, + middleware: [auth.auth, i18n.getUserLanguage], + action: challenges.update + }, + "/challenges/{cid}:DELETE": { + spec: { + path: '/challenges/{cid}', + method: 'DELETE', + description: "Delete a challenge", + parameters: [path('cid', 'Challenge id', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage], + action: challenges["delete"] + }, + "/challenges/{cid}/close": { + spec: { + method: 'POST', + description: 'Close a challenge', + parameters: [path('cid', 'Challenge id', 'string'), query('uid', 'User ID of the winner', 'string', true)] + }, + middleware: [auth.auth, i18n.getUserLanguage], + action: challenges.selectWinner + }, + "/challenges/{cid}/join": { + spec: { + method: 'POST', + description: "Join a challenge", + parameters: [path('cid', 'Challenge id', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage], + action: challenges.join + }, + "/challenges/{cid}/leave": { + spec: { + method: 'POST', + description: 'Leave a challenge', + parameters: [path('cid', 'Challenge id', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage], + action: challenges.leave + }, + "/challenges/{cid}/member/{uid}": { + spec: { + description: "Get a member's progress in a particular challenge", + parameters: [path('cid', 'Challenge id', 'string'), path('uid', 'User id', 'string')] + }, + middleware: [auth.auth, i18n.getUserLanguage], + action: challenges.getMember + } + }; + if (nconf.get("NODE_ENV") === "development") { + api["/user/addTenGems"] = { + spec: { + method: 'POST' + }, + action: user.addTenGems + }; + api["/user/addHourglass"] = { + spec: { + method: 'POST' + }, + action: user.addHourglass + }; + }; + + _.each(api, function(route, path) { + var base; + if ((base = route.spec).description == null) { + base.description = ''; + } + _.defaults(route.spec, { + path: path, + nickname: path, + notes: route.spec.description, + summary: route.spec.description, + parameters: [], + errorResponses: [], + method: 'GET' + }); + if (route.middleware == null) { + route.middleware = path.indexOf('/user') === 0 ? [auth.auth, i18n.getUserLanguage, cron] : [i18n.getUserLanguage]; + } + swagger["add" + route.spec.method](route); + return true; + }); + + return swagger.configure((nconf.get('BASE_URL')) + "/api/v2", "2"); +}; diff --git a/website/src/routes/unsubscription.js b/website/src/routes/api-v2/unsubscription.js similarity index 60% rename from website/src/routes/unsubscription.js rename to website/src/routes/api-v2/unsubscription.js index efd06f9197..942a396eef 100644 --- a/website/src/routes/unsubscription.js +++ b/website/src/routes/api-v2/unsubscription.js @@ -1,7 +1,7 @@ var express = require('express'); var router = new express.Router(); -var i18n = require('../i18n'); -var unsubscription = require('../controllers/unsubscription'); +var i18n = require('../../libs/i18n'); +var unsubscription = require('../../controllers/api-v2/unsubscription'); router.get('/unsubscribe', i18n.getUserLanguage, unsubscription.unsubscribe); diff --git a/website/src/routes/apiv2.coffee b/website/src/routes/apiv2.coffee deleted file mode 100644 index 746423684f..0000000000 --- a/website/src/routes/apiv2.coffee +++ /dev/null @@ -1,853 +0,0 @@ -### ----------- /api/v2 API ------------ -see https://github.com/wordnik/swagger-node-express -Every url added to router is prefaced by /api/v2 -Note: Many user-route ops exist in ../../common/script/index.coffee#user.ops, so that they can (1) be called both -client and server. -v1 user. Requires x-api-user (user id) and x-api-key (api key) headers, Test with: -$ mocha test/user.mocha.coffee -### - -user = require("../controllers/user") -groups = require("../controllers/groups") -members = require("../controllers/members") -auth = require("../controllers/auth") -hall = require("../controllers/hall") -challenges = require("../controllers/challenges") -dataexport = require("../controllers/dataexport") -nconf = require("nconf") -cron = user.cron -_ = require('lodash') -content = require('../../../common').content -i18n = require('../i18n') -forceRefresh = require('../middlewares/forceRefresh').middleware - -module.exports = (swagger, v2) -> - [path,body,query] = [swagger.pathParam, swagger.bodyParam, swagger.queryParam] - - swagger.setAppHandler(v2) - swagger.setErrorHandler("next") - swagger.setHeaders = -> #disable setHeaders, since we have our own thing going on in middleware.js (and which requires `req`, which swagger doesn't pass in) - swagger.configureSwaggerPaths("", "/api-docs", "") - - api = - - '/status': - spec: - description: "Returns the status of the server (up or down). Does not require authentication." - action: (req, res) -> - res.json status: "up" - - '/content': - spec: - description: "Get all available content objects. This is essential, since Habit often depends on item keys (eg, when purchasing a weapon). Does not require authentication." - parameters: [ - query("language","Optional language to use for content's strings. Default is english.","string") - ] - action: user.getContent - - '/content/paths': - spec: - description: "Show user model tree. Does not require authentication." - action: user.getModelPaths - - "/export/history": - spec: - description: "Export user history" - method: 'GET' - middleware: [auth.auth, i18n.getUserLanguage] - action: dataexport.history #[todo] encode data output options in the data controller and use these to build routes - - # --------------------------------- - # User - # --------------------------------- - - # Scoring - - "/user/tasks/{id}/{direction}": - spec: - #notes: "Simple scoring of a task." - description: "Simple scoring of a task (Habit, Daily, To-Do, or Reward). This is most-likely the only API route you'll be using as a 3rd-party developer. The most common operation is for the user to gain or lose points based on some action (browsing Reddit, running a mile, 1 Pomodor, etc). Call this route, if the task you're trying to score doesn't exist, it will be created for you. When random events occur, the user._tmp variable will be filled. Critical hits can be accessed through user._tmp.crit. The Streakbonus can be accessed through user._tmp.streakBonus. Both will contain the multiplier value. When random drops occur, the following values are available: user._tmp.drop = {text,type,dialog,value,key,notes}" - parameters: [ - path("id", "ID of the task to score. If this task doesn't exist, a task will be created automatically", "string") - path("direction", "Either 'up' or 'down'", "string") - body '',"If you're creating a 3rd-party task, pass up any task attributes in the body (see TaskSchema).",'object' - ] - method: 'POST' - action: user.score - - # Tasks - "/user/tasks:GET": - spec: - path: '/user/tasks' - description: "Get all user's tasks" - action: user.getTasks - - "/user/tasks:POST": - spec: - path: '/user/tasks' - description: "Create a task" - method: 'POST' - parameters: [ body "","Send up the whole task (see TaskSchema)","object" ] - action: user.addTask - - "/user/tasks/{id}:GET": - spec: - path: '/user/tasks/{id}' - description: "Get an individual task" - parameters: [ - path("id", "Task ID", "string") - ] - action: user.getTask - - "/user/tasks/{id}:PUT": - spec: - path: '/user/tasks/{id}' - description: "Update a user's task" - method: 'PUT' - parameters: [ - path "id", "Task ID", "string" - body "","Send up the whole task (see TaskSchema)","object" - ] - action: user.updateTask - - "/user/tasks/{id}:DELETE": - spec: - path: '/user/tasks/{id}' - description: "Delete a task" - method: 'DELETE' - parameters: [ path("id", "Task ID", "string") ] - action: user.deleteTask - - - "/user/tasks/{id}/sort": - spec: - method: 'POST' - description: 'Sort tasks' - parameters: [ - path("id", "Task ID", "string") - query("from","Index where you're sorting from (0-based)","integer") - query("to","Index where you're sorting to (0-based)","integer") - ] - action: user.sortTask - - - "/user/tasks/clear-completed": - spec: - method: 'POST' - description: "Clears competed To-Dos (needed periodically for performance)." - action: user.clearCompleted - - - "/user/tasks/{id}/unlink": - spec: - method: 'POST' - description: 'Unlink a task from its challenge' - parameters: [ - path("id", "Task ID", "string") - query 'keep',"When unlinking a challenge task, how to handle the orphans?",'string',['keep','keep-all','remove','remove-all'] - ] - middleware: [auth.auth, i18n.getUserLanguage] ## removing cron since they may want to remove task first - action: challenges.unlink - - - # Inventory - "/user/inventory/buy": - spec: - description: "Get a list of buyable gear" - action: user.getBuyList - - "/user/inventory/buy/{key}": - spec: - method: 'POST' - description: "Buy a gear piece and equip it automatically" - parameters:[ - path 'key',"The key of the item to buy (call /content route for available keys)",'string', _.keys(content.gear.flat) - ] - action: user.buy - - "/user/inventory/sell/{type}/{key}": - spec: - method: 'POST' - description: "Sell inventory items back to Alexander" - parameters: [ - #TODO verify these are the correct types - path('type',"The type of object you're selling back.",'string',['eggs','hatchingPotions','food']) - path('key',"The object key you're selling back (call /content route for available keys)",'string') - ] - action: user.sell - - "/user/inventory/purchase/{type}/{key}": - spec: - method: 'POST' - description: "Purchase a Gem-purchasable item from Alexander" - parameters:[ - path('type',"The type of object you're purchasing.",'string',['eggs','hatchingPotions','food','quests','special']) - path('key',"The object key you're purchasing (call /content route for available keys)",'string') - ] - action: user.purchase - - "/user/inventory/hourglass/{type}/{key}": - spec: - method: 'POST' - description: "Purchase a pet or mount using a Mystic Hourglass" - parameters:[ - path('type',"The type of object you're purchasing.",'string',['pets','mounts']) - path('key',"The object key you're purchasing (call /content route for available keys)",'string') - ] - action: user.hourglassPurchase - - "/user/inventory/mystery/{key}": - spec: - method: 'POST' - description: "Purchase a Mystery Item Set using a Mystic Hourglass" - parameters:[ - path('key',"The key for the Mystery Set you're purchasing (call /content route for available keys)",'string') - ] - action: user.buyMysterySet - - "/user/inventory/feed/{pet}/{food}": - spec: - method: 'POST' - description: "Feed your pet some food" - parameters: [ - path 'pet',"The key of the pet you're feeding",'string',_.keys(content.pets) - path 'food',"The key of the food to feed your pet",'string',_.keys(content.food) - ] - action: user.feed - - "/user/inventory/equip/{type}/{key}": - spec: - method: 'POST' - description: "Equip an item (either pet, mount, equipped or costume)" - parameters: [ - path 'type',"Type to equip",'string',['pet','mount','equipped', 'costume'] - path 'key',"The object key you're equipping (call /content route for available keys)",'string' - ] - action: user.equip - - "/user/inventory/hatch/{egg}/{hatchingPotion}": - spec: - method: 'POST' - description: "Pour a hatching potion on an egg" - parameters: [ - path 'egg',"The egg key to hatch",'string',_.keys(content.eggs) - path 'hatchingPotion',"The hatching potion to pour",'string',_.keys(content.hatchingPotions) - ] - action: user.hatch - - - # User - "/user:GET": - spec: - path: '/user' - description: "Get the full user object" - action: user.getUser - - "/user/anonymized": - spec: - description: "Get the user object without any personal data" - action: user.getUserAnonymized - - "/user:PUT": - spec: - path: '/user' - method: 'PUT' - description: "Update the user object (only certain attributes are supported)" - parameters: [ - body '','The user object (see UserSchema)','object' - ] - action: user.update - - "/user:DELETE": - spec: - path: '/user' - method: 'DELETE' - description: "Delete a user object entirely, USE WITH CAUTION!" - middleware: [auth.auth, i18n.getUserLanguage] - action: user.delete - - "/user/revive": - spec: - method: 'POST' - description: "Revive your dead user" - action: user.revive - - "/user/reroll": - spec: - method: 'POST' - description: 'Drink the Fortify Potion (Note, it used to be called re-roll)' - action: user.reroll - - "/user/reset": - spec: - method: 'POST' - description: "Completely reset your account" - action: user.reset - - "/user/sleep": - spec: - method: 'POST' - description: "Toggle whether you're resting in the inn" - action: user.sleep - - "/user/rebirth": - spec: - method: 'POST' - description: "Rebirth your avatar" - action: user.rebirth - - "/user/class/change": - spec: - method: 'POST' - description: "Either remove your avatar's class, or change it to something new" - parameters: [ - query 'class',"The key of the class to change to. If not provided, user's class is removed.",'string',['warrior','healer','rogue','wizard',''] - ] - action: user.changeClass - - "/user/class/allocate": - spec: - method: 'POST' - description: "Allocate one point towards an attribute" - parameters: [ - query 'stat','The stat to allocate towards','string',['str','per','int','con'] - ] - action:user.allocate - - "/user/class/cast/{spell}": - spec: - method: 'POST' - description: "Casts a spell on a target." - parameters: [ - path 'spell',"The key of the spell to cast (see ../../common#content/index.coffee)",'string' - query 'targetType',"The type of object you're targeting",'string',['party','self','user','task'] - query 'targetId',"The ID of the object you're targeting",'string' - - ] - action: user.cast - - "/user/unlock": - spec: - method: 'POST' - description: "Unlock a certain gem-purchaseable path (or multiple paths)" - parameters: [ - query 'path',"The path to unlock, such as hair.green or shirts.red,shirts.blue",'string' - ] - action: user.unlock - - "/user/batch-update": - spec: - method: 'POST' - description: "This is an advanced route which is useful for apps which might for example need offline support. You can send a whole batch of user-based operations, which allows you to queue them up offline and send them all at once. The format is {op:'nameOfOperation',parameters:{},body:{},query:{}}" - parameters:[ - body '','The array of batch-operations to perform','object' - ] - middleware: [forceRefresh, auth.auth, i18n.getUserLanguage, cron, user.sessionPartyInvite] - action: user.batchUpdate - - # Tags - "/user/tags/{id}:GET": - spec: - path: '/user/tags/{id}' - method: 'GET' - description: "Get a tag" - parameters: [ - path 'id','The id of the tag to get','string' - ] - action: user.getTag - - "/user/tags:POST": - spec: - path: "/user/tags" - method: 'POST' - description: 'Create a new tag' - parameters: [ - body '','New tag (see UserSchema.tags)','object' - ] - action: user.addTag - - "/user/tags:GET": - spec: - path: "/user/tags" - method: 'GET' - description: 'List all of a user\'s tags' - action: user.getTags - - "/user/tags/sort": - spec: - method: 'POST' - description: 'Sort tags' - parameters: [ - query("from","Index where you're sorting from (0-based)","integer") - query("to","Index where you're sorting to (0-based)","integer") - ] - action: user.sortTag - - "/user/tags/{id}:PUT": - spec: - path: '/user/tags/{id}' - method: 'PUT' - description: "Edit a tag" - parameters: [ - path 'id','The id of the tag to edit','string' - body '','Tag edits (see UserSchema.tags)','object' - ] - action: user.updateTag - - "/user/tags/{id}:DELETE": - spec: - path: '/user/tags/{id}' - method: 'DELETE' - description: 'Delete a tag' - parameters: [ - path 'id','Id of tag to delete','string' - ] - action: user.deleteTag - - # Webhooks - "/user/webhooks": - spec: - method: 'POST' - description: 'Create a new webhook' - parameters: [ - body '','New Webhook {url:"webhook endpoint (required)", id:"id of webhook (shared.uuid(), optional)", enabled:"whether webhook is enabled (true by default, optional)"}','object' - ] - action: user.addWebhook - - "/user/webhooks/{id}:PUT": - spec: - path: '/user/webhooks/{id}' - method: 'PUT' - description: "Edit a webhook" - parameters: [ - path 'id','The id of the webhook to edit','string' - body '','New Webhook {url:"webhook endpoint (required)", id:"id of webhook (shared.uuid(), optional)", enabled:"whether webhook is enabled (true by default, optional)"}','object' - ] - action: user.updateWebhook - - "/user/webhooks/{id}:DELETE": - spec: - path: '/user/webhooks/{id}' - method: 'DELETE' - description: 'Delete a webhook' - parameters: [ - path 'id','Id of webhook to delete','string' - ] - action: user.deleteWebhook - - # Push Notifications - "/user/pushDevice": - spec: - method: 'POST' - description: 'Add a new push devices registration ID' - parameters: [ - body '','New push registration { regId: "123123", type: "android"}','object' - ] - action: user.addPushDevice - - # --------------------------------- - # Groups - # --------------------------------- - "/groups:GET": - spec: - path: '/groups' - description: "Get a list of groups" - parameters: [ - query 'type',"Comma-separated types of groups to return, eg 'party,guilds,public,tavern'",'string' - ] - middleware: [auth.auth, i18n.getUserLanguage] - action: groups.list - - - "/groups:POST": - spec: - path: '/groups' - method: 'POST' - description: 'Create a group' - parameters: [ - body '','Group object (see GroupSchema)','object' - ] - middleware: [auth.auth, i18n.getUserLanguage] - action: groups.create - - "/groups/{gid}:GET": - spec: - path: '/groups/{gid}' - description: "Get a group. The party the user currently is in can be accessed with the gid 'party'." - parameters: [path('gid','Group ID','string')] - middleware: [auth.auth, i18n.getUserLanguage] - action: groups.get - - "/groups/{gid}:POST": - spec: - path: '/groups/{gid}' - method: 'POST' - description: "Edit a group" - parameters: [body('','Group object (see GroupSchema)','object')] - middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup] - action: groups.update - - "/groups/{gid}/join": - spec: - method: 'POST' - description: 'Join a group' - parameters: [path('gid','Id of the group to join','string')] - middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup] - action: groups.join - - "/groups/{gid}/leave": - spec: - method: 'POST' - description: 'Leave a group' - parameters: [path('gid','ID of the group to leave','string')] - middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup] - action: groups.leave - - "/groups/{gid}/invite": - spec: - method: 'POST' - description: "Invite a user to a group" - parameters: [ - path 'gid','Group id','string' - body '','a payload of invites either under body.uuids or body.emails, only one of them!','object' - ] - middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup] - action:groups.invite - - "/groups/{gid}/removeMember": - spec: - method: 'POST' - description: "Remove / boot a member from a group" - parameters: [ - path 'gid','Group id','string' - query 'uuid','User id to boot','string' - ] - middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup] - action:groups.removeMember - - "/groups/{gid}/questAccept": - spec: - method: 'POST' - description: "Accept a quest invitation" - parameters: [ - path 'gid',"Group id",'string' - query 'key',"optional. if provided, trigger new invite, if not, accept existing invite",'string' - ] - middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup] - action:groups.questAccept - - "/groups/{gid}/questReject": - spec: - method: 'POST' - description: 'Reject quest invitation' - parameters: [ - path 'gid','Group id','string' - ] - middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup] - action: groups.questReject - - "/groups/{gid}/questCancel": - spec: - method: 'POST' - description: 'Cancel quest before it starts (in invitation stage)' - parameters: [path('gid','Group to cancel quest in','string')] - middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup] - action: groups.questCancel - - "/groups/{gid}/questAbort": - spec: - method: 'POST' - description: 'Abort quest after it has started (all progress will be lost)' - parameters: [path('gid','Group to abort quest in','string')] - middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup] - action: groups.questAbort - - "/groups/{gid}/questLeave": - spec: - method: 'POST' - description: 'Leave an active quest (Quest leaders cannot leave active quests. They must abort the quest to leave)' - parameters: [path('gid','Group to leave quest in','string')] - middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup] - action: groups.questLeave - - #TODO PUT /groups/:gid/chat/:messageId - - "/groups/{gid}/chat:GET": - spec: - path: "/groups/{gid}/chat" - description: "Get all chat messages" - parameters: [path('gid','Group to return the chat from ','string')] - middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup] - action: groups.getChat - - - "/groups/{gid}/chat:POST": - spec: - method: 'POST' - path: "/groups/{gid}/chat" - description: "Send a chat message" - parameters: [ - query 'message', 'Chat message','string' - path 'gid','Group id','string' - ] - middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup] - action: groups.postChat - - # placing before route below, so that if !=='seen' it goes to next() - "/groups/{gid}/chat/seen": - spec: - method: 'POST' - description: "Flag chat messages for a particular group as seen" - parameters: [ - path 'gid','Group id','string' - ] - action: groups.seenMessage - - "/groups/{gid}/chat/{messageId}": - spec: - method: 'DELETE' - description: 'Delete a chat message in a given group' - parameters: [ - path 'gid', 'ID of the group containing the message to be deleted', 'string' - path 'messageId', 'ID of message to be deleted', 'string' - ] - middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup] - action: groups.deleteChatMessage - - "/groups/{gid}/chat/{mid}/like": - spec: - method: 'POST' - description: "Like a chat message" - parameters: [ - path 'gid','Group id','string' - path 'mid','Message id','string' - ] - middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup] - action: groups.likeChatMessage - - "/groups/{gid}/chat/{mid}/flag": - spec: - method: 'POST' - description: "Flag a chat message" - parameters: [ - path 'gid','Group id','string' - path 'mid','Message id','string' - ] - middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup] - action: groups.flagChatMessage - - "/groups/{gid}/chat/{mid}/clearflags": - spec: - method: 'POST' - description: "Clear flag count from message and unhide it" - parameters: [ - path 'gid','Group id','string' - path 'mid','Message id','string' - ] - middleware: [auth.auth, i18n.getUserLanguage, groups.attachGroup] - action: groups.clearFlagCount - - # --------------------------------- - # Members - # --------------------------------- - "/members/{uuid}:GET": - spec: - path: '/members/{uuid}' - description: "Get a member." - parameters: [path('uuid','Member ID','string')] - middleware: [i18n.getUserLanguage] # removed auth.auth, so anon users can view shared avatars - action: members.getMember - "/members/{uuid}/message": - spec: - method: 'POST' - description: 'Send a private message to a member' - parameters: [ - path 'uuid', 'The UUID of the member to message', 'string' - body '', '{"message": "The private message to send"}', 'object' - ] - middleware: [auth.auth] - action: members.sendPrivateMessage - "/members/{uuid}/block": - spec: - method: 'POST' - description: 'Block a member from sending private messages' - parameters: [ - path 'uuid', 'The UUID of the member to message', 'string' - ] - middleware: [auth.auth] - action: user.blockUser - "/members/{uuid}/gift": - spec: - method: 'POST' - description: 'Send a gift to a member' - parameters: [ - path 'uuid', 'The UUID of the member', 'string' - body '', '{"type": "gems or subscription", "gems":{"amount":Number, "fromBalance":Boolean}, "subscription":{"months":Number}}', 'object' - ] - middleware: [auth.auth] - action: members.sendGift - - # --------------------------------- - # Hall of Heroes / Patrons - # --------------------------------- - "/hall/heroes": - spec: {} - middleware:[auth.auth, i18n.getUserLanguage] - action: hall.getHeroes - - "/hall/heroes/{uid}:GET": - spec: path: "/hall/heroes/{uid}" - middleware:[auth.auth, i18n.getUserLanguage, hall.ensureAdmin] - action: hall.getHero - - "/hall/heroes/{uid}:POST": - spec: - method: 'POST' - path: "/hall/heroes/{uid}" - middleware: [auth.auth, i18n.getUserLanguage, hall.ensureAdmin] - action: hall.updateHero - - "/hall/patrons": - spec: - parameters: [ - query 'page','Page number to fetch (this list is long)','string' - ] - middleware:[auth.auth, i18n.getUserLanguage] - action: hall.getPatrons - - - # --------------------------------- - # Challenges - # --------------------------------- - - # Note: while challenges belong to groups, and would therefore make sense as a nested resource - # (eg /groups/:gid/challenges/:cid), they will also be referenced by users from the "challenges" tab - # without knowing which group they belong to. So to prevent unecessary lookups, we have them as a top-level resource - "/challenges:GET": - spec: - path: '/challenges' - description: "Get a list of challenges" - middleware: [auth.auth, i18n.getUserLanguage] - action: challenges.list - - - "/challenges:POST": - spec: - path: '/challenges' - method: 'POST' - description: "Create a challenge" - parameters: [body('','Challenge object (see ChallengeSchema)','object')] - middleware: [auth.auth, i18n.getUserLanguage] - action: challenges.create - - "/challenges/{cid}:GET": - spec: - path: '/challenges/{cid}' - description: 'Get a challenge' - parameters: [path('cid','Challenge id','string')] - middleware: [auth.auth, i18n.getUserLanguage] - action: challenges.get - - "/challenges/{cid}/csv": - spec: - description: 'Get a challenge (csv format)' - parameters: [path('cid','Challenge id','string')] - action: challenges.csv - - "/challenges/{cid}:POST": - spec: - path: '/challenges/{cid}' - method: 'POST' - description: "Update a challenge" - parameters: [ - path 'cid','Challenge id','string' - body('','Challenge object (see ChallengeSchema)','object') - ] - middleware: [auth.auth, i18n.getUserLanguage] - action: challenges.update - - "/challenges/{cid}:DELETE": - spec: - path: '/challenges/{cid}' - method: 'DELETE' - description: "Delete a challenge" - parameters: [path('cid','Challenge id','string')] - middleware: [auth.auth, i18n.getUserLanguage] - action: challenges.delete - - "/challenges/{cid}/close": - spec: - method: 'POST' - description: 'Close a challenge' - parameters: [ - path 'cid','Challenge id','string' - query 'uid','User ID of the winner','string',true - ] - middleware: [auth.auth, i18n.getUserLanguage] - action: challenges.selectWinner - - "/challenges/{cid}/join": - spec: - method: 'POST' - description: "Join a challenge" - parameters: [path('cid','Challenge id','string')] - middleware: [auth.auth, i18n.getUserLanguage] - action: challenges.join - - "/challenges/{cid}/leave": - spec: - method: 'POST' - description: 'Leave a challenge' - parameters: [path('cid','Challenge id','string')] - middleware: [auth.auth, i18n.getUserLanguage] - action: challenges.leave - - "/challenges/{cid}/member/{uid}": - spec: - description: "Get a member's progress in a particular challenge" - parameters: [ - path 'cid','Challenge id','string' - path 'uid','User id','string' - ] - middleware: [auth.auth, i18n.getUserLanguage] - action: challenges.getMember - - - if nconf.get("NODE_ENV") is "development" - api["/user/addTenGems"] = - spec: method:'POST' - action: user.addTenGems - - api["/user/addHourglass"] = - spec: method:'POST' - action: user.addHourglass - - _.each api, (route, path) -> - ## Spec format is: - # spec: - # path: "/pet/{petId}" - # description: "Operations about pets" - # notes: "Returns a pet based on ID" - # summary: "Find pet by ID" - # method: "GET" - # parameters: [path("petId", "ID of pet that needs to be fetched", "string")] - # type: "Pet" - # errorResponses: [swagger.errors.invalid("id"), swagger.errors.notFound("pet")] - # nickname: "getPetById" - - route.spec.description ?= '' - _.defaults route.spec, - path: path - nickname: path - notes: route.spec.description - summary: route.spec.description - parameters: [] - #type: 'Pet' - errorResponses: [] - method: 'GET' - route.middleware ?= if path.indexOf('/user') is 0 then [auth.auth, i18n.getUserLanguage, cron] else [i18n.getUserLanguage] - swagger["add#{route.spec.method}"](route);true - - - swagger.configure("#{nconf.get('BASE_URL')}/api/v2", "2") diff --git a/website/src/routes/dataexport.js b/website/src/routes/dataexport.js index 9fc2ded323..5bf02a228c 100644 --- a/website/src/routes/dataexport.js +++ b/website/src/routes/dataexport.js @@ -1,9 +1,9 @@ var express = require('express'); var router = new express.Router(); var dataexport = require('../controllers/dataexport'); -var auth = require('../controllers/auth'); +var auth = require('../controllers/api-v2/auth'); var nconf = require('nconf'); -var i18n = require('../i18n'); +var i18n = require('../libs/i18n'); var locals = require('../middlewares/locals'); /* Data export */ diff --git a/website/src/routes/pages.js b/website/src/routes/pages.js index be2d429e59..b88393301b 100644 --- a/website/src/routes/pages.js +++ b/website/src/routes/pages.js @@ -3,9 +3,7 @@ var express = require('express'); var router = new express.Router(); var _ = require('lodash'); var locals = require('../middlewares/locals'); -var user = require('../controllers/user'); -var auth = require('../controllers/auth'); -var i18n = require('../i18n'); +var i18n = require('../libs/i18n'); // -------- App -------- router.get('/', i18n.getUserLanguage, locals, function(req, res) { diff --git a/website/src/routes/payments.js b/website/src/routes/payments.js index 01667fe747..41c03210be 100644 --- a/website/src/routes/payments.js +++ b/website/src/routes/payments.js @@ -1,9 +1,9 @@ var nconf = require('nconf'); var express = require('express'); var router = new express.Router(); -var auth = require('../controllers/auth'); +var auth = require('../controllers/api-v2/auth'); var payments = require('../controllers/payments'); -var i18n = require('../i18n'); +var i18n = require('../libs/i18n'); router.get('/paypal/checkout', auth.authWithUrl, i18n.getUserLanguage, payments.paypalCheckout); router.get('/paypal/checkout/success', i18n.getUserLanguage, payments.paypalCheckoutSuccess); diff --git a/website/src/seed.js b/website/src/seed.js deleted file mode 100644 index c54c715168..0000000000 --- a/website/src/seed.js +++ /dev/null @@ -1,55 +0,0 @@ -/* - * This script is no longer required due to this code in src/models/group.js: - * // initialize tavern if !exists (fresh installs) - * Group.count({_id:'habitrpg'},function(err,ct){ - * ... - * }) - * - * However we're keeping this script in case future seed updates are needed. - * - * Reference: https://github.com/HabitRPG/habitrpg/issues/3852#issuecomment-55334572 - */ - - -/* - -require('coffee-script') // for habitrpg-shared -var nconf = require('nconf'); -var utils = require('./utils'); -var logging = require('./logging'); -utils.setupConfig(); -var async = require('async'); -var mongoose = require('mongoose'); -User = require('./models/user').model; -Group = require('./models/group').model; - -async.waterfall([ - function(cb){ - mongoose.connect(nconf.get('NODE_DB_URI'), cb); - }, - function(cb){ - Group.findById('habitrpg', cb); - }, - function(tavern, cb){ - logging.info({tavern:tavern,cb:cb}); - if (!tavern) { - tavern = new Group({ - _id: 'habitrpg', - chat: [], - leader: '9', - name: 'HabitRPG', - type: 'guild', - privacy:'public' - }); - tavern.save(cb) - } else { - cb(); - } - } -],function(err){ - if (err) throw err; - logging.info("Done initializing database"); - mongoose.disconnect(); -}) - -*/ diff --git a/website/src/server.js b/website/src/server.js index 23ce277eba..94bffe592b 100644 --- a/website/src/server.js +++ b/website/src/server.js @@ -2,9 +2,9 @@ var cluster = require("cluster"); var _ = require('lodash'); var nconf = require('nconf'); -var utils = require('./utils'); +var utils = require('./libs/utils'); utils.setupConfig(); -var logging = require('./logging'); +var logging = require('./libs/logging'); var isProd = nconf.get('NODE_ENV') === 'production'; var isDev = nconf.get('NODE_ENV') === 'development'; var DISABLE_LOGGING = nconf.get('DISABLE_REQUEST_LOGGING'); @@ -29,7 +29,7 @@ if (cores!==0 && cluster.isMaster && (isDev || isProd)) { var shared = require('../../common'); // Setup translations - var i18n = require('./i18n'); + var i18n = require('./libs/i18n'); var TWO_WEEKS = 1000 * 60 * 60 * 24 * 14; var app = express(); @@ -90,54 +90,68 @@ if (cores!==0 && cluster.isMaster && (isDev || isProd)) { var publicDir = path.join(__dirname, "/../public"); app.set("port", nconf.get('PORT')); - require('./middlewares/apiThrottle')(app); - app.use(require('./middlewares/domain')(server,mongoose)); - if (!isProd && !DISABLE_LOGGING) app.use(express.logger("dev")); - app.use(express.compress()); - app.set("views", __dirname + "/../views"); - app.set("view engine", "jade"); - app.use(express.favicon(publicDir + '/favicon.ico')); - app.use(require('./middlewares/cors')); + + // Setup two different Express apps, one that matches everything except '/api/v3' + // and the other for /api/v3 routes, so we can keep the old an new api versions completely separate + // not sharing a single middleware if we don't want to + var oldApp = express(); // api v1 and v2, and not scoped routes + var newApp = express(); // api v3 + + // Route requests to the right app + app.use(app.router); + // Matches all request except the ones going to /api/v3/** + app.all(/^(?!\/api\/v3).+/i, oldApp); + // Matches all requests going to /api/v3 + app.all('/api/v3', newApp); + + require('./middlewares/apiThrottle')(oldApp); + oldApp.use(require('./middlewares/domain')(server,mongoose)); + if (!isProd && !DISABLE_LOGGING) oldApp.use(express.logger("dev")); + oldApp.use(express.compress()); + oldApp.set("views", __dirname + "/../views"); + oldApp.set("view engine", "jade"); + oldApp.use(express.favicon(publicDir + '/favicon.ico')); + oldApp.use(require('./middlewares/cors')); var redirects = require('./middlewares/redirects'); - app.use(redirects.forceHabitica); - app.use(redirects.forceSSL); - app.use(express.urlencoded()); - app.use(express.json()); - app.use(require('method-override')()); - //app.use(express.cookieParser(nconf.get('SESSION_SECRET'))); - app.use(express.cookieParser()); - app.use(express.cookieSession({ secret: nconf.get('SESSION_SECRET'), httpOnly: false, cookie: { maxAge: TWO_WEEKS }})); - //app.use(express.session()); + oldApp.use(redirects.forceHabitica); + oldApp.use(redirects.forceSSL); + oldApp.use(express.urlencoded()); + oldApp.use(express.json()); + oldApp.use(require('method-override')()); + //oldApp.use(express.cookieParser(nconf.get('SESSION_SECRET'))); + oldApp.use(express.cookieParser()); + oldApp.use(express.cookieSession({ secret: nconf.get('SESSION_SECRET'), httpOnly: false, cookie: { maxAge: TWO_WEEKS }})); + //oldApp.use(express.session()); // Initialize Passport! Also use passport.session() middleware, to support // persistent login sessions (recommended). - app.use(passport.initialize()); - app.use(passport.session()); + oldApp.use(passport.initialize()); + oldApp.use(passport.session()); - app.use(app.router); + oldApp.use(oldApp.router); var maxAge = isProd ? 31536000000 : 0; // Cache emojis without copying them to build, they are too many - app.use(express['static'](path.join(__dirname, "/../build"), { maxAge: maxAge })); - app.use('/common/dist', express['static'](publicDir + "/../../common/dist", { maxAge: maxAge })); - app.use('/common/audio', express['static'](publicDir + "/../../common/audio", { maxAge: maxAge })); - app.use('/common/script/public', express['static'](publicDir + "/../../common/script/public", { maxAge: maxAge })); - app.use('/common/img', express['static'](publicDir + "/../../common/img", { maxAge: maxAge })); - app.use(express['static'](publicDir)); + oldApp.use(express['static'](path.join(__dirname, "/../build"), { maxAge: maxAge })); + oldApp.use('/common/dist', express['static'](publicDir + "/../../common/dist", { maxAge: maxAge })); + oldApp.use('/common/audio', express['static'](publicDir + "/../../common/audio", { maxAge: maxAge })); + oldApp.use('/common/script/public', express['static'](publicDir + "/../../common/script/public", { maxAge: maxAge })); + oldApp.use('/common/img', express['static'](publicDir + "/../../common/img", { maxAge: maxAge })); + oldApp.use(express['static'](publicDir)); // Custom Directives - app.use(require('./routes/pages').middleware); - app.use(require('./routes/payments').middleware); - app.use(require('./routes/auth').middleware); - app.use(require('./routes/coupon').middleware); - app.use(require('./routes/unsubscription').middleware); + oldApp.use(require('./routes/pages').middleware); + oldApp.use(require('./routes/payments').middleware); + oldApp.use(require('./routes/api-v2/auth').middleware); + oldApp.use(require('./routes/api-v2/coupon').middleware); + oldApp.use(require('./routes/api-v2/unsubscription').middleware); var v2 = express(); - app.use('/api/v2', v2); - app.use('/api/v1', require('./routes/apiv1').middleware); - app.use('/export', require('./routes/dataexport').middleware); - require('./routes/apiv2.coffee')(swagger, v2); - app.use(require('./middlewares/errorHandler')); + oldApp.use('/api/v2', v2); + oldApp.use('/api/v1', require('./routes/api-v1').middleware); + oldApp.use('/export', require('./routes/dataexport').middleware); + require('./routes/api-v2/swagger')(swagger, v2); + oldApp.use(require('./middlewares/errorHandler')); server.on('request', app); server.listen(app.get("port"), function() { diff --git a/website/views/options/inventory/drops.jade b/website/views/options/inventory/drops.jade index 34fcbb15ba..c9c7143b0d 100644 --- a/website/views/options/inventory/drops.jade +++ b/website/views/options/inventory/drops.jade @@ -136,19 +136,6 @@ | {{::pot.value}}  span.Pet_Currency_Gem1x.inline-gems - li.customize-menu - menu.pets-menu!=env.t('magicHatchingPotions') + " - " + env.t('fallEventAvailability') - p.muted=env.t('premiumPotionNoDropExplanation') - div(ng-repeat='pot in Content.hatchingPotions', ng-if='pot.premium && pot.canBuy(user)') - button.customize-option(class='Pet_HatchingPotion_{{::pot.key}}', - popover='{{::pot.notes()}} {{::pot.addlNotes()}}', popover-append-to-body='true', - popover-title!=env.t("potion", {potionType: "{{::pot.text()}}"}), - popover-trigger='mouseenter', popover-placement='top', - ng-click='purchase("hatchingPotions", pot)') - p - | {{::pot.value}}  - span.Pet_Currency_Gem1x.inline-gems - li.customize-menu menu.pets-menu(label=env.t('food')) p.muted!=env.t('dropsExplanation') diff --git a/website/views/options/inventory/seasonal-shop.jade b/website/views/options/inventory/seasonal-shop.jade index a5576a00d8..f932f70648 100644 --- a/website/views/options/inventory/seasonal-shop.jade +++ b/website/views/options/inventory/seasonal-shop.jade @@ -1,16 +1,16 @@ .container-fluid .stable.row: .col-xs-12 - div(class="#{env.worldDmg.seasonalShop ? 'seasonalshop_broken' : 'seasonalshop_open'}").pull-left-sm.col-centered + div(class="#{env.worldDmg.seasonalShop ? 'seasonalshop_broken' : 'seasonalshop_closed'}").pull-left-sm.col-centered .popover.static-popover.fade.right.in.pull-left-sm.col-centered .arrow.hidden-xs - h3.popover-title!=env.t('seasonalShopTitle', {linkStart:"", linkEnd: ""}) + h3.popover-title!=env.t('seasonalShopClosedTitle', {linkStart:"", linkEnd: ""}) .popover-content - p(ng-if='!env.worldDmg.seasonalShop')!=env.t('seasonalShopFallText') + p(ng-if='!env.worldDmg.seasonalShop')!=env.t('seasonalShopClosedText') p(ng-if='env.worldDmg.seasonalShop')!=env.t('seasonalShopFallTextBroken') - .well(ng-if='User.user.achievements.rebirths > 0')=env.t('seasonalShopRebirth') + // .well(ng-if='User.user.achievements.rebirths > 0')=env.t('seasonalShopRebirth') - li.customize-menu.inventory-gear + // li.customize-menu.inventory-gear menu.pets-menu(label='{{::label}}', ng-repeat='(set,label) in ::{fallWarrior:env.t("monsterOfScienceSet"), fallMage:env.t("witchyWizardSet"), fallHealer:env.t("mummyMedicSet"), fallRogue:env.t("vampireSmiterSet")}') div(ng-repeat='item in ::getSeasonalShopArray(set)', ng-class="{transparent: user.items.gear.owned[item.key] !== undefined}") @@ -23,7 +23,7 @@ | {{((item.specialClass == "wizard") && (item.type == "weapon")) + 1}}  span.Pet_Currency_Gem1x.inline-gems - // menu.pets-menu(label=env.t('quests')) + menu.pets-menu(label=env.t('quests')) div(ng-repeat='quest in ::getSeasonalShopQuests()') button.customize-option(ng-class='(quest.previous && !user.achievements.quests[quest.previous]) ? "inventory_quest_scroll_locked inventory_quest_scroll_{{::quest.key}}_locked locked" : "inventory_quest_scroll inventory_quest_scroll_{{::quest.key}}"' data-popover-html="{{::quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : questPopover(quest) | markdown}}", diff --git a/website/views/options/profile.jade b/website/views/options/profile.jade index a11ad3f29d..8c4b437df8 100644 --- a/website/views/options/profile.jade +++ b/website/views/options/profile.jade @@ -84,7 +84,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') + +buyPref('hair.color', ['candycorn','ghostwhite','halloween','midnight','pumpkin','zombie'], 'hauntedColors', 'disabled') +buyPref('hair.color', ['aurora','festive','hollygreen','peppermint','snowy','winterstar'], 'winteryColors', 'disabled') li.customize-menu @@ -152,7 +152,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') + +buyPref('skin', ['candycorn','ogre','pumpkin2','reptile','shadow2','skeleton2','transparent','zombie2'], 'supernaturalSkins', 'disabled') +buyPref('skin', ['clownfish','deepocean','merblue','mergold','mergreen','merruby','shark','tropicalwater'], 'splashySkins', 'disabled')