diff --git a/.eslintrc b/.eslintrc index 7613632120..870626d394 100644 --- a/.eslintrc +++ b/.eslintrc @@ -32,7 +32,6 @@ "no-octal": 2, "no-process-env": 2, "no-proto": 2, - "no-implied-eval": 2, "yoda": 2, "wrap-iife": 2, "radix": 2, @@ -59,7 +58,6 @@ "no-path-concat": 2, "arrow-spacing": 2, "constructor-super": 2, - "generator-star-spacing": 2, "no-arrow-condition": 2, "no-class-assign": 2, "no-const-assign": 2, diff --git a/.nvmrc b/.nvmrc index 313d2e48ee..f77856a6f1 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -0.10.40 \ No newline at end of file +4.3.1 diff --git a/.travis.yml b/.travis.yml index a5ff61b605..86de1b5103 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: node_js node_js: - - '0.10' + - '4.3.1' before_install: - "npm install -g npm@2" - "npm install -g gulp" diff --git a/common/dist/sprites/spritesmith-largeSprites-0.png b/common/dist/sprites/spritesmith-largeSprites-0.png index c60f97779f..a1bdfee053 100644 Binary files a/common/dist/sprites/spritesmith-largeSprites-0.png and b/common/dist/sprites/spritesmith-largeSprites-0.png differ diff --git a/common/dist/sprites/spritesmith-main-0.png b/common/dist/sprites/spritesmith-main-0.png index 05bf2a7567..b03b2c3146 100644 Binary files a/common/dist/sprites/spritesmith-main-0.png and b/common/dist/sprites/spritesmith-main-0.png differ diff --git a/common/dist/sprites/spritesmith-main-1.png b/common/dist/sprites/spritesmith-main-1.png index 1a858f1b3a..fb6bb67bb3 100644 Binary files a/common/dist/sprites/spritesmith-main-1.png and b/common/dist/sprites/spritesmith-main-1.png differ diff --git a/common/dist/sprites/spritesmith-main-10.css b/common/dist/sprites/spritesmith-main-10.css index cc9d09bb4a..5bd228202d 100644 --- a/common/dist/sprites/spritesmith-main-10.css +++ b/common/dist/sprites/spritesmith-main-10.css @@ -1,1992 +1,1962 @@ +.Mount_Icon_Fox-Peppermint { + background-image: url(spritesmith-main-10.png); + background-position: -424px -100px; + width: 81px; + height: 99px; +} +.Mount_Icon_Fox-Red { + background-image: url(spritesmith-main-10.png); + background-position: -1244px -100px; + width: 81px; + height: 99px; +} +.Mount_Icon_Fox-Shade { + background-image: url(spritesmith-main-10.png); + background-position: -424px -200px; + width: 81px; + height: 99px; +} +.Mount_Icon_Fox-Skeleton { + background-image: url(spritesmith-main-10.png); + background-position: 0px -345px; + width: 81px; + height: 99px; +} +.Mount_Icon_Fox-Spooky { + background-image: url(spritesmith-main-10.png); + background-position: -82px -345px; + width: 81px; + height: 99px; +} +.Mount_Icon_Fox-White { + background-image: url(spritesmith-main-10.png); + background-position: -670px -300px; + width: 81px; + height: 99px; +} +.Mount_Icon_Fox-Zombie { + background-image: url(spritesmith-main-10.png); + background-position: -1080px 0px; + width: 81px; + height: 99px; +} +.Mount_Icon_Frog-Base { + background-image: url(spritesmith-main-10.png); + background-position: -212px -115px; + width: 105px; + height: 114px; +} +.Mount_Icon_Frog-CottonCandyBlue { + background-image: url(spritesmith-main-10.png); + background-position: -106px 0px; + width: 105px; + height: 114px; +} +.Mount_Icon_Frog-CottonCandyPink { + background-image: url(spritesmith-main-10.png); + background-position: -212px 0px; + width: 105px; + height: 114px; +} +.Mount_Icon_Frog-Desert { + background-image: url(spritesmith-main-10.png); + background-position: 0px -115px; + width: 105px; + height: 114px; +} +.Mount_Icon_Frog-Golden { + background-image: url(spritesmith-main-10.png); + background-position: -106px -115px; + width: 105px; + height: 114px; +} +.Mount_Icon_Frog-Red { + background-image: url(spritesmith-main-10.png); + background-position: 0px 0px; + width: 105px; + height: 114px; +} +.Mount_Icon_Frog-Shade { + background-image: url(spritesmith-main-10.png); + background-position: -318px 0px; + width: 105px; + height: 114px; +} +.Mount_Icon_Frog-Skeleton { + background-image: url(spritesmith-main-10.png); + background-position: -318px -115px; + width: 105px; + height: 114px; +} +.Mount_Icon_Frog-White { + background-image: url(spritesmith-main-10.png); + background-position: 0px -230px; + width: 105px; + height: 114px; +} +.Mount_Icon_Frog-Zombie { + background-image: url(spritesmith-main-10.png); + background-position: -106px -230px; + width: 105px; + height: 114px; +} +.Mount_Icon_Gryphon-Base { + background-image: url(spritesmith-main-10.png); + background-position: -164px -345px; + width: 81px; + height: 99px; +} +.Mount_Icon_Gryphon-CottonCandyBlue { + background-image: url(spritesmith-main-10.png); + background-position: -246px -345px; + width: 81px; + height: 99px; +} +.Mount_Icon_Gryphon-CottonCandyPink { + background-image: url(spritesmith-main-10.png); + background-position: -328px -345px; + width: 81px; + height: 99px; +} +.Mount_Icon_Gryphon-Desert { + background-image: url(spritesmith-main-10.png); + background-position: -410px -345px; + width: 81px; + height: 99px; +} +.Mount_Icon_Gryphon-Golden { + background-image: url(spritesmith-main-10.png); + background-position: -506px 0px; + width: 81px; + height: 99px; +} +.Mount_Icon_Gryphon-Red { + background-image: url(spritesmith-main-10.png); + background-position: -506px -100px; + width: 81px; + height: 99px; +} +.Mount_Icon_Gryphon-RoyalPurple { + background-image: url(spritesmith-main-10.png); + background-position: -506px -200px; + width: 81px; + height: 99px; +} +.Mount_Icon_Gryphon-Shade { + background-image: url(spritesmith-main-10.png); + background-position: -506px -300px; + width: 81px; + height: 99px; +} +.Mount_Icon_Gryphon-Skeleton { + background-image: url(spritesmith-main-10.png); + background-position: 0px -445px; + width: 81px; + height: 99px; +} +.Mount_Icon_Gryphon-White { + background-image: url(spritesmith-main-10.png); + background-position: -82px -445px; + width: 81px; + height: 99px; +} +.Mount_Icon_Gryphon-Zombie { + background-image: url(spritesmith-main-10.png); + background-position: -164px -445px; + width: 81px; + height: 99px; +} +.Mount_Icon_Hedgehog-Base { + background-image: url(spritesmith-main-10.png); + background-position: -246px -445px; + width: 81px; + height: 99px; +} .Mount_Icon_Hedgehog-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -328px -306px; + background-position: -328px -445px; width: 81px; height: 99px; } .Mount_Icon_Hedgehog-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -82px -1106px; + background-position: -410px -445px; width: 81px; height: 99px; } .Mount_Icon_Hedgehog-Desert { background-image: url(spritesmith-main-10.png); - background-position: -820px -806px; + background-position: -492px -445px; width: 81px; height: 99px; } .Mount_Icon_Hedgehog-Golden { background-image: url(spritesmith-main-10.png); - background-position: 0px -106px; + background-position: -588px 0px; width: 81px; height: 99px; } .Mount_Icon_Hedgehog-Red { background-image: url(spritesmith-main-10.png); - background-position: -82px -106px; + background-position: -588px -100px; width: 81px; height: 99px; } .Mount_Icon_Hedgehog-Shade { background-image: url(spritesmith-main-10.png); - background-position: -164px -106px; + background-position: -588px -200px; width: 81px; height: 99px; } .Mount_Icon_Hedgehog-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -279px 0px; + background-position: -588px -300px; width: 81px; height: 99px; } .Mount_Icon_Hedgehog-White { background-image: url(spritesmith-main-10.png); - background-position: -279px -100px; + background-position: -588px -400px; width: 81px; height: 99px; } .Mount_Icon_Hedgehog-Zombie { background-image: url(spritesmith-main-10.png); - background-position: 0px -206px; + background-position: 0px -545px; width: 81px; height: 99px; } .Mount_Icon_Horse-Base { background-image: url(spritesmith-main-10.png); - background-position: -82px -206px; + background-position: -82px -545px; width: 81px; height: 99px; } .Mount_Icon_Horse-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -164px -206px; + background-position: -164px -545px; width: 81px; height: 99px; } .Mount_Icon_Horse-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -246px -206px; + background-position: -246px -545px; width: 81px; height: 99px; } .Mount_Icon_Horse-Desert { background-image: url(spritesmith-main-10.png); - background-position: -361px 0px; + background-position: -328px -545px; width: 81px; height: 99px; } .Mount_Icon_Horse-Golden { background-image: url(spritesmith-main-10.png); - background-position: -361px -100px; + background-position: -410px -545px; width: 81px; height: 99px; } .Mount_Icon_Horse-Red { background-image: url(spritesmith-main-10.png); - background-position: -361px -200px; + background-position: -492px -545px; width: 81px; height: 99px; } .Mount_Icon_Horse-Shade { background-image: url(spritesmith-main-10.png); - background-position: 0px -306px; + background-position: -574px -545px; width: 81px; height: 99px; } .Mount_Icon_Horse-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -82px -306px; + background-position: -670px 0px; width: 81px; height: 99px; } .Mount_Icon_Horse-White { background-image: url(spritesmith-main-10.png); - background-position: -164px -306px; + background-position: -670px -100px; width: 81px; height: 99px; } .Mount_Icon_Horse-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -246px -306px; + background-position: -670px -200px; width: 81px; height: 99px; } .Mount_Icon_JackOLantern-Base { background-image: url(spritesmith-main-10.png); - background-position: -106px 0px; + background-position: -318px -230px; width: 90px; height: 105px; } .Mount_Icon_LionCub-Base { background-image: url(spritesmith-main-10.png); - background-position: -443px 0px; + background-position: -670px -400px; width: 81px; height: 99px; } .Mount_Icon_LionCub-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -443px -100px; + background-position: -670px -500px; width: 81px; height: 99px; } .Mount_Icon_LionCub-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -443px -200px; + background-position: 0px -645px; width: 81px; height: 99px; } .Mount_Icon_LionCub-Desert { background-image: url(spritesmith-main-10.png); - background-position: -443px -300px; + background-position: -82px -645px; width: 81px; height: 99px; } .Mount_Icon_LionCub-Ethereal { background-image: url(spritesmith-main-10.png); - background-position: 0px -406px; + background-position: -164px -645px; width: 81px; height: 99px; } .Mount_Icon_LionCub-Golden { background-image: url(spritesmith-main-10.png); - background-position: -82px -406px; + background-position: -246px -645px; width: 81px; height: 99px; } .Mount_Icon_LionCub-Peppermint { background-image: url(spritesmith-main-10.png); - background-position: -164px -406px; + background-position: -328px -645px; width: 81px; height: 99px; } .Mount_Icon_LionCub-Red { background-image: url(spritesmith-main-10.png); - background-position: -246px -406px; + background-position: -410px -645px; width: 81px; height: 99px; } .Mount_Icon_LionCub-Shade { background-image: url(spritesmith-main-10.png); - background-position: -328px -406px; + background-position: -492px -645px; width: 81px; height: 99px; } .Mount_Icon_LionCub-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -410px -406px; + background-position: -574px -645px; width: 81px; height: 99px; } .Mount_Icon_LionCub-Spooky { background-image: url(spritesmith-main-10.png); - background-position: -525px 0px; + background-position: -656px -645px; width: 81px; height: 99px; } .Mount_Icon_LionCub-White { background-image: url(spritesmith-main-10.png); - background-position: -525px -100px; + background-position: -752px 0px; width: 81px; height: 99px; } .Mount_Icon_LionCub-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -525px -200px; + background-position: -752px -100px; width: 81px; height: 99px; } .Mount_Icon_Mammoth-Base { background-image: url(spritesmith-main-10.png); - background-position: -525px -300px; + background-position: -752px -200px; width: 81px; height: 99px; } .Mount_Icon_MantisShrimp-Base { background-image: url(spritesmith-main-10.png); - background-position: -525px -400px; + background-position: -752px -300px; width: 81px; height: 99px; } .Mount_Icon_Monkey-Base { background-image: url(spritesmith-main-10.png); - background-position: 0px -506px; + background-position: -752px -400px; width: 81px; height: 99px; } .Mount_Icon_Monkey-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -82px -506px; + background-position: -752px -500px; width: 81px; height: 99px; } .Mount_Icon_Monkey-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -164px -506px; + background-position: -752px -600px; width: 81px; height: 99px; } .Mount_Icon_Monkey-Desert { background-image: url(spritesmith-main-10.png); - background-position: -246px -506px; + background-position: -834px 0px; width: 81px; height: 99px; } .Mount_Icon_Monkey-Golden { background-image: url(spritesmith-main-10.png); - background-position: -328px -506px; + background-position: -834px -100px; width: 81px; height: 99px; } .Mount_Icon_Monkey-Red { background-image: url(spritesmith-main-10.png); - background-position: -410px -506px; + background-position: -834px -200px; width: 81px; height: 99px; } .Mount_Icon_Monkey-Shade { background-image: url(spritesmith-main-10.png); - background-position: -492px -506px; + background-position: -834px -300px; width: 81px; height: 99px; } .Mount_Icon_Monkey-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -607px 0px; + background-position: -834px -400px; width: 81px; height: 99px; } .Mount_Icon_Monkey-White { background-image: url(spritesmith-main-10.png); - background-position: -607px -100px; + background-position: -834px -500px; width: 81px; height: 99px; } .Mount_Icon_Monkey-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -607px -200px; + background-position: -834px -600px; width: 81px; height: 99px; } .Mount_Icon_Octopus-Base { background-image: url(spritesmith-main-10.png); - background-position: -607px -300px; + background-position: 0px -745px; width: 81px; height: 99px; } .Mount_Icon_Octopus-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -607px -400px; + background-position: -82px -745px; width: 81px; height: 99px; } .Mount_Icon_Octopus-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -607px -500px; + background-position: -164px -745px; width: 81px; height: 99px; } .Mount_Icon_Octopus-Desert { background-image: url(spritesmith-main-10.png); - background-position: -689px 0px; + background-position: -246px -745px; width: 81px; height: 99px; } .Mount_Icon_Octopus-Golden { background-image: url(spritesmith-main-10.png); - background-position: -689px -100px; + background-position: -328px -745px; width: 81px; height: 99px; } .Mount_Icon_Octopus-Red { background-image: url(spritesmith-main-10.png); - background-position: -689px -200px; + background-position: -410px -745px; width: 81px; height: 99px; } .Mount_Icon_Octopus-Shade { background-image: url(spritesmith-main-10.png); - background-position: -689px -300px; + background-position: -492px -745px; width: 81px; height: 99px; } .Mount_Icon_Octopus-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -689px -400px; + background-position: -574px -745px; width: 81px; height: 99px; } .Mount_Icon_Octopus-White { background-image: url(spritesmith-main-10.png); - background-position: -689px -500px; + background-position: -656px -745px; width: 81px; height: 99px; } .Mount_Icon_Octopus-Zombie { background-image: url(spritesmith-main-10.png); - background-position: 0px -606px; + background-position: -738px -745px; width: 81px; height: 99px; } .Mount_Icon_Orca-Base { background-image: url(spritesmith-main-10.png); - background-position: -82px -606px; + background-position: -820px -745px; width: 81px; height: 99px; } .Mount_Icon_Owl-Base { background-image: url(spritesmith-main-10.png); - background-position: -164px -606px; + background-position: -916px 0px; width: 81px; height: 99px; } .Mount_Icon_Owl-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -246px -606px; + background-position: -916px -100px; width: 81px; height: 99px; } .Mount_Icon_Owl-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -328px -606px; + background-position: -916px -200px; width: 81px; height: 99px; } .Mount_Icon_Owl-Desert { background-image: url(spritesmith-main-10.png); - background-position: -410px -606px; + background-position: -916px -300px; width: 81px; height: 99px; } .Mount_Icon_Owl-Golden { background-image: url(spritesmith-main-10.png); - background-position: -492px -606px; + background-position: -916px -400px; width: 81px; height: 99px; } .Mount_Icon_Owl-Red { background-image: url(spritesmith-main-10.png); - background-position: -574px -606px; + background-position: -916px -500px; width: 81px; height: 99px; } .Mount_Icon_Owl-Shade { background-image: url(spritesmith-main-10.png); - background-position: -656px -606px; + background-position: -916px -600px; width: 81px; height: 99px; } .Mount_Icon_Owl-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -771px 0px; + background-position: -916px -700px; width: 81px; height: 99px; } .Mount_Icon_Owl-White { background-image: url(spritesmith-main-10.png); - background-position: -771px -100px; + background-position: 0px -845px; width: 81px; height: 99px; } .Mount_Icon_Owl-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -771px -200px; + background-position: -82px -845px; width: 81px; height: 99px; } .Mount_Icon_PandaCub-Base { background-image: url(spritesmith-main-10.png); - background-position: -771px -300px; + background-position: -164px -845px; width: 81px; height: 99px; } .Mount_Icon_PandaCub-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -771px -400px; + background-position: -246px -845px; width: 81px; height: 99px; } .Mount_Icon_PandaCub-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -771px -500px; + background-position: -328px -845px; width: 81px; height: 99px; } .Mount_Icon_PandaCub-Desert { background-image: url(spritesmith-main-10.png); - background-position: -771px -600px; + background-position: -410px -845px; width: 81px; height: 99px; } .Mount_Icon_PandaCub-Golden { background-image: url(spritesmith-main-10.png); - background-position: 0px -706px; + background-position: -492px -845px; width: 81px; height: 99px; } .Mount_Icon_PandaCub-Peppermint { background-image: url(spritesmith-main-10.png); - background-position: -82px -706px; + background-position: -574px -845px; width: 81px; height: 99px; } .Mount_Icon_PandaCub-Red { background-image: url(spritesmith-main-10.png); - background-position: -164px -706px; + background-position: -656px -845px; width: 81px; height: 99px; } .Mount_Icon_PandaCub-Shade { background-image: url(spritesmith-main-10.png); - background-position: -246px -706px; + background-position: -738px -845px; width: 81px; height: 99px; } .Mount_Icon_PandaCub-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -328px -706px; + background-position: -820px -845px; width: 81px; height: 99px; } .Mount_Icon_PandaCub-Spooky { background-image: url(spritesmith-main-10.png); - background-position: -410px -706px; + background-position: -902px -845px; width: 81px; height: 99px; } .Mount_Icon_PandaCub-White { background-image: url(spritesmith-main-10.png); - background-position: -492px -706px; + background-position: -998px 0px; width: 81px; height: 99px; } .Mount_Icon_PandaCub-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -574px -706px; + background-position: -998px -100px; width: 81px; height: 99px; } .Mount_Icon_Parrot-Base { background-image: url(spritesmith-main-10.png); - background-position: -656px -706px; + background-position: -998px -200px; width: 81px; height: 99px; } .Mount_Icon_Parrot-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -738px -706px; + background-position: -998px -300px; width: 81px; height: 99px; } .Mount_Icon_Parrot-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -853px 0px; + background-position: -998px -400px; width: 81px; height: 99px; } .Mount_Icon_Parrot-Desert { background-image: url(spritesmith-main-10.png); - background-position: -853px -100px; + background-position: -998px -500px; width: 81px; height: 99px; } .Mount_Icon_Parrot-Golden { background-image: url(spritesmith-main-10.png); - background-position: -853px -200px; + background-position: -998px -600px; width: 81px; height: 99px; } .Mount_Icon_Parrot-Red { background-image: url(spritesmith-main-10.png); - background-position: -853px -300px; + background-position: -998px -700px; width: 81px; height: 99px; } .Mount_Icon_Parrot-Shade { background-image: url(spritesmith-main-10.png); - background-position: -853px -400px; + background-position: -998px -800px; width: 81px; height: 99px; } .Mount_Icon_Parrot-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -853px -500px; + background-position: 0px -945px; width: 81px; height: 99px; } .Mount_Icon_Parrot-White { background-image: url(spritesmith-main-10.png); - background-position: -853px -600px; + background-position: -82px -945px; width: 81px; height: 99px; } .Mount_Icon_Parrot-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -853px -700px; + background-position: -164px -945px; width: 81px; height: 99px; } .Mount_Icon_Penguin-Base { background-image: url(spritesmith-main-10.png); - background-position: 0px -806px; + background-position: -246px -945px; width: 81px; height: 99px; } .Mount_Icon_Penguin-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -82px -806px; + background-position: -328px -945px; width: 81px; height: 99px; } .Mount_Icon_Penguin-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -164px -806px; + background-position: -410px -945px; width: 81px; height: 99px; } .Mount_Icon_Penguin-Desert { background-image: url(spritesmith-main-10.png); - background-position: -246px -806px; + background-position: -492px -945px; width: 81px; height: 99px; } .Mount_Icon_Penguin-Golden { background-image: url(spritesmith-main-10.png); - background-position: -328px -806px; + background-position: -574px -945px; width: 81px; height: 99px; } .Mount_Icon_Penguin-Red { background-image: url(spritesmith-main-10.png); - background-position: -410px -806px; + background-position: -656px -945px; width: 81px; height: 99px; } .Mount_Icon_Penguin-Shade { background-image: url(spritesmith-main-10.png); - background-position: -492px -806px; + background-position: -738px -945px; width: 81px; height: 99px; } .Mount_Icon_Penguin-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -574px -806px; + background-position: -820px -945px; width: 81px; height: 99px; } .Mount_Icon_Penguin-White { background-image: url(spritesmith-main-10.png); - background-position: -656px -806px; + background-position: -902px -945px; width: 81px; height: 99px; } .Mount_Icon_Penguin-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -738px -806px; + background-position: -984px -945px; width: 81px; height: 99px; } .Mount_Icon_Phoenix-Base { background-image: url(spritesmith-main-10.png); - background-position: 0px 0px; + background-position: -212px -230px; width: 105px; height: 105px; } .Mount_Icon_Rat-Base { background-image: url(spritesmith-main-10.png); - background-position: -935px 0px; + background-position: -1080px -100px; width: 81px; height: 99px; } .Mount_Icon_Rat-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -935px -100px; + background-position: -1080px -200px; width: 81px; height: 99px; } .Mount_Icon_Rat-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -935px -200px; + background-position: -1080px -300px; width: 81px; height: 99px; } .Mount_Icon_Rat-Desert { background-image: url(spritesmith-main-10.png); - background-position: -935px -300px; + background-position: -1080px -400px; width: 81px; height: 99px; } .Mount_Icon_Rat-Golden { background-image: url(spritesmith-main-10.png); - background-position: -935px -400px; + background-position: -1080px -500px; width: 81px; height: 99px; } .Mount_Icon_Rat-Red { background-image: url(spritesmith-main-10.png); - background-position: -935px -500px; + background-position: -1080px -600px; width: 81px; height: 99px; } .Mount_Icon_Rat-Shade { background-image: url(spritesmith-main-10.png); - background-position: -935px -600px; + background-position: -1080px -700px; width: 81px; height: 99px; } .Mount_Icon_Rat-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -935px -700px; + background-position: -1080px -800px; width: 81px; height: 99px; } .Mount_Icon_Rat-White { background-image: url(spritesmith-main-10.png); - background-position: -935px -800px; + background-position: -1080px -900px; width: 81px; height: 99px; } .Mount_Icon_Rat-Zombie { background-image: url(spritesmith-main-10.png); - background-position: 0px -906px; + background-position: 0px -1045px; width: 81px; height: 99px; } .Mount_Icon_Rock-Base { background-image: url(spritesmith-main-10.png); - background-position: -82px -906px; + background-position: -82px -1045px; width: 81px; height: 99px; } .Mount_Icon_Rock-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -164px -906px; + background-position: -164px -1045px; width: 81px; height: 99px; } .Mount_Icon_Rock-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -246px -906px; + background-position: -246px -1045px; width: 81px; height: 99px; } .Mount_Icon_Rock-Desert { background-image: url(spritesmith-main-10.png); - background-position: -328px -906px; + background-position: -328px -1045px; width: 81px; height: 99px; } .Mount_Icon_Rock-Golden { background-image: url(spritesmith-main-10.png); - background-position: -410px -906px; + background-position: -410px -1045px; width: 81px; height: 99px; } .Mount_Icon_Rock-Red { background-image: url(spritesmith-main-10.png); - background-position: -492px -906px; + background-position: -492px -1045px; width: 81px; height: 99px; } .Mount_Icon_Rock-Shade { background-image: url(spritesmith-main-10.png); - background-position: -574px -906px; + background-position: -574px -1045px; width: 81px; height: 99px; } .Mount_Icon_Rock-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -656px -906px; + background-position: -656px -1045px; width: 81px; height: 99px; } .Mount_Icon_Rock-White { background-image: url(spritesmith-main-10.png); - background-position: -738px -906px; + background-position: -738px -1045px; width: 81px; height: 99px; } .Mount_Icon_Rock-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -820px -906px; + background-position: -820px -1045px; width: 81px; height: 99px; } .Mount_Icon_Rooster-Base { background-image: url(spritesmith-main-10.png); - background-position: -902px -906px; + background-position: -902px -1045px; width: 81px; height: 99px; } .Mount_Icon_Rooster-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -1017px 0px; + background-position: -984px -1045px; width: 81px; height: 99px; } .Mount_Icon_Rooster-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -1017px -100px; + background-position: -1066px -1045px; width: 81px; height: 99px; } .Mount_Icon_Rooster-Desert { background-image: url(spritesmith-main-10.png); - background-position: -1017px -200px; + background-position: -1162px 0px; width: 81px; height: 99px; } .Mount_Icon_Rooster-Golden { background-image: url(spritesmith-main-10.png); - background-position: -1017px -300px; + background-position: -1162px -100px; width: 81px; height: 99px; } .Mount_Icon_Rooster-Red { background-image: url(spritesmith-main-10.png); - background-position: -1017px -400px; + background-position: -1162px -200px; width: 81px; height: 99px; } .Mount_Icon_Rooster-Shade { background-image: url(spritesmith-main-10.png); - background-position: -1017px -500px; + background-position: -1162px -300px; width: 81px; height: 99px; } .Mount_Icon_Rooster-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -1017px -600px; + background-position: -1162px -400px; width: 81px; height: 99px; } .Mount_Icon_Rooster-White { background-image: url(spritesmith-main-10.png); - background-position: -1017px -700px; + background-position: -1162px -500px; width: 81px; height: 99px; } .Mount_Icon_Rooster-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -1017px -800px; + background-position: -1162px -600px; width: 81px; height: 99px; } .Mount_Icon_Sabretooth-Base { background-image: url(spritesmith-main-10.png); - background-position: -1017px -900px; + background-position: -1162px -700px; width: 81px; height: 99px; } .Mount_Icon_Sabretooth-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -1099px 0px; + background-position: -1162px -800px; width: 81px; height: 99px; } .Mount_Icon_Sabretooth-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -1099px -100px; + background-position: -1162px -900px; width: 81px; height: 99px; } .Mount_Icon_Sabretooth-Desert { background-image: url(spritesmith-main-10.png); - background-position: -1099px -200px; + background-position: -1162px -1000px; width: 81px; height: 99px; } .Mount_Icon_Sabretooth-Golden { background-image: url(spritesmith-main-10.png); - background-position: -1099px -300px; + background-position: -1244px 0px; width: 81px; height: 99px; } .Mount_Icon_Sabretooth-Red { background-image: url(spritesmith-main-10.png); - background-position: -1099px -400px; + background-position: -424px 0px; width: 81px; height: 99px; } .Mount_Icon_Sabretooth-Shade { background-image: url(spritesmith-main-10.png); - background-position: -1099px -500px; + background-position: -1244px -200px; width: 81px; height: 99px; } .Mount_Icon_Sabretooth-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -1099px -600px; + background-position: -1244px -300px; width: 81px; height: 99px; } .Mount_Icon_Sabretooth-White { background-image: url(spritesmith-main-10.png); - background-position: -1099px -700px; + background-position: -1244px -400px; width: 81px; height: 99px; } .Mount_Icon_Sabretooth-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -1099px -800px; + background-position: -1244px -500px; width: 81px; height: 99px; } .Mount_Icon_Seahorse-Base { background-image: url(spritesmith-main-10.png); - background-position: -1099px -900px; + background-position: -1244px -600px; width: 81px; height: 99px; } .Mount_Icon_Seahorse-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: 0px -1006px; + background-position: -1244px -700px; width: 81px; height: 99px; } .Mount_Icon_Seahorse-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -82px -1006px; + background-position: -1244px -800px; width: 81px; height: 99px; } .Mount_Icon_Seahorse-Desert { background-image: url(spritesmith-main-10.png); - background-position: -164px -1006px; + background-position: -1244px -900px; width: 81px; height: 99px; } .Mount_Icon_Seahorse-Golden { background-image: url(spritesmith-main-10.png); - background-position: -246px -1006px; + background-position: -1244px -1000px; width: 81px; height: 99px; } .Mount_Icon_Seahorse-Red { background-image: url(spritesmith-main-10.png); - background-position: -328px -1006px; + background-position: 0px -1145px; width: 81px; height: 99px; } .Mount_Icon_Seahorse-Shade { background-image: url(spritesmith-main-10.png); - background-position: -410px -1006px; + background-position: -82px -1145px; width: 81px; height: 99px; } .Mount_Icon_Seahorse-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -492px -1006px; + background-position: -164px -1145px; width: 81px; height: 99px; } .Mount_Icon_Seahorse-White { background-image: url(spritesmith-main-10.png); - background-position: -574px -1006px; + background-position: -246px -1145px; width: 81px; height: 99px; } .Mount_Icon_Seahorse-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -656px -1006px; + background-position: -328px -1145px; width: 81px; height: 99px; } .Mount_Icon_Sheep-Base { background-image: url(spritesmith-main-10.png); - background-position: -738px -1006px; + background-position: -410px -1145px; width: 81px; height: 99px; } .Mount_Icon_Sheep-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -820px -1006px; + background-position: -492px -1145px; width: 81px; height: 99px; } .Mount_Icon_Sheep-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -902px -1006px; + background-position: -574px -1145px; width: 81px; height: 99px; } .Mount_Icon_Sheep-Desert { background-image: url(spritesmith-main-10.png); - background-position: -984px -1006px; + background-position: -656px -1145px; width: 81px; height: 99px; } .Mount_Icon_Sheep-Golden { background-image: url(spritesmith-main-10.png); - background-position: -1066px -1006px; + background-position: -738px -1145px; width: 81px; height: 99px; } .Mount_Icon_Sheep-Red { background-image: url(spritesmith-main-10.png); - background-position: -1181px 0px; + background-position: -820px -1145px; width: 81px; height: 99px; } .Mount_Icon_Sheep-Shade { background-image: url(spritesmith-main-10.png); - background-position: -1181px -100px; + background-position: -902px -1145px; width: 81px; height: 99px; } .Mount_Icon_Sheep-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -1181px -200px; + background-position: -984px -1145px; width: 81px; height: 99px; } .Mount_Icon_Sheep-White { background-image: url(spritesmith-main-10.png); - background-position: -1181px -300px; + background-position: -1066px -1145px; width: 81px; height: 99px; } .Mount_Icon_Sheep-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -1181px -400px; + background-position: -1148px -1145px; width: 81px; height: 99px; } .Mount_Icon_Slime-Base { background-image: url(spritesmith-main-10.png); - background-position: -1181px -500px; + background-position: -1230px -1145px; width: 81px; height: 99px; } .Mount_Icon_Slime-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -1181px -600px; + background-position: -1326px 0px; width: 81px; height: 99px; } .Mount_Icon_Slime-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -1181px -700px; + background-position: -1326px -100px; width: 81px; height: 99px; } .Mount_Icon_Slime-Desert { background-image: url(spritesmith-main-10.png); - background-position: -1181px -800px; + background-position: -1326px -200px; width: 81px; height: 99px; } .Mount_Icon_Slime-Golden { background-image: url(spritesmith-main-10.png); - background-position: -1181px -900px; + background-position: -1326px -300px; width: 81px; height: 99px; } .Mount_Icon_Slime-Red { background-image: url(spritesmith-main-10.png); - background-position: -1181px -1000px; + background-position: -1326px -400px; width: 81px; height: 99px; } .Mount_Icon_Slime-Shade { background-image: url(spritesmith-main-10.png); - background-position: 0px -1106px; + background-position: -1326px -500px; width: 81px; height: 99px; } .Mount_Icon_Slime-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -197px 0px; + background-position: -1326px -600px; width: 81px; height: 99px; } .Mount_Icon_Slime-White { background-image: url(spritesmith-main-10.png); - background-position: -164px -1106px; + background-position: -1326px -700px; width: 81px; height: 99px; } .Mount_Icon_Slime-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -246px -1106px; + background-position: -1326px -800px; + width: 81px; + height: 99px; +} +.Mount_Icon_Snail-Base { + background-image: url(spritesmith-main-10.png); + background-position: -1326px -900px; + width: 81px; + height: 99px; +} +.Mount_Icon_Snail-CottonCandyBlue { + background-image: url(spritesmith-main-10.png); + background-position: -1326px -1000px; + width: 81px; + height: 99px; +} +.Mount_Icon_Snail-CottonCandyPink { + background-image: url(spritesmith-main-10.png); + background-position: -1326px -1100px; + width: 81px; + height: 99px; +} +.Mount_Icon_Snail-Desert { + background-image: url(spritesmith-main-10.png); + background-position: 0px -1245px; + width: 81px; + height: 99px; +} +.Mount_Icon_Snail-Golden { + background-image: url(spritesmith-main-10.png); + background-position: -82px -1245px; + width: 81px; + height: 99px; +} +.Mount_Icon_Snail-Red { + background-image: url(spritesmith-main-10.png); + background-position: -164px -1245px; + width: 81px; + height: 99px; +} +.Mount_Icon_Snail-Shade { + background-image: url(spritesmith-main-10.png); + background-position: -246px -1245px; + width: 81px; + height: 99px; +} +.Mount_Icon_Snail-Skeleton { + background-image: url(spritesmith-main-10.png); + background-position: -328px -1245px; + width: 81px; + height: 99px; +} +.Mount_Icon_Snail-White { + background-image: url(spritesmith-main-10.png); + background-position: -410px -1245px; + width: 81px; + height: 99px; +} +.Mount_Icon_Snail-Zombie { + background-image: url(spritesmith-main-10.png); + background-position: -492px -1245px; width: 81px; height: 99px; } .Mount_Icon_Snake-Base { background-image: url(spritesmith-main-10.png); - background-position: -328px -1106px; + background-position: -574px -1245px; width: 81px; height: 99px; } .Mount_Icon_Snake-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -410px -1106px; + background-position: -656px -1245px; width: 81px; height: 99px; } .Mount_Icon_Snake-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -492px -1106px; + background-position: -738px -1245px; width: 81px; height: 99px; } .Mount_Icon_Snake-Desert { background-image: url(spritesmith-main-10.png); - background-position: -574px -1106px; + background-position: -820px -1245px; width: 81px; height: 99px; } .Mount_Icon_Snake-Golden { background-image: url(spritesmith-main-10.png); - background-position: -656px -1106px; + background-position: -902px -1245px; width: 81px; height: 99px; } .Mount_Icon_Snake-Red { background-image: url(spritesmith-main-10.png); - background-position: -738px -1106px; + background-position: -984px -1245px; width: 81px; height: 99px; } .Mount_Icon_Snake-Shade { background-image: url(spritesmith-main-10.png); - background-position: -820px -1106px; + background-position: -1066px -1245px; width: 81px; height: 99px; } .Mount_Icon_Snake-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -902px -1106px; + background-position: -1148px -1245px; width: 81px; height: 99px; } .Mount_Icon_Snake-White { background-image: url(spritesmith-main-10.png); - background-position: -984px -1106px; + background-position: -1230px -1245px; width: 81px; height: 99px; } .Mount_Icon_Snake-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -1066px -1106px; + background-position: -1312px -1245px; width: 81px; height: 99px; } .Mount_Icon_Spider-Base { background-image: url(spritesmith-main-10.png); - background-position: -1148px -1106px; + background-position: -1408px 0px; width: 81px; height: 99px; } .Mount_Icon_Spider-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -1263px 0px; + background-position: -1408px -100px; width: 81px; height: 99px; } .Mount_Icon_Spider-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -1263px -100px; + background-position: -1408px -200px; width: 81px; height: 99px; } .Mount_Icon_Spider-Desert { background-image: url(spritesmith-main-10.png); - background-position: -1263px -200px; + background-position: -1408px -300px; width: 81px; height: 99px; } .Mount_Icon_Spider-Golden { background-image: url(spritesmith-main-10.png); - background-position: -1263px -300px; + background-position: -1408px -400px; width: 81px; height: 99px; } .Mount_Icon_Spider-Red { background-image: url(spritesmith-main-10.png); - background-position: -1263px -400px; + background-position: -1408px -500px; width: 81px; height: 99px; } .Mount_Icon_Spider-Shade { background-image: url(spritesmith-main-10.png); - background-position: -1263px -500px; + background-position: -1408px -600px; width: 81px; height: 99px; } .Mount_Icon_Spider-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -1263px -600px; + background-position: -1408px -700px; width: 81px; height: 99px; } .Mount_Icon_Spider-White { background-image: url(spritesmith-main-10.png); - background-position: -1263px -700px; + background-position: -1408px -800px; width: 81px; height: 99px; } .Mount_Icon_Spider-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -1263px -800px; + background-position: -1408px -900px; width: 81px; height: 99px; } .Mount_Icon_TRex-Base { background-image: url(spritesmith-main-10.png); - background-position: -738px -1206px; + background-position: -738px -1345px; width: 81px; height: 99px; } .Mount_Icon_TRex-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -820px -1206px; + background-position: -820px -1345px; width: 81px; height: 99px; } .Mount_Icon_TRex-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -902px -1206px; + background-position: -902px -1345px; width: 81px; height: 99px; } .Mount_Icon_TRex-Desert { background-image: url(spritesmith-main-10.png); - background-position: -984px -1206px; + background-position: -984px -1345px; width: 81px; height: 99px; } .Mount_Icon_TRex-Golden { background-image: url(spritesmith-main-10.png); - background-position: -1066px -1206px; + background-position: -1066px -1345px; width: 81px; height: 99px; } .Mount_Icon_TRex-Red { background-image: url(spritesmith-main-10.png); - background-position: -1148px -1206px; + background-position: -1148px -1345px; width: 81px; height: 99px; } .Mount_Icon_TRex-Shade { background-image: url(spritesmith-main-10.png); - background-position: -1230px -1206px; + background-position: -1230px -1345px; width: 81px; height: 99px; } .Mount_Icon_TRex-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -1345px 0px; + background-position: -1312px -1345px; width: 81px; height: 99px; } .Mount_Icon_TRex-White { background-image: url(spritesmith-main-10.png); - background-position: -1345px -100px; + background-position: -1394px -1345px; width: 81px; height: 99px; } .Mount_Icon_TRex-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -1345px -200px; + background-position: -1490px 0px; width: 81px; height: 99px; } .Mount_Icon_TigerCub-Base { background-image: url(spritesmith-main-10.png); - background-position: -1263px -900px; + background-position: -1408px -1000px; width: 81px; height: 99px; } .Mount_Icon_TigerCub-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -1263px -1000px; + background-position: -1408px -1100px; width: 81px; height: 99px; } .Mount_Icon_TigerCub-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -1263px -1100px; + background-position: -1408px -1200px; width: 81px; height: 99px; } .Mount_Icon_TigerCub-Desert { background-image: url(spritesmith-main-10.png); - background-position: 0px -1206px; + background-position: 0px -1345px; width: 81px; height: 99px; } .Mount_Icon_TigerCub-Golden { background-image: url(spritesmith-main-10.png); - background-position: -82px -1206px; + background-position: -82px -1345px; width: 81px; height: 99px; } .Mount_Icon_TigerCub-Peppermint { background-image: url(spritesmith-main-10.png); - background-position: -164px -1206px; + background-position: -164px -1345px; width: 81px; height: 99px; } .Mount_Icon_TigerCub-Red { background-image: url(spritesmith-main-10.png); - background-position: -246px -1206px; + background-position: -246px -1345px; width: 81px; height: 99px; } .Mount_Icon_TigerCub-Shade { background-image: url(spritesmith-main-10.png); - background-position: -328px -1206px; + background-position: -328px -1345px; width: 81px; height: 99px; } .Mount_Icon_TigerCub-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -410px -1206px; + background-position: -410px -1345px; width: 81px; height: 99px; } .Mount_Icon_TigerCub-Spooky { background-image: url(spritesmith-main-10.png); - background-position: -492px -1206px; + background-position: -492px -1345px; width: 81px; height: 99px; } .Mount_Icon_TigerCub-White { background-image: url(spritesmith-main-10.png); - background-position: -574px -1206px; + background-position: -574px -1345px; width: 81px; height: 99px; } .Mount_Icon_TigerCub-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -656px -1206px; + background-position: -656px -1345px; width: 81px; height: 99px; } .Mount_Icon_Turkey-Base { background-image: url(spritesmith-main-10.png); - background-position: -1345px -300px; + background-position: -1490px -100px; width: 81px; height: 99px; } .Mount_Icon_Unicorn-Base { background-image: url(spritesmith-main-10.png); - background-position: -1345px -400px; + background-position: -1490px -200px; width: 81px; height: 99px; } .Mount_Icon_Unicorn-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -1345px -500px; + background-position: -1490px -300px; width: 81px; height: 99px; } .Mount_Icon_Unicorn-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -1345px -600px; + background-position: -1490px -400px; width: 81px; height: 99px; } .Mount_Icon_Unicorn-Desert { background-image: url(spritesmith-main-10.png); - background-position: -1345px -700px; + background-position: -1490px -500px; width: 81px; height: 99px; } .Mount_Icon_Unicorn-Golden { background-image: url(spritesmith-main-10.png); - background-position: -1345px -800px; + background-position: -1490px -600px; width: 81px; height: 99px; } .Mount_Icon_Unicorn-Red { background-image: url(spritesmith-main-10.png); - background-position: -1345px -900px; + background-position: -1490px -700px; width: 81px; height: 99px; } .Mount_Icon_Unicorn-Shade { background-image: url(spritesmith-main-10.png); - background-position: -1345px -1000px; + background-position: -1490px -800px; width: 81px; height: 99px; } .Mount_Icon_Unicorn-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -1345px -1100px; + background-position: -1490px -900px; width: 81px; height: 99px; } .Mount_Icon_Unicorn-White { background-image: url(spritesmith-main-10.png); - background-position: -1345px -1200px; + background-position: -1490px -1000px; width: 81px; height: 99px; } .Mount_Icon_Unicorn-Zombie { background-image: url(spritesmith-main-10.png); - background-position: 0px -1306px; + background-position: -1490px -1100px; width: 81px; height: 99px; } .Mount_Icon_Whale-Base { background-image: url(spritesmith-main-10.png); - background-position: -82px -1306px; + background-position: -1490px -1200px; width: 81px; height: 99px; } .Mount_Icon_Whale-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -164px -1306px; + background-position: -1490px -1300px; width: 81px; height: 99px; } .Mount_Icon_Whale-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -246px -1306px; + background-position: 0px -1445px; width: 81px; height: 99px; } .Mount_Icon_Whale-Desert { background-image: url(spritesmith-main-10.png); - background-position: -328px -1306px; + background-position: -82px -1445px; width: 81px; height: 99px; } .Mount_Icon_Whale-Golden { background-image: url(spritesmith-main-10.png); - background-position: -410px -1306px; + background-position: -164px -1445px; width: 81px; height: 99px; } .Mount_Icon_Whale-Red { background-image: url(spritesmith-main-10.png); - background-position: -492px -1306px; + background-position: -246px -1445px; width: 81px; height: 99px; } .Mount_Icon_Whale-Shade { background-image: url(spritesmith-main-10.png); - background-position: -574px -1306px; + background-position: -328px -1445px; width: 81px; height: 99px; } .Mount_Icon_Whale-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -656px -1306px; + background-position: -410px -1445px; width: 81px; height: 99px; } .Mount_Icon_Whale-White { background-image: url(spritesmith-main-10.png); - background-position: -738px -1306px; + background-position: -492px -1445px; width: 81px; height: 99px; } .Mount_Icon_Whale-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -820px -1306px; + background-position: -574px -1445px; width: 81px; height: 99px; } .Mount_Icon_Wolf-Base { background-image: url(spritesmith-main-10.png); - background-position: -902px -1306px; + background-position: -656px -1445px; width: 81px; height: 99px; } .Mount_Icon_Wolf-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -984px -1306px; + background-position: -738px -1445px; width: 81px; height: 99px; } .Mount_Icon_Wolf-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -1066px -1306px; + background-position: -820px -1445px; width: 81px; height: 99px; } .Mount_Icon_Wolf-Desert { background-image: url(spritesmith-main-10.png); - background-position: -1148px -1306px; + background-position: -902px -1445px; width: 81px; height: 99px; } .Mount_Icon_Wolf-Golden { background-image: url(spritesmith-main-10.png); - background-position: -1230px -1306px; + background-position: -984px -1445px; width: 81px; height: 99px; } .Mount_Icon_Wolf-Peppermint { background-image: url(spritesmith-main-10.png); - background-position: -1312px -1306px; + background-position: -1066px -1445px; width: 81px; height: 99px; } .Mount_Icon_Wolf-Red { background-image: url(spritesmith-main-10.png); - background-position: -1427px 0px; + background-position: -1148px -1445px; width: 81px; height: 99px; } .Mount_Icon_Wolf-Shade { background-image: url(spritesmith-main-10.png); - background-position: -1427px -100px; + background-position: -1230px -1445px; width: 81px; height: 99px; } .Mount_Icon_Wolf-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -1427px -200px; + background-position: -1312px -1445px; width: 81px; height: 99px; } .Mount_Icon_Wolf-Spooky { background-image: url(spritesmith-main-10.png); - background-position: -1427px -300px; + background-position: -1394px -1445px; width: 81px; height: 99px; } .Mount_Icon_Wolf-White { background-image: url(spritesmith-main-10.png); - background-position: -1427px -400px; + background-position: -1476px -1445px; width: 81px; height: 99px; } .Mount_Icon_Wolf-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -1427px -500px; + background-position: -1572px 0px; width: 81px; height: 99px; } .Pet-BearCub-Base { background-image: url(spritesmith-main-10.png); - background-position: -1427px -600px; + background-position: -1572px -100px; width: 81px; height: 99px; } .Pet-BearCub-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -1427px -700px; + background-position: -1572px -200px; width: 81px; height: 99px; } .Pet-BearCub-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -1427px -800px; + background-position: -1572px -300px; width: 81px; height: 99px; } .Pet-BearCub-Desert { background-image: url(spritesmith-main-10.png); - background-position: -1427px -900px; + background-position: -1572px -400px; width: 81px; height: 99px; } .Pet-BearCub-Golden { background-image: url(spritesmith-main-10.png); - background-position: -1427px -1000px; + background-position: -1572px -500px; width: 81px; height: 99px; } .Pet-BearCub-Peppermint { background-image: url(spritesmith-main-10.png); - background-position: -1427px -1100px; + background-position: -1572px -600px; width: 81px; height: 99px; } .Pet-BearCub-Polar { background-image: url(spritesmith-main-10.png); - background-position: -1427px -1200px; + background-position: -1572px -700px; width: 81px; height: 99px; } .Pet-BearCub-Red { background-image: url(spritesmith-main-10.png); - background-position: -1427px -1300px; + background-position: -1572px -800px; width: 81px; height: 99px; } .Pet-BearCub-Shade { background-image: url(spritesmith-main-10.png); - background-position: 0px -1406px; + background-position: -1572px -900px; width: 81px; height: 99px; } .Pet-BearCub-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -82px -1406px; + background-position: -1572px -1000px; width: 81px; height: 99px; } .Pet-BearCub-Spooky { background-image: url(spritesmith-main-10.png); - background-position: -164px -1406px; + background-position: -1572px -1100px; width: 81px; height: 99px; } .Pet-BearCub-White { background-image: url(spritesmith-main-10.png); - background-position: -246px -1406px; + background-position: -1572px -1200px; width: 81px; height: 99px; } .Pet-BearCub-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -328px -1406px; + background-position: -1572px -1300px; width: 81px; height: 99px; } .Pet-Bunny-Base { background-image: url(spritesmith-main-10.png); - background-position: -410px -1406px; + background-position: -1572px -1400px; width: 81px; height: 99px; } .Pet-Bunny-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -492px -1406px; + background-position: 0px -1545px; width: 81px; height: 99px; } .Pet-Bunny-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -574px -1406px; + background-position: -82px -1545px; width: 81px; height: 99px; } .Pet-Bunny-Desert { background-image: url(spritesmith-main-10.png); - background-position: -656px -1406px; + background-position: -164px -1545px; width: 81px; height: 99px; } .Pet-Bunny-Golden { background-image: url(spritesmith-main-10.png); - background-position: -738px -1406px; + background-position: -246px -1545px; width: 81px; height: 99px; } .Pet-Bunny-Red { background-image: url(spritesmith-main-10.png); - background-position: -820px -1406px; + background-position: -328px -1545px; width: 81px; height: 99px; } .Pet-Bunny-Shade { background-image: url(spritesmith-main-10.png); - background-position: -902px -1406px; + background-position: -410px -1545px; width: 81px; height: 99px; } .Pet-Bunny-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -984px -1406px; + background-position: -492px -1545px; width: 81px; height: 99px; } .Pet-Bunny-White { background-image: url(spritesmith-main-10.png); - background-position: -1066px -1406px; + background-position: -574px -1545px; width: 81px; height: 99px; } .Pet-Bunny-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -1148px -1406px; + background-position: -656px -1545px; width: 81px; height: 99px; } .Pet-Cactus-Base { background-image: url(spritesmith-main-10.png); - background-position: -1230px -1406px; + background-position: -738px -1545px; width: 81px; height: 99px; } .Pet-Cactus-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -1312px -1406px; + background-position: -820px -1545px; width: 81px; height: 99px; } .Pet-Cactus-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -1394px -1406px; + background-position: -902px -1545px; width: 81px; height: 99px; } .Pet-Cactus-Desert { background-image: url(spritesmith-main-10.png); - background-position: -1509px 0px; + background-position: -984px -1545px; width: 81px; height: 99px; } .Pet-Cactus-Golden { background-image: url(spritesmith-main-10.png); - background-position: -1509px -100px; + background-position: -1066px -1545px; width: 81px; height: 99px; } .Pet-Cactus-Peppermint { background-image: url(spritesmith-main-10.png); - background-position: -1509px -200px; + background-position: -1148px -1545px; width: 81px; height: 99px; } .Pet-Cactus-Red { background-image: url(spritesmith-main-10.png); - background-position: -1509px -300px; + background-position: -1230px -1545px; width: 81px; height: 99px; } .Pet-Cactus-Shade { background-image: url(spritesmith-main-10.png); - background-position: -1509px -400px; + background-position: -1312px -1545px; width: 81px; height: 99px; } .Pet-Cactus-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -1509px -500px; + background-position: -1394px -1545px; width: 81px; height: 99px; } .Pet-Cactus-Spooky { background-image: url(spritesmith-main-10.png); - background-position: -1509px -600px; + background-position: -1476px -1545px; width: 81px; height: 99px; } .Pet-Cactus-White { background-image: url(spritesmith-main-10.png); - background-position: -1509px -700px; + background-position: -1558px -1545px; width: 81px; height: 99px; } .Pet-Cactus-Zombie { background-image: url(spritesmith-main-10.png); - background-position: -1509px -800px; + background-position: -1654px 0px; width: 81px; height: 99px; } .Pet-Cheetah-Base { background-image: url(spritesmith-main-10.png); - background-position: -1509px -900px; + background-position: -1654px -100px; width: 81px; height: 99px; } .Pet-Cheetah-CottonCandyBlue { background-image: url(spritesmith-main-10.png); - background-position: -1509px -1000px; + background-position: -1654px -200px; width: 81px; height: 99px; } .Pet-Cheetah-CottonCandyPink { background-image: url(spritesmith-main-10.png); - background-position: -1509px -1100px; + background-position: -1654px -300px; width: 81px; height: 99px; } .Pet-Cheetah-Desert { background-image: url(spritesmith-main-10.png); - background-position: -1509px -1200px; + background-position: -1654px -400px; width: 81px; height: 99px; } .Pet-Cheetah-Golden { background-image: url(spritesmith-main-10.png); - background-position: -1509px -1300px; + background-position: -1654px -500px; width: 81px; height: 99px; } .Pet-Cheetah-Red { background-image: url(spritesmith-main-10.png); - background-position: -1509px -1400px; + background-position: -1654px -600px; width: 81px; height: 99px; } .Pet-Cheetah-Shade { background-image: url(spritesmith-main-10.png); - background-position: -1591px 0px; + background-position: -1654px -700px; width: 81px; height: 99px; } .Pet-Cheetah-Skeleton { background-image: url(spritesmith-main-10.png); - background-position: -1591px -100px; + background-position: -1654px -800px; width: 81px; height: 99px; } .Pet-Cheetah-White { background-image: url(spritesmith-main-10.png); - background-position: -1591px -200px; - width: 81px; - height: 99px; -} -.Pet-Cheetah-Zombie { - background-image: url(spritesmith-main-10.png); - background-position: -1591px -300px; - width: 81px; - height: 99px; -} -.Pet-Cuttlefish-Base { - background-image: url(spritesmith-main-10.png); - background-position: -1591px -400px; - width: 81px; - height: 99px; -} -.Pet-Cuttlefish-CottonCandyBlue { - background-image: url(spritesmith-main-10.png); - background-position: -1591px -500px; - width: 81px; - height: 99px; -} -.Pet-Cuttlefish-CottonCandyPink { - background-image: url(spritesmith-main-10.png); - background-position: -1591px -600px; - width: 81px; - height: 99px; -} -.Pet-Cuttlefish-Desert { - background-image: url(spritesmith-main-10.png); - background-position: -1591px -700px; - width: 81px; - height: 99px; -} -.Pet-Cuttlefish-Golden { - background-image: url(spritesmith-main-10.png); - background-position: -1591px -800px; - width: 81px; - height: 99px; -} -.Pet-Cuttlefish-Red { - background-image: url(spritesmith-main-10.png); - background-position: -1591px -900px; - width: 81px; - height: 99px; -} -.Pet-Cuttlefish-Shade { - background-image: url(spritesmith-main-10.png); - background-position: -1591px -1000px; - width: 81px; - height: 99px; -} -.Pet-Cuttlefish-Skeleton { - background-image: url(spritesmith-main-10.png); - background-position: -1591px -1100px; - width: 81px; - height: 99px; -} -.Pet-Cuttlefish-White { - background-image: url(spritesmith-main-10.png); - background-position: -1591px -1200px; - width: 81px; - height: 99px; -} -.Pet-Cuttlefish-Zombie { - background-image: url(spritesmith-main-10.png); - background-position: -1591px -1300px; - width: 81px; - height: 99px; -} -.Pet-Deer-Base { - background-image: url(spritesmith-main-10.png); - background-position: -1591px -1400px; - width: 81px; - height: 99px; -} -.Pet-Deer-CottonCandyBlue { - background-image: url(spritesmith-main-10.png); - background-position: 0px -1506px; - width: 81px; - height: 99px; -} -.Pet-Deer-CottonCandyPink { - background-image: url(spritesmith-main-10.png); - background-position: -82px -1506px; - width: 81px; - height: 99px; -} -.Pet-Deer-Desert { - background-image: url(spritesmith-main-10.png); - background-position: -164px -1506px; - width: 81px; - height: 99px; -} -.Pet-Deer-Golden { - background-image: url(spritesmith-main-10.png); - background-position: -246px -1506px; - width: 81px; - height: 99px; -} -.Pet-Deer-Red { - background-image: url(spritesmith-main-10.png); - background-position: -328px -1506px; - width: 81px; - height: 99px; -} -.Pet-Deer-Shade { - background-image: url(spritesmith-main-10.png); - background-position: -410px -1506px; - width: 81px; - height: 99px; -} -.Pet-Deer-Skeleton { - background-image: url(spritesmith-main-10.png); - background-position: -492px -1506px; - width: 81px; - height: 99px; -} -.Pet-Deer-White { - background-image: url(spritesmith-main-10.png); - background-position: -574px -1506px; - width: 81px; - height: 99px; -} -.Pet-Deer-Zombie { - background-image: url(spritesmith-main-10.png); - background-position: -656px -1506px; - width: 81px; - height: 99px; -} -.Pet-Dragon-Base { - background-image: url(spritesmith-main-10.png); - background-position: -738px -1506px; - width: 81px; - height: 99px; -} -.Pet-Dragon-CottonCandyBlue { - background-image: url(spritesmith-main-10.png); - background-position: -820px -1506px; - width: 81px; - height: 99px; -} -.Pet-Dragon-CottonCandyPink { - background-image: url(spritesmith-main-10.png); - background-position: -902px -1506px; - width: 81px; - height: 99px; -} -.Pet-Dragon-Desert { - background-image: url(spritesmith-main-10.png); - background-position: -984px -1506px; - width: 81px; - height: 99px; -} -.Pet-Dragon-Golden { - background-image: url(spritesmith-main-10.png); - background-position: -1066px -1506px; - width: 81px; - height: 99px; -} -.Pet-Dragon-Hydra { - background-image: url(spritesmith-main-10.png); - background-position: -1148px -1506px; - width: 81px; - height: 99px; -} -.Pet-Dragon-Peppermint { - background-image: url(spritesmith-main-10.png); - background-position: -1230px -1506px; - width: 81px; - height: 99px; -} -.Pet-Dragon-Red { - background-image: url(spritesmith-main-10.png); - background-position: -1312px -1506px; - width: 81px; - height: 99px; -} -.Pet-Dragon-Shade { - background-image: url(spritesmith-main-10.png); - background-position: -1394px -1506px; - width: 81px; - height: 99px; -} -.Pet-Dragon-Skeleton { - background-image: url(spritesmith-main-10.png); - background-position: -1476px -1506px; - width: 81px; - height: 99px; -} -.Pet-Dragon-Spooky { - background-image: url(spritesmith-main-10.png); - background-position: -1558px -1506px; - width: 81px; - height: 99px; -} -.Pet-Dragon-White { - background-image: url(spritesmith-main-10.png); - background-position: -1673px 0px; - width: 81px; - height: 99px; -} -.Pet-Dragon-Zombie { - background-image: url(spritesmith-main-10.png); - background-position: -1673px -100px; - width: 81px; - height: 99px; -} -.Pet-Egg-Base { - background-image: url(spritesmith-main-10.png); - background-position: -1673px -200px; - width: 81px; - height: 99px; -} -.Pet-Egg-CottonCandyBlue { - background-image: url(spritesmith-main-10.png); - background-position: -1673px -300px; - width: 81px; - height: 99px; -} -.Pet-Egg-CottonCandyPink { - background-image: url(spritesmith-main-10.png); - background-position: -1673px -400px; - width: 81px; - height: 99px; -} -.Pet-Egg-Desert { - background-image: url(spritesmith-main-10.png); - background-position: -1673px -500px; - width: 81px; - height: 99px; -} -.Pet-Egg-Golden { - background-image: url(spritesmith-main-10.png); - background-position: -1673px -600px; - width: 81px; - height: 99px; -} -.Pet-Egg-Red { - background-image: url(spritesmith-main-10.png); - background-position: -1673px -700px; - width: 81px; - height: 99px; -} -.Pet-Egg-Shade { - background-image: url(spritesmith-main-10.png); - background-position: -1673px -800px; - width: 81px; - height: 99px; -} -.Pet-Egg-Skeleton { - background-image: url(spritesmith-main-10.png); - background-position: -1673px -900px; - width: 81px; - height: 99px; -} -.Pet-Egg-White { - background-image: url(spritesmith-main-10.png); - background-position: -1673px -1000px; - width: 81px; - height: 99px; -} -.Pet-Egg-Zombie { - background-image: url(spritesmith-main-10.png); - background-position: -1673px -1100px; + background-position: -1654px -900px; width: 81px; height: 99px; } diff --git a/common/dist/sprites/spritesmith-main-10.png b/common/dist/sprites/spritesmith-main-10.png index 8a780001d0..5c9846249c 100644 Binary files a/common/dist/sprites/spritesmith-main-10.png and b/common/dist/sprites/spritesmith-main-10.png differ diff --git a/common/dist/sprites/spritesmith-main-11.css b/common/dist/sprites/spritesmith-main-11.css index 9da59b421f..cdd2e59cf9 100644 --- a/common/dist/sprites/spritesmith-main-11.css +++ b/common/dist/sprites/spritesmith-main-11.css @@ -1,1812 +1,1992 @@ -.Pet-FlyingPig-Base { +.Pet-Cheetah-Zombie { background-image: url(spritesmith-main-11.png); background-position: -82px 0px; width: 81px; height: 99px; } -.Pet-FlyingPig-CottonCandyBlue { - background-image: url(spritesmith-main-11.png); - background-position: -902px -1000px; - width: 81px; - height: 99px; -} -.Pet-FlyingPig-CottonCandyPink { - background-image: url(spritesmith-main-11.png); - background-position: -164px 0px; - width: 81px; - height: 99px; -} -.Pet-FlyingPig-Desert { - background-image: url(spritesmith-main-11.png); - background-position: 0px -100px; - width: 81px; - height: 99px; -} -.Pet-FlyingPig-Golden { - background-image: url(spritesmith-main-11.png); - background-position: -82px -100px; - width: 81px; - height: 99px; -} -.Pet-FlyingPig-Peppermint { - background-image: url(spritesmith-main-11.png); - background-position: -164px -100px; - width: 81px; - height: 99px; -} -.Pet-FlyingPig-Red { - background-image: url(spritesmith-main-11.png); - background-position: -246px 0px; - width: 81px; - height: 99px; -} -.Pet-FlyingPig-Shade { - background-image: url(spritesmith-main-11.png); - background-position: -246px -100px; - width: 81px; - height: 99px; -} -.Pet-FlyingPig-Skeleton { - background-image: url(spritesmith-main-11.png); - background-position: 0px -200px; - width: 81px; - height: 99px; -} -.Pet-FlyingPig-Spooky { - background-image: url(spritesmith-main-11.png); - background-position: -82px -200px; - width: 81px; - height: 99px; -} -.Pet-FlyingPig-White { - background-image: url(spritesmith-main-11.png); - background-position: -164px -200px; - width: 81px; - height: 99px; -} -.Pet-FlyingPig-Zombie { - background-image: url(spritesmith-main-11.png); - background-position: -246px -200px; - width: 81px; - height: 99px; -} -.Pet-Fox-Base { - background-image: url(spritesmith-main-11.png); - background-position: -328px 0px; - width: 81px; - height: 99px; -} -.Pet-Fox-CottonCandyBlue { - background-image: url(spritesmith-main-11.png); - background-position: -328px -100px; - width: 81px; - height: 99px; -} -.Pet-Fox-CottonCandyPink { - background-image: url(spritesmith-main-11.png); - background-position: -328px -200px; - width: 81px; - height: 99px; -} -.Pet-Fox-Desert { - background-image: url(spritesmith-main-11.png); - background-position: 0px -300px; - width: 81px; - height: 99px; -} -.Pet-Fox-Golden { - background-image: url(spritesmith-main-11.png); - background-position: -82px -300px; - width: 81px; - height: 99px; -} -.Pet-Fox-Peppermint { - background-image: url(spritesmith-main-11.png); - background-position: -164px -300px; - width: 81px; - height: 99px; -} -.Pet-Fox-Red { - background-image: url(spritesmith-main-11.png); - background-position: -246px -300px; - width: 81px; - height: 99px; -} -.Pet-Fox-Shade { - background-image: url(spritesmith-main-11.png); - background-position: -328px -300px; - width: 81px; - height: 99px; -} -.Pet-Fox-Skeleton { - background-image: url(spritesmith-main-11.png); - background-position: -410px 0px; - width: 81px; - height: 99px; -} -.Pet-Fox-Spooky { - background-image: url(spritesmith-main-11.png); - background-position: -410px -100px; - width: 81px; - height: 99px; -} -.Pet-Fox-White { - background-image: url(spritesmith-main-11.png); - background-position: -410px -200px; - width: 81px; - height: 99px; -} -.Pet-Fox-Zombie { - background-image: url(spritesmith-main-11.png); - background-position: -410px -300px; - width: 81px; - height: 99px; -} -.Pet-Frog-Base { - background-image: url(spritesmith-main-11.png); - background-position: -492px 0px; - width: 81px; - height: 99px; -} -.Pet-Frog-CottonCandyBlue { - background-image: url(spritesmith-main-11.png); - background-position: -492px -100px; - width: 81px; - height: 99px; -} -.Pet-Frog-CottonCandyPink { - background-image: url(spritesmith-main-11.png); - background-position: -492px -200px; - width: 81px; - height: 99px; -} -.Pet-Frog-Desert { - background-image: url(spritesmith-main-11.png); - background-position: -492px -300px; - width: 81px; - height: 99px; -} -.Pet-Frog-Golden { - background-image: url(spritesmith-main-11.png); - background-position: 0px -400px; - width: 81px; - height: 99px; -} -.Pet-Frog-Red { - background-image: url(spritesmith-main-11.png); - background-position: -82px -400px; - width: 81px; - height: 99px; -} -.Pet-Frog-Shade { - background-image: url(spritesmith-main-11.png); - background-position: -164px -400px; - width: 81px; - height: 99px; -} -.Pet-Frog-Skeleton { - background-image: url(spritesmith-main-11.png); - background-position: -246px -400px; - width: 81px; - height: 99px; -} -.Pet-Frog-White { - background-image: url(spritesmith-main-11.png); - background-position: -328px -400px; - width: 81px; - height: 99px; -} -.Pet-Frog-Zombie { - background-image: url(spritesmith-main-11.png); - background-position: -410px -400px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-Base { - background-image: url(spritesmith-main-11.png); - background-position: -492px -400px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-CottonCandyBlue { - background-image: url(spritesmith-main-11.png); - background-position: -574px 0px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-CottonCandyPink { - background-image: url(spritesmith-main-11.png); - background-position: -574px -100px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-Desert { - background-image: url(spritesmith-main-11.png); - background-position: -574px -200px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-Golden { - background-image: url(spritesmith-main-11.png); - background-position: -574px -300px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-Red { - background-image: url(spritesmith-main-11.png); - background-position: -574px -400px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-Shade { - background-image: url(spritesmith-main-11.png); - background-position: 0px -500px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-Skeleton { - background-image: url(spritesmith-main-11.png); - background-position: -82px -500px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-White { - background-image: url(spritesmith-main-11.png); - background-position: -164px -500px; - width: 81px; - height: 99px; -} -.Pet-Gryphon-Zombie { - background-image: url(spritesmith-main-11.png); - background-position: -246px -500px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-Base { - background-image: url(spritesmith-main-11.png); - background-position: -328px -500px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-CottonCandyBlue { - background-image: url(spritesmith-main-11.png); - background-position: -410px -500px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-CottonCandyPink { - background-image: url(spritesmith-main-11.png); - background-position: -492px -500px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-Desert { - background-image: url(spritesmith-main-11.png); - background-position: -574px -500px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-Golden { - background-image: url(spritesmith-main-11.png); - background-position: -656px 0px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-Red { - background-image: url(spritesmith-main-11.png); - background-position: -656px -100px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-Shade { - background-image: url(spritesmith-main-11.png); - background-position: -656px -200px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-Skeleton { - background-image: url(spritesmith-main-11.png); - background-position: -656px -300px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-White { - background-image: url(spritesmith-main-11.png); - background-position: -656px -400px; - width: 81px; - height: 99px; -} -.Pet-Hedgehog-Zombie { - background-image: url(spritesmith-main-11.png); - background-position: -656px -500px; - width: 81px; - height: 99px; -} -.Pet-Horse-Base { - background-image: url(spritesmith-main-11.png); - background-position: 0px -600px; - width: 81px; - height: 99px; -} -.Pet-Horse-CottonCandyBlue { - background-image: url(spritesmith-main-11.png); - background-position: -82px -600px; - width: 81px; - height: 99px; -} -.Pet-Horse-CottonCandyPink { - background-image: url(spritesmith-main-11.png); - background-position: -164px -600px; - width: 81px; - height: 99px; -} -.Pet-Horse-Desert { - background-image: url(spritesmith-main-11.png); - background-position: -246px -600px; - width: 81px; - height: 99px; -} -.Pet-Horse-Golden { - background-image: url(spritesmith-main-11.png); - background-position: -328px -600px; - width: 81px; - height: 99px; -} -.Pet-Horse-Red { - background-image: url(spritesmith-main-11.png); - background-position: -410px -600px; - width: 81px; - height: 99px; -} -.Pet-Horse-Shade { - background-image: url(spritesmith-main-11.png); - background-position: -492px -600px; - width: 81px; - height: 99px; -} -.Pet-Horse-Skeleton { - background-image: url(spritesmith-main-11.png); - background-position: -574px -600px; - width: 81px; - height: 99px; -} -.Pet-Horse-White { - background-image: url(spritesmith-main-11.png); - background-position: -656px -600px; - width: 81px; - height: 99px; -} -.Pet-Horse-Zombie { - background-image: url(spritesmith-main-11.png); - background-position: -738px 0px; - width: 81px; - height: 99px; -} -.Pet-JackOLantern-Base { - background-image: url(spritesmith-main-11.png); - background-position: -738px -100px; - width: 81px; - height: 99px; -} -.Pet-LionCub-Base { - background-image: url(spritesmith-main-11.png); - background-position: -738px -200px; - width: 81px; - height: 99px; -} -.Pet-LionCub-CottonCandyBlue { - background-image: url(spritesmith-main-11.png); - background-position: -738px -300px; - width: 81px; - height: 99px; -} -.Pet-LionCub-CottonCandyPink { - background-image: url(spritesmith-main-11.png); - background-position: -738px -400px; - width: 81px; - height: 99px; -} -.Pet-LionCub-Desert { - background-image: url(spritesmith-main-11.png); - background-position: -738px -500px; - width: 81px; - height: 99px; -} -.Pet-LionCub-Golden { - background-image: url(spritesmith-main-11.png); - background-position: -738px -600px; - width: 81px; - height: 99px; -} -.Pet-LionCub-Peppermint { - background-image: url(spritesmith-main-11.png); - background-position: 0px -700px; - width: 81px; - height: 99px; -} -.Pet-LionCub-Red { - background-image: url(spritesmith-main-11.png); - background-position: -82px -700px; - width: 81px; - height: 99px; -} -.Pet-LionCub-Shade { - background-image: url(spritesmith-main-11.png); - background-position: -164px -700px; - width: 81px; - height: 99px; -} -.Pet-LionCub-Skeleton { - background-image: url(spritesmith-main-11.png); - background-position: -246px -700px; - width: 81px; - height: 99px; -} -.Pet-LionCub-Spooky { - background-image: url(spritesmith-main-11.png); - background-position: -328px -700px; - width: 81px; - height: 99px; -} -.Pet-LionCub-White { - background-image: url(spritesmith-main-11.png); - background-position: -410px -700px; - width: 81px; - height: 99px; -} -.Pet-LionCub-Zombie { - background-image: url(spritesmith-main-11.png); - background-position: -492px -700px; - width: 81px; - height: 99px; -} -.Pet-Mammoth-Base { - background-image: url(spritesmith-main-11.png); - background-position: -574px -700px; - width: 81px; - height: 99px; -} -.Pet-MantisShrimp-Base { - background-image: url(spritesmith-main-11.png); - background-position: -656px -700px; - width: 81px; - height: 99px; -} -.Pet-Monkey-Base { - background-image: url(spritesmith-main-11.png); - background-position: -738px -700px; - width: 81px; - height: 99px; -} -.Pet-Monkey-CottonCandyBlue { - background-image: url(spritesmith-main-11.png); - background-position: -820px 0px; - width: 81px; - height: 99px; -} -.Pet-Monkey-CottonCandyPink { - background-image: url(spritesmith-main-11.png); - background-position: -820px -100px; - width: 81px; - height: 99px; -} -.Pet-Monkey-Desert { - background-image: url(spritesmith-main-11.png); - background-position: -820px -200px; - width: 81px; - height: 99px; -} -.Pet-Monkey-Golden { - background-image: url(spritesmith-main-11.png); - background-position: -820px -300px; - width: 81px; - height: 99px; -} -.Pet-Monkey-Red { - background-image: url(spritesmith-main-11.png); - background-position: -820px -400px; - width: 81px; - height: 99px; -} -.Pet-Monkey-Shade { - background-image: url(spritesmith-main-11.png); - background-position: -820px -500px; - width: 81px; - height: 99px; -} -.Pet-Monkey-Skeleton { - background-image: url(spritesmith-main-11.png); - background-position: -820px -600px; - width: 81px; - height: 99px; -} -.Pet-Monkey-White { - background-image: url(spritesmith-main-11.png); - background-position: -820px -700px; - width: 81px; - height: 99px; -} -.Pet-Monkey-Zombie { - background-image: url(spritesmith-main-11.png); - background-position: 0px -800px; - width: 81px; - height: 99px; -} -.Pet-Octopus-Base { - background-image: url(spritesmith-main-11.png); - background-position: -82px -800px; - width: 81px; - height: 99px; -} -.Pet-Octopus-CottonCandyBlue { - background-image: url(spritesmith-main-11.png); - background-position: -164px -800px; - width: 81px; - height: 99px; -} -.Pet-Octopus-CottonCandyPink { - background-image: url(spritesmith-main-11.png); - background-position: -246px -800px; - width: 81px; - height: 99px; -} -.Pet-Octopus-Desert { - background-image: url(spritesmith-main-11.png); - background-position: -328px -800px; - width: 81px; - height: 99px; -} -.Pet-Octopus-Golden { - background-image: url(spritesmith-main-11.png); - background-position: -410px -800px; - width: 81px; - height: 99px; -} -.Pet-Octopus-Red { - background-image: url(spritesmith-main-11.png); - background-position: -492px -800px; - width: 81px; - height: 99px; -} -.Pet-Octopus-Shade { - background-image: url(spritesmith-main-11.png); - background-position: -574px -800px; - width: 81px; - height: 99px; -} -.Pet-Octopus-Skeleton { - background-image: url(spritesmith-main-11.png); - background-position: -656px -800px; - width: 81px; - height: 99px; -} -.Pet-Octopus-White { - background-image: url(spritesmith-main-11.png); - background-position: -738px -800px; - width: 81px; - height: 99px; -} -.Pet-Octopus-Zombie { - background-image: url(spritesmith-main-11.png); - background-position: -820px -800px; - width: 81px; - height: 99px; -} -.Pet-Owl-Base { - background-image: url(spritesmith-main-11.png); - background-position: -902px 0px; - width: 81px; - height: 99px; -} -.Pet-Owl-CottonCandyBlue { - background-image: url(spritesmith-main-11.png); - background-position: -902px -100px; - width: 81px; - height: 99px; -} -.Pet-Owl-CottonCandyPink { - background-image: url(spritesmith-main-11.png); - background-position: -902px -200px; - width: 81px; - height: 99px; -} -.Pet-Owl-Desert { - background-image: url(spritesmith-main-11.png); - background-position: -902px -300px; - width: 81px; - height: 99px; -} -.Pet-Owl-Golden { - background-image: url(spritesmith-main-11.png); - background-position: -902px -400px; - width: 81px; - height: 99px; -} -.Pet-Owl-Red { - background-image: url(spritesmith-main-11.png); - background-position: -902px -500px; - width: 81px; - height: 99px; -} -.Pet-Owl-Shade { - background-image: url(spritesmith-main-11.png); - background-position: -902px -600px; - width: 81px; - height: 99px; -} -.Pet-Owl-Skeleton { - background-image: url(spritesmith-main-11.png); - background-position: -902px -700px; - width: 81px; - height: 99px; -} -.Pet-Owl-White { - background-image: url(spritesmith-main-11.png); - background-position: -902px -800px; - width: 81px; - height: 99px; -} -.Pet-Owl-Zombie { - background-image: url(spritesmith-main-11.png); - background-position: -984px 0px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-Base { - background-image: url(spritesmith-main-11.png); - background-position: -984px -100px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-CottonCandyBlue { - background-image: url(spritesmith-main-11.png); - background-position: -984px -200px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-CottonCandyPink { - background-image: url(spritesmith-main-11.png); - background-position: -984px -300px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-Desert { - background-image: url(spritesmith-main-11.png); - background-position: -984px -400px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-Golden { - background-image: url(spritesmith-main-11.png); - background-position: -984px -500px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-Peppermint { - background-image: url(spritesmith-main-11.png); - background-position: -984px -600px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-Red { - background-image: url(spritesmith-main-11.png); - background-position: -984px -700px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-Shade { - background-image: url(spritesmith-main-11.png); - background-position: -984px -800px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-Skeleton { - background-image: url(spritesmith-main-11.png); - background-position: 0px -900px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-Spooky { - background-image: url(spritesmith-main-11.png); - background-position: -82px -900px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-White { - background-image: url(spritesmith-main-11.png); - background-position: -164px -900px; - width: 81px; - height: 99px; -} -.Pet-PandaCub-Zombie { - background-image: url(spritesmith-main-11.png); - background-position: -246px -900px; - width: 81px; - height: 99px; -} -.Pet-Parrot-Base { - background-image: url(spritesmith-main-11.png); - background-position: -328px -900px; - width: 81px; - height: 99px; -} -.Pet-Parrot-CottonCandyBlue { - background-image: url(spritesmith-main-11.png); - background-position: -410px -900px; - width: 81px; - height: 99px; -} -.Pet-Parrot-CottonCandyPink { - background-image: url(spritesmith-main-11.png); - background-position: -492px -900px; - width: 81px; - height: 99px; -} -.Pet-Parrot-Desert { - background-image: url(spritesmith-main-11.png); - background-position: -574px -900px; - width: 81px; - height: 99px; -} -.Pet-Parrot-Golden { - background-image: url(spritesmith-main-11.png); - background-position: -656px -900px; - width: 81px; - height: 99px; -} -.Pet-Parrot-Red { - background-image: url(spritesmith-main-11.png); - background-position: -738px -900px; - width: 81px; - height: 99px; -} -.Pet-Parrot-Shade { - background-image: url(spritesmith-main-11.png); - background-position: -820px -900px; - width: 81px; - height: 99px; -} -.Pet-Parrot-Skeleton { - background-image: url(spritesmith-main-11.png); - background-position: -902px -900px; - width: 81px; - height: 99px; -} -.Pet-Parrot-White { - background-image: url(spritesmith-main-11.png); - background-position: -984px -900px; - width: 81px; - height: 99px; -} -.Pet-Parrot-Zombie { - background-image: url(spritesmith-main-11.png); - background-position: -1066px 0px; - width: 81px; - height: 99px; -} -.Pet-Penguin-Base { - background-image: url(spritesmith-main-11.png); - background-position: -1066px -100px; - width: 81px; - height: 99px; -} -.Pet-Penguin-CottonCandyBlue { - background-image: url(spritesmith-main-11.png); - background-position: -1066px -200px; - width: 81px; - height: 99px; -} -.Pet-Penguin-CottonCandyPink { - background-image: url(spritesmith-main-11.png); - background-position: -1066px -300px; - width: 81px; - height: 99px; -} -.Pet-Penguin-Desert { - background-image: url(spritesmith-main-11.png); - background-position: -1066px -400px; - width: 81px; - height: 99px; -} -.Pet-Penguin-Golden { - background-image: url(spritesmith-main-11.png); - background-position: -1066px -500px; - width: 81px; - height: 99px; -} -.Pet-Penguin-Red { - background-image: url(spritesmith-main-11.png); - background-position: -1066px -600px; - width: 81px; - height: 99px; -} -.Pet-Penguin-Shade { - background-image: url(spritesmith-main-11.png); - background-position: -1066px -700px; - width: 81px; - height: 99px; -} -.Pet-Penguin-Skeleton { - background-image: url(spritesmith-main-11.png); - background-position: -1066px -800px; - width: 81px; - height: 99px; -} -.Pet-Penguin-White { - background-image: url(spritesmith-main-11.png); - background-position: -1066px -900px; - width: 81px; - height: 99px; -} -.Pet-Penguin-Zombie { - background-image: url(spritesmith-main-11.png); - background-position: 0px -1000px; - width: 81px; - height: 99px; -} -.Pet-Phoenix-Base { - background-image: url(spritesmith-main-11.png); - background-position: -82px -1000px; - width: 81px; - height: 99px; -} -.Pet-Rat-Base { - background-image: url(spritesmith-main-11.png); - background-position: -164px -1000px; - width: 81px; - height: 99px; -} -.Pet-Rat-CottonCandyBlue { - background-image: url(spritesmith-main-11.png); - background-position: -246px -1000px; - width: 81px; - height: 99px; -} -.Pet-Rat-CottonCandyPink { - background-image: url(spritesmith-main-11.png); - background-position: -328px -1000px; - width: 81px; - height: 99px; -} -.Pet-Rat-Desert { - background-image: url(spritesmith-main-11.png); - background-position: -410px -1000px; - width: 81px; - height: 99px; -} -.Pet-Rat-Golden { - background-image: url(spritesmith-main-11.png); - background-position: -492px -1000px; - width: 81px; - height: 99px; -} -.Pet-Rat-Red { - background-image: url(spritesmith-main-11.png); - background-position: -574px -1000px; - width: 81px; - height: 99px; -} -.Pet-Rat-Shade { - background-image: url(spritesmith-main-11.png); - background-position: -656px -1000px; - width: 81px; - height: 99px; -} -.Pet-Rat-Skeleton { - background-image: url(spritesmith-main-11.png); - background-position: -738px -1000px; - width: 81px; - height: 99px; -} -.Pet-Rat-White { - background-image: url(spritesmith-main-11.png); - background-position: -820px -1000px; - width: 81px; - height: 99px; -} -.Pet-Rat-Zombie { - background-image: url(spritesmith-main-11.png); - background-position: 0px 0px; - width: 81px; - height: 99px; -} -.Pet-Rock-Base { - background-image: url(spritesmith-main-11.png); - background-position: -984px -1000px; - width: 81px; - height: 99px; -} -.Pet-Rock-CottonCandyBlue { - background-image: url(spritesmith-main-11.png); - background-position: -1066px -1000px; - width: 81px; - height: 99px; -} -.Pet-Rock-CottonCandyPink { - background-image: url(spritesmith-main-11.png); - background-position: -1148px 0px; - width: 81px; - height: 99px; -} -.Pet-Rock-Desert { - background-image: url(spritesmith-main-11.png); - background-position: -1148px -100px; - width: 81px; - height: 99px; -} -.Pet-Rock-Golden { - background-image: url(spritesmith-main-11.png); - background-position: -1148px -200px; - width: 81px; - height: 99px; -} -.Pet-Rock-Red { - background-image: url(spritesmith-main-11.png); - background-position: -1148px -300px; - width: 81px; - height: 99px; -} -.Pet-Rock-Shade { - background-image: url(spritesmith-main-11.png); - background-position: -1148px -400px; - width: 81px; - height: 99px; -} -.Pet-Rock-Skeleton { - background-image: url(spritesmith-main-11.png); - background-position: -1148px -500px; - width: 81px; - height: 99px; -} -.Pet-Rock-White { - background-image: url(spritesmith-main-11.png); - background-position: -1148px -600px; - width: 81px; - height: 99px; -} -.Pet-Rock-Zombie { - background-image: url(spritesmith-main-11.png); - background-position: -1148px -700px; - width: 81px; - height: 99px; -} -.Pet-Rooster-Base { - background-image: url(spritesmith-main-11.png); - background-position: -1148px -800px; - width: 81px; - height: 99px; -} -.Pet-Rooster-CottonCandyBlue { - background-image: url(spritesmith-main-11.png); - background-position: -1148px -900px; - width: 81px; - height: 99px; -} -.Pet-Rooster-CottonCandyPink { - background-image: url(spritesmith-main-11.png); - background-position: -1148px -1000px; - width: 81px; - height: 99px; -} -.Pet-Rooster-Desert { - background-image: url(spritesmith-main-11.png); - background-position: 0px -1100px; - width: 81px; - height: 99px; -} -.Pet-Rooster-Golden { +.Pet-Cuttlefish-Base { background-image: url(spritesmith-main-11.png); background-position: -82px -1100px; width: 81px; height: 99px; } -.Pet-Rooster-Red { +.Pet-Cuttlefish-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: -164px 0px; + width: 81px; + height: 99px; +} +.Pet-Cuttlefish-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: 0px -100px; + width: 81px; + height: 99px; +} +.Pet-Cuttlefish-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -82px -100px; + width: 81px; + height: 99px; +} +.Pet-Cuttlefish-Golden { + background-image: url(spritesmith-main-11.png); + background-position: -164px -100px; + width: 81px; + height: 99px; +} +.Pet-Cuttlefish-Red { + background-image: url(spritesmith-main-11.png); + background-position: -246px 0px; + width: 81px; + height: 99px; +} +.Pet-Cuttlefish-Shade { + background-image: url(spritesmith-main-11.png); + background-position: -246px -100px; + width: 81px; + height: 99px; +} +.Pet-Cuttlefish-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: 0px -200px; + width: 81px; + height: 99px; +} +.Pet-Cuttlefish-White { + background-image: url(spritesmith-main-11.png); + background-position: -82px -200px; + width: 81px; + height: 99px; +} +.Pet-Cuttlefish-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -164px -200px; + width: 81px; + height: 99px; +} +.Pet-Deer-Base { + background-image: url(spritesmith-main-11.png); + background-position: -246px -200px; + width: 81px; + height: 99px; +} +.Pet-Deer-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: -328px 0px; + width: 81px; + height: 99px; +} +.Pet-Deer-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: -328px -100px; + width: 81px; + height: 99px; +} +.Pet-Deer-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -328px -200px; + width: 81px; + height: 99px; +} +.Pet-Deer-Golden { + background-image: url(spritesmith-main-11.png); + background-position: 0px -300px; + width: 81px; + height: 99px; +} +.Pet-Deer-Red { + background-image: url(spritesmith-main-11.png); + background-position: -82px -300px; + width: 81px; + height: 99px; +} +.Pet-Deer-Shade { + background-image: url(spritesmith-main-11.png); + background-position: -164px -300px; + width: 81px; + height: 99px; +} +.Pet-Deer-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: -246px -300px; + width: 81px; + height: 99px; +} +.Pet-Deer-White { + background-image: url(spritesmith-main-11.png); + background-position: -328px -300px; + width: 81px; + height: 99px; +} +.Pet-Deer-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -410px 0px; + width: 81px; + height: 99px; +} +.Pet-Dragon-Base { + background-image: url(spritesmith-main-11.png); + background-position: -410px -100px; + width: 81px; + height: 99px; +} +.Pet-Dragon-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: -410px -200px; + width: 81px; + height: 99px; +} +.Pet-Dragon-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: -410px -300px; + width: 81px; + height: 99px; +} +.Pet-Dragon-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -492px 0px; + width: 81px; + height: 99px; +} +.Pet-Dragon-Golden { + background-image: url(spritesmith-main-11.png); + background-position: -492px -100px; + width: 81px; + height: 99px; +} +.Pet-Dragon-Hydra { + background-image: url(spritesmith-main-11.png); + background-position: -492px -200px; + width: 81px; + height: 99px; +} +.Pet-Dragon-Peppermint { + background-image: url(spritesmith-main-11.png); + background-position: -492px -300px; + width: 81px; + height: 99px; +} +.Pet-Dragon-Red { + background-image: url(spritesmith-main-11.png); + background-position: 0px -400px; + width: 81px; + height: 99px; +} +.Pet-Dragon-Shade { + background-image: url(spritesmith-main-11.png); + background-position: -82px -400px; + width: 81px; + height: 99px; +} +.Pet-Dragon-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: -164px -400px; + width: 81px; + height: 99px; +} +.Pet-Dragon-Spooky { + background-image: url(spritesmith-main-11.png); + background-position: -246px -400px; + width: 81px; + height: 99px; +} +.Pet-Dragon-White { + background-image: url(spritesmith-main-11.png); + background-position: -328px -400px; + width: 81px; + height: 99px; +} +.Pet-Dragon-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -410px -400px; + width: 81px; + height: 99px; +} +.Pet-Egg-Base { + background-image: url(spritesmith-main-11.png); + background-position: -492px -400px; + width: 81px; + height: 99px; +} +.Pet-Egg-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: -574px 0px; + width: 81px; + height: 99px; +} +.Pet-Egg-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: -574px -100px; + width: 81px; + height: 99px; +} +.Pet-Egg-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -574px -200px; + width: 81px; + height: 99px; +} +.Pet-Egg-Golden { + background-image: url(spritesmith-main-11.png); + background-position: -574px -300px; + width: 81px; + height: 99px; +} +.Pet-Egg-Red { + background-image: url(spritesmith-main-11.png); + background-position: -574px -400px; + width: 81px; + height: 99px; +} +.Pet-Egg-Shade { + background-image: url(spritesmith-main-11.png); + background-position: 0px -500px; + width: 81px; + height: 99px; +} +.Pet-Egg-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: -82px -500px; + width: 81px; + height: 99px; +} +.Pet-Egg-White { + background-image: url(spritesmith-main-11.png); + background-position: -164px -500px; + width: 81px; + height: 99px; +} +.Pet-Egg-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -246px -500px; + width: 81px; + height: 99px; +} +.Pet-FlyingPig-Base { + background-image: url(spritesmith-main-11.png); + background-position: -328px -500px; + width: 81px; + height: 99px; +} +.Pet-FlyingPig-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: -410px -500px; + width: 81px; + height: 99px; +} +.Pet-FlyingPig-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: -492px -500px; + width: 81px; + height: 99px; +} +.Pet-FlyingPig-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -574px -500px; + width: 81px; + height: 99px; +} +.Pet-FlyingPig-Golden { + background-image: url(spritesmith-main-11.png); + background-position: -656px 0px; + width: 81px; + height: 99px; +} +.Pet-FlyingPig-Peppermint { + background-image: url(spritesmith-main-11.png); + background-position: -656px -100px; + width: 81px; + height: 99px; +} +.Pet-FlyingPig-Red { + background-image: url(spritesmith-main-11.png); + background-position: -656px -200px; + width: 81px; + height: 99px; +} +.Pet-FlyingPig-Shade { + background-image: url(spritesmith-main-11.png); + background-position: -656px -300px; + width: 81px; + height: 99px; +} +.Pet-FlyingPig-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: -656px -400px; + width: 81px; + height: 99px; +} +.Pet-FlyingPig-Spooky { + background-image: url(spritesmith-main-11.png); + background-position: -656px -500px; + width: 81px; + height: 99px; +} +.Pet-FlyingPig-White { + background-image: url(spritesmith-main-11.png); + background-position: 0px -600px; + width: 81px; + height: 99px; +} +.Pet-FlyingPig-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -82px -600px; + width: 81px; + height: 99px; +} +.Pet-Fox-Base { + background-image: url(spritesmith-main-11.png); + background-position: -164px -600px; + width: 81px; + height: 99px; +} +.Pet-Fox-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: -246px -600px; + width: 81px; + height: 99px; +} +.Pet-Fox-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: -328px -600px; + width: 81px; + height: 99px; +} +.Pet-Fox-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -410px -600px; + width: 81px; + height: 99px; +} +.Pet-Fox-Golden { + background-image: url(spritesmith-main-11.png); + background-position: -492px -600px; + width: 81px; + height: 99px; +} +.Pet-Fox-Peppermint { + background-image: url(spritesmith-main-11.png); + background-position: -574px -600px; + width: 81px; + height: 99px; +} +.Pet-Fox-Red { + background-image: url(spritesmith-main-11.png); + background-position: -656px -600px; + width: 81px; + height: 99px; +} +.Pet-Fox-Shade { + background-image: url(spritesmith-main-11.png); + background-position: -738px 0px; + width: 81px; + height: 99px; +} +.Pet-Fox-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: -738px -100px; + width: 81px; + height: 99px; +} +.Pet-Fox-Spooky { + background-image: url(spritesmith-main-11.png); + background-position: -738px -200px; + width: 81px; + height: 99px; +} +.Pet-Fox-White { + background-image: url(spritesmith-main-11.png); + background-position: -738px -300px; + width: 81px; + height: 99px; +} +.Pet-Fox-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -738px -400px; + width: 81px; + height: 99px; +} +.Pet-Frog-Base { + background-image: url(spritesmith-main-11.png); + background-position: -738px -500px; + width: 81px; + height: 99px; +} +.Pet-Frog-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: -738px -600px; + width: 81px; + height: 99px; +} +.Pet-Frog-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: 0px -700px; + width: 81px; + height: 99px; +} +.Pet-Frog-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -82px -700px; + width: 81px; + height: 99px; +} +.Pet-Frog-Golden { + background-image: url(spritesmith-main-11.png); + background-position: -164px -700px; + width: 81px; + height: 99px; +} +.Pet-Frog-Red { + background-image: url(spritesmith-main-11.png); + background-position: -246px -700px; + width: 81px; + height: 99px; +} +.Pet-Frog-Shade { + background-image: url(spritesmith-main-11.png); + background-position: -328px -700px; + width: 81px; + height: 99px; +} +.Pet-Frog-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: -410px -700px; + width: 81px; + height: 99px; +} +.Pet-Frog-White { + background-image: url(spritesmith-main-11.png); + background-position: -492px -700px; + width: 81px; + height: 99px; +} +.Pet-Frog-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -574px -700px; + width: 81px; + height: 99px; +} +.Pet-Gryphon-Base { + background-image: url(spritesmith-main-11.png); + background-position: -656px -700px; + width: 81px; + height: 99px; +} +.Pet-Gryphon-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: -738px -700px; + width: 81px; + height: 99px; +} +.Pet-Gryphon-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: -820px 0px; + width: 81px; + height: 99px; +} +.Pet-Gryphon-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -820px -100px; + width: 81px; + height: 99px; +} +.Pet-Gryphon-Golden { + background-image: url(spritesmith-main-11.png); + background-position: -820px -200px; + width: 81px; + height: 99px; +} +.Pet-Gryphon-Red { + background-image: url(spritesmith-main-11.png); + background-position: -820px -300px; + width: 81px; + height: 99px; +} +.Pet-Gryphon-Shade { + background-image: url(spritesmith-main-11.png); + background-position: -820px -400px; + width: 81px; + height: 99px; +} +.Pet-Gryphon-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: -820px -500px; + width: 81px; + height: 99px; +} +.Pet-Gryphon-White { + background-image: url(spritesmith-main-11.png); + background-position: -820px -600px; + width: 81px; + height: 99px; +} +.Pet-Gryphon-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -820px -700px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-Base { + background-image: url(spritesmith-main-11.png); + background-position: 0px -800px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: -82px -800px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: -164px -800px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -246px -800px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-Golden { + background-image: url(spritesmith-main-11.png); + background-position: -328px -800px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-Red { + background-image: url(spritesmith-main-11.png); + background-position: -410px -800px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-Shade { + background-image: url(spritesmith-main-11.png); + background-position: -492px -800px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: -574px -800px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-White { + background-image: url(spritesmith-main-11.png); + background-position: -656px -800px; + width: 81px; + height: 99px; +} +.Pet-Hedgehog-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -738px -800px; + width: 81px; + height: 99px; +} +.Pet-Horse-Base { + background-image: url(spritesmith-main-11.png); + background-position: -820px -800px; + width: 81px; + height: 99px; +} +.Pet-Horse-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: -902px 0px; + width: 81px; + height: 99px; +} +.Pet-Horse-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: -902px -100px; + width: 81px; + height: 99px; +} +.Pet-Horse-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -902px -200px; + width: 81px; + height: 99px; +} +.Pet-Horse-Golden { + background-image: url(spritesmith-main-11.png); + background-position: -902px -300px; + width: 81px; + height: 99px; +} +.Pet-Horse-Red { + background-image: url(spritesmith-main-11.png); + background-position: -902px -400px; + width: 81px; + height: 99px; +} +.Pet-Horse-Shade { + background-image: url(spritesmith-main-11.png); + background-position: -902px -500px; + width: 81px; + height: 99px; +} +.Pet-Horse-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: -902px -600px; + width: 81px; + height: 99px; +} +.Pet-Horse-White { + background-image: url(spritesmith-main-11.png); + background-position: -902px -700px; + width: 81px; + height: 99px; +} +.Pet-Horse-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -902px -800px; + width: 81px; + height: 99px; +} +.Pet-JackOLantern-Base { + background-image: url(spritesmith-main-11.png); + background-position: -984px 0px; + width: 81px; + height: 99px; +} +.Pet-LionCub-Base { + background-image: url(spritesmith-main-11.png); + background-position: -984px -100px; + width: 81px; + height: 99px; +} +.Pet-LionCub-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: -984px -200px; + width: 81px; + height: 99px; +} +.Pet-LionCub-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: -984px -300px; + width: 81px; + height: 99px; +} +.Pet-LionCub-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -984px -400px; + width: 81px; + height: 99px; +} +.Pet-LionCub-Golden { + background-image: url(spritesmith-main-11.png); + background-position: -984px -500px; + width: 81px; + height: 99px; +} +.Pet-LionCub-Peppermint { + background-image: url(spritesmith-main-11.png); + background-position: -984px -600px; + width: 81px; + height: 99px; +} +.Pet-LionCub-Red { + background-image: url(spritesmith-main-11.png); + background-position: -984px -700px; + width: 81px; + height: 99px; +} +.Pet-LionCub-Shade { + background-image: url(spritesmith-main-11.png); + background-position: -984px -800px; + width: 81px; + height: 99px; +} +.Pet-LionCub-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: 0px -900px; + width: 81px; + height: 99px; +} +.Pet-LionCub-Spooky { + background-image: url(spritesmith-main-11.png); + background-position: -82px -900px; + width: 81px; + height: 99px; +} +.Pet-LionCub-White { + background-image: url(spritesmith-main-11.png); + background-position: -164px -900px; + width: 81px; + height: 99px; +} +.Pet-LionCub-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -246px -900px; + width: 81px; + height: 99px; +} +.Pet-Mammoth-Base { + background-image: url(spritesmith-main-11.png); + background-position: -328px -900px; + width: 81px; + height: 99px; +} +.Pet-MantisShrimp-Base { + background-image: url(spritesmith-main-11.png); + background-position: -410px -900px; + width: 81px; + height: 99px; +} +.Pet-Monkey-Base { + background-image: url(spritesmith-main-11.png); + background-position: -492px -900px; + width: 81px; + height: 99px; +} +.Pet-Monkey-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: -574px -900px; + width: 81px; + height: 99px; +} +.Pet-Monkey-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: -656px -900px; + width: 81px; + height: 99px; +} +.Pet-Monkey-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -738px -900px; + width: 81px; + height: 99px; +} +.Pet-Monkey-Golden { + background-image: url(spritesmith-main-11.png); + background-position: -820px -900px; + width: 81px; + height: 99px; +} +.Pet-Monkey-Red { + background-image: url(spritesmith-main-11.png); + background-position: -902px -900px; + width: 81px; + height: 99px; +} +.Pet-Monkey-Shade { + background-image: url(spritesmith-main-11.png); + background-position: -984px -900px; + width: 81px; + height: 99px; +} +.Pet-Monkey-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: -1066px 0px; + width: 81px; + height: 99px; +} +.Pet-Monkey-White { + background-image: url(spritesmith-main-11.png); + background-position: -1066px -100px; + width: 81px; + height: 99px; +} +.Pet-Monkey-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -1066px -200px; + width: 81px; + height: 99px; +} +.Pet-Octopus-Base { + background-image: url(spritesmith-main-11.png); + background-position: -1066px -300px; + width: 81px; + height: 99px; +} +.Pet-Octopus-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: -1066px -400px; + width: 81px; + height: 99px; +} +.Pet-Octopus-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: -1066px -500px; + width: 81px; + height: 99px; +} +.Pet-Octopus-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -1066px -600px; + width: 81px; + height: 99px; +} +.Pet-Octopus-Golden { + background-image: url(spritesmith-main-11.png); + background-position: -1066px -700px; + width: 81px; + height: 99px; +} +.Pet-Octopus-Red { + background-image: url(spritesmith-main-11.png); + background-position: -1066px -800px; + width: 81px; + height: 99px; +} +.Pet-Octopus-Shade { + background-image: url(spritesmith-main-11.png); + background-position: -1066px -900px; + width: 81px; + height: 99px; +} +.Pet-Octopus-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: 0px -1000px; + width: 81px; + height: 99px; +} +.Pet-Octopus-White { + background-image: url(spritesmith-main-11.png); + background-position: -82px -1000px; + width: 81px; + height: 99px; +} +.Pet-Octopus-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -164px -1000px; + width: 81px; + height: 99px; +} +.Pet-Owl-Base { + background-image: url(spritesmith-main-11.png); + background-position: -246px -1000px; + width: 81px; + height: 99px; +} +.Pet-Owl-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: -328px -1000px; + width: 81px; + height: 99px; +} +.Pet-Owl-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: -410px -1000px; + width: 81px; + height: 99px; +} +.Pet-Owl-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -492px -1000px; + width: 81px; + height: 99px; +} +.Pet-Owl-Golden { + background-image: url(spritesmith-main-11.png); + background-position: -574px -1000px; + width: 81px; + height: 99px; +} +.Pet-Owl-Red { + background-image: url(spritesmith-main-11.png); + background-position: -656px -1000px; + width: 81px; + height: 99px; +} +.Pet-Owl-Shade { + background-image: url(spritesmith-main-11.png); + background-position: -738px -1000px; + width: 81px; + height: 99px; +} +.Pet-Owl-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: -820px -1000px; + width: 81px; + height: 99px; +} +.Pet-Owl-White { + background-image: url(spritesmith-main-11.png); + background-position: -902px -1000px; + width: 81px; + height: 99px; +} +.Pet-Owl-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -984px -1000px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-Base { + background-image: url(spritesmith-main-11.png); + background-position: -1066px -1000px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: -1148px 0px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: -1148px -100px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -1148px -200px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-Golden { + background-image: url(spritesmith-main-11.png); + background-position: -1148px -300px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-Peppermint { + background-image: url(spritesmith-main-11.png); + background-position: -1148px -400px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-Red { + background-image: url(spritesmith-main-11.png); + background-position: -1148px -500px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-Shade { + background-image: url(spritesmith-main-11.png); + background-position: -1148px -600px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: -1148px -700px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-Spooky { + background-image: url(spritesmith-main-11.png); + background-position: -1148px -800px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-White { + background-image: url(spritesmith-main-11.png); + background-position: -1148px -900px; + width: 81px; + height: 99px; +} +.Pet-PandaCub-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -1148px -1000px; + width: 81px; + height: 99px; +} +.Pet-Parrot-Base { + background-image: url(spritesmith-main-11.png); + background-position: 0px -1100px; + width: 81px; + height: 99px; +} +.Pet-Parrot-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: 0px 0px; + width: 81px; + height: 99px; +} +.Pet-Parrot-CottonCandyPink { background-image: url(spritesmith-main-11.png); background-position: -164px -1100px; width: 81px; height: 99px; } -.Pet-Rooster-Shade { +.Pet-Parrot-Desert { background-image: url(spritesmith-main-11.png); background-position: -246px -1100px; width: 81px; height: 99px; } -.Pet-Rooster-Skeleton { +.Pet-Parrot-Golden { background-image: url(spritesmith-main-11.png); background-position: -328px -1100px; width: 81px; height: 99px; } -.Pet-Rooster-White { +.Pet-Parrot-Red { background-image: url(spritesmith-main-11.png); background-position: -410px -1100px; width: 81px; height: 99px; } -.Pet-Rooster-Zombie { +.Pet-Parrot-Shade { background-image: url(spritesmith-main-11.png); background-position: -492px -1100px; width: 81px; height: 99px; } -.Pet-Sabretooth-Base { +.Pet-Parrot-Skeleton { background-image: url(spritesmith-main-11.png); background-position: -574px -1100px; width: 81px; height: 99px; } -.Pet-Sabretooth-CottonCandyBlue { +.Pet-Parrot-White { background-image: url(spritesmith-main-11.png); background-position: -656px -1100px; width: 81px; height: 99px; } -.Pet-Sabretooth-CottonCandyPink { +.Pet-Parrot-Zombie { background-image: url(spritesmith-main-11.png); background-position: -738px -1100px; width: 81px; height: 99px; } -.Pet-Sabretooth-Desert { +.Pet-Penguin-Base { background-image: url(spritesmith-main-11.png); background-position: -820px -1100px; width: 81px; height: 99px; } -.Pet-Sabretooth-Golden { +.Pet-Penguin-CottonCandyBlue { background-image: url(spritesmith-main-11.png); background-position: -902px -1100px; width: 81px; height: 99px; } -.Pet-Sabretooth-Red { +.Pet-Penguin-CottonCandyPink { background-image: url(spritesmith-main-11.png); background-position: -984px -1100px; width: 81px; height: 99px; } -.Pet-Sabretooth-Shade { +.Pet-Penguin-Desert { background-image: url(spritesmith-main-11.png); background-position: -1066px -1100px; width: 81px; height: 99px; } -.Pet-Sabretooth-Skeleton { +.Pet-Penguin-Golden { background-image: url(spritesmith-main-11.png); background-position: -1148px -1100px; width: 81px; height: 99px; } -.Pet-Sabretooth-White { +.Pet-Penguin-Red { background-image: url(spritesmith-main-11.png); background-position: -1230px 0px; width: 81px; height: 99px; } -.Pet-Sabretooth-Zombie { +.Pet-Penguin-Shade { background-image: url(spritesmith-main-11.png); background-position: -1230px -100px; width: 81px; height: 99px; } -.Pet-Seahorse-Base { +.Pet-Penguin-Skeleton { background-image: url(spritesmith-main-11.png); background-position: -1230px -200px; width: 81px; height: 99px; } -.Pet-Seahorse-CottonCandyBlue { +.Pet-Penguin-White { background-image: url(spritesmith-main-11.png); background-position: -1230px -300px; width: 81px; height: 99px; } -.Pet-Seahorse-CottonCandyPink { +.Pet-Penguin-Zombie { background-image: url(spritesmith-main-11.png); background-position: -1230px -400px; width: 81px; height: 99px; } -.Pet-Seahorse-Desert { +.Pet-Phoenix-Base { background-image: url(spritesmith-main-11.png); background-position: -1230px -500px; width: 81px; height: 99px; } -.Pet-Seahorse-Golden { +.Pet-Rat-Base { background-image: url(spritesmith-main-11.png); background-position: -1230px -600px; width: 81px; height: 99px; } -.Pet-Seahorse-Red { +.Pet-Rat-CottonCandyBlue { background-image: url(spritesmith-main-11.png); background-position: -1230px -700px; width: 81px; height: 99px; } -.Pet-Seahorse-Shade { +.Pet-Rat-CottonCandyPink { background-image: url(spritesmith-main-11.png); background-position: -1230px -800px; width: 81px; height: 99px; } -.Pet-Seahorse-Skeleton { +.Pet-Rat-Desert { background-image: url(spritesmith-main-11.png); background-position: -1230px -900px; width: 81px; height: 99px; } -.Pet-Seahorse-White { +.Pet-Rat-Golden { background-image: url(spritesmith-main-11.png); background-position: -1230px -1000px; width: 81px; height: 99px; } -.Pet-Seahorse-Zombie { +.Pet-Rat-Red { background-image: url(spritesmith-main-11.png); background-position: -1230px -1100px; width: 81px; height: 99px; } -.Pet-Sheep-Base { +.Pet-Rat-Shade { background-image: url(spritesmith-main-11.png); background-position: 0px -1200px; width: 81px; height: 99px; } -.Pet-Sheep-CottonCandyBlue { +.Pet-Rat-Skeleton { background-image: url(spritesmith-main-11.png); background-position: -82px -1200px; width: 81px; height: 99px; } -.Pet-Sheep-CottonCandyPink { +.Pet-Rat-White { background-image: url(spritesmith-main-11.png); background-position: -164px -1200px; width: 81px; height: 99px; } -.Pet-Sheep-Desert { +.Pet-Rat-Zombie { background-image: url(spritesmith-main-11.png); background-position: -246px -1200px; width: 81px; height: 99px; } -.Pet-Sheep-Golden { +.Pet-Rock-Base { background-image: url(spritesmith-main-11.png); background-position: -328px -1200px; width: 81px; height: 99px; } -.Pet-Sheep-Red { +.Pet-Rock-CottonCandyBlue { background-image: url(spritesmith-main-11.png); background-position: -410px -1200px; width: 81px; height: 99px; } -.Pet-Sheep-Shade { +.Pet-Rock-CottonCandyPink { background-image: url(spritesmith-main-11.png); background-position: -492px -1200px; width: 81px; height: 99px; } -.Pet-Sheep-Skeleton { +.Pet-Rock-Desert { background-image: url(spritesmith-main-11.png); background-position: -574px -1200px; width: 81px; height: 99px; } -.Pet-Sheep-White { +.Pet-Rock-Golden { background-image: url(spritesmith-main-11.png); background-position: -656px -1200px; width: 81px; height: 99px; } -.Pet-Sheep-Zombie { +.Pet-Rock-Red { background-image: url(spritesmith-main-11.png); background-position: -738px -1200px; width: 81px; height: 99px; } -.Pet-Slime-Base { +.Pet-Rock-Shade { background-image: url(spritesmith-main-11.png); background-position: -820px -1200px; width: 81px; height: 99px; } -.Pet-Slime-CottonCandyBlue { +.Pet-Rock-Skeleton { background-image: url(spritesmith-main-11.png); background-position: -902px -1200px; width: 81px; height: 99px; } -.Pet-Slime-CottonCandyPink { +.Pet-Rock-White { background-image: url(spritesmith-main-11.png); background-position: -984px -1200px; width: 81px; height: 99px; } -.Pet-Slime-Desert { +.Pet-Rock-Zombie { background-image: url(spritesmith-main-11.png); background-position: -1066px -1200px; width: 81px; height: 99px; } -.Pet-Slime-Golden { +.Pet-Rooster-Base { background-image: url(spritesmith-main-11.png); background-position: -1148px -1200px; width: 81px; height: 99px; } -.Pet-Slime-Red { +.Pet-Rooster-CottonCandyBlue { background-image: url(spritesmith-main-11.png); background-position: -1230px -1200px; width: 81px; height: 99px; } -.Pet-Slime-Shade { +.Pet-Rooster-CottonCandyPink { background-image: url(spritesmith-main-11.png); background-position: -1312px 0px; width: 81px; height: 99px; } -.Pet-Slime-Skeleton { +.Pet-Rooster-Desert { background-image: url(spritesmith-main-11.png); background-position: -1312px -100px; width: 81px; height: 99px; } -.Pet-Slime-White { +.Pet-Rooster-Golden { background-image: url(spritesmith-main-11.png); background-position: -1312px -200px; width: 81px; height: 99px; } -.Pet-Slime-Zombie { +.Pet-Rooster-Red { background-image: url(spritesmith-main-11.png); background-position: -1312px -300px; width: 81px; height: 99px; } -.Pet-Snake-Base { +.Pet-Rooster-Shade { background-image: url(spritesmith-main-11.png); background-position: -1312px -400px; width: 81px; height: 99px; } -.Pet-Snake-CottonCandyBlue { +.Pet-Rooster-Skeleton { background-image: url(spritesmith-main-11.png); background-position: -1312px -500px; width: 81px; height: 99px; } -.Pet-Snake-CottonCandyPink { +.Pet-Rooster-White { background-image: url(spritesmith-main-11.png); background-position: -1312px -600px; width: 81px; height: 99px; } -.Pet-Snake-Desert { +.Pet-Rooster-Zombie { background-image: url(spritesmith-main-11.png); background-position: -1312px -700px; width: 81px; height: 99px; } -.Pet-Snake-Golden { +.Pet-Sabretooth-Base { background-image: url(spritesmith-main-11.png); background-position: -1312px -800px; width: 81px; height: 99px; } -.Pet-Snake-Red { +.Pet-Sabretooth-CottonCandyBlue { background-image: url(spritesmith-main-11.png); background-position: -1312px -900px; width: 81px; height: 99px; } -.Pet-Snake-Shade { +.Pet-Sabretooth-CottonCandyPink { background-image: url(spritesmith-main-11.png); background-position: -1312px -1000px; width: 81px; height: 99px; } -.Pet-Snake-Skeleton { +.Pet-Sabretooth-Desert { background-image: url(spritesmith-main-11.png); background-position: -1312px -1100px; width: 81px; height: 99px; } -.Pet-Snake-White { +.Pet-Sabretooth-Golden { background-image: url(spritesmith-main-11.png); background-position: -1312px -1200px; width: 81px; height: 99px; } -.Pet-Snake-Zombie { +.Pet-Sabretooth-Red { background-image: url(spritesmith-main-11.png); background-position: -1394px 0px; width: 81px; height: 99px; } -.Pet-Spider-Base { +.Pet-Sabretooth-Shade { background-image: url(spritesmith-main-11.png); background-position: -1394px -100px; width: 81px; height: 99px; } -.Pet-Spider-CottonCandyBlue { +.Pet-Sabretooth-Skeleton { background-image: url(spritesmith-main-11.png); background-position: -1394px -200px; width: 81px; height: 99px; } -.Pet-Spider-CottonCandyPink { +.Pet-Sabretooth-White { background-image: url(spritesmith-main-11.png); background-position: -1394px -300px; width: 81px; height: 99px; } -.Pet-Spider-Desert { +.Pet-Sabretooth-Zombie { background-image: url(spritesmith-main-11.png); background-position: -1394px -400px; width: 81px; height: 99px; } -.Pet-Spider-Golden { +.Pet-Seahorse-Base { background-image: url(spritesmith-main-11.png); background-position: -1394px -500px; width: 81px; height: 99px; } -.Pet-Spider-Red { +.Pet-Seahorse-CottonCandyBlue { background-image: url(spritesmith-main-11.png); background-position: -1394px -600px; width: 81px; height: 99px; } -.Pet-Spider-Shade { +.Pet-Seahorse-CottonCandyPink { background-image: url(spritesmith-main-11.png); background-position: -1394px -700px; width: 81px; height: 99px; } -.Pet-Spider-Skeleton { +.Pet-Seahorse-Desert { background-image: url(spritesmith-main-11.png); background-position: -1394px -800px; width: 81px; height: 99px; } -.Pet-Spider-White { +.Pet-Seahorse-Golden { background-image: url(spritesmith-main-11.png); background-position: -1394px -900px; width: 81px; height: 99px; } -.Pet-Spider-Zombie { +.Pet-Seahorse-Red { background-image: url(spritesmith-main-11.png); background-position: -1394px -1000px; width: 81px; height: 99px; } -.Pet-TRex-Base { - background-image: url(spritesmith-main-11.png); - background-position: -902px -1300px; - width: 81px; - height: 99px; -} -.Pet-TRex-CottonCandyBlue { - background-image: url(spritesmith-main-11.png); - background-position: -984px -1300px; - width: 81px; - height: 99px; -} -.Pet-TRex-CottonCandyPink { - background-image: url(spritesmith-main-11.png); - background-position: -1066px -1300px; - width: 81px; - height: 99px; -} -.Pet-TRex-Desert { - background-image: url(spritesmith-main-11.png); - background-position: -1148px -1300px; - width: 81px; - height: 99px; -} -.Pet-TRex-Golden { - background-image: url(spritesmith-main-11.png); - background-position: -1230px -1300px; - width: 81px; - height: 99px; -} -.Pet-TRex-Red { - background-image: url(spritesmith-main-11.png); - background-position: -1312px -1300px; - width: 81px; - height: 99px; -} -.Pet-TRex-Shade { - background-image: url(spritesmith-main-11.png); - background-position: -1394px -1300px; - width: 81px; - height: 99px; -} -.Pet-TRex-Skeleton { - background-image: url(spritesmith-main-11.png); - background-position: -1476px 0px; - width: 81px; - height: 99px; -} -.Pet-TRex-White { - background-image: url(spritesmith-main-11.png); - background-position: -1476px -100px; - width: 81px; - height: 99px; -} -.Pet-TRex-Zombie { - background-image: url(spritesmith-main-11.png); - background-position: -1476px -200px; - width: 81px; - height: 99px; -} -.Pet-Tiger-Veteran { +.Pet-Seahorse-Shade { background-image: url(spritesmith-main-11.png); background-position: -1394px -1100px; width: 81px; height: 99px; } -.Pet-TigerCub-Base { +.Pet-Seahorse-Skeleton { background-image: url(spritesmith-main-11.png); background-position: -1394px -1200px; width: 81px; height: 99px; } -.Pet-TigerCub-CottonCandyBlue { +.Pet-Seahorse-White { background-image: url(spritesmith-main-11.png); background-position: 0px -1300px; width: 81px; height: 99px; } -.Pet-TigerCub-CottonCandyPink { +.Pet-Seahorse-Zombie { background-image: url(spritesmith-main-11.png); background-position: -82px -1300px; width: 81px; height: 99px; } -.Pet-TigerCub-Desert { +.Pet-Sheep-Base { background-image: url(spritesmith-main-11.png); background-position: -164px -1300px; width: 81px; height: 99px; } -.Pet-TigerCub-Golden { +.Pet-Sheep-CottonCandyBlue { background-image: url(spritesmith-main-11.png); background-position: -246px -1300px; width: 81px; height: 99px; } -.Pet-TigerCub-Peppermint { +.Pet-Sheep-CottonCandyPink { background-image: url(spritesmith-main-11.png); background-position: -328px -1300px; width: 81px; height: 99px; } -.Pet-TigerCub-Red { +.Pet-Sheep-Desert { background-image: url(spritesmith-main-11.png); background-position: -410px -1300px; width: 81px; height: 99px; } -.Pet-TigerCub-Shade { +.Pet-Sheep-Golden { background-image: url(spritesmith-main-11.png); background-position: -492px -1300px; width: 81px; height: 99px; } -.Pet-TigerCub-Skeleton { +.Pet-Sheep-Red { background-image: url(spritesmith-main-11.png); background-position: -574px -1300px; width: 81px; height: 99px; } -.Pet-TigerCub-Spooky { +.Pet-Sheep-Shade { background-image: url(spritesmith-main-11.png); background-position: -656px -1300px; width: 81px; height: 99px; } -.Pet-TigerCub-White { +.Pet-Sheep-Skeleton { background-image: url(spritesmith-main-11.png); background-position: -738px -1300px; width: 81px; height: 99px; } -.Pet-TigerCub-Zombie { +.Pet-Sheep-White { background-image: url(spritesmith-main-11.png); background-position: -820px -1300px; width: 81px; height: 99px; } -.Pet-Turkey-Base { +.Pet-Sheep-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -902px -1300px; + width: 81px; + height: 99px; +} +.Pet-Slime-Base { + background-image: url(spritesmith-main-11.png); + background-position: -984px -1300px; + width: 81px; + height: 99px; +} +.Pet-Slime-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: -1066px -1300px; + width: 81px; + height: 99px; +} +.Pet-Slime-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: -1148px -1300px; + width: 81px; + height: 99px; +} +.Pet-Slime-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -1230px -1300px; + width: 81px; + height: 99px; +} +.Pet-Slime-Golden { + background-image: url(spritesmith-main-11.png); + background-position: -1312px -1300px; + width: 81px; + height: 99px; +} +.Pet-Slime-Red { + background-image: url(spritesmith-main-11.png); + background-position: -1394px -1300px; + width: 81px; + height: 99px; +} +.Pet-Slime-Shade { + background-image: url(spritesmith-main-11.png); + background-position: -1476px 0px; + width: 81px; + height: 99px; +} +.Pet-Slime-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: -1476px -100px; + width: 81px; + height: 99px; +} +.Pet-Slime-White { + background-image: url(spritesmith-main-11.png); + background-position: -1476px -200px; + width: 81px; + height: 99px; +} +.Pet-Slime-Zombie { background-image: url(spritesmith-main-11.png); background-position: -1476px -300px; width: 81px; height: 99px; } -.Pet-Turkey-Gilded { +.Pet-Snail-Base { background-image: url(spritesmith-main-11.png); background-position: -1476px -400px; width: 81px; height: 99px; } -.Pet-Unicorn-Base { +.Pet-Snail-CottonCandyBlue { background-image: url(spritesmith-main-11.png); background-position: -1476px -500px; width: 81px; height: 99px; } -.Pet-Unicorn-CottonCandyBlue { +.Pet-Snail-CottonCandyPink { background-image: url(spritesmith-main-11.png); background-position: -1476px -600px; width: 81px; height: 99px; } -.Pet-Unicorn-CottonCandyPink { +.Pet-Snail-Desert { background-image: url(spritesmith-main-11.png); background-position: -1476px -700px; width: 81px; height: 99px; } -.Pet-Unicorn-Desert { +.Pet-Snail-Golden { background-image: url(spritesmith-main-11.png); background-position: -1476px -800px; width: 81px; height: 99px; } -.Pet-Unicorn-Golden { +.Pet-Snail-Red { background-image: url(spritesmith-main-11.png); background-position: -1476px -900px; width: 81px; height: 99px; } -.Pet-Unicorn-Red { +.Pet-Snail-Shade { background-image: url(spritesmith-main-11.png); background-position: -1476px -1000px; width: 81px; height: 99px; } -.Pet-Unicorn-Shade { +.Pet-Snail-Skeleton { background-image: url(spritesmith-main-11.png); background-position: -1476px -1100px; width: 81px; height: 99px; } -.Pet-Unicorn-Skeleton { +.Pet-Snail-White { background-image: url(spritesmith-main-11.png); background-position: -1476px -1200px; width: 81px; height: 99px; } -.Pet-Unicorn-White { +.Pet-Snail-Zombie { background-image: url(spritesmith-main-11.png); background-position: -1476px -1300px; width: 81px; height: 99px; } -.Pet-Unicorn-Zombie { +.Pet-Snake-Base { background-image: url(spritesmith-main-11.png); background-position: 0px -1400px; width: 81px; height: 99px; } -.Pet-Whale-Base { +.Pet-Snake-CottonCandyBlue { background-image: url(spritesmith-main-11.png); background-position: -82px -1400px; width: 81px; height: 99px; } -.Pet-Whale-CottonCandyBlue { +.Pet-Snake-CottonCandyPink { background-image: url(spritesmith-main-11.png); background-position: -164px -1400px; width: 81px; height: 99px; } -.Pet-Whale-CottonCandyPink { +.Pet-Snake-Desert { background-image: url(spritesmith-main-11.png); background-position: -246px -1400px; width: 81px; height: 99px; } -.Pet-Whale-Desert { +.Pet-Snake-Golden { background-image: url(spritesmith-main-11.png); background-position: -328px -1400px; width: 81px; height: 99px; } -.Pet-Whale-Golden { +.Pet-Snake-Red { background-image: url(spritesmith-main-11.png); background-position: -410px -1400px; width: 81px; height: 99px; } -.Pet-Whale-Red { +.Pet-Snake-Shade { background-image: url(spritesmith-main-11.png); background-position: -492px -1400px; width: 81px; height: 99px; } -.Pet-Whale-Shade { +.Pet-Snake-Skeleton { background-image: url(spritesmith-main-11.png); background-position: -574px -1400px; width: 81px; height: 99px; } -.Pet-Whale-Skeleton { +.Pet-Snake-White { background-image: url(spritesmith-main-11.png); background-position: -656px -1400px; width: 81px; height: 99px; } -.Pet-Whale-White { +.Pet-Snake-Zombie { background-image: url(spritesmith-main-11.png); background-position: -738px -1400px; width: 81px; height: 99px; } -.Pet-Whale-Zombie { +.Pet-Spider-Base { background-image: url(spritesmith-main-11.png); background-position: -820px -1400px; width: 81px; height: 99px; } -.Pet-Wolf-Base { +.Pet-Spider-CottonCandyBlue { background-image: url(spritesmith-main-11.png); background-position: -902px -1400px; width: 81px; height: 99px; } -.Pet-Wolf-CottonCandyBlue { +.Pet-Spider-CottonCandyPink { background-image: url(spritesmith-main-11.png); background-position: -984px -1400px; width: 81px; height: 99px; } -.Pet-Wolf-CottonCandyPink { +.Pet-Spider-Desert { background-image: url(spritesmith-main-11.png); background-position: -1066px -1400px; width: 81px; height: 99px; } -.Pet-Wolf-Desert { +.Pet-Spider-Golden { background-image: url(spritesmith-main-11.png); background-position: -1148px -1400px; width: 81px; height: 99px; } -.Pet-Wolf-Golden { +.Pet-Spider-Red { background-image: url(spritesmith-main-11.png); background-position: -1230px -1400px; width: 81px; height: 99px; } -.Pet-Wolf-Peppermint { +.Pet-Spider-Shade { background-image: url(spritesmith-main-11.png); background-position: -1312px -1400px; width: 81px; height: 99px; } -.Pet-Wolf-Red { +.Pet-Spider-Skeleton { background-image: url(spritesmith-main-11.png); background-position: -1394px -1400px; width: 81px; height: 99px; } -.Pet-Wolf-Shade { +.Pet-Spider-White { background-image: url(spritesmith-main-11.png); background-position: -1476px -1400px; width: 81px; height: 99px; } -.Pet-Wolf-Skeleton { +.Pet-Spider-Zombie { background-image: url(spritesmith-main-11.png); background-position: -1558px 0px; width: 81px; height: 99px; } -.Pet-Wolf-Spooky { +.Pet-TRex-Base { + background-image: url(spritesmith-main-11.png); + background-position: -1558px -1400px; + width: 81px; + height: 99px; +} +.Pet-TRex-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: 0px -1500px; + width: 81px; + height: 99px; +} +.Pet-TRex-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: -82px -1500px; + width: 81px; + height: 99px; +} +.Pet-TRex-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -164px -1500px; + width: 81px; + height: 99px; +} +.Pet-TRex-Golden { + background-image: url(spritesmith-main-11.png); + background-position: -246px -1500px; + width: 81px; + height: 99px; +} +.Pet-TRex-Red { + background-image: url(spritesmith-main-11.png); + background-position: -328px -1500px; + width: 81px; + height: 99px; +} +.Pet-TRex-Shade { + background-image: url(spritesmith-main-11.png); + background-position: -410px -1500px; + width: 81px; + height: 99px; +} +.Pet-TRex-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: -492px -1500px; + width: 81px; + height: 99px; +} +.Pet-TRex-White { + background-image: url(spritesmith-main-11.png); + background-position: -574px -1500px; + width: 81px; + height: 99px; +} +.Pet-TRex-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -656px -1500px; + width: 81px; + height: 99px; +} +.Pet-Tiger-Veteran { background-image: url(spritesmith-main-11.png); background-position: -1558px -100px; width: 81px; height: 99px; } -.Pet-Wolf-Veteran { +.Pet-TigerCub-Base { background-image: url(spritesmith-main-11.png); background-position: -1558px -200px; width: 81px; height: 99px; } -.Pet-Wolf-White { +.Pet-TigerCub-CottonCandyBlue { background-image: url(spritesmith-main-11.png); background-position: -1558px -300px; width: 81px; height: 99px; } -.Pet-Wolf-Zombie { +.Pet-TigerCub-CottonCandyPink { background-image: url(spritesmith-main-11.png); background-position: -1558px -400px; width: 81px; height: 99px; } -.Pet_HatchingPotion_Base { - background-image: url(spritesmith-main-11.png); - background-position: -1558px -552px; - width: 48px; - height: 51px; -} -.Pet_HatchingPotion_CottonCandyBlue { - background-image: url(spritesmith-main-11.png); - background-position: -1558px -812px; - width: 48px; - height: 51px; -} -.Pet_HatchingPotion_CottonCandyPink { - background-image: url(spritesmith-main-11.png); - background-position: -1558px -604px; - width: 48px; - height: 51px; -} -.Pet_HatchingPotion_Desert { - background-image: url(spritesmith-main-11.png); - background-position: -1558px -656px; - width: 48px; - height: 51px; -} -.Pet_HatchingPotion_Golden { - background-image: url(spritesmith-main-11.png); - background-position: -1558px -708px; - width: 48px; - height: 51px; -} -.Pet_HatchingPotion_Peppermint { - background-image: url(spritesmith-main-11.png); - background-position: -1558px -760px; - width: 48px; - height: 51px; -} -.Pet_HatchingPotion_Red { +.Pet-TigerCub-Desert { background-image: url(spritesmith-main-11.png); background-position: -1558px -500px; - width: 48px; - height: 51px; + width: 81px; + height: 99px; } -.Pet_HatchingPotion_Shade { +.Pet-TigerCub-Golden { background-image: url(spritesmith-main-11.png); - background-position: -1558px -864px; - width: 48px; - height: 51px; + background-position: -1558px -600px; + width: 81px; + height: 99px; } -.Pet_HatchingPotion_Skeleton { +.Pet-TigerCub-Peppermint { background-image: url(spritesmith-main-11.png); - background-position: -1558px -916px; - width: 48px; - height: 51px; + background-position: -1558px -700px; + width: 81px; + height: 99px; } -.Pet_HatchingPotion_Spooky { +.Pet-TigerCub-Red { background-image: url(spritesmith-main-11.png); - background-position: -1558px -968px; - width: 48px; - height: 51px; + background-position: -1558px -800px; + width: 81px; + height: 99px; } -.Pet_HatchingPotion_White { +.Pet-TigerCub-Shade { background-image: url(spritesmith-main-11.png); - background-position: -1558px -1020px; - width: 48px; - height: 51px; + background-position: -1558px -900px; + width: 81px; + height: 99px; } -.Pet_HatchingPotion_Zombie { +.Pet-TigerCub-Skeleton { background-image: url(spritesmith-main-11.png); - background-position: -1558px -1072px; - width: 48px; - height: 51px; + background-position: -1558px -1000px; + width: 81px; + height: 99px; +} +.Pet-TigerCub-Spooky { + background-image: url(spritesmith-main-11.png); + background-position: -1558px -1100px; + width: 81px; + height: 99px; +} +.Pet-TigerCub-White { + background-image: url(spritesmith-main-11.png); + background-position: -1558px -1200px; + width: 81px; + height: 99px; +} +.Pet-TigerCub-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -1558px -1300px; + width: 81px; + height: 99px; +} +.Pet-Turkey-Base { + background-image: url(spritesmith-main-11.png); + background-position: -738px -1500px; + width: 81px; + height: 99px; +} +.Pet-Turkey-Gilded { + background-image: url(spritesmith-main-11.png); + background-position: -820px -1500px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-Base { + background-image: url(spritesmith-main-11.png); + background-position: -902px -1500px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: -984px -1500px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: -1066px -1500px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -1148px -1500px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-Golden { + background-image: url(spritesmith-main-11.png); + background-position: -1230px -1500px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-Red { + background-image: url(spritesmith-main-11.png); + background-position: -1312px -1500px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-Shade { + background-image: url(spritesmith-main-11.png); + background-position: -1394px -1500px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: -1476px -1500px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-White { + background-image: url(spritesmith-main-11.png); + background-position: -1558px -1500px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -1640px 0px; + width: 81px; + height: 99px; +} +.Pet-Whale-Base { + background-image: url(spritesmith-main-11.png); + background-position: -1640px -100px; + width: 81px; + height: 99px; +} +.Pet-Whale-CottonCandyBlue { + background-image: url(spritesmith-main-11.png); + background-position: -1640px -200px; + width: 81px; + height: 99px; +} +.Pet-Whale-CottonCandyPink { + background-image: url(spritesmith-main-11.png); + background-position: -1640px -300px; + width: 81px; + height: 99px; +} +.Pet-Whale-Desert { + background-image: url(spritesmith-main-11.png); + background-position: -1640px -400px; + width: 81px; + height: 99px; +} +.Pet-Whale-Golden { + background-image: url(spritesmith-main-11.png); + background-position: -1640px -500px; + width: 81px; + height: 99px; +} +.Pet-Whale-Red { + background-image: url(spritesmith-main-11.png); + background-position: -1640px -600px; + width: 81px; + height: 99px; +} +.Pet-Whale-Shade { + background-image: url(spritesmith-main-11.png); + background-position: -1640px -700px; + width: 81px; + height: 99px; +} +.Pet-Whale-Skeleton { + background-image: url(spritesmith-main-11.png); + background-position: -1640px -800px; + width: 81px; + height: 99px; +} +.Pet-Whale-White { + background-image: url(spritesmith-main-11.png); + background-position: -1640px -900px; + width: 81px; + height: 99px; +} +.Pet-Whale-Zombie { + background-image: url(spritesmith-main-11.png); + background-position: -1640px -1000px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Base { + background-image: url(spritesmith-main-11.png); + background-position: -1640px -1100px; + width: 81px; + height: 99px; } diff --git a/common/dist/sprites/spritesmith-main-11.png b/common/dist/sprites/spritesmith-main-11.png index 98aa52ebd0..b7b875c13e 100644 Binary files a/common/dist/sprites/spritesmith-main-11.png and b/common/dist/sprites/spritesmith-main-11.png differ diff --git a/common/dist/sprites/spritesmith-main-12.css b/common/dist/sprites/spritesmith-main-12.css new file mode 100644 index 0000000000..348d26879c --- /dev/null +++ b/common/dist/sprites/spritesmith-main-12.css @@ -0,0 +1,144 @@ +.Pet-Wolf-CottonCandyBlue { + background-image: url(spritesmith-main-12.png); + background-position: -82px 0px; + width: 81px; + height: 99px; +} +.Pet-Wolf-CottonCandyPink { + background-image: url(spritesmith-main-12.png); + background-position: -246px -200px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Desert { + background-image: url(spritesmith-main-12.png); + background-position: -246px 0px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Golden { + background-image: url(spritesmith-main-12.png); + background-position: -164px 0px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Peppermint { + background-image: url(spritesmith-main-12.png); + background-position: 0px -100px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Red { + background-image: url(spritesmith-main-12.png); + background-position: -82px -100px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Shade { + background-image: url(spritesmith-main-12.png); + background-position: -164px -100px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Skeleton { + background-image: url(spritesmith-main-12.png); + background-position: 0px 0px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Spooky { + background-image: url(spritesmith-main-12.png); + background-position: -246px -100px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Veteran { + background-image: url(spritesmith-main-12.png); + background-position: 0px -200px; + width: 81px; + height: 99px; +} +.Pet-Wolf-White { + background-image: url(spritesmith-main-12.png); + background-position: -82px -200px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Zombie { + background-image: url(spritesmith-main-12.png); + background-position: -164px -200px; + width: 81px; + height: 99px; +} +.Pet_HatchingPotion_Base { + background-image: url(spritesmith-main-12.png); + background-position: -294px -300px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_CottonCandyBlue { + background-image: url(spritesmith-main-12.png); + background-position: -328px -52px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_CottonCandyPink { + background-image: url(spritesmith-main-12.png); + background-position: -328px -104px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Desert { + background-image: url(spritesmith-main-12.png); + background-position: -328px -156px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Golden { + background-image: url(spritesmith-main-12.png); + background-position: -328px -208px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Peppermint { + background-image: url(spritesmith-main-12.png); + background-position: 0px -300px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Red { + background-image: url(spritesmith-main-12.png); + background-position: -49px -300px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Shade { + background-image: url(spritesmith-main-12.png); + background-position: -98px -300px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Skeleton { + background-image: url(spritesmith-main-12.png); + background-position: -147px -300px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Spooky { + background-image: url(spritesmith-main-12.png); + background-position: -196px -300px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_White { + background-image: url(spritesmith-main-12.png); + background-position: -245px -300px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Zombie { + background-image: url(spritesmith-main-12.png); + background-position: -328px 0px; + width: 48px; + height: 51px; +} diff --git a/common/dist/sprites/spritesmith-main-12.png b/common/dist/sprites/spritesmith-main-12.png new file mode 100644 index 0000000000..9e87c01766 Binary files /dev/null and b/common/dist/sprites/spritesmith-main-12.png differ diff --git a/common/dist/sprites/spritesmith-main-3.png b/common/dist/sprites/spritesmith-main-3.png index 89f74d94c8..872da3b988 100644 Binary files a/common/dist/sprites/spritesmith-main-3.png and b/common/dist/sprites/spritesmith-main-3.png differ diff --git a/common/dist/sprites/spritesmith-main-4.png b/common/dist/sprites/spritesmith-main-4.png index d57928abbf..8fc203cd4a 100644 Binary files a/common/dist/sprites/spritesmith-main-4.png and b/common/dist/sprites/spritesmith-main-4.png differ diff --git a/common/dist/sprites/spritesmith-main-5.css b/common/dist/sprites/spritesmith-main-5.css index dc55df9be1..024cc840da 100644 --- a/common/dist/sprites/spritesmith-main-5.css +++ b/common/dist/sprites/spritesmith-main-5.css @@ -120,175 +120,31 @@ } .shop_body_special_wondercon_black { background-image: url(spritesmith-main-5.png); - background-position: -1700px -144px; + background-position: -697px -1680px; width: 40px; height: 40px; } .shop_body_special_wondercon_gold { background-image: url(spritesmith-main-5.png); - background-position: -1066px -1680px; + background-position: -1107px -1680px; width: 40px; height: 40px; } .shop_body_special_wondercon_red { background-image: url(spritesmith-main-5.png); - background-position: -1025px -1680px; + background-position: -1066px -1680px; width: 40px; height: 40px; } .shop_eyewear_special_wondercon_black { background-image: url(spritesmith-main-5.png); - background-position: -984px -1680px; + background-position: -1025px -1680px; width: 40px; height: 40px; } .shop_eyewear_special_wondercon_red { background-image: url(spritesmith-main-5.png); - background-position: -943px -1680px; - width: 40px; - height: 40px; -} -.headAccessory_special_bearEars { - background-image: url(spritesmith-main-5.png); - background-position: -728px -1303px; - width: 90px; - height: 90px; -} -.customize-option.headAccessory_special_bearEars { - background-image: url(spritesmith-main-5.png); - background-position: -753px -1318px; - width: 60px; - height: 60px; -} -.headAccessory_special_cactusEars { - background-image: url(spritesmith-main-5.png); - background-position: -819px -1303px; - width: 90px; - height: 90px; -} -.customize-option.headAccessory_special_cactusEars { - background-image: url(spritesmith-main-5.png); - background-position: -844px -1318px; - width: 60px; - height: 60px; -} -.headAccessory_special_foxEars { - background-image: url(spritesmith-main-5.png); - background-position: -910px -1303px; - width: 90px; - height: 90px; -} -.customize-option.headAccessory_special_foxEars { - background-image: url(spritesmith-main-5.png); - background-position: -935px -1318px; - width: 60px; - height: 60px; -} -.headAccessory_special_lionEars { - background-image: url(spritesmith-main-5.png); - background-position: -1001px -1303px; - width: 90px; - height: 90px; -} -.customize-option.headAccessory_special_lionEars { - background-image: url(spritesmith-main-5.png); - background-position: -1026px -1318px; - width: 60px; - height: 60px; -} -.headAccessory_special_pandaEars { - background-image: url(spritesmith-main-5.png); - background-position: -1092px -1303px; - width: 90px; - height: 90px; -} -.customize-option.headAccessory_special_pandaEars { - background-image: url(spritesmith-main-5.png); - background-position: -1117px -1318px; - width: 60px; - height: 60px; -} -.headAccessory_special_pigEars { - background-image: url(spritesmith-main-5.png); - background-position: -1183px -1303px; - width: 90px; - height: 90px; -} -.customize-option.headAccessory_special_pigEars { - background-image: url(spritesmith-main-5.png); - background-position: -1208px -1318px; - width: 60px; - height: 60px; -} -.headAccessory_special_tigerEars { - background-image: url(spritesmith-main-5.png); - background-position: -1274px -1303px; - width: 90px; - height: 90px; -} -.customize-option.headAccessory_special_tigerEars { - background-image: url(spritesmith-main-5.png); - background-position: -1299px -1318px; - width: 60px; - height: 60px; -} -.headAccessory_special_wolfEars { - background-image: url(spritesmith-main-5.png); - background-position: -1427px 0px; - width: 90px; - height: 90px; -} -.customize-option.headAccessory_special_wolfEars { - background-image: url(spritesmith-main-5.png); - background-position: -1452px -15px; - width: 60px; - height: 60px; -} -.shop_headAccessory_special_bearEars { - background-image: url(spritesmith-main-5.png); - background-position: -1700px -349px; - width: 40px; - height: 40px; -} -.shop_headAccessory_special_cactusEars { - background-image: url(spritesmith-main-5.png); - background-position: -1700px -308px; - width: 40px; - height: 40px; -} -.shop_headAccessory_special_foxEars { - background-image: url(spritesmith-main-5.png); - background-position: -1700px -267px; - width: 40px; - height: 40px; -} -.shop_headAccessory_special_lionEars { - background-image: url(spritesmith-main-5.png); - background-position: -1700px -226px; - width: 40px; - height: 40px; -} -.shop_headAccessory_special_pandaEars { - background-image: url(spritesmith-main-5.png); - background-position: -1107px -1680px; - width: 40px; - height: 40px; -} -.shop_headAccessory_special_pigEars { - background-image: url(spritesmith-main-5.png); - background-position: -656px -1680px; - width: 40px; - height: 40px; -} -.shop_headAccessory_special_tigerEars { - background-image: url(spritesmith-main-5.png); - background-position: -246px -1680px; - width: 40px; - height: 40px; -} -.shop_headAccessory_special_wolfEars { - background-image: url(spritesmith-main-5.png); - background-position: -1151px -1113px; + background-position: -984px -1680px; width: 40px; height: 40px; } @@ -438,145 +294,289 @@ } .shop_head_healer_1 { background-image: url(spritesmith-main-5.png); - background-position: -902px -1680px; + background-position: -943px -1680px; width: 40px; height: 40px; } .shop_head_healer_2 { background-image: url(spritesmith-main-5.png); - background-position: -861px -1680px; + background-position: -902px -1680px; width: 40px; height: 40px; } .shop_head_healer_3 { background-image: url(spritesmith-main-5.png); - background-position: -820px -1680px; + background-position: -861px -1680px; width: 40px; height: 40px; } .shop_head_healer_4 { background-image: url(spritesmith-main-5.png); - background-position: -779px -1680px; + background-position: -820px -1680px; width: 40px; height: 40px; } .shop_head_healer_5 { background-image: url(spritesmith-main-5.png); - background-position: -738px -1680px; + background-position: -779px -1680px; width: 40px; height: 40px; } .shop_head_rogue_1 { background-image: url(spritesmith-main-5.png); - background-position: -697px -1680px; + background-position: -738px -1680px; width: 40px; height: 40px; } .shop_head_rogue_2 { background-image: url(spritesmith-main-5.png); - background-position: -615px -1680px; + background-position: -656px -1680px; width: 40px; height: 40px; } .shop_head_rogue_3 { background-image: url(spritesmith-main-5.png); - background-position: -574px -1680px; + background-position: -615px -1680px; width: 40px; height: 40px; } .shop_head_rogue_4 { background-image: url(spritesmith-main-5.png); - background-position: -533px -1680px; + background-position: -574px -1680px; width: 40px; height: 40px; } .shop_head_rogue_5 { background-image: url(spritesmith-main-5.png); - background-position: -492px -1680px; + background-position: -533px -1680px; width: 40px; height: 40px; } .shop_head_special_0 { background-image: url(spritesmith-main-5.png); - background-position: -451px -1680px; + background-position: -492px -1680px; width: 40px; height: 40px; } .shop_head_special_1 { background-image: url(spritesmith-main-5.png); - background-position: -369px -1680px; + background-position: -410px -1680px; width: 40px; height: 40px; } .shop_head_special_2 { background-image: url(spritesmith-main-5.png); - background-position: -328px -1680px; + background-position: -369px -1680px; width: 40px; height: 40px; } .shop_head_special_fireCoralCirclet { background-image: url(spritesmith-main-5.png); - background-position: -287px -1680px; + background-position: -328px -1680px; width: 40px; height: 40px; } .shop_head_warrior_1 { background-image: url(spritesmith-main-5.png); - background-position: -164px -1680px; + background-position: -205px -1680px; width: 40px; height: 40px; } .shop_head_warrior_2 { background-image: url(spritesmith-main-5.png); - background-position: -123px -1680px; + background-position: -164px -1680px; width: 40px; height: 40px; } .shop_head_warrior_3 { background-image: url(spritesmith-main-5.png); - background-position: -82px -1680px; + background-position: -123px -1680px; width: 40px; height: 40px; } .shop_head_warrior_4 { background-image: url(spritesmith-main-5.png); - background-position: -41px -1680px; + background-position: -82px -1680px; width: 40px; height: 40px; } .shop_head_warrior_5 { background-image: url(spritesmith-main-5.png); - background-position: 0px -1680px; + background-position: -41px -1680px; width: 40px; height: 40px; } .shop_head_wizard_1 { background-image: url(spritesmith-main-5.png); - background-position: -1380px -1253px; + background-position: 0px -1680px; width: 40px; height: 40px; } .shop_head_wizard_2 { background-image: url(spritesmith-main-5.png); - background-position: -1380px -1212px; + background-position: -1380px -1253px; width: 40px; height: 40px; } .shop_head_wizard_3 { background-image: url(spritesmith-main-5.png); - background-position: -1233px -1113px; + background-position: -1380px -1212px; width: 40px; height: 40px; } .shop_head_wizard_4 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -431px; + background-position: -1700px -442px; width: 40px; height: 40px; } .shop_head_wizard_5 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -390px; + background-position: -1700px -401px; + width: 40px; + height: 40px; +} +.headAccessory_special_bearEars { + background-image: url(spritesmith-main-5.png); + background-position: -728px -1303px; + width: 90px; + height: 90px; +} +.customize-option.headAccessory_special_bearEars { + background-image: url(spritesmith-main-5.png); + background-position: -753px -1318px; + width: 60px; + height: 60px; +} +.headAccessory_special_cactusEars { + background-image: url(spritesmith-main-5.png); + background-position: -819px -1303px; + width: 90px; + height: 90px; +} +.customize-option.headAccessory_special_cactusEars { + background-image: url(spritesmith-main-5.png); + background-position: -844px -1318px; + width: 60px; + height: 60px; +} +.headAccessory_special_foxEars { + background-image: url(spritesmith-main-5.png); + background-position: -910px -1303px; + width: 90px; + height: 90px; +} +.customize-option.headAccessory_special_foxEars { + background-image: url(spritesmith-main-5.png); + background-position: -935px -1318px; + width: 60px; + height: 60px; +} +.headAccessory_special_lionEars { + background-image: url(spritesmith-main-5.png); + background-position: -1001px -1303px; + width: 90px; + height: 90px; +} +.customize-option.headAccessory_special_lionEars { + background-image: url(spritesmith-main-5.png); + background-position: -1026px -1318px; + width: 60px; + height: 60px; +} +.headAccessory_special_pandaEars { + background-image: url(spritesmith-main-5.png); + background-position: -1092px -1303px; + width: 90px; + height: 90px; +} +.customize-option.headAccessory_special_pandaEars { + background-image: url(spritesmith-main-5.png); + background-position: -1117px -1318px; + width: 60px; + height: 60px; +} +.headAccessory_special_pigEars { + background-image: url(spritesmith-main-5.png); + background-position: -1183px -1303px; + width: 90px; + height: 90px; +} +.customize-option.headAccessory_special_pigEars { + background-image: url(spritesmith-main-5.png); + background-position: -1208px -1318px; + width: 60px; + height: 60px; +} +.headAccessory_special_tigerEars { + background-image: url(spritesmith-main-5.png); + background-position: -1274px -1303px; + width: 90px; + height: 90px; +} +.customize-option.headAccessory_special_tigerEars { + background-image: url(spritesmith-main-5.png); + background-position: -1299px -1318px; + width: 60px; + height: 60px; +} +.headAccessory_special_wolfEars { + background-image: url(spritesmith-main-5.png); + background-position: -1427px 0px; + width: 90px; + height: 90px; +} +.customize-option.headAccessory_special_wolfEars { + background-image: url(spritesmith-main-5.png); + background-position: -1452px -15px; + width: 60px; + height: 60px; +} +.shop_headAccessory_special_bearEars { + background-image: url(spritesmith-main-5.png); + background-position: -1700px -360px; + width: 40px; + height: 40px; +} +.shop_headAccessory_special_cactusEars { + background-image: url(spritesmith-main-5.png); + background-position: -1700px -319px; + width: 40px; + height: 40px; +} +.shop_headAccessory_special_foxEars { + background-image: url(spritesmith-main-5.png); + background-position: -1700px -278px; + width: 40px; + height: 40px; +} +.shop_headAccessory_special_lionEars { + background-image: url(spritesmith-main-5.png); + background-position: -1700px -237px; + width: 40px; + height: 40px; +} +.shop_headAccessory_special_pandaEars { + background-image: url(spritesmith-main-5.png); + background-position: -1148px -1680px; + width: 40px; + height: 40px; +} +.shop_headAccessory_special_pigEars { + background-image: url(spritesmith-main-5.png); + background-position: -451px -1680px; + width: 40px; + height: 40px; +} +.shop_headAccessory_special_tigerEars { + background-image: url(spritesmith-main-5.png); + background-position: -246px -1680px; + width: 40px; + height: 40px; +} +.shop_headAccessory_special_wolfEars { + background-image: url(spritesmith-main-5.png); + background-position: -1151px -1113px; width: 40px; height: 40px; } @@ -714,103 +714,103 @@ } .shop_shield_healer_3 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -1087px; + background-position: -1700px -1098px; width: 40px; height: 40px; } .shop_shield_healer_4 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -1046px; + background-position: -1700px -1057px; width: 40px; height: 40px; } .shop_shield_healer_5 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -1005px; + background-position: -1700px -1016px; width: 40px; height: 40px; } .shop_shield_rogue_0 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -964px; + background-position: -1700px -975px; width: 40px; height: 40px; } .shop_shield_rogue_1 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -923px; + background-position: -1700px -934px; width: 40px; height: 40px; } .shop_shield_rogue_2 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -882px; + background-position: -1700px -893px; width: 40px; height: 40px; } .shop_shield_rogue_3 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -841px; + background-position: -1700px -852px; width: 40px; height: 40px; } .shop_shield_rogue_4 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -800px; + background-position: -1700px -811px; width: 40px; height: 40px; } .shop_shield_rogue_5 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -759px; + background-position: -1700px -770px; width: 40px; height: 40px; } .shop_shield_rogue_6 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -718px; + background-position: -1700px -729px; width: 40px; height: 40px; } .shop_shield_special_0 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -677px; + background-position: -1700px -688px; width: 40px; height: 40px; } .shop_shield_special_1 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -636px; + background-position: -1700px -647px; width: 40px; height: 40px; } .shop_shield_special_goldenknight { background-image: url(spritesmith-main-5.png); - background-position: -1700px -595px; + background-position: -1700px -606px; width: 40px; height: 40px; } .shop_shield_special_moonpearlShield { background-image: url(spritesmith-main-5.png); - background-position: -1700px -554px; + background-position: -1700px -565px; width: 40px; height: 40px; } .shop_shield_warrior_1 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -513px; + background-position: -1700px -524px; width: 40px; height: 40px; } .shop_shield_warrior_2 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -472px; + background-position: -1700px -483px; width: 40px; height: 40px; } .shop_shield_warrior_3 { background-image: url(spritesmith-main-5.png); - background-position: -410px -1680px; + background-position: -287px -1680px; width: 40px; height: 40px; } @@ -930,85 +930,85 @@ } .shop_weapon_special_3 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -1128px; + background-position: -1700px -1139px; width: 40px; height: 40px; } .shop_weapon_special_critical { background-image: url(spritesmith-main-5.png); - background-position: -1700px -185px; + background-position: -1700px -196px; width: 40px; height: 40px; } .shop_weapon_special_tridentOfCrashingTides { background-image: url(spritesmith-main-5.png); - background-position: -1700px -1169px; + background-position: -1700px -1180px; width: 40px; height: 40px; } .shop_weapon_warrior_0 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -1210px; + background-position: -1700px -1221px; width: 40px; height: 40px; } .shop_weapon_warrior_1 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -1251px; + background-position: -1700px -1262px; width: 40px; height: 40px; } .shop_weapon_warrior_2 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -1292px; + background-position: -1700px -1303px; width: 40px; height: 40px; } .shop_weapon_warrior_3 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -1333px; + background-position: -1700px -1344px; width: 40px; height: 40px; } .shop_weapon_warrior_4 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -1374px; + background-position: -1700px -1385px; width: 40px; height: 40px; } .shop_weapon_warrior_5 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -1415px; + background-position: -1700px -1426px; width: 40px; height: 40px; } .shop_weapon_warrior_6 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -1456px; + background-position: -1700px -1467px; width: 40px; height: 40px; } .shop_weapon_wizard_0 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -1497px; + background-position: -1700px -1508px; width: 40px; height: 40px; } .shop_weapon_wizard_1 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -1538px; + background-position: -1700px -1549px; width: 40px; height: 40px; } .shop_weapon_wizard_2 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -1579px; + background-position: -1700px -1590px; width: 40px; height: 40px; } .shop_weapon_wizard_3 { background-image: url(spritesmith-main-5.png); - background-position: -1700px -1620px; + background-position: -1700px -1631px; width: 40px; height: 40px; } @@ -1230,13 +1230,13 @@ } .Pet_Currency_Gem { background-image: url(spritesmith-main-5.png); - background-position: -1700px -104px; + background-position: -1700px -156px; width: 45px; height: 39px; } .Pet_Currency_Gem1x { background-image: url(spritesmith-main-5.png); - background-position: -1700px -1661px; + background-position: -1670px -364px; width: 15px; height: 13px; } @@ -1500,7 +1500,7 @@ } .zzz { background-image: url(spritesmith-main-5.png); - background-position: -205px -1680px; + background-position: -1233px -1113px; width: 40px; height: 40px; } @@ -1656,7 +1656,7 @@ } .inventory_quest_scroll_dilatoryDistress3_locked { background-image: url(spritesmith-main-5.png); - background-position: -1700px -52px; + background-position: -1700px -104px; width: 48px; height: 51px; } @@ -1858,78 +1858,84 @@ width: 48px; height: 51px; } -.inventory_quest_scroll_snake { +.inventory_quest_scroll_snail { background-image: url(spritesmith-main-5.png); background-position: -1078px -1628px; width: 48px; height: 51px; } -.inventory_quest_scroll_spider { +.inventory_quest_scroll_snake { background-image: url(spritesmith-main-5.png); background-position: -1127px -1628px; width: 48px; height: 51px; } -.inventory_quest_scroll_trex { - background-image: url(spritesmith-main-5.png); - background-position: -1225px -1628px; - width: 48px; - height: 51px; -} -.inventory_quest_scroll_trex_undead { +.inventory_quest_scroll_spider { background-image: url(spritesmith-main-5.png); background-position: -1176px -1628px; width: 48px; height: 51px; } -.inventory_quest_scroll_unicorn { +.inventory_quest_scroll_trex { background-image: url(spritesmith-main-5.png); background-position: -1274px -1628px; width: 48px; height: 51px; } -.inventory_quest_scroll_vice1 { +.inventory_quest_scroll_trex_undead { background-image: url(spritesmith-main-5.png); - background-position: -1372px -1628px; + background-position: -1225px -1628px; width: 48px; height: 51px; } -.inventory_quest_scroll_vice1_locked { +.inventory_quest_scroll_unicorn { background-image: url(spritesmith-main-5.png); background-position: -1323px -1628px; width: 48px; height: 51px; } -.inventory_quest_scroll_vice2 { - background-image: url(spritesmith-main-5.png); - background-position: -1470px -1628px; - width: 48px; - height: 51px; -} -.inventory_quest_scroll_vice2_locked { +.inventory_quest_scroll_vice1 { background-image: url(spritesmith-main-5.png); background-position: -1421px -1628px; width: 48px; height: 51px; } -.inventory_quest_scroll_vice3 { +.inventory_quest_scroll_vice1_locked { background-image: url(spritesmith-main-5.png); - background-position: -1568px -1628px; + background-position: -1372px -1628px; width: 48px; height: 51px; } -.inventory_quest_scroll_vice3_locked { +.inventory_quest_scroll_vice2 { background-image: url(spritesmith-main-5.png); background-position: -1519px -1628px; width: 48px; height: 51px; } -.inventory_quest_scroll_whale { +.inventory_quest_scroll_vice2_locked { + background-image: url(spritesmith-main-5.png); + background-position: -1470px -1628px; + width: 48px; + height: 51px; +} +.inventory_quest_scroll_vice3 { background-image: url(spritesmith-main-5.png); background-position: -1617px -1628px; width: 48px; height: 51px; } +.inventory_quest_scroll_vice3_locked { + background-image: url(spritesmith-main-5.png); + background-position: -1568px -1628px; + width: 48px; + height: 51px; +} +.inventory_quest_scroll_whale { + background-image: url(spritesmith-main-5.png); + background-position: -1700px 0px; + width: 48px; + height: 51px; +} .quest_atom1 { background-image: url(spritesmith-main-5.png); background-position: -679px -886px; @@ -1986,7 +1992,7 @@ } .quest_dilatoryDistress1_fireCoral { background-image: url(spritesmith-main-5.png); - background-position: -1700px 0px; + background-position: -1700px -52px; width: 48px; height: 51px; } diff --git a/common/dist/sprites/spritesmith-main-5.png b/common/dist/sprites/spritesmith-main-5.png index bffce423fa..1da9d1a6a6 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 69d02215e0..0156bc9b52 100644 --- a/common/dist/sprites/spritesmith-main-6.css +++ b/common/dist/sprites/spritesmith-main-6.css @@ -1,12 +1,12 @@ .quest_TEMPLATE_FOR_MISSING_IMAGE { background-image: url(spritesmith-main-6.png); - background-position: 0px -1598px; + background-position: -848px -1564px; width: 221px; height: 39px; } .quest_penguin { background-image: url(spritesmith-main-6.png); - background-position: -880px -504px; + background-position: -880px -531px; width: 190px; height: 183px; } @@ -24,7 +24,7 @@ } .quest_rooster { background-image: url(spritesmith-main-6.png); - background-position: -880px -151px; + background-position: -880px -178px; width: 213px; height: 174px; } @@ -46,63 +46,69 @@ width: 219px; height: 219px; } +.quest_snail { + background-image: url(spritesmith-main-6.png); + background-position: 0px -660px; + width: 219px; + height: 213px; +} .quest_snake { background-image: url(spritesmith-main-6.png); - background-position: -651px -660px; + background-position: -654px -660px; width: 216px; height: 177px; } .quest_spider { background-image: url(spritesmith-main-6.png); - background-position: -880px 0px; + background-position: 0px -874px; width: 250px; height: 150px; } .quest_stressbeast { background-image: url(spritesmith-main-6.png); - background-position: 0px 0px; + background-position: -660px -220px; width: 219px; height: 219px; } .quest_stressbeast_bailey { background-image: url(spritesmith-main-6.png); - background-position: -220px -440px; + background-position: -440px -440px; width: 219px; height: 219px; } .quest_stressbeast_guide { background-image: url(spritesmith-main-6.png); - background-position: -440px -440px; + background-position: -660px 0px; width: 219px; height: 219px; } .quest_stressbeast_stables { background-image: url(spritesmith-main-6.png); - background-position: -660px 0px; + background-position: 0px 0px; width: 219px; height: 219px; } .quest_trex { background-image: url(spritesmith-main-6.png); - background-position: -880px -326px; + background-position: -880px -353px; width: 204px; height: 177px; } .quest_trex_undead { background-image: url(spritesmith-main-6.png); - background-position: 0px -660px; + background-position: -220px -660px; width: 216px; height: 177px; } .quest_unicorn { background-image: url(spritesmith-main-6.png); - background-position: -660px -220px; + background-position: -220px -440px; width: 219px; height: 219px; } .quest_vice1 { background-image: url(spritesmith-main-6.png); - background-position: -217px -660px; + background-position: -437px -660px; width: 216px; height: 177px; } @@ -114,13 +120,13 @@ } .quest_vice2_lightCrystal { background-image: url(spritesmith-main-6.png); - background-position: -1016px -1638px; + background-position: -1733px -257px; width: 40px; height: 40px; } .quest_vice3 { background-image: url(spritesmith-main-6.png); - background-position: -434px -660px; + background-position: -880px 0px; width: 216px; height: 177px; } @@ -132,1399 +138,1375 @@ } .shop_copper { background-image: url(spritesmith-main-6.png); - background-position: -1094px -283px; + background-position: -1733px -430px; width: 32px; height: 22px; } .shop_eyes { background-image: url(spritesmith-main-6.png); - background-position: -975px -1638px; + background-position: -1733px -216px; width: 40px; height: 40px; } .shop_gold { background-image: url(spritesmith-main-6.png); - background-position: -1071px -660px; + background-position: -1733px -453px; width: 32px; height: 22px; } .shop_opaquePotion { background-image: url(spritesmith-main-6.png); - background-position: -934px -1638px; + background-position: -1733px -93px; width: 40px; height: 40px; } .shop_potion { background-image: url(spritesmith-main-6.png); - background-position: -893px -1638px; + background-position: -1733px -175px; width: 40px; height: 40px; } .shop_reroll { background-image: url(spritesmith-main-6.png); - background-position: -852px -1638px; + background-position: -1733px -134px; width: 40px; height: 40px; } .shop_seafoam { background-image: url(spritesmith-main-6.png); - background-position: -1094px -250px; + background-position: -1733px -331px; width: 32px; height: 32px; } .shop_shinySeed { background-image: url(spritesmith-main-6.png); - background-position: -1094px -184px; + background-position: -1733px -397px; width: 32px; height: 32px; } .shop_silver { background-image: url(spritesmith-main-6.png); - background-position: -1085px -464px; + background-position: -1733px -476px; width: 32px; height: 22px; } .shop_snowball { background-image: url(spritesmith-main-6.png); - background-position: -1094px -151px; + background-position: -1733px -298px; width: 32px; height: 32px; } .shop_spookDust { background-image: url(spritesmith-main-6.png); - background-position: -1094px -217px; + background-position: -1733px -364px; width: 32px; height: 32px; } .Pet_Egg_BearCub { background-image: url(spritesmith-main-6.png); - background-position: -1661px -1368px; + background-position: -946px -1604px; width: 48px; height: 51px; } .Pet_Egg_Bunny { background-image: url(spritesmith-main-6.png); - background-position: -1710px -1368px; + background-position: -995px -1604px; width: 48px; height: 51px; } .Pet_Egg_Cactus { background-image: url(spritesmith-main-6.png); - background-position: -1661px -1420px; + background-position: -1044px -1604px; width: 48px; height: 51px; } .Pet_Egg_Cheetah { background-image: url(spritesmith-main-6.png); - background-position: -1710px -1420px; + background-position: -1093px -1604px; width: 48px; height: 51px; } .Pet_Egg_Cuttlefish { background-image: url(spritesmith-main-6.png); - background-position: -1661px -1472px; + background-position: -1142px -1604px; width: 48px; height: 51px; } .Pet_Egg_Deer { background-image: url(spritesmith-main-6.png); - background-position: -1710px -1472px; + background-position: -1191px -1604px; width: 48px; height: 51px; } .Pet_Egg_Dragon { background-image: url(spritesmith-main-6.png); - background-position: -1661px -1524px; + background-position: -1240px -1604px; width: 48px; height: 51px; } .Pet_Egg_Egg { background-image: url(spritesmith-main-6.png); - background-position: -1710px -1524px; + background-position: -1289px -1604px; width: 48px; height: 51px; } .Pet_Egg_FlyingPig { background-image: url(spritesmith-main-6.png); - background-position: -490px -1638px; + background-position: -1338px -1604px; width: 48px; height: 51px; } .Pet_Egg_Fox { background-image: url(spritesmith-main-6.png); - background-position: -441px -1638px; + background-position: -980px -1670px; width: 48px; height: 51px; } .Pet_Egg_Frog { background-image: url(spritesmith-main-6.png); - background-position: -392px -1638px; + background-position: -931px -1670px; width: 48px; height: 51px; } .Pet_Egg_Gryphon { background-image: url(spritesmith-main-6.png); - background-position: -343px -1638px; + background-position: -882px -1670px; width: 48px; height: 51px; } .Pet_Egg_Hedgehog { background-image: url(spritesmith-main-6.png); - background-position: -294px -1638px; + background-position: -833px -1670px; width: 48px; height: 51px; } .Pet_Egg_Horse { background-image: url(spritesmith-main-6.png); - background-position: -245px -1638px; + background-position: -784px -1670px; width: 48px; height: 51px; } .Pet_Egg_LionCub { background-image: url(spritesmith-main-6.png); - background-position: -196px -1638px; + background-position: -735px -1670px; width: 48px; height: 51px; } .Pet_Egg_Monkey { background-image: url(spritesmith-main-6.png); - background-position: -147px -1638px; + background-position: -686px -1670px; width: 48px; height: 51px; } .Pet_Egg_Octopus { background-image: url(spritesmith-main-6.png); - background-position: -98px -1638px; + background-position: -637px -1670px; width: 48px; height: 51px; } .Pet_Egg_Owl { background-image: url(spritesmith-main-6.png); - background-position: -49px -1638px; + background-position: -588px -1670px; width: 48px; height: 51px; } .Pet_Egg_PandaCub { background-image: url(spritesmith-main-6.png); - background-position: 0px -1638px; + background-position: -539px -1670px; width: 48px; height: 51px; } .Pet_Egg_Parrot { background-image: url(spritesmith-main-6.png); - background-position: -1590px -1544px; + background-position: -490px -1670px; width: 48px; height: 51px; } .Pet_Egg_Penguin { background-image: url(spritesmith-main-6.png); - background-position: -1590px -1492px; + background-position: -441px -1670px; width: 48px; height: 51px; } .Pet_Egg_PolarBear { background-image: url(spritesmith-main-6.png); - background-position: -1484px -1438px; + background-position: -392px -1670px; width: 48px; height: 51px; } .Pet_Egg_Rat { background-image: url(spritesmith-main-6.png); - background-position: -1484px -1386px; + background-position: -343px -1670px; width: 48px; height: 51px; } .Pet_Egg_Rock { background-image: url(spritesmith-main-6.png); - background-position: -1378px -1332px; + background-position: -294px -1670px; width: 48px; height: 51px; } .Pet_Egg_Rooster { background-image: url(spritesmith-main-6.png); - background-position: -1378px -1280px; + background-position: -245px -1670px; width: 48px; height: 51px; } .Pet_Egg_Sabretooth { background-image: url(spritesmith-main-6.png); - background-position: -539px -1638px; + background-position: -196px -1670px; width: 48px; height: 51px; } .Pet_Egg_Seahorse { background-image: url(spritesmith-main-6.png); - background-position: -1272px -1174px; + background-position: -1029px -1670px; width: 48px; height: 51px; } .Pet_Egg_Sheep { background-image: url(spritesmith-main-6.png); - background-position: -1166px -1120px; + background-position: -98px -1670px; width: 48px; height: 51px; } .Pet_Egg_Slime { background-image: url(spritesmith-main-6.png); - background-position: -1166px -1068px; + background-position: -49px -1670px; + width: 48px; + height: 51px; +} +.Pet_Egg_Snail { + background-image: url(spritesmith-main-6.png); + background-position: 0px -1670px; width: 48px; height: 51px; } .Pet_Egg_Snake { background-image: url(spritesmith-main-6.png); - background-position: -1060px -1005px; + background-position: -1681px -1604px; width: 48px; height: 51px; } .Pet_Egg_Spider { background-image: url(spritesmith-main-6.png); - background-position: -1060px -953px; + background-position: -1632px -1604px; width: 48px; height: 51px; } .Pet_Egg_TRex { background-image: url(spritesmith-main-6.png); - background-position: -1060px -838px; + background-position: -1534px -1604px; width: 48px; height: 51px; } .Pet_Egg_TigerCub { background-image: url(spritesmith-main-6.png); - background-position: -1060px -890px; + background-position: -1583px -1604px; width: 48px; height: 51px; } .Pet_Egg_Unicorn { background-image: url(spritesmith-main-6.png); - background-position: -1071px -608px; + background-position: -1485px -1604px; width: 48px; height: 51px; } .Pet_Egg_Whale { background-image: url(spritesmith-main-6.png); - background-position: -1071px -556px; + background-position: -1436px -1604px; width: 48px; height: 51px; } .Pet_Egg_Wolf { background-image: url(spritesmith-main-6.png); - background-position: -1071px -504px; + background-position: -1387px -1604px; width: 48px; height: 51px; } .Pet_Food_Cake_Base { background-image: url(spritesmith-main-6.png); - background-position: -764px -1638px; + background-position: -880px -830px; width: 43px; height: 43px; } .Pet_Food_Cake_CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: 0px -1690px; + background-position: -1733px -48px; width: 42px; height: 44px; } .Pet_Food_Cake_CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -588px -1638px; + background-position: 0px -1722px; width: 43px; height: 45px; } .Pet_Food_Cake_Desert { background-image: url(spritesmith-main-6.png); - background-position: -632px -1638px; + background-position: -1169px -1670px; width: 43px; height: 44px; } .Pet_Food_Cake_Golden { background-image: url(spritesmith-main-6.png); - background-position: -808px -1638px; + background-position: -924px -830px; width: 43px; height: 42px; } .Pet_Food_Cake_Red { background-image: url(spritesmith-main-6.png); - background-position: -676px -1638px; + background-position: -1213px -1670px; width: 43px; height: 44px; } .Pet_Food_Cake_Shade { background-image: url(spritesmith-main-6.png); - background-position: -720px -1638px; + background-position: -1257px -1670px; width: 43px; height: 44px; } .Pet_Food_Cake_Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -1085px -371px; + background-position: -1733px 0px; width: 42px; height: 47px; } .Pet_Food_Cake_White { background-image: url(spritesmith-main-6.png); - background-position: -1085px -419px; + background-position: -1124px -1670px; width: 44px; height: 44px; } .Pet_Food_Cake_Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1085px -326px; + background-position: -1078px -1670px; width: 45px; height: 44px; } .Pet_Food_Candy_Base { background-image: url(spritesmith-main-6.png); - background-position: -1710px -1264px; + background-position: -848px -1604px; width: 48px; height: 51px; } .Pet_Food_Candy_CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -1661px -1264px; + background-position: -1042px -926px; width: 48px; height: 51px; } .Pet_Food_Candy_CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -1710px -1212px; + background-position: -993px -926px; width: 48px; height: 51px; } .Pet_Food_Candy_Desert { background-image: url(spritesmith-main-6.png); - background-position: -1661px -1212px; + background-position: -1042px -874px; width: 48px; height: 51px; } .Pet_Food_Candy_Golden { background-image: url(spritesmith-main-6.png); - background-position: -1710px -1160px; + background-position: -993px -874px; width: 48px; height: 51px; } .Pet_Food_Candy_Red { background-image: url(spritesmith-main-6.png); - background-position: -1661px -1160px; + background-position: -1146px -972px; width: 48px; height: 51px; } .Pet_Food_Candy_Shade { background-image: url(spritesmith-main-6.png); - background-position: -1710px -1108px; + background-position: -1097px -972px; width: 48px; height: 51px; } .Pet_Food_Candy_Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -1661px -1108px; + background-position: -1146px -920px; width: 48px; height: 51px; } .Pet_Food_Candy_White { background-image: url(spritesmith-main-6.png); - background-position: -1710px -1056px; + background-position: -1097px -920px; width: 48px; height: 51px; } .Pet_Food_Candy_Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1661px -1056px; + background-position: -1252px -1060px; width: 48px; height: 51px; } .Pet_Food_Chocolate { background-image: url(spritesmith-main-6.png); - background-position: -1710px -1004px; + background-position: -1203px -1060px; width: 48px; height: 51px; } .Pet_Food_CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -1661px -1004px; + background-position: -1358px -1166px; width: 48px; height: 51px; } .Pet_Food_CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -1710px -952px; + background-position: -1309px -1166px; width: 48px; height: 51px; } .Pet_Food_Fish { background-image: url(spritesmith-main-6.png); - background-position: -1661px -952px; + background-position: -1464px -1272px; width: 48px; height: 51px; } .Pet_Food_Honey { background-image: url(spritesmith-main-6.png); - background-position: -1710px -900px; + background-position: -1415px -1272px; width: 48px; height: 51px; } .Pet_Food_Meat { background-image: url(spritesmith-main-6.png); - background-position: -1661px -900px; + background-position: -1570px -1378px; width: 48px; height: 51px; } .Pet_Food_Milk { background-image: url(spritesmith-main-6.png); - background-position: -1710px -848px; + background-position: -1521px -1378px; width: 48px; height: 51px; } .Pet_Food_Potatoe { background-image: url(spritesmith-main-6.png); - background-position: -1661px -848px; + background-position: -1676px -1484px; width: 48px; height: 51px; } .Pet_Food_RottenMeat { background-image: url(spritesmith-main-6.png); - background-position: -1710px -1316px; + background-position: -1627px -1484px; width: 48px; height: 51px; } .Pet_Food_Saddle { background-image: url(spritesmith-main-6.png); - background-position: -1272px -1226px; + background-position: -147px -1670px; width: 48px; height: 51px; } .Pet_Food_Strawberry { background-image: url(spritesmith-main-6.png); - background-position: -1661px -1316px; + background-position: -897px -1604px; width: 48px; height: 51px; } .Mount_Body_BearCub-Base { background-image: url(spritesmith-main-6.png); - background-position: -212px -1280px; + background-position: -1415px -742px; width: 105px; height: 105px; } .Mount_Body_BearCub-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -318px -1280px; + background-position: -1415px -848px; width: 105px; height: 105px; } .Mount_Body_BearCub-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -424px -1280px; + background-position: -1415px -954px; width: 105px; height: 105px; } .Mount_Body_BearCub-Desert { background-image: url(spritesmith-main-6.png); - background-position: -530px -1280px; + background-position: -1415px -1060px; width: 105px; height: 105px; } .Mount_Body_BearCub-Golden { background-image: url(spritesmith-main-6.png); - background-position: -636px -1280px; + background-position: -1415px -1166px; width: 105px; height: 105px; } .Mount_Body_BearCub-Peppermint { background-image: url(spritesmith-main-6.png); - background-position: -742px -1280px; + background-position: 0px -1352px; width: 105px; height: 105px; } .Mount_Body_BearCub-Polar { background-image: url(spritesmith-main-6.png); - background-position: -848px -1280px; + background-position: -106px -1352px; width: 105px; height: 105px; } .Mount_Body_BearCub-Red { background-image: url(spritesmith-main-6.png); - background-position: -954px -1280px; + background-position: -212px -1352px; width: 105px; height: 105px; } .Mount_Body_BearCub-Shade { background-image: url(spritesmith-main-6.png); - background-position: -1060px -1280px; + background-position: -318px -1352px; width: 105px; height: 105px; } .Mount_Body_BearCub-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -1166px -1280px; + background-position: -424px -1352px; width: 105px; height: 105px; } .Mount_Body_BearCub-Spooky { background-image: url(spritesmith-main-6.png); - background-position: -1272px -1280px; + background-position: -530px -1352px; width: 105px; height: 105px; } .Mount_Body_BearCub-White { background-image: url(spritesmith-main-6.png); - background-position: -1449px 0px; + background-position: -636px -1352px; width: 105px; height: 105px; } .Mount_Body_BearCub-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1449px -106px; + background-position: -742px -1352px; width: 105px; height: 105px; } .Mount_Body_Bunny-Base { background-image: url(spritesmith-main-6.png); - background-position: -1449px -212px; + background-position: -848px -1352px; width: 105px; height: 105px; } .Mount_Body_Bunny-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -1449px -318px; + background-position: -954px -1352px; width: 105px; height: 105px; } .Mount_Body_Bunny-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -1449px -424px; + background-position: -1060px -1352px; width: 105px; height: 105px; } .Mount_Body_Bunny-Desert { background-image: url(spritesmith-main-6.png); - background-position: -1449px -530px; + background-position: -1166px -1352px; width: 105px; height: 105px; } .Mount_Body_Bunny-Golden { background-image: url(spritesmith-main-6.png); - background-position: -1449px -636px; + background-position: -1272px -1352px; width: 105px; height: 105px; } .Mount_Body_Bunny-Red { background-image: url(spritesmith-main-6.png); - background-position: -1449px -742px; + background-position: -1378px -1352px; width: 105px; height: 105px; } .Mount_Body_Bunny-Shade { background-image: url(spritesmith-main-6.png); - background-position: -1449px -848px; + background-position: -1521px 0px; width: 105px; height: 105px; } .Mount_Body_Bunny-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -1449px -954px; + background-position: -1521px -106px; width: 105px; height: 105px; } .Mount_Body_Bunny-White { background-image: url(spritesmith-main-6.png); - background-position: -1449px -1060px; + background-position: -1521px -212px; width: 105px; height: 105px; } .Mount_Body_Bunny-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1449px -1166px; + background-position: -1521px -318px; width: 105px; height: 105px; } .Mount_Body_Cactus-Base { background-image: url(spritesmith-main-6.png); - background-position: -1449px -1272px; + background-position: -1521px -424px; width: 105px; height: 105px; } .Mount_Body_Cactus-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: 0px -1386px; + background-position: -742px -1564px; width: 105px; height: 105px; } .Mount_Body_Cactus-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -106px -1386px; + background-position: -1521px -636px; width: 105px; height: 105px; } .Mount_Body_Cactus-Desert { background-image: url(spritesmith-main-6.png); - background-position: -212px -1386px; + background-position: -1521px -742px; width: 105px; height: 105px; } .Mount_Body_Cactus-Golden { background-image: url(spritesmith-main-6.png); - background-position: -1661px -636px; + background-position: -1521px -848px; width: 105px; height: 105px; } .Mount_Body_Cactus-Peppermint { background-image: url(spritesmith-main-6.png); - background-position: -424px -1386px; + background-position: -1521px -954px; width: 105px; height: 105px; } .Mount_Body_Cactus-Red { background-image: url(spritesmith-main-6.png); - background-position: -530px -1386px; + background-position: -1521px -1060px; width: 105px; height: 105px; } .Mount_Body_Cactus-Shade { background-image: url(spritesmith-main-6.png); - background-position: -636px -1386px; + background-position: -1521px -1166px; width: 105px; height: 105px; } .Mount_Body_Cactus-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -742px -1386px; + background-position: -1521px -1272px; width: 105px; height: 105px; } .Mount_Body_Cactus-Spooky { background-image: url(spritesmith-main-6.png); - background-position: -848px -1386px; + background-position: 0px -1458px; width: 105px; height: 105px; } .Mount_Body_Cactus-White { background-image: url(spritesmith-main-6.png); - background-position: -954px -1386px; + background-position: -106px -1458px; width: 105px; height: 105px; } .Mount_Body_Cactus-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1060px -1386px; + background-position: -212px -1458px; width: 105px; height: 105px; } .Mount_Body_Cheetah-Base { background-image: url(spritesmith-main-6.png); - background-position: -1166px -1386px; + background-position: -318px -1458px; width: 105px; height: 105px; } .Mount_Body_Cheetah-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -1272px -1386px; + background-position: -424px -1458px; width: 105px; height: 105px; } .Mount_Body_Cheetah-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -1378px -1386px; + background-position: -530px -1458px; width: 105px; height: 105px; } .Mount_Body_Cheetah-Desert { background-image: url(spritesmith-main-6.png); - background-position: -1555px 0px; + background-position: -636px -1458px; width: 105px; height: 105px; } .Mount_Body_Cheetah-Golden { background-image: url(spritesmith-main-6.png); - background-position: -1555px -106px; + background-position: -742px -1458px; width: 105px; height: 105px; } .Mount_Body_Cheetah-Red { background-image: url(spritesmith-main-6.png); - background-position: -1555px -212px; + background-position: -848px -1458px; width: 105px; height: 105px; } .Mount_Body_Cheetah-Shade { background-image: url(spritesmith-main-6.png); - background-position: -1555px -318px; + background-position: -954px -1458px; width: 105px; height: 105px; } .Mount_Body_Cheetah-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -1555px -424px; + background-position: -1060px -1458px; width: 105px; height: 105px; } .Mount_Body_Cheetah-White { background-image: url(spritesmith-main-6.png); - background-position: -1555px -530px; + background-position: -1166px -1458px; width: 105px; height: 105px; } .Mount_Body_Cheetah-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1555px -636px; + background-position: -1272px -1458px; width: 105px; height: 105px; } .Mount_Body_Cuttlefish-Base { background-image: url(spritesmith-main-6.png); - background-position: -848px -838px; + background-position: -1097px -115px; width: 105px; height: 114px; } .Mount_Body_Cuttlefish-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -954px -838px; + background-position: -1097px -230px; width: 105px; height: 114px; } .Mount_Body_Cuttlefish-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: 0px -953px; + background-position: -1097px -345px; width: 105px; height: 114px; } .Mount_Body_Cuttlefish-Desert { background-image: url(spritesmith-main-6.png); - background-position: -106px -953px; + background-position: -1097px -460px; width: 105px; height: 114px; } .Mount_Body_Cuttlefish-Golden { background-image: url(spritesmith-main-6.png); - background-position: -212px -953px; + background-position: -1097px -575px; width: 105px; height: 114px; } .Mount_Body_Cuttlefish-Red { background-image: url(spritesmith-main-6.png); - background-position: -318px -953px; + background-position: -1097px -690px; width: 105px; height: 114px; } .Mount_Body_Cuttlefish-Shade { background-image: url(spritesmith-main-6.png); - background-position: -424px -953px; + background-position: -1097px -805px; width: 105px; height: 114px; } .Mount_Body_Cuttlefish-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -530px -953px; + background-position: 0px -1025px; width: 105px; height: 114px; } .Mount_Body_Cuttlefish-White { background-image: url(spritesmith-main-6.png); - background-position: -636px -953px; + background-position: -106px -1025px; width: 105px; height: 114px; } .Mount_Body_Cuttlefish-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -880px -688px; + background-position: -1097px 0px; width: 105px; height: 114px; } .Mount_Body_Deer-Base { background-image: url(spritesmith-main-6.png); - background-position: -318px -1492px; + background-position: -1627px -848px; width: 105px; height: 105px; } .Mount_Body_Deer-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -424px -1492px; + background-position: -1627px -954px; width: 105px; height: 105px; } .Mount_Body_Deer-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -530px -1492px; + background-position: -1627px -1060px; width: 105px; height: 105px; } .Mount_Body_Deer-Desert { background-image: url(spritesmith-main-6.png); - background-position: -636px -1492px; + background-position: -1627px -1166px; width: 105px; height: 105px; } .Mount_Body_Deer-Golden { background-image: url(spritesmith-main-6.png); - background-position: -742px -1492px; + background-position: -1627px -1272px; width: 105px; height: 105px; } .Mount_Body_Deer-Red { background-image: url(spritesmith-main-6.png); - background-position: -848px -1492px; + background-position: -1627px -1378px; width: 105px; height: 105px; } .Mount_Body_Deer-Shade { background-image: url(spritesmith-main-6.png); - background-position: -954px -1492px; + background-position: 0px -1564px; width: 105px; height: 105px; } .Mount_Body_Deer-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -1060px -1492px; + background-position: -106px -1564px; width: 105px; height: 105px; } .Mount_Body_Deer-White { background-image: url(spritesmith-main-6.png); - background-position: -1166px -1492px; + background-position: -212px -1564px; width: 105px; height: 105px; } .Mount_Body_Deer-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1272px -1492px; + background-position: -318px -1564px; width: 105px; height: 105px; } .Mount_Body_Dragon-Base { background-image: url(spritesmith-main-6.png); - background-position: -1378px -1492px; + background-position: -424px -1564px; width: 105px; height: 105px; } .Mount_Body_Dragon-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -1484px -1492px; + background-position: -530px -1564px; width: 105px; height: 105px; } .Mount_Body_Dragon-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -1661px 0px; + background-position: -636px -1564px; width: 105px; height: 105px; } .Mount_Body_Dragon-Desert { background-image: url(spritesmith-main-6.png); - background-position: -1661px -106px; + background-position: -1415px -636px; width: 105px; height: 105px; } .Mount_Body_Dragon-Golden { background-image: url(spritesmith-main-6.png); - background-position: -1661px -212px; + background-position: -1415px -530px; width: 105px; height: 105px; } .Mount_Body_Dragon-Peppermint { background-image: url(spritesmith-main-6.png); - background-position: -1661px -318px; + background-position: -1415px -424px; width: 105px; height: 105px; } .Mount_Body_Dragon-Red { background-image: url(spritesmith-main-6.png); - background-position: -1661px -424px; + background-position: -1415px -318px; width: 105px; height: 105px; } .Mount_Body_Dragon-Shade { background-image: url(spritesmith-main-6.png); - background-position: -1661px -530px; + background-position: -1415px -212px; width: 105px; height: 105px; } .Mount_Body_Dragon-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -106px -1280px; + background-position: -1415px -106px; width: 105px; height: 105px; } .Mount_Body_Dragon-Spooky { background-image: url(spritesmith-main-6.png); - background-position: 0px -1280px; + background-position: -1415px 0px; width: 105px; height: 105px; } .Mount_Body_Dragon-White { background-image: url(spritesmith-main-6.png); - background-position: -1343px -1166px; + background-position: -1272px -1246px; width: 105px; height: 105px; } .Mount_Body_Dragon-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1343px -1060px; + background-position: -1166px -1246px; width: 105px; height: 105px; } .Mount_Body_Egg-Base { background-image: url(spritesmith-main-6.png); - background-position: -1343px -954px; + background-position: -1060px -1246px; width: 105px; height: 105px; } .Mount_Body_Egg-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -1343px -848px; + background-position: -954px -1246px; width: 105px; height: 105px; } .Mount_Body_Egg-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -1343px -742px; + background-position: -848px -1246px; width: 105px; height: 105px; } .Mount_Body_Egg-Desert { background-image: url(spritesmith-main-6.png); - background-position: -1343px -636px; + background-position: -742px -1246px; width: 105px; height: 105px; } .Mount_Body_Egg-Golden { background-image: url(spritesmith-main-6.png); - background-position: -1343px -530px; + background-position: -636px -1246px; width: 105px; height: 105px; } .Mount_Body_Egg-Red { background-image: url(spritesmith-main-6.png); - background-position: -1343px -424px; + background-position: -530px -1246px; width: 105px; height: 105px; } .Mount_Body_Egg-Shade { background-image: url(spritesmith-main-6.png); - background-position: -1343px -318px; + background-position: -424px -1246px; width: 105px; height: 105px; } .Mount_Body_Egg-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -1343px -212px; + background-position: -318px -1246px; width: 105px; height: 105px; } .Mount_Body_Egg-White { background-image: url(spritesmith-main-6.png); - background-position: -1343px -106px; + background-position: -212px -1246px; width: 105px; height: 105px; } .Mount_Body_Egg-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1343px 0px; + background-position: -106px -1246px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-Base { background-image: url(spritesmith-main-6.png); - background-position: -1166px -1174px; + background-position: 0px -1246px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -1060px -1174px; + background-position: -1309px -1060px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -954px -1174px; + background-position: -1309px -954px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-Desert { background-image: url(spritesmith-main-6.png); - background-position: -848px -1174px; + background-position: -1309px -848px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-Golden { background-image: url(spritesmith-main-6.png); - background-position: -742px -1174px; + background-position: -1309px -742px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-Peppermint { background-image: url(spritesmith-main-6.png); - background-position: -636px -1174px; + background-position: -1309px -636px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-Red { background-image: url(spritesmith-main-6.png); - background-position: -530px -1174px; + background-position: -1309px -530px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-Shade { background-image: url(spritesmith-main-6.png); - background-position: -424px -1174px; + background-position: -1309px -424px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -318px -1174px; + background-position: -1309px -318px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-Spooky { background-image: url(spritesmith-main-6.png); - background-position: -212px -1174px; + background-position: -1309px -212px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-White { background-image: url(spritesmith-main-6.png); - background-position: -106px -1174px; + background-position: -1309px -106px; width: 105px; height: 105px; } .Mount_Body_FlyingPig-Zombie { background-image: url(spritesmith-main-6.png); - background-position: 0px -1174px; + background-position: -1309px 0px; width: 105px; height: 105px; } .Mount_Body_Fox-Base { background-image: url(spritesmith-main-6.png); - background-position: -1237px -1060px; + background-position: -1166px -1140px; width: 105px; height: 105px; } .Mount_Body_Fox-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -1237px -954px; + background-position: -1060px -1140px; width: 105px; height: 105px; } .Mount_Body_Fox-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -1237px -848px; + background-position: -954px -1140px; width: 105px; height: 105px; } .Mount_Body_Fox-Desert { background-image: url(spritesmith-main-6.png); - background-position: -1237px -742px; + background-position: -848px -1140px; width: 105px; height: 105px; } .Mount_Body_Fox-Golden { background-image: url(spritesmith-main-6.png); - background-position: -1237px -636px; + background-position: -742px -1140px; width: 105px; height: 105px; } .Mount_Body_Fox-Peppermint { background-image: url(spritesmith-main-6.png); - background-position: -1237px -530px; + background-position: -636px -1140px; width: 105px; height: 105px; } .Mount_Body_Fox-Red { background-image: url(spritesmith-main-6.png); - background-position: -1237px -424px; + background-position: -530px -1140px; width: 105px; height: 105px; } .Mount_Body_Fox-Shade { background-image: url(spritesmith-main-6.png); - background-position: -1237px -318px; + background-position: -424px -1140px; width: 105px; height: 105px; } .Mount_Body_Fox-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -1237px -212px; + background-position: -318px -1140px; width: 105px; height: 105px; } .Mount_Body_Fox-Spooky { background-image: url(spritesmith-main-6.png); - background-position: -1237px -106px; + background-position: -212px -1140px; width: 105px; height: 105px; } .Mount_Body_Fox-White { background-image: url(spritesmith-main-6.png); - background-position: -1237px 0px; + background-position: -106px -1140px; width: 105px; height: 105px; } .Mount_Body_Fox-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1060px -1068px; + background-position: 0px -1140px; width: 105px; height: 105px; } .Mount_Body_Frog-Base { background-image: url(spritesmith-main-6.png); - background-position: -636px -838px; + background-position: -887px -874px; width: 105px; height: 114px; } .Mount_Body_Frog-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -530px -838px; + background-position: -781px -874px; width: 105px; height: 114px; } .Mount_Body_Frog-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -424px -838px; + background-position: -675px -874px; width: 105px; height: 114px; } .Mount_Body_Frog-Desert { background-image: url(spritesmith-main-6.png); - background-position: -318px -838px; + background-position: -569px -874px; width: 105px; height: 114px; } .Mount_Body_Frog-Golden { background-image: url(spritesmith-main-6.png); - background-position: -212px -838px; + background-position: -463px -874px; width: 105px; height: 114px; } .Mount_Body_Frog-Red { background-image: url(spritesmith-main-6.png); - background-position: -106px -838px; + background-position: -357px -874px; width: 105px; height: 114px; } .Mount_Body_Frog-Shade { background-image: url(spritesmith-main-6.png); - background-position: 0px -838px; + background-position: -251px -874px; width: 105px; height: 114px; } .Mount_Body_Frog-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -986px -688px; + background-position: -986px -715px; width: 105px; height: 114px; } .Mount_Body_Frog-White { background-image: url(spritesmith-main-6.png); - background-position: -742px -953px; + background-position: -880px -715px; width: 105px; height: 114px; } .Mount_Body_Frog-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -742px -838px; + background-position: -212px -1025px; width: 105px; height: 114px; } .Mount_Body_Gryphon-Base { background-image: url(spritesmith-main-6.png); - background-position: -1131px -954px; + background-position: -1060px -1025px; width: 105px; height: 105px; } .Mount_Body_Gryphon-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -1131px -848px; + background-position: -954px -1025px; width: 105px; height: 105px; } .Mount_Body_Gryphon-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -1131px -742px; + background-position: -848px -1025px; width: 105px; height: 105px; } .Mount_Body_Gryphon-Desert { background-image: url(spritesmith-main-6.png); - background-position: -1131px -636px; + background-position: -742px -1025px; width: 105px; height: 105px; } .Mount_Body_Gryphon-Golden { background-image: url(spritesmith-main-6.png); - background-position: -1131px -530px; + background-position: -636px -1025px; width: 105px; height: 105px; } .Mount_Body_Gryphon-Red { background-image: url(spritesmith-main-6.png); - background-position: -1131px -424px; + background-position: -530px -1025px; width: 105px; height: 105px; } .Mount_Body_Gryphon-RoyalPurple { background-image: url(spritesmith-main-6.png); - background-position: -1131px -318px; + background-position: -424px -1025px; width: 105px; height: 105px; } .Mount_Body_Gryphon-Shade { background-image: url(spritesmith-main-6.png); - background-position: -1131px -212px; + background-position: -318px -1025px; width: 105px; height: 105px; } .Mount_Body_Gryphon-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -1131px -106px; + background-position: -1627px -742px; width: 105px; height: 105px; } .Mount_Body_Gryphon-White { background-image: url(spritesmith-main-6.png); - background-position: -1131px 0px; + background-position: -1627px -636px; width: 105px; height: 105px; } .Mount_Body_Gryphon-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -954px -953px; + background-position: -1627px -530px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-Base { background-image: url(spritesmith-main-6.png); - background-position: -848px -953px; + background-position: -1627px -424px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -212px -1492px; + background-position: -1627px -318px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -106px -1492px; + background-position: -1627px -212px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-Desert { background-image: url(spritesmith-main-6.png); - background-position: 0px -1492px; + background-position: -1627px -106px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-Golden { background-image: url(spritesmith-main-6.png); - background-position: -1555px -1378px; + background-position: -1627px 0px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-Red { background-image: url(spritesmith-main-6.png); - background-position: -1555px -1272px; + background-position: -1484px -1458px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-Shade { background-image: url(spritesmith-main-6.png); - background-position: -1555px -1166px; + background-position: -1378px -1458px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -1555px -1060px; + background-position: -1521px -530px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-White { background-image: url(spritesmith-main-6.png); - background-position: -1555px -954px; + background-position: -1203px -954px; width: 105px; height: 105px; } .Mount_Body_Hedgehog-Zombie { background-image: url(spritesmith-main-6.png); - background-position: -1555px -848px; + background-position: -1203px -848px; width: 105px; height: 105px; } .Mount_Body_Horse-Base { background-image: url(spritesmith-main-6.png); - background-position: -1555px -742px; + background-position: -1203px -742px; width: 105px; height: 105px; } .Mount_Body_Horse-CottonCandyBlue { background-image: url(spritesmith-main-6.png); - background-position: -318px -1386px; + background-position: -1203px -636px; width: 105px; height: 105px; } .Mount_Body_Horse-CottonCandyPink { background-image: url(spritesmith-main-6.png); - background-position: -954px -1068px; + background-position: -1203px -530px; width: 105px; height: 105px; } .Mount_Body_Horse-Desert { background-image: url(spritesmith-main-6.png); - background-position: -848px -1068px; + background-position: -1203px -424px; width: 105px; height: 105px; } .Mount_Body_Horse-Golden { background-image: url(spritesmith-main-6.png); - background-position: -742px -1068px; + background-position: -1203px -318px; width: 105px; height: 105px; } .Mount_Body_Horse-Red { background-image: url(spritesmith-main-6.png); - background-position: -636px -1068px; + background-position: -1203px -212px; width: 105px; height: 105px; } .Mount_Body_Horse-Shade { background-image: url(spritesmith-main-6.png); - background-position: -530px -1068px; + background-position: -1203px -106px; width: 105px; height: 105px; } .Mount_Body_Horse-Skeleton { background-image: url(spritesmith-main-6.png); - background-position: -424px -1068px; - width: 105px; - height: 105px; -} -.Mount_Body_Horse-White { - background-image: url(spritesmith-main-6.png); - background-position: -318px -1068px; - width: 105px; - height: 105px; -} -.Mount_Body_Horse-Zombie { - background-image: url(spritesmith-main-6.png); - background-position: -212px -1068px; - width: 105px; - height: 105px; -} -.Mount_Body_JackOLantern-Base { - background-image: url(spritesmith-main-6.png); - background-position: -1661px -742px; - width: 90px; - height: 105px; -} -.Mount_Body_LionCub-Base { - background-image: url(spritesmith-main-6.png); - background-position: -106px -1068px; - width: 105px; - height: 105px; -} -.Mount_Body_LionCub-CottonCandyBlue { - background-image: url(spritesmith-main-6.png); - background-position: 0px -1068px; + background-position: -1203px 0px; width: 105px; height: 105px; } diff --git a/common/dist/sprites/spritesmith-main-6.png b/common/dist/sprites/spritesmith-main-6.png index 1304ba83ea..6ff4d0eb24 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 93d8d60249..9dafac8198 100644 --- a/common/dist/sprites/spritesmith-main-7.css +++ b/common/dist/sprites/spritesmith-main-7.css @@ -1,1368 +1,1386 @@ -.Mount_Body_LionCub-CottonCandyPink { +.Mount_Body_Horse-White { background-image: url(spritesmith-main-7.png); - background-position: -1240px -106px; + background-position: -106px -1634px; width: 105px; height: 105px; } -.Mount_Body_LionCub-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -1240px -530px; - width: 105px; - height: 105px; -} -.Mount_Body_LionCub-Ethereal { +.Mount_Body_Horse-Zombie { background-image: url(spritesmith-main-7.png); background-position: -1240px -636px; width: 105px; height: 105px; } -.Mount_Body_LionCub-Golden { +.Mount_Body_JackOLantern-Base { background-image: url(spritesmith-main-7.png); - background-position: -1240px -742px; - width: 105px; - height: 105px; -} -.Mount_Body_LionCub-Peppermint { - background-image: url(spritesmith-main-7.png); - background-position: -954px -1134px; - width: 105px; - height: 105px; -} -.Mount_Body_LionCub-Red { - background-image: url(spritesmith-main-7.png); - background-position: -1060px -1134px; - width: 105px; - height: 105px; -} -.Mount_Body_LionCub-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -1240px 0px; - width: 105px; - height: 105px; -} -.Mount_Body_LionCub-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -378px -680px; - width: 111px; - height: 105px; -} -.Mount_Body_LionCub-Spooky { - background-image: url(spritesmith-main-7.png); - background-position: -1240px -212px; - width: 105px; - height: 105px; -} -.Mount_Body_LionCub-White { - background-image: url(spritesmith-main-7.png); - background-position: -1240px -318px; - width: 105px; - height: 105px; -} -.Mount_Body_LionCub-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -1240px -424px; - width: 105px; - height: 105px; -} -.Mount_Body_Mammoth-Base { - background-image: url(spritesmith-main-7.png); - background-position: -272px -680px; - width: 105px; - height: 123px; -} -.Mount_Body_MantisShrimp-Base { - background-image: url(spritesmith-main-7.png); - background-position: -490px -680px; - width: 108px; - height: 105px; -} -.Mount_Body_Monkey-Base { - background-image: url(spritesmith-main-7.png); - background-position: -954px -1452px; - width: 105px; - height: 105px; -} -.Mount_Body_Monkey-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -1060px -1452px; - width: 105px; - height: 105px; -} -.Mount_Body_Monkey-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -1166px -1452px; - width: 105px; - height: 105px; -} -.Mount_Body_Monkey-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -1272px -1452px; - width: 105px; - height: 105px; -} -.Mount_Body_Monkey-Golden { - background-image: url(spritesmith-main-7.png); - background-position: -1378px -1452px; - width: 105px; - height: 105px; -} -.Mount_Body_Monkey-Red { - background-image: url(spritesmith-main-7.png); - background-position: -1558px 0px; - width: 105px; - height: 105px; -} -.Mount_Body_Monkey-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -1558px -106px; - width: 105px; - height: 105px; -} -.Mount_Body_Monkey-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -1558px -212px; - width: 105px; - height: 105px; -} -.Mount_Body_Monkey-White { - background-image: url(spritesmith-main-7.png); - background-position: -1558px -318px; - width: 105px; - height: 105px; -} -.Mount_Body_Monkey-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -1558px -424px; - width: 105px; - height: 105px; -} -.Mount_Body_Octopus-Base { - background-image: url(spritesmith-main-7.png); - background-position: -1272px -1558px; - width: 105px; - height: 105px; -} -.Mount_Body_Octopus-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -1378px -1558px; - width: 105px; - height: 105px; -} -.Mount_Body_Octopus-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -1484px -1558px; - width: 105px; - height: 105px; -} -.Mount_Body_Octopus-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -1664px 0px; - width: 105px; - height: 105px; -} -.Mount_Body_Octopus-Golden { - background-image: url(spritesmith-main-7.png); - background-position: -1664px -106px; - width: 105px; - height: 105px; -} -.Mount_Body_Octopus-Red { - background-image: url(spritesmith-main-7.png); - background-position: -1664px -212px; - width: 105px; - height: 105px; -} -.Mount_Body_Octopus-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -1664px -318px; - width: 105px; - height: 105px; -} -.Mount_Body_Octopus-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -1664px -424px; - width: 105px; - height: 105px; -} -.Mount_Body_Octopus-White { - background-image: url(spritesmith-main-7.png); - background-position: -1664px -530px; - width: 105px; - height: 105px; -} -.Mount_Body_Octopus-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -1664px -636px; - width: 105px; - height: 105px; -} -.Mount_Body_Orca-Base { - background-image: url(spritesmith-main-7.png); - background-position: -1664px -742px; - width: 105px; - height: 105px; -} -.Mount_Body_Owl-Base { - background-image: url(spritesmith-main-7.png); - background-position: -1664px -848px; - width: 105px; - height: 105px; -} -.Mount_Body_Owl-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -599px -680px; - width: 105px; - height: 105px; -} -.Mount_Body_Owl-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -705px -680px; - width: 105px; - height: 105px; -} -.Mount_Body_Owl-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -816px 0px; - width: 105px; - height: 105px; -} -.Mount_Body_Owl-Golden { - background-image: url(spritesmith-main-7.png); - background-position: -816px -106px; - width: 105px; - height: 105px; -} -.Mount_Body_Owl-Red { - background-image: url(spritesmith-main-7.png); - background-position: -816px -212px; - width: 105px; - height: 105px; -} -.Mount_Body_Owl-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -816px -318px; - width: 105px; - height: 105px; -} -.Mount_Body_Owl-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -816px -424px; - width: 105px; - height: 105px; -} -.Mount_Body_Owl-White { - background-image: url(spritesmith-main-7.png); - background-position: -816px -530px; - width: 105px; - height: 105px; -} -.Mount_Body_Owl-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -816px -636px; - width: 105px; - height: 105px; -} -.Mount_Body_PandaCub-Base { - background-image: url(spritesmith-main-7.png); - background-position: 0px -816px; - width: 105px; - height: 105px; -} -.Mount_Body_PandaCub-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -106px -816px; - width: 105px; - height: 105px; -} -.Mount_Body_PandaCub-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -212px -816px; - width: 105px; - height: 105px; -} -.Mount_Body_PandaCub-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -318px -816px; - width: 105px; - height: 105px; -} -.Mount_Body_PandaCub-Golden { - background-image: url(spritesmith-main-7.png); - background-position: -424px -816px; - width: 105px; - height: 105px; -} -.Mount_Body_PandaCub-Peppermint { - background-image: url(spritesmith-main-7.png); - background-position: -530px -816px; - width: 105px; - height: 105px; -} -.Mount_Body_PandaCub-Red { - background-image: url(spritesmith-main-7.png); - background-position: -636px -816px; - width: 105px; - height: 105px; -} -.Mount_Body_PandaCub-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -742px -816px; - width: 105px; - height: 105px; -} -.Mount_Body_PandaCub-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -922px 0px; - width: 105px; - height: 105px; -} -.Mount_Body_PandaCub-Spooky { - background-image: url(spritesmith-main-7.png); - background-position: -922px -106px; - width: 105px; - height: 105px; -} -.Mount_Body_PandaCub-White { - background-image: url(spritesmith-main-7.png); - background-position: -922px -212px; - width: 105px; - height: 105px; -} -.Mount_Body_PandaCub-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -922px -318px; - width: 105px; - height: 105px; -} -.Mount_Body_Parrot-Base { - background-image: url(spritesmith-main-7.png); - background-position: -922px -424px; - width: 105px; - height: 105px; -} -.Mount_Body_Parrot-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -922px -530px; - width: 105px; - height: 105px; -} -.Mount_Body_Parrot-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -922px -636px; - width: 105px; - height: 105px; -} -.Mount_Body_Parrot-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -922px -742px; - width: 105px; - height: 105px; -} -.Mount_Body_Parrot-Golden { - background-image: url(spritesmith-main-7.png); - background-position: 0px -922px; - width: 105px; - height: 105px; -} -.Mount_Body_Parrot-Red { - background-image: url(spritesmith-main-7.png); - background-position: -106px -922px; - width: 105px; - height: 105px; -} -.Mount_Body_Parrot-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -212px -922px; - width: 105px; - height: 105px; -} -.Mount_Body_Parrot-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -318px -922px; - width: 105px; - height: 105px; -} -.Mount_Body_Parrot-White { - background-image: url(spritesmith-main-7.png); - background-position: -424px -922px; - width: 105px; - height: 105px; -} -.Mount_Body_Parrot-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -530px -922px; - width: 105px; - height: 105px; -} -.Mount_Body_Penguin-Base { - background-image: url(spritesmith-main-7.png); - background-position: -636px -922px; - width: 105px; - height: 105px; -} -.Mount_Body_Penguin-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -742px -922px; - width: 105px; - height: 105px; -} -.Mount_Body_Penguin-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -848px -922px; - width: 105px; - height: 105px; -} -.Mount_Body_Penguin-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -1028px 0px; - width: 105px; - height: 105px; -} -.Mount_Body_Penguin-Golden { - background-image: url(spritesmith-main-7.png); - background-position: -1028px -106px; - width: 105px; - height: 105px; -} -.Mount_Body_Penguin-Red { - background-image: url(spritesmith-main-7.png); - background-position: -1028px -212px; - width: 105px; - height: 105px; -} -.Mount_Body_Penguin-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -1028px -318px; - width: 105px; - height: 105px; -} -.Mount_Body_Penguin-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -1028px -424px; - width: 105px; - height: 105px; -} -.Mount_Body_Penguin-White { - background-image: url(spritesmith-main-7.png); - background-position: -1028px -530px; - width: 105px; - height: 105px; -} -.Mount_Body_Penguin-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -1028px -636px; - width: 105px; - height: 105px; -} -.Mount_Body_Phoenix-Base { - background-image: url(spritesmith-main-7.png); - background-position: -1028px -742px; - width: 105px; - height: 105px; -} -.Mount_Body_Rat-Base { - background-image: url(spritesmith-main-7.png); - background-position: -1028px -848px; - width: 105px; - height: 105px; -} -.Mount_Body_Rat-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: 0px -1028px; - width: 105px; - height: 105px; -} -.Mount_Body_Rat-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -106px -1028px; - width: 105px; - height: 105px; -} -.Mount_Body_Rat-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -212px -1028px; - width: 105px; - height: 105px; -} -.Mount_Body_Rat-Golden { - background-image: url(spritesmith-main-7.png); - background-position: -318px -1028px; - width: 105px; - height: 105px; -} -.Mount_Body_Rat-Red { - background-image: url(spritesmith-main-7.png); - background-position: -424px -1028px; - width: 105px; - height: 105px; -} -.Mount_Body_Rat-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -530px -1028px; - width: 105px; - height: 105px; -} -.Mount_Body_Rat-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -636px -1028px; - width: 105px; - height: 105px; -} -.Mount_Body_Rat-White { - background-image: url(spritesmith-main-7.png); - background-position: -742px -1028px; - width: 105px; - height: 105px; -} -.Mount_Body_Rat-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -848px -1028px; - width: 105px; - height: 105px; -} -.Mount_Body_Rock-Base { - background-image: url(spritesmith-main-7.png); - background-position: -954px -1028px; - width: 105px; - height: 105px; -} -.Mount_Body_Rock-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -1134px 0px; - width: 105px; - height: 105px; -} -.Mount_Body_Rock-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -1134px -106px; - width: 105px; - height: 105px; -} -.Mount_Body_Rock-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -1134px -212px; - width: 105px; - height: 105px; -} -.Mount_Body_Rock-Golden { - background-image: url(spritesmith-main-7.png); - background-position: -1134px -318px; - width: 105px; - height: 105px; -} -.Mount_Body_Rock-Red { - background-image: url(spritesmith-main-7.png); - background-position: -1134px -424px; - width: 105px; - height: 105px; -} -.Mount_Body_Rock-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -1134px -530px; - width: 105px; - height: 105px; -} -.Mount_Body_Rock-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -1134px -636px; - width: 105px; - height: 105px; -} -.Mount_Body_Rock-White { - background-image: url(spritesmith-main-7.png); - background-position: -1134px -742px; - width: 105px; - height: 105px; -} -.Mount_Body_Rock-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -1134px -848px; - width: 105px; - height: 105px; -} -.Mount_Body_Rooster-Base { - background-image: url(spritesmith-main-7.png); - background-position: -1134px -954px; - width: 105px; - height: 105px; -} -.Mount_Body_Rooster-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: 0px -1134px; - width: 105px; - height: 105px; -} -.Mount_Body_Rooster-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -106px -1134px; - width: 105px; - height: 105px; -} -.Mount_Body_Rooster-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -212px -1134px; - width: 105px; - height: 105px; -} -.Mount_Body_Rooster-Golden { - background-image: url(spritesmith-main-7.png); - background-position: -318px -1134px; - width: 105px; - height: 105px; -} -.Mount_Body_Rooster-Red { - background-image: url(spritesmith-main-7.png); - background-position: -424px -1134px; - width: 105px; - height: 105px; -} -.Mount_Body_Rooster-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -530px -1134px; - width: 105px; - height: 105px; -} -.Mount_Body_Rooster-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -636px -1134px; - width: 105px; - height: 105px; -} -.Mount_Body_Rooster-White { - background-image: url(spritesmith-main-7.png); - background-position: -742px -1134px; - width: 105px; - height: 105px; -} -.Mount_Body_Rooster-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -848px -1134px; - width: 105px; - height: 105px; -} -.Mount_Body_Sabretooth-Base { - background-image: url(spritesmith-main-7.png); - background-position: -272px 0px; - width: 135px; - height: 135px; -} -.Mount_Body_Sabretooth-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -272px -136px; - width: 135px; - height: 135px; -} -.Mount_Body_Sabretooth-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: 0px -272px; - width: 135px; - height: 135px; -} -.Mount_Body_Sabretooth-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -136px -272px; - width: 135px; - height: 135px; -} -.Mount_Body_Sabretooth-Golden { - background-image: url(spritesmith-main-7.png); - background-position: -272px -272px; - width: 135px; - height: 135px; -} -.Mount_Body_Sabretooth-Red { - background-image: url(spritesmith-main-7.png); - background-position: -408px 0px; - width: 135px; - height: 135px; -} -.Mount_Body_Sabretooth-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -408px -136px; - width: 135px; - height: 135px; -} -.Mount_Body_Sabretooth-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -136px 0px; - width: 135px; - height: 135px; -} -.Mount_Body_Sabretooth-White { - background-image: url(spritesmith-main-7.png); - background-position: -408px -272px; - width: 135px; - height: 135px; -} -.Mount_Body_Sabretooth-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: 0px -408px; - width: 135px; - height: 135px; -} -.Mount_Body_Seahorse-Base { - background-image: url(spritesmith-main-7.png); - background-position: -1240px -848px; - width: 105px; - height: 105px; -} -.Mount_Body_Seahorse-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -1240px -954px; - width: 105px; - height: 105px; -} -.Mount_Body_Seahorse-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -1240px -1060px; - width: 105px; - height: 105px; -} -.Mount_Body_Seahorse-Desert { - background-image: url(spritesmith-main-7.png); - background-position: 0px -1240px; - width: 105px; - height: 105px; -} -.Mount_Body_Seahorse-Golden { - background-image: url(spritesmith-main-7.png); - background-position: -106px -1240px; - width: 105px; - height: 105px; -} -.Mount_Body_Seahorse-Red { - background-image: url(spritesmith-main-7.png); - background-position: -212px -1240px; - width: 105px; - height: 105px; -} -.Mount_Body_Seahorse-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -318px -1240px; - width: 105px; - height: 105px; -} -.Mount_Body_Seahorse-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -424px -1240px; - width: 105px; - height: 105px; -} -.Mount_Body_Seahorse-White { - background-image: url(spritesmith-main-7.png); - background-position: -530px -1240px; - width: 105px; - height: 105px; -} -.Mount_Body_Seahorse-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -636px -1240px; - width: 105px; - height: 105px; -} -.Mount_Body_Sheep-Base { - background-image: url(spritesmith-main-7.png); - background-position: -742px -1240px; - width: 105px; - height: 105px; -} -.Mount_Body_Sheep-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -848px -1240px; - width: 105px; - height: 105px; -} -.Mount_Body_Sheep-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -954px -1240px; - width: 105px; - height: 105px; -} -.Mount_Body_Sheep-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -1060px -1240px; - width: 105px; - height: 105px; -} -.Mount_Body_Sheep-Golden { - background-image: url(spritesmith-main-7.png); - background-position: -1166px -1240px; - width: 105px; - height: 105px; -} -.Mount_Body_Sheep-Red { - background-image: url(spritesmith-main-7.png); - background-position: -1346px 0px; - width: 105px; - height: 105px; -} -.Mount_Body_Sheep-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -1346px -106px; - width: 105px; - height: 105px; -} -.Mount_Body_Sheep-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -1346px -212px; - width: 105px; - height: 105px; -} -.Mount_Body_Sheep-White { - background-image: url(spritesmith-main-7.png); - background-position: -1346px -318px; - width: 105px; - height: 105px; -} -.Mount_Body_Sheep-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -1346px -424px; - width: 105px; - height: 105px; -} -.Mount_Body_Slime-Base { - background-image: url(spritesmith-main-7.png); - background-position: -1346px -530px; - width: 105px; - height: 105px; -} -.Mount_Body_Slime-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -1346px -636px; - width: 105px; - height: 105px; -} -.Mount_Body_Slime-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -1346px -742px; - width: 105px; - height: 105px; -} -.Mount_Body_Slime-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -1346px -848px; - width: 105px; - height: 105px; -} -.Mount_Body_Slime-Golden { - background-image: url(spritesmith-main-7.png); - background-position: -1346px -954px; - width: 105px; - height: 105px; -} -.Mount_Body_Slime-Red { - background-image: url(spritesmith-main-7.png); - background-position: -1346px -1060px; - width: 105px; - height: 105px; -} -.Mount_Body_Slime-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -1346px -1166px; - width: 105px; - height: 105px; -} -.Mount_Body_Slime-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: 0px -1346px; - width: 105px; - height: 105px; -} -.Mount_Body_Slime-White { - background-image: url(spritesmith-main-7.png); - background-position: -106px -1346px; - width: 105px; - height: 105px; -} -.Mount_Body_Slime-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -212px -1346px; - width: 105px; - height: 105px; -} -.Mount_Body_Snake-Base { - background-image: url(spritesmith-main-7.png); - background-position: -318px -1346px; - width: 105px; - height: 105px; -} -.Mount_Body_Snake-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -424px -1346px; - width: 105px; - height: 105px; -} -.Mount_Body_Snake-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -530px -1346px; - width: 105px; - height: 105px; -} -.Mount_Body_Snake-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -636px -1346px; - width: 105px; - height: 105px; -} -.Mount_Body_Snake-Golden { - background-image: url(spritesmith-main-7.png); - background-position: -742px -1346px; - width: 105px; - height: 105px; -} -.Mount_Body_Snake-Red { - background-image: url(spritesmith-main-7.png); - background-position: -848px -1346px; - width: 105px; - height: 105px; -} -.Mount_Body_Snake-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -954px -1346px; - width: 105px; - height: 105px; -} -.Mount_Body_Snake-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -1060px -1346px; - width: 105px; - height: 105px; -} -.Mount_Body_Snake-White { - background-image: url(spritesmith-main-7.png); - background-position: -1166px -1346px; - width: 105px; - height: 105px; -} -.Mount_Body_Snake-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -1272px -1346px; - width: 105px; - height: 105px; -} -.Mount_Body_Spider-Base { - background-image: url(spritesmith-main-7.png); - background-position: -1452px 0px; - width: 105px; - height: 105px; -} -.Mount_Body_Spider-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -1452px -106px; - width: 105px; - height: 105px; -} -.Mount_Body_Spider-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -1452px -212px; - width: 105px; - height: 105px; -} -.Mount_Body_Spider-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -1452px -318px; - width: 105px; - height: 105px; -} -.Mount_Body_Spider-Golden { - background-image: url(spritesmith-main-7.png); - background-position: -1452px -424px; - width: 105px; - height: 105px; -} -.Mount_Body_Spider-Red { - background-image: url(spritesmith-main-7.png); - background-position: -1452px -530px; - width: 105px; - height: 105px; -} -.Mount_Body_Spider-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -1452px -636px; - width: 105px; - height: 105px; -} -.Mount_Body_Spider-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -1452px -742px; - width: 105px; - height: 105px; -} -.Mount_Body_Spider-White { - background-image: url(spritesmith-main-7.png); - background-position: -1452px -848px; - width: 105px; - height: 105px; -} -.Mount_Body_Spider-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -1452px -954px; - width: 105px; - height: 105px; -} -.Mount_Body_TRex-Base { - background-image: url(spritesmith-main-7.png); - background-position: -136px -408px; - width: 135px; - height: 135px; -} -.Mount_Body_TRex-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -272px -408px; - width: 135px; - height: 135px; -} -.Mount_Body_TRex-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -408px -408px; - width: 135px; - height: 135px; -} -.Mount_Body_TRex-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -544px 0px; - width: 135px; - height: 135px; -} -.Mount_Body_TRex-Golden { - background-image: url(spritesmith-main-7.png); - background-position: 0px 0px; - width: 135px; - height: 135px; -} -.Mount_Body_TRex-Red { - background-image: url(spritesmith-main-7.png); - background-position: -544px -272px; - width: 135px; - height: 135px; -} -.Mount_Body_TRex-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -544px -408px; - width: 135px; - height: 135px; -} -.Mount_Body_TRex-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: 0px -544px; - width: 135px; - height: 135px; -} -.Mount_Body_TRex-White { - background-image: url(spritesmith-main-7.png); - background-position: -136px -544px; - width: 135px; - height: 135px; -} -.Mount_Body_TRex-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -272px -544px; - width: 135px; - height: 135px; -} -.Mount_Body_TigerCub-Base { - background-image: url(spritesmith-main-7.png); - background-position: -1452px -1060px; - width: 105px; - height: 105px; -} -.Mount_Body_TigerCub-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -1452px -1166px; - width: 105px; - height: 105px; -} -.Mount_Body_TigerCub-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -1452px -1272px; - width: 105px; - height: 105px; -} -.Mount_Body_TigerCub-Desert { - background-image: url(spritesmith-main-7.png); - background-position: 0px -1452px; - width: 105px; - height: 105px; -} -.Mount_Body_TigerCub-Golden { - background-image: url(spritesmith-main-7.png); - background-position: -106px -1452px; - width: 105px; - height: 105px; -} -.Mount_Body_TigerCub-Peppermint { - background-image: url(spritesmith-main-7.png); - background-position: -212px -1452px; - width: 105px; - height: 105px; -} -.Mount_Body_TigerCub-Red { - background-image: url(spritesmith-main-7.png); - background-position: -318px -1452px; - width: 105px; - height: 105px; -} -.Mount_Body_TigerCub-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -424px -1452px; - width: 105px; - height: 105px; -} -.Mount_Body_TigerCub-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -530px -1452px; - width: 105px; - height: 105px; -} -.Mount_Body_TigerCub-Spooky { - background-image: url(spritesmith-main-7.png); - background-position: -636px -1452px; - width: 105px; - height: 105px; -} -.Mount_Body_TigerCub-White { - background-image: url(spritesmith-main-7.png); - background-position: -742px -1452px; - width: 105px; - height: 105px; -} -.Mount_Body_TigerCub-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -848px -1452px; - width: 105px; - height: 105px; -} -.Mount_Body_Turkey-Base { - background-image: url(spritesmith-main-7.png); - background-position: -1558px -530px; - width: 105px; - height: 105px; -} -.Mount_Body_Unicorn-Base { - background-image: url(spritesmith-main-7.png); - background-position: -1558px -636px; - width: 105px; - height: 105px; -} -.Mount_Body_Unicorn-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -1558px -742px; - width: 105px; - height: 105px; -} -.Mount_Body_Unicorn-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -1558px -848px; - width: 105px; - height: 105px; -} -.Mount_Body_Unicorn-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -1558px -954px; - width: 105px; - height: 105px; -} -.Mount_Body_Unicorn-Golden { - background-image: url(spritesmith-main-7.png); - background-position: -1558px -1060px; - width: 105px; - height: 105px; -} -.Mount_Body_Unicorn-Red { - background-image: url(spritesmith-main-7.png); - background-position: -1558px -1166px; - width: 105px; - height: 105px; -} -.Mount_Body_Unicorn-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -1558px -1272px; - width: 105px; - height: 105px; -} -.Mount_Body_Unicorn-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -1558px -1378px; - width: 105px; - height: 105px; -} -.Mount_Body_Unicorn-White { - background-image: url(spritesmith-main-7.png); - background-position: 0px -1558px; - width: 105px; - height: 105px; -} -.Mount_Body_Unicorn-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -106px -1558px; - width: 105px; - height: 105px; -} -.Mount_Body_Whale-Base { - background-image: url(spritesmith-main-7.png); - background-position: -212px -1558px; - width: 105px; - height: 105px; -} -.Mount_Body_Whale-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -318px -1558px; - width: 105px; - height: 105px; -} -.Mount_Body_Whale-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -424px -1558px; - width: 105px; - height: 105px; -} -.Mount_Body_Whale-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -530px -1558px; - width: 105px; - height: 105px; -} -.Mount_Body_Whale-Golden { - background-image: url(spritesmith-main-7.png); - background-position: -636px -1558px; - width: 105px; - height: 105px; -} -.Mount_Body_Whale-Red { - background-image: url(spritesmith-main-7.png); - background-position: -742px -1558px; - width: 105px; - height: 105px; -} -.Mount_Body_Whale-Shade { - background-image: url(spritesmith-main-7.png); - background-position: -848px -1558px; - width: 105px; - height: 105px; -} -.Mount_Body_Whale-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -954px -1558px; - width: 105px; - height: 105px; -} -.Mount_Body_Whale-White { - background-image: url(spritesmith-main-7.png); - background-position: -1060px -1558px; - width: 105px; - height: 105px; -} -.Mount_Body_Whale-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -1166px -1558px; - width: 105px; - height: 105px; -} -.Mount_Body_Wolf-Base { - background-image: url(spritesmith-main-7.png); - background-position: -408px -544px; - width: 135px; - height: 135px; -} -.Mount_Body_Wolf-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -544px -544px; - width: 135px; - height: 135px; -} -.Mount_Body_Wolf-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -680px 0px; - width: 135px; - height: 135px; -} -.Mount_Body_Wolf-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -680px -136px; - width: 135px; - height: 135px; -} -.Mount_Body_Wolf-Golden { - background-image: url(spritesmith-main-7.png); - background-position: -680px -272px; - width: 135px; - height: 135px; -} -.Mount_Body_Wolf-Peppermint { - background-image: url(spritesmith-main-7.png); - background-position: -680px -408px; - width: 135px; - height: 135px; -} -.Mount_Body_Wolf-Red { - background-image: url(spritesmith-main-7.png); - background-position: -680px -544px; - width: 135px; - height: 135px; -} -.Mount_Body_Wolf-Shade { - background-image: url(spritesmith-main-7.png); - background-position: 0px -680px; - width: 135px; - height: 135px; -} -.Mount_Body_Wolf-Skeleton { - background-image: url(spritesmith-main-7.png); - background-position: -544px -136px; - width: 135px; - height: 135px; -} -.Mount_Body_Wolf-Spooky { - background-image: url(spritesmith-main-7.png); - background-position: -136px -136px; - width: 135px; - height: 135px; -} -.Mount_Body_Wolf-White { - background-image: url(spritesmith-main-7.png); - background-position: 0px -136px; - width: 135px; - height: 135px; -} -.Mount_Body_Wolf-Zombie { - background-image: url(spritesmith-main-7.png); - background-position: -136px -680px; - width: 135px; - height: 135px; -} -.Mount_Head_BearCub-Base { - background-image: url(spritesmith-main-7.png); - background-position: -1664px -954px; - width: 105px; - height: 105px; -} -.Mount_Head_BearCub-CottonCandyBlue { - background-image: url(spritesmith-main-7.png); - background-position: -1664px -1060px; - width: 105px; - height: 105px; -} -.Mount_Head_BearCub-CottonCandyPink { - background-image: url(spritesmith-main-7.png); - background-position: -1664px -1166px; - width: 105px; - height: 105px; -} -.Mount_Head_BearCub-Desert { - background-image: url(spritesmith-main-7.png); - background-position: -1664px -1272px; - width: 105px; + background-position: -212px -1634px; + width: 90px; height: 105px; } -.Mount_Head_BearCub-Golden { +.Mount_Body_LionCub-Base { background-image: url(spritesmith-main-7.png); - background-position: -1664px -1378px; + background-position: 0px -1634px; width: 105px; height: 105px; } -.Mount_Head_BearCub-Peppermint { +.Mount_Body_LionCub-CottonCandyBlue { background-image: url(spritesmith-main-7.png); background-position: -1664px -1484px; width: 105px; height: 105px; } +.Mount_Body_LionCub-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -1664px -1378px; + width: 105px; + height: 105px; +} +.Mount_Body_LionCub-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -1664px -1272px; + width: 105px; + height: 105px; +} +.Mount_Body_LionCub-Ethereal { + background-image: url(spritesmith-main-7.png); + background-position: -530px -1528px; + width: 105px; + height: 105px; +} +.Mount_Body_LionCub-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -424px -1528px; + width: 105px; + height: 105px; +} +.Mount_Body_LionCub-Peppermint { + background-image: url(spritesmith-main-7.png); + background-position: -318px -1528px; + width: 105px; + height: 105px; +} +.Mount_Body_LionCub-Red { + background-image: url(spritesmith-main-7.png); + background-position: -212px -1528px; + width: 105px; + height: 105px; +} +.Mount_Body_LionCub-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -106px -1528px; + width: 105px; + height: 105px; +} +.Mount_Body_LionCub-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -680px -260px; + width: 111px; + height: 105px; +} +.Mount_Body_LionCub-Spooky { + background-image: url(spritesmith-main-7.png); + background-position: -1558px -1378px; + width: 105px; + height: 105px; +} +.Mount_Body_LionCub-White { + background-image: url(spritesmith-main-7.png); + background-position: -1558px -1272px; + width: 105px; + height: 105px; +} +.Mount_Body_LionCub-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -1558px -1166px; + width: 105px; + height: 105px; +} +.Mount_Body_Mammoth-Base { + background-image: url(spritesmith-main-7.png); + background-position: -680px -136px; + width: 105px; + height: 123px; +} +.Mount_Body_MantisShrimp-Base { + background-image: url(spritesmith-main-7.png); + background-position: -680px -366px; + width: 108px; + height: 105px; +} +.Mount_Body_Monkey-Base { + background-image: url(spritesmith-main-7.png); + background-position: 0px -1210px; + width: 105px; + height: 105px; +} +.Mount_Body_Monkey-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -1240px -1060px; + width: 105px; + height: 105px; +} +.Mount_Body_Monkey-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -1240px -954px; + width: 105px; + height: 105px; +} +.Mount_Body_Monkey-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -1240px -848px; + width: 105px; + height: 105px; +} +.Mount_Body_Monkey-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -1240px -742px; + width: 105px; + height: 105px; +} +.Mount_Body_Monkey-Red { + background-image: url(spritesmith-main-7.png); + background-position: -1240px -530px; + width: 105px; + height: 105px; +} +.Mount_Body_Monkey-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -1240px -424px; + width: 105px; + height: 105px; +} +.Mount_Body_Monkey-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -1240px -318px; + width: 105px; + height: 105px; +} +.Mount_Body_Monkey-White { + background-image: url(spritesmith-main-7.png); + background-position: -106px -1210px; + width: 105px; + height: 105px; +} +.Mount_Body_Monkey-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -848px -1210px; + width: 105px; + height: 105px; +} +.Mount_Body_Octopus-Base { + background-image: url(spritesmith-main-7.png); + background-position: -1558px -1060px; + width: 105px; + height: 105px; +} +.Mount_Body_Octopus-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: 0px -1528px; + width: 105px; + height: 105px; +} +.Mount_Body_Octopus-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: 0px -680px; + width: 105px; + height: 105px; +} +.Mount_Body_Octopus-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -106px -680px; + width: 105px; + height: 105px; +} +.Mount_Body_Octopus-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -212px -680px; + width: 105px; + height: 105px; +} +.Mount_Body_Octopus-Red { + background-image: url(spritesmith-main-7.png); + background-position: -318px -680px; + width: 105px; + height: 105px; +} +.Mount_Body_Octopus-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -424px -680px; + width: 105px; + height: 105px; +} +.Mount_Body_Octopus-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -530px -680px; + width: 105px; + height: 105px; +} +.Mount_Body_Octopus-White { + background-image: url(spritesmith-main-7.png); + background-position: -636px -680px; + width: 105px; + height: 105px; +} +.Mount_Body_Octopus-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -816px 0px; + width: 105px; + height: 105px; +} +.Mount_Body_Orca-Base { + background-image: url(spritesmith-main-7.png); + background-position: -816px -106px; + width: 105px; + height: 105px; +} +.Mount_Body_Owl-Base { + background-image: url(spritesmith-main-7.png); + background-position: -816px -212px; + width: 105px; + height: 105px; +} +.Mount_Body_Owl-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -816px -318px; + width: 105px; + height: 105px; +} +.Mount_Body_Owl-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -816px -424px; + width: 105px; + height: 105px; +} +.Mount_Body_Owl-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -816px -530px; + width: 105px; + height: 105px; +} +.Mount_Body_Owl-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -816px -636px; + width: 105px; + height: 105px; +} +.Mount_Body_Owl-Red { + background-image: url(spritesmith-main-7.png); + background-position: 0px -786px; + width: 105px; + height: 105px; +} +.Mount_Body_Owl-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -106px -786px; + width: 105px; + height: 105px; +} +.Mount_Body_Owl-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -212px -786px; + width: 105px; + height: 105px; +} +.Mount_Body_Owl-White { + background-image: url(spritesmith-main-7.png); + background-position: -318px -786px; + width: 105px; + height: 105px; +} +.Mount_Body_Owl-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -424px -786px; + width: 105px; + height: 105px; +} +.Mount_Body_PandaCub-Base { + background-image: url(spritesmith-main-7.png); + background-position: -530px -786px; + width: 105px; + height: 105px; +} +.Mount_Body_PandaCub-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -636px -786px; + width: 105px; + height: 105px; +} +.Mount_Body_PandaCub-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -742px -786px; + width: 105px; + height: 105px; +} +.Mount_Body_PandaCub-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -922px 0px; + width: 105px; + height: 105px; +} +.Mount_Body_PandaCub-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -922px -106px; + width: 105px; + height: 105px; +} +.Mount_Body_PandaCub-Peppermint { + background-image: url(spritesmith-main-7.png); + background-position: -922px -212px; + width: 105px; + height: 105px; +} +.Mount_Body_PandaCub-Red { + background-image: url(spritesmith-main-7.png); + background-position: -922px -318px; + width: 105px; + height: 105px; +} +.Mount_Body_PandaCub-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -922px -424px; + width: 105px; + height: 105px; +} +.Mount_Body_PandaCub-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -922px -530px; + width: 105px; + height: 105px; +} +.Mount_Body_PandaCub-Spooky { + background-image: url(spritesmith-main-7.png); + background-position: -922px -636px; + width: 105px; + height: 105px; +} +.Mount_Body_PandaCub-White { + background-image: url(spritesmith-main-7.png); + background-position: -922px -742px; + width: 105px; + height: 105px; +} +.Mount_Body_PandaCub-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: 0px -892px; + width: 105px; + height: 105px; +} +.Mount_Body_Parrot-Base { + background-image: url(spritesmith-main-7.png); + background-position: -106px -892px; + width: 105px; + height: 105px; +} +.Mount_Body_Parrot-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -212px -892px; + width: 105px; + height: 105px; +} +.Mount_Body_Parrot-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -318px -892px; + width: 105px; + height: 105px; +} +.Mount_Body_Parrot-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -424px -892px; + width: 105px; + height: 105px; +} +.Mount_Body_Parrot-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -530px -892px; + width: 105px; + height: 105px; +} +.Mount_Body_Parrot-Red { + background-image: url(spritesmith-main-7.png); + background-position: -636px -892px; + width: 105px; + height: 105px; +} +.Mount_Body_Parrot-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -742px -892px; + width: 105px; + height: 105px; +} +.Mount_Body_Parrot-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -848px -892px; + width: 105px; + height: 105px; +} +.Mount_Body_Parrot-White { + background-image: url(spritesmith-main-7.png); + background-position: -1028px 0px; + width: 105px; + height: 105px; +} +.Mount_Body_Parrot-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -1028px -106px; + width: 105px; + height: 105px; +} +.Mount_Body_Penguin-Base { + background-image: url(spritesmith-main-7.png); + background-position: -1028px -212px; + width: 105px; + height: 105px; +} +.Mount_Body_Penguin-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -1028px -318px; + width: 105px; + height: 105px; +} +.Mount_Body_Penguin-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -1028px -424px; + width: 105px; + height: 105px; +} +.Mount_Body_Penguin-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -1028px -530px; + width: 105px; + height: 105px; +} +.Mount_Body_Penguin-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -1028px -636px; + width: 105px; + height: 105px; +} +.Mount_Body_Penguin-Red { + background-image: url(spritesmith-main-7.png); + background-position: -1028px -742px; + width: 105px; + height: 105px; +} +.Mount_Body_Penguin-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -1028px -848px; + width: 105px; + height: 105px; +} +.Mount_Body_Penguin-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: 0px -998px; + width: 105px; + height: 105px; +} +.Mount_Body_Penguin-White { + background-image: url(spritesmith-main-7.png); + background-position: -106px -998px; + width: 105px; + height: 105px; +} +.Mount_Body_Penguin-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -212px -998px; + width: 105px; + height: 105px; +} +.Mount_Body_Phoenix-Base { + background-image: url(spritesmith-main-7.png); + background-position: -318px -998px; + width: 105px; + height: 105px; +} +.Mount_Body_Rat-Base { + background-image: url(spritesmith-main-7.png); + background-position: -424px -998px; + width: 105px; + height: 105px; +} +.Mount_Body_Rat-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -530px -998px; + width: 105px; + height: 105px; +} +.Mount_Body_Rat-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -636px -998px; + width: 105px; + height: 105px; +} +.Mount_Body_Rat-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -742px -998px; + width: 105px; + height: 105px; +} +.Mount_Body_Rat-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -848px -998px; + width: 105px; + height: 105px; +} +.Mount_Body_Rat-Red { + background-image: url(spritesmith-main-7.png); + background-position: -954px -998px; + width: 105px; + height: 105px; +} +.Mount_Body_Rat-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -1134px 0px; + width: 105px; + height: 105px; +} +.Mount_Body_Rat-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -1134px -106px; + width: 105px; + height: 105px; +} +.Mount_Body_Rat-White { + background-image: url(spritesmith-main-7.png); + background-position: -1134px -212px; + width: 105px; + height: 105px; +} +.Mount_Body_Rat-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -1134px -318px; + width: 105px; + height: 105px; +} +.Mount_Body_Rock-Base { + background-image: url(spritesmith-main-7.png); + background-position: -1134px -424px; + width: 105px; + height: 105px; +} +.Mount_Body_Rock-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -1134px -530px; + width: 105px; + height: 105px; +} +.Mount_Body_Rock-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -1134px -636px; + width: 105px; + height: 105px; +} +.Mount_Body_Rock-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -1134px -742px; + width: 105px; + height: 105px; +} +.Mount_Body_Rock-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -1134px -848px; + width: 105px; + height: 105px; +} +.Mount_Body_Rock-Red { + background-image: url(spritesmith-main-7.png); + background-position: -1134px -954px; + width: 105px; + height: 105px; +} +.Mount_Body_Rock-Shade { + background-image: url(spritesmith-main-7.png); + background-position: 0px -1104px; + width: 105px; + height: 105px; +} +.Mount_Body_Rock-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -106px -1104px; + width: 105px; + height: 105px; +} +.Mount_Body_Rock-White { + background-image: url(spritesmith-main-7.png); + background-position: -212px -1104px; + width: 105px; + height: 105px; +} +.Mount_Body_Rock-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -318px -1104px; + width: 105px; + height: 105px; +} +.Mount_Body_Rooster-Base { + background-image: url(spritesmith-main-7.png); + background-position: -424px -1104px; + width: 105px; + height: 105px; +} +.Mount_Body_Rooster-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -530px -1104px; + width: 105px; + height: 105px; +} +.Mount_Body_Rooster-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -636px -1104px; + width: 105px; + height: 105px; +} +.Mount_Body_Rooster-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -742px -1104px; + width: 105px; + height: 105px; +} +.Mount_Body_Rooster-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -848px -1104px; + width: 105px; + height: 105px; +} +.Mount_Body_Rooster-Red { + background-image: url(spritesmith-main-7.png); + background-position: -954px -1104px; + width: 105px; + height: 105px; +} +.Mount_Body_Rooster-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -1060px -1104px; + width: 105px; + height: 105px; +} +.Mount_Body_Rooster-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -1240px 0px; + width: 105px; + height: 105px; +} +.Mount_Body_Rooster-White { + background-image: url(spritesmith-main-7.png); + background-position: -1240px -106px; + width: 105px; + height: 105px; +} +.Mount_Body_Rooster-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -1240px -212px; + width: 105px; + height: 105px; +} +.Mount_Body_Sabretooth-Base { + background-image: url(spritesmith-main-7.png); + background-position: -680px 0px; + width: 135px; + height: 135px; +} +.Mount_Body_Sabretooth-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -544px -544px; + width: 135px; + height: 135px; +} +.Mount_Body_Sabretooth-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -408px -544px; + width: 135px; + height: 135px; +} +.Mount_Body_Sabretooth-Desert { + background-image: url(spritesmith-main-7.png); + background-position: 0px 0px; + width: 135px; + height: 135px; +} +.Mount_Body_Sabretooth-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -272px -544px; + width: 135px; + height: 135px; +} +.Mount_Body_Sabretooth-Red { + background-image: url(spritesmith-main-7.png); + background-position: -136px -544px; + width: 135px; + height: 135px; +} +.Mount_Body_Sabretooth-Shade { + background-image: url(spritesmith-main-7.png); + background-position: 0px -544px; + width: 135px; + height: 135px; +} +.Mount_Body_Sabretooth-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -544px -408px; + width: 135px; + height: 135px; +} +.Mount_Body_Sabretooth-White { + background-image: url(spritesmith-main-7.png); + background-position: -544px -272px; + width: 135px; + height: 135px; +} +.Mount_Body_Sabretooth-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -544px -136px; + width: 135px; + height: 135px; +} +.Mount_Body_Seahorse-Base { + background-image: url(spritesmith-main-7.png); + background-position: -212px -1210px; + width: 105px; + height: 105px; +} +.Mount_Body_Seahorse-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -318px -1210px; + width: 105px; + height: 105px; +} +.Mount_Body_Seahorse-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -424px -1210px; + width: 105px; + height: 105px; +} +.Mount_Body_Seahorse-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -530px -1210px; + width: 105px; + height: 105px; +} +.Mount_Body_Seahorse-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -636px -1210px; + width: 105px; + height: 105px; +} +.Mount_Body_Seahorse-Red { + background-image: url(spritesmith-main-7.png); + background-position: -742px -1210px; + width: 105px; + height: 105px; +} +.Mount_Body_Seahorse-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -680px -472px; + width: 105px; + height: 105px; +} +.Mount_Body_Seahorse-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -954px -1210px; + width: 105px; + height: 105px; +} +.Mount_Body_Seahorse-White { + background-image: url(spritesmith-main-7.png); + background-position: -1060px -1210px; + width: 105px; + height: 105px; +} +.Mount_Body_Seahorse-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -1166px -1210px; + width: 105px; + height: 105px; +} +.Mount_Body_Sheep-Base { + background-image: url(spritesmith-main-7.png); + background-position: -1346px 0px; + width: 105px; + height: 105px; +} +.Mount_Body_Sheep-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -1346px -106px; + width: 105px; + height: 105px; +} +.Mount_Body_Sheep-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -1346px -212px; + width: 105px; + height: 105px; +} +.Mount_Body_Sheep-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -1346px -318px; + width: 105px; + height: 105px; +} +.Mount_Body_Sheep-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -1346px -424px; + width: 105px; + height: 105px; +} +.Mount_Body_Sheep-Red { + background-image: url(spritesmith-main-7.png); + background-position: -1346px -530px; + width: 105px; + height: 105px; +} +.Mount_Body_Sheep-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -1346px -636px; + width: 105px; + height: 105px; +} +.Mount_Body_Sheep-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -1346px -742px; + width: 105px; + height: 105px; +} +.Mount_Body_Sheep-White { + background-image: url(spritesmith-main-7.png); + background-position: -1346px -848px; + width: 105px; + height: 105px; +} +.Mount_Body_Sheep-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -1346px -954px; + width: 105px; + height: 105px; +} +.Mount_Body_Slime-Base { + background-image: url(spritesmith-main-7.png); + background-position: -1346px -1060px; + width: 105px; + height: 105px; +} +.Mount_Body_Slime-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -1346px -1166px; + width: 105px; + height: 105px; +} +.Mount_Body_Slime-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: 0px -1316px; + width: 105px; + height: 105px; +} +.Mount_Body_Slime-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -106px -1316px; + width: 105px; + height: 105px; +} +.Mount_Body_Slime-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -212px -1316px; + width: 105px; + height: 105px; +} +.Mount_Body_Slime-Red { + background-image: url(spritesmith-main-7.png); + background-position: -318px -1316px; + width: 105px; + height: 105px; +} +.Mount_Body_Slime-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -424px -1316px; + width: 105px; + height: 105px; +} +.Mount_Body_Slime-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -530px -1316px; + width: 105px; + height: 105px; +} +.Mount_Body_Slime-White { + background-image: url(spritesmith-main-7.png); + background-position: -636px -1316px; + width: 105px; + height: 105px; +} +.Mount_Body_Slime-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -742px -1316px; + width: 105px; + height: 105px; +} +.Mount_Body_Snail-Base { + background-image: url(spritesmith-main-7.png); + background-position: -848px -1316px; + width: 105px; + height: 105px; +} +.Mount_Body_Snail-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -954px -1316px; + width: 105px; + height: 105px; +} +.Mount_Body_Snail-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -1060px -1316px; + width: 105px; + height: 105px; +} +.Mount_Body_Snail-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -1166px -1316px; + width: 105px; + height: 105px; +} +.Mount_Body_Snail-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -1272px -1316px; + width: 105px; + height: 105px; +} +.Mount_Body_Snail-Red { + background-image: url(spritesmith-main-7.png); + background-position: -1452px 0px; + width: 105px; + height: 105px; +} +.Mount_Body_Snail-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -1452px -106px; + width: 105px; + height: 105px; +} +.Mount_Body_Snail-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -1452px -212px; + width: 105px; + height: 105px; +} +.Mount_Body_Snail-White { + background-image: url(spritesmith-main-7.png); + background-position: -1452px -318px; + width: 105px; + height: 105px; +} +.Mount_Body_Snail-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -1452px -424px; + width: 105px; + height: 105px; +} +.Mount_Body_Snake-Base { + background-image: url(spritesmith-main-7.png); + background-position: -1452px -530px; + width: 105px; + height: 105px; +} +.Mount_Body_Snake-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -1452px -636px; + width: 105px; + height: 105px; +} +.Mount_Body_Snake-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -1452px -742px; + width: 105px; + height: 105px; +} +.Mount_Body_Snake-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -1452px -848px; + width: 105px; + height: 105px; +} +.Mount_Body_Snake-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -1452px -954px; + width: 105px; + height: 105px; +} +.Mount_Body_Snake-Red { + background-image: url(spritesmith-main-7.png); + background-position: -1452px -1060px; + width: 105px; + height: 105px; +} +.Mount_Body_Snake-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -1452px -1166px; + width: 105px; + height: 105px; +} +.Mount_Body_Snake-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -1452px -1272px; + width: 105px; + height: 105px; +} +.Mount_Body_Snake-White { + background-image: url(spritesmith-main-7.png); + background-position: 0px -1422px; + width: 105px; + height: 105px; +} +.Mount_Body_Snake-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -106px -1422px; + width: 105px; + height: 105px; +} +.Mount_Body_Spider-Base { + background-image: url(spritesmith-main-7.png); + background-position: -212px -1422px; + width: 105px; + height: 105px; +} +.Mount_Body_Spider-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -318px -1422px; + width: 105px; + height: 105px; +} +.Mount_Body_Spider-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -424px -1422px; + width: 105px; + height: 105px; +} +.Mount_Body_Spider-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -530px -1422px; + width: 105px; + height: 105px; +} +.Mount_Body_Spider-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -636px -1422px; + width: 105px; + height: 105px; +} +.Mount_Body_Spider-Red { + background-image: url(spritesmith-main-7.png); + background-position: -742px -1422px; + width: 105px; + height: 105px; +} +.Mount_Body_Spider-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -848px -1422px; + width: 105px; + height: 105px; +} +.Mount_Body_Spider-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -954px -1422px; + width: 105px; + height: 105px; +} +.Mount_Body_Spider-White { + background-image: url(spritesmith-main-7.png); + background-position: -1060px -1422px; + width: 105px; + height: 105px; +} +.Mount_Body_Spider-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -1166px -1422px; + width: 105px; + height: 105px; +} +.Mount_Body_TRex-Base { + background-image: url(spritesmith-main-7.png); + background-position: -544px 0px; + width: 135px; + height: 135px; +} +.Mount_Body_TRex-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -408px -408px; + width: 135px; + height: 135px; +} +.Mount_Body_TRex-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -272px -408px; + width: 135px; + height: 135px; +} +.Mount_Body_TRex-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -136px -408px; + width: 135px; + height: 135px; +} +.Mount_Body_TRex-Golden { + background-image: url(spritesmith-main-7.png); + background-position: 0px -408px; + width: 135px; + height: 135px; +} +.Mount_Body_TRex-Red { + background-image: url(spritesmith-main-7.png); + background-position: -408px -272px; + width: 135px; + height: 135px; +} +.Mount_Body_TRex-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -408px -136px; + width: 135px; + height: 135px; +} +.Mount_Body_TRex-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -408px 0px; + width: 135px; + height: 135px; +} +.Mount_Body_TRex-White { + background-image: url(spritesmith-main-7.png); + background-position: -272px -272px; + width: 135px; + height: 135px; +} +.Mount_Body_TRex-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -136px -272px; + width: 135px; + height: 135px; +} +.Mount_Body_TigerCub-Base { + background-image: url(spritesmith-main-7.png); + background-position: -1272px -1422px; + width: 105px; + height: 105px; +} +.Mount_Body_TigerCub-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -1378px -1422px; + width: 105px; + height: 105px; +} +.Mount_Body_TigerCub-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -1558px 0px; + width: 105px; + height: 105px; +} +.Mount_Body_TigerCub-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -1558px -106px; + width: 105px; + height: 105px; +} +.Mount_Body_TigerCub-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -1558px -212px; + width: 105px; + height: 105px; +} +.Mount_Body_TigerCub-Peppermint { + background-image: url(spritesmith-main-7.png); + background-position: -1558px -318px; + width: 105px; + height: 105px; +} +.Mount_Body_TigerCub-Red { + background-image: url(spritesmith-main-7.png); + background-position: -1558px -424px; + width: 105px; + height: 105px; +} +.Mount_Body_TigerCub-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -1558px -530px; + width: 105px; + height: 105px; +} +.Mount_Body_TigerCub-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -1558px -636px; + width: 105px; + height: 105px; +} +.Mount_Body_TigerCub-Spooky { + background-image: url(spritesmith-main-7.png); + background-position: -1558px -742px; + width: 105px; + height: 105px; +} +.Mount_Body_TigerCub-White { + background-image: url(spritesmith-main-7.png); + background-position: -1558px -848px; + width: 105px; + height: 105px; +} +.Mount_Body_TigerCub-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -1558px -954px; + width: 105px; + height: 105px; +} +.Mount_Body_Turkey-Base { + background-image: url(spritesmith-main-7.png); + background-position: -636px -1528px; + width: 105px; + height: 105px; +} +.Mount_Body_Unicorn-Base { + background-image: url(spritesmith-main-7.png); + background-position: -742px -1528px; + width: 105px; + height: 105px; +} +.Mount_Body_Unicorn-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -848px -1528px; + width: 105px; + height: 105px; +} +.Mount_Body_Unicorn-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -954px -1528px; + width: 105px; + height: 105px; +} +.Mount_Body_Unicorn-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -1060px -1528px; + width: 105px; + height: 105px; +} +.Mount_Body_Unicorn-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -1166px -1528px; + width: 105px; + height: 105px; +} +.Mount_Body_Unicorn-Red { + background-image: url(spritesmith-main-7.png); + background-position: -1272px -1528px; + width: 105px; + height: 105px; +} +.Mount_Body_Unicorn-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -1378px -1528px; + width: 105px; + height: 105px; +} +.Mount_Body_Unicorn-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -1484px -1528px; + width: 105px; + height: 105px; +} +.Mount_Body_Unicorn-White { + background-image: url(spritesmith-main-7.png); + background-position: -1664px 0px; + width: 105px; + height: 105px; +} +.Mount_Body_Unicorn-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -1664px -106px; + width: 105px; + height: 105px; +} +.Mount_Body_Whale-Base { + background-image: url(spritesmith-main-7.png); + background-position: -1664px -212px; + width: 105px; + height: 105px; +} +.Mount_Body_Whale-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -1664px -318px; + width: 105px; + height: 105px; +} +.Mount_Body_Whale-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -1664px -424px; + width: 105px; + height: 105px; +} +.Mount_Body_Whale-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -1664px -530px; + width: 105px; + height: 105px; +} +.Mount_Body_Whale-Golden { + background-image: url(spritesmith-main-7.png); + background-position: -1664px -636px; + width: 105px; + height: 105px; +} +.Mount_Body_Whale-Red { + background-image: url(spritesmith-main-7.png); + background-position: -1664px -742px; + width: 105px; + height: 105px; +} +.Mount_Body_Whale-Shade { + background-image: url(spritesmith-main-7.png); + background-position: -1664px -848px; + width: 105px; + height: 105px; +} +.Mount_Body_Whale-Skeleton { + background-image: url(spritesmith-main-7.png); + background-position: -1664px -954px; + width: 105px; + height: 105px; +} +.Mount_Body_Whale-White { + background-image: url(spritesmith-main-7.png); + background-position: -1664px -1060px; + width: 105px; + height: 105px; +} +.Mount_Body_Whale-Zombie { + background-image: url(spritesmith-main-7.png); + background-position: -1664px -1166px; + width: 105px; + height: 105px; +} +.Mount_Body_Wolf-Base { + background-image: url(spritesmith-main-7.png); + background-position: 0px -272px; + width: 135px; + height: 135px; +} +.Mount_Body_Wolf-CottonCandyBlue { + background-image: url(spritesmith-main-7.png); + background-position: -272px -136px; + width: 135px; + height: 135px; +} +.Mount_Body_Wolf-CottonCandyPink { + background-image: url(spritesmith-main-7.png); + background-position: -272px 0px; + width: 135px; + height: 135px; +} +.Mount_Body_Wolf-Desert { + background-image: url(spritesmith-main-7.png); + background-position: -136px -136px; + width: 135px; + height: 135px; +} +.Mount_Body_Wolf-Golden { + background-image: url(spritesmith-main-7.png); + background-position: 0px -136px; + width: 135px; + height: 135px; +} +.Mount_Body_Wolf-Peppermint { + background-image: url(spritesmith-main-7.png); + background-position: -136px 0px; + width: 135px; + height: 135px; +} diff --git a/common/dist/sprites/spritesmith-main-7.png b/common/dist/sprites/spritesmith-main-7.png index ae71078270..6db6a1ec75 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 dd45b4e8eb..b1fc41d08f 100644 --- a/common/dist/sprites/spritesmith-main-8.css +++ b/common/dist/sprites/spritesmith-main-8.css @@ -1,1470 +1,1452 @@ +.Mount_Body_Wolf-Red { + background-image: url(spritesmith-main-8.png); + background-position: 0px 0px; + width: 135px; + height: 135px; +} +.Mount_Body_Wolf-Shade { + background-image: url(spritesmith-main-8.png); + background-position: -272px -136px; + width: 135px; + height: 135px; +} +.Mount_Body_Wolf-Skeleton { + background-image: url(spritesmith-main-8.png); + background-position: -136px 0px; + width: 135px; + height: 135px; +} +.Mount_Body_Wolf-Spooky { + background-image: url(spritesmith-main-8.png); + background-position: 0px -136px; + width: 135px; + height: 135px; +} +.Mount_Body_Wolf-White { + background-image: url(spritesmith-main-8.png); + background-position: -136px -136px; + width: 135px; + height: 135px; +} +.Mount_Body_Wolf-Zombie { + background-image: url(spritesmith-main-8.png); + background-position: -272px 0px; + width: 135px; + height: 135px; +} +.Mount_Head_BearCub-Base { + background-image: url(spritesmith-main-8.png); + background-position: -424px -1368px; + width: 105px; + height: 105px; +} +.Mount_Head_BearCub-CottonCandyBlue { + background-image: url(spritesmith-main-8.png); + background-position: -636px -1156px; + width: 105px; + height: 105px; +} +.Mount_Head_BearCub-CottonCandyPink { + background-image: url(spritesmith-main-8.png); + background-position: -530px -1156px; + width: 105px; + height: 105px; +} +.Mount_Head_BearCub-Desert { + background-image: url(spritesmith-main-8.png); + background-position: -424px -1156px; + width: 105px; + height: 105px; +} +.Mount_Head_BearCub-Golden { + background-image: url(spritesmith-main-8.png); + background-position: -318px -1156px; + width: 105px; + height: 105px; +} +.Mount_Head_BearCub-Peppermint { + background-image: url(spritesmith-main-8.png); + background-position: -212px -1156px; + width: 105px; + height: 105px; +} .Mount_Head_BearCub-Polar { background-image: url(spritesmith-main-8.png); - background-position: -530px -575px; + background-position: -106px -1156px; width: 105px; height: 105px; } .Mount_Head_BearCub-Red { background-image: url(spritesmith-main-8.png); - background-position: -318px -1105px; + background-position: 0px -1156px; width: 105px; height: 105px; } .Mount_Head_BearCub-Shade { background-image: url(spritesmith-main-8.png); - background-position: -636px -575px; + background-position: -1256px -954px; width: 105px; height: 105px; } .Mount_Head_BearCub-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -742px 0px; + background-position: -1256px -848px; width: 105px; height: 105px; } .Mount_Head_BearCub-Spooky { background-image: url(spritesmith-main-8.png); - background-position: -742px -106px; + background-position: -1256px -742px; width: 105px; height: 105px; } .Mount_Head_BearCub-White { background-image: url(spritesmith-main-8.png); - background-position: -742px -212px; + background-position: -938px -424px; width: 105px; height: 105px; } .Mount_Head_BearCub-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -742px -318px; + background-position: -938px -318px; width: 105px; height: 105px; } .Mount_Head_Bunny-Base { background-image: url(spritesmith-main-8.png); - background-position: -742px -424px; + background-position: -938px -212px; width: 105px; height: 105px; } .Mount_Head_Bunny-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -742px -530px; + background-position: -938px -106px; width: 105px; height: 105px; } .Mount_Head_Bunny-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: 0px -681px; + background-position: -938px 0px; width: 105px; height: 105px; } .Mount_Head_Bunny-Desert { background-image: url(spritesmith-main-8.png); - background-position: -106px -681px; + background-position: -742px -732px; width: 105px; height: 105px; } .Mount_Head_Bunny-Golden { background-image: url(spritesmith-main-8.png); - background-position: -742px -999px; + background-position: -636px -732px; width: 105px; height: 105px; } .Mount_Head_Bunny-Red { background-image: url(spritesmith-main-8.png); - background-position: -848px -999px; + background-position: -530px -732px; width: 105px; height: 105px; } .Mount_Head_Bunny-Shade { background-image: url(spritesmith-main-8.png); - background-position: -954px -999px; + background-position: -424px -732px; width: 105px; height: 105px; } .Mount_Head_Bunny-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -1060px -999px; + background-position: -318px -732px; width: 105px; height: 105px; } .Mount_Head_Bunny-White { background-image: url(spritesmith-main-8.png); - background-position: -1166px 0px; + background-position: 0px -1368px; width: 105px; height: 105px; } .Mount_Head_Bunny-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -1166px -106px; + background-position: -1362px -212px; width: 105px; height: 105px; } .Mount_Head_Cactus-Base { background-image: url(spritesmith-main-8.png); - background-position: -1166px -212px; + background-position: -530px -1368px; width: 105px; height: 105px; } .Mount_Head_Cactus-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -1166px -318px; + background-position: -726px 0px; width: 105px; height: 105px; } .Mount_Head_Cactus-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -1166px -424px; + background-position: -726px -106px; width: 105px; height: 105px; } .Mount_Head_Cactus-Desert { background-image: url(spritesmith-main-8.png); - background-position: -1166px -530px; + background-position: -726px -212px; width: 105px; height: 105px; } .Mount_Head_Cactus-Golden { background-image: url(spritesmith-main-8.png); - background-position: -1378px -106px; + background-position: -726px -318px; width: 105px; height: 105px; } .Mount_Head_Cactus-Peppermint { background-image: url(spritesmith-main-8.png); - background-position: -1378px -530px; + background-position: -726px -424px; width: 105px; height: 105px; } .Mount_Head_Cactus-Red { background-image: url(spritesmith-main-8.png); - background-position: -1378px -636px; + background-position: 0px -626px; width: 105px; height: 105px; } .Mount_Head_Cactus-Shade { background-image: url(spritesmith-main-8.png); - background-position: -530px -332px; + background-position: -106px -626px; width: 105px; height: 105px; } .Mount_Head_Cactus-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -109px -469px; + background-position: -212px -626px; width: 105px; height: 105px; } .Mount_Head_Cactus-Spooky { background-image: url(spritesmith-main-8.png); - background-position: -215px -469px; + background-position: -318px -626px; width: 105px; height: 105px; } .Mount_Head_Cactus-White { background-image: url(spritesmith-main-8.png); - background-position: -321px -469px; + background-position: -424px -626px; width: 105px; height: 105px; } .Mount_Head_Cactus-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -427px -469px; + background-position: -530px -626px; width: 105px; height: 105px; } .Mount_Head_Cheetah-Base { background-image: url(spritesmith-main-8.png); - background-position: -636px 0px; + background-position: -636px -626px; width: 105px; height: 105px; } .Mount_Head_Cheetah-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -636px -106px; + background-position: -832px 0px; width: 105px; height: 105px; } .Mount_Head_Cheetah-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -636px -212px; + background-position: -832px -106px; width: 105px; height: 105px; } .Mount_Head_Cheetah-Desert { background-image: url(spritesmith-main-8.png); - background-position: -636px -318px; + background-position: -832px -212px; width: 105px; height: 105px; } .Mount_Head_Cheetah-Golden { background-image: url(spritesmith-main-8.png); - background-position: -636px -424px; + background-position: -832px -318px; width: 105px; height: 105px; } .Mount_Head_Cheetah-Red { background-image: url(spritesmith-main-8.png); - background-position: 0px -575px; + background-position: -832px -424px; width: 105px; height: 105px; } .Mount_Head_Cheetah-Shade { background-image: url(spritesmith-main-8.png); - background-position: -106px -575px; + background-position: -832px -530px; width: 105px; height: 105px; } .Mount_Head_Cheetah-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -212px -575px; + background-position: 0px -732px; width: 105px; height: 105px; } .Mount_Head_Cheetah-White { background-image: url(spritesmith-main-8.png); - background-position: -318px -575px; + background-position: -106px -732px; width: 105px; height: 105px; } .Mount_Head_Cheetah-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -424px -575px; + background-position: -212px -732px; width: 105px; height: 105px; } .Mount_Head_Cuttlefish-Base { background-image: url(spritesmith-main-8.png); - background-position: -530px 0px; + background-position: -212px -511px; width: 105px; height: 114px; } .Mount_Head_Cuttlefish-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -318px -239px; + background-position: -106px -511px; width: 105px; height: 114px; } .Mount_Head_Cuttlefish-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -212px 0px; + background-position: 0px -511px; width: 105px; height: 114px; } .Mount_Head_Cuttlefish-Desert { background-image: url(spritesmith-main-8.png); - background-position: 0px -124px; + background-position: -620px -345px; width: 105px; height: 114px; } .Mount_Head_Cuttlefish-Golden { background-image: url(spritesmith-main-8.png); - background-position: -106px -124px; + background-position: -620px -230px; width: 105px; height: 114px; } .Mount_Head_Cuttlefish-Red { background-image: url(spritesmith-main-8.png); - background-position: -212px -124px; + background-position: -620px -115px; width: 105px; height: 114px; } .Mount_Head_Cuttlefish-Shade { background-image: url(spritesmith-main-8.png); - background-position: -318px 0px; + background-position: -620px 0px; width: 105px; height: 114px; } .Mount_Head_Cuttlefish-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -318px -115px; + background-position: -514px -345px; width: 105px; height: 114px; } .Mount_Head_Cuttlefish-White { background-image: url(spritesmith-main-8.png); - background-position: 0px -239px; + background-position: -514px -230px; width: 105px; height: 114px; } .Mount_Head_Cuttlefish-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -106px -239px; + background-position: -514px -115px; width: 105px; height: 114px; } .Mount_Head_Deer-Base { background-image: url(spritesmith-main-8.png); - background-position: -212px -681px; + background-position: -938px -530px; width: 105px; height: 105px; } .Mount_Head_Deer-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -318px -681px; + background-position: -938px -636px; width: 105px; height: 105px; } .Mount_Head_Deer-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -424px -681px; + background-position: 0px -838px; width: 105px; height: 105px; } .Mount_Head_Deer-Desert { background-image: url(spritesmith-main-8.png); - background-position: -530px -681px; + background-position: -106px -838px; width: 105px; height: 105px; } .Mount_Head_Deer-Golden { background-image: url(spritesmith-main-8.png); - background-position: -636px -681px; + background-position: -212px -838px; width: 105px; height: 105px; } .Mount_Head_Deer-Red { background-image: url(spritesmith-main-8.png); - background-position: -742px -681px; + background-position: -318px -838px; width: 105px; height: 105px; } .Mount_Head_Deer-Shade { background-image: url(spritesmith-main-8.png); - background-position: -848px 0px; + background-position: -424px -838px; width: 105px; height: 105px; } .Mount_Head_Deer-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -848px -106px; + background-position: -530px -838px; width: 105px; height: 105px; } .Mount_Head_Deer-White { background-image: url(spritesmith-main-8.png); - background-position: -848px -212px; + background-position: -636px -838px; width: 105px; height: 105px; } .Mount_Head_Deer-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -848px -318px; + background-position: -742px -838px; width: 105px; height: 105px; } .Mount_Head_Dragon-Base { background-image: url(spritesmith-main-8.png); - background-position: -848px -424px; + background-position: -848px -838px; width: 105px; height: 105px; } .Mount_Head_Dragon-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -848px -530px; + background-position: -1044px 0px; width: 105px; height: 105px; } .Mount_Head_Dragon-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -848px -636px; + background-position: -1044px -106px; width: 105px; height: 105px; } .Mount_Head_Dragon-Desert { background-image: url(spritesmith-main-8.png); - background-position: 0px -787px; + background-position: -1044px -212px; width: 105px; height: 105px; } .Mount_Head_Dragon-Golden { background-image: url(spritesmith-main-8.png); - background-position: -106px -787px; + background-position: -1044px -318px; width: 105px; height: 105px; } .Mount_Head_Dragon-Peppermint { background-image: url(spritesmith-main-8.png); - background-position: -212px -787px; + background-position: -1044px -424px; width: 105px; height: 105px; } .Mount_Head_Dragon-Red { background-image: url(spritesmith-main-8.png); - background-position: -318px -787px; + background-position: -1044px -530px; width: 105px; height: 105px; } .Mount_Head_Dragon-Shade { background-image: url(spritesmith-main-8.png); - background-position: -424px -787px; + background-position: -1044px -636px; width: 105px; height: 105px; } .Mount_Head_Dragon-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -530px -787px; + background-position: -1044px -742px; width: 105px; height: 105px; } .Mount_Head_Dragon-Spooky { background-image: url(spritesmith-main-8.png); - background-position: -636px -787px; + background-position: 0px -944px; width: 105px; height: 105px; } .Mount_Head_Dragon-White { background-image: url(spritesmith-main-8.png); - background-position: -742px -787px; + background-position: -106px -944px; width: 105px; height: 105px; } .Mount_Head_Dragon-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -848px -787px; + background-position: -212px -944px; width: 105px; height: 105px; } .Mount_Head_Egg-Base { background-image: url(spritesmith-main-8.png); - background-position: -954px 0px; + background-position: -318px -944px; width: 105px; height: 105px; } .Mount_Head_Egg-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -954px -106px; + background-position: -424px -944px; width: 105px; height: 105px; } .Mount_Head_Egg-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -954px -212px; + background-position: -530px -944px; width: 105px; height: 105px; } .Mount_Head_Egg-Desert { background-image: url(spritesmith-main-8.png); - background-position: -954px -318px; + background-position: -636px -944px; width: 105px; height: 105px; } .Mount_Head_Egg-Golden { background-image: url(spritesmith-main-8.png); - background-position: -954px -424px; + background-position: -742px -944px; width: 105px; height: 105px; } .Mount_Head_Egg-Red { background-image: url(spritesmith-main-8.png); - background-position: -954px -530px; + background-position: -848px -944px; width: 105px; height: 105px; } .Mount_Head_Egg-Shade { background-image: url(spritesmith-main-8.png); - background-position: -954px -636px; + background-position: -954px -944px; width: 105px; height: 105px; } .Mount_Head_Egg-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -954px -742px; + background-position: -1150px 0px; width: 105px; height: 105px; } .Mount_Head_Egg-White { background-image: url(spritesmith-main-8.png); - background-position: 0px -893px; + background-position: -1150px -106px; width: 105px; height: 105px; } .Mount_Head_Egg-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -106px -893px; + background-position: -1150px -212px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-Base { background-image: url(spritesmith-main-8.png); - background-position: -212px -893px; + background-position: -1150px -318px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -318px -893px; + background-position: -1150px -424px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -424px -893px; + background-position: -1150px -530px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-Desert { background-image: url(spritesmith-main-8.png); - background-position: -530px -893px; + background-position: -1150px -636px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-Golden { background-image: url(spritesmith-main-8.png); - background-position: -636px -893px; + background-position: -1150px -742px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-Peppermint { background-image: url(spritesmith-main-8.png); - background-position: -742px -893px; + background-position: -1150px -848px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-Red { background-image: url(spritesmith-main-8.png); - background-position: -848px -893px; + background-position: 0px -1050px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-Shade { background-image: url(spritesmith-main-8.png); - background-position: -954px -893px; + background-position: -106px -1050px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -1060px 0px; + background-position: -212px -1050px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-Spooky { background-image: url(spritesmith-main-8.png); - background-position: -1060px -106px; + background-position: -318px -1050px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-White { background-image: url(spritesmith-main-8.png); - background-position: -1060px -212px; + background-position: -424px -1050px; width: 105px; height: 105px; } .Mount_Head_FlyingPig-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -1060px -318px; + background-position: -530px -1050px; width: 105px; height: 105px; } .Mount_Head_Fox-Base { background-image: url(spritesmith-main-8.png); - background-position: -1060px -424px; + background-position: -636px -1050px; width: 105px; height: 105px; } .Mount_Head_Fox-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -1060px -530px; + background-position: -742px -1050px; width: 105px; height: 105px; } .Mount_Head_Fox-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -1060px -636px; + background-position: -848px -1050px; width: 105px; height: 105px; } .Mount_Head_Fox-Desert { background-image: url(spritesmith-main-8.png); - background-position: -1060px -742px; + background-position: -954px -1050px; width: 105px; height: 105px; } .Mount_Head_Fox-Golden { background-image: url(spritesmith-main-8.png); - background-position: -1060px -848px; + background-position: -1060px -1050px; width: 105px; height: 105px; } .Mount_Head_Fox-Peppermint { background-image: url(spritesmith-main-8.png); - background-position: 0px -999px; + background-position: -1256px 0px; width: 105px; height: 105px; } .Mount_Head_Fox-Red { background-image: url(spritesmith-main-8.png); - background-position: -106px -999px; + background-position: -1256px -106px; width: 105px; height: 105px; } .Mount_Head_Fox-Shade { background-image: url(spritesmith-main-8.png); - background-position: -212px -999px; + background-position: -1256px -212px; width: 105px; height: 105px; } .Mount_Head_Fox-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -318px -999px; + background-position: -1256px -318px; width: 105px; height: 105px; } .Mount_Head_Fox-Spooky { background-image: url(spritesmith-main-8.png); - background-position: -424px -999px; + background-position: -1256px -424px; width: 105px; height: 105px; } .Mount_Head_Fox-White { background-image: url(spritesmith-main-8.png); - background-position: -530px -999px; + background-position: -1256px -530px; width: 105px; height: 105px; } .Mount_Head_Fox-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -636px -999px; + background-position: -1256px -636px; width: 105px; height: 105px; } .Mount_Head_Frog-Base { background-image: url(spritesmith-main-8.png); - background-position: -212px -239px; + background-position: -514px 0px; width: 105px; height: 114px; } .Mount_Head_Frog-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -106px 0px; + background-position: -318px -396px; width: 105px; height: 114px; } .Mount_Head_Frog-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -424px 0px; + background-position: -212px -396px; width: 105px; height: 114px; } .Mount_Head_Frog-Desert { background-image: url(spritesmith-main-8.png); - background-position: -424px -115px; + background-position: -106px -396px; width: 105px; height: 114px; } .Mount_Head_Frog-Golden { background-image: url(spritesmith-main-8.png); - background-position: -424px -230px; + background-position: 0px -396px; width: 105px; height: 114px; } .Mount_Head_Frog-Red { background-image: url(spritesmith-main-8.png); - background-position: 0px -354px; + background-position: -408px -230px; width: 105px; height: 114px; } .Mount_Head_Frog-Shade { background-image: url(spritesmith-main-8.png); - background-position: -106px -354px; + background-position: -408px -115px; width: 105px; height: 114px; } .Mount_Head_Frog-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -212px -354px; + background-position: -408px 0px; width: 105px; height: 114px; } .Mount_Head_Frog-White { background-image: url(spritesmith-main-8.png); - background-position: -318px -354px; + background-position: -212px -272px; width: 105px; height: 114px; } .Mount_Head_Frog-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -424px -354px; + background-position: -106px -272px; width: 105px; height: 114px; } .Mount_Head_Gryphon-Base { background-image: url(spritesmith-main-8.png); - background-position: -1166px -636px; + background-position: -742px -1156px; width: 105px; height: 105px; } .Mount_Head_Gryphon-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -1166px -742px; + background-position: -848px -1156px; width: 105px; height: 105px; } .Mount_Head_Gryphon-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -1166px -848px; + background-position: -954px -1156px; width: 105px; height: 105px; } .Mount_Head_Gryphon-Desert { background-image: url(spritesmith-main-8.png); - background-position: -1166px -954px; + background-position: -1060px -1156px; width: 105px; height: 105px; } .Mount_Head_Gryphon-Golden { background-image: url(spritesmith-main-8.png); - background-position: 0px -1105px; + background-position: -1166px -1156px; width: 105px; height: 105px; } .Mount_Head_Gryphon-Red { background-image: url(spritesmith-main-8.png); - background-position: -106px -1105px; + background-position: -1362px 0px; width: 105px; height: 105px; } .Mount_Head_Gryphon-RoyalPurple { background-image: url(spritesmith-main-8.png); - background-position: -212px -1105px; + background-position: -1362px -106px; width: 105px; height: 105px; } .Mount_Head_Gryphon-Shade { background-image: url(spritesmith-main-8.png); - background-position: -530px -226px; + background-position: -533px -511px; width: 105px; height: 105px; } .Mount_Head_Gryphon-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -424px -1105px; + background-position: -1362px -318px; width: 105px; height: 105px; } .Mount_Head_Gryphon-White { background-image: url(spritesmith-main-8.png); - background-position: -530px -1105px; + background-position: -1362px -424px; width: 105px; height: 105px; } .Mount_Head_Gryphon-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -636px -1105px; + background-position: -1362px -530px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-Base { background-image: url(spritesmith-main-8.png); - background-position: -742px -1105px; + background-position: -1362px -636px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -848px -1105px; + background-position: -1362px -742px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -954px -1105px; + background-position: -1362px -848px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-Desert { background-image: url(spritesmith-main-8.png); - background-position: -1060px -1105px; + background-position: -1362px -954px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-Golden { background-image: url(spritesmith-main-8.png); - background-position: -1166px -1105px; + background-position: -1362px -1060px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-Red { background-image: url(spritesmith-main-8.png); - background-position: -1272px 0px; + background-position: 0px -1262px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-Shade { background-image: url(spritesmith-main-8.png); - background-position: -1272px -106px; + background-position: -106px -1262px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -1272px -212px; + background-position: -212px -1262px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-White { background-image: url(spritesmith-main-8.png); - background-position: -1272px -318px; + background-position: -318px -1262px; width: 105px; height: 105px; } .Mount_Head_Hedgehog-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -1272px -424px; + background-position: -424px -1262px; width: 105px; height: 105px; } .Mount_Head_Horse-Base { background-image: url(spritesmith-main-8.png); - background-position: -1272px -530px; + background-position: -530px -1262px; width: 105px; height: 105px; } .Mount_Head_Horse-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -1272px -636px; + background-position: -636px -1262px; width: 105px; height: 105px; } .Mount_Head_Horse-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -1272px -742px; + background-position: -742px -1262px; width: 105px; height: 105px; } .Mount_Head_Horse-Desert { background-image: url(spritesmith-main-8.png); - background-position: -1272px -848px; + background-position: -848px -1262px; width: 105px; height: 105px; } .Mount_Head_Horse-Golden { background-image: url(spritesmith-main-8.png); - background-position: -1272px -954px; + background-position: -954px -1262px; width: 105px; height: 105px; } .Mount_Head_Horse-Red { background-image: url(spritesmith-main-8.png); - background-position: -1272px -1060px; + background-position: -1060px -1262px; width: 105px; height: 105px; } .Mount_Head_Horse-Shade { background-image: url(spritesmith-main-8.png); - background-position: 0px -1211px; + background-position: -1166px -1262px; width: 105px; height: 105px; } .Mount_Head_Horse-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -106px -1211px; + background-position: -1272px -1262px; width: 105px; height: 105px; } .Mount_Head_Horse-White { background-image: url(spritesmith-main-8.png); - background-position: -212px -1211px; + background-position: -1468px 0px; width: 105px; height: 105px; } .Mount_Head_Horse-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -318px -1211px; + background-position: -1468px -106px; width: 105px; height: 105px; } .Mount_Head_JackOLantern-Base { background-image: url(spritesmith-main-8.png); - background-position: -1696px -530px; + background-position: -1786px -106px; width: 90px; height: 105px; } .Mount_Head_LionCub-Base { background-image: url(spritesmith-main-8.png); - background-position: -530px -1211px; + background-position: -1468px -318px; width: 105px; height: 105px; } .Mount_Head_LionCub-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -636px -1211px; + background-position: -1468px -424px; width: 105px; height: 105px; } .Mount_Head_LionCub-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -742px -1211px; + background-position: -1468px -530px; width: 105px; height: 105px; } .Mount_Head_LionCub-Desert { background-image: url(spritesmith-main-8.png); - background-position: -848px -1211px; + background-position: -1468px -636px; width: 105px; height: 105px; } .Mount_Head_LionCub-Ethereal { background-image: url(spritesmith-main-8.png); - background-position: -954px -1211px; + background-position: -1468px -742px; width: 105px; height: 105px; } .Mount_Head_LionCub-Golden { background-image: url(spritesmith-main-8.png); - background-position: -1060px -1211px; + background-position: -1468px -848px; width: 105px; height: 105px; } .Mount_Head_LionCub-Peppermint { background-image: url(spritesmith-main-8.png); - background-position: -1166px -1211px; + background-position: -1468px -954px; width: 105px; height: 105px; } .Mount_Head_LionCub-Red { background-image: url(spritesmith-main-8.png); - background-position: -1272px -1211px; + background-position: -1468px -1060px; width: 105px; height: 105px; } .Mount_Head_LionCub-Shade { background-image: url(spritesmith-main-8.png); - background-position: -1378px 0px; + background-position: -1468px -1166px; width: 105px; height: 105px; } .Mount_Head_LionCub-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -530px -115px; + background-position: -318px -511px; width: 105px; height: 110px; } .Mount_Head_LionCub-Spooky { background-image: url(spritesmith-main-8.png); - background-position: -1378px -212px; + background-position: -106px -1368px; width: 105px; height: 105px; } .Mount_Head_LionCub-White { background-image: url(spritesmith-main-8.png); - background-position: -1378px -318px; + background-position: -212px -1368px; width: 105px; height: 105px; } .Mount_Head_LionCub-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -1378px -424px; + background-position: -318px -1368px; width: 105px; height: 105px; } .Mount_Head_Mammoth-Base { background-image: url(spritesmith-main-8.png); - background-position: 0px 0px; + background-position: 0px -272px; width: 105px; height: 123px; } .Mount_Head_MantisShrimp-Base { background-image: url(spritesmith-main-8.png); - background-position: 0px -469px; + background-position: -424px -511px; width: 108px; height: 105px; } .Mount_Head_Monkey-Base { background-image: url(spritesmith-main-8.png); - background-position: -1378px -742px; + background-position: -636px -1368px; width: 105px; height: 105px; } .Mount_Head_Monkey-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -1378px -848px; + background-position: -742px -1368px; width: 105px; height: 105px; } .Mount_Head_Monkey-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -1378px -954px; + background-position: -848px -1368px; width: 105px; height: 105px; } .Mount_Head_Monkey-Desert { background-image: url(spritesmith-main-8.png); - background-position: -1378px -1060px; + background-position: -954px -1368px; width: 105px; height: 105px; } .Mount_Head_Monkey-Golden { background-image: url(spritesmith-main-8.png); - background-position: -1378px -1166px; + background-position: -1060px -1368px; width: 105px; height: 105px; } .Mount_Head_Monkey-Red { background-image: url(spritesmith-main-8.png); - background-position: 0px -1317px; + background-position: -1166px -1368px; width: 105px; height: 105px; } .Mount_Head_Monkey-Shade { background-image: url(spritesmith-main-8.png); - background-position: -106px -1317px; + background-position: -1272px -1368px; width: 105px; height: 105px; } .Mount_Head_Monkey-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -212px -1317px; + background-position: -1378px -1368px; width: 105px; height: 105px; } .Mount_Head_Monkey-White { background-image: url(spritesmith-main-8.png); - background-position: -318px -1317px; + background-position: -1574px 0px; width: 105px; height: 105px; } .Mount_Head_Monkey-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -424px -1317px; + background-position: -1574px -106px; width: 105px; height: 105px; } .Mount_Head_Octopus-Base { background-image: url(spritesmith-main-8.png); - background-position: -530px -1317px; + background-position: -1574px -212px; width: 105px; height: 105px; } .Mount_Head_Octopus-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -636px -1317px; + background-position: -1574px -318px; width: 105px; height: 105px; } .Mount_Head_Octopus-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -742px -1317px; + background-position: -1574px -424px; width: 105px; height: 105px; } .Mount_Head_Octopus-Desert { background-image: url(spritesmith-main-8.png); - background-position: -848px -1317px; + background-position: -1574px -530px; width: 105px; height: 105px; } .Mount_Head_Octopus-Golden { background-image: url(spritesmith-main-8.png); - background-position: -954px -1317px; + background-position: -1574px -636px; width: 105px; height: 105px; } .Mount_Head_Octopus-Red { background-image: url(spritesmith-main-8.png); - background-position: -1060px -1317px; + background-position: -1574px -742px; width: 105px; height: 105px; } .Mount_Head_Octopus-Shade { background-image: url(spritesmith-main-8.png); - background-position: -1166px -1317px; + background-position: -1574px -848px; width: 105px; height: 105px; } .Mount_Head_Octopus-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -1272px -1317px; + background-position: -1574px -954px; width: 105px; height: 105px; } .Mount_Head_Octopus-White { background-image: url(spritesmith-main-8.png); - background-position: -1378px -1317px; + background-position: -1574px -1060px; width: 105px; height: 105px; } .Mount_Head_Octopus-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -1484px 0px; + background-position: -1574px -1166px; width: 105px; height: 105px; } .Mount_Head_Orca-Base { background-image: url(spritesmith-main-8.png); - background-position: -1484px -106px; + background-position: -1574px -1272px; width: 105px; height: 105px; } .Mount_Head_Owl-Base { background-image: url(spritesmith-main-8.png); - background-position: -1484px -212px; + background-position: 0px -1474px; width: 105px; height: 105px; } .Mount_Head_Owl-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -1484px -318px; + background-position: -106px -1474px; width: 105px; height: 105px; } .Mount_Head_Owl-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -1484px -424px; + background-position: -212px -1474px; width: 105px; height: 105px; } .Mount_Head_Owl-Desert { background-image: url(spritesmith-main-8.png); - background-position: -1484px -530px; + background-position: -318px -1474px; width: 105px; height: 105px; } .Mount_Head_Owl-Golden { background-image: url(spritesmith-main-8.png); - background-position: -1484px -636px; + background-position: -424px -1474px; width: 105px; height: 105px; } .Mount_Head_Owl-Red { background-image: url(spritesmith-main-8.png); - background-position: -1484px -742px; + background-position: -530px -1474px; width: 105px; height: 105px; } .Mount_Head_Owl-Shade { background-image: url(spritesmith-main-8.png); - background-position: -1484px -848px; + background-position: -636px -1474px; width: 105px; height: 105px; } .Mount_Head_Owl-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -1484px -954px; + background-position: -742px -1474px; width: 105px; height: 105px; } .Mount_Head_Owl-White { background-image: url(spritesmith-main-8.png); - background-position: -1484px -1060px; + background-position: -848px -1474px; width: 105px; height: 105px; } .Mount_Head_Owl-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -1484px -1166px; + background-position: -954px -1474px; width: 105px; height: 105px; } .Mount_Head_PandaCub-Base { background-image: url(spritesmith-main-8.png); - background-position: -1484px -1272px; + background-position: -1060px -1474px; width: 105px; height: 105px; } .Mount_Head_PandaCub-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: 0px -1423px; + background-position: -1166px -1474px; width: 105px; height: 105px; } .Mount_Head_PandaCub-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -106px -1423px; + background-position: -1272px -1474px; width: 105px; height: 105px; } .Mount_Head_PandaCub-Desert { background-image: url(spritesmith-main-8.png); - background-position: -212px -1423px; + background-position: -1378px -1474px; width: 105px; height: 105px; } .Mount_Head_PandaCub-Golden { background-image: url(spritesmith-main-8.png); - background-position: -318px -1423px; + background-position: -1484px -1474px; width: 105px; height: 105px; } .Mount_Head_PandaCub-Peppermint { background-image: url(spritesmith-main-8.png); - background-position: -424px -1423px; + background-position: -1680px 0px; width: 105px; height: 105px; } .Mount_Head_PandaCub-Red { background-image: url(spritesmith-main-8.png); - background-position: -530px -1423px; + background-position: -1680px -106px; width: 105px; height: 105px; } .Mount_Head_PandaCub-Shade { background-image: url(spritesmith-main-8.png); - background-position: -636px -1423px; + background-position: -1680px -212px; width: 105px; height: 105px; } .Mount_Head_PandaCub-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -742px -1423px; + background-position: -1680px -318px; width: 105px; height: 105px; } .Mount_Head_PandaCub-Spooky { background-image: url(spritesmith-main-8.png); - background-position: -848px -1423px; + background-position: -1680px -424px; width: 105px; height: 105px; } .Mount_Head_PandaCub-White { background-image: url(spritesmith-main-8.png); - background-position: -954px -1423px; + background-position: -1680px -530px; width: 105px; height: 105px; } .Mount_Head_PandaCub-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -1060px -1423px; + background-position: -1680px -636px; width: 105px; height: 105px; } .Mount_Head_Parrot-Base { background-image: url(spritesmith-main-8.png); - background-position: -1166px -1423px; + background-position: -1680px -742px; width: 105px; height: 105px; } .Mount_Head_Parrot-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -1272px -1423px; + background-position: -1680px -848px; width: 105px; height: 105px; } .Mount_Head_Parrot-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -1378px -1423px; + background-position: -1680px -954px; width: 105px; height: 105px; } .Mount_Head_Parrot-Desert { background-image: url(spritesmith-main-8.png); - background-position: -1484px -1423px; + background-position: -1680px -1060px; width: 105px; height: 105px; } .Mount_Head_Parrot-Golden { background-image: url(spritesmith-main-8.png); - background-position: -1590px 0px; + background-position: -1680px -1166px; width: 105px; height: 105px; } .Mount_Head_Parrot-Red { background-image: url(spritesmith-main-8.png); - background-position: -1590px -106px; + background-position: -1680px -1272px; width: 105px; height: 105px; } .Mount_Head_Parrot-Shade { background-image: url(spritesmith-main-8.png); - background-position: -1590px -212px; + background-position: -1680px -1378px; width: 105px; height: 105px; } .Mount_Head_Parrot-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -1590px -318px; + background-position: 0px -1580px; width: 105px; height: 105px; } .Mount_Head_Parrot-White { background-image: url(spritesmith-main-8.png); - background-position: -1590px -424px; + background-position: -106px -1580px; width: 105px; height: 105px; } .Mount_Head_Parrot-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -1590px -530px; + background-position: -212px -1580px; width: 105px; height: 105px; } .Mount_Head_Penguin-Base { background-image: url(spritesmith-main-8.png); - background-position: -1590px -636px; + background-position: -318px -1580px; width: 105px; height: 105px; } .Mount_Head_Penguin-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -1590px -742px; + background-position: -424px -1580px; width: 105px; height: 105px; } .Mount_Head_Penguin-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -1590px -848px; + background-position: -530px -1580px; width: 105px; height: 105px; } .Mount_Head_Penguin-Desert { background-image: url(spritesmith-main-8.png); - background-position: -1590px -954px; + background-position: -636px -1580px; width: 105px; height: 105px; } .Mount_Head_Penguin-Golden { background-image: url(spritesmith-main-8.png); - background-position: -1590px -1060px; + background-position: -742px -1580px; width: 105px; height: 105px; } .Mount_Head_Penguin-Red { background-image: url(spritesmith-main-8.png); - background-position: -1590px -1166px; + background-position: -848px -1580px; width: 105px; height: 105px; } .Mount_Head_Penguin-Shade { background-image: url(spritesmith-main-8.png); - background-position: -1590px -1272px; + background-position: -954px -1580px; width: 105px; height: 105px; } .Mount_Head_Penguin-Skeleton { background-image: url(spritesmith-main-8.png); - background-position: -1590px -1378px; + background-position: -1060px -1580px; width: 105px; height: 105px; } .Mount_Head_Penguin-White { background-image: url(spritesmith-main-8.png); - background-position: 0px -1529px; + background-position: -1166px -1580px; width: 105px; height: 105px; } .Mount_Head_Penguin-Zombie { background-image: url(spritesmith-main-8.png); - background-position: -106px -1529px; + background-position: -1272px -1580px; width: 105px; height: 105px; } .Mount_Head_Phoenix-Base { background-image: url(spritesmith-main-8.png); - background-position: -212px -1529px; + background-position: -1378px -1580px; width: 105px; height: 105px; } .Mount_Head_Rat-Base { background-image: url(spritesmith-main-8.png); - background-position: -318px -1529px; + background-position: -1484px -1580px; width: 105px; height: 105px; } .Mount_Head_Rat-CottonCandyBlue { background-image: url(spritesmith-main-8.png); - background-position: -424px -1529px; + background-position: -1590px -1580px; width: 105px; height: 105px; } .Mount_Head_Rat-CottonCandyPink { background-image: url(spritesmith-main-8.png); - background-position: -530px -1529px; + background-position: -1468px -212px; width: 105px; height: 105px; } .Mount_Head_Rat-Desert { background-image: url(spritesmith-main-8.png); - background-position: -636px -1529px; - width: 105px; - height: 105px; -} -.Mount_Head_Rat-Golden { - background-image: url(spritesmith-main-8.png); - background-position: -742px -1529px; - width: 105px; - height: 105px; -} -.Mount_Head_Rat-Red { - background-image: url(spritesmith-main-8.png); - background-position: -848px -1529px; - width: 105px; - height: 105px; -} -.Mount_Head_Rat-Shade { - background-image: url(spritesmith-main-8.png); - background-position: -954px -1529px; - width: 105px; - height: 105px; -} -.Mount_Head_Rat-Skeleton { - background-image: url(spritesmith-main-8.png); - background-position: -1060px -1529px; - width: 105px; - height: 105px; -} -.Mount_Head_Rat-White { - background-image: url(spritesmith-main-8.png); - background-position: -1166px -1529px; - width: 105px; - height: 105px; -} -.Mount_Head_Rat-Zombie { - background-image: url(spritesmith-main-8.png); - background-position: -1272px -1529px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-Base { - background-image: url(spritesmith-main-8.png); - background-position: -1378px -1529px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-CottonCandyBlue { - background-image: url(spritesmith-main-8.png); - background-position: -1484px -1529px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-CottonCandyPink { - background-image: url(spritesmith-main-8.png); - background-position: -1590px -1529px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-Desert { - background-image: url(spritesmith-main-8.png); - background-position: -1696px 0px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-Golden { - background-image: url(spritesmith-main-8.png); - background-position: -1696px -106px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-Red { - background-image: url(spritesmith-main-8.png); - background-position: -1696px -212px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-Shade { - background-image: url(spritesmith-main-8.png); - background-position: -1696px -318px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-Skeleton { - background-image: url(spritesmith-main-8.png); - background-position: -424px -1211px; - width: 105px; - height: 105px; -} -.Mount_Head_Rock-White { - background-image: url(spritesmith-main-8.png); - background-position: -1696px -424px; + background-position: -1786px 0px; width: 105px; height: 105px; } diff --git a/common/dist/sprites/spritesmith-main-8.png b/common/dist/sprites/spritesmith-main-8.png index 1d91f040d2..b78b98aec8 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 99e5ba0200..24e7a89bbe 100644 --- a/common/dist/sprites/spritesmith-main-9.css +++ b/common/dist/sprites/spritesmith-main-9.css @@ -1,1554 +1,1530 @@ -.Mount_Head_Rock-Zombie { +.Mount_Head_Rat-Golden { background-image: url(spritesmith-main-9.png); - background-position: -1134px -212px; + background-position: 0px -1346px; width: 105px; height: 105px; } -.Mount_Head_Rooster-Base { - background-image: url(spritesmith-main-9.png); - background-position: -530px -1240px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -848px -922px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -424px -1028px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -530px -1028px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -636px -1028px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-Red { - background-image: url(spritesmith-main-9.png); - background-position: -742px -1028px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-Shade { - background-image: url(spritesmith-main-9.png); - background-position: -848px -1028px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -954px -1028px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-White { - background-image: url(spritesmith-main-9.png); - background-position: -1134px 0px; - width: 105px; - height: 105px; -} -.Mount_Head_Rooster-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -1134px -106px; - width: 105px; - height: 105px; -} -.Mount_Head_Sabretooth-Base { - background-image: url(spritesmith-main-9.png); - background-position: 0px -544px; - width: 135px; - height: 135px; -} -.Mount_Head_Sabretooth-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -544px 0px; - width: 135px; - height: 135px; -} -.Mount_Head_Sabretooth-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: 0px -136px; - width: 135px; - height: 135px; -} -.Mount_Head_Sabretooth-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -136px -136px; - width: 135px; - height: 135px; -} -.Mount_Head_Sabretooth-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -272px 0px; - width: 135px; - height: 135px; -} -.Mount_Head_Sabretooth-Red { - background-image: url(spritesmith-main-9.png); - background-position: -272px -136px; - width: 135px; - height: 135px; -} -.Mount_Head_Sabretooth-Shade { - background-image: url(spritesmith-main-9.png); - background-position: 0px -272px; - width: 135px; - height: 135px; -} -.Mount_Head_Sabretooth-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -136px -272px; - width: 135px; - height: 135px; -} -.Mount_Head_Sabretooth-White { - background-image: url(spritesmith-main-9.png); - background-position: -272px -272px; - width: 135px; - height: 135px; -} -.Mount_Head_Sabretooth-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -408px 0px; - width: 135px; - height: 135px; -} -.Mount_Head_Seahorse-Base { - background-image: url(spritesmith-main-9.png); - background-position: -1134px -318px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -1240px -424px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -1240px -530px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -1240px -636px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -1240px -742px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-Red { - background-image: url(spritesmith-main-9.png); - background-position: -1240px -848px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-Shade { - background-image: url(spritesmith-main-9.png); - background-position: -1240px -954px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -1240px -1060px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-White { - background-image: url(spritesmith-main-9.png); - background-position: 0px -1240px; - width: 105px; - height: 105px; -} -.Mount_Head_Seahorse-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -106px -1240px; - width: 105px; - height: 105px; -} -.Mount_Head_Sheep-Base { - background-image: url(spritesmith-main-9.png); - background-position: -212px -1240px; - width: 105px; - height: 105px; -} -.Mount_Head_Sheep-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -318px -1240px; - width: 105px; - height: 105px; -} -.Mount_Head_Sheep-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -424px -1240px; - width: 105px; - height: 105px; -} -.Mount_Head_Sheep-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -636px -1240px; - width: 105px; - height: 105px; -} -.Mount_Head_Sheep-Golden { +.Mount_Head_Rat-Red { background-image: url(spritesmith-main-9.png); background-position: -742px -1240px; width: 105px; height: 105px; } -.Mount_Head_Sheep-Red { +.Mount_Head_Rat-Shade { background-image: url(spritesmith-main-9.png); - background-position: -848px -1240px; + background-position: -106px -1346px; width: 105px; height: 105px; } -.Mount_Head_Sheep-Shade { +.Mount_Head_Rat-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -954px -1240px; + background-position: -212px -1346px; width: 105px; height: 105px; } -.Mount_Head_Sheep-Skeleton { +.Mount_Head_Rat-White { background-image: url(spritesmith-main-9.png); - background-position: -1060px -1240px; + background-position: -318px -1346px; width: 105px; height: 105px; } -.Mount_Head_Sheep-White { +.Mount_Head_Rat-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -1166px -1240px; + background-position: -424px -1346px; width: 105px; height: 105px; } -.Mount_Head_Sheep-Zombie { +.Mount_Head_Rock-Base { background-image: url(spritesmith-main-9.png); - background-position: -1346px 0px; + background-position: -530px -1346px; width: 105px; height: 105px; } -.Mount_Head_Slime-Base { +.Mount_Head_Rock-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -1346px -106px; + background-position: -636px -1346px; width: 105px; height: 105px; } -.Mount_Head_Slime-CottonCandyBlue { +.Mount_Head_Rock-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -1346px -212px; + background-position: -378px -680px; width: 105px; height: 105px; } -.Mount_Head_Slime-CottonCandyPink { +.Mount_Head_Rock-Desert { background-image: url(spritesmith-main-9.png); - background-position: -816px -575px; + background-position: -484px -680px; width: 105px; height: 105px; } -.Mount_Head_Slime-Desert { +.Mount_Head_Rock-Golden { background-image: url(spritesmith-main-9.png); - background-position: -816px -681px; + background-position: -590px -680px; width: 105px; height: 105px; } -.Mount_Head_Slime-Golden { - background-image: url(spritesmith-main-9.png); - background-position: 0px -816px; - width: 105px; - height: 105px; -} -.Mount_Head_Slime-Red { - background-image: url(spritesmith-main-9.png); - background-position: -106px -816px; - width: 105px; - height: 105px; -} -.Mount_Head_Slime-Shade { - background-image: url(spritesmith-main-9.png); - background-position: -212px -816px; - width: 105px; - height: 105px; -} -.Mount_Head_Slime-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -318px -816px; - width: 105px; - height: 105px; -} -.Mount_Head_Slime-White { - background-image: url(spritesmith-main-9.png); - background-position: -424px -816px; - width: 105px; - height: 105px; -} -.Mount_Head_Slime-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -530px -816px; - width: 105px; - height: 105px; -} -.Mount_Head_Snake-Base { - background-image: url(spritesmith-main-9.png); - background-position: -636px -816px; - width: 105px; - height: 105px; -} -.Mount_Head_Snake-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -742px -816px; - width: 105px; - height: 105px; -} -.Mount_Head_Snake-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -922px 0px; - width: 105px; - height: 105px; -} -.Mount_Head_Snake-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -922px -106px; - width: 105px; - height: 105px; -} -.Mount_Head_Snake-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -922px -212px; - width: 105px; - height: 105px; -} -.Mount_Head_Snake-Red { - background-image: url(spritesmith-main-9.png); - background-position: -922px -318px; - width: 105px; - height: 105px; -} -.Mount_Head_Snake-Shade { - background-image: url(spritesmith-main-9.png); - background-position: -922px -424px; - width: 105px; - height: 105px; -} -.Mount_Head_Snake-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -922px -530px; - width: 105px; - height: 105px; -} -.Mount_Head_Snake-White { - background-image: url(spritesmith-main-9.png); - background-position: -922px -636px; - width: 105px; - height: 105px; -} -.Mount_Head_Snake-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -922px -742px; - width: 105px; - height: 105px; -} -.Mount_Head_Spider-Base { - background-image: url(spritesmith-main-9.png); - background-position: 0px -922px; - width: 105px; - height: 105px; -} -.Mount_Head_Spider-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -106px -922px; - width: 105px; - height: 105px; -} -.Mount_Head_Spider-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -212px -922px; - width: 105px; - height: 105px; -} -.Mount_Head_Spider-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -318px -922px; - width: 105px; - height: 105px; -} -.Mount_Head_Spider-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -424px -922px; - width: 105px; - height: 105px; -} -.Mount_Head_Spider-Red { - background-image: url(spritesmith-main-9.png); - background-position: -530px -922px; - width: 105px; - height: 105px; -} -.Mount_Head_Spider-Shade { - background-image: url(spritesmith-main-9.png); - background-position: -636px -922px; - width: 105px; - height: 105px; -} -.Mount_Head_Spider-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -742px -922px; - width: 105px; - height: 105px; -} -.Mount_Head_Spider-White { - background-image: url(spritesmith-main-9.png); - background-position: -1346px -318px; - width: 105px; - height: 105px; -} -.Mount_Head_Spider-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -1028px 0px; - width: 105px; - height: 105px; -} -.Mount_Head_TRex-Base { - background-image: url(spritesmith-main-9.png); - background-position: -408px -136px; - width: 135px; - height: 135px; -} -.Mount_Head_TRex-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -408px -272px; - width: 135px; - height: 135px; -} -.Mount_Head_TRex-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: 0px -408px; - width: 135px; - height: 135px; -} -.Mount_Head_TRex-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -136px -408px; - width: 135px; - height: 135px; -} -.Mount_Head_TRex-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -272px -408px; - width: 135px; - height: 135px; -} -.Mount_Head_TRex-Red { - background-image: url(spritesmith-main-9.png); - background-position: -408px -408px; - width: 135px; - height: 135px; -} -.Mount_Head_TRex-Shade { - background-image: url(spritesmith-main-9.png); - background-position: 0px 0px; - width: 135px; - height: 135px; -} -.Mount_Head_TRex-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -544px -136px; - width: 135px; - height: 135px; -} -.Mount_Head_TRex-White { - background-image: url(spritesmith-main-9.png); - background-position: -544px -272px; - width: 135px; - height: 135px; -} -.Mount_Head_TRex-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -544px -408px; - width: 135px; - height: 135px; -} -.Mount_Head_TigerCub-Base { - background-image: url(spritesmith-main-9.png); - background-position: -1028px -106px; - width: 105px; - height: 105px; -} -.Mount_Head_TigerCub-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -1028px -212px; - width: 105px; - height: 105px; -} -.Mount_Head_TigerCub-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -1028px -318px; - width: 105px; - height: 105px; -} -.Mount_Head_TigerCub-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -1028px -424px; - width: 105px; - height: 105px; -} -.Mount_Head_TigerCub-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -1028px -530px; - width: 105px; - height: 105px; -} -.Mount_Head_TigerCub-Peppermint { - background-image: url(spritesmith-main-9.png); - background-position: -1028px -636px; - width: 105px; - height: 105px; -} -.Mount_Head_TigerCub-Red { - background-image: url(spritesmith-main-9.png); - background-position: -1028px -742px; - width: 105px; - height: 105px; -} -.Mount_Head_TigerCub-Shade { - background-image: url(spritesmith-main-9.png); - background-position: -1028px -848px; - width: 105px; - height: 105px; -} -.Mount_Head_TigerCub-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: 0px -1028px; - width: 105px; - height: 105px; -} -.Mount_Head_TigerCub-Spooky { - background-image: url(spritesmith-main-9.png); - background-position: -106px -1028px; - width: 105px; - height: 105px; -} -.Mount_Head_TigerCub-White { - background-image: url(spritesmith-main-9.png); - background-position: -212px -1028px; - width: 105px; - height: 105px; -} -.Mount_Head_TigerCub-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -318px -1028px; - width: 105px; - height: 105px; -} -.Mount_Head_Turkey-Base { - background-image: url(spritesmith-main-9.png); - background-position: -1134px -424px; - width: 105px; - height: 105px; -} -.Mount_Head_Unicorn-Base { - background-image: url(spritesmith-main-9.png); - background-position: -1134px -530px; - width: 105px; - height: 105px; -} -.Mount_Head_Unicorn-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -1134px -636px; - width: 105px; - height: 105px; -} -.Mount_Head_Unicorn-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -1134px -742px; - width: 105px; - height: 105px; -} -.Mount_Head_Unicorn-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -1134px -848px; - width: 105px; - height: 105px; -} -.Mount_Head_Unicorn-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -1134px -954px; - width: 105px; - height: 105px; -} -.Mount_Head_Unicorn-Red { - background-image: url(spritesmith-main-9.png); - background-position: 0px -1134px; - width: 105px; - height: 105px; -} -.Mount_Head_Unicorn-Shade { - background-image: url(spritesmith-main-9.png); - background-position: -106px -1134px; - width: 105px; - height: 105px; -} -.Mount_Head_Unicorn-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -212px -1134px; - width: 105px; - height: 105px; -} -.Mount_Head_Unicorn-White { - background-image: url(spritesmith-main-9.png); - background-position: -318px -1134px; - width: 105px; - height: 105px; -} -.Mount_Head_Unicorn-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -424px -1134px; - width: 105px; - height: 105px; -} -.Mount_Head_Whale-Base { - background-image: url(spritesmith-main-9.png); - background-position: -530px -1134px; - width: 105px; - height: 105px; -} -.Mount_Head_Whale-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -636px -1134px; - width: 105px; - height: 105px; -} -.Mount_Head_Whale-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -742px -1134px; - width: 105px; - height: 105px; -} -.Mount_Head_Whale-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -848px -1134px; - width: 105px; - height: 105px; -} -.Mount_Head_Whale-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -954px -1134px; - width: 105px; - height: 105px; -} -.Mount_Head_Whale-Red { +.Mount_Head_Rock-Red { background-image: url(spritesmith-main-9.png); background-position: -1060px -1134px; width: 105px; height: 105px; } -.Mount_Head_Whale-Shade { +.Mount_Head_Rock-Shade { background-image: url(spritesmith-main-9.png); background-position: -1240px 0px; width: 105px; height: 105px; } -.Mount_Head_Whale-Skeleton { +.Mount_Head_Rock-Skeleton { background-image: url(spritesmith-main-9.png); background-position: -1240px -106px; width: 105px; height: 105px; } -.Mount_Head_Whale-White { +.Mount_Head_Rock-White { background-image: url(spritesmith-main-9.png); background-position: -1240px -212px; width: 105px; height: 105px; } -.Mount_Head_Whale-Zombie { +.Mount_Head_Rock-Zombie { background-image: url(spritesmith-main-9.png); background-position: -1240px -318px; width: 105px; height: 105px; } -.Mount_Head_Wolf-Base { +.Mount_Head_Rooster-Base { background-image: url(spritesmith-main-9.png); - background-position: -136px 0px; + background-position: -1240px -424px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: -1240px -530px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: -1240px -636px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -1240px -742px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -1240px -848px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-Red { + background-image: url(spritesmith-main-9.png); + background-position: -1346px -742px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -1346px -848px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -1346px -954px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-White { + background-image: url(spritesmith-main-9.png); + background-position: -1346px -1060px; + width: 105px; + height: 105px; +} +.Mount_Head_Rooster-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -1346px -1166px; + width: 105px; + height: 105px; +} +.Mount_Head_Sabretooth-Base { + background-image: url(spritesmith-main-9.png); + background-position: -544px 0px; width: 135px; height: 135px; } -.Mount_Head_Wolf-CottonCandyBlue { +.Mount_Head_Sabretooth-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: 0px -136px; + width: 135px; + height: 135px; +} +.Mount_Head_Sabretooth-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: -136px -136px; + width: 135px; + height: 135px; +} +.Mount_Head_Sabretooth-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -272px 0px; + width: 135px; + height: 135px; +} +.Mount_Head_Sabretooth-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -272px -136px; + width: 135px; + height: 135px; +} +.Mount_Head_Sabretooth-Red { + background-image: url(spritesmith-main-9.png); + background-position: 0px -272px; + width: 135px; + height: 135px; +} +.Mount_Head_Sabretooth-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -136px -272px; + width: 135px; + height: 135px; +} +.Mount_Head_Sabretooth-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -272px -272px; + width: 135px; + height: 135px; +} +.Mount_Head_Sabretooth-White { + background-image: url(spritesmith-main-9.png); + background-position: -408px 0px; + width: 135px; + height: 135px; +} +.Mount_Head_Sabretooth-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -408px -136px; + width: 135px; + height: 135px; +} +.Mount_Head_Seahorse-Base { + background-image: url(spritesmith-main-9.png); + background-position: -696px -680px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: -816px 0px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: -816px -106px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -816px -212px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -816px -318px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-Red { + background-image: url(spritesmith-main-9.png); + background-position: -816px -424px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -816px -530px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -816px -636px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-White { + background-image: url(spritesmith-main-9.png); + background-position: 0px -816px; + width: 105px; + height: 105px; +} +.Mount_Head_Seahorse-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -106px -816px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-Base { + background-image: url(spritesmith-main-9.png); + background-position: -212px -816px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: -318px -816px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: -424px -816px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -530px -816px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -636px -816px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-Red { + background-image: url(spritesmith-main-9.png); + background-position: -742px -816px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -922px 0px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -922px -106px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-White { + background-image: url(spritesmith-main-9.png); + background-position: -922px -212px; + width: 105px; + height: 105px; +} +.Mount_Head_Sheep-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -922px -318px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-Base { + background-image: url(spritesmith-main-9.png); + background-position: -922px -424px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: -922px -530px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: -922px -636px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -922px -742px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-Golden { + background-image: url(spritesmith-main-9.png); + background-position: 0px -922px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-Red { + background-image: url(spritesmith-main-9.png); + background-position: -106px -922px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -212px -922px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -318px -922px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-White { + background-image: url(spritesmith-main-9.png); + background-position: -424px -922px; + width: 105px; + height: 105px; +} +.Mount_Head_Slime-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -530px -922px; + width: 105px; + height: 105px; +} +.Mount_Head_Snail-Base { + background-image: url(spritesmith-main-9.png); + background-position: -636px -922px; + width: 105px; + height: 105px; +} +.Mount_Head_Snail-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: -742px -922px; + width: 105px; + height: 105px; +} +.Mount_Head_Snail-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: -848px -922px; + width: 105px; + height: 105px; +} +.Mount_Head_Snail-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -1028px 0px; + width: 105px; + height: 105px; +} +.Mount_Head_Snail-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -1028px -106px; + width: 105px; + height: 105px; +} +.Mount_Head_Snail-Red { + background-image: url(spritesmith-main-9.png); + background-position: -1028px -212px; + width: 105px; + height: 105px; +} +.Mount_Head_Snail-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -1028px -318px; + width: 105px; + height: 105px; +} +.Mount_Head_Snail-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -1028px -424px; + width: 105px; + height: 105px; +} +.Mount_Head_Snail-White { + background-image: url(spritesmith-main-9.png); + background-position: -1028px -530px; + width: 105px; + height: 105px; +} +.Mount_Head_Snail-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -1028px -636px; + width: 105px; + height: 105px; +} +.Mount_Head_Snake-Base { + background-image: url(spritesmith-main-9.png); + background-position: -1028px -742px; + width: 105px; + height: 105px; +} +.Mount_Head_Snake-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: -1028px -848px; + width: 105px; + height: 105px; +} +.Mount_Head_Snake-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: 0px -1028px; + width: 105px; + height: 105px; +} +.Mount_Head_Snake-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -106px -1028px; + width: 105px; + height: 105px; +} +.Mount_Head_Snake-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -212px -1028px; + width: 105px; + height: 105px; +} +.Mount_Head_Snake-Red { + background-image: url(spritesmith-main-9.png); + background-position: -318px -1028px; + width: 105px; + height: 105px; +} +.Mount_Head_Snake-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -424px -1028px; + width: 105px; + height: 105px; +} +.Mount_Head_Snake-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -530px -1028px; + width: 105px; + height: 105px; +} +.Mount_Head_Snake-White { + background-image: url(spritesmith-main-9.png); + background-position: -636px -1028px; + width: 105px; + height: 105px; +} +.Mount_Head_Snake-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -742px -1028px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-Base { + background-image: url(spritesmith-main-9.png); + background-position: -848px -1028px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: -954px -1028px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: -1134px 0px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -1134px -106px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -1134px -212px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-Red { + background-image: url(spritesmith-main-9.png); + background-position: -1134px -318px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -1134px -424px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -1134px -530px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-White { + background-image: url(spritesmith-main-9.png); + background-position: -1134px -636px; + width: 105px; + height: 105px; +} +.Mount_Head_Spider-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -1134px -742px; + width: 105px; + height: 105px; +} +.Mount_Head_TRex-Base { + background-image: url(spritesmith-main-9.png); + background-position: -408px -272px; + width: 135px; + height: 135px; +} +.Mount_Head_TRex-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: 0px -408px; + width: 135px; + height: 135px; +} +.Mount_Head_TRex-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: -136px -408px; + width: 135px; + height: 135px; +} +.Mount_Head_TRex-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -272px -408px; + width: 135px; + height: 135px; +} +.Mount_Head_TRex-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -408px -408px; + width: 135px; + height: 135px; +} +.Mount_Head_TRex-Red { + background-image: url(spritesmith-main-9.png); + background-position: 0px 0px; + width: 135px; + height: 135px; +} +.Mount_Head_TRex-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -544px -136px; + width: 135px; + height: 135px; +} +.Mount_Head_TRex-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -544px -272px; + width: 135px; + height: 135px; +} +.Mount_Head_TRex-White { + background-image: url(spritesmith-main-9.png); + background-position: -544px -408px; + width: 135px; + height: 135px; +} +.Mount_Head_TRex-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: 0px -544px; + width: 135px; + height: 135px; +} +.Mount_Head_TigerCub-Base { + background-image: url(spritesmith-main-9.png); + background-position: -1134px -848px; + width: 105px; + height: 105px; +} +.Mount_Head_TigerCub-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: -1134px -954px; + width: 105px; + height: 105px; +} +.Mount_Head_TigerCub-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: 0px -1134px; + width: 105px; + height: 105px; +} +.Mount_Head_TigerCub-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -106px -1134px; + width: 105px; + height: 105px; +} +.Mount_Head_TigerCub-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -212px -1134px; + width: 105px; + height: 105px; +} +.Mount_Head_TigerCub-Peppermint { + background-image: url(spritesmith-main-9.png); + background-position: -318px -1134px; + width: 105px; + height: 105px; +} +.Mount_Head_TigerCub-Red { + background-image: url(spritesmith-main-9.png); + background-position: -424px -1134px; + width: 105px; + height: 105px; +} +.Mount_Head_TigerCub-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -530px -1134px; + width: 105px; + height: 105px; +} +.Mount_Head_TigerCub-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -636px -1134px; + width: 105px; + height: 105px; +} +.Mount_Head_TigerCub-Spooky { + background-image: url(spritesmith-main-9.png); + background-position: -742px -1134px; + width: 105px; + height: 105px; +} +.Mount_Head_TigerCub-White { + background-image: url(spritesmith-main-9.png); + background-position: -848px -1134px; + width: 105px; + height: 105px; +} +.Mount_Head_TigerCub-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -954px -1134px; + width: 105px; + height: 105px; +} +.Mount_Head_Turkey-Base { + background-image: url(spritesmith-main-9.png); + background-position: -1240px -954px; + width: 105px; + height: 105px; +} +.Mount_Head_Unicorn-Base { + background-image: url(spritesmith-main-9.png); + background-position: -1240px -1060px; + width: 105px; + height: 105px; +} +.Mount_Head_Unicorn-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: 0px -1240px; + width: 105px; + height: 105px; +} +.Mount_Head_Unicorn-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: -106px -1240px; + width: 105px; + height: 105px; +} +.Mount_Head_Unicorn-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -212px -1240px; + width: 105px; + height: 105px; +} +.Mount_Head_Unicorn-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -318px -1240px; + width: 105px; + height: 105px; +} +.Mount_Head_Unicorn-Red { + background-image: url(spritesmith-main-9.png); + background-position: -424px -1240px; + width: 105px; + height: 105px; +} +.Mount_Head_Unicorn-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -530px -1240px; + width: 105px; + height: 105px; +} +.Mount_Head_Unicorn-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -636px -1240px; + width: 105px; + height: 105px; +} +.Mount_Head_Unicorn-White { + background-image: url(spritesmith-main-9.png); + background-position: -272px -680px; + width: 105px; + height: 105px; +} +.Mount_Head_Unicorn-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -848px -1240px; + width: 105px; + height: 105px; +} +.Mount_Head_Whale-Base { + background-image: url(spritesmith-main-9.png); + background-position: -954px -1240px; + width: 105px; + height: 105px; +} +.Mount_Head_Whale-CottonCandyBlue { + background-image: url(spritesmith-main-9.png); + background-position: -1060px -1240px; + width: 105px; + height: 105px; +} +.Mount_Head_Whale-CottonCandyPink { + background-image: url(spritesmith-main-9.png); + background-position: -1166px -1240px; + width: 105px; + height: 105px; +} +.Mount_Head_Whale-Desert { + background-image: url(spritesmith-main-9.png); + background-position: -1346px 0px; + width: 105px; + height: 105px; +} +.Mount_Head_Whale-Golden { + background-image: url(spritesmith-main-9.png); + background-position: -1346px -106px; + width: 105px; + height: 105px; +} +.Mount_Head_Whale-Red { + background-image: url(spritesmith-main-9.png); + background-position: -1346px -212px; + width: 105px; + height: 105px; +} +.Mount_Head_Whale-Shade { + background-image: url(spritesmith-main-9.png); + background-position: -1346px -318px; + width: 105px; + height: 105px; +} +.Mount_Head_Whale-Skeleton { + background-image: url(spritesmith-main-9.png); + background-position: -1346px -424px; + width: 105px; + height: 105px; +} +.Mount_Head_Whale-White { + background-image: url(spritesmith-main-9.png); + background-position: -1346px -530px; + width: 105px; + height: 105px; +} +.Mount_Head_Whale-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -1346px -636px; + width: 105px; + height: 105px; +} +.Mount_Head_Wolf-Base { background-image: url(spritesmith-main-9.png); background-position: -136px -544px; width: 135px; height: 135px; } -.Mount_Head_Wolf-CottonCandyPink { +.Mount_Head_Wolf-CottonCandyBlue { background-image: url(spritesmith-main-9.png); background-position: -272px -544px; width: 135px; height: 135px; } -.Mount_Head_Wolf-Desert { +.Mount_Head_Wolf-CottonCandyPink { background-image: url(spritesmith-main-9.png); background-position: -408px -544px; width: 135px; height: 135px; } -.Mount_Head_Wolf-Golden { +.Mount_Head_Wolf-Desert { background-image: url(spritesmith-main-9.png); background-position: -544px -544px; width: 135px; height: 135px; } -.Mount_Head_Wolf-Peppermint { +.Mount_Head_Wolf-Golden { background-image: url(spritesmith-main-9.png); background-position: -680px 0px; width: 135px; height: 135px; } -.Mount_Head_Wolf-Red { +.Mount_Head_Wolf-Peppermint { background-image: url(spritesmith-main-9.png); background-position: -680px -136px; width: 135px; height: 135px; } -.Mount_Head_Wolf-Shade { +.Mount_Head_Wolf-Red { background-image: url(spritesmith-main-9.png); background-position: -680px -272px; width: 135px; height: 135px; } -.Mount_Head_Wolf-Skeleton { +.Mount_Head_Wolf-Shade { background-image: url(spritesmith-main-9.png); background-position: -680px -408px; width: 135px; height: 135px; } -.Mount_Head_Wolf-Spooky { +.Mount_Head_Wolf-Skeleton { background-image: url(spritesmith-main-9.png); background-position: -680px -544px; width: 135px; height: 135px; } -.Mount_Head_Wolf-White { +.Mount_Head_Wolf-Spooky { background-image: url(spritesmith-main-9.png); background-position: 0px -680px; width: 135px; height: 135px; } -.Mount_Head_Wolf-Zombie { +.Mount_Head_Wolf-White { background-image: url(spritesmith-main-9.png); background-position: -136px -680px; width: 135px; height: 135px; } +.Mount_Head_Wolf-Zombie { + background-image: url(spritesmith-main-9.png); + background-position: -136px 0px; + width: 135px; + height: 135px; +} .Mount_Icon_BearCub-Base { background-image: url(spritesmith-main-9.png); - background-position: -1066px -1546px; + background-position: -824px -1346px; width: 81px; height: 99px; } .Mount_Icon_BearCub-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -1148px -1546px; + background-position: -1312px -1452px; width: 81px; height: 99px; } .Mount_Icon_BearCub-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -1230px -1546px; + background-position: -906px -1346px; width: 81px; height: 99px; } .Mount_Icon_BearCub-Desert { background-image: url(spritesmith-main-9.png); - background-position: -1698px -1400px; + background-position: -988px -1346px; width: 81px; height: 99px; } .Mount_Icon_BearCub-Golden { background-image: url(spritesmith-main-9.png); - background-position: -1394px -1546px; + background-position: -1070px -1346px; width: 81px; height: 99px; } .Mount_Icon_BearCub-Peppermint { background-image: url(spritesmith-main-9.png); - background-position: -1476px -1546px; + background-position: -1152px -1346px; width: 81px; height: 99px; } .Mount_Icon_BearCub-Polar { background-image: url(spritesmith-main-9.png); - background-position: -1558px -1546px; + background-position: -1234px -1346px; width: 81px; height: 99px; } .Mount_Icon_BearCub-Red { background-image: url(spritesmith-main-9.png); - background-position: -1698px 0px; + background-position: -1316px -1346px; width: 81px; height: 99px; } .Mount_Icon_BearCub-Shade { background-image: url(spritesmith-main-9.png); - background-position: -1698px -100px; + background-position: -1452px 0px; width: 81px; height: 99px; } .Mount_Icon_BearCub-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -1698px -200px; + background-position: -1452px -100px; width: 81px; height: 99px; } .Mount_Icon_BearCub-Spooky { background-image: url(spritesmith-main-9.png); - background-position: -1346px -424px; + background-position: -1452px -200px; width: 81px; height: 99px; } .Mount_Icon_BearCub-White { background-image: url(spritesmith-main-9.png); - background-position: -1346px -524px; + background-position: -1452px -300px; width: 81px; height: 99px; } .Mount_Icon_BearCub-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -1346px -624px; + background-position: -1452px -400px; width: 81px; height: 99px; } .Mount_Icon_Bunny-Base { background-image: url(spritesmith-main-9.png); - background-position: -1346px -724px; + background-position: -1452px -500px; width: 81px; height: 99px; } .Mount_Icon_Bunny-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -1346px -824px; + background-position: -1452px -600px; width: 81px; height: 99px; } .Mount_Icon_Bunny-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -1346px -924px; + background-position: -1452px -700px; width: 81px; height: 99px; } .Mount_Icon_Bunny-Desert { background-image: url(spritesmith-main-9.png); - background-position: -1346px -1024px; + background-position: -1452px -800px; width: 81px; height: 99px; } .Mount_Icon_Bunny-Golden { background-image: url(spritesmith-main-9.png); - background-position: -1346px -1124px; + background-position: -1452px -900px; width: 81px; height: 99px; } .Mount_Icon_Bunny-Red { background-image: url(spritesmith-main-9.png); - background-position: -1346px -1224px; + background-position: -1452px -1000px; width: 81px; height: 99px; } .Mount_Icon_Bunny-Shade { background-image: url(spritesmith-main-9.png); - background-position: 0px -1346px; + background-position: -1452px -1100px; width: 81px; height: 99px; } .Mount_Icon_Bunny-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -82px -1346px; + background-position: -1452px -1200px; width: 81px; height: 99px; } .Mount_Icon_Bunny-White { background-image: url(spritesmith-main-9.png); - background-position: -164px -1346px; + background-position: -1452px -1300px; width: 81px; height: 99px; } .Mount_Icon_Bunny-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -246px -1346px; + background-position: -1534px 0px; width: 81px; height: 99px; } .Mount_Icon_Cactus-Base { background-image: url(spritesmith-main-9.png); - background-position: -328px -1346px; + background-position: -1534px -100px; width: 81px; height: 99px; } .Mount_Icon_Cactus-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -410px -1346px; + background-position: -1534px -200px; width: 81px; height: 99px; } .Mount_Icon_Cactus-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -492px -1346px; + background-position: -1534px -300px; width: 81px; height: 99px; } .Mount_Icon_Cactus-Desert { background-image: url(spritesmith-main-9.png); - background-position: -574px -1346px; + background-position: -1534px -400px; width: 81px; height: 99px; } .Mount_Icon_Cactus-Golden { background-image: url(spritesmith-main-9.png); - background-position: -656px -1346px; + background-position: -1534px -500px; width: 81px; height: 99px; } .Mount_Icon_Cactus-Peppermint { background-image: url(spritesmith-main-9.png); - background-position: -738px -1346px; + background-position: -1534px -600px; width: 81px; height: 99px; } .Mount_Icon_Cactus-Red { background-image: url(spritesmith-main-9.png); - background-position: -820px -1346px; + background-position: -1534px -700px; width: 81px; height: 99px; } .Mount_Icon_Cactus-Shade { background-image: url(spritesmith-main-9.png); - background-position: -902px -1346px; + background-position: -1534px -800px; width: 81px; height: 99px; } .Mount_Icon_Cactus-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -984px -1346px; + background-position: -1534px -900px; width: 81px; height: 99px; } .Mount_Icon_Cactus-Spooky { background-image: url(spritesmith-main-9.png); - background-position: -1066px -1346px; + background-position: -1534px -1000px; width: 81px; height: 99px; } .Mount_Icon_Cactus-White { background-image: url(spritesmith-main-9.png); - background-position: -1148px -1346px; + background-position: -1534px -1100px; width: 81px; height: 99px; } .Mount_Icon_Cactus-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -1230px -1346px; + background-position: -1534px -1200px; width: 81px; height: 99px; } .Mount_Icon_Cheetah-Base { background-image: url(spritesmith-main-9.png); - background-position: -1312px -1346px; + background-position: -1534px -1300px; width: 81px; height: 99px; } .Mount_Icon_Cheetah-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -1452px 0px; + background-position: 0px -1452px; width: 81px; height: 99px; } .Mount_Icon_Cheetah-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -1452px -100px; + background-position: -82px -1452px; width: 81px; height: 99px; } .Mount_Icon_Cheetah-Desert { background-image: url(spritesmith-main-9.png); - background-position: -1452px -200px; + background-position: -164px -1452px; width: 81px; height: 99px; } .Mount_Icon_Cheetah-Golden { background-image: url(spritesmith-main-9.png); - background-position: -1452px -300px; + background-position: -246px -1452px; width: 81px; height: 99px; } .Mount_Icon_Cheetah-Red { background-image: url(spritesmith-main-9.png); - background-position: -1452px -400px; + background-position: -328px -1452px; width: 81px; height: 99px; } .Mount_Icon_Cheetah-Shade { background-image: url(spritesmith-main-9.png); - background-position: -1452px -500px; + background-position: -410px -1452px; width: 81px; height: 99px; } .Mount_Icon_Cheetah-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -1452px -600px; + background-position: -492px -1452px; width: 81px; height: 99px; } .Mount_Icon_Cheetah-White { background-image: url(spritesmith-main-9.png); - background-position: -1452px -700px; + background-position: -574px -1452px; width: 81px; height: 99px; } .Mount_Icon_Cheetah-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -1452px -800px; + background-position: -656px -1452px; width: 81px; height: 99px; } .Mount_Icon_Cuttlefish-Base { background-image: url(spritesmith-main-9.png); - background-position: -1452px -900px; + background-position: -738px -1452px; width: 81px; height: 99px; } .Mount_Icon_Cuttlefish-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -1452px -1000px; + background-position: -820px -1452px; width: 81px; height: 99px; } .Mount_Icon_Cuttlefish-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -1452px -1100px; + background-position: -902px -1452px; width: 81px; height: 99px; } .Mount_Icon_Cuttlefish-Desert { background-image: url(spritesmith-main-9.png); - background-position: -1452px -1200px; + background-position: -984px -1452px; width: 81px; height: 99px; } .Mount_Icon_Cuttlefish-Golden { background-image: url(spritesmith-main-9.png); - background-position: -1452px -1300px; + background-position: -1066px -1452px; width: 81px; height: 99px; } .Mount_Icon_Cuttlefish-Red { background-image: url(spritesmith-main-9.png); - background-position: -1534px 0px; + background-position: -1148px -1452px; width: 81px; height: 99px; } .Mount_Icon_Cuttlefish-Shade { background-image: url(spritesmith-main-9.png); - background-position: -1534px -100px; + background-position: -1230px -1452px; width: 81px; height: 99px; } .Mount_Icon_Cuttlefish-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -1534px -200px; + background-position: -742px -1346px; width: 81px; height: 99px; } .Mount_Icon_Cuttlefish-White { background-image: url(spritesmith-main-9.png); - background-position: -1534px -300px; + background-position: -1394px -1452px; width: 81px; height: 99px; } .Mount_Icon_Cuttlefish-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -1534px -400px; + background-position: -1476px -1452px; width: 81px; height: 99px; } .Mount_Icon_Deer-Base { background-image: url(spritesmith-main-9.png); - background-position: -1534px -500px; + background-position: -1616px 0px; width: 81px; height: 99px; } .Mount_Icon_Deer-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -1534px -600px; + background-position: -1616px -100px; width: 81px; height: 99px; } .Mount_Icon_Deer-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -1534px -700px; + background-position: -1616px -200px; width: 81px; height: 99px; } .Mount_Icon_Deer-Desert { background-image: url(spritesmith-main-9.png); - background-position: -1534px -800px; + background-position: -1616px -300px; width: 81px; height: 99px; } .Mount_Icon_Deer-Golden { background-image: url(spritesmith-main-9.png); - background-position: -1534px -900px; + background-position: -1616px -400px; width: 81px; height: 99px; } .Mount_Icon_Deer-Red { background-image: url(spritesmith-main-9.png); - background-position: -1534px -1000px; + background-position: -1616px -500px; width: 81px; height: 99px; } .Mount_Icon_Deer-Shade { background-image: url(spritesmith-main-9.png); - background-position: -1534px -1100px; + background-position: -1616px -600px; width: 81px; height: 99px; } .Mount_Icon_Deer-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -1534px -1200px; + background-position: -1616px -700px; width: 81px; height: 99px; } .Mount_Icon_Deer-White { background-image: url(spritesmith-main-9.png); - background-position: -1534px -1300px; + background-position: -1616px -800px; width: 81px; height: 99px; } .Mount_Icon_Deer-Zombie { background-image: url(spritesmith-main-9.png); - background-position: 0px -1446px; + background-position: -1616px -900px; width: 81px; height: 99px; } .Mount_Icon_Dragon-Base { background-image: url(spritesmith-main-9.png); - background-position: -82px -1446px; + background-position: -1616px -1000px; width: 81px; height: 99px; } .Mount_Icon_Dragon-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -164px -1446px; + background-position: -1616px -1100px; width: 81px; height: 99px; } .Mount_Icon_Dragon-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -246px -1446px; + background-position: -1616px -1200px; width: 81px; height: 99px; } .Mount_Icon_Dragon-Desert { background-image: url(spritesmith-main-9.png); - background-position: -328px -1446px; + background-position: -1616px -1300px; width: 81px; height: 99px; } .Mount_Icon_Dragon-Golden { background-image: url(spritesmith-main-9.png); - background-position: -410px -1446px; + background-position: -1616px -1400px; width: 81px; height: 99px; } .Mount_Icon_Dragon-Peppermint { background-image: url(spritesmith-main-9.png); - background-position: -492px -1446px; + background-position: 0px -1552px; width: 81px; height: 99px; } .Mount_Icon_Dragon-Red { background-image: url(spritesmith-main-9.png); - background-position: -574px -1446px; + background-position: -82px -1552px; width: 81px; height: 99px; } .Mount_Icon_Dragon-Shade { background-image: url(spritesmith-main-9.png); - background-position: -656px -1446px; + background-position: -164px -1552px; width: 81px; height: 99px; } .Mount_Icon_Dragon-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -738px -1446px; + background-position: -246px -1552px; width: 81px; height: 99px; } .Mount_Icon_Dragon-Spooky { background-image: url(spritesmith-main-9.png); - background-position: -820px -1446px; + background-position: -328px -1552px; width: 81px; height: 99px; } .Mount_Icon_Dragon-White { background-image: url(spritesmith-main-9.png); - background-position: -902px -1446px; + background-position: -410px -1552px; width: 81px; height: 99px; } .Mount_Icon_Dragon-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -984px -1446px; + background-position: -492px -1552px; width: 81px; height: 99px; } .Mount_Icon_Egg-Base { background-image: url(spritesmith-main-9.png); - background-position: -1066px -1446px; + background-position: -574px -1552px; width: 81px; height: 99px; } .Mount_Icon_Egg-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -1148px -1446px; + background-position: -656px -1552px; width: 81px; height: 99px; } .Mount_Icon_Egg-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -1230px -1446px; + background-position: -738px -1552px; width: 81px; height: 99px; } .Mount_Icon_Egg-Desert { background-image: url(spritesmith-main-9.png); - background-position: -1312px -1446px; + background-position: -820px -1552px; width: 81px; height: 99px; } .Mount_Icon_Egg-Golden { background-image: url(spritesmith-main-9.png); - background-position: -1394px -1446px; + background-position: -902px -1552px; width: 81px; height: 99px; } .Mount_Icon_Egg-Red { background-image: url(spritesmith-main-9.png); - background-position: -1476px -1446px; + background-position: -984px -1552px; width: 81px; height: 99px; } .Mount_Icon_Egg-Shade { background-image: url(spritesmith-main-9.png); - background-position: -1616px 0px; + background-position: -1066px -1552px; width: 81px; height: 99px; } .Mount_Icon_Egg-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -1616px -100px; + background-position: -1148px -1552px; width: 81px; height: 99px; } .Mount_Icon_Egg-White { background-image: url(spritesmith-main-9.png); - background-position: -1616px -200px; + background-position: -1230px -1552px; width: 81px; height: 99px; } .Mount_Icon_Egg-Zombie { background-image: url(spritesmith-main-9.png); - background-position: -1616px -300px; + background-position: -1312px -1552px; width: 81px; height: 99px; } .Mount_Icon_FlyingPig-Base { background-image: url(spritesmith-main-9.png); - background-position: -1616px -400px; + background-position: -1394px -1552px; width: 81px; height: 99px; } .Mount_Icon_FlyingPig-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -1616px -500px; + background-position: -1476px -1552px; width: 81px; height: 99px; } .Mount_Icon_FlyingPig-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -1616px -600px; + background-position: -1558px -1552px; width: 81px; height: 99px; } .Mount_Icon_FlyingPig-Desert { background-image: url(spritesmith-main-9.png); - background-position: -1616px -700px; + background-position: -1698px 0px; width: 81px; height: 99px; } .Mount_Icon_FlyingPig-Golden { background-image: url(spritesmith-main-9.png); - background-position: -1616px -800px; + background-position: -1698px -100px; width: 81px; height: 99px; } .Mount_Icon_FlyingPig-Peppermint { background-image: url(spritesmith-main-9.png); - background-position: -1616px -900px; + background-position: -1698px -200px; width: 81px; height: 99px; } .Mount_Icon_FlyingPig-Red { background-image: url(spritesmith-main-9.png); - background-position: -1616px -1000px; + background-position: -1698px -300px; width: 81px; height: 99px; } .Mount_Icon_FlyingPig-Shade { background-image: url(spritesmith-main-9.png); - background-position: -1616px -1100px; + background-position: -1698px -400px; width: 81px; height: 99px; } .Mount_Icon_FlyingPig-Skeleton { background-image: url(spritesmith-main-9.png); - background-position: -1616px -1200px; + background-position: -1698px -500px; width: 81px; height: 99px; } .Mount_Icon_FlyingPig-Spooky { background-image: url(spritesmith-main-9.png); - background-position: -1616px -1300px; + background-position: -1698px -600px; width: 81px; height: 99px; } .Mount_Icon_FlyingPig-White { background-image: url(spritesmith-main-9.png); - background-position: -1616px -1400px; + background-position: -1698px -700px; width: 81px; height: 99px; } .Mount_Icon_FlyingPig-Zombie { background-image: url(spritesmith-main-9.png); - background-position: 0px -1546px; + background-position: -1698px -800px; width: 81px; height: 99px; } .Mount_Icon_Fox-Base { background-image: url(spritesmith-main-9.png); - background-position: -82px -1546px; + background-position: -1698px -900px; width: 81px; height: 99px; } .Mount_Icon_Fox-CottonCandyBlue { background-image: url(spritesmith-main-9.png); - background-position: -164px -1546px; + background-position: -1698px -1000px; width: 81px; height: 99px; } .Mount_Icon_Fox-CottonCandyPink { background-image: url(spritesmith-main-9.png); - background-position: -246px -1546px; + background-position: -1698px -1100px; width: 81px; height: 99px; } .Mount_Icon_Fox-Desert { background-image: url(spritesmith-main-9.png); - background-position: -328px -1546px; + background-position: -1698px -1200px; width: 81px; height: 99px; } .Mount_Icon_Fox-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -410px -1546px; - width: 81px; - height: 99px; -} -.Mount_Icon_Fox-Peppermint { - background-image: url(spritesmith-main-9.png); - background-position: -492px -1546px; - width: 81px; - height: 99px; -} -.Mount_Icon_Fox-Red { - background-image: url(spritesmith-main-9.png); - background-position: -574px -1546px; - width: 81px; - height: 99px; -} -.Mount_Icon_Fox-Shade { - background-image: url(spritesmith-main-9.png); - background-position: -656px -1546px; - width: 81px; - height: 99px; -} -.Mount_Icon_Fox-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -738px -1546px; - width: 81px; - height: 99px; -} -.Mount_Icon_Fox-Spooky { - background-image: url(spritesmith-main-9.png); - background-position: -820px -1546px; - width: 81px; - height: 99px; -} -.Mount_Icon_Fox-White { - background-image: url(spritesmith-main-9.png); - background-position: -902px -1546px; - width: 81px; - height: 99px; -} -.Mount_Icon_Fox-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -984px -1546px; - width: 81px; - height: 99px; -} -.Mount_Icon_Frog-Base { - background-image: url(spritesmith-main-9.png); - background-position: -378px -680px; - width: 105px; - height: 114px; -} -.Mount_Icon_Frog-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -484px -680px; - width: 105px; - height: 114px; -} -.Mount_Icon_Frog-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -590px -680px; - width: 105px; - height: 114px; -} -.Mount_Icon_Frog-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -696px -680px; - width: 105px; - height: 114px; -} -.Mount_Icon_Frog-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -816px 0px; - width: 105px; - height: 114px; -} -.Mount_Icon_Frog-Red { - background-image: url(spritesmith-main-9.png); - background-position: -816px -115px; - width: 105px; - height: 114px; -} -.Mount_Icon_Frog-Shade { - background-image: url(spritesmith-main-9.png); - background-position: -816px -230px; - width: 105px; - height: 114px; -} -.Mount_Icon_Frog-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -816px -345px; - width: 105px; - height: 114px; -} -.Mount_Icon_Frog-White { - background-image: url(spritesmith-main-9.png); - background-position: -816px -460px; - width: 105px; - height: 114px; -} -.Mount_Icon_Frog-Zombie { - background-image: url(spritesmith-main-9.png); - background-position: -272px -680px; - width: 105px; - height: 114px; -} -.Mount_Icon_Gryphon-Base { - background-image: url(spritesmith-main-9.png); - background-position: -1698px -300px; - width: 81px; - height: 99px; -} -.Mount_Icon_Gryphon-CottonCandyBlue { - background-image: url(spritesmith-main-9.png); - background-position: -1698px -400px; - width: 81px; - height: 99px; -} -.Mount_Icon_Gryphon-CottonCandyPink { - background-image: url(spritesmith-main-9.png); - background-position: -1698px -500px; - width: 81px; - height: 99px; -} -.Mount_Icon_Gryphon-Desert { - background-image: url(spritesmith-main-9.png); - background-position: -1698px -600px; - width: 81px; - height: 99px; -} -.Mount_Icon_Gryphon-Golden { - background-image: url(spritesmith-main-9.png); - background-position: -1698px -700px; - width: 81px; - height: 99px; -} -.Mount_Icon_Gryphon-Red { - background-image: url(spritesmith-main-9.png); - background-position: -1698px -800px; - width: 81px; - height: 99px; -} -.Mount_Icon_Gryphon-RoyalPurple { - background-image: url(spritesmith-main-9.png); - background-position: -1698px -900px; - width: 81px; - height: 99px; -} -.Mount_Icon_Gryphon-Shade { - background-image: url(spritesmith-main-9.png); - background-position: -1698px -1000px; - width: 81px; - height: 99px; -} -.Mount_Icon_Gryphon-Skeleton { - background-image: url(spritesmith-main-9.png); - background-position: -1698px -1100px; - width: 81px; - height: 99px; -} -.Mount_Icon_Gryphon-White { - background-image: url(spritesmith-main-9.png); - background-position: -1698px -1200px; - width: 81px; - height: 99px; -} -.Mount_Icon_Gryphon-Zombie { background-image: url(spritesmith-main-9.png); background-position: -1698px -1300px; width: 81px; height: 99px; } -.Mount_Icon_Hedgehog-Base { - background-image: url(spritesmith-main-9.png); - background-position: -1312px -1546px; - width: 81px; - height: 99px; -} diff --git a/common/dist/sprites/spritesmith-main-9.png b/common/dist/sprites/spritesmith-main-9.png index 6d24359800..718d501985 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/quests/inventory_quest_scroll_snail.png b/common/img/sprites/spritesmith/quests/inventory_quest_scroll_snail.png new file mode 100644 index 0000000000..c23f657cfa Binary files /dev/null and b/common/img/sprites/spritesmith/quests/inventory_quest_scroll_snail.png differ diff --git a/common/img/sprites/spritesmith/quests/quest_snail.png b/common/img/sprites/spritesmith/quests/quest_snail.png new file mode 100644 index 0000000000..bb80a3e55a Binary files /dev/null and b/common/img/sprites/spritesmith/quests/quest_snail.png differ diff --git a/common/img/sprites/spritesmith/stable/eggs/Pet_Egg_Snail.png b/common/img/sprites/spritesmith/stable/eggs/Pet_Egg_Snail.png new file mode 100644 index 0000000000..3bdc63e8b1 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/eggs/Pet_Egg_Snail.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Base.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Base.png new file mode 100644 index 0000000000..2359cb7566 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Base.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-CottonCandyBlue.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-CottonCandyBlue.png new file mode 100644 index 0000000000..ccdcb7e703 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-CottonCandyBlue.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-CottonCandyPink.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-CottonCandyPink.png new file mode 100644 index 0000000000..bafac69648 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-CottonCandyPink.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Desert.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Desert.png new file mode 100644 index 0000000000..af71640f1d Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Desert.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Golden.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Golden.png new file mode 100644 index 0000000000..c72f476af1 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Golden.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Red.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Red.png new file mode 100644 index 0000000000..dac11969cb Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Red.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Shade.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Shade.png new file mode 100644 index 0000000000..58773a85b1 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Shade.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Skeleton.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Skeleton.png new file mode 100644 index 0000000000..e498396d06 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Skeleton.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-White.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-White.png new file mode 100644 index 0000000000..fde55de1b8 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-White.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Zombie.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Zombie.png new file mode 100644 index 0000000000..69b71360c1 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Body_Snail-Zombie.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Base.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Base.png new file mode 100644 index 0000000000..ac038d3d72 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Base.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-CottonCandyBlue.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-CottonCandyBlue.png new file mode 100644 index 0000000000..b832b1814f Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-CottonCandyBlue.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-CottonCandyPink.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-CottonCandyPink.png new file mode 100644 index 0000000000..a41e02b80f Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-CottonCandyPink.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Desert.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Desert.png new file mode 100644 index 0000000000..9ad07dca80 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Desert.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Golden.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Golden.png new file mode 100644 index 0000000000..979ce41d89 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Golden.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Red.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Red.png new file mode 100644 index 0000000000..daa1cccfc8 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Red.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Shade.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Shade.png new file mode 100644 index 0000000000..03dcf55902 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Shade.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Skeleton.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Skeleton.png new file mode 100644 index 0000000000..2bf64616b1 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Skeleton.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-White.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-White.png new file mode 100644 index 0000000000..8b5e5acd8a Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-White.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Zombie.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Zombie.png new file mode 100644 index 0000000000..ed97f5eb8e Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Head_Snail-Zombie.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Base.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Base.png new file mode 100644 index 0000000000..773eb1396b Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Base.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-CottonCandyBlue.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-CottonCandyBlue.png new file mode 100644 index 0000000000..2a67d90fed Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-CottonCandyBlue.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-CottonCandyPink.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-CottonCandyPink.png new file mode 100644 index 0000000000..5ce350cebe Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-CottonCandyPink.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Desert.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Desert.png new file mode 100644 index 0000000000..3bdc5d0dac Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Desert.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Golden.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Golden.png new file mode 100644 index 0000000000..2c88f42d06 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Golden.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Red.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Red.png new file mode 100644 index 0000000000..d5ba91a34c Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Red.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Shade.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Shade.png new file mode 100644 index 0000000000..f311445fc2 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Shade.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Skeleton.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Skeleton.png new file mode 100644 index 0000000000..269f651903 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Skeleton.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-White.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-White.png new file mode 100644 index 0000000000..54c6e747b9 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-White.png differ diff --git a/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Zombie.png b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Zombie.png new file mode 100644 index 0000000000..af973bbe32 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/mounts/Mount_Icon_Snail-Zombie.png differ diff --git a/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Base.png b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Base.png new file mode 100644 index 0000000000..d8500a2034 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Base.png differ diff --git a/common/img/sprites/spritesmith/stable/pets/Pet-Snail-CottonCandyBlue.png b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-CottonCandyBlue.png new file mode 100644 index 0000000000..74bf390b08 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-CottonCandyBlue.png differ diff --git a/common/img/sprites/spritesmith/stable/pets/Pet-Snail-CottonCandyPink.png b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-CottonCandyPink.png new file mode 100644 index 0000000000..4cdbff51df Binary files /dev/null and b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-CottonCandyPink.png differ diff --git a/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Desert.png b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Desert.png new file mode 100644 index 0000000000..6a8748638a Binary files /dev/null and b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Desert.png differ diff --git a/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Golden.png b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Golden.png new file mode 100644 index 0000000000..7abbab06d5 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Golden.png differ diff --git a/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Red.png b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Red.png new file mode 100644 index 0000000000..df9e5e4aa5 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Red.png differ diff --git a/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Shade.png b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Shade.png new file mode 100644 index 0000000000..6344d9b15e Binary files /dev/null and b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Shade.png differ diff --git a/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Skeleton.png b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Skeleton.png new file mode 100644 index 0000000000..44f2a766ea Binary files /dev/null and b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Skeleton.png differ diff --git a/common/img/sprites/spritesmith/stable/pets/Pet-Snail-White.png b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-White.png new file mode 100644 index 0000000000..55dfe8b87e Binary files /dev/null and b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-White.png differ diff --git a/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Zombie.png b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Zombie.png new file mode 100644 index 0000000000..23124605d1 Binary files /dev/null and b/common/img/sprites/spritesmith/stable/pets/Pet-Snail-Zombie.png differ diff --git a/common/locales/en/content.json b/common/locales/en/content.json index a238f2a555..3eeedb30e4 100644 --- a/common/locales/en/content.json +++ b/common/locales/en/content.json @@ -49,7 +49,7 @@ "dropEggBearCubText": "Bear Cub", "dropEggBearCubMountText": "Bear", - "dropEggBearCubAdjective": "a cuddly", + "dropEggBearCubAdjective": "a brave", "questEggGryphonText": "Gryphon", "questEggGryphonMountText": "Gryphon", @@ -69,7 +69,7 @@ "questEggRatText": "Rat", "questEggRatMountText": "Rat", - "questEggRatAdjective": "a dirty", + "questEggRatAdjective": "a sociable", "questEggOctopusText": "Octopus", "questEggOctopusMountText": "Octopus", @@ -155,6 +155,10 @@ "questEggMonkeyMountText": "Monkey", "questEggMonkeyAdjective": "a mischievous", + "questEggSnailText": "Snail", + "questEggSnailMountText": "Snail", + "questEggSnailAdjective": "a slow but steady", + "eggNotes": "Find a hatching potion to pour on this egg, and it will hatch into <%= eggAdjective(locale) %> <%= eggText(locale) %>.", "hatchingPotionBase": "Base", diff --git a/common/locales/en/questsContent.json b/common/locales/en/questsContent.json index 792b5ac681..994d0a90fa 100644 --- a/common/locales/en/questsContent.json +++ b/common/locales/en/questsContent.json @@ -339,5 +339,12 @@ "questMonkeyCompletion": "You did it! No bananas for those fiends today. Overwhelmed by your diligence, the monkeys flee in panic. \"Look,\" says @Misceo. \"They left a few eggs behind.\"

@Leephon grins. \"Maybe a well-trained pet monkey can help you as much as the wild ones hinder you!\"", "questMonkeyBoss": "Monstrous Mandrill", "questMonkeyDropMonkeyEgg": "Monkey (Egg)", - "questMonkeyUnlockText": "Unlocks purchasable Monkey eggs in the Market" + "questMonkeyUnlockText": "Unlocks purchasable Monkey eggs in the Market", + + "questSnailText": "The Snail of Drudgery Sludge", + "questSnailNotes": "You're excited to begin questing in the abandoned Dungeons of Drudgery, but as soon as you enter, you feel the ground under your feet start to suck at your boots. You look up to the path ahead and see Habiticans mired in slime. @Overomega yells, \"They have too many unimportant tasks and dailies, and they're getting stuck on things that don't matter! Pull them out!\"

\"You need to find the source of the ooze,\" @Pfeffernusse agrees, \"or the tasks that they cannot accomplish will drag them down forever!\"

Pulling out your weapon, you wade through the gooey mud.... and encounter the fearsome Snail of Drudgery Sludge.", + "questSnailCompletion": "You bring your weapon down on the great Snail's shell, cracking it in two, releasing a flood of water. The slime is washed away, and the Habiticans around you rejoice. \"Look!\" says @Misceo. \"There's a small group of snail eggs in the remnants of the muck.\"", + "questSnailBoss": "Snail of Drudgery Sludge", + "questSnailDropSnailEgg": "Snail (Egg)", + "questSnailUnlockText": "Unlocks purchasable Snail eggs in the Market" } diff --git a/common/script/content/faq.js b/common/script/content/faq.js index bacad9c119..511e60a434 100644 --- a/common/script/content/faq.js +++ b/common/script/content/faq.js @@ -2,7 +2,13 @@ import t from './translation'; const NUMBER_OF_QUESTIONS = 12; -export const questions = []; +let faq = { + questions: [], + stillNeedHelp: { + ios: t('iosFaqStillNeedHelp'), + web: t('webFaqStillNeedHelp'), + }, +}; for (let i = 0; i <= NUMBER_OF_QUESTIONS; i++) { let question = { @@ -11,10 +17,7 @@ for (let i = 0; i <= NUMBER_OF_QUESTIONS; i++) { web: t(`webFaqAnswer${i}`), }; - questions.push(question); + faq.questions.push(question); } -export const stillNeedHelp = { - ios: t('iosFaqStillNeedHelp'), - web: t('webFaqStillNeedHelp'), -}; +module.exports = faq; diff --git a/common/script/content/index.js b/common/script/content/index.js index a8dfeae073..d5b8af6305 100644 --- a/common/script/content/index.js +++ b/common/script/content/index.js @@ -373,6 +373,13 @@ api.questEggs = { return u.achievements.quests && (u.achievements.quests.monkey != null) > 0; }) }, + Snail: { + text: t('questEggSnailText'), + adjective: t('questEggSnailAdjective'), + canBuy: (function(u) { + return u.achievements.quests && (u.achievements.quests.snail != null) > 0; + }) + }, }; _.each(api.questEggs, function(egg, key) { @@ -2488,6 +2495,38 @@ api.quests = { unlock: t('questMonkeyUnlockText') } }, + snail: { + text: t('questSnailText'), + notes: t('questSnailNotes'), + completion: t('questSnailCompletion'), + value: 4, + category: 'pet', + boss: { + name: t('questSnailBoss'), + hp: 500, + str: 1.5 + }, + drop: { + items: [ + { + type: 'eggs', + key: 'Snail', + text: t('questSnailDropSnailEgg') + }, { + type: 'eggs', + key: 'Snail', + text: t('questSnailDropSnailEgg') + }, { + type: 'eggs', + key: 'Snail', + text: t('questSnailDropSnailEgg') + } + ], + gp: 37, + exp: 275, + unlock: t('questSnailUnlockText') + } + }, }; _.each(api.quests, function(v, key) { diff --git a/common/script/fns/autoAllocate.js b/common/script/fns/autoAllocate.js new file mode 100644 index 0000000000..ab037e628b --- /dev/null +++ b/common/script/fns/autoAllocate.js @@ -0,0 +1,56 @@ +import _ from 'lodash'; +import splitWhitespace from '../libs/splitWhitespace'; + +/* + Updates user stats with new stats. Handles death, leveling up, etc + {stats} new stats + {update} if aggregated changes, pass in userObj as update. otherwise commits will be made immediately + */ + +module.exports = function(user) { + return user.stats[(function() { + var diff, ideal, lvlDiv7, preference, stats, suggested; + switch (user.preferences.allocationMode) { + case "flat": + stats = _.pick(user.stats, splitWhitespace('con str per int')); + return _.invert(stats)[_.min(stats)]; + case "classbased": + lvlDiv7 = user.stats.lvl / 7; + ideal = [lvlDiv7 * 3, lvlDiv7 * 2, lvlDiv7, lvlDiv7]; + preference = (function() { + switch (user.stats["class"]) { + case "wizard": + return ["int", "per", "con", "str"]; + case "rogue": + return ["per", "str", "int", "con"]; + case "healer": + return ["con", "int", "str", "per"]; + default: + return ["str", "con", "per", "int"]; + } + })(); + diff = [user.stats[preference[0]] - ideal[0], user.stats[preference[1]] - ideal[1], user.stats[preference[2]] - ideal[2], user.stats[preference[3]] - ideal[3]]; + suggested = _.findIndex(diff, (function(val) { + if (val === _.min(diff)) { + return true; + } + })); + if (~suggested) { + return preference[suggested]; + } else { + return "str"; + } + case "taskbased": + suggested = _.invert(user.stats.training)[_.max(user.stats.training)]; + _.merge(user.stats.training, { + str: 0, + int: 0, + con: 0, + per: 0 + }); + return suggested || "str"; + default: + return "str"; + } + })()]++; +}; diff --git a/common/script/fns/crit.js b/common/script/fns/crit.js new file mode 100644 index 0000000000..69ac9e5b93 --- /dev/null +++ b/common/script/fns/crit.js @@ -0,0 +1,15 @@ +module.exports = function(user, stat, chance) { + var s; + if (stat == null) { + stat = 'str'; + } + if (chance == null) { + chance = .03; + } + s = user._statsComputed[stat]; + if (user.fns.predictableRandom() <= chance * (1 + s / 100)) { + return 1.5 + 4 * s / (s + 200); + } else { + return 1; + } +}; diff --git a/common/script/fns/cron.js b/common/script/fns/cron.js new file mode 100644 index 0000000000..b43da4e0cd --- /dev/null +++ b/common/script/fns/cron.js @@ -0,0 +1,279 @@ +import moment from 'moment'; +import _ from 'lodash'; +import { + daysSince, + shouldDo, +} from '../cron'; +import { + capByLevel, + toNextLevel, +} from '../statHelpers'; +/* + ------------------------------------------------------ + Cron + ------------------------------------------------------ + */ + +/* + At end of day, add value to all incomplete Daily & Todo tasks (further incentive) + For incomplete Dailys, deduct experience + Make sure to run this function once in a while as server will not take care of overnight calculations. + And you have to run it every time client connects. + {user} + */ + +module.exports = function(user, options) { + var _progress, analyticsData, base, base1, base2, base3, base4, clearBuffs, dailyChecked, dailyDueUnchecked, daysMissed, expTally, lvl, lvlDiv2, multiDaysCountAsOneDay, now, perfect, plan, progress, ref, ref1, ref2, ref3, todoTally; + if (options == null) { + options = {}; + } + now = +options.now || +(new Date); + daysMissed = daysSince(user.lastCron, _.defaults({ + now: now + }, user.preferences)); + if (!(daysMissed > 0)) { + return; + } + user.auth.timestamps.loggedin = new Date(); + user.lastCron = now; + if (user.items.lastDrop.count > 0) { + user.items.lastDrop.count = 0; + } + perfect = true; + clearBuffs = { + str: 0, + int: 0, + per: 0, + con: 0, + stealth: 0, + streaks: false + }; + plan = (ref = user.purchased) != null ? ref.plan : void 0; + if (plan != null ? plan.customerId : void 0) { + if (typeof plan.dateUpdated === "undefined") { + // partial compensation for bug in subscription creation - https://github.com/HabitRPG/habitrpg/issues/6682 + plan.dateUpdated = new Date(); + } + if (moment(plan.dateUpdated).format('MMYYYY') !== moment().format('MMYYYY')) { + plan.gemsBought = 0; + plan.dateUpdated = new Date(); + _.defaults(plan.consecutive, { + count: 0, + offset: 0, + trinkets: 0, + gemCapExtra: 0 + }); + plan.consecutive.count++; + if (plan.consecutive.offset > 0) { + plan.consecutive.offset--; + } else if (plan.consecutive.count % 3 === 0) { + plan.consecutive.trinkets++; + plan.consecutive.gemCapExtra += 5; + if (plan.consecutive.gemCapExtra > 25) { + plan.consecutive.gemCapExtra = 25; + } + } + } + if (plan.dateTerminated && moment(plan.dateTerminated).isBefore(+(new Date))) { + _.merge(plan, { + planId: null, + customerId: null, + paymentMethod: null + }); + _.merge(plan.consecutive, { + count: 0, + offset: 0, + gemCapExtra: 0 + }); + if (typeof user.markModified === "function") { + user.markModified('purchased.plan'); + } + } + } + if (user.preferences.sleep === true) { + user.stats.buffs = clearBuffs; + user.dailys.forEach(function(daily) { + var completed, repeat, thatDay; + completed = daily.completed, repeat = daily.repeat; + thatDay = moment(now).subtract({ + days: 1 + }); + if (shouldDo(thatDay.toDate(), daily, user.preferences) || completed) { + _.each(daily.checklist, (function(box) { + box.completed = false; + return true; + })); + } + return daily.completed = false; + }); + return; + } + multiDaysCountAsOneDay = true; + todoTally = 0; + user.todos.forEach(function(task) { + var absVal, completed, delta, id; + if (!task) { + return; + } + id = task.id, completed = task.completed; + delta = user.ops.score({ + params: { + id: task.id, + direction: 'down' + }, + query: { + times: multiDaysCountAsOneDay != null ? multiDaysCountAsOneDay : { + 1: daysMissed + }, + cron: true + } + }); + absVal = completed ? Math.abs(task.value) : task.value; + return todoTally += absVal; + }); + dailyChecked = 0; + dailyDueUnchecked = 0; + if ((base = user.party.quest.progress).down == null) { + base.down = 0; + } + user.dailys.forEach(function(task) { + var EvadeTask, completed, delta, fractionChecked, id, j, n, ref1, ref2, scheduleMisses, thatDay; + if (!task) { + return; + } + id = task.id, completed = task.completed; + EvadeTask = 0; + scheduleMisses = daysMissed; + if (completed) { + dailyChecked += 1; + } else { + scheduleMisses = 0; + for (n = j = 0, ref1 = daysMissed; 0 <= ref1 ? j < ref1 : j > ref1; n = 0 <= ref1 ? ++j : --j) { + thatDay = moment(now).subtract({ + days: n + 1 + }); + if (shouldDo(thatDay.toDate(), task, user.preferences)) { + scheduleMisses++; + if (user.stats.buffs.stealth) { + user.stats.buffs.stealth--; + EvadeTask++; + } + if (multiDaysCountAsOneDay) { + break; + } + } + } + if (scheduleMisses > EvadeTask) { + perfect = false; + if (((ref2 = task.checklist) != null ? ref2.length : void 0) > 0) { + fractionChecked = _.reduce(task.checklist, (function(m, i) { + return m + (i.completed ? 1 : 0); + }), 0) / task.checklist.length; + dailyDueUnchecked += 1 - fractionChecked; + dailyChecked += fractionChecked; + } else { + dailyDueUnchecked += 1; + } + delta = user.ops.score({ + params: { + id: task.id, + direction: 'down' + }, + query: { + times: multiDaysCountAsOneDay != null ? multiDaysCountAsOneDay : { + 1: scheduleMisses - EvadeTask + }, + cron: true + } + }); + user.party.quest.progress.down += delta * (task.priority < 1 ? task.priority : 1); + } + } + (task.history != null ? task.history : task.history = []).push({ + date: +(new Date), + value: task.value + }); + task.completed = false; + if (completed || (scheduleMisses > 0)) { + return _.each(task.checklist, (function(i) { + i.completed = false; + return true; + })); + } + }); + user.habits.forEach(function(task) { + if (task.up === false || task.down === false) { + if (Math.abs(task.value) < 0.1) { + return task.value = 0; + } else { + return task.value = task.value / 2; + } + } + }); + ((base1 = (user.history != null ? user.history : user.history = {})).todos != null ? base1.todos : base1.todos = []).push({ + date: now, + value: todoTally + }); + expTally = user.stats.exp; + lvl = 0; + while (lvl < (user.stats.lvl - 1)) { + lvl++; + expTally += toNextLevel(lvl); + } + ((base2 = user.history).exp != null ? base2.exp : base2.exp = []).push({ + date: now, + value: expTally + }); + if (!((ref1 = user.purchased) != null ? (ref2 = ref1.plan) != null ? ref2.customerId : void 0 : void 0)) { + user.fns.preenUserHistory(); + if (typeof user.markModified === "function") { + user.markModified('history'); + } + if (typeof user.markModified === "function") { + user.markModified('dailys'); + } + } + user.stats.buffs = perfect ? ((base3 = user.achievements).perfect != null ? base3.perfect : base3.perfect = 0, user.achievements.perfect++, lvlDiv2 = Math.ceil(capByLevel(user.stats.lvl) / 2), { + str: lvlDiv2, + int: lvlDiv2, + per: lvlDiv2, + con: lvlDiv2, + stealth: 0, + streaks: false + }) : clearBuffs; + if (dailyDueUnchecked === 0 && dailyChecked === 0) { + dailyChecked = 1; + } + user.stats.mp += _.max([10, .1 * user._statsComputed.maxMP]) * dailyChecked / (dailyDueUnchecked + dailyChecked); + if (user.stats.mp > user._statsComputed.maxMP) { + user.stats.mp = user._statsComputed.maxMP; + } + progress = user.party.quest.progress; + _progress = _.cloneDeep(progress); + _.merge(progress, { + down: 0, + up: 0 + }); + progress.collect = _.transform(progress.collect, (function(m, v, k) { + return m[k] = 0; + })); + if ((base4 = user.flags).cronCount == null) { + base4.cronCount = 0; + } + user.flags.cronCount++; + analyticsData = { + category: 'behavior', + gaLabel: 'Cron Count', + gaValue: user.flags.cronCount, + uuid: user._id, + user: user, + resting: user.preferences.sleep, + cronCount: user.flags.cronCount, + progressUp: _.min([_progress.up, 900]), + progressDown: _progress.down + }; + if ((ref3 = options.analytics) != null) { + ref3.track('Cron', analyticsData); + } + return _progress; +}; diff --git a/common/script/fns/dotGet.js b/common/script/fns/dotGet.js new file mode 100644 index 0000000000..c95ba55656 --- /dev/null +++ b/common/script/fns/dotGet.js @@ -0,0 +1,5 @@ +import dotGet from '../libs/dotGet'; + +module.exports = function(user, path) { + return dotGet(user, path); +}; diff --git a/common/script/fns/dotSet.js b/common/script/fns/dotSet.js new file mode 100644 index 0000000000..283e7a50d0 --- /dev/null +++ b/common/script/fns/dotSet.js @@ -0,0 +1,12 @@ +import dotSet from '../libs/dotSet'; + +/* +This allows you to set object properties by dot-path. Eg, you can run pathSet('stats.hp',50,user) which is the same as +user.stats.hp = 50. This is useful because in our habitrpg-shared functions we're returning changesets as {path:value}, +so that different consumers can implement setters their own way. Derby needs model.set(path, value) for example, where +Angular sets object properties directly - in which case, this function will be used. + */ + +module.exports = function(user, path, val) { + return dotSet(user, path, val); +}; diff --git a/common/script/fns/getItem.js b/common/script/fns/getItem.js new file mode 100644 index 0000000000..b73ecf9073 --- /dev/null +++ b/common/script/fns/getItem.js @@ -0,0 +1,11 @@ +import content from '../content/index'; +import i18n from '../i18n'; + +module.exports = function(user, type) { + var item; + item = content.gear.flat[user.items.gear.equipped[type]]; + if (!item) { + return content.gear.flat[type + "_base_0"]; + } + return item; +}; diff --git a/common/script/fns/handleTwoHanded.js b/common/script/fns/handleTwoHanded.js new file mode 100644 index 0000000000..c700346988 --- /dev/null +++ b/common/script/fns/handleTwoHanded.js @@ -0,0 +1,24 @@ +import content from '../content/index'; +import i18n from '../i18n'; + +module.exports = function(user, item, type, req) { + var message, currentWeapon, currentShield; + if (type == null) { + type = 'equipped'; + } + currentShield = content.gear.flat[user.items.gear[type].shield]; + currentWeapon = content.gear.flat[user.items.gear[type].weapon]; + + if (item.type === "shield" && (currentWeapon ? currentWeapon.twoHanded : false)) { + user.items.gear[type].weapon = 'weapon_base_0'; + message = i18n.t('messageTwoHandedUnequip', { + twoHandedText: currentWeapon.text(req.language), offHandedText: item.text(req.language), + }, req.language); + } else if (item.twoHanded && (currentShield && user.items.gear[type].shield != "shield_base_0")) { + user.items.gear[type].shield = "shield_base_0"; + message = i18n.t('messageTwoHandedEquip', { + twoHandedText: item.text(req.language), offHandedText: currentShield.text(req.language), + }, req.language); + } + return message; +}; diff --git a/common/script/fns/index.js b/common/script/fns/index.js new file mode 100644 index 0000000000..24f3ab604b --- /dev/null +++ b/common/script/fns/index.js @@ -0,0 +1,31 @@ +import getItem from './getItem'; +import handleTwoHanded from './handleTwoHanded'; +import predictableRandom from './predictableRandom'; +import crit from './crit'; +import randomVal from './randomVal'; +import dotSet from './dotSet'; +import dotGet from './dotGet'; +import randomDrop from './randomDrop'; +import autoAllocate from './autoAllocate'; +import updateStats from './updateStats'; +import cron from './cron'; +import preenUserHistory from './preenUserHistory'; +import ultimateGear from './ultimateGear'; +import nullify from './nullify'; + +module.exports = { + getItem, + handleTwoHanded, + predictableRandom, + crit, + randomVal, + dotSet, + dotGet, + randomDrop, + autoAllocate, + updateStats, + cron, + preenUserHistory, + ultimateGear, + nullify, +}; diff --git a/common/script/fns/nullify.js b/common/script/fns/nullify.js new file mode 100644 index 0000000000..b6e30aa3b9 --- /dev/null +++ b/common/script/fns/nullify.js @@ -0,0 +1,5 @@ +module.exports = function(user) { + user.ops = null; + user.fns = null; + return user = null; +}; diff --git a/common/script/fns/predictableRandom.js b/common/script/fns/predictableRandom.js new file mode 100644 index 0000000000..64c8153746 --- /dev/null +++ b/common/script/fns/predictableRandom.js @@ -0,0 +1,20 @@ +import _ from 'lodash'; +/* +Because the same op needs to be performed on the client and the server (critical hits, item drops, etc), +we need things to be "random", but technically predictable so that they don't go out-of-sync + */ + +module.exports = function(user, seed) { + var x; + if (!seed || seed === Math.PI) { + seed = _.reduce(user.stats, (function(m, v) { + if (_.isNumber(v)) { + return m + v; + } else { + return m; + } + }), 0); + } + x = Math.sin(seed++) * 10000; + return x - Math.floor(x); +}; diff --git a/common/script/fns/preenUserHistory.js b/common/script/fns/preenUserHistory.js new file mode 100644 index 0000000000..a45dd82719 --- /dev/null +++ b/common/script/fns/preenUserHistory.js @@ -0,0 +1,25 @@ +import _ from 'lodash'; +import preenHistory from '../libs/preenHistory'; + +module.exports = function(user, minHistLen) { + if (minHistLen == null) { + minHistLen = 7; + } + _.each(user.habits.concat(user.dailys), function(task) { + var ref; + if (((ref = task.history) != null ? ref.length : void 0) > minHistLen) { + task.history = preenHistory(task.history); + } + return true; + }); + _.defaults(user.history, { + todos: [], + exp: [] + }); + if (user.history.exp.length > minHistLen) { + user.history.exp = preenHistory(user.history.exp); + } + if (user.history.todos.length > minHistLen) { + return user.history.todos = preenHistory(user.history.todos); + } +}; diff --git a/common/script/fns/randomDrop.js b/common/script/fns/randomDrop.js new file mode 100644 index 0000000000..b0121b157b --- /dev/null +++ b/common/script/fns/randomDrop.js @@ -0,0 +1,82 @@ +import _ from 'lodash'; +import content from '../content/index'; +import i18n from '../i18n'; +import { daysSince } from '../cron'; +import { diminishingReturns } from '../statHelpers'; + +// Clone a drop object maintaining its functions so that we can change it without affecting the original item +function cloneDropItem (drop) { + return _.cloneDeep(drop, function (val) { + return _.isFunction(val) ? val : undefined; // undefined will be handled by lodash + }); +} + +module.exports = function(user, modifiers, req) { + var acceptableDrops, base, base1, base2, chance, drop, dropK, dropMultiplier, name, name1, name2, quest, rarity, ref, ref1, ref2, ref3, task; + task = modifiers.task; + chance = _.min([Math.abs(task.value - 21.27), 37.5]) / 150 + .02; + chance *= task.priority * (1 + (task.streak / 100 || 0)) * (1 + (user._statsComputed.per / 100)) * (1 + (user.contributor.level / 40 || 0)) * (1 + (user.achievements.rebirths / 20 || 0)) * (1 + (user.achievements.streak / 200 || 0)) * (user._tmp.crit || 1) * (1 + .5 * (_.reduce(task.checklist, (function(m, i) { + return m + (i.completed ? 1 : 0); + }), 0) || 0)); + chance = diminishingReturns(chance, 0.75); + quest = content.quests[(ref = user.party.quest) != null ? ref.key : void 0]; + if ((quest != null ? quest.collect : void 0) && user.fns.predictableRandom(user.stats.gp) < chance) { + dropK = user.fns.randomVal(quest.collect, { + key: true + }); + user.party.quest.progress.collect[dropK]++; + if (typeof user.markModified === "function") { + user.markModified('party.quest.progress'); + } + } + dropMultiplier = ((ref1 = user.purchased) != null ? (ref2 = ref1.plan) != null ? ref2.customerId : void 0 : void 0) ? 2 : 1; + if ((daysSince(user.items.lastDrop.date, user.preferences) === 0) && (user.items.lastDrop.count >= dropMultiplier * (5 + Math.floor(user._statsComputed.per / 25) + (user.contributor.level || 0)))) { + return; + } + if (((ref3 = user.flags) != null ? ref3.dropsEnabled : void 0) && user.fns.predictableRandom(user.stats.exp) < chance) { + rarity = user.fns.predictableRandom(user.stats.gp); + if (rarity > .6) { + drop = cloneDropItem(user.fns.randomVal(_.where(content.food, { + canDrop: true + }))); + if ((base = user.items.food)[name = drop.key] == null) { + base[name] = 0; + } + user.items.food[drop.key] += 1; + drop.type = 'Food'; + drop.dialog = i18n.t('messageDropFood', { + dropArticle: drop.article, + dropText: drop.text(req.language), + dropNotes: drop.notes(req.language) + }, req.language); + } else if (rarity > .3) { + drop = cloneDropItem(user.fns.randomVal(content.dropEggs)); + if ((base1 = user.items.eggs)[name1 = drop.key] == null) { + base1[name1] = 0; + } + user.items.eggs[drop.key]++; + drop.type = 'Egg'; + drop.dialog = i18n.t('messageDropEgg', { + dropText: drop.text(req.language), + dropNotes: drop.notes(req.language) + }, req.language); + } else { + acceptableDrops = rarity < .02 ? ['Golden'] : rarity < .09 ? ['Zombie', 'CottonCandyPink', 'CottonCandyBlue'] : rarity < .18 ? ['Red', 'Shade', 'Skeleton'] : ['Base', 'White', 'Desert']; + drop = cloneDropItem(user.fns.randomVal(_.pick(content.hatchingPotions, (function(v, k) { + return acceptableDrops.indexOf(k) >= 0; + })))); + if ((base2 = user.items.hatchingPotions)[name2 = drop.key] == null) { + base2[name2] = 0; + } + user.items.hatchingPotions[drop.key]++; + drop.type = 'HatchingPotion'; + drop.dialog = i18n.t('messageDropPotion', { + dropText: drop.text(req.language), + dropNotes: drop.notes(req.language) + }, req.language); + } + user._tmp.drop = drop; + user.items.lastDrop.date = +(new Date); + return user.items.lastDrop.count++; + } +}; diff --git a/common/script/fns/randomVal.js b/common/script/fns/randomVal.js new file mode 100644 index 0000000000..3c2b5b82e8 --- /dev/null +++ b/common/script/fns/randomVal.js @@ -0,0 +1,14 @@ +import _ from 'lodash'; + +/* + Get a random property from an object + returns random property (the value) + */ + +module.exports = function(user, obj, options) { + var array, rand; + array = (options != null ? options.key : void 0) ? _.keys(obj) : _.values(obj); + rand = user.fns.predictableRandom(options != null ? options.seed : void 0); + array.sort(); + return array[Math.floor(rand * array.length)]; +}; diff --git a/common/script/fns/ultimateGear.js b/common/script/fns/ultimateGear.js new file mode 100644 index 0000000000..1333e8cc38 --- /dev/null +++ b/common/script/fns/ultimateGear.js @@ -0,0 +1,33 @@ +import content from '../content/index'; +import _ from 'lodash'; + +module.exports = function(user) { + var base, owned; + owned = typeof window !== "undefined" && window !== null ? user.items.gear.owned : user.items.gear.owned.toObject(); + if ((base = user.achievements).ultimateGearSets == null) { + base.ultimateGearSets = { + healer: false, + wizard: false, + rogue: false, + warrior: false + }; + } + content.classes.forEach(function(klass) { + if (user.achievements.ultimateGearSets[klass] !== true) { + return user.achievements.ultimateGearSets[klass] = _.reduce(['armor', 'shield', 'head', 'weapon'], function(soFarGood, type) { + var found; + found = _.find(content.gear.tree[type][klass], { + last: true + }); + return soFarGood && (!found || owned[found.key] === true); + }, true); + } + }); + if (typeof user.markModified === "function") { + user.markModified('achievements.ultimateGearSets'); + } + if (_.contains(user.achievements.ultimateGearSets, true) && user.flags.armoireEnabled !== true) { + user.flags.armoireEnabled = true; + return typeof user.markModified === "function" ? user.markModified('flags') : void 0; + } +}; diff --git a/common/script/fns/updateStats.js b/common/script/fns/updateStats.js new file mode 100644 index 0000000000..3ce83ed664 --- /dev/null +++ b/common/script/fns/updateStats.js @@ -0,0 +1,109 @@ +import _ from 'lodash'; +import { + MAX_HEALTH, + MAX_STAT_POINTS +} from '../constants'; +import { toNextLevel } from '../statHelpers'; +module.exports = function (user, stats, req, analytics) { + let allocatedStatPoints; + let totalStatPoints; + let experienceToNextLevel; + + if (stats.hp <= 0) { + user.stats.hp = 0; + return user.stats.hp; + } + + user.stats.hp = stats.hp; + user.stats.gp = stats.gp >= 0 ? stats.gp : 0; + + experienceToNextLevel = toNextLevel(user.stats.lvl); + + if (stats.exp >= experienceToNextLevel) { + user.stats.exp = stats.exp; + + while (stats.exp >= experienceToNextLevel) { + stats.exp -= experienceToNextLevel; + user.stats.lvl++; + + experienceToNextLevel = toNextLevel(user.stats.lvl); + user.stats.hp = MAX_HEALTH; + allocatedStatPoints = user.stats.str + user.stats.int + user.stats.con + user.stats.per; + totalStatPoints = allocatedStatPoints + user.stats.points; + + if (totalStatPoints >= MAX_STAT_POINTS) { + continue; // eslint-disable-line no-continue + } + if (user.preferences.automaticAllocation) { + user.fns.autoAllocate(); + } else { + user.stats.points = user.stats.lvl - allocatedStatPoints; + totalStatPoints = user.stats.points + allocatedStatPoints; + + if (totalStatPoints > MAX_STAT_POINTS) { + user.stats.points = MAX_STAT_POINTS - allocatedStatPoints; + } + + if (user.stats.points < 0) { + user.stats.points = 0; + } + } + } + } + + user.stats.exp = stats.exp; + user.flags = user.flags || {}; + + if (!user.flags.customizationsNotification && (user.stats.exp > 5 || user.stats.lvl > 1)) { + user.flags.customizationsNotification = true; + } + if (!user.flags.itemsEnabled && (user.stats.exp > 10 || user.stats.lvl > 1)) { + user.flags.itemsEnabled = true; + } + if (!user.flags.dropsEnabled && user.stats.lvl >= 3) { + user.flags.dropsEnabled = true; + if (user.items.eggs["Wolf"] > 0) { + user.items.eggs["Wolf"]++; + } else { + user.items.eggs["Wolf"] = 1; + } + } + if (!user.flags.classSelected && user.stats.lvl >= 10) { + user.flags.classSelected; + } + _.each({ + vice1: 30, + atom1: 15, + moonstone1: 60, + goldenknight1: 40 + }, function(lvl, k) { + var analyticsData, base, base1, ref; + if (!((ref = user.flags.levelDrops) != null ? ref[k] : void 0) && user.stats.lvl >= lvl) { + if ((base = user.items.quests)[k] == null) { + base[k] = 0; + } + user.items.quests[k]++; + ((base1 = user.flags).levelDrops != null ? base1.levelDrops : base1.levelDrops = {})[k] = true; + if (typeof user.markModified === "function") { + user.markModified('flags.levelDrops'); + } + analyticsData = { + uuid: user._id, + itemKey: k, + acquireMethod: 'Level Drop', + category: 'behavior' + }; + if (analytics != null) { + analytics.track('acquire item', analyticsData); + } + if (!user._tmp) user._tmp = {} + return user._tmp.drop = { + type: 'Quest', + key: k + }; + } + }); + if (!user.flags.rebirthEnabled && (user.stats.lvl >= 50 || user.achievements.beastMaster)) { + return user.flags.rebirthEnabled = true; + } +}; diff --git a/common/script/index.js b/common/script/index.js index 7db322f6e7..ea502e9a7d 100644 --- a/common/script/index.js +++ b/common/script/index.js @@ -12,6 +12,8 @@ import { } from './constants'; import * as statHelpers from './statHelpers'; +import importedLibs from './libs'; + var $w, preenHistory, sortOrder, indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; @@ -29,140 +31,16 @@ api.maxHealth = MAX_HEALTH; api.tnl = statHelpers.toNextLevel; api.diminishingReturns = statHelpers.diminishingReturns; -$w = api.$w = function(s) { - return s.split(' '); -}; +$w = api.$w = importedLibs.splitWhitespace; +api.dotSet = importedLibs.dotSet; +api.dotGet = importedLibs.dotGet; +api.refPush = importedLibs.refPush; +api.planGemLimits = importedLibs.planGemLimits; -api.dotSet = function(obj, path, val) { - var arr; - arr = path.split('.'); - return _.reduce(arr, (function(_this) { - return function(curr, next, index) { - if ((arr.length - 1) === index) { - curr[next] = val; - } - return curr[next] != null ? curr[next] : curr[next] = {}; - }; - })(this), obj); -}; +preenHistory = importedLibs.preenHistory; -api.dotGet = function(obj, path) { - return _.reduce(path.split('.'), ((function(_this) { - return function(curr, next) { - return curr != null ? curr[next] : void 0; - }; - })(this)), obj); -}; - - -/* - Reflists are arrays, but stored as objects. Mongoose has a helluvatime working with arrays (the main problem for our - syncing issues) - so the goal is to move away from arrays to objects, since mongoose can reference elements by ID - no problem. To maintain sorting, we use these helper functions: - */ - -api.refPush = function(reflist, item, prune) { - if (prune == null) { - prune = 0; - } - item.sort = _.isEmpty(reflist) ? 0 : _.max(reflist, 'sort').sort + 1; - if (!(item.id && !reflist[item.id])) { - item.id = api.uuid(); - } - return reflist[item.id] = item; -}; - -api.planGemLimits = { - convRate: 20, - convCap: 25 -}; - -/* -Preen history for users with > 7 history entries -This takes an infinite array of single day entries [day day day day day...], and turns it into a condensed array -of averages, condensing more the further back in time we go. Eg, 7 entries each for last 7 days; 1 entry each week -of this month; 1 entry for each month of this year; 1 entry per previous year: [day*7 week*4 month*12 year*infinite] - */ - -preenHistory = function(history) { - var newHistory, preen, thisMonth; - history = _.filter(history, function(h) { - return !!h; - }); - newHistory = []; - preen = function(amount, groupBy) { - var groups; - groups = _.chain(history).groupBy(function(h) { - return moment(h.date).format(groupBy); - }).sortBy(function(h, k) { - return k; - }).value(); - groups = groups.slice(-amount); - groups.pop(); - return _.each(groups, function(group) { - newHistory.push({ - date: moment(group[0].date).toDate(), - value: _.reduce(group, (function(m, obj) { - return m + obj.value; - }), 0) / group.length - }); - return true; - }); - }; - preen(50, "YYYY"); - preen(moment().format('MM'), "YYYYMM"); - thisMonth = moment().format('YYYYMM'); - newHistory = newHistory.concat(_.filter(history, function(h) { - return moment(h.date).format('YYYYMM') === thisMonth; - })); - return newHistory; -}; - -/* - Preen 3-day past-completed To-Dos from Angular & mobile app - */ - -api.preenTodos = function(tasks) { - return _.filter(tasks, function(t) { - return !t.completed || (t.challenge && t.challenge.id) || moment(t.dateCompleted).isAfter(moment().subtract({ - days: 3 - })); - }); -}; - -/* - Update the in-browser store with new gear. FIXME this was in user.fns, but it was causing strange issues there - */ - -sortOrder = _.reduce(content.gearTypes, (function(m, v, k) { - m[v] = k; - return m; -}), {}); - -api.updateStore = function(user) { - var changes; - if (!user) { - return; - } - changes = []; - _.each(content.gearTypes, function(type) { - var found; - found = _.find(content.gear.tree[type][user.stats["class"]], function(item) { - return !user.items.gear.owned[item.key]; - }); - if (found) { - changes.push(found); - } - return true; - }); - changes = changes.concat(_.filter(content.gear.flat, function(v) { - var ref; - return ((ref = v.klass) === 'special' || ref === 'mystery' || ref === 'armoire') && !user.items.gear.owned[v.key] && (typeof v.canOwn === "function" ? v.canOwn(user) : void 0); - })); - return _.sortBy(changes, function(c) { - return sortOrder[c.type]; - }); -}; +api.preenTodos = importedLibs.preenTodos; +api.updateStore = importedLibs.updateStore; /* @@ -180,289 +58,19 @@ Misc Helpers ------------------------------------------------------ */ -api.uuid = function() { - return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) { - var r, v; - r = Math.random() * 16 | 0; - v = (c === "x" ? r : r & 0x3 | 0x8); - return v.toString(16); - }); -}; - -api.countExists = function(items) { - return _.reduce(items, (function(m, v) { - return m + (v ? 1 : 0); - }), 0); -}; - - -/* -Even though Mongoose handles task defaults, we want to make sure defaults are set on the client-side before -sending up to the server for performance - */ - -api.taskDefaults = function(task) { - var defaults, ref, ref1, ref2; - if (task == null) { - task = {}; - } - if (!(task.type && ((ref = task.type) === 'habit' || ref === 'daily' || ref === 'todo' || ref === 'reward'))) { - task.type = 'habit'; - } - defaults = { - id: api.uuid(), - text: task.id != null ? task.id : '', - notes: '', - priority: 1, - challenge: {}, - attribute: 'str', - dateCreated: new Date() - }; - _.defaults(task, defaults); - if (task.type === 'habit') { - _.defaults(task, { - up: true, - down: true - }); - } - if ((ref1 = task.type) === 'habit' || ref1 === 'daily') { - _.defaults(task, { - history: [] - }); - } - if ((ref2 = task.type) === 'daily' || ref2 === 'todo') { - _.defaults(task, { - completed: false - }); - } - if (task.type === 'daily') { - _.defaults(task, { - streak: 0, - repeat: { - su: true, - m: true, - t: true, - w: true, - th: true, - f: true, - s: true - } - }, { - startDate: new Date(), - everyX: 1, - frequency: 'weekly' - }); - } - task._id = task.id; - if (task.value == null) { - task.value = task.type === 'reward' ? 10 : 0; - } - if (!_.isNumber(task.priority)) { - task.priority = 1; - } - return task; -}; - -api.percent = function(x, y, dir) { - var roundFn; - switch (dir) { - case "up": - roundFn = Math.ceil; - break; - case "down": - roundFn = Math.floor; - break; - default: - roundFn = Math.round; - } - if (x === 0) { - x = 1; - } - return Math.max(0, roundFn(x / y * 100)); -}; - - -/* -Remove whitespace #FIXME are we using this anywwhere? Should we be? - */ - -api.removeWhitespace = function(str) { - if (!str) { - return ''; - } - return str.replace(/\s/g, ''); -}; - - -/* -Encode the download link for .ics iCal file - */ - -api.encodeiCalLink = function(uid, apiToken) { - var loc, ref; - loc = (typeof window !== "undefined" && window !== null ? window.location.host : void 0) || (typeof process !== "undefined" && process !== null ? (ref = process.env) != null ? ref.BASE_URL : void 0 : void 0) || ''; - return encodeURIComponent("http://" + loc + "/v1/users/" + uid + "/calendar.ics?apiToken=" + apiToken); -}; - - -/* -Gold amount from their money - */ - -api.gold = function(num) { - if (num) { - return Math.floor(num); - } else { - return "0"; - } -}; - - -/* -Silver amount from their money - */ - -api.silver = function(num) { - if (num) { - return ("0" + Math.floor((num - Math.floor(num)) * 100)).slice(-2); - } else { - return "00"; - } -}; - - -/* -Task classes given everything about the class - */ - -api.taskClasses = function(task, filters, dayStart, lastCron, showCompleted, main) { - var classes, completed, enabled, filter, priority, ref, repeat, type, value; - if (filters == null) { - filters = []; - } - if (dayStart == null) { - dayStart = 0; - } - if (lastCron == null) { - lastCron = +(new Date); - } - if (showCompleted == null) { - showCompleted = false; - } - if (main == null) { - main = false; - } - if (!task) { - return; - } - type = task.type, completed = task.completed, value = task.value, repeat = task.repeat, priority = task.priority; - if (main) { - if (!task._editing) { - for (filter in filters) { - enabled = filters[filter]; - if (enabled && !((ref = task.tags) != null ? ref[filter] : void 0)) { - return 'hidden'; - } - } - } - } - classes = type; - if (task._editing) { - classes += " beingEdited"; - } - if (type === 'todo' || type === 'daily') { - if (completed || (type === 'daily' && !shouldDo(+(new Date), task, { - dayStart: dayStart - }))) { - classes += " completed"; - } else { - classes += " uncompleted"; - } - } else if (type === 'habit') { - if (task.down && task.up) { - classes += ' habit-wide'; - } - if (!task.down && !task.up) { - classes += ' habit-narrow'; - } - } - if (priority === 0.1) { - classes += ' difficulty-trivial'; - } else if (priority === 1) { - classes += ' difficulty-easy'; - } else if (priority === 1.5) { - classes += ' difficulty-medium'; - } else if (priority === 2) { - classes += ' difficulty-hard'; - } - if (value < -20) { - classes += ' color-worst'; - } else if (value < -10) { - classes += ' color-worse'; - } else if (value < -1) { - classes += ' color-bad'; - } else if (value < 1) { - classes += ' color-neutral'; - } else if (value < 5) { - classes += ' color-good'; - } else if (value < 10) { - classes += ' color-better'; - } else { - classes += ' color-best'; - } - return classes; -}; - - -/* -Friendly timestamp - */ - -api.friendlyTimestamp = function(timestamp) { - return moment(timestamp).format('MM/DD h:mm:ss a'); -}; - - -/* -Does user have new chat messages? - */ - -api.newChatMessages = function(messages, lastMessageSeen) { - if (!((messages != null ? messages.length : void 0) > 0)) { - return false; - } - return (messages != null ? messages[0] : void 0) && (messages[0].id !== lastMessageSeen); -}; - - -/* -are any tags active? - */ - -api.noTags = function(tags) { - return _.isEmpty(tags) || _.isEmpty(_.filter(tags, function(t) { - return t; - })); -}; - - -/* -Are there tags applied? - */ - -api.appliedTags = function(userTags, taskTags) { - var arr; - arr = []; - _.each(userTags, function(t) { - if (t == null) { - return; - } - if (taskTags != null ? taskTags[t.id] : void 0) { - return arr.push(t.name); - } - }); - return arr.join(', '); -}; +api.uuid = importedLibs.uuid; +api.countExists = importedLibs.countExists; +api.taskDefaults = importedLibs.taskDefaults; +api.percent = importedLibs.percent; +api.removeWhitespace = importedLibs.removeWhitespace; +api.encodeiCalLink = importedLibs.encodeiCalLink; +api.gold = importedLibs.gold; +api.silver = importedLibs.silver; +api.taskClasses = importedLibs.taskClasses; +api.friendlyTimestamp = importedLibs.friendlyTimestamp; +api.newChatMessages = importedLibs.newChatMessages; +api.noTags = importedLibs.noTags; +api.appliedTags = importedLibs.appliedTags; /* @@ -510,6 +118,9 @@ TODO * Move to $resource! */ +import importedOps from './ops'; +import importedFns from './fns'; + api.wrap = function(user, main) { if (main == null) { main = true; @@ -520,2184 +131,68 @@ api.wrap = function(user, main) { user._wrapped = true; if (main) { user.ops = { - update: function(req, cb) { - _.each(req.body, function(v, k) { - user.fns.dotSet(k, v); - return true; - }); - return typeof cb === "function" ? cb(null, user) : void 0; - }, - sleep: function(req, cb) { - user.preferences.sleep = !user.preferences.sleep; - return typeof cb === "function" ? cb(null, {}) : void 0; - }, - revive: function(req, cb, analytics) { - var analyticsData, base, cl, gearOwned, item, losableItems, lostItem, lostStat; - if (!(user.stats.hp <= 0)) { - return typeof cb === "function" ? cb({ - code: 400, - message: "Cannot revive if not dead" - }) : void 0; - } - _.merge(user.stats, { - hp: 50, - exp: 0, - gp: 0 - }); - if (user.stats.lvl > 1) { - user.stats.lvl--; - } - lostStat = user.fns.randomVal(_.reduce(['str', 'con', 'per', 'int'], (function(m, k) { - if (user.stats[k]) { - m[k] = k; - } - return m; - }), {})); - if (lostStat) { - user.stats[lostStat]--; - } - cl = user.stats["class"]; - gearOwned = (typeof (base = user.items.gear.owned).toObject === "function" ? base.toObject() : void 0) || user.items.gear.owned; - losableItems = {}; - _.each(gearOwned, function(v, k) { - var itm; - if (v) { - itm = content.gear.flat['' + k]; - if (itm) { - if ((itm.value > 0 || k === 'weapon_warrior_0') && (itm.klass === cl || (itm.klass === 'special' && (!itm.specialClass || itm.specialClass === cl)) || itm.klass === 'armoire')) { - return losableItems['' + k] = '' + k; - } - } - } - }); - lostItem = user.fns.randomVal(losableItems); - if (item = content.gear.flat[lostItem]) { - user.items.gear.owned[lostItem] = false; - if (user.items.gear.equipped[item.type] === lostItem) { - user.items.gear.equipped[item.type] = item.type + "_base_0"; - } - if (user.items.gear.costume[item.type] === lostItem) { - user.items.gear.costume[item.type] = item.type + "_base_0"; - } - } - if (typeof user.markModified === "function") { - user.markModified('items.gear'); - } - analyticsData = { - uuid: user._id, - lostItem: lostItem, - gaLabel: lostItem, - category: 'behavior' - }; - if (analytics != null) { - analytics.track('Death', analyticsData); - } - return typeof cb === "function" ? cb((item ? { - code: 200, - message: i18n.t('messageLostItem', { - itemText: item.text(req.language) - }, req.language) - } : null), user) : void 0; - }, - reset: function(req, cb) { - var gear; - user.habits = []; - user.dailys = []; - user.todos = []; - user.rewards = []; - user.stats.hp = 50; - user.stats.lvl = 1; - user.stats.gp = 0; - user.stats.exp = 0; - gear = user.items.gear; - _.each(['equipped', 'costume'], function(type) { - gear[type].armor = 'armor_base_0'; - gear[type].weapon = 'weapon_base_0'; - gear[type].head = 'head_base_0'; - return gear[type].shield = 'shield_base_0'; - }); - if (typeof gear.owned === 'undefined') { - gear.owned = {}; - } - _.each(gear.owned, function(v, k) { - if (gear.owned[k]) { - gear.owned[k] = false; - } - return true; - }); - gear.owned.weapon_warrior_0 = true; - if (typeof user.markModified === "function") { - user.markModified('items.gear.owned'); - } - user.preferences.costume = false; - return typeof cb === "function" ? cb(null, user) : void 0; - }, - reroll: function(req, cb, analytics) { - var analyticsData; - if (user.balance < 1) { - return typeof cb === "function" ? cb({ - code: 401, - message: i18n.t('notEnoughGems', req.language) - }) : void 0; - } - user.balance--; - _.each(user.tasks, function(task) { - if (task.type !== 'reward') { - return task.value = 0; - } - }); - user.stats.hp = 50; - analyticsData = { - uuid: user._id, - acquireMethod: 'Gems', - gemCost: 4, - category: 'behavior' - }; - if (analytics != null) { - analytics.track('Fortify Potion', analyticsData); - } - return typeof cb === "function" ? cb(null, user) : void 0; - }, - rebirth: function(req, cb, analytics) { - var analyticsData, flags, gear, lvl, stats; - if (user.balance < 2 && user.stats.lvl < api.maxLevel) { - return typeof cb === "function" ? cb({ - code: 401, - message: i18n.t('notEnoughGems', req.language) - }) : void 0; - } - analyticsData = { - uuid: user._id, - category: 'behavior' - }; - if (user.stats.lvl < api.maxLevel) { - user.balance -= 2; - analyticsData.acquireMethod = 'Gems'; - analyticsData.gemCost = 8; - } else { - analyticsData.gemCost = 0; - analyticsData.acquireMethod = '> 100'; - } - if (analytics != null) { - analytics.track('Rebirth', analyticsData); - } - lvl = api.capByLevel(user.stats.lvl); - _.each(user.tasks, function(task) { - if (task.type !== 'reward') { - task.value = 0; - } - if (task.type === 'daily') { - return task.streak = 0; - } - }); - stats = user.stats; - stats.buffs = {}; - stats.hp = 50; - stats.lvl = 1; - stats["class"] = 'warrior'; - _.each(['per', 'int', 'con', 'str', 'points', 'gp', 'exp', 'mp'], function(value) { - return stats[value] = 0; - }); - // TODO during refactoring: move all gear code from rebirth() to its own function and then call it in reset() as well - gear = user.items.gear; - _.each(['equipped', 'costume'], function(type) { - gear[type] = {}; - gear[type].armor = 'armor_base_0'; - gear[type].weapon = 'weapon_warrior_0'; - gear[type].head = 'head_base_0'; - return gear[type].shield = 'shield_base_0'; - }); - if (user.items.currentPet) { - user.ops.equip({ - params: { - type: 'pet', - key: user.items.currentPet - } - }); - } - if (user.items.currentMount) { - user.ops.equip({ - params: { - type: 'mount', - key: user.items.currentMount - } - }); - } - _.each(gear.owned, function(v, k) { - if (gear.owned[k] && content.gear.flat[k].value) { - gear.owned[k] = false; - return true; - } - }); - gear.owned.weapon_warrior_0 = true; - if (typeof user.markModified === "function") { - user.markModified('items.gear.owned'); - } - user.preferences.costume = false; - flags = user.flags; - if (!user.achievements.beastMaster) { - flags.rebirthEnabled = false; - } - flags.itemsEnabled = false; - flags.dropsEnabled = false; - flags.classSelected = false; - flags.levelDrops = {}; - if (!user.achievements.rebirths) { - user.achievements.rebirths = 1; - user.achievements.rebirthLevel = lvl; - } else if (lvl > user.achievements.rebirthLevel || lvl === 100) { - user.achievements.rebirths++; - user.achievements.rebirthLevel = lvl; - } - user.stats.buffs = {}; - return typeof cb === "function" ? cb(null, user) : void 0; - }, - allocateNow: function(req, cb) { - _.times(user.stats.points, user.fns.autoAllocate); - user.stats.points = 0; - if (typeof user.markModified === "function") { - user.markModified('stats'); - } - return typeof cb === "function" ? cb(null, user.stats) : void 0; - }, - clearCompleted: function(req, cb) { - _.remove(user.todos, function(t) { - var ref; - return t.completed && !((ref = t.challenge) != null ? ref.id : void 0); - }); - if (typeof user.markModified === "function") { - user.markModified('todos'); - } - return typeof cb === "function" ? cb(null, user.todos) : void 0; - }, - sortTask: function(req, cb) { - var from, id, movedTask, preenedTasks, ref, task, tasks, to; - id = req.params.id; - ref = req.query, to = ref.to, from = ref.from; - task = user.tasks[id]; - if (!task) { - return typeof cb === "function" ? cb({ - code: 404, - message: i18n.t('messageTaskNotFound', req.language) - }) : void 0; - } - if (!((to != null) && (from != null))) { - return typeof cb === "function" ? cb('?to=__&from=__ are required') : void 0; - } - tasks = user[task.type + "s"]; - if (task.type === 'todo' && tasks[from] !== task) { - preenedTasks = api.preenTodos(tasks); - if (to !== -1) { - to = tasks.indexOf(preenedTasks[to]); - } - from = tasks.indexOf(preenedTasks[from]); - } - if (tasks[from] !== task) { - return typeof cb === "function" ? cb({ - code: 404, - message: i18n.t('messageTaskNotFound', req.language) - }) : void 0; - } - movedTask = tasks.splice(from, 1)[0]; - if (to === -1) { - tasks.push(movedTask); - } else { - tasks.splice(to, 0, movedTask); - } - return typeof cb === "function" ? cb(null, tasks) : void 0; - }, - updateTask: function(req, cb) { - var ref, task; - if (!(task = user.tasks[(ref = req.params) != null ? ref.id : void 0])) { - return typeof cb === "function" ? cb({ - code: 404, - message: i18n.t('messageTaskNotFound', req.language) - }) : void 0; - } - _.merge(task, _.omit(req.body, ['checklist', 'id', 'type'])); - if (req.body.checklist) { - task.checklist = req.body.checklist; - } - if (typeof task.markModified === "function") { - task.markModified('tags'); - } - return typeof cb === "function" ? cb(null, task) : void 0; - }, - deleteTask: function(req, cb) { - var i, ref, task; - task = user.tasks[(ref = req.params) != null ? ref.id : void 0]; - if (!task) { - return typeof cb === "function" ? cb({ - code: 404, - message: i18n.t('messageTaskNotFound', req.language) - }) : void 0; - } - i = user[task.type + "s"].indexOf(task); - if (~i) { - user[task.type + "s"].splice(i, 1); - } - return typeof cb === "function" ? cb(null, {}) : void 0; - }, - addTask: function(req, cb) { - var task; - task = api.taskDefaults(req.body); - if (user.tasks[task.id] != null) { - return typeof cb === "function" ? cb({ - code: 409, - message: i18n.t('messageDuplicateTaskID', req.language) - }) : void 0; - } - user[task.type + "s"].unshift(task); - if (user.preferences.newTaskEdit) { - task._editing = true; - } - if (user.preferences.tagsCollapsed) { - task._tags = true; - } - if (!user.preferences.advancedCollapsed) { - task._advanced = true; - } - if (typeof cb === "function") { - cb(null, task); - } - return task; - }, - addTag: function(req, cb) { - if (user.tags == null) { - user.tags = []; - } - user.tags.push({ - name: req.body.name, - id: req.body.id || api.uuid() - }); - return typeof cb === "function" ? cb(null, user.tags) : void 0; - }, - sortTag: function(req, cb) { - var from, ref, to; - ref = req.query, to = ref.to, from = ref.from; - if (!((to != null) && (from != null))) { - return typeof cb === "function" ? cb('?to=__&from=__ are required') : void 0; - } - user.tags.splice(to, 0, user.tags.splice(from, 1)[0]); - return typeof cb === "function" ? cb(null, user.tags) : void 0; - }, - getTags: function(req, cb) { - return typeof cb === "function" ? cb(null, user.tags) : void 0; - }, - getTag: function(req, cb) { - var i, tid; - tid = req.params.id; - i = _.findIndex(user.tags, { - id: tid - }); - if (!~i) { - return typeof cb === "function" ? cb({ - code: 404, - message: i18n.t('messageTagNotFound', req.language) - }) : void 0; - } - return typeof cb === "function" ? cb(null, user.tags[i]) : void 0; - }, - updateTag: function(req, cb) { - var i, tid; - tid = req.params.id; - i = _.findIndex(user.tags, { - id: tid - }); - if (!~i) { - return typeof cb === "function" ? cb({ - code: 404, - message: i18n.t('messageTagNotFound', req.language) - }) : void 0; - } - user.tags[i].name = req.body.name; - return typeof cb === "function" ? cb(null, user.tags[i]) : void 0; - }, - deleteTag: function(req, cb) { - var i, tag, tid; - tid = req.params.id; - i = _.findIndex(user.tags, { - id: tid - }); - if (!~i) { - return typeof cb === "function" ? cb({ - code: 404, - message: i18n.t('messageTagNotFound', req.language) - }) : void 0; - } - tag = user.tags[i]; - delete user.filters[tag.id]; - user.tags.splice(i, 1); - _.each(user.tasks, function(task) { - return delete task.tags[tag.id]; - }); - _.each(['habits', 'dailys', 'todos', 'rewards'], function(type) { - return typeof user.markModified === "function" ? user.markModified(type) : void 0; - }); - return typeof cb === "function" ? cb(null, user.tags) : void 0; - }, - addWebhook: function(req, cb) { - var wh; - wh = user.preferences.webhooks; - api.refPush(wh, { - url: req.body.url, - enabled: req.body.enabled || true, - id: req.body.id - }); - if (typeof user.markModified === "function") { - user.markModified('preferences.webhooks'); - } - return typeof cb === "function" ? cb(null, user.preferences.webhooks) : void 0; - }, - updateWebhook: function(req, cb) { - _.merge(user.preferences.webhooks[req.params.id], req.body); - if (typeof user.markModified === "function") { - user.markModified('preferences.webhooks'); - } - return typeof cb === "function" ? cb(null, user.preferences.webhooks) : void 0; - }, - deleteWebhook: function(req, cb) { - delete user.preferences.webhooks[req.params.id]; - if (typeof user.markModified === "function") { - user.markModified('preferences.webhooks'); - } - return typeof cb === "function" ? cb(null, user.preferences.webhooks) : void 0; - }, - addPushDevice: function(req, cb) { - var i, item, pd; - if (!user.pushDevices) { - user.pushDevices = []; - } - pd = user.pushDevices; - item = { - regId: req.body.regId, - type: req.body.type - }; - i = _.findIndex(pd, { - regId: item.regId - }); - if (i === -1) { - pd.push(item); - } - return typeof cb === "function" ? cb(null, user.pushDevices) : void 0; - }, - clearPMs: function(req, cb) { - user.inbox.messages = {}; - if (typeof user.markModified === "function") { - user.markModified('inbox.messages'); - } - return typeof cb === "function" ? cb(null, user.inbox.messages) : void 0; - }, - deletePM: function(req, cb) { - delete user.inbox.messages[req.params.id]; - if (typeof user.markModified === "function") { - user.markModified('inbox.messages.' + req.params.id); - } - return typeof cb === "function" ? cb(null, user.inbox.messages) : void 0; - }, - blockUser: function(req, cb) { - var i; - i = user.inbox.blocks.indexOf(req.params.uuid); - if (~i) { - user.inbox.blocks.splice(i, 1); - } else { - user.inbox.blocks.push(req.params.uuid); - } - if (typeof user.markModified === "function") { - user.markModified('inbox.blocks'); - } - return typeof cb === "function" ? cb(null, user.inbox.blocks) : void 0; - }, - feed: function(req, cb) { - var egg, eggText, evolve, food, message, pet, petDisplayName, potion, potionText, ref, ref1, ref2, userPets; - ref = req.params, pet = ref.pet, food = ref.food; - food = content.food[food]; - ref1 = pet.split('-'), egg = ref1[0], potion = ref1[1]; - userPets = user.items.pets; - potionText = content.hatchingPotions[potion] ? content.hatchingPotions[potion].text() : potion; - eggText = content.eggs[egg] ? content.eggs[egg].text() : egg; - petDisplayName = i18n.t('petName', { - potion: potionText, - egg: eggText - }); - if (!userPets[pet]) { - return typeof cb === "function" ? cb({ - code: 404, - message: i18n.t('messagePetNotFound', req.language) - }) : void 0; - } - if (!((ref2 = user.items.food) != null ? ref2[food.key] : void 0)) { - return typeof cb === "function" ? cb({ - code: 404, - message: i18n.t('messageFoodNotFound', req.language) - }) : void 0; - } - if (content.specialPets[pet]) { - return typeof cb === "function" ? cb({ - code: 401, - message: i18n.t('messageCannotFeedPet', req.language) - }) : void 0; - } - if (user.items.mounts[pet]) { - return typeof cb === "function" ? cb({ - code: 401, - message: i18n.t('messageAlreadyMount', req.language) - }) : void 0; - } - message = ''; - evolve = function() { - userPets[pet] = -1; - user.items.mounts[pet] = true; - if (pet === user.items.currentPet) { - user.items.currentPet = ""; - } - return message = i18n.t('messageEvolve', { - egg: petDisplayName - }, req.language); - }; - if (food.key === 'Saddle') { - evolve(); - } else { - if (food.target === potion || content.hatchingPotions[potion].premium) { - userPets[pet] += 5; - message = i18n.t('messageLikesFood', { - egg: petDisplayName, - foodText: food.text(req.language) - }, req.language); - } else { - userPets[pet] += 2; - message = i18n.t('messageDontEnjoyFood', { - egg: petDisplayName, - foodText: food.text(req.language) - }, req.language); - } - if (userPets[pet] >= 50 && !user.items.mounts[pet]) { - evolve(); - } - } - user.items.food[food.key]--; - return typeof cb === "function" ? cb({ - code: 200, - message: message - }, { - value: userPets[pet] - }) : void 0; - }, - buySpecialSpell: function(req, cb) { - var base, item, key, message; - key = req.params.key; - item = content.special[key]; - if (user.stats.gp < item.value) { - return typeof cb === "function" ? cb({ - code: 401, - message: i18n.t('messageNotEnoughGold', req.language) - }) : void 0; - } - user.stats.gp -= item.value; - if ((base = user.items.special)[key] == null) { - base[key] = 0; - } - user.items.special[key]++; - if (typeof user.markModified === "function") { - user.markModified('items.special'); - } - message = i18n.t('messageBought', { - itemText: item.text(req.language) - }, req.language); - return typeof cb === "function" ? cb({ - code: 200, - message: message - }, _.pick(user, $w('items stats'))) : void 0; - }, - purchase: function(req, cb, analytics) { - var analyticsData, convCap, convRate, item, key, price, ref, ref1, ref2, ref3, type; - ref = req.params, type = ref.type, key = ref.key; - if (type === 'gems' && key === 'gem') { - ref1 = api.planGemLimits, convRate = ref1.convRate, convCap = ref1.convCap; - convCap += user.purchased.plan.consecutive.gemCapExtra; - if (!((ref2 = user.purchased) != null ? (ref3 = ref2.plan) != null ? ref3.customerId : void 0 : void 0)) { - return typeof cb === "function" ? cb({ - code: 401, - message: "Must subscribe to purchase gems with GP" - }, req) : void 0; - } - if (!(user.stats.gp >= convRate)) { - return typeof cb === "function" ? cb({ - code: 401, - message: "Not enough Gold" - }) : void 0; - } - if (user.purchased.plan.gemsBought >= convCap) { - return typeof cb === "function" ? cb({ - code: 401, - message: "You've reached the Gold=>Gem conversion cap (" + convCap + ") for this month. We have this to prevent abuse / farming. The cap will reset within the first three days of next month." - }) : void 0; - } - user.balance += .25; - user.purchased.plan.gemsBought++; - user.stats.gp -= convRate; - analyticsData = { - uuid: user._id, - itemKey: key, - acquireMethod: 'Gold', - goldCost: convRate, - category: 'behavior' - }; - if (analytics != null) { - analytics.track('purchase gems', analyticsData); - } - return typeof cb === "function" ? cb({ - code: 200, - message: "+1 Gem" - }, _.pick(user, $w('stats balance'))) : void 0; - } - if (type !== 'eggs' && type !== 'hatchingPotions' && type !== 'food' && type !== 'quests' && type !== 'gear') { - return typeof cb === "function" ? cb({ - code: 404, - message: ":type must be in [eggs,hatchingPotions,food,quests,gear]" - }, req) : void 0; - } - if (type === 'gear') { - item = content.gear.flat[key]; - if (user.items.gear.owned[key]) { - return typeof cb === "function" ? cb({ - code: 401, - message: i18n.t('alreadyHave', req.language) - }) : void 0; - } - price = (item.twoHanded || item.gearSet === 'animal' ? 2 : 1) / 4; - } else { - item = content[type][key]; - price = item.value / 4; - } - if (!item) { - return typeof cb === "function" ? cb({ - code: 404, - message: ":key not found for Content." + type - }, req) : void 0; - } - if (!item.canBuy(user)) { - return typeof cb === "function" ? cb({ - code: 403, - message: i18n.t('messageNotAvailable', req.language) - }) : void 0; - } - if ((user.balance < price) || !user.balance) { - return typeof cb === "function" ? cb({ - code: 403, - message: i18n.t('notEnoughGems', req.language) - }) : void 0; - } - user.balance -= price; - if (type === 'gear') { - user.items.gear.owned[key] = true; - } else { - if (!(user.items[type][key] > 0)) { - user.items[type][key] = 0; - } - user.items[type][key]++; - } - analyticsData = { - uuid: user._id, - itemKey: key, - itemType: 'Market', - acquireMethod: 'Gems', - gemCost: item.value, - category: 'behavior' - }; - if (analytics != null) { - analytics.track('acquire item', analyticsData); - } - return typeof cb === "function" ? cb(null, _.pick(user, $w('items balance'))) : void 0; - }, - releasePets: function(req, cb, analytics) { - var analyticsData, pet; - if (user.balance < 1) { - return typeof cb === "function" ? cb({ - code: 401, - message: i18n.t('notEnoughGems', req.language) - }) : void 0; - } else { - user.balance -= 1; - for (pet in content.pets) { - user.items.pets[pet] = 0; - } - if (!user.achievements.beastMasterCount) { - user.achievements.beastMasterCount = 0; - } - user.achievements.beastMasterCount++; - user.items.currentPet = ""; - } - analyticsData = { - uuid: user._id, - acquireMethod: 'Gems', - gemCost: 4, - category: 'behavior' - }; - if (analytics != null) { - analytics.track('release pets', analyticsData); - } - return typeof cb === "function" ? cb(null, user) : void 0; - }, - releaseMounts: function(req, cb, analytics) { - var analyticsData, mount; - if (user.balance < 1) { - return typeof cb === "function" ? cb({ - code: 401, - message: i18n.t('notEnoughGems', req.language) - }) : void 0; - } else { - user.balance -= 1; - user.items.currentMount = ""; - for (mount in content.pets) { - user.items.mounts[mount] = null; - } - if (!user.achievements.mountMasterCount) { - user.achievements.mountMasterCount = 0; - } - user.achievements.mountMasterCount++; - } - analyticsData = { - uuid: user._id, - acquireMethod: 'Gems', - gemCost: 4, - category: 'behavior' - }; - if (analytics != null) { - analytics.track('release mounts', analyticsData); - } - return typeof cb === "function" ? cb(null, user) : void 0; - }, - releaseBoth: function(req, cb) { - var analyticsData, animal, giveTriadBingo; - if (user.balance < 1.5 && !user.achievements.triadBingo) { - return typeof cb === "function" ? cb({ - code: 401, - message: i18n.t('notEnoughGems', req.language) - }) : void 0; - } else { - giveTriadBingo = true; - if (!user.achievements.triadBingo) { - analyticsData = { - uuid: user._id, - acquireMethod: 'Gems', - gemCost: 6, - category: 'behavior' - }; - if (typeof analytics !== "undefined" && analytics !== null) { - analytics.track('release pets & mounts', analyticsData); - } - user.balance -= 1.5; - } - user.items.currentMount = ""; - user.items.currentPet = ""; - for (animal in content.pets) { - if (user.items.pets[animal] === -1) { - giveTriadBingo = false; - } - user.items.pets[animal] = 0; - user.items.mounts[animal] = null; - } - if (!user.achievements.beastMasterCount) { - user.achievements.beastMasterCount = 0; - } - user.achievements.beastMasterCount++; - if (!user.achievements.mountMasterCount) { - user.achievements.mountMasterCount = 0; - } - user.achievements.mountMasterCount++; - if (giveTriadBingo) { - if (!user.achievements.triadBingoCount) { - user.achievements.triadBingoCount = 0; - } - user.achievements.triadBingoCount++; - } - } - return typeof cb === "function" ? cb(null, user) : void 0; - }, - buy: function(req, cb, analytics) { - var analyticsData, armoireExp, armoireResp, armoireResult, base, buyResp, drop, eligibleEquipment, item, key, message, name; - key = req.params.key; - item = key === 'potion' ? content.potion : key === 'armoire' ? content.armoire : content.gear.flat[key]; - if (!item) { - return typeof cb === "function" ? cb({ - code: 404, - message: "Item '" + key + " not found (see https://github.com/HabitRPG/habitrpg/blob/develop/common/script/content/index.js)" - }) : void 0; - } - if (user.stats.gp < item.value) { - return typeof cb === "function" ? cb({ - code: 401, - message: i18n.t('messageNotEnoughGold', req.language) - }) : void 0; - } - if ((item.canOwn != null) && !item.canOwn(user)) { - return typeof cb === "function" ? cb({ - code: 401, - message: "You can't buy this item" - }) : void 0; - } - armoireResp = void 0; - if (item.key === 'potion') { - user.stats.hp += 15; - if (user.stats.hp > 50) { - user.stats.hp = 50; - } - } else if (item.key === 'armoire') { - armoireResult = user.fns.predictableRandom(user.stats.gp); - eligibleEquipment = _.filter(content.gear.flat, (function(i) { - return i.klass === 'armoire' && !user.items.gear.owned[i.key]; - })); - if (!_.isEmpty(eligibleEquipment) && (armoireResult < .6 || !user.flags.armoireOpened)) { - eligibleEquipment.sort(); - drop = user.fns.randomVal(eligibleEquipment); - user.items.gear.owned[drop.key] = true; - user.flags.armoireOpened = true; - message = i18n.t('armoireEquipment', { - image: '', - dropText: drop.text(req.language) - }, req.language); - if (api.count.remainingGearInSet(user.items.gear.owned, 'armoire') === 0) { - user.flags.armoireEmpty = true; - } - armoireResp = { - type: "gear", - dropKey: drop.key, - dropText: drop.text(req.language) - }; - } else if ((!_.isEmpty(eligibleEquipment) && armoireResult < .8) || armoireResult < .5) { - drop = user.fns.randomVal(_.where(content.food, { - canDrop: true - })); - if ((base = user.items.food)[name = drop.key] == null) { - base[name] = 0; - } - user.items.food[drop.key] += 1; - message = i18n.t('armoireFood', { - image: '', - dropArticle: drop.article, - dropText: drop.text(req.language) - }, req.language); - armoireResp = { - type: "food", - dropKey: drop.key, - dropArticle: drop.article, - dropText: drop.text(req.language) - }; - } else { - armoireExp = Math.floor(user.fns.predictableRandom(user.stats.exp) * 40 + 10); - user.stats.exp += armoireExp; - message = i18n.t('armoireExp', req.language); - armoireResp = { - "type": "experience", - "value": armoireExp - }; - } - } else { - if (user.preferences.autoEquip) { - user.items.gear.equipped[item.type] = item.key; - message = user.fns.handleTwoHanded(item, null, req); - } - user.items.gear.owned[item.key] = true; - if (message == null) { - message = i18n.t('messageBought', { - itemText: item.text(req.language) - }, req.language); - } - if (item.last) { - user.fns.ultimateGear(); - } - } - user.stats.gp -= item.value; - analyticsData = { - uuid: user._id, - itemKey: key, - acquireMethod: 'Gold', - goldCost: item.value, - category: 'behavior' - }; - if (analytics != null) { - analytics.track('acquire item', analyticsData); - } - buyResp = _.pick(user, $w('items achievements stats flags')); - if (armoireResp) { - buyResp["armoire"] = armoireResp; - } - return typeof cb === "function" ? cb({ - code: 200, - message: message - }, buyResp) : void 0; - }, - buyQuest: function(req, cb, analytics) { - var analyticsData, base, item, key, message, name; - key = req.params.key; - item = content.quests[key]; - if (!item) { - return typeof cb === "function" ? cb({ - code: 404, - message: "Quest '" + key + " not found (see https://github.com/HabitRPG/habitrpg/blob/develop/common/script/content/index.js)" - }) : void 0; - } - if (!(item.category === 'gold' && item.goldValue)) { - return typeof cb === "function" ? cb({ - code: 404, - message: "Quest '" + key + " is not a Gold-purchasable quest (see https://github.com/HabitRPG/habitrpg/blob/develop/common/script/content/index.js)" - }) : void 0; - } - if (user.stats.gp < item.goldValue) { - return typeof cb === "function" ? cb({ - code: 401, - message: i18n.t('messageNotEnoughGold', req.language) - }) : void 0; - } - message = i18n.t('messageBought', { - itemText: item.text(req.language) - }, req.language); - if ((base = user.items.quests)[name = item.key] == null) { - base[name] = 0; - } - user.items.quests[item.key] += 1; - user.stats.gp -= item.goldValue; - analyticsData = { - uuid: user._id, - itemKey: item.key, - itemType: 'Market', - goldCost: item.goldValue, - acquireMethod: 'Gold', - category: 'behavior' - }; - if (analytics != null) { - analytics.track('acquire item', analyticsData); - } - return typeof cb === "function" ? cb({ - code: 200, - message: message - }, user.items.quests) : void 0; - }, - buyMysterySet: function(req, cb, analytics) { - var mysterySet, ref; - if (!(user.purchased.plan.consecutive.trinkets > 0)) { - return typeof cb === "function" ? cb({ - code: 401, - message: i18n.t('notEnoughHourglasses', req.language) - }) : void 0; - } - mysterySet = (ref = content.timeTravelerStore(user.items.gear.owned)) != null ? ref[req.params.key] : void 0; - if ((typeof window !== "undefined" && window !== null ? window.confirm : void 0) != null) { - if (!window.confirm(i18n.t('hourglassBuyEquipSetConfirm'))) { - return; - } - } - if (!mysterySet) { - return typeof cb === "function" ? cb({ - code: 404, - message: "Mystery set not found, or set already owned" - }) : void 0; - } - _.each(mysterySet.items, function(i) { - var analyticsData; - user.items.gear.owned[i.key] = true; - analyticsData = { - uuid: user._id, - itemKey: i.key, - itemType: 'Subscriber Gear', - acquireMethod: 'Hourglass', - category: 'behavior' - }; - return analytics != null ? analytics.track('acquire item', analyticsData) : void 0; - }); - user.purchased.plan.consecutive.trinkets--; - return typeof cb === "function" ? cb({ - code: 200, - message: i18n.t('hourglassPurchaseSet', req.language) - }, _.pick(user, $w('items purchased.plan.consecutive'))) : void 0; - }, - hourglassPurchase: function(req, cb, analytics) { - var analyticsData, key, ref, type; - ref = req.params, type = ref.type, key = ref.key; - if (!content.timeTravelStable[type]) { - return typeof cb === "function" ? cb({ - code: 403, - message: i18n.t('typeNotAllowedHourglass', req.language) + JSON.stringify(_.keys(content.timeTravelStable)) - }) : void 0; - } - if (!_.contains(_.keys(content.timeTravelStable[type]), key)) { - return typeof cb === "function" ? cb({ - code: 403, - message: i18n.t(type + 'NotAllowedHourglass', req.language) - }) : void 0; - } - if (user.items[type][key]) { - return typeof cb === "function" ? cb({ - code: 403, - message: i18n.t(type + 'AlreadyOwned', req.language) - }) : void 0; - } - if (!(user.purchased.plan.consecutive.trinkets > 0)) { - return typeof cb === "function" ? cb({ - code: 403, - message: i18n.t('notEnoughHourglasses', req.language) - }) : void 0; - } - user.purchased.plan.consecutive.trinkets--; - if (type === 'pets') { - user.items.pets[key] = 5; - } - if (type === 'mounts') { - user.items.mounts[key] = true; - } - analyticsData = { - uuid: user._id, - itemKey: key, - itemType: type, - acquireMethod: 'Hourglass', - category: 'behavior' - }; - if (analytics != null) { - analytics.track('acquire item', analyticsData); - } - return typeof cb === "function" ? cb({ - code: 200, - message: i18n.t('hourglassPurchase', req.language) - }, _.pick(user, $w('items purchased.plan.consecutive'))) : void 0; - }, - sell: function(req, cb) { - var key, ref, type; - ref = req.params, key = ref.key, type = ref.type; - if (type !== 'eggs' && type !== 'hatchingPotions' && type !== 'food') { - return typeof cb === "function" ? cb({ - code: 404, - message: ":type not found. Must bes in [eggs, hatchingPotions, food]" - }) : void 0; - } - if (!user.items[type][key]) { - return typeof cb === "function" ? cb({ - code: 404, - message: ":key not found for user.items." + type - }) : void 0; - } - user.items[type][key]--; - user.stats.gp += content[type][key].value; - return typeof cb === "function" ? cb(null, _.pick(user, $w('stats items'))) : void 0; - }, - equip: function(req, cb) { - var item, key, message, ref, type; - ref = [req.params.type || 'equipped', req.params.key], type = ref[0], key = ref[1]; - switch (type) { - case 'mount': - if (!user.items.mounts[key]) { - return typeof cb === "function" ? cb({ - code: 404, - message: ":You do not own this mount." - }) : void 0; - } - user.items.currentMount = user.items.currentMount === key ? '' : key; - break; - case 'pet': - if (!user.items.pets[key]) { - return typeof cb === "function" ? cb({ - code: 404, - message: ":You do not own this pet." - }) : void 0; - } - user.items.currentPet = user.items.currentPet === key ? '' : key; - break; - case 'costume': - case 'equipped': - item = content.gear.flat[key]; - if (!user.items.gear.owned[key]) { - return typeof cb === "function" ? cb({ - code: 404, - message: ":You do not own this gear." - }) : void 0; - } - if (user.items.gear[type][item.type] === key) { - user.items.gear[type][item.type] = item.type + "_base_0"; - message = i18n.t('messageUnEquipped', { - itemText: item.text(req.language) - }, req.language); - } else { - user.items.gear[type][item.type] = item.key; - message = user.fns.handleTwoHanded(item, type, req); - } - if (typeof user.markModified === "function") { - user.markModified("items.gear." + type); - } - } - return typeof cb === "function" ? cb((message ? { - code: 200, - message: message - } : null), user.items) : void 0; - }, - hatch: function(req, cb) { - var egg, hatchingPotion, pet, ref; - ref = req.params, egg = ref.egg, hatchingPotion = ref.hatchingPotion; - if (!(egg && hatchingPotion)) { - return typeof cb === "function" ? cb({ - code: 400, - message: "Please specify query.egg & query.hatchingPotion" - }) : void 0; - } - if (!(user.items.eggs[egg] > 0 && user.items.hatchingPotions[hatchingPotion] > 0)) { - return typeof cb === "function" ? cb({ - code: 403, - message: i18n.t('messageMissingEggPotion', req.language) - }) : void 0; - } - if (content.hatchingPotions[hatchingPotion].premium && !content.dropEggs[egg]) { - return typeof cb === "function" ? cb({ - code: 403, - message: i18n.t('messageInvalidEggPotionCombo', req.language) - }) : void 0; - } - pet = egg + "-" + hatchingPotion; - if (user.items.pets[pet] && user.items.pets[pet] > 0) { - return typeof cb === "function" ? cb({ - code: 403, - message: i18n.t('messageAlreadyPet', req.language) - }) : void 0; - } - user.items.pets[pet] = 5; - user.items.eggs[egg]--; - user.items.hatchingPotions[hatchingPotion]--; - return typeof cb === "function" ? cb({ - code: 200, - message: i18n.t('messageHatched', req.language) - }, user.items) : void 0; - }, - unlock: function(req, cb, analytics) { - var alreadyOwns, analyticsData, cost, fullSet, k, path, split, v; - path = req.query.path; - fullSet = ~path.indexOf(","); - cost = ~path.indexOf('background.') ? fullSet ? 3.75 : 1.75 : fullSet ? 1.25 : 0.5; - alreadyOwns = !fullSet && user.fns.dotGet("purchased." + path) === true; - if ((user.balance < cost || !user.balance) && !alreadyOwns) { - return typeof cb === "function" ? cb({ - code: 401, - message: i18n.t('notEnoughGems', req.language) - }) : void 0; - } - if (fullSet) { - _.each(path.split(","), function(p) { - if (~path.indexOf('gear.')) { - user.fns.dotSet("" + p, true); - true; - } else { - - } - user.fns.dotSet("purchased." + p, true); - return true; - }); - } else { - if (alreadyOwns) { - split = path.split('.'); - v = split.pop(); - k = split.join('.'); - if (k === 'background' && v === user.preferences.background) { - v = ''; - } - user.fns.dotSet("preferences." + k, v); - return typeof cb === "function" ? cb(null, req) : void 0; - } - user.fns.dotSet("purchased." + path, true); - } - user.balance -= cost; - if (~path.indexOf('gear.')) { - if (typeof user.markModified === "function") { - user.markModified('gear.owned'); - } - } else { - if (typeof user.markModified === "function") { - user.markModified('purchased'); - } - } - analyticsData = { - uuid: user._id, - itemKey: path, - itemType: 'customization', - acquireMethod: 'Gems', - gemCost: cost / .25, - category: 'behavior' - }; - if (analytics != null) { - analytics.track('acquire item', analyticsData); - } - return typeof cb === "function" ? cb(null, _.pick(user, $w('purchased preferences items'))) : void 0; - }, - changeClass: function(req, cb, analytics) { - var analyticsData, klass, ref; - klass = (ref = req.query) != null ? ref["class"] : void 0; - if (klass === 'warrior' || klass === 'rogue' || klass === 'wizard' || klass === 'healer') { - analyticsData = { - uuid: user._id, - "class": klass, - acquireMethod: 'Gems', - gemCost: 3, - category: 'behavior' - }; - if (analytics != null) { - analytics.track('change class', analyticsData); - } - user.stats["class"] = klass; - user.flags.classSelected = true; - _.each(["weapon", "armor", "shield", "head"], function(type) { - var foundKey; - foundKey = false; - _.findLast(user.items.gear.owned, function(v, k) { - if (~k.indexOf(type + "_" + klass) && v === true) { - return foundKey = k; - } - }); - user.items.gear.equipped[type] = foundKey ? foundKey : type === "weapon" ? "weapon_" + klass + "_0" : type === "shield" && klass === "rogue" ? "shield_rogue_0" : type + "_base_0"; - if (type === "weapon" || (type === "shield" && klass === "rogue")) { - user.items.gear.owned[type + "_" + klass + "_0"] = true; - } - return true; - }); - } else { - if (user.preferences.disableClasses) { - user.preferences.disableClasses = false; - user.preferences.autoAllocate = false; - } else { - if (!(user.balance >= .75)) { - return typeof cb === "function" ? cb({ - code: 401, - message: i18n.t('notEnoughGems', req.language) - }) : void 0; - } - user.balance -= .75; - } - _.merge(user.stats, { - str: 0, - con: 0, - per: 0, - int: 0, - points: api.capByLevel(user.stats.lvl) - }); - user.flags.classSelected = false; - } - return typeof cb === "function" ? cb(null, _.pick(user, $w('stats flags items preferences'))) : void 0; - }, - disableClasses: function(req, cb) { - user.stats["class"] = 'warrior'; - user.flags.classSelected = true; - user.preferences.disableClasses = true; - user.preferences.autoAllocate = true; - user.stats.str = api.capByLevel(user.stats.lvl); - user.stats.points = 0; - return typeof cb === "function" ? cb(null, _.pick(user, $w('stats flags preferences'))) : void 0; - }, - allocate: function(req, cb) { - var stat; - stat = req.query.stat || 'str'; - if (user.stats.points > 0) { - user.stats[stat]++; - user.stats.points--; - if (stat === 'int') { - user.stats.mp++; - } - } - return typeof cb === "function" ? cb(null, _.pick(user, $w('stats'))) : void 0; - }, - readCard: function(req, cb) { - var cardType; - cardType = req.params.cardType; - user.items.special[cardType + "Received"].shift(); - if (typeof user.markModified === "function") { - user.markModified("items.special." + cardType + "Received"); - } - user.flags.cardReceived = false; - return typeof cb === "function" ? cb(null, 'items.special flags.cardReceived') : void 0; - }, - openMysteryItem: function(req, cb, analytics) { - var analyticsData, item, ref, ref1; - item = (ref = user.purchased.plan) != null ? (ref1 = ref.mysteryItems) != null ? ref1.shift() : void 0 : void 0; - if (!item) { - return typeof cb === "function" ? cb({ - code: 400, - message: "Empty" - }) : void 0; - } - item = content.gear.flat[item]; - user.items.gear.owned[item.key] = true; - if (typeof user.markModified === "function") { - user.markModified('purchased.plan.mysteryItems'); - } - item.notificationType = 'Mystery'; - analyticsData = { - uuid: user._id, - itemKey: item, - itemType: 'Subscriber Gear', - acquireMethod: 'Subscriber', - category: 'behavior' - }; - if (analytics != null) { - analytics.track('open mystery item', analyticsData); - } - if (typeof window !== 'undefined') { - (user._tmp != null ? user._tmp : user._tmp = {}).drop = item; - } - return typeof cb === "function" ? cb(null, user.items.gear.owned) : void 0; - }, - score: function(req, cb) { - var addPoints, calculateDelta, calculateReverseDelta, changeTaskValue, delta, direction, gainMP, id, multiplier, num, options, ref, stats, subtractPoints, task, th; - ref = req.params, id = ref.id, direction = ref.direction; - task = user.tasks[id]; - options = req.query || {}; - _.defaults(options, { - times: 1, - cron: false - }); - user._tmp = {}; - stats = { - gp: +user.stats.gp, - hp: +user.stats.hp, - exp: +user.stats.exp - }; - task.value = +task.value; - task.streak = ~~task.streak; - if (task.priority == null) { - task.priority = 1; - } - if (task.value > stats.gp && task.type === 'reward') { - return typeof cb === "function" ? cb({ - code: 401, - message: i18n.t('messageNotEnoughGold', req.language) - }) : void 0; - } - delta = 0; - calculateDelta = function() { - var currVal, nextDelta, ref1; - currVal = task.value < -47.27 ? -47.27 : task.value > 21.27 ? 21.27 : task.value; - nextDelta = Math.pow(0.9747, currVal) * (direction === 'down' ? -1 : 1); - if (((ref1 = task.checklist) != null ? ref1.length : void 0) > 0) { - if (direction === 'down' && task.type === 'daily' && options.cron) { - nextDelta *= 1 - _.reduce(task.checklist, (function(m, i) { - return m + (i.completed ? 1 : 0); - }), 0) / task.checklist.length; - } - if (task.type === 'todo') { - nextDelta *= 1 + _.reduce(task.checklist, (function(m, i) { - return m + (i.completed ? 1 : 0); - }), 0); - } - } - return nextDelta; - }; - calculateReverseDelta = function() { - var calc, closeEnough, currVal, diff, nextDelta, ref1, testVal; - currVal = task.value < -47.27 ? -47.27 : task.value > 21.27 ? 21.27 : task.value; - testVal = currVal + Math.pow(0.9747, currVal) * (direction === 'down' ? -1 : 1); - closeEnough = 0.00001; - while (true) { - calc = testVal + Math.pow(0.9747, testVal); - diff = currVal - calc; - if (Math.abs(diff) < closeEnough) { - break; - } - if (diff > 0) { - testVal -= diff; - } else { - testVal += diff; - } - } - nextDelta = testVal - currVal; - if (((ref1 = task.checklist) != null ? ref1.length : void 0) > 0) { - if (task.type === 'todo') { - nextDelta *= 1 + _.reduce(task.checklist, (function(m, i) { - return m + (i.completed ? 1 : 0); - }), 0); - } - } - return nextDelta; - }; - changeTaskValue = function() { - return _.times(options.times, function() { - var nextDelta, ref1; - nextDelta = !options.cron && direction === 'down' ? calculateReverseDelta() : calculateDelta(); - if (task.type !== 'reward') { - if (user.preferences.automaticAllocation === true && user.preferences.allocationMode === 'taskbased' && !(task.type === 'todo' && direction === 'down')) { - user.stats.training[task.attribute] += nextDelta; - } - if (direction === 'up') { - user.party.quest.progress.up = user.party.quest.progress.up || 0; - if ((ref1 = task.type) === 'daily' || ref1 === 'todo') { - user.party.quest.progress.up += nextDelta * (1 + (user._statsComputed.str / 200)); - } - if (task.type === 'habit') { - user.party.quest.progress.up += nextDelta * (0.5 + (user._statsComputed.str / 400)); - } - } - task.value += nextDelta; - } - return delta += nextDelta; - }); - }; - addPoints = function() { - var _crit, afterStreak, currStreak, gpMod, intBonus, perBonus, streakBonus; - _crit = (delta > 0 ? user.fns.crit() : 1); - if (_crit > 1) { - user._tmp.crit = _crit; - } - intBonus = 1 + (user._statsComputed.int * .025); - stats.exp += Math.round(delta * intBonus * task.priority * _crit * 6); - perBonus = 1 + user._statsComputed.per * .02; - gpMod = delta * task.priority * _crit * perBonus; - return stats.gp += task.streak ? (currStreak = direction === 'down' ? task.streak - 1 : task.streak, streakBonus = currStreak / 100 + 1, afterStreak = gpMod * streakBonus, currStreak > 0 ? gpMod > 0 ? user._tmp.streakBonus = afterStreak - gpMod : void 0 : void 0, afterStreak) : gpMod; - }; - subtractPoints = function() { - var conBonus, hpMod; - conBonus = 1 - (user._statsComputed.con / 250); - if (conBonus < .1) { - conBonus = 0.1; - } - hpMod = delta * conBonus * task.priority * 2; - return stats.hp += Math.round(hpMod * 10) / 10; - }; - gainMP = function(delta) { - delta *= user._tmp.crit || 1; - user.stats.mp += delta; - if (user.stats.mp >= user._statsComputed.maxMP) { - user.stats.mp = user._statsComputed.maxMP; - } - if (user.stats.mp < 0) { - return user.stats.mp = 0; - } - }; - switch (task.type) { - case 'habit': - changeTaskValue(); - if (delta > 0) { - addPoints(); - } else { - subtractPoints(); - } - gainMP(_.max([0.25, .0025 * user._statsComputed.maxMP]) * (direction === 'down' ? -1 : 1)); - th = (task.history != null ? task.history : task.history = []); - if (th[th.length - 1] && moment(th[th.length - 1].date).isSame(new Date, 'day')) { - th[th.length - 1].value = task.value; - } else { - th.push({ - date: +(new Date), - value: task.value - }); - } - if (typeof user.markModified === "function") { - user.markModified("habits." + (_.findIndex(user.habits, { - id: task.id - })) + ".history"); - } - break; - case 'daily': - if (options.cron) { - changeTaskValue(); - subtractPoints(); - if (!user.stats.buffs.streaks) { - task.streak = 0; - } - } else { - changeTaskValue(); - if (direction === 'down') { - delta = calculateDelta(); - } - addPoints(); - gainMP(_.max([1, .01 * user._statsComputed.maxMP]) * (direction === 'down' ? -1 : 1)); - if (direction === 'up') { - task.streak = task.streak ? task.streak + 1 : 1; - if ((task.streak % 21) === 0) { - user.achievements.streak = user.achievements.streak ? user.achievements.streak + 1 : 1; - } - } else { - if ((task.streak % 21) === 0) { - user.achievements.streak = user.achievements.streak ? user.achievements.streak - 1 : 0; - } - task.streak = task.streak ? task.streak - 1 : 0; - } - } - break; - case 'todo': - if (options.cron) { - changeTaskValue(); - } else { - task.dateCompleted = direction === 'up' ? new Date : void 0; - changeTaskValue(); - if (direction === 'down') { - delta = calculateDelta(); - } - addPoints(); - multiplier = _.max([ - _.reduce(task.checklist, (function(m, i) { - return m + (i.completed ? 1 : 0); - }), 1), 1 - ]); - gainMP(_.max([multiplier, .01 * user._statsComputed.maxMP * multiplier]) * (direction === 'down' ? -1 : 1)); - } - break; - case 'reward': - changeTaskValue(); - stats.gp -= Math.abs(task.value); - num = parseFloat(task.value).toFixed(2); - if (stats.gp < 0) { - stats.hp += stats.gp; - stats.gp = 0; - } - } - user.fns.updateStats(stats, req); - if (typeof window === 'undefined') { - if (direction === 'up') { - user.fns.randomDrop({ - task: task, - delta: delta - }, req); - } - } - if (typeof cb === "function") { - cb(null, user); - } - return delta; - } + update: _.partial(importedOps.update, user), + sleep: _.partial(importedOps.sleep, user), + revive: _.partial(importedOps.revive, user), + reset: _.partial(importedOps.reset, user), + reroll: _.partial(importedOps.reroll, user), + rebirth: _.partial(importedOps.rebirth, user), + allocateNow: _.partial(importedOps.allocateNow, user), + clearCompleted: _.partial(importedOps.clearCompleted, user), + sortTask: _.partial(importedOps.sortTask, user), + updateTask: _.partial(importedOps.updateTask, user), + deleteTask: _.partial(importedOps.deleteTask, user), + addTask: _.partial(importedOps.addTask, user), + addTag: _.partial(importedOps.addTag, user), + sortTag: _.partial(importedOps.sortTag, user), + getTags: _.partial(importedOps.getTags, user), + getTag: _.partial(importedOps.getTag, user), + updateTag: _.partial(importedOps.updateTag, user), + deleteTag: _.partial(importedOps.deleteTag, user), + addWebhook: _.partial(importedOps.addWebhook, user), + updateWebhook: _.partial(importedOps.updateWebhook, user), + deleteWebhook: _.partial(importedOps.deleteWebhook, user), + addPushDevice: _.partial(importedOps.addPushDevice, user), + clearPMs: _.partial(importedOps.clearPMs, user), + deletePM: _.partial(importedOps.deletePM, user), + blockUser: _.partial(importedOps.blockUser, user), + feed: _.partial(importedOps.feed, user), + buySpecialSpell: _.partial(importedOps.buySpecialSpell, user), + purchase: _.partial(importedOps.purchase, user), + releasePets: _.partial(importedOps.releasePets, user), + releaseMounts: _.partial(importedOps.releaseMounts, user), + releaseBoth: _.partial(importedOps.releaseBoth, user), + buy: _.partial(importedOps.buy, user), + buyQuest: _.partial(importedOps.buyQuest, user), + buyMysterySet: _.partial(importedOps.buyMysterySet, user), + hourglassPurchase: _.partial(importedOps.hourglassPurchase, user), + sell: _.partial(importedOps.sell, user), + equip: _.partial(importedOps.equip, user), + hatch: _.partial(importedOps.hatch, user), + unlock: _.partial(importedOps.unlock, user), + changeClass: _.partial(importedOps.changeClass, user), + disableClasses: _.partial(importedOps.disableClasses, user), + allocate: _.partial(importedOps.allocate, user), + readCard: _.partial(importedOps.readCard, user), + openMysteryItem: _.partial(importedOps.openMysteryItem, user), + score: _.partial(importedOps.score, user), }; } user.fns = { - getItem: function(type) { - var item; - item = content.gear.flat[user.items.gear.equipped[type]]; - if (!item) { - return content.gear.flat[type + "_base_0"]; - } - return item; - }, - handleTwoHanded: function(item, type, req) { - var message, currentWeapon, currentShield; - if (type == null) { - type = 'equipped'; - } - currentShield = content.gear.flat[user.items.gear[type].shield]; - currentWeapon = content.gear.flat[user.items.gear[type].weapon]; - - if (item.type === "shield" && (currentWeapon ? currentWeapon.twoHanded : false)) { - user.items.gear[type].weapon = 'weapon_base_0'; - message = i18n.t('messageTwoHandedUnequip', { - twoHandedText: currentWeapon.text(req.language), offHandedText: item.text(req.language), - }, req.language); - } else if (item.twoHanded && (currentShield && user.items.gear[type].shield != "shield_base_0")) { - user.items.gear[type].shield = "shield_base_0"; - message = i18n.t('messageTwoHandedEquip', { - twoHandedText: item.text(req.language), offHandedText: currentShield.text(req.language), - }, req.language); - } - return message; - }, - - /* - Because the same op needs to be performed on the client and the server (critical hits, item drops, etc), - we need things to be "random", but technically predictable so that they don't go out-of-sync - */ - predictableRandom: function(seed) { - var x; - if (!seed || seed === Math.PI) { - seed = _.reduce(user.stats, (function(m, v) { - if (_.isNumber(v)) { - return m + v; - } else { - return m; - } - }), 0); - } - x = Math.sin(seed++) * 10000; - return x - Math.floor(x); - }, - crit: function(stat, chance) { - var s; - if (stat == null) { - stat = 'str'; - } - if (chance == null) { - chance = .03; - } - s = user._statsComputed[stat]; - if (user.fns.predictableRandom() <= chance * (1 + s / 100)) { - return 1.5 + 4 * s / (s + 200); - } else { - return 1; - } - }, - - /* - Get a random property from an object - returns random property (the value) - */ - randomVal: function(obj, options) { - var array, rand; - array = (options != null ? options.key : void 0) ? _.keys(obj) : _.values(obj); - rand = user.fns.predictableRandom(options != null ? options.seed : void 0); - array.sort(); - return array[Math.floor(rand * array.length)]; - }, - - /* - This allows you to set object properties by dot-path. Eg, you can run pathSet('stats.hp',50,user) which is the same as - user.stats.hp = 50. This is useful because in our habitrpg-shared functions we're returning changesets as {path:value}, - so that different consumers can implement setters their own way. Derby needs model.set(path, value) for example, where - Angular sets object properties directly - in which case, this function will be used. - */ - dotSet: function(path, val) { - return api.dotSet(user, path, val); - }, - dotGet: function(path) { - return api.dotGet(user, path); - }, - randomDrop: function(modifiers, req) { - var acceptableDrops, base, base1, base2, chance, drop, dropK, dropMultiplier, name, name1, name2, quest, rarity, ref, ref1, ref2, ref3, task; - task = modifiers.task; - chance = _.min([Math.abs(task.value - 21.27), 37.5]) / 150 + .02; - chance *= task.priority * (1 + (task.streak / 100 || 0)) * (1 + (user._statsComputed.per / 100)) * (1 + (user.contributor.level / 40 || 0)) * (1 + (user.achievements.rebirths / 20 || 0)) * (1 + (user.achievements.streak / 200 || 0)) * (user._tmp.crit || 1) * (1 + .5 * (_.reduce(task.checklist, (function(m, i) { - return m + (i.completed ? 1 : 0); - }), 0) || 0)); - chance = api.diminishingReturns(chance, 0.75); - quest = content.quests[(ref = user.party.quest) != null ? ref.key : void 0]; - if ((quest != null ? quest.collect : void 0) && user.fns.predictableRandom(user.stats.gp) < chance) { - dropK = user.fns.randomVal(quest.collect, { - key: true - }); - user.party.quest.progress.collect[dropK]++; - if (typeof user.markModified === "function") { - user.markModified('party.quest.progress'); - } - } - dropMultiplier = ((ref1 = user.purchased) != null ? (ref2 = ref1.plan) != null ? ref2.customerId : void 0 : void 0) ? 2 : 1; - if ((daysSince(user.items.lastDrop.date, user.preferences) === 0) && (user.items.lastDrop.count >= dropMultiplier * (5 + Math.floor(user._statsComputed.per / 25) + (user.contributor.level || 0)))) { - return; - } - if (((ref3 = user.flags) != null ? ref3.dropsEnabled : void 0) && user.fns.predictableRandom(user.stats.exp) < chance) { - rarity = user.fns.predictableRandom(user.stats.gp); - if (rarity > .6) { - drop = user.fns.randomVal(_.where(content.food, { - canDrop: true - })); - if ((base = user.items.food)[name = drop.key] == null) { - base[name] = 0; - } - user.items.food[drop.key] += 1; - drop.type = 'Food'; - drop.dialog = i18n.t('messageDropFood', { - dropArticle: drop.article, - dropText: drop.text(req.language), - dropNotes: drop.notes(req.language) - }, req.language); - } else if (rarity > .3) { - drop = user.fns.randomVal(content.dropEggs); - if ((base1 = user.items.eggs)[name1 = drop.key] == null) { - base1[name1] = 0; - } - user.items.eggs[drop.key]++; - drop.type = 'Egg'; - drop.dialog = i18n.t('messageDropEgg', { - dropText: drop.text(req.language), - dropNotes: drop.notes(req.language) - }, req.language); - } else { - acceptableDrops = rarity < .02 ? ['Golden'] : rarity < .09 ? ['Zombie', 'CottonCandyPink', 'CottonCandyBlue'] : rarity < .18 ? ['Red', 'Shade', 'Skeleton'] : ['Base', 'White', 'Desert']; - drop = user.fns.randomVal(_.pick(content.hatchingPotions, (function(v, k) { - return indexOf.call(acceptableDrops, k) >= 0; - }))); - if ((base2 = user.items.hatchingPotions)[name2 = drop.key] == null) { - base2[name2] = 0; - } - user.items.hatchingPotions[drop.key]++; - drop.type = 'HatchingPotion'; - drop.dialog = i18n.t('messageDropPotion', { - dropText: drop.text(req.language), - dropNotes: drop.notes(req.language) - }, req.language); - } - user._tmp.drop = drop; - user.items.lastDrop.date = +(new Date); - return user.items.lastDrop.count++; - } - }, - - /* - Updates user stats with new stats. Handles death, leveling up, etc - {stats} new stats - {update} if aggregated changes, pass in userObj as update. otherwise commits will be made immediately - */ - autoAllocate: function() { - return user.stats[(function() { - var diff, ideal, lvlDiv7, preference, stats, suggested; - switch (user.preferences.allocationMode) { - case "flat": - stats = _.pick(user.stats, $w('con str per int')); - return _.invert(stats)[_.min(stats)]; - case "classbased": - lvlDiv7 = user.stats.lvl / 7; - ideal = [lvlDiv7 * 3, lvlDiv7 * 2, lvlDiv7, lvlDiv7]; - preference = (function() { - switch (user.stats["class"]) { - case "wizard": - return ["int", "per", "con", "str"]; - case "rogue": - return ["per", "str", "int", "con"]; - case "healer": - return ["con", "int", "str", "per"]; - default: - return ["str", "con", "per", "int"]; - } - })(); - diff = [user.stats[preference[0]] - ideal[0], user.stats[preference[1]] - ideal[1], user.stats[preference[2]] - ideal[2], user.stats[preference[3]] - ideal[3]]; - suggested = _.findIndex(diff, (function(val) { - if (val === _.min(diff)) { - return true; - } - })); - if (~suggested) { - return preference[suggested]; - } else { - return "str"; - } - case "taskbased": - suggested = _.invert(user.stats.training)[_.max(user.stats.training)]; - _.merge(user.stats.training, { - str: 0, - int: 0, - con: 0, - per: 0 - }); - return suggested || "str"; - default: - return "str"; - } - })()]++; - }, - updateStats (stats, req, analytics) { - let allocatedStatPoints; - let totalStatPoints; - let experienceToNextLevel; - - if (stats.hp <= 0) { - user.stats.hp = 0; - return user.stats.hp; - } - - user.stats.hp = stats.hp; - user.stats.gp = stats.gp >= 0 ? stats.gp : 0; - - experienceToNextLevel = api.tnl(user.stats.lvl); - - if (stats.exp >= experienceToNextLevel) { - user.stats.exp = stats.exp; - - while (stats.exp >= experienceToNextLevel) { - stats.exp -= experienceToNextLevel; - user.stats.lvl++; - - experienceToNextLevel = api.tnl(user.stats.lvl); - user.stats.hp = MAX_HEALTH; - allocatedStatPoints = user.stats.str + user.stats.int + user.stats.con + user.stats.per; - totalStatPoints = allocatedStatPoints + user.stats.points; - - if (totalStatPoints >= MAX_STAT_POINTS) { - continue; // eslint-disable-line no-continue - } - if (user.preferences.automaticAllocation) { - user.fns.autoAllocate(); - } else { - user.stats.points = user.stats.lvl - allocatedStatPoints; - totalStatPoints = user.stats.points + allocatedStatPoints; - - if (totalStatPoints > MAX_STAT_POINTS) { - user.stats.points = MAX_STAT_POINTS - allocatedStatPoints; - } - - if (user.stats.points < 0) { - user.stats.points = 0; - } - } - } - } - - user.stats.exp = stats.exp; - user.flags = user.flags || {}; - - if (!user.flags.customizationsNotification && (user.stats.exp > 5 || user.stats.lvl > 1)) { - user.flags.customizationsNotification = true; - } - if (!user.flags.itemsEnabled && (user.stats.exp > 10 || user.stats.lvl > 1)) { - user.flags.itemsEnabled = true; - } - if (!user.flags.dropsEnabled && user.stats.lvl >= 3) { - user.flags.dropsEnabled = true; - if (user.items.eggs["Wolf"] > 0) { - user.items.eggs["Wolf"]++; - } else { - user.items.eggs["Wolf"] = 1; - } - } - if (!user.flags.classSelected && user.stats.lvl >= 10) { - user.flags.classSelected; - } - _.each({ - vice1: 30, - atom1: 15, - moonstone1: 60, - goldenknight1: 40 - }, function(lvl, k) { - var analyticsData, base, base1, ref; - if (!((ref = user.flags.levelDrops) != null ? ref[k] : void 0) && user.stats.lvl >= lvl) { - if ((base = user.items.quests)[k] == null) { - base[k] = 0; - } - user.items.quests[k]++; - ((base1 = user.flags).levelDrops != null ? base1.levelDrops : base1.levelDrops = {})[k] = true; - if (typeof user.markModified === "function") { - user.markModified('flags.levelDrops'); - } - analyticsData = { - uuid: user._id, - itemKey: k, - acquireMethod: 'Level Drop', - category: 'behavior' - }; - if (analytics != null) { - analytics.track('acquire item', analyticsData); - } - if (!user._tmp) user._tmp = {} - return user._tmp.drop = { - type: 'Quest', - key: k - }; - } - }); - if (!user.flags.rebirthEnabled && (user.stats.lvl >= 50 || user.achievements.beastMaster)) { - return user.flags.rebirthEnabled = true; - } - }, - - /* - ------------------------------------------------------ - Cron - ------------------------------------------------------ - */ - - /* - At end of day, add value to all incomplete Daily & Todo tasks (further incentive) - For incomplete Dailys, deduct experience - Make sure to run this function once in a while as server will not take care of overnight calculations. - And you have to run it every time client connects. - {user} - */ - cron: function(options) { - var _progress, analyticsData, base, base1, base2, base3, base4, clearBuffs, dailyChecked, dailyDueUnchecked, daysMissed, expTally, lvl, lvlDiv2, multiDaysCountAsOneDay, now, perfect, plan, progress, ref, ref1, ref2, ref3, todoTally; - if (options == null) { - options = {}; - } - now = +options.now || +(new Date); - daysMissed = daysSince(user.lastCron, _.defaults({ - now: now - }, user.preferences)); - if (!(daysMissed > 0)) { - return; - } - user.auth.timestamps.loggedin = new Date(); - user.lastCron = now; - if (user.items.lastDrop.count > 0) { - user.items.lastDrop.count = 0; - } - perfect = true; - clearBuffs = { - str: 0, - int: 0, - per: 0, - con: 0, - stealth: 0, - streaks: false - }; - plan = (ref = user.purchased) != null ? ref.plan : void 0; - if (plan != null ? plan.customerId : void 0) { - if (typeof plan.dateUpdated === "undefined") { - // partial compensation for bug in subscription creation - https://github.com/HabitRPG/habitrpg/issues/6682 - plan.dateUpdated = new Date(); - } - if (moment(plan.dateUpdated).format('MMYYYY') !== moment().format('MMYYYY')) { - plan.gemsBought = 0; - plan.dateUpdated = new Date(); - _.defaults(plan.consecutive, { - count: 0, - offset: 0, - trinkets: 0, - gemCapExtra: 0 - }); - plan.consecutive.count++; - if (plan.consecutive.offset > 0) { - plan.consecutive.offset--; - } else if (plan.consecutive.count % 3 === 0) { - plan.consecutive.trinkets++; - plan.consecutive.gemCapExtra += 5; - if (plan.consecutive.gemCapExtra > 25) { - plan.consecutive.gemCapExtra = 25; - } - } - } - if (plan.dateTerminated && moment(plan.dateTerminated).isBefore(+(new Date))) { - _.merge(plan, { - planId: null, - customerId: null, - paymentMethod: null - }); - _.merge(plan.consecutive, { - count: 0, - offset: 0, - gemCapExtra: 0 - }); - if (typeof user.markModified === "function") { - user.markModified('purchased.plan'); - } - } - } - if (user.preferences.sleep === true) { - user.stats.buffs = clearBuffs; - user.dailys.forEach(function(daily) { - var completed, repeat, thatDay; - completed = daily.completed, repeat = daily.repeat; - thatDay = moment(now).subtract({ - days: 1 - }); - if (shouldDo(thatDay.toDate(), daily, user.preferences) || completed) { - _.each(daily.checklist, (function(box) { - box.completed = false; - return true; - })); - } - return daily.completed = false; - }); - return; - } - multiDaysCountAsOneDay = true; - todoTally = 0; - user.todos.forEach(function(task) { - var absVal, completed, delta, id; - if (!task) { - return; - } - id = task.id, completed = task.completed; - delta = user.ops.score({ - params: { - id: task.id, - direction: 'down' - }, - query: { - times: multiDaysCountAsOneDay != null ? multiDaysCountAsOneDay : { - 1: daysMissed - }, - cron: true - } - }); - absVal = completed ? Math.abs(task.value) : task.value; - return todoTally += absVal; - }); - dailyChecked = 0; - dailyDueUnchecked = 0; - if ((base = user.party.quest.progress).down == null) { - base.down = 0; - } - user.dailys.forEach(function(task) { - var EvadeTask, completed, delta, fractionChecked, id, j, n, ref1, ref2, scheduleMisses, thatDay; - if (!task) { - return; - } - id = task.id, completed = task.completed; - EvadeTask = 0; - scheduleMisses = daysMissed; - if (completed) { - dailyChecked += 1; - } else { - scheduleMisses = 0; - for (n = j = 0, ref1 = daysMissed; 0 <= ref1 ? j < ref1 : j > ref1; n = 0 <= ref1 ? ++j : --j) { - thatDay = moment(now).subtract({ - days: n + 1 - }); - if (shouldDo(thatDay.toDate(), task, user.preferences)) { - scheduleMisses++; - if (user.stats.buffs.stealth) { - user.stats.buffs.stealth--; - EvadeTask++; - } - if (multiDaysCountAsOneDay) { - break; - } - } - } - if (scheduleMisses > EvadeTask) { - perfect = false; - if (((ref2 = task.checklist) != null ? ref2.length : void 0) > 0) { - fractionChecked = _.reduce(task.checklist, (function(m, i) { - return m + (i.completed ? 1 : 0); - }), 0) / task.checklist.length; - dailyDueUnchecked += 1 - fractionChecked; - dailyChecked += fractionChecked; - } else { - dailyDueUnchecked += 1; - } - delta = user.ops.score({ - params: { - id: task.id, - direction: 'down' - }, - query: { - times: multiDaysCountAsOneDay != null ? multiDaysCountAsOneDay : { - 1: scheduleMisses - EvadeTask - }, - cron: true - } - }); - user.party.quest.progress.down += delta * (task.priority < 1 ? task.priority : 1); - } - } - (task.history != null ? task.history : task.history = []).push({ - date: +(new Date), - value: task.value - }); - task.completed = false; - if (completed || (scheduleMisses > 0)) { - return _.each(task.checklist, (function(i) { - i.completed = false; - return true; - })); - } - }); - user.habits.forEach(function(task) { - if (task.up === false || task.down === false) { - if (Math.abs(task.value) < 0.1) { - return task.value = 0; - } else { - return task.value = task.value / 2; - } - } - }); - ((base1 = (user.history != null ? user.history : user.history = {})).todos != null ? base1.todos : base1.todos = []).push({ - date: now, - value: todoTally - }); - expTally = user.stats.exp; - lvl = 0; - while (lvl < (user.stats.lvl - 1)) { - lvl++; - expTally += api.tnl(lvl); - } - ((base2 = user.history).exp != null ? base2.exp : base2.exp = []).push({ - date: now, - value: expTally - }); - if (!((ref1 = user.purchased) != null ? (ref2 = ref1.plan) != null ? ref2.customerId : void 0 : void 0)) { - user.fns.preenUserHistory(); - if (typeof user.markModified === "function") { - user.markModified('history'); - } - if (typeof user.markModified === "function") { - user.markModified('dailys'); - } - } - user.stats.buffs = perfect ? ((base3 = user.achievements).perfect != null ? base3.perfect : base3.perfect = 0, user.achievements.perfect++, lvlDiv2 = Math.ceil(api.capByLevel(user.stats.lvl) / 2), { - str: lvlDiv2, - int: lvlDiv2, - per: lvlDiv2, - con: lvlDiv2, - stealth: 0, - streaks: false - }) : clearBuffs; - if (dailyDueUnchecked === 0 && dailyChecked === 0) { - dailyChecked = 1; - } - user.stats.mp += _.max([10, .1 * user._statsComputed.maxMP]) * dailyChecked / (dailyDueUnchecked + dailyChecked); - if (user.stats.mp > user._statsComputed.maxMP) { - user.stats.mp = user._statsComputed.maxMP; - } - progress = user.party.quest.progress; - _progress = _.cloneDeep(progress); - _.merge(progress, { - down: 0, - up: 0 - }); - progress.collect = _.transform(progress.collect, (function(m, v, k) { - return m[k] = 0; - })); - if ((base4 = user.flags).cronCount == null) { - base4.cronCount = 0; - } - user.flags.cronCount++; - analyticsData = { - category: 'behavior', - gaLabel: 'Cron Count', - gaValue: user.flags.cronCount, - uuid: user._id, - user: user, - resting: user.preferences.sleep, - cronCount: user.flags.cronCount, - progressUp: _.min([_progress.up, 900]), - progressDown: _progress.down - }; - if ((ref3 = options.analytics) != null) { - ref3.track('Cron', analyticsData); - } - return _progress; - }, - preenUserHistory: function(minHistLen) { - if (minHistLen == null) { - minHistLen = 7; - } - _.each(user.habits.concat(user.dailys), function(task) { - var ref; - if (((ref = task.history) != null ? ref.length : void 0) > minHistLen) { - task.history = preenHistory(task.history); - } - return true; - }); - _.defaults(user.history, { - todos: [], - exp: [] - }); - if (user.history.exp.length > minHistLen) { - user.history.exp = preenHistory(user.history.exp); - } - if (user.history.todos.length > minHistLen) { - return user.history.todos = preenHistory(user.history.todos); - } - }, - ultimateGear: function() { - var base, owned; - owned = typeof window !== "undefined" && window !== null ? user.items.gear.owned : user.items.gear.owned.toObject(); - if ((base = user.achievements).ultimateGearSets == null) { - base.ultimateGearSets = { - healer: false, - wizard: false, - rogue: false, - warrior: false - }; - } - content.classes.forEach(function(klass) { - if (user.achievements.ultimateGearSets[klass] !== true) { - return user.achievements.ultimateGearSets[klass] = _.reduce(['armor', 'shield', 'head', 'weapon'], function(soFarGood, type) { - var found; - found = _.find(content.gear.tree[type][klass], { - last: true - }); - return soFarGood && (!found || owned[found.key] === true); - }, true); - } - }); - if (typeof user.markModified === "function") { - user.markModified('achievements.ultimateGearSets'); - } - if (_.contains(user.achievements.ultimateGearSets, true) && user.flags.armoireEnabled !== true) { - user.flags.armoireEnabled = true; - return typeof user.markModified === "function" ? user.markModified('flags') : void 0; - } - }, - nullify: function() { - user.ops = null; - user.fns = null; - return user = null; - } + getItem: _.partial(importedFns.getItem, user), + handleTwoHanded: _.partial(importedFns.handleTwoHanded, user), + predictableRandom: _.partial(importedFns.predictableRandom, user), + crit: _.partial(importedFns.crit, user), + randomVal: _.partial(importedFns.randomVal, user), + dotSet: _.partial(importedFns.dotSet, user), + dotGet: _.partial(importedFns.dotGet, user), + randomDrop: _.partial(importedFns.randomDrop, user), + autoAllocate: _.partial(importedFns.autoAllocate, user), + updateStats: _.partial(importedFns.updateStats, user), + cron: _.partial(importedFns.cron, user), + preenUserHistory: _.partial(importedFns.preenUserHistory, user), + ultimateGear: _.partial(importedFns.ultimateGear, user), + nullify: _.partial(importedFns.nullify, user), }; Object.defineProperty(user, '_statsComputed', { get: function() { diff --git a/common/script/libs/appliedTags.js b/common/script/libs/appliedTags.js new file mode 100644 index 0000000000..31302fbe54 --- /dev/null +++ b/common/script/libs/appliedTags.js @@ -0,0 +1,19 @@ +import _ from 'lodash'; + +/* +Are there tags applied? + */ + +module.exports = function(userTags, taskTags) { + var arr; + arr = []; + _.each(userTags, function(t) { + if (t == null) { + return; + } + if (taskTags != null ? taskTags[t.id] : void 0) { + return arr.push(t.name); + } + }); + return arr.join(', '); +}; diff --git a/common/script/libs/countExists.js b/common/script/libs/countExists.js new file mode 100644 index 0000000000..964e4e286f --- /dev/null +++ b/common/script/libs/countExists.js @@ -0,0 +1,7 @@ +import _ from 'lodash'; + +module.exports = function(items) { + return _.reduce(items, (function(m, v) { + return m + (v ? 1 : 0); + }), 0); +}; diff --git a/common/script/libs/dotGet.js b/common/script/libs/dotGet.js new file mode 100644 index 0000000000..4585d8fd53 --- /dev/null +++ b/common/script/libs/dotGet.js @@ -0,0 +1,9 @@ +import _ from 'lodash'; + +module.exports = function(obj, path) { + return _.reduce(path.split('.'), ((function(_this) { + return function(curr, next) { + return curr != null ? curr[next] : void 0; + }; + })(this)), obj); +}; diff --git a/common/script/libs/dotSet.js b/common/script/libs/dotSet.js new file mode 100644 index 0000000000..40165078aa --- /dev/null +++ b/common/script/libs/dotSet.js @@ -0,0 +1,14 @@ +import _ from 'lodash'; + +module.exports = function(obj, path, val) { + var arr; + arr = path.split('.'); + return _.reduce(arr, (function(_this) { + return function(curr, next, index) { + if ((arr.length - 1) === index) { + curr[next] = val; + } + return curr[next] != null ? curr[next] : curr[next] = {}; + }; + })(this), obj); +}; diff --git a/common/script/libs/encodeiCalLink.js b/common/script/libs/encodeiCalLink.js new file mode 100644 index 0000000000..4a85badd59 --- /dev/null +++ b/common/script/libs/encodeiCalLink.js @@ -0,0 +1,9 @@ +/* +Encode the download link for .ics iCal file + */ + +module.exports = function(uid, apiToken) { + var loc, ref; + loc = (typeof window !== "undefined" && window !== null ? window.location.host : void 0) || (typeof process !== "undefined" && process !== null ? (ref = process.env) != null ? ref.BASE_URL : void 0 : void 0) || ''; + return encodeURIComponent("http://" + loc + "/v1/users/" + uid + "/calendar.ics?apiToken=" + apiToken); +}; diff --git a/common/script/libs/friendlyTimestamp.js b/common/script/libs/friendlyTimestamp.js new file mode 100644 index 0000000000..dfda6fbed7 --- /dev/null +++ b/common/script/libs/friendlyTimestamp.js @@ -0,0 +1,9 @@ +import moment from 'moment'; + +/* +Friendly timestamp + */ + +module.exports = function(timestamp) { + return moment(timestamp).format('MM/DD h:mm:ss a'); +}; diff --git a/common/script/libs/gold.js b/common/script/libs/gold.js new file mode 100644 index 0000000000..8016e2cff9 --- /dev/null +++ b/common/script/libs/gold.js @@ -0,0 +1,7 @@ +module.exports = function(num) { + if (num) { + return Math.floor(num); + } else { + return "0"; + } +}; diff --git a/common/script/libs/index.js b/common/script/libs/index.js new file mode 100644 index 0000000000..dd0c420d8d --- /dev/null +++ b/common/script/libs/index.js @@ -0,0 +1,46 @@ +import uuid from './uuid'; +import taskDefaults from './taskDefaults'; +import refPush from './refPush'; +import splitWhitespace from './splitWhitespace'; +import planGemLimits from './planGemLimits'; +import preenTodos from './preenTodos'; +import dotSet from './dotSet'; +import dotGet from './dotGet'; +import preenHistory from './preenHistory'; +import countExists from './countExists'; +import updateStore from './updateStore'; + +import appliedTags from './appliedTags'; +import encodeiCalLink from './encodeiCalLink'; +import friendlyTimestamp from './friendlyTimestamp'; +import gold from './gold'; +import newChatMessages from './newChatMessages'; +import noTags from './noTags'; +import percent from './percent'; +import removeWhitespace from './removeWhitespace'; +import silver from './silver'; +import taskClasses from './taskClasses'; + +module.exports = { + uuid, + taskDefaults, + refPush, + splitWhitespace, + planGemLimits, + preenTodos, + dotSet, + dotGet, + preenHistory, + countExists, + updateStore, + appliedTags, + encodeiCalLink, + friendlyTimestamp, + gold, + newChatMessages, + noTags, + percent, + removeWhitespace, + silver, + taskClasses, +}; diff --git a/common/script/libs/newChatMessages.js b/common/script/libs/newChatMessages.js new file mode 100644 index 0000000000..abe7680edf --- /dev/null +++ b/common/script/libs/newChatMessages.js @@ -0,0 +1,10 @@ +/* +Does user have new chat messages? + */ + +module.exports = function(messages, lastMessageSeen) { + if (!((messages != null ? messages.length : void 0) > 0)) { + return false; + } + return (messages != null ? messages[0] : void 0) && (messages[0].id !== lastMessageSeen); +}; diff --git a/common/script/libs/noTags.js b/common/script/libs/noTags.js new file mode 100644 index 0000000000..c3abb9054e --- /dev/null +++ b/common/script/libs/noTags.js @@ -0,0 +1,11 @@ +import _ from 'lodash'; + +/* +are any tags active? + */ + +module.exports = function(tags) { + return _.isEmpty(tags) || _.isEmpty(_.filter(tags, function(t) { + return t; + })); +}; diff --git a/common/script/libs/percent.js b/common/script/libs/percent.js new file mode 100644 index 0000000000..7439b22285 --- /dev/null +++ b/common/script/libs/percent.js @@ -0,0 +1,17 @@ +module.exports = function(x, y, dir) { + var roundFn; + switch (dir) { + case "up": + roundFn = Math.ceil; + break; + case "down": + roundFn = Math.floor; + break; + default: + roundFn = Math.round; + } + if (x === 0) { + x = 1; + } + return Math.max(0, roundFn(x / y * 100)); +}; diff --git a/common/script/libs/planGemLimits.js b/common/script/libs/planGemLimits.js new file mode 100644 index 0000000000..e719c7695d --- /dev/null +++ b/common/script/libs/planGemLimits.js @@ -0,0 +1,4 @@ +module.exports = { + convRate: 20, + convCap: 25, +}; diff --git a/common/script/libs/preenHistory.js b/common/script/libs/preenHistory.js new file mode 100644 index 0000000000..0d354c238c --- /dev/null +++ b/common/script/libs/preenHistory.js @@ -0,0 +1,43 @@ +import moment from 'moment'; +import _ from 'lodash'; + +/* +Preen history for users with > 7 history entries +This takes an infinite array of single day entries [day day day day day...], and turns it into a condensed array +of averages, condensing more the further back in time we go. Eg, 7 entries each for last 7 days; 1 entry each week +of this month; 1 entry for each month of this year; 1 entry per previous year: [day*7 week*4 month*12 year*infinite] + */ + +module.exports = function(history) { + var newHistory, preen, thisMonth; + history = _.filter(history, function(h) { + return !!h; + }); + newHistory = []; + preen = function(amount, groupBy) { + var groups; + groups = _.chain(history).groupBy(function(h) { + return moment(h.date).format(groupBy); + }).sortBy(function(h, k) { + return k; + }).value(); + groups = groups.slice(-amount); + groups.pop(); + return _.each(groups, function(group) { + newHistory.push({ + date: moment(group[0].date).toDate(), + value: _.reduce(group, (function(m, obj) { + return m + obj.value; + }), 0) / group.length + }); + return true; + }); + }; + preen(50, "YYYY"); + preen(moment().format('MM'), "YYYYMM"); + thisMonth = moment().format('YYYYMM'); + newHistory = newHistory.concat(_.filter(history, function(h) { + return moment(h.date).format('YYYYMM') === thisMonth; + })); + return newHistory; +}; diff --git a/common/script/libs/preenTodos.js b/common/script/libs/preenTodos.js new file mode 100644 index 0000000000..f07a49c9d0 --- /dev/null +++ b/common/script/libs/preenTodos.js @@ -0,0 +1,14 @@ +import moment from 'moment'; +import _ from 'lodash'; + +/* + Preen 3-day past-completed To-Dos from Angular & mobile app + */ + +module.exports = function(tasks) { + return _.filter(tasks, function(t) { + return !t.completed || (t.challenge && t.challenge.id) || moment(t.dateCompleted).isAfter(moment().subtract({ + days: 3 + })); + }); +}; diff --git a/common/script/libs/refPush.js b/common/script/libs/refPush.js new file mode 100644 index 0000000000..06b3617014 --- /dev/null +++ b/common/script/libs/refPush.js @@ -0,0 +1,19 @@ +import _ from 'lodash'; +import uuid from './uuid'; + +/* + Reflists are arrays, but stored as objects. Mongoose has a helluvatime working with arrays (the main problem for our + syncing issues) - so the goal is to move away from arrays to objects, since mongoose can reference elements by ID + no problem. To maintain sorting, we use these helper functions: + */ + +module.exports = function(reflist, item, prune) { + if (prune == null) { + prune = 0; + } + item.sort = _.isEmpty(reflist) ? 0 : _.max(reflist, 'sort').sort + 1; + if (!(item.id && !reflist[item.id])) { + item.id = uuid(); + } + return reflist[item.id] = item; +}; diff --git a/common/script/libs/removeWhitespace.js b/common/script/libs/removeWhitespace.js new file mode 100644 index 0000000000..1015beda54 --- /dev/null +++ b/common/script/libs/removeWhitespace.js @@ -0,0 +1,10 @@ +/* +Remove whitespace #FIXME are we using this anywwhere? Should we be? + */ + +module.exports = function(str) { + if (!str) { + return ''; + } + return str.replace(/\s/g, ''); +}; diff --git a/common/script/libs/silver.js b/common/script/libs/silver.js new file mode 100644 index 0000000000..0dbae97b05 --- /dev/null +++ b/common/script/libs/silver.js @@ -0,0 +1,11 @@ +/* +Silver amount from their money + */ + +module.exports = function(num) { + if (num) { + return ("0" + Math.floor((num - Math.floor(num)) * 100)).slice(-2); + } else { + return "00"; + } +}; diff --git a/common/script/libs/splitWhitespace.js b/common/script/libs/splitWhitespace.js new file mode 100644 index 0000000000..1ef3d513aa --- /dev/null +++ b/common/script/libs/splitWhitespace.js @@ -0,0 +1,3 @@ +module.exports = function(s) { + return s.split(' '); +}; diff --git a/common/script/libs/taskClasses.js b/common/script/libs/taskClasses.js new file mode 100644 index 0000000000..21bed1ad63 --- /dev/null +++ b/common/script/libs/taskClasses.js @@ -0,0 +1,83 @@ +import { + shouldDo +} from '../cron'; +/* +Task classes given everything about the class +*/ +module.exports = function(task, filters, dayStart, lastCron, showCompleted, main) { + var classes, completed, enabled, filter, priority, ref, repeat, type, value; + if (filters == null) { + filters = []; + } + if (dayStart == null) { + dayStart = 0; + } + if (lastCron == null) { + lastCron = +(new Date); + } + if (showCompleted == null) { + showCompleted = false; + } + if (main == null) { + main = false; + } + if (!task) { + return; + } + type = task.type, completed = task.completed, value = task.value, repeat = task.repeat, priority = task.priority; + if (main) { + if (!task._editing) { + for (filter in filters) { + enabled = filters[filter]; + if (enabled && !((ref = task.tags) != null ? ref[filter] : void 0)) { + return 'hidden'; + } + } + } + } + classes = type; + if (task._editing) { + classes += " beingEdited"; + } + if (type === 'todo' || type === 'daily') { + if (completed || (type === 'daily' && !shouldDo(+(new Date), task, { + dayStart: dayStart + }))) { + classes += " completed"; + } else { + classes += " uncompleted"; + } + } else if (type === 'habit') { + if (task.down && task.up) { + classes += ' habit-wide'; + } + if (!task.down && !task.up) { + classes += ' habit-narrow'; + } + } + if (priority === 0.1) { + classes += ' difficulty-trivial'; + } else if (priority === 1) { + classes += ' difficulty-easy'; + } else if (priority === 1.5) { + classes += ' difficulty-medium'; + } else if (priority === 2) { + classes += ' difficulty-hard'; + } + if (value < -20) { + classes += ' color-worst'; + } else if (value < -10) { + classes += ' color-worse'; + } else if (value < -1) { + classes += ' color-bad'; + } else if (value < 1) { + classes += ' color-neutral'; + } else if (value < 5) { + classes += ' color-good'; + } else if (value < 10) { + classes += ' color-better'; + } else { + classes += ' color-best'; + } + return classes; +}; diff --git a/common/script/libs/taskDefaults.js b/common/script/libs/taskDefaults.js new file mode 100644 index 0000000000..69c815e4fd --- /dev/null +++ b/common/script/libs/taskDefaults.js @@ -0,0 +1,71 @@ +import uuid from './uuid'; +import _ from 'lodash'; + +/* +Even though Mongoose handles task defaults, we want to make sure defaults are set on the client-side before +sending up to the server for performance + */ + +// TODO revisit + +module.exports = function(task) { + var defaults, ref, ref1, ref2; + if (task == null) { + task = {}; + } + if (!(task.type && ((ref = task.type) === 'habit' || ref === 'daily' || ref === 'todo' || ref === 'reward'))) { + task.type = 'habit'; + } + defaults = { + id: uuid(), + text: task.id != null ? task.id : '', + notes: '', + priority: 1, + challenge: {}, + attribute: 'str', + dateCreated: new Date() + }; + _.defaults(task, defaults); + if (task.type === 'habit') { + _.defaults(task, { + up: true, + down: true + }); + } + if ((ref1 = task.type) === 'habit' || ref1 === 'daily') { + _.defaults(task, { + history: [] + }); + } + if ((ref2 = task.type) === 'daily' || ref2 === 'todo') { + _.defaults(task, { + completed: false + }); + } + if (task.type === 'daily') { + _.defaults(task, { + streak: 0, + repeat: { + su: true, + m: true, + t: true, + w: true, + th: true, + f: true, + s: true + } + }, { + startDate: new Date(), + everyX: 1, + frequency: 'weekly' + }); + } + task._id = task.id; + if (task.value == null) { + task.value = task.type === 'reward' ? 10 : 0; + } + if (!_.isNumber(task.priority)) { + task.priority = 1; + } + return task; +}; diff --git a/common/script/libs/updateStore.js b/common/script/libs/updateStore.js new file mode 100644 index 0000000000..05d009fd9d --- /dev/null +++ b/common/script/libs/updateStore.js @@ -0,0 +1,36 @@ +import _ from 'lodash'; +import content from '../content/index'; + +/* + Update the in-browser store with new gear. FIXME this was in user.fns, but it was causing strange issues there + */ + +var sortOrder = _.reduce(content.gearTypes, (function(m, v, k) { + m[v] = k; + return m; +}), {}); + +module.exports = function(user) { + var changes; + if (!user) { + return; + } + changes = []; + _.each(content.gearTypes, function(type) { + var found; + found = _.find(content.gear.tree[type][user.stats["class"]], function(item) { + return !user.items.gear.owned[item.key]; + }); + if (found) { + changes.push(found); + } + return true; + }); + changes = changes.concat(_.filter(content.gear.flat, function(v) { + var ref; + return ((ref = v.klass) === 'special' || ref === 'mystery' || ref === 'armoire') && !user.items.gear.owned[v.key] && (typeof v.canOwn === "function" ? v.canOwn(user) : void 0); + })); + return _.sortBy(changes, function(c) { + return sortOrder[c.type]; + }); +}; diff --git a/common/script/libs/uuid.js b/common/script/libs/uuid.js new file mode 100644 index 0000000000..4a26440d7d --- /dev/null +++ b/common/script/libs/uuid.js @@ -0,0 +1,9 @@ +// TODO use node-uuid module +module.exports = function() { + return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) { + var r, v; + r = Math.random() * 16 | 0; + v = (c === "x" ? r : r & 0x3 | 0x8); + return v.toString(16); + }); +}; diff --git a/common/script/ops/addPushDevice.js b/common/script/ops/addPushDevice.js new file mode 100644 index 0000000000..d96cf249cf --- /dev/null +++ b/common/script/ops/addPushDevice.js @@ -0,0 +1,20 @@ +import _ from 'lodash'; + +module.exports = function(user, req, cb) { + var i, item, pd; + if (!user.pushDevices) { + user.pushDevices = []; + } + pd = user.pushDevices; + item = { + regId: req.body.regId, + type: req.body.type + }; + i = _.findIndex(pd, { + regId: item.regId + }); + if (i === -1) { + pd.push(item); + } + return typeof cb === "function" ? cb(null, user.pushDevices) : void 0; +}; diff --git a/common/script/ops/addTag.js b/common/script/ops/addTag.js new file mode 100644 index 0000000000..a020a5fbaf --- /dev/null +++ b/common/script/ops/addTag.js @@ -0,0 +1,12 @@ +import uuid from '../libs/uuid'; + +module.exports = function(user, req, cb) { + if (user.tags == null) { + user.tags = []; + } + user.tags.push({ + name: req.body.name, + id: req.body.id || uuid() + }); + return typeof cb === "function" ? cb(null, user.tags) : void 0; +}; diff --git a/common/script/ops/addTask.js b/common/script/ops/addTask.js new file mode 100644 index 0000000000..a2d1895e1e --- /dev/null +++ b/common/script/ops/addTask.js @@ -0,0 +1,27 @@ +import taskDefaults from '../libs/taskDefaults'; +import i18n from '../i18n'; + +module.exports = function(user, req, cb) { + var task; + task = taskDefaults(req.body); + if (user.tasks[task.id] != null) { + return typeof cb === "function" ? cb({ + code: 409, + message: i18n.t('messageDuplicateTaskID', req.language) + }) : void 0; + } + user[task.type + "s"].unshift(task); + if (user.preferences.newTaskEdit) { + task._editing = true; + } + if (user.preferences.tagsCollapsed) { + task._tags = true; + } + if (!user.preferences.advancedCollapsed) { + task._advanced = true; + } + if (typeof cb === "function") { + cb(null, task); + } + return task; +}; diff --git a/common/script/ops/addWebhook.js b/common/script/ops/addWebhook.js new file mode 100644 index 0000000000..99eaf49bba --- /dev/null +++ b/common/script/ops/addWebhook.js @@ -0,0 +1,15 @@ +import refPush from '../libs/refPush'; + +module.exports = function(user, req, cb) { + var wh; + wh = user.preferences.webhooks; + refPush(wh, { + url: req.body.url, + enabled: req.body.enabled || true, + id: req.body.id + }); + if (typeof user.markModified === "function") { + user.markModified('preferences.webhooks'); + } + return typeof cb === "function" ? cb(null, user.preferences.webhooks) : void 0; +}; diff --git a/common/script/ops/allocate.js b/common/script/ops/allocate.js new file mode 100644 index 0000000000..92b5ae53fa --- /dev/null +++ b/common/script/ops/allocate.js @@ -0,0 +1,15 @@ +import _ from 'lodash'; +import splitWhitespace from '../libs/splitWhitespace'; + +module.exports = function(user, req, cb) { + var stat; + stat = req.query.stat || 'str'; + if (user.stats.points > 0) { + user.stats[stat]++; + user.stats.points--; + if (stat === 'int') { + user.stats.mp++; + } + } + return typeof cb === "function" ? cb(null, _.pick(user, splitWhitespace('stats'))) : void 0; +}; diff --git a/common/script/ops/allocateNow.js b/common/script/ops/allocateNow.js new file mode 100644 index 0000000000..815c0b8959 --- /dev/null +++ b/common/script/ops/allocateNow.js @@ -0,0 +1,10 @@ +import _ from 'lodash'; + +module.exports = function(user, req, cb) { + _.times(user.stats.points, user.fns.autoAllocate); + user.stats.points = 0; + if (typeof user.markModified === "function") { + user.markModified('stats'); + } + return typeof cb === "function" ? cb(null, user.stats) : void 0; +}; diff --git a/common/script/ops/blockUser.js b/common/script/ops/blockUser.js new file mode 100644 index 0000000000..dd08925640 --- /dev/null +++ b/common/script/ops/blockUser.js @@ -0,0 +1,13 @@ +module.exports = function(user, req, cb) { + var i; + i = user.inbox.blocks.indexOf(req.params.uuid); + if (~i) { + user.inbox.blocks.splice(i, 1); + } else { + user.inbox.blocks.push(req.params.uuid); + } + if (typeof user.markModified === "function") { + user.markModified('inbox.blocks'); + } + return typeof cb === "function" ? cb(null, user.inbox.blocks) : void 0; +}; diff --git a/common/script/ops/buy.js b/common/script/ops/buy.js new file mode 100644 index 0000000000..1686316264 --- /dev/null +++ b/common/script/ops/buy.js @@ -0,0 +1,119 @@ +import content from '../content/index'; +import i18n from '../i18n'; +import _ from 'lodash'; +import count from '../count'; +import splitWhitespace from '../libs/splitWhitespace'; + +module.exports = function(user, req, cb, analytics) { + var analyticsData, armoireExp, armoireResp, armoireResult, base, buyResp, drop, eligibleEquipment, item, key, message, name; + key = req.params.key; + item = key === 'potion' ? content.potion : key === 'armoire' ? content.armoire : content.gear.flat[key]; + if (!item) { + return typeof cb === "function" ? cb({ + code: 404, + message: "Item '" + key + " not found (see https://github.com/HabitRPG/habitrpg/blob/develop/common/script/content/index.js)" + }) : void 0; + } + if (user.stats.gp < item.value) { + return typeof cb === "function" ? cb({ + code: 401, + message: i18n.t('messageNotEnoughGold', req.language) + }) : void 0; + } + if ((item.canOwn != null) && !item.canOwn(user)) { + return typeof cb === "function" ? cb({ + code: 401, + message: "You can't buy this item" + }) : void 0; + } + armoireResp = void 0; + if (item.key === 'potion') { + user.stats.hp += 15; + if (user.stats.hp > 50) { + user.stats.hp = 50; + } + } else if (item.key === 'armoire') { + armoireResult = user.fns.predictableRandom(user.stats.gp); + eligibleEquipment = _.filter(content.gear.flat, (function(i) { + return i.klass === 'armoire' && !user.items.gear.owned[i.key]; + })); + if (!_.isEmpty(eligibleEquipment) && (armoireResult < .6 || !user.flags.armoireOpened)) { + eligibleEquipment.sort(); + drop = user.fns.randomVal(eligibleEquipment); + user.items.gear.owned[drop.key] = true; + user.flags.armoireOpened = true; + message = i18n.t('armoireEquipment', { + image: '', + dropText: drop.text(req.language) + }, req.language); + if (count.remainingGearInSet(user.items.gear.owned, 'armoire') === 0) { + user.flags.armoireEmpty = true; + } + armoireResp = { + type: "gear", + dropKey: drop.key, + dropText: drop.text(req.language) + }; + } else if ((!_.isEmpty(eligibleEquipment) && armoireResult < .8) || armoireResult < .5) { + drop = user.fns.randomVal(_.where(content.food, { + canDrop: true + })); + if ((base = user.items.food)[name = drop.key] == null) { + base[name] = 0; + } + user.items.food[drop.key] += 1; + message = i18n.t('armoireFood', { + image: '', + dropArticle: drop.article, + dropText: drop.text(req.language) + }, req.language); + armoireResp = { + type: "food", + dropKey: drop.key, + dropArticle: drop.article, + dropText: drop.text(req.language) + }; + } else { + armoireExp = Math.floor(user.fns.predictableRandom(user.stats.exp) * 40 + 10); + user.stats.exp += armoireExp; + message = i18n.t('armoireExp', req.language); + armoireResp = { + "type": "experience", + "value": armoireExp + }; + } + } else { + if (user.preferences.autoEquip) { + user.items.gear.equipped[item.type] = item.key; + message = user.fns.handleTwoHanded(item, null, req); + } + user.items.gear.owned[item.key] = true; + if (message == null) { + message = i18n.t('messageBought', { + itemText: item.text(req.language) + }, req.language); + } + if (item.last) { + user.fns.ultimateGear(); + } + } + user.stats.gp -= item.value; + analyticsData = { + uuid: user._id, + itemKey: key, + acquireMethod: 'Gold', + goldCost: item.value, + category: 'behavior' + }; + if (analytics != null) { + analytics.track('acquire item', analyticsData); + } + buyResp = _.pick(user, splitWhitespace('items achievements stats flags')); + if (armoireResp) { + buyResp["armoire"] = armoireResp; + } + return typeof cb === "function" ? cb({ + code: 200, + message: message + }, buyResp) : void 0; +}; diff --git a/common/script/ops/buyMysterySet.js b/common/script/ops/buyMysterySet.js new file mode 100644 index 0000000000..44ccdb9aaf --- /dev/null +++ b/common/script/ops/buyMysterySet.js @@ -0,0 +1,43 @@ +import i18n from '../i18n'; +import content from '../content/index'; +import _ from 'lodash'; +import splitWhitespace from '../libs/splitWhitespace'; + +module.exports = function(user, req, cb, analytics) { + var mysterySet, ref; + if (!(user.purchased.plan.consecutive.trinkets > 0)) { + return typeof cb === "function" ? cb({ + code: 401, + message: i18n.t('notEnoughHourglasses', req.language) + }) : void 0; + } + mysterySet = (ref = content.timeTravelerStore(user.items.gear.owned)) != null ? ref[req.params.key] : void 0; + if ((typeof window !== "undefined" && window !== null ? window.confirm : void 0) != null) { + if (!window.confirm(i18n.t('hourglassBuyEquipSetConfirm'))) { + return; + } + } + if (!mysterySet) { + return typeof cb === "function" ? cb({ + code: 404, + message: "Mystery set not found, or set already owned" + }) : void 0; + } + _.each(mysterySet.items, function(i) { + var analyticsData; + user.items.gear.owned[i.key] = true; + analyticsData = { + uuid: user._id, + itemKey: i.key, + itemType: 'Subscriber Gear', + acquireMethod: 'Hourglass', + category: 'behavior' + }; + return analytics != null ? analytics.track('acquire item', analyticsData) : void 0; + }); + user.purchased.plan.consecutive.trinkets--; + return typeof cb === "function" ? cb({ + code: 200, + message: i18n.t('hourglassPurchaseSet', req.language) + }, _.pick(user, splitWhitespace('items purchased.plan.consecutive'))) : void 0; +}; diff --git a/common/script/ops/buyQuest.js b/common/script/ops/buyQuest.js new file mode 100644 index 0000000000..b7653d43ce --- /dev/null +++ b/common/script/ops/buyQuest.js @@ -0,0 +1,49 @@ +import i18n from '../i18n'; +import content from '../content/index'; + +module.exports = function(user, req, cb, analytics) { + var analyticsData, base, item, key, message, name; + key = req.params.key; + item = content.quests[key]; + if (!item) { + return typeof cb === "function" ? cb({ + code: 404, + message: "Quest '" + key + " not found (see https://github.com/HabitRPG/habitrpg/blob/develop/common/script/content/index.js)" + }) : void 0; + } + if (!(item.category === 'gold' && item.goldValue)) { + return typeof cb === "function" ? cb({ + code: 404, + message: "Quest '" + key + " is not a Gold-purchasable quest (see https://github.com/HabitRPG/habitrpg/blob/develop/common/script/content/index.js)" + }) : void 0; + } + if (user.stats.gp < item.goldValue) { + return typeof cb === "function" ? cb({ + code: 401, + message: i18n.t('messageNotEnoughGold', req.language) + }) : void 0; + } + message = i18n.t('messageBought', { + itemText: item.text(req.language) + }, req.language); + if ((base = user.items.quests)[name = item.key] == null) { + base[name] = 0; + } + user.items.quests[item.key] += 1; + user.stats.gp -= item.goldValue; + analyticsData = { + uuid: user._id, + itemKey: item.key, + itemType: 'Market', + goldCost: item.goldValue, + acquireMethod: 'Gold', + category: 'behavior' + }; + if (analytics != null) { + analytics.track('acquire item', analyticsData); + } + return typeof cb === "function" ? cb({ + code: 200, + message: message + }, user.items.quests) : void 0; +}; diff --git a/common/script/ops/buySpecialSpell.js b/common/script/ops/buySpecialSpell.js new file mode 100644 index 0000000000..e2a9dc8deb --- /dev/null +++ b/common/script/ops/buySpecialSpell.js @@ -0,0 +1,31 @@ +import i18n from '../i18n'; +import content from '../content/index'; +import _ from 'lodash'; +import splitWhitespace from '../libs/splitWhitespace'; + +module.exports = function(user, req, cb) { + var base, item, key, message; + key = req.params.key; + item = content.special[key]; + if (user.stats.gp < item.value) { + return typeof cb === "function" ? cb({ + code: 401, + message: i18n.t('messageNotEnoughGold', req.language) + }) : void 0; + } + user.stats.gp -= item.value; + if ((base = user.items.special)[key] == null) { + base[key] = 0; + } + user.items.special[key]++; + if (typeof user.markModified === "function") { + user.markModified('items.special'); + } + message = i18n.t('messageBought', { + itemText: item.text(req.language) + }, req.language); + return typeof cb === "function" ? cb({ + code: 200, + message: message + }, _.pick(user, splitWhitespace('items stats'))) : void 0; +}; diff --git a/common/script/ops/changeClass.js b/common/script/ops/changeClass.js new file mode 100644 index 0000000000..98fd8fd58d --- /dev/null +++ b/common/script/ops/changeClass.js @@ -0,0 +1,59 @@ +import i18n from '../i18n'; +import _ from 'lodash'; +import splitWhitespace from '../libs/splitWhitespace'; +import { capByLevel } from '../statHelpers'; + +module.exports = function(user, req, cb, analytics) { + var analyticsData, klass, ref; + klass = (ref = req.query) != null ? ref["class"] : void 0; + if (klass === 'warrior' || klass === 'rogue' || klass === 'wizard' || klass === 'healer') { + analyticsData = { + uuid: user._id, + "class": klass, + acquireMethod: 'Gems', + gemCost: 3, + category: 'behavior' + }; + if (analytics != null) { + analytics.track('change class', analyticsData); + } + user.stats["class"] = klass; + user.flags.classSelected = true; + _.each(["weapon", "armor", "shield", "head"], function(type) { + var foundKey; + foundKey = false; + _.findLast(user.items.gear.owned, function(v, k) { + if (~k.indexOf(type + "_" + klass) && v === true) { + return foundKey = k; + } + }); + user.items.gear.equipped[type] = foundKey ? foundKey : type === "weapon" ? "weapon_" + klass + "_0" : type === "shield" && klass === "rogue" ? "shield_rogue_0" : type + "_base_0"; + if (type === "weapon" || (type === "shield" && klass === "rogue")) { + user.items.gear.owned[type + "_" + klass + "_0"] = true; + } + return true; + }); + } else { + if (user.preferences.disableClasses) { + user.preferences.disableClasses = false; + user.preferences.autoAllocate = false; + } else { + if (!(user.balance >= .75)) { + return typeof cb === "function" ? cb({ + code: 401, + message: i18n.t('notEnoughGems', req.language) + }) : void 0; + } + user.balance -= .75; + } + _.merge(user.stats, { + str: 0, + con: 0, + per: 0, + int: 0, + points: capByLevel(user.stats.lvl) + }); + user.flags.classSelected = false; + } + return typeof cb === "function" ? cb(null, _.pick(user, splitWhitespace('stats flags items preferences'))) : void 0; +}; diff --git a/common/script/ops/clearCompleted.js b/common/script/ops/clearCompleted.js new file mode 100644 index 0000000000..d60f12704f --- /dev/null +++ b/common/script/ops/clearCompleted.js @@ -0,0 +1,12 @@ +import _ from 'lodash'; + +module.exports = function(user, req, cb) { + _.remove(user.todos, function(t) { + var ref; + return t.completed && !((ref = t.challenge) != null ? ref.id : void 0); + }); + if (typeof user.markModified === "function") { + user.markModified('todos'); + } + return typeof cb === "function" ? cb(null, user.todos) : void 0; +}; diff --git a/common/script/ops/clearPMs.js b/common/script/ops/clearPMs.js new file mode 100644 index 0000000000..47e0a6ebc6 --- /dev/null +++ b/common/script/ops/clearPMs.js @@ -0,0 +1,7 @@ +module.exports = function(user, req, cb) { + user.inbox.messages = {}; + if (typeof user.markModified === "function") { + user.markModified('inbox.messages'); + } + return typeof cb === "function" ? cb(null, user.inbox.messages) : void 0; +}; diff --git a/common/script/ops/deletePM.js b/common/script/ops/deletePM.js new file mode 100644 index 0000000000..ad95bc9ae0 --- /dev/null +++ b/common/script/ops/deletePM.js @@ -0,0 +1,7 @@ +module.exports = function(user, req, cb) { + delete user.inbox.messages[req.params.id]; + if (typeof user.markModified === "function") { + user.markModified('inbox.messages.' + req.params.id); + } + return typeof cb === "function" ? cb(null, user.inbox.messages) : void 0; +}; diff --git a/common/script/ops/deleteTag.js b/common/script/ops/deleteTag.js new file mode 100644 index 0000000000..a82af59e86 --- /dev/null +++ b/common/script/ops/deleteTag.js @@ -0,0 +1,26 @@ +import i18n from '../i18n'; +import _ from 'lodash'; + +module.exports = function(user, req, cb) { + var i, tag, tid; + tid = req.params.id; + i = _.findIndex(user.tags, { + id: tid + }); + if (!~i) { + return typeof cb === "function" ? cb({ + code: 404, + message: i18n.t('messageTagNotFound', req.language) + }) : void 0; + } + tag = user.tags[i]; + delete user.filters[tag.id]; + user.tags.splice(i, 1); + _.each(user.tasks, function(task) { + return delete task.tags[tag.id]; + }); + _.each(['habits', 'dailys', 'todos', 'rewards'], function(type) { + return typeof user.markModified === "function" ? user.markModified(type) : void 0; + }); + return typeof cb === "function" ? cb(null, user.tags) : void 0; +}; diff --git a/common/script/ops/deleteTask.js b/common/script/ops/deleteTask.js new file mode 100644 index 0000000000..715b102241 --- /dev/null +++ b/common/script/ops/deleteTask.js @@ -0,0 +1,17 @@ +import i18n from '../i18n'; + +module.exports = function(user, req, cb) { + var i, ref, task; + task = user.tasks[(ref = req.params) != null ? ref.id : void 0]; + if (!task) { + return typeof cb === "function" ? cb({ + code: 404, + message: i18n.t('messageTaskNotFound', req.language) + }) : void 0; + } + i = user[task.type + "s"].indexOf(task); + if (~i) { + user[task.type + "s"].splice(i, 1); + } + return typeof cb === "function" ? cb(null, {}) : void 0; +}; diff --git a/common/script/ops/deleteWebhook.js b/common/script/ops/deleteWebhook.js new file mode 100644 index 0000000000..a187f08770 --- /dev/null +++ b/common/script/ops/deleteWebhook.js @@ -0,0 +1,7 @@ +module.exports = function(user, req, cb) { + delete user.preferences.webhooks[req.params.id]; + if (typeof user.markModified === "function") { + user.markModified('preferences.webhooks'); + } + return typeof cb === "function" ? cb(null, user.preferences.webhooks) : void 0; +}; diff --git a/common/script/ops/disableClasses.js b/common/script/ops/disableClasses.js new file mode 100644 index 0000000000..89636ed52d --- /dev/null +++ b/common/script/ops/disableClasses.js @@ -0,0 +1,13 @@ +import splitWhitespace from '../libs/splitWhitespace'; +import { capByLevel } from '../statHelpers'; +import _ from 'lodash'; + +module.exports = function(user, req, cb) { + user.stats["class"] = 'warrior'; + user.flags.classSelected = true; + user.preferences.disableClasses = true; + user.preferences.autoAllocate = true; + user.stats.str = capByLevel(user.stats.lvl); + user.stats.points = 0; + return typeof cb === "function" ? cb(null, _.pick(user, splitWhitespace('stats flags preferences'))) : void 0; +}; diff --git a/common/script/ops/equip.js b/common/script/ops/equip.js new file mode 100644 index 0000000000..8c07a364b1 --- /dev/null +++ b/common/script/ops/equip.js @@ -0,0 +1,52 @@ +import content from '../content/index'; +import i18n from '../i18n'; + +module.exports = function(user, req, cb) { + var item, key, message, ref, type; + ref = [req.params.type || 'equipped', req.params.key], type = ref[0], key = ref[1]; + switch (type) { + case 'mount': + if (!user.items.mounts[key]) { + return typeof cb === "function" ? cb({ + code: 404, + message: ":You do not own this mount." + }) : void 0; + } + user.items.currentMount = user.items.currentMount === key ? '' : key; + break; + case 'pet': + if (!user.items.pets[key]) { + return typeof cb === "function" ? cb({ + code: 404, + message: ":You do not own this pet." + }) : void 0; + } + user.items.currentPet = user.items.currentPet === key ? '' : key; + break; + case 'costume': + case 'equipped': + item = content.gear.flat[key]; + if (!user.items.gear.owned[key]) { + return typeof cb === "function" ? cb({ + code: 404, + message: ":You do not own this gear." + }) : void 0; + } + if (user.items.gear[type][item.type] === key) { + user.items.gear[type][item.type] = item.type + "_base_0"; + message = i18n.t('messageUnEquipped', { + itemText: item.text(req.language) + }, req.language); + } else { + user.items.gear[type][item.type] = item.key; + message = user.fns.handleTwoHanded(item, type, req); + } + if (typeof user.markModified === "function") { + user.markModified("items.gear." + type); + } + } + return typeof cb === "function" ? cb((message ? { + code: 200, + message: message + } : null), user.items) : void 0; +}; diff --git a/common/script/ops/feed.js b/common/script/ops/feed.js new file mode 100644 index 0000000000..3c9b0f87fd --- /dev/null +++ b/common/script/ops/feed.js @@ -0,0 +1,78 @@ +import content from '../content/index'; +import i18n from '../i18n'; + +module.exports = function(user, req, cb) { + var egg, eggText, evolve, food, message, pet, petDisplayName, potion, potionText, ref, ref1, ref2, userPets; + ref = req.params, pet = ref.pet, food = ref.food; + food = content.food[food]; + ref1 = pet.split('-'), egg = ref1[0], potion = ref1[1]; + userPets = user.items.pets; + potionText = content.hatchingPotions[potion] ? content.hatchingPotions[potion].text() : potion; + eggText = content.eggs[egg] ? content.eggs[egg].text() : egg; + petDisplayName = i18n.t('petName', { + potion: potionText, + egg: eggText + }); + if (!userPets[pet]) { + return typeof cb === "function" ? cb({ + code: 404, + message: i18n.t('messagePetNotFound', req.language) + }) : void 0; + } + if (!((ref2 = user.items.food) != null ? ref2[food.key] : void 0)) { + return typeof cb === "function" ? cb({ + code: 404, + message: i18n.t('messageFoodNotFound', req.language) + }) : void 0; + } + if (content.specialPets[pet]) { + return typeof cb === "function" ? cb({ + code: 401, + message: i18n.t('messageCannotFeedPet', req.language) + }) : void 0; + } + if (user.items.mounts[pet]) { + return typeof cb === "function" ? cb({ + code: 401, + message: i18n.t('messageAlreadyMount', req.language) + }) : void 0; + } + message = ''; + evolve = function() { + userPets[pet] = -1; + user.items.mounts[pet] = true; + if (pet === user.items.currentPet) { + user.items.currentPet = ""; + } + return message = i18n.t('messageEvolve', { + egg: petDisplayName + }, req.language); + }; + if (food.key === 'Saddle') { + evolve(); + } else { + if (food.target === potion || content.hatchingPotions[potion].premium) { + userPets[pet] += 5; + message = i18n.t('messageLikesFood', { + egg: petDisplayName, + foodText: food.text(req.language) + }, req.language); + } else { + userPets[pet] += 2; + message = i18n.t('messageDontEnjoyFood', { + egg: petDisplayName, + foodText: food.text(req.language) + }, req.language); + } + if (userPets[pet] >= 50 && !user.items.mounts[pet]) { + evolve(); + } + } + user.items.food[food.key]--; + return typeof cb === "function" ? cb({ + code: 200, + message: message + }, { + value: userPets[pet] + }) : void 0; +}; diff --git a/common/script/ops/getTag.js b/common/script/ops/getTag.js new file mode 100644 index 0000000000..06f3f24110 --- /dev/null +++ b/common/script/ops/getTag.js @@ -0,0 +1,17 @@ +import _ from 'lodash'; +import i18n from '../i18n'; + +module.exports = function(user, req, cb) { + var i, tid; + tid = req.params.id; + i = _.findIndex(user.tags, { + id: tid + }); + if (!~i) { + return typeof cb === "function" ? cb({ + code: 404, + message: i18n.t('messageTagNotFound', req.language) + }) : void 0; + } + return typeof cb === "function" ? cb(null, user.tags[i]) : void 0; +}; diff --git a/common/script/ops/getTags.js b/common/script/ops/getTags.js new file mode 100644 index 0000000000..af9419b050 --- /dev/null +++ b/common/script/ops/getTags.js @@ -0,0 +1,3 @@ +module.exports = function(user, req, cb) { + return typeof cb === "function" ? cb(null, user.tags) : void 0; +}; diff --git a/common/script/ops/hatch.js b/common/script/ops/hatch.js new file mode 100644 index 0000000000..6292e24bcb --- /dev/null +++ b/common/script/ops/hatch.js @@ -0,0 +1,39 @@ +import content from '../content/index'; +import i18n from '../i18n'; + +module.exports = function(user, req, cb) { + var egg, hatchingPotion, pet, ref; + ref = req.params, egg = ref.egg, hatchingPotion = ref.hatchingPotion; + if (!(egg && hatchingPotion)) { + return typeof cb === "function" ? cb({ + code: 400, + message: "Please specify query.egg & query.hatchingPotion" + }) : void 0; + } + if (!(user.items.eggs[egg] > 0 && user.items.hatchingPotions[hatchingPotion] > 0)) { + return typeof cb === "function" ? cb({ + code: 403, + message: i18n.t('messageMissingEggPotion', req.language) + }) : void 0; + } + if (content.hatchingPotions[hatchingPotion].premium && !content.dropEggs[egg]) { + return typeof cb === "function" ? cb({ + code: 403, + message: i18n.t('messageInvalidEggPotionCombo', req.language) + }) : void 0; + } + pet = egg + "-" + hatchingPotion; + if (user.items.pets[pet] && user.items.pets[pet] > 0) { + return typeof cb === "function" ? cb({ + code: 403, + message: i18n.t('messageAlreadyPet', req.language) + }) : void 0; + } + user.items.pets[pet] = 5; + user.items.eggs[egg]--; + user.items.hatchingPotions[hatchingPotion]--; + return typeof cb === "function" ? cb({ + code: 200, + message: i18n.t('messageHatched', req.language) + }, user.items) : void 0; +}; diff --git a/common/script/ops/hourglassPurchase.js b/common/script/ops/hourglassPurchase.js new file mode 100644 index 0000000000..4955898f0b --- /dev/null +++ b/common/script/ops/hourglassPurchase.js @@ -0,0 +1,54 @@ +import content from '../content/index'; +import i18n from '../i18n'; +import _ from 'lodash'; +import splitWhitespace from '../libs/splitWhitespace'; + +module.exports = function(user, req, cb, analytics) { + var analyticsData, key, ref, type; + ref = req.params, type = ref.type, key = ref.key; + if (!content.timeTravelStable[type]) { + return typeof cb === "function" ? cb({ + code: 403, + message: i18n.t('typeNotAllowedHourglass', req.language) + JSON.stringify(_.keys(content.timeTravelStable)) + }) : void 0; + } + if (!_.contains(_.keys(content.timeTravelStable[type]), key)) { + return typeof cb === "function" ? cb({ + code: 403, + message: i18n.t(type + 'NotAllowedHourglass', req.language) + }) : void 0; + } + if (user.items[type][key]) { + return typeof cb === "function" ? cb({ + code: 403, + message: i18n.t(type + 'AlreadyOwned', req.language) + }) : void 0; + } + if (!(user.purchased.plan.consecutive.trinkets > 0)) { + return typeof cb === "function" ? cb({ + code: 403, + message: i18n.t('notEnoughHourglasses', req.language) + }) : void 0; + } + user.purchased.plan.consecutive.trinkets--; + if (type === 'pets') { + user.items.pets[key] = 5; + } + if (type === 'mounts') { + user.items.mounts[key] = true; + } + analyticsData = { + uuid: user._id, + itemKey: key, + itemType: type, + acquireMethod: 'Hourglass', + category: 'behavior' + }; + if (analytics != null) { + analytics.track('acquire item', analyticsData); + } + return typeof cb === "function" ? cb({ + code: 200, + message: i18n.t('hourglassPurchase', req.language) + }, _.pick(user, splitWhitespace('items purchased.plan.consecutive'))) : void 0; +}; diff --git a/common/script/ops/index.js b/common/script/ops/index.js new file mode 100644 index 0000000000..1bfd3d55f2 --- /dev/null +++ b/common/script/ops/index.js @@ -0,0 +1,93 @@ +import update from './update'; +import sleep from './sleep'; +import revive from './revive'; +import reset from './reset'; +import reroll from './reroll'; +import rebirth from './rebirth'; +import allocateNow from './allocateNow'; +import clearCompleted from './clearCompleted'; +import sortTask from './sortTask'; +import updateTask from './updateTask'; +import deleteTask from './deleteTask'; +import addTask from './addTask'; +import addTag from './addTag'; +import sortTag from './sortTag'; +import getTags from './getTags'; +import getTag from './getTag'; +import updateTag from './updateTag'; +import deleteTag from './deleteTag'; +import addWebhook from './addWebhook'; +import updateWebhook from './updateWebhook'; +import deleteWebhook from './deleteWebhook'; +import addPushDevice from './addPushDevice'; +import clearPMs from './clearPMs'; +import deletePM from './deletePM'; +import blockUser from './blockUser'; +import feed from './feed'; +import buySpecialSpell from './buySpecialSpell'; +import purchase from './purchase'; +import releasePets from './releasePets'; +import releaseMounts from './releaseMounts'; +import releaseBoth from './releaseBoth'; +import buy from './buy'; +import buyQuest from './buyQuest'; +import buyMysterySet from './buyMysterySet'; +import hourglassPurchase from './hourglassPurchase'; +import sell from './sell'; +import equip from './equip'; +import hatch from './hatch'; +import unlock from './unlock'; +import changeClass from './changeClass'; +import disableClasses from './disableClasses'; +import allocate from './allocate'; +import readCard from './readCard'; +import openMysteryItem from './openMysteryItem'; +import score from './score'; + +module.exports = { + update, + sleep, + revive, + reset, + reroll, + rebirth, + allocateNow, + clearCompleted, + sortTask, + updateTask, + deleteTask, + addTask, + addTag, + sortTag, + getTags, + getTag, + updateTag, + deleteTag, + addWebhook, + updateWebhook, + deleteWebhook, + addPushDevice, + clearPMs, + deletePM, + blockUser, + feed, + buySpecialSpell, + purchase, + releasePets, + releaseMounts, + releaseBoth, + buy, + buyQuest, + buyMysterySet, + hourglassPurchase, + sell, + equip, + hatch, + unlock, + changeClass, + disableClasses, + allocate, + readCard, + openMysteryItem, + score, +}; diff --git a/common/script/ops/openMysteryItem.js b/common/script/ops/openMysteryItem.js new file mode 100644 index 0000000000..eb28c605e0 --- /dev/null +++ b/common/script/ops/openMysteryItem.js @@ -0,0 +1,32 @@ +import content from '../content/index'; + +module.exports = function(user, req, cb, analytics) { + var analyticsData, item, ref, ref1; + item = (ref = user.purchased.plan) != null ? (ref1 = ref.mysteryItems) != null ? ref1.shift() : void 0 : void 0; + if (!item) { + return typeof cb === "function" ? cb({ + code: 400, + message: "Empty" + }) : void 0; + } + item = content.gear.flat[item]; + user.items.gear.owned[item.key] = true; + if (typeof user.markModified === "function") { + user.markModified('purchased.plan.mysteryItems'); + } + item.notificationType = 'Mystery'; + analyticsData = { + uuid: user._id, + itemKey: item, + itemType: 'Subscriber Gear', + acquireMethod: 'Subscriber', + category: 'behavior' + }; + if (analytics != null) { + analytics.track('open mystery item', analyticsData); + } + if (typeof window !== 'undefined') { + (user._tmp != null ? user._tmp : user._tmp = {}).drop = item; + } + return typeof cb === "function" ? cb(null, user.items.gear.owned) : void 0; +}; diff --git a/common/script/ops/purchase.js b/common/script/ops/purchase.js new file mode 100644 index 0000000000..d4d0f78816 --- /dev/null +++ b/common/script/ops/purchase.js @@ -0,0 +1,107 @@ +import content from '../content/index'; +import i18n from '../i18n'; +import _ from 'lodash'; +import splitWhitespace from '../libs/splitWhitespace'; +import planGemLimits from '../libs/planGemLimits'; + +module.exports = function(user, req, cb, analytics) { + var analyticsData, convCap, convRate, item, key, price, ref, ref1, ref2, ref3, type; + ref = req.params, type = ref.type, key = ref.key; + if (type === 'gems' && key === 'gem') { + ref1 = planGemLimits, convRate = ref1.convRate, convCap = ref1.convCap; + convCap += user.purchased.plan.consecutive.gemCapExtra; + if (!((ref2 = user.purchased) != null ? (ref3 = ref2.plan) != null ? ref3.customerId : void 0 : void 0)) { + return typeof cb === "function" ? cb({ + code: 401, + message: "Must subscribe to purchase gems with GP" + }, req) : void 0; + } + if (!(user.stats.gp >= convRate)) { + return typeof cb === "function" ? cb({ + code: 401, + message: "Not enough Gold" + }) : void 0; + } + if (user.purchased.plan.gemsBought >= convCap) { + return typeof cb === "function" ? cb({ + code: 401, + message: "You've reached the Gold=>Gem conversion cap (" + convCap + ") for this month. We have this to prevent abuse / farming. The cap will reset within the first three days of next month." + }) : void 0; + } + user.balance += .25; + user.purchased.plan.gemsBought++; + user.stats.gp -= convRate; + analyticsData = { + uuid: user._id, + itemKey: key, + acquireMethod: 'Gold', + goldCost: convRate, + category: 'behavior' + }; + if (analytics != null) { + analytics.track('purchase gems', analyticsData); + } + return typeof cb === "function" ? cb({ + code: 200, + message: "+1 Gem" + }, _.pick(user, splitWhitespace('stats balance'))) : void 0; + } + if (type !== 'eggs' && type !== 'hatchingPotions' && type !== 'food' && type !== 'quests' && type !== 'gear') { + return typeof cb === "function" ? cb({ + code: 404, + message: ":type must be in [eggs,hatchingPotions,food,quests,gear]" + }, req) : void 0; + } + if (type === 'gear') { + item = content.gear.flat[key]; + if (user.items.gear.owned[key]) { + return typeof cb === "function" ? cb({ + code: 401, + message: i18n.t('alreadyHave', req.language) + }) : void 0; + } + price = (item.twoHanded || item.gearSet === 'animal' ? 2 : 1) / 4; + } else { + item = content[type][key]; + price = item.value / 4; + } + if (!item) { + return typeof cb === "function" ? cb({ + code: 404, + message: ":key not found for Content." + type + }, req) : void 0; + } + if (!item.canBuy(user)) { + return typeof cb === "function" ? cb({ + code: 403, + message: i18n.t('messageNotAvailable', req.language) + }) : void 0; + } + if ((user.balance < price) || !user.balance) { + return typeof cb === "function" ? cb({ + code: 403, + message: i18n.t('notEnoughGems', req.language) + }) : void 0; + } + user.balance -= price; + if (type === 'gear') { + user.items.gear.owned[key] = true; + } else { + if (!(user.items[type][key] > 0)) { + user.items[type][key] = 0; + } + user.items[type][key]++; + } + analyticsData = { + uuid: user._id, + itemKey: key, + itemType: 'Market', + acquireMethod: 'Gems', + gemCost: item.value, + category: 'behavior' + }; + if (analytics != null) { + analytics.track('acquire item', analyticsData); + } + return typeof cb === "function" ? cb(null, _.pick(user, splitWhitespace('items balance'))) : void 0; +}; diff --git a/common/script/ops/readCard.js b/common/script/ops/readCard.js new file mode 100644 index 0000000000..a6eb5c05f1 --- /dev/null +++ b/common/script/ops/readCard.js @@ -0,0 +1,10 @@ +module.exports = function(user, req, cb) { + var cardType; + cardType = req.params.cardType; + user.items.special[cardType + "Received"].shift(); + if (typeof user.markModified === "function") { + user.markModified("items.special." + cardType + "Received"); + } + user.flags.cardReceived = false; + return typeof cb === "function" ? cb(null, 'items.special flags.cardReceived') : void 0; +}; diff --git a/common/script/ops/rebirth.js b/common/script/ops/rebirth.js new file mode 100644 index 0000000000..1ddb75aba1 --- /dev/null +++ b/common/script/ops/rebirth.js @@ -0,0 +1,100 @@ +import content from '../content/index'; +import i18n from '../i18n'; +import _ from 'lodash'; +import { capByLevel } from '../statHelpers'; +import { MAX_LEVEL } from '../constants'; + +module.exports = function(user, req, cb, analytics) { + var analyticsData, flags, gear, lvl, stats; + if (user.balance < 2 && user.stats.lvl < MAX_LEVEL) { + return typeof cb === "function" ? cb({ + code: 401, + message: i18n.t('notEnoughGems', req.language) + }) : void 0; + } + analyticsData = { + uuid: user._id, + category: 'behavior' + }; + if (user.stats.lvl < MAX_LEVEL) { + user.balance -= 2; + analyticsData.acquireMethod = 'Gems'; + analyticsData.gemCost = 8; + } else { + analyticsData.gemCost = 0; + analyticsData.acquireMethod = '> 100'; + } + if (analytics != null) { + analytics.track('Rebirth', analyticsData); + } + lvl = capByLevel(user.stats.lvl); + _.each(user.tasks, function(task) { + if (task.type !== 'reward') { + task.value = 0; + } + if (task.type === 'daily') { + return task.streak = 0; + } + }); + stats = user.stats; + stats.buffs = {}; + stats.hp = 50; + stats.lvl = 1; + stats["class"] = 'warrior'; + _.each(['per', 'int', 'con', 'str', 'points', 'gp', 'exp', 'mp'], function(value) { + return stats[value] = 0; + }); + // TODO during refactoring: move all gear code from rebirth() to its own function and then call it in reset() as well + gear = user.items.gear; + _.each(['equipped', 'costume'], function(type) { + gear[type] = {}; + gear[type].armor = 'armor_base_0'; + gear[type].weapon = 'weapon_warrior_0'; + gear[type].head = 'head_base_0'; + return gear[type].shield = 'shield_base_0'; + }); + if (user.items.currentPet) { + user.ops.equip({ + params: { + type: 'pet', + key: user.items.currentPet + } + }); + } + if (user.items.currentMount) { + user.ops.equip({ + params: { + type: 'mount', + key: user.items.currentMount + } + }); + } + _.each(gear.owned, function(v, k) { + if (gear.owned[k] && content.gear.flat[k].value) { + gear.owned[k] = false; + return true; + } + }); + gear.owned.weapon_warrior_0 = true; + if (typeof user.markModified === "function") { + user.markModified('items.gear.owned'); + } + user.preferences.costume = false; + flags = user.flags; + if (!user.achievements.beastMaster) { + flags.rebirthEnabled = false; + } + flags.itemsEnabled = false; + flags.dropsEnabled = false; + flags.classSelected = false; + flags.levelDrops = {}; + if (!user.achievements.rebirths) { + user.achievements.rebirths = 1; + user.achievements.rebirthLevel = lvl; + } else if (lvl > user.achievements.rebirthLevel || lvl === 100) { + user.achievements.rebirths++; + user.achievements.rebirthLevel = lvl; + } + user.stats.buffs = {}; + return typeof cb === "function" ? cb(null, user) : void 0; +}; diff --git a/common/script/ops/releaseBoth.js b/common/script/ops/releaseBoth.js new file mode 100644 index 0000000000..a782581f85 --- /dev/null +++ b/common/script/ops/releaseBoth.js @@ -0,0 +1,50 @@ +import content from '../content/index'; +import i18n from '../i18n'; + +module.exports = function(user, req, cb, analytics) { + var analyticsData, animal, giveTriadBingo; + if (user.balance < 1.5 && !user.achievements.triadBingo) { + return typeof cb === "function" ? cb({ + code: 401, + message: i18n.t('notEnoughGems', req.language) + }) : void 0; + } else { + giveTriadBingo = true; + if (!user.achievements.triadBingo) { + analyticsData = { + uuid: user._id, + acquireMethod: 'Gems', + gemCost: 6, + category: 'behavior' + }; + if (typeof analytics !== "undefined" && analytics !== null) { + analytics.track('release pets & mounts', analyticsData); + } + user.balance -= 1.5; + } + user.items.currentMount = ""; + user.items.currentPet = ""; + for (animal in content.pets) { + if (user.items.pets[animal] === -1) { + giveTriadBingo = false; + } + user.items.pets[animal] = 0; + user.items.mounts[animal] = null; + } + if (!user.achievements.beastMasterCount) { + user.achievements.beastMasterCount = 0; + } + user.achievements.beastMasterCount++; + if (!user.achievements.mountMasterCount) { + user.achievements.mountMasterCount = 0; + } + user.achievements.mountMasterCount++; + if (giveTriadBingo) { + if (!user.achievements.triadBingoCount) { + user.achievements.triadBingoCount = 0; + } + user.achievements.triadBingoCount++; + } + } + return typeof cb === "function" ? cb(null, user) : void 0; +}; diff --git a/common/script/ops/releaseMounts.js b/common/script/ops/releaseMounts.js new file mode 100644 index 0000000000..4aefab6b40 --- /dev/null +++ b/common/script/ops/releaseMounts.js @@ -0,0 +1,32 @@ +import content from '../content/index'; +import i18n from '../i18n'; + +module.exports = function(user, req, cb, analytics) { + var analyticsData, mount; + if (user.balance < 1) { + return typeof cb === "function" ? cb({ + code: 401, + message: i18n.t('notEnoughGems', req.language) + }) : void 0; + } else { + user.balance -= 1; + user.items.currentMount = ""; + for (mount in content.pets) { + user.items.mounts[mount] = null; + } + if (!user.achievements.mountMasterCount) { + user.achievements.mountMasterCount = 0; + } + user.achievements.mountMasterCount++; + } + analyticsData = { + uuid: user._id, + acquireMethod: 'Gems', + gemCost: 4, + category: 'behavior' + }; + if (analytics != null) { + analytics.track('release mounts', analyticsData); + } + return typeof cb === "function" ? cb(null, user) : void 0; +}; diff --git a/common/script/ops/releasePets.js b/common/script/ops/releasePets.js new file mode 100644 index 0000000000..a4b452cd86 --- /dev/null +++ b/common/script/ops/releasePets.js @@ -0,0 +1,32 @@ +import content from '../content/index'; +import i18n from '../i18n'; + +module.exports = function(user, req, cb, analytics) { + var analyticsData, pet; + if (user.balance < 1) { + return typeof cb === "function" ? cb({ + code: 401, + message: i18n.t('notEnoughGems', req.language) + }) : void 0; + } else { + user.balance -= 1; + for (pet in content.pets) { + user.items.pets[pet] = 0; + } + if (!user.achievements.beastMasterCount) { + user.achievements.beastMasterCount = 0; + } + user.achievements.beastMasterCount++; + user.items.currentPet = ""; + } + analyticsData = { + uuid: user._id, + acquireMethod: 'Gems', + gemCost: 4, + category: 'behavior' + }; + if (analytics != null) { + analytics.track('release pets', analyticsData); + } + return typeof cb === "function" ? cb(null, user) : void 0; +}; diff --git a/common/script/ops/reroll.js b/common/script/ops/reroll.js new file mode 100644 index 0000000000..f6a0862f1d --- /dev/null +++ b/common/script/ops/reroll.js @@ -0,0 +1,29 @@ +import i18n from '../i18n'; +import _ from 'lodash'; + +module.exports = function(user, req, cb, analytics) { + var analyticsData; + if (user.balance < 1) { + return typeof cb === "function" ? cb({ + code: 401, + message: i18n.t('notEnoughGems', req.language) + }) : void 0; + } + user.balance--; + _.each(user.tasks, function(task) { + if (task.type !== 'reward') { + return task.value = 0; + } + }); + user.stats.hp = 50; + analyticsData = { + uuid: user._id, + acquireMethod: 'Gems', + gemCost: 4, + category: 'behavior' + }; + if (analytics != null) { + analytics.track('Fortify Potion', analyticsData); + } + return typeof cb === "function" ? cb(null, user) : void 0; +}; diff --git a/common/script/ops/reset.js b/common/script/ops/reset.js new file mode 100644 index 0000000000..fbe87729e3 --- /dev/null +++ b/common/script/ops/reset.js @@ -0,0 +1,35 @@ +import _ from 'lodash'; + +module.exports = function(user, req, cb) { + var gear; + user.habits = []; + user.dailys = []; + user.todos = []; + user.rewards = []; + user.stats.hp = 50; + user.stats.lvl = 1; + user.stats.gp = 0; + user.stats.exp = 0; + gear = user.items.gear; + _.each(['equipped', 'costume'], function(type) { + gear[type].armor = 'armor_base_0'; + gear[type].weapon = 'weapon_base_0'; + gear[type].head = 'head_base_0'; + return gear[type].shield = 'shield_base_0'; + }); + if (typeof gear.owned === 'undefined') { + gear.owned = {}; + } + _.each(gear.owned, function(v, k) { + if (gear.owned[k]) { + gear.owned[k] = false; + } + return true; + }); + gear.owned.weapon_warrior_0 = true; + if (typeof user.markModified === "function") { + user.markModified('items.gear.owned'); + } + user.preferences.costume = false; + return typeof cb === "function" ? cb(null, user) : void 0; +}; diff --git a/common/script/ops/revive.js b/common/script/ops/revive.js new file mode 100644 index 0000000000..7b6fe8445f --- /dev/null +++ b/common/script/ops/revive.js @@ -0,0 +1,72 @@ +import content from '../content/index'; +import i18n from '../i18n'; +import _ from 'lodash'; + +module.exports = function(user, req, cb, analytics) { + var analyticsData, base, cl, gearOwned, item, losableItems, lostItem, lostStat; + if (!(user.stats.hp <= 0)) { + return typeof cb === "function" ? cb({ + code: 400, + message: "Cannot revive if not dead" + }) : void 0; + } + _.merge(user.stats, { + hp: 50, + exp: 0, + gp: 0 + }); + if (user.stats.lvl > 1) { + user.stats.lvl--; + } + lostStat = user.fns.randomVal(_.reduce(['str', 'con', 'per', 'int'], (function(m, k) { + if (user.stats[k]) { + m[k] = k; + } + return m; + }), {})); + if (lostStat) { + user.stats[lostStat]--; + } + cl = user.stats["class"]; + gearOwned = (typeof (base = user.items.gear.owned).toObject === "function" ? base.toObject() : void 0) || user.items.gear.owned; + losableItems = {}; + _.each(gearOwned, function(v, k) { + var itm; + if (v) { + itm = content.gear.flat['' + k]; + if (itm) { + if ((itm.value > 0 || k === 'weapon_warrior_0') && (itm.klass === cl || (itm.klass === 'special' && (!itm.specialClass || itm.specialClass === cl)) || itm.klass === 'armoire')) { + return losableItems['' + k] = '' + k; + } + } + } + }); + lostItem = user.fns.randomVal(losableItems); + if (item = content.gear.flat[lostItem]) { + user.items.gear.owned[lostItem] = false; + if (user.items.gear.equipped[item.type] === lostItem) { + user.items.gear.equipped[item.type] = item.type + "_base_0"; + } + if (user.items.gear.costume[item.type] === lostItem) { + user.items.gear.costume[item.type] = item.type + "_base_0"; + } + } + if (typeof user.markModified === "function") { + user.markModified('items.gear'); + } + analyticsData = { + uuid: user._id, + lostItem: lostItem, + gaLabel: lostItem, + category: 'behavior' + }; + if (analytics != null) { + analytics.track('Death', analyticsData); + } + return typeof cb === "function" ? cb((item ? { + code: 200, + message: i18n.t('messageLostItem', { + itemText: item.text(req.language) + }, req.language) + } : null), user) : void 0; +}; diff --git a/common/script/ops/score.js b/common/script/ops/score.js new file mode 100644 index 0000000000..ec0d2a70e2 --- /dev/null +++ b/common/script/ops/score.js @@ -0,0 +1,221 @@ +import moment from 'moment'; +import _ from 'lodash'; +import i18n from '../i18n'; + +module.exports = function(user, req, cb) { + var addPoints, calculateDelta, calculateReverseDelta, changeTaskValue, delta, direction, gainMP, id, multiplier, num, options, ref, stats, subtractPoints, task, th; + ref = req.params, id = ref.id, direction = ref.direction; + task = user.tasks[id]; + options = req.query || {}; + _.defaults(options, { + times: 1, + cron: false + }); + user._tmp = {}; + stats = { + gp: +user.stats.gp, + hp: +user.stats.hp, + exp: +user.stats.exp + }; + task.value = +task.value; + task.streak = ~~task.streak; + if (task.priority == null) { + task.priority = 1; + } + if (task.value > stats.gp && task.type === 'reward') { + return typeof cb === "function" ? cb({ + code: 401, + message: i18n.t('messageNotEnoughGold', req.language) + }) : void 0; + } + delta = 0; + calculateDelta = function() { + var currVal, nextDelta, ref1; + currVal = task.value < -47.27 ? -47.27 : task.value > 21.27 ? 21.27 : task.value; + nextDelta = Math.pow(0.9747, currVal) * (direction === 'down' ? -1 : 1); + if (((ref1 = task.checklist) != null ? ref1.length : void 0) > 0) { + if (direction === 'down' && task.type === 'daily' && options.cron) { + nextDelta *= 1 - _.reduce(task.checklist, (function(m, i) { + return m + (i.completed ? 1 : 0); + }), 0) / task.checklist.length; + } + if (task.type === 'todo') { + nextDelta *= 1 + _.reduce(task.checklist, (function(m, i) { + return m + (i.completed ? 1 : 0); + }), 0); + } + } + return nextDelta; + }; + calculateReverseDelta = function() { + var calc, closeEnough, currVal, diff, nextDelta, ref1, testVal; + currVal = task.value < -47.27 ? -47.27 : task.value > 21.27 ? 21.27 : task.value; + testVal = currVal + Math.pow(0.9747, currVal) * (direction === 'down' ? -1 : 1); + closeEnough = 0.00001; + while (true) { + calc = testVal + Math.pow(0.9747, testVal); + diff = currVal - calc; + if (Math.abs(diff) < closeEnough) { + break; + } + if (diff > 0) { + testVal -= diff; + } else { + testVal += diff; + } + } + nextDelta = testVal - currVal; + if (((ref1 = task.checklist) != null ? ref1.length : void 0) > 0) { + if (task.type === 'todo') { + nextDelta *= 1 + _.reduce(task.checklist, (function(m, i) { + return m + (i.completed ? 1 : 0); + }), 0); + } + } + return nextDelta; + }; + changeTaskValue = function() { + return _.times(options.times, function() { + var nextDelta, ref1; + nextDelta = !options.cron && direction === 'down' ? calculateReverseDelta() : calculateDelta(); + if (task.type !== 'reward') { + if (user.preferences.automaticAllocation === true && user.preferences.allocationMode === 'taskbased' && !(task.type === 'todo' && direction === 'down')) { + user.stats.training[task.attribute] += nextDelta; + } + if (direction === 'up') { + user.party.quest.progress.up = user.party.quest.progress.up || 0; + if ((ref1 = task.type) === 'daily' || ref1 === 'todo') { + user.party.quest.progress.up += nextDelta * (1 + (user._statsComputed.str / 200)); + } + if (task.type === 'habit') { + user.party.quest.progress.up += nextDelta * (0.5 + (user._statsComputed.str / 400)); + } + } + task.value += nextDelta; + } + return delta += nextDelta; + }); + }; + addPoints = function() { + var _crit, afterStreak, currStreak, gpMod, intBonus, perBonus, streakBonus; + _crit = (delta > 0 ? user.fns.crit() : 1); + if (_crit > 1) { + user._tmp.crit = _crit; + } + intBonus = 1 + (user._statsComputed.int * .025); + stats.exp += Math.round(delta * intBonus * task.priority * _crit * 6); + perBonus = 1 + user._statsComputed.per * .02; + gpMod = delta * task.priority * _crit * perBonus; + return stats.gp += task.streak ? (currStreak = direction === 'down' ? task.streak - 1 : task.streak, streakBonus = currStreak / 100 + 1, afterStreak = gpMod * streakBonus, currStreak > 0 ? gpMod > 0 ? user._tmp.streakBonus = afterStreak - gpMod : void 0 : void 0, afterStreak) : gpMod; + }; + subtractPoints = function() { + var conBonus, hpMod; + conBonus = 1 - (user._statsComputed.con / 250); + if (conBonus < .1) { + conBonus = 0.1; + } + hpMod = delta * conBonus * task.priority * 2; + return stats.hp += Math.round(hpMod * 10) / 10; + }; + gainMP = function(delta) { + delta *= user._tmp.crit || 1; + user.stats.mp += delta; + if (user.stats.mp >= user._statsComputed.maxMP) { + user.stats.mp = user._statsComputed.maxMP; + } + if (user.stats.mp < 0) { + return user.stats.mp = 0; + } + }; + switch (task.type) { + case 'habit': + changeTaskValue(); + if (delta > 0) { + addPoints(); + } else { + subtractPoints(); + } + gainMP(_.max([0.25, .0025 * user._statsComputed.maxMP]) * (direction === 'down' ? -1 : 1)); + th = (task.history != null ? task.history : task.history = []); + if (th[th.length - 1] && moment(th[th.length - 1].date).isSame(new Date, 'day')) { + th[th.length - 1].value = task.value; + } else { + th.push({ + date: +(new Date), + value: task.value + }); + } + if (typeof user.markModified === "function") { + user.markModified("habits." + (_.findIndex(user.habits, { + id: task.id + })) + ".history"); + } + break; + case 'daily': + if (options.cron) { + changeTaskValue(); + subtractPoints(); + if (!user.stats.buffs.streaks) { + task.streak = 0; + } + } else { + changeTaskValue(); + if (direction === 'down') { + delta = calculateDelta(); + } + addPoints(); + gainMP(_.max([1, .01 * user._statsComputed.maxMP]) * (direction === 'down' ? -1 : 1)); + if (direction === 'up') { + task.streak = task.streak ? task.streak + 1 : 1; + if ((task.streak % 21) === 0) { + user.achievements.streak = user.achievements.streak ? user.achievements.streak + 1 : 1; + } + } else { + if ((task.streak % 21) === 0) { + user.achievements.streak = user.achievements.streak ? user.achievements.streak - 1 : 0; + } + task.streak = task.streak ? task.streak - 1 : 0; + } + } + break; + case 'todo': + if (options.cron) { + changeTaskValue(); + } else { + task.dateCompleted = direction === 'up' ? new Date : void 0; + changeTaskValue(); + if (direction === 'down') { + delta = calculateDelta(); + } + addPoints(); + multiplier = _.max([ + _.reduce(task.checklist, (function(m, i) { + return m + (i.completed ? 1 : 0); + }), 1), 1 + ]); + gainMP(_.max([multiplier, .01 * user._statsComputed.maxMP * multiplier]) * (direction === 'down' ? -1 : 1)); + } + break; + case 'reward': + changeTaskValue(); + stats.gp -= Math.abs(task.value); + num = parseFloat(task.value).toFixed(2); + if (stats.gp < 0) { + stats.hp += stats.gp; + stats.gp = 0; + } + } + user.fns.updateStats(stats, req); + if (typeof window === 'undefined') { + if (direction === 'up') { + user.fns.randomDrop({ + task: task, + delta: delta + }, req); + } + } + if (typeof cb === "function") { + cb(null, user); + } + return delta; +}; diff --git a/common/script/ops/sell.js b/common/script/ops/sell.js new file mode 100644 index 0000000000..33e5f7d673 --- /dev/null +++ b/common/script/ops/sell.js @@ -0,0 +1,23 @@ +import content from '../content/index'; +import _ from 'lodash'; +import splitWhitespace from '../libs/splitWhitespace'; + +module.exports = function(user, req, cb) { + var key, ref, type; + ref = req.params, key = ref.key, type = ref.type; + if (type !== 'eggs' && type !== 'hatchingPotions' && type !== 'food') { + return typeof cb === "function" ? cb({ + code: 404, + message: ":type not found. Must bes in [eggs, hatchingPotions, food]" + }) : void 0; + } + if (!user.items[type][key]) { + return typeof cb === "function" ? cb({ + code: 404, + message: ":key not found for user.items." + type + }) : void 0; + } + user.items[type][key]--; + user.stats.gp += content[type][key].value; + return typeof cb === "function" ? cb(null, _.pick(user, splitWhitespace('stats items'))) : void 0; +}; diff --git a/common/script/ops/sleep.js b/common/script/ops/sleep.js new file mode 100644 index 0000000000..dec8095ad3 --- /dev/null +++ b/common/script/ops/sleep.js @@ -0,0 +1,4 @@ +module.exports = function(user, req, cb) { + user.preferences.sleep = !user.preferences.sleep; + return typeof cb === "function" ? cb(null, {}) : void 0; +}; diff --git a/common/script/ops/sortTag.js b/common/script/ops/sortTag.js new file mode 100644 index 0000000000..85dcda169f --- /dev/null +++ b/common/script/ops/sortTag.js @@ -0,0 +1,9 @@ +module.exports = function(user, req, cb) { + var from, ref, to; + ref = req.query, to = ref.to, from = ref.from; + if (!((to != null) && (from != null))) { + return typeof cb === "function" ? cb('?to=__&from=__ are required') : void 0; + } + user.tags.splice(to, 0, user.tags.splice(from, 1)[0]); + return typeof cb === "function" ? cb(null, user.tags) : void 0; +}; diff --git a/common/script/ops/sortTask.js b/common/script/ops/sortTask.js new file mode 100644 index 0000000000..b903b692dc --- /dev/null +++ b/common/script/ops/sortTask.js @@ -0,0 +1,39 @@ +import i18n from '../i18n'; +import preenTodos from '../libs/preenTodos'; + +module.exports = function(user, req, cb) { + var from, id, movedTask, preenedTasks, ref, task, tasks, to; + id = req.params.id; + ref = req.query, to = ref.to, from = ref.from; + task = user.tasks[id]; + if (!task) { + return typeof cb === "function" ? cb({ + code: 404, + message: i18n.t('messageTaskNotFound', req.language) + }) : void 0; + } + if (!((to != null) && (from != null))) { + return typeof cb === "function" ? cb('?to=__&from=__ are required') : void 0; + } + tasks = user[task.type + "s"]; + if (task.type === 'todo' && tasks[from] !== task) { + preenedTasks = preenTodos(tasks); + if (to !== -1) { + to = tasks.indexOf(preenedTasks[to]); + } + from = tasks.indexOf(preenedTasks[from]); + } + if (tasks[from] !== task) { + return typeof cb === "function" ? cb({ + code: 404, + message: i18n.t('messageTaskNotFound', req.language) + }) : void 0; + } + movedTask = tasks.splice(from, 1)[0]; + if (to === -1) { + tasks.push(movedTask); + } else { + tasks.splice(to, 0, movedTask); + } + return typeof cb === "function" ? cb(null, tasks) : void 0; +}; diff --git a/common/script/ops/unlock.js b/common/script/ops/unlock.js new file mode 100644 index 0000000000..c53a5997ec --- /dev/null +++ b/common/script/ops/unlock.js @@ -0,0 +1,63 @@ +import i18n from '../i18n'; +import _ from 'lodash'; +import splitWhitespace from '../libs/splitWhitespace'; + +module.exports = function(user, req, cb, analytics) { + var alreadyOwns, analyticsData, cost, fullSet, k, path, split, v; + path = req.query.path; + fullSet = ~path.indexOf(","); + cost = ~path.indexOf('background.') ? fullSet ? 3.75 : 1.75 : fullSet ? 1.25 : 0.5; + alreadyOwns = !fullSet && user.fns.dotGet("purchased." + path) === true; + if ((user.balance < cost || !user.balance) && !alreadyOwns) { + return typeof cb === "function" ? cb({ + code: 401, + message: i18n.t('notEnoughGems', req.language) + }) : void 0; + } + if (fullSet) { + _.each(path.split(","), function(p) { + if (~path.indexOf('gear.')) { + user.fns.dotSet("" + p, true); + true; + } else { + + } + user.fns.dotSet("purchased." + p, true); + return true; + }); + } else { + if (alreadyOwns) { + split = path.split('.'); + v = split.pop(); + k = split.join('.'); + if (k === 'background' && v === user.preferences.background) { + v = ''; + } + user.fns.dotSet("preferences." + k, v); + return typeof cb === "function" ? cb(null, req) : void 0; + } + user.fns.dotSet("purchased." + path, true); + } + user.balance -= cost; + if (~path.indexOf('gear.')) { + if (typeof user.markModified === "function") { + user.markModified('gear.owned'); + } + } else { + if (typeof user.markModified === "function") { + user.markModified('purchased'); + } + } + analyticsData = { + uuid: user._id, + itemKey: path, + itemType: 'customization', + acquireMethod: 'Gems', + gemCost: cost / .25, + category: 'behavior' + }; + if (analytics != null) { + analytics.track('acquire item', analyticsData); + } + return typeof cb === "function" ? cb(null, _.pick(user, splitWhitespace('purchased preferences items'))) : void 0; +}; diff --git a/common/script/ops/update.js b/common/script/ops/update.js new file mode 100644 index 0000000000..12a100e372 --- /dev/null +++ b/common/script/ops/update.js @@ -0,0 +1,9 @@ +import _ from 'lodash'; + +module.exports = function(user, req, cb) { + _.each(req.body, function(v, k) { + user.fns.dotSet(k, v); + return true; + }); + return typeof cb === "function" ? cb(null, user) : void 0; +}; diff --git a/common/script/ops/updateTag.js b/common/script/ops/updateTag.js new file mode 100644 index 0000000000..8e4019fa51 --- /dev/null +++ b/common/script/ops/updateTag.js @@ -0,0 +1,18 @@ +import i18n from '../i18n'; +import _ from 'lodash'; + +module.exports = function(user, req, cb) { + var i, tid; + tid = req.params.id; + i = _.findIndex(user.tags, { + id: tid + }); + if (!~i) { + return typeof cb === "function" ? cb({ + code: 404, + message: i18n.t('messageTagNotFound', req.language) + }) : void 0; + } + user.tags[i].name = req.body.name; + return typeof cb === "function" ? cb(null, user.tags[i]) : void 0; +}; diff --git a/common/script/ops/updateTask.js b/common/script/ops/updateTask.js new file mode 100644 index 0000000000..427104f15e --- /dev/null +++ b/common/script/ops/updateTask.js @@ -0,0 +1,23 @@ +import i18n from '../i18n'; +import _ from 'lodash'; + +module.exports = function(user, req, cb) { + var ref, task; + if (!(task = user.tasks[(ref = req.params) != null ? ref.id : void 0])) { + return typeof cb === "function" ? cb({ + code: 404, + message: i18n.t('messageTaskNotFound', req.language) + }) : void 0; + } + _.merge(task, _.omit(req.body, ['checklist', 'reminders', 'id', 'type'])); + if (req.body.checklist) { + task.checklist = req.body.checklist; + } + if (req.body.reminders) { + task.reminders = req.body.reminders; + } + if (typeof task.markModified === "function") { + task.markModified('tags'); + } + return typeof cb === "function" ? cb(null, task) : void 0; +}; diff --git a/common/script/ops/updateWebhook.js b/common/script/ops/updateWebhook.js new file mode 100644 index 0000000000..e2775a40b4 --- /dev/null +++ b/common/script/ops/updateWebhook.js @@ -0,0 +1,9 @@ +import _ from 'lodash'; + +module.exports = function(user, req, cb) { + _.merge(user.preferences.webhooks[req.params.id], req.body); + if (typeof user.markModified === "function") { + user.markModified('preferences.webhooks'); + } + return typeof cb === "function" ? cb(null, user.preferences.webhooks) : void 0; +}; diff --git a/package.json b/package.json index c50623a792..ebcde2032f 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "qs": "^2.3.2", "request": "~2.44.0", "s3-upload-stream": "^1.0.6", - "stripe": "*", + "stripe": "^4.2.0", "superagent": "~1.4.0", "swagger-node-express": "lefnire/swagger-node-express#habitrpg", "universal-analytics": "~0.3.2", @@ -85,7 +85,7 @@ }, "private": true, "engines": { - "node": "^0.10.40", + "node": "^4.3.1", "npm": "^2.14.9" }, "scripts": { @@ -99,7 +99,7 @@ "test:karma:watch": "karma start", "test:prepare:webdriver": "webdriver-manager update", "test:e2e:webdriver": "webdriver-manager start", - "test:e2e": "protractor protractor.conf.js", + "test:e2e": "protractor test/e2e/protractor.conf.js", "test:nodemon": "gulp test:nodemon", "start": "gulp run:dev", "sprites": "gulp sprites:compile", @@ -131,7 +131,7 @@ "mongodb": "^2.0.46", "mongoskin": "~0.6.1", "phantomjs": "^1.9", - "protractor": "~2.5.1", + "protractor": "^3.1.1", "rewire": "^2.3.3", "rimraf": "^2.4.3", "run-sequence": "^1.1.4", diff --git a/protractor.conf.js b/protractor.conf.js deleted file mode 100644 index 0f810a8915..0000000000 --- a/protractor.conf.js +++ /dev/null @@ -1,26 +0,0 @@ -// An example configuration file. -exports.config = { - // The address of a running selenium server. - seleniumAddress: 'http://localhost:4444/wd/hub', - - // Capabilities to be passed to the webdriver instance. - capabilities: { - 'browserName': 'firefox' - }, - - // Spec patterns are relative to the current working directly when - // protractor is called. - specs: ['test/e2e/e2e.js'], - - // A base URL for your application under test. Calls to protractor.get() - // with relative paths will be prepended with this. - baseUrl: 'http://localhost:3003', - - // Options to be passed to Jasmine-node. - jasmineNodeOpts: { - showColors: true, - defaultTimeoutInterval: 90000, - isVerbose: true, - displayPendingSpec: true - } -}; diff --git a/tasks/gulp-eslint.js b/tasks/gulp-eslint.js index e093e869ea..735845beb7 100644 --- a/tasks/gulp-eslint.js +++ b/tasks/gulp-eslint.js @@ -12,6 +12,9 @@ const COMMON_FILES = [ // @TODO remove these negations as the files are converted over. '!./common/script/index.js', '!./common/script/content/index.js', + '!./common/script/ops/**/*.js', + '!./common/script/fns/**/*.js', + '!./common/script/libs/**/*.js', '!./common/script/public/**/*.js', ]; const TEST_FILES = [ diff --git a/tasks/gulp-tests.js b/tasks/gulp-tests.js index e505b92d9c..bada857d36 100644 --- a/tasks/gulp-tests.js +++ b/tasks/gulp-tests.js @@ -269,9 +269,6 @@ gulp.task('test:e2e', ['test:prepare', 'test:prepare:server'], (cb) => { let runner = exec( 'npm run test:e2e', (err, stdout, stderr) => { - /* - * Note: As it stands, protractor wont report pending specs - */ support.forEach(kill); cb(err); } @@ -293,15 +290,13 @@ gulp.task('test:e2e:safe', ['test:prepare', 'test:prepare:server'], (cb) => { let runner = exec( 'npm run test:e2e', (err, stdout, stderr) => { - /* - * Note: As it stands, protractor wont report pending specs - */ let match = stdout.match(/(\d+) tests?.*(\d) failures?/); + testResults.push({ - suite: 'End-to-End Specs', - pass: parseInt(match[1]) - parseInt(match[2]), - fail: parseInt(match[2]), - pend: 0 + suite: 'End-to-End Specs\t', + pass: testCount(stdout, /(\d+) passing/), + fail: testCount(stdout, /(\d+) failing/), + pend: testCount(stdout, /(\d+) pending/) }); support.forEach(kill); cb(); diff --git a/test/.eslintrc b/test/.eslintrc index 7b5868eca9..9ee7ce9e28 100644 --- a/test/.eslintrc +++ b/test/.eslintrc @@ -1,6 +1,7 @@ { "rules": { "one-var": 0, + "func-names": 0, "max-nested-callbacks": 0, "no-unused-expressions": 0, "mocha/no-exclusive-tests": 2, diff --git a/test/api/v2/user/PUT-user.test.js b/test/api/v2/user/PUT-user.test.js index 033a278646..e4774528ae 100644 --- a/test/api/v2/user/PUT-user.test.js +++ b/test/api/v2/user/PUT-user.test.js @@ -175,4 +175,27 @@ describe('PUT /user', () => { }); }); }); + + context('Improvement Categories', () => { + it('sets valid categories', async () => { + await user.put('/user', { + 'preferences.improvementCategories': ['work', 'school'], + }); + + await user.sync(); + + expect(user.preferences.improvementCategories).to.eql(['work', 'school']); + }); + + it('discards invalid categories', async () => { + await expect(user.put('/user', { + 'preferences.improvementCategories': ['work', 'procrastination', 'school'], + })).to.eventually.be.rejected.and.eql({ + code: 400, + text: [ + 'Validator failed for path `preferences.improvementCategories` with value `work,procrastination,school`', + ], + }); + }); + }); }); diff --git a/test/e2e/.eslintrc b/test/e2e/.eslintrc index ecf3d02e9f..252188793a 100644 --- a/test/e2e/.eslintrc +++ b/test/e2e/.eslintrc @@ -1,13 +1,7 @@ { - "rules": { - "func-names": 0, - "no-var": 0, - "prefer-template": 0 - }, "globals": { "browser": true, "by": true, - "element": true, - "jasmine": true + "element": true } } diff --git a/test/e2e/e2e.js b/test/e2e/e2e.js deleted file mode 100644 index 90a3a742f3..0000000000 --- a/test/e2e/e2e.js +++ /dev/null @@ -1,62 +0,0 @@ -'use strict'; - -var fs = require('fs'); - -describe('front page', function () { - beforeEach(function () { - browser.ignoreSynchronization = true; - browser.get('/'); - browser.sleep(1000); - }); - - // based on https://github.com/angular/protractor/issues/114#issuecomment-29046939 - afterEach(function () { - var currentSpec = jasmine.getEnv().currentSpec; - var passed = currentSpec.results().passed(); - if (!passed) { - var filename = 'exception_' + currentSpec.description + '.png'; - browser.takeScreenshot().then(function (png) { - var buffer = new Buffer(png, 'base64'); - var stream = fs.createWriteStream(filename); - stream.write(buffer); - stream.end(); - }); - } - }); - - it('shows the front page', function () { - var button = element(by.id('play-btn')); - expect(button.getText()).toEqual('Join for free'); - }); - - it('does not login when using wrong credentials', function () { - var button = element(by.id('play-btn')); - button.click(); - browser.sleep(1000); - element(by.model('loginUsername')).sendKeys('username'); - element(by.model('loginPassword')).sendKeys('pass'); - var login = element(by.css('#loginForm input[value="Login"]')); - login.click(); - var alertDialog = browser.switchTo().alert(); - expect(alertDialog.getText()).toMatch('Uh-oh - your username or password is incorrect.\n- Make sure your username or email is typed correctly.\n- You may have signed up with Facebook, not email. Double-check by trying Facebook login.\n- If you forgot your password, click "Forgot Password" on the habitica.com website\'s login form.'); - alertDialog.accept(); - }); - - xit('registers a new user', function () { - var button = element(by.id('play-btn')); - button.click(); - browser.sleep(1000); - var registerTab = element(by.linkText('Register')); - registerTab.click(); - element(by.model('registerVals.username')).sendKeys('user'); - element(by.model('registerVals.email')).sendKeys('user@example.com'); - element(by.model('registerVals.password')).sendKeys('pass'); - element(by.model('registerVals.confirmPassword')).sendKeys('pass'); - var register = element(by.css('#registrationForm input[value="Register"]')); - register.click(); - browser.sleep(1000); - browser.getCurrentUrl().then(function (url) { - expect(url).not.toMatch(/static\/front/); - }); - }); -}); diff --git a/test/e2e/helper.js b/test/e2e/helper.js new file mode 100644 index 0000000000..dda430085c --- /dev/null +++ b/test/e2e/helper.js @@ -0,0 +1,22 @@ +import fs from 'fs'; +import { resetHabiticaDB } from '../helpers/api-integration/mongo'; + +before(async () => { + await resetHabiticaDB(); +}); + +// based on https://github.com/angular/protractor/issues/114#issuecomment-29046939 +afterEach(async function () { + let lastTest = this.currentTest; + + if (lastTest.state === 'failed') { + let filename = `exception_${lastTest.title}.png`; + let png = await browser.takeScreenshot(); + let buffer = new Buffer(png, 'base64'); + let stream = fs.createWriteStream(filename); + + stream.write(buffer); + stream.end(); + } +}); + diff --git a/test/e2e/protractor.conf.js b/test/e2e/protractor.conf.js new file mode 100644 index 0000000000..4aea36e0dc --- /dev/null +++ b/test/e2e/protractor.conf.js @@ -0,0 +1,30 @@ +'use strict'; + +let chai = require('chai'); +let chaiAsPromised = require('chai-as-promised'); + +require('babel-register'); +require('babel-polyfill'); + +exports.config = { + specs: ['./helper.js', './**/*.test.js'], + baseUrl: 'http://localhost:3003/', + capabilities: { + browserName: 'firefox', + }, + directConnect: true, + seleniumAddress: 'http://localhost:4444/wd/hub', + framework: 'mocha', + mochaOpts: { + reporter: 'spec', + slow: 6000, + timeout: 10000, + compilers: 'js:babel-register', + }, + onPrepare: () => { + browser.ignoreSynchronization = true; + + chai.use(chaiAsPromised); + global.expect = chai.expect; + }, +}; diff --git a/test/e2e/static-pages/front-page.test.js b/test/e2e/static-pages/front-page.test.js new file mode 100644 index 0000000000..9f1475d455 --- /dev/null +++ b/test/e2e/static-pages/front-page.test.js @@ -0,0 +1,64 @@ +import { v4 as generateUniqueId } from 'uuid'; + +describe('Static Front Page', () => { + beforeEach(() => { + browser.get('/'); + browser.sleep(1000); + }); + + it('shows the front page', async () => { + let button = element(by.id('play-btn')); + + await expect(button.getText()).to.eventually.eql('Join for free'); + }); + + it('does not login when using wrong credentials', async () => { + let button = element(by.id('play-btn')); + let randomName = generateUniqueId(); + + button.click(); + browser.sleep(1000); + + element(by.model('loginUsername')).sendKeys(randomName); + element(by.model('loginPassword')).sendKeys('pass'); + + let login = element(by.css('#loginForm input[value="Login"]')); + + login.click(); + browser.sleep(1000); + + let alertDialog = browser.switchTo().alert(); + + await expect(alertDialog.getText()).to.eventually.match(/username or password is incorrect./); + + alertDialog.accept(); + }); + + it('registers a new user', async function () { + this.timeout(30000); // TODO: Speed up registration action. Takes way too long and times out unless you extend the timeout + + let button = element(by.id('play-btn')); + let randomName = generateUniqueId(); + + button.click(); + browser.sleep(1000); + + let registerTab = element(by.linkText('Register')); + registerTab.click(); + element(by.model('registerVals.username')).sendKeys(randomName); + element(by.model('registerVals.email')).sendKeys(`${randomName}@example.com`); + element(by.model('registerVals.password')).sendKeys('pass'); + element(by.model('registerVals.confirmPassword')).sendKeys('pass'); + + let register = element(by.css('#registrationForm input[type="submit"]')); + + register.click(); + browser.sleep(3000); + + let url = await browser.getCurrentUrl(); + + expect(url).to.not.match(/static\/front/); + }); + + it('logs in an existing user'); +}); diff --git a/website/public/js/controllers/chatCtrl.js b/website/public/js/controllers/chatCtrl.js index 693775579d..8ba5b2a15c 100644 --- a/website/public/js/controllers/chatCtrl.js +++ b/website/public/js/controllers/chatCtrl.js @@ -39,7 +39,7 @@ habitrpg.controller('ChatCtrl', ['$scope', 'Groups', 'Chat', 'User', '$http', 'A Analytics.updateUser({'partyID':group.id,'partySize':group.memberCount}); } if (group.privacy == 'public'){ - Analytics.track({'hitType':'event','eventCategory':'behavior','eventAction':'group chat','groupType':group.type,'privacy':group.privacy,'groupName':group.name,'message':message}); + Analytics.track({'hitType':'event','eventCategory':'behavior','eventAction':'group chat','groupType':group.type,'privacy':group.privacy,'groupName':group.name}); } else { Analytics.track({'hitType':'event','eventCategory':'behavior','eventAction':'group chat','groupType':group.type,'privacy':group.privacy}); } diff --git a/website/src/controllers/api-v2/user.js b/website/src/controllers/api-v2/user.js index 201d1d034d..d06bb96288 100644 --- a/website/src/controllers/api-v2/user.js +++ b/website/src/controllers/api-v2/user.js @@ -355,7 +355,15 @@ api.update = (req, res, next) => { user.save((err) => { if (!_.isEmpty(errors)) return res.json(401, {err: errors}); - if (err) return next(err); + if (err) { + if (err.name == 'ValidationError') { + let errorMessages = _.map(_.values(err.errors), (error) => { + return error.message; + }); + return res.json(400, {err: errorMessages}); + } + return next(err); + } res.json(200, user); user = errors = null; diff --git a/website/src/middlewares/apiThrottle.js b/website/src/middlewares/apiThrottle.js index 5a863c1fb7..15f3ad5666 100644 --- a/website/src/middlewares/apiThrottle.js +++ b/website/src/middlewares/apiThrottle.js @@ -4,7 +4,9 @@ var limiter = require('connect-ratelimit'); var IS_PROD = nconf.get('NODE_ENV') === 'production'; module.exports = function(app) { - if (!IS_PROD) return; + // TODO review later + // disable the rate limiter middleware + if (/*!IS_PROD || */true) return; app.use(limiter({ end:false, categories:{ @@ -19,4 +21,4 @@ module.exports = function(app) { if (res.ratelimit.exceeded) return res.json(429,{err:'Rate limit exceeded'}); next(); }); -}; \ No newline at end of file +}; diff --git a/website/src/models/task.js b/website/src/models/task.js index 8ae24e353a..97a0e1e7c6 100644 --- a/website/src/models/task.js +++ b/website/src/models/task.js @@ -28,7 +28,12 @@ var TaskSchema = { broken: String, // CHALLENGE_DELETED, TASK_DELETED, UNSUBSCRIBED, CHALLENGE_CLOSED winner: String // user.profile.name // group: {type: 'Strign', ref: 'Group'} // if we restore this, rename `id` above to `challenge` - } + }, + reminders: [{ + id: {type:String,'default':shared.uuid}, + startDate: Date, + time: Date + }] }; var HabitSchema = new Schema( diff --git a/website/src/models/user.js b/website/src/models/user.js index 9228261bbb..42639a5602 100644 --- a/website/src/models/user.js +++ b/website/src/models/user.js @@ -392,7 +392,14 @@ var UserSchema = new Schema({ hatchPet: {type: Boolean, 'default': false}, raisePet: {type: Boolean, 'default': false}, streak: {type: Boolean, 'default': false} - } + }, + improvementCategories: { + type: Array, + validate: (categories) => { + const validCategories = ['work', 'exercise', 'healthWellness', 'school', 'teams', 'chores', 'creativity']; + let isValidCategory = categories.every(category => validCategories.indexOf(category) !== -1); + return isValidCategory; + }} }, profile: { blurb: String, diff --git a/website/views/options/social/tavern.jade b/website/views/options/social/tavern.jade index c2d7aef7b9..ed7e4ef6c3 100644 --- a/website/views/options/social/tavern.jade +++ b/website/views/options/social/tavern.jade @@ -83,7 +83,7 @@ a.label.label-contributor-1(ng-click='toggleUserTier($event)')=env.t('tier') + ' 1 (' + env.t('friend') + ')' div p - span.achievement.achievement-firefox + span.achievement.achievement-boot !=env.t('friendFirst') tr td diff --git a/website/views/shared/new-stuff.jade b/website/views/shared/new-stuff.jade index 5a0fcc12b1..467de034f8 100644 --- a/website/views/shared/new-stuff.jade +++ b/website/views/shared/new-stuff.jade @@ -1,37 +1,90 @@ -h2 3/1/2016 - MARCH BACKGROUNDS AND ARMOIRE ITEMS REVEALED! PLUS, WEB DESIGNER NEEDED AND MARCH MYSTERY BOX +h2 3/15/2016 - NEW PARTY ACHIEVEMENT BADGES AND SPRING MYSTERY PLOT CONTINUES! hr tr td - .promo_backgrounds_armoire_201603.pull-right - h3 March Backgrounds - p There are three new avatar backgrounds in the Background Shop! Now your avatar can venture into a Rainforest, find precious metals in a Deep Mine, or cast spells in a Circle of Stones. - p.small.muted by James Danger, sungabraverday, and UncommonCriminal + .achievement-partyUp2x.pull-left.slight-right-margin + .achievement-partyOn2x.pull-right + h3 New Party Achievements + p There are two brand-new badges that you can earn by being in a party with your friends: the Party Up badge, for those in parties of 2 or more, and the Party On badge, for those in parties of 4 or more. + br + p Parties are a great way to stay accountable to your tasks. To earn these badges, invite your friends or post in the Party Wanted Guild on the website to join an existing group. If you're already in a party with others, simply visit the Party page to claim the badges! Enjoy! + p.small.muted by khipkin and Lemoness tr td - h3 March Armoire Items Revealed - p There is new equipment in Enchanted Armoire, a 100 GP Reward in the Rewards Column which unlocks after you've attained Ultimate Gear! + h3 Spring Mystery Plot Continues + p A huge, glittering cloud has been slowly drifting towards Habitica, and gossip in the streets is running wild. br - p Click on the Enchanted Armoire for a random chance at special Equipment, including the Miner Set and the Mystic Lamp! It may also give you random XP or food items. We'll be adding new equipment to it during the first week of each month, but even when you've exhausted the current supply, you can keep clicking for a chance at food and XP. + p “I think I saw an explosion of colored lights, like fireworks!” br - p Now go spend all that accumulated Gold! May the Random Number Generator smile upon you... - p.small.muted by Lemoness and SabreCat - p.small.muted Art by Balduranne - tr - td - .inventory_present_03.pull-right - h3 March Mystery Box - p Ooh... What could it be? All Habiticans who are subscribed during the month of March will receive the March Mystery Item Set! It will be revealed on the 23rd, so keep your eyes peeled. Thanks for supporting the site <3 + p “Do you hear that distant humming sound?” + br + p “There’s a sweet scent on the breeze, for sure.” + br + p As you stop in the Tavern on a work break, you overhear Lemoness, Redphoenix, and SabreCat murmuring to each other. + br + p “It’s definitely him,” Lemoness whispers. “I sent my dragon on a stealth flight to check.” + br + p Redphoenix taps a finger against her cup of tea. “Why is he so early? Even for him, this is... unexpected.” + br + p “You don’t think he’s planning to stay in Habit City, do you?” SabreCat asks as his tiger cowers under his chair. “My pets still haven’t recovered.” + br + p Lemoness mournfully flops forward onto the table. “I don’t know... but something tells me that we’re in for an unusual Spring Fling celebration.” p.small.muted by Lemoness - tr - td - h3 Web UI Designer Needed - p We’re looking for UI designers with experience in UX! Do you like user-centered approaches? Are you familiar with web patterns and assets? If that sounds like you, and you’re interested in contributing to Habitica, please email vicky@habitica.com. We look forward to questing with you! if menuItem !== 'oldNews' hr a(href='/static/old-news', target='_blank') Read older news mixin oldNews + h2 3/9/2016 - SNAIL PET QUEST AND MOBILE CHALLENGE WINNERS. PLUS, SPRING PLOT-LINE BEGINS! + tr + td + span.Mount_Body_Snail-Base.pull-right + span.Mount_Head_Snail-Base.pull-right(style='margin:0') + h3 Snail Pet Quest + p We've released a new Pet Quest: The Snail of Drudgery Sludge! Habiticans everywhere are bogged down by unimportant tasks. Can you wash away the slime? If so, you'll earn some Snail Eggs! + p.small.muted by Lemoness and SabreCat + p.small.muted Art by Overomega, Pfeffernusse, and Misceo + p.small.muted Writing by Maz Wendling + tr + td + h3 Mobile Challenge Winners + p Congratulations to the winners of the Mobile App Challenges: J, Janƒçe Skalkova, studentSeekingDiscipline, Felipe Marinelli Affonso, compl, Yuri Augusto, Ewe Pacheco, Narmence, Ryan_carter, and candieb! Thanks to everyone who participated. We hope that you're enjoying the apps! + p.small.muted by Lemoness + tr + td + h3 Spring Plot-line Begins + p A large crowd has gathered in Productivity Plaza, just outside of the Tavern. Curious, you press forward and see people peering through a telescope, which is pointed at a strange, sparkling cloud on the horizon. + br + p Unfortunately, it turns out that the line to look through the telescope is about an hour long! Who has that kind of time when there are tasks to conquer? Oh well. Whatever it is, you’ll probably hear all about it soon... + p.small.muted by Lemoness + h2 3/1/2016 - MARCH BACKGROUNDS AND ARMOIRE ITEMS REVEALED! PLUS, WEB DESIGNER NEEDED AND MARCH MYSTERY BOX + tr + td + .promo_backgrounds_armoire_201603.pull-right + h3 March Backgrounds + p There are three new avatar backgrounds in the Background Shop! Now your avatar can venture into a Rainforest, find precious metals in a Deep Mine, or cast spells in a Circle of Stones. + p.small.muted by James Danger, sungabraverday, and UncommonCriminal + tr + td + h3 March Armoire Items Revealed + p There is new equipment in Enchanted Armoire, a 100 GP Reward in the Rewards Column which unlocks after you've attained Ultimate Gear! + br + p Click on the Enchanted Armoire for a random chance at special Equipment, including the Miner Set and the Mystic Lamp! It may also give you random XP or food items. We'll be adding new equipment to it during the first week of each month, but even when you've exhausted the current supply, you can keep clicking for a chance at food and XP. + br + p Now go spend all that accumulated Gold! May the Random Number Generator smile upon you... + p.small.muted by Lemoness and SabreCat + p.small.muted Art by Balduranne + tr + td + .inventory_present_03.pull-right + h3 March Mystery Box + p Ooh... What could it be? All Habiticans who are subscribed during the month of March will receive the March Mystery Item Set! It will be revealed on the 23rd, so keep your eyes peeled. Thanks for supporting the site <3 + p.small.muted by Lemoness + tr + td + h3 Web UI Designer Needed + p We’re looking for UI designers with experience in UX! Do you like user-centered approaches? Are you familiar with web patterns and assets? If that sounds like you, and you’re interested in contributing to Habitica, please email vicky@habitica.com. We look forward to questing with you! h2 2/24/2016 - PHOENIXES IN THE TIME TRAVEL STABLE! FEBRUARY MYSTERY SET! tr td