Compare commits

...

70 Commits

Author SHA1 Message Date
Sabe Jones
9b0ee6a726 3.102.2 2017-07-13 22:29:03 +00:00
Sabe Jones
c23fad3077 chore(i18n): update locales 2017-07-13 22:28:23 +00:00
Sabe Jones
6850a1fcb4 chore(news): Blog Bailey 2017-07-13 22:23:35 +00:00
Keith Holliday
bc477455bb Tasks cron ryamodal fixes (#8871)
* Changed assumption of timezone location

* Added checks for RYA and moved cron check

* Fixed modal scope issue
2017-07-13 15:11:27 -07:00
Sabe Jones
4cd272f99c 3.102.1 2017-07-12 20:41:58 +00:00
Sabe Jones
0292501387 chore(i18n): update locales 2017-07-12 20:40:13 +00:00
Keith Holliday
28b56256d2 Added catch for cron error (#8864)
* Added catch for cron error

* Updated logger usage
2017-07-12 13:35:08 -07:00
Sabe Jones
7a2432a1a0 3.102.0 2017-07-11 21:42:06 +00:00
Sabe Jones
0bf515d0f9 chore(i18n): update locales 2017-07-11 21:40:44 +00:00
SabreCat
cbed198f02 chore(sprites): compile 2017-07-11 21:32:53 +00:00
SabreCat
90d77cee81 feat(content): Orca Pets and Splashy Pals 2017-07-11 21:31:26 +00:00
SabreCat
3668a9d3ac fix(sprites): correct canvases
Also adds sprites for Trapper Santa collection quest.
2017-07-11 21:29:48 +00:00
Sabe Jones
a256b6df03 3.101.2 2017-07-10 20:07:46 +00:00
Keith Holliday
92fdc13adf Added assumption that the date passed is in the users timezone (#8859) 2017-07-10 13:07:14 -07:00
Sabe Jones
5055a57ae9 3.101.1 2017-07-08 01:48:50 +00:00
Keith Holliday
3fa0b72ffe Added assumption when no time is supplied (#8855)
* Added assumption when no time is supplied

* Changed format of date

* Set now options when date is specified
2017-07-07 18:46:54 -07:00
Keith Holliday
b3f9fd09c6 Check for app loading instead of daily count (#8856) 2017-07-07 12:35:26 -07:00
Keith Holliday
30437e158e Added check to prevent double cron (#8854)
* Added check to prevent double cron

* Added then and fix style issues
2017-07-07 11:14:36 -07:00
Sabe Jones
ac3ac73737 3.101.0 2017-07-05 20:10:53 +00:00
Sabe Jones
8004c1e759 chore(i18n): update locales 2017-07-05 20:10:13 +00:00
SabreCat
d9e50e7632 Merge remote-tracking branch 'TheHollidayInn/yesterdailies-2' into release 2017-07-05 20:04:26 +00:00
SabreCat
4cd742c19a feat(event): Summer Splashy Foam 2017-07-05 20:03:23 +00:00
Sabe Jones
03ca65f2b8 3.100.0 2017-07-03 23:05:28 +00:00
Sabe Jones
ea74271484 chore(i18n): update locales 2017-07-03 23:04:47 +00:00
SabreCat
0897367538 chore(sprites): compile 2017-07-03 22:56:48 +00:00
SabreCat
2566fcecb7 feat(content): Backgrounds and Armoire 2017-07 2017-07-03 22:54:58 +00:00
Keith Holliday
c99863f339 Added yesterdaily field (#8847)
* Added yesterdaily field

* Added yesterdaily migration

* Added description
2017-07-03 13:55:53 -05:00
Keith Holliday
71d632f6f0 Merge remote-tracking branch 'upstream/release' into yesterdailies-3 2017-07-03 09:46:34 -05:00
Sabe Jones
548cc2ceb0 3.99.1 2017-06-30 21:05:16 +00:00
Sabe Jones
bf03ac8e44 chore(i18n): update locales 2017-06-30 20:59:13 +00:00
SabreCat
1853113aed Merge branch 'develop' into release 2017-06-30 20:50:18 +00:00
SabreCat
1ce1ed7c6b fix(test): allow for long months 2017-06-30 20:47:18 +00:00
Matteo Pagliazzi
33a39d3683 Client fixes (#8844)
* client: fix router when not authenticated, small fixes for tasks

* load the user only when necessary

* fix tests
2017-06-29 20:49:05 +02:00
Keith Holliday
e4f5950ffc Added required field 2017-06-29 08:11:02 -06:00
Keith Holliday
f2d81a8d9c Merge remote-tracking branch 'upstream/develop' into yesterdailies-3 2017-06-28 15:25:59 -06:00
Keith Holliday
43b6f71044 Fixed lint issue 2017-06-28 15:25:47 -06:00
Matteo Pagliazzi
06de1670b4 client: fix build and gradient 2017-06-28 10:53:35 +02:00
Keith Holliday
7fd2522e93 Merged in develop 2017-06-27 22:23:13 -06:00
Keith Holliday
acb4b79078 Added option for getting isDue field for specified date 2017-06-27 22:22:20 -06:00
Keith Holliday
8299982484 Ensured damage was only done for dailies that were due yesterday 2017-06-27 22:01:01 -06:00
Keith Holliday
207b1e91ca Added regsiter page and styles (#8836)
* Added regsiter page and styles

* Added style updates

* Added login server connection and logout

* Added login

* Added social auth

* Moved image assests

* Added trasnlations

* Added social icons

* Removed duplicate

* Updated shrinkwrap
2017-06-27 21:53:59 -06:00
Keith Holliday
aee21edd5f [WIP] Began adding tavern and party (#8814)
* Began adding tavern and party

* Fixed routing conflicts and tavern constant

* Updated button styles

* Added not on quest block

* Added no challenge block

* Began adding quest details

* Began updating group create modal to have party info

* Added create party modal

* Added share userid menu

* Began adding toggle

* Finished toggle styles

* Added start quest modal

* Ported over party ctrl code

* Finished porting over party ctrl code

* Added more quest actions

* Added own quests modal and quest modal details

* Fixed member modal styles and icons

* Added many random style updates

* Small text align fix

* Removed extra update

* Removed config and extra key

* Removed client string extras
2017-06-27 14:02:55 -06:00
Sabe Jones
6e1bbd05bc Merge branch 'release' into develop 2017-06-27 17:43:13 +00:00
Matteo Pagliazzi
6fb4c1b576 Client Tasks v1 (#8823)
* remove unused elements from tasks page

* remove components

* client: tasks: wip

* tasks: order, start styling them

* more tasks works

* habits controls

* more work

* tasks icons

* split columns in their own component

* implement tags for tasks

* wip

* add columns description
2017-06-26 23:55:14 +02:00
Alys
7c5bd526b1 minor text fixes: accurate flavour text for Golden Knight testimonies collection quest, etc (#8826)
* make comment more accurate: members are removed, not banned

They can rejoin with an invitation in a private group or at any time in a public group.

* change windows line breaks to unix line breaks

* change flavour text of Golden Knight collection quest to reduce number of testimonies

* fix grammatical error noticed by mandyzhou

* improve message about not being able to send PMs because we often see people report it as a bug

* update instructions for cancelling Google subscriptions (thanks to Scea for noticing)

* change Delete Completed on-hover message - fixes #8598

* correct the Orb of Rebirth's text about pets and mounts (they are not locked)
2017-06-26 22:35:29 +01:00
negue
187a9f5f19 [WIP] client/inventory/stable (#8737)
* Stable: basic layout (based on equipment)

* extract item popover-content as component

# Conflicts:
#	website/client/components/inventory/item.vue

* extract item-content as slot - list standard pets with image

* dynamic list petGroups in sidebar / content - with selected / open filter

* itemContentClass for pets

* fix filter - extract filter labels

* Filter: Hide Missing

* fix position of pets

* sort by: A-Z, Color, Hatchable

* refactor animalList - created the list once per type and cache it - sort now works before viewing one or all pets

* custom petItem to show the progress

* list specialPets - rename petGroup to animalGroup (more generic)

* equip a pet

* filter animals by input

* count pets

* list mounts

* hatchable pet popover

* hatchable pet popover #2

* PixelPaw Opacity for not owned and not hatchable pets - change item background for unowned pets

* Hold to hatch the pet - cleanup

* add food drawer + countBadge - special mounts - hide un-owned special animals - fixes

* Sliding Drawer: Buttons to scroll left/right

* Drag&Drop: food on pets

* fix hold to hatch - use mouseleave event

* 'Show All' / 'Show Less' - Animals

* Matts Image + Popover + use image width as sidebar width (removed col-2 / col-10)

* fixes: colors, v-once, drawer-errorMessage, strings

* drawerSlider - split items to pages / add divider / add first item of the next page - ResizeDirective

* ResizeDirective - throttle emits by `v-resize="value"` - fix drawer left padding

* show animals by available content width

* change sortBy button / label

* fix pet colors / backgrounds

* DragDropDirective - grabbing cursor

* remove browser specific prefixes

* fix lint issues

* show welcome dialog

* change translationkey (noFood, already exists)
2017-06-23 13:24:10 +02:00
Sabe Jones
7954763738 Merge branch 'release' into develop 2017-06-22 23:05:23 +00:00
Alys
a642d94443 fix bug that prevented sending of emails to admin addresses (#8832) 2017-06-22 14:33:27 -07:00
Keith Holliday
39a112b605 Payments gem reset (#8712)
* Added gem reset if user does not have date last updated set

* Fixed login of adding updated date
2017-06-22 14:21:09 -07:00
Keith Holliday
8c8f0ea201 Used ajax when canceling from the website (#8697)
* Used ajax when canceling from the website

* Fixed grammar issue
2017-06-22 14:13:53 -07:00
Keith Holliday
ca8541e8c4 Added needsCron field 2017-06-21 13:28:12 -06:00
Sabe Jones
773d546e4f Merge branch 'release' into develop 2017-06-21 04:01:33 +00:00
Sabe Jones
9ada0c9b02 Merge branch 'release' into develop 2017-06-21 01:52:36 +00:00
Sabe Jones
bd9bebe591 Merge branch 'release' into develop 2017-06-21 01:26:18 +00:00
Keith Holliday
fe62713809 Added migration to go from prod to test db (#8816) 2017-06-20 06:17:10 -06:00
Sabe Jones
ca7272a987 Merge branch 'release' into develop 2017-06-19 22:44:02 +00:00
SabreCat
2c60fade01 Merge branch 'release' into develop 2017-06-17 20:20:52 +00:00
Matteo Pagliazzi
ea2788ab2f fix gulp in production 2017-06-17 19:02:03 +02:00
Sabe Jones
5e111f6f6c Merge branch 'release' into develop 2017-06-16 20:42:52 +00:00
Keith Holliday
136dcd27a9 Prevented modal close and showed correct due class in modal 2017-06-16 12:28:42 -06:00
Sabe Jones
bf76f823d5 chore(i18n): update locales 2017-06-16 17:43:26 +00:00
Keith Holliday
7a8857010e Resized tasks, filter completed, add cron for non yesterdailies 2017-06-16 09:01:23 -06:00
Keith Holliday
a52bd66871 Fixed strings, yesterdaily filtering and cron check 2017-06-15 10:13:33 -06:00
Keith Holliday
f738f550e7 Updated copy 2017-06-12 07:01:14 -06:00
Keith Holliday
495bc9aa50 Removed let from angular 2017-06-11 22:55:35 -06:00
Keith Holliday
36fa3ab06f Added cron check 2017-06-08 17:10:22 -07:00
Keith Holliday
7422d020b1 Ported over UI code 2017-06-08 16:03:20 -07:00
Keith Holliday
5d0fe0aac3 Added yesterdailiy to model 2017-06-08 15:37:36 -07:00
Keith Holliday
60de7c8f21 Added cron route 2017-06-08 14:07:33 -07:00
Keith Holliday
137636cb40 Removed cron from every route 2017-06-08 14:03:30 -07:00
525 changed files with 44625 additions and 40599 deletions

View File

@@ -6,7 +6,7 @@ RUN npm install -g gulp grunt-cli bower mocha
# Clone Habitica repo and install dependencies
RUN mkdir -p /usr/src/habitrpg
WORKDIR /usr/src/habitrpg
RUN git clone --branch v3.99.0 https://github.com/HabitRPG/habitica.git /usr/src/habitrpg
RUN git clone --branch v3.102.2 https://github.com/HabitRPG/habitica.git /usr/src/habitrpg
RUN npm install
RUN bower install --allow-root

View File

@@ -13,6 +13,7 @@ if (process.env.NODE_ENV === 'production') {
require('./gulp/gulp-newstuff');
require('./gulp/gulp-build');
require('./gulp/gulp-babelify');
require('./gulp/gulp-bootstrap');
} else {
require('glob').sync('./gulp/gulp-*').forEach(require);
require('gulp').task('default', ['test']);

View File

@@ -0,0 +1,90 @@
var migrationName = '20170711_orcas.js';
var authorName = 'Sabe'; // in case script author needs to know when their ...
var authorUuid = '7f14ed62-5408-4e1b-be83-ada62d504931'; //... own data is done
/*
* Award Orca pets to owners of Orca mount, and Orca mount to everyone else
*/
var monk = require('monk');
var connectionString = 'mongodb://localhost:27017/habitrpg?auto_reconnect=true'; // FOR TEST DATABASE
var dbUsers = monk(connectionString).get('users', { castIds: false });
function processUsers(lastId) {
// specify a query to limit the affected users (empty for all users):
var query = {
'migration':{$ne:migrationName},
};
if (lastId) {
query._id = {
$gt: lastId
}
}
dbUsers.find(query, {
sort: {_id: 1},
limit: 250,
fields: [
'items.mounts',
] // specify fields we are interested in to limit retrieved data (empty if we're not reading data):
})
.then(updateUsers)
.catch(function (err) {
console.log(err);
return exiting(1, 'ERROR! ' + err);
});
}
var progressCount = 1000;
var count = 0;
function updateUsers (users) {
if (!users || users.length === 0) {
console.warn('All appropriate users found and modified.');
displayData();
return;
}
var userPromises = users.map(updateUser);
var lastUser = users[users.length - 1];
return Promise.all(userPromises)
.then(function () {
processUsers(lastUser._id);
});
}
function updateUser (user) {
count++;
var set = {};
if (user.items.mounts['Orca-Base']) {
set = {'migration':migrationName, 'items.pets.Orca-Base': 5};
} else {
set = {'migration':migrationName, 'items.mounts.Orca-Base': true};
}
dbUsers.update({_id: user._id}, {$set:set});
if (count % progressCount == 0) console.warn(count + ' ' + user._id);
if (user._id == authorUuid) console.warn(authorName + ' processed');
}
function displayData() {
console.warn('\n' + count + ' users processed\n');
return exiting(0);
}
function exiting(code, msg) {
code = code || 0; // 0 = success
if (code && !msg) { msg = 'ERROR!'; }
if (msg) {
if (code) { console.error(msg); }
else { console.log( msg); }
}
process.exit(code);
}
module.exports = processUsers;

View File

@@ -1,47 +1,47 @@
import Bluebird from 'Bluebird';
import { model as Challenges } from '../../website/server/models/challenge';
import { model as User } from '../../website/server/models/user';
async function syncChallengeToMembers (challenges) {
let challengSyncPromises = challenges.map(async function (challenge) {
let users = await User.find({
// _id: '',
challenges: challenge._id,
}).exec();
let promises = [];
users.forEach(function (user) {
promises.push(challenge.syncToUser(user));
promises.push(challenge.save());
promises.push(user.save());
});
return Bluebird.all(promises);
});
return await Bluebird.all(challengSyncPromises);
}
async function syncChallenges (lastChallengeDate) {
let query = {
// _id: '',
};
if (lastChallengeDate) {
query.createdOn = { $lte: lastChallengeDate };
}
let challengesFound = await Challenges.find(query)
.limit(10)
.sort('-createdAt')
.exec();
let syncedChallenges = await syncChallengeToMembers(challengesFound)
.catch(reason => console.error(reason));
let lastChallenge = challengesFound[challengesFound.length - 1];
if (lastChallenge) syncChallenges(lastChallenge.createdAt);
return syncedChallenges;
};
module.exports = syncChallenges;
import Bluebird from 'Bluebird';
import { model as Challenges } from '../../website/server/models/challenge';
import { model as User } from '../../website/server/models/user';
async function syncChallengeToMembers (challenges) {
let challengSyncPromises = challenges.map(async function (challenge) {
let users = await User.find({
// _id: '',
challenges: challenge._id,
}).exec();
let promises = [];
users.forEach(function (user) {
promises.push(challenge.syncToUser(user));
promises.push(challenge.save());
promises.push(user.save());
});
return Bluebird.all(promises);
});
return await Bluebird.all(challengSyncPromises);
}
async function syncChallenges (lastChallengeDate) {
let query = {
// _id: '',
};
if (lastChallengeDate) {
query.createdOn = { $lte: lastChallengeDate };
}
let challengesFound = await Challenges.find(query)
.limit(10)
.sort('-createdAt')
.exec();
let syncedChallenges = await syncChallengeToMembers(challengesFound)
.catch(reason => console.error(reason));
let lastChallenge = challengesFound[challengesFound.length - 1];
if (lastChallenge) syncChallenges(lastChallenge.createdAt);
return syncedChallenges;
};
module.exports = syncChallenges;

View File

@@ -21,4 +21,4 @@ var processUsers = require('./groups/update-groups-with-group-plans');
processUsers()
.catch(function (err) {
console.log(err)
})
})

View File

@@ -0,0 +1,83 @@
var migrationName = 'tasks-set-yesterdaily';
var authorName = 'TheHollidayInn'; // in case script author needs to know when their ...
var authorUuid = ''; //... own data is done
/*
* Iterates over all tasks and sets the yseterDaily field to True
*/
import monk from 'monk';
var connectionString = 'mongodb://localhost:27017/habitrpg?auto_reconnect=true'; // FOR TEST DATABASE
var dbTasks = monk(connectionString).get('tasks', { castIds: false });
function processTasks(lastId) {
// specify a query to limit the affected tasks (empty for all tasks):
var query = {
yesterDaily: false,
};
if (lastId) {
query._id = {
$gt: lastId
}
}
dbTasks.find(query, {
sort: {_id: 1},
limit: 250,
fields: [ // specify fields we are interested in to limit retrieved data (empty if we're not reading data):
],
})
.then(updateTasks)
.catch(function (err) {
console.log(err);
return exiting(1, 'ERROR! ' + err);
});
}
var progressCount = 1000;
var count = 0;
function updateTasks (tasks) {
if (!tasks || tasks.length === 0) {
console.warn('All appropriate tasks found and modified.');
displayData();
return;
}
var taskPromises = tasks.map(updatetask);
var lasttask = tasks[tasks.length - 1];
return Promise.all(taskPromises)
.then(function () {
processtasks(lasttask._id);
});
}
function updatetask (task) {
count++;
var set = {'yesterDaily': true};
dbTasks.update({_id: task._id}, {$set:set});
if (count % progressCount == 0) console.warn(count + ' ' + task._id);
if (task._id == authorUuid) console.warn(authorName + ' processed');
}
function displayData() {
console.warn('\n' + count + ' tasks processed\n');
return exiting(0);
}
function exiting(code, msg) {
code = code || 0; // 0 = success
if (code && !msg) { msg = 'ERROR!'; }
if (msg) {
if (code) { console.error(msg); }
else { console.log( msg); }
}
process.exit(code);
}
module.exports = processtasks;

View File

@@ -0,0 +1,109 @@
var migrationName = 'UserFromProdToTest';
var authorName = 'TheHollidayInn'; // in case script author needs to know when their ...
var authorUuid = ''; //... own data is done
/*
* This migraition will copy user data from prod to test
*/
var monk = require('monk');
var testConnectionSting = ''; // FOR TEST DATABASE
var usersTest = monk(testConnectionSting).get('users', { castIds: false });
var groupsTest = monk(testConnectionSting).get('groups', { castIds: false });
var challengesTest = monk(testConnectionSting).get('challenges', { castIds: false });
var tasksTest = monk(testConnectionSting).get('tasks', { castIds: false });
var monk2 = require('monk');
var liveConnectString = ''; // FOR TEST DATABASE
var userLive = monk2(liveConnectString).get('users', { castIds: false });
var groupsLive = monk2(liveConnectString).get('groups', { castIds: false });
var challengesLive = monk2(liveConnectString).get('challenges', { castIds: false });
var tasksLive = monk2(liveConnectString).get('tasks', { castIds: false });
import uniq from 'lodash/uniq';
import Bluebird from 'bluebird';
// Variabls for updating
let userIds = [
'206039c6-24e4-4b9f-8a31-61cbb9aa3f66',
];
let groupIds = [];
let challengeIds = [];
let tasksIds = [];
async function processUsers () {
let userPromises = [];
//{_id: {$in: userIds}}
return userLive.find({guilds: 'b0764d64-8276-45a1-afa5-5ca9a5c64ca0'})
.each((user, {close, pause, resume}) => {
if (user.guilds.length > 0) groupIds = groupIds.concat(user.guilds);
if (user.party._id) groupIds.push(user.party._id);
if (user.challenges.length > 0) challengeIds = challengeIds.concat(user.challenges);
if (user.tasksOrder.rewards.length > 0) tasksIds = tasksIds.concat(user.tasksOrder.rewards);
if (user.tasksOrder.todos.length > 0) tasksIds = tasksIds.concat(user.tasksOrder.todos);
if (user.tasksOrder.dailys.length > 0) tasksIds = tasksIds.concat(user.tasksOrder.dailys);
if (user.tasksOrder.habits.length > 0) tasksIds = tasksIds.concat(user.tasksOrder.habits);
let userPromise = usersTest.update({'_id': user._id}, user, {upsert:true});
userPromises.push(userPromise);
}).then(() => {
return Bluebird.all(userPromises);
})
.then(() => {
console.log("Done User");
});
}
function processGroups () {
let promises = [];
let groupsToQuery = uniq(groupIds);
return groupsLive.find({_id: {$in: groupsToQuery}})
.each((group, {close, pause, resume}) => {
let promise = groupsTest.update({_id: group._id}, group, {upsert:true});
promises.push(promise);
}).then(() => {
return Bluebird.all(promises);
})
.then(() => {
console.log("Done Group");
});
}
function processChallenges () {
let promises = [];
let challengesToQuery = uniq(challengeIds);
return challengesLive.find({_id: {$in: challengesToQuery}})
.each((challenge, {close, pause, resume}) => {
let promise = challengesTest.update({_id: challenge._id}, challenge, {upsert:true});
promises.push(promise);
}).then(() => {
return Bluebird.all(promises);
})
.then(() => {
console.log("Done Challenge");
});
}
function processTasks () {
let promises = [];
let tasksToQuery = uniq(tasksIds);
return tasksLive.find({_id: {$in: tasksToQuery}})
.each((task, {close, pause, resume}) => {
let promise = tasksTest.update({_id: task._id}, task, {upsert:true});
promises.push(promise);
}).then(() => {
return Bluebird.all(promises);
})
.then(() => {
console.log("Done Tasks");
});
}
module.exports = async function prodToTest () {
await processUsers();
await processGroups();
await processChallenges();
await processTasks();
};

703
npm-shrinkwrap.json generated
View File

@@ -1,6 +1,6 @@
{
"name": "habitica",
"version": "3.99.0",
"version": "3.101.2",
"dependencies": {
"@gulp-sourcemaps/map-sources": {
"version": "1.0.0",
@@ -4208,700 +4208,6 @@
"from": "fs.realpath@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
},
"fsevents": {
"version": "1.1.1",
"from": "fsevents@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.1.tgz",
"optional": true,
"dependencies": {
"abbrev": {
"version": "1.1.0",
"from": "abbrev@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz",
"optional": true
},
"ansi-regex": {
"version": "2.1.1",
"from": "ansi-regex@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
},
"ansi-styles": {
"version": "2.2.1",
"from": "ansi-styles@>=2.2.1 <3.0.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"optional": true
},
"aproba": {
"version": "1.1.1",
"from": "aproba@>=1.0.3 <2.0.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz",
"optional": true
},
"are-we-there-yet": {
"version": "1.1.2",
"from": "are-we-there-yet@>=1.1.2 <1.2.0",
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz",
"optional": true
},
"asn1": {
"version": "0.2.3",
"from": "asn1@>=0.2.3 <0.3.0",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
"optional": true
},
"assert-plus": {
"version": "0.2.0",
"from": "assert-plus@>=0.2.0 <0.3.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
"optional": true
},
"asynckit": {
"version": "0.4.0",
"from": "asynckit@>=0.4.0 <0.5.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"optional": true
},
"aws-sign2": {
"version": "0.6.0",
"from": "aws-sign2@>=0.6.0 <0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
"optional": true
},
"aws4": {
"version": "1.6.0",
"from": "aws4@>=1.2.1 <2.0.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
"optional": true
},
"balanced-match": {
"version": "0.4.2",
"from": "balanced-match@>=0.4.1 <0.5.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz"
},
"bcrypt-pbkdf": {
"version": "1.0.1",
"from": "bcrypt-pbkdf@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
"optional": true
},
"block-stream": {
"version": "0.0.9",
"from": "block-stream@*",
"resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz"
},
"boom": {
"version": "2.10.1",
"from": "boom@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz"
},
"brace-expansion": {
"version": "1.1.6",
"from": "brace-expansion@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz"
},
"buffer-shims": {
"version": "1.0.0",
"from": "buffer-shims@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz"
},
"caseless": {
"version": "0.11.0",
"from": "caseless@>=0.11.0 <0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
"optional": true
},
"chalk": {
"version": "1.1.3",
"from": "chalk@>=1.1.1 <2.0.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"optional": true
},
"code-point-at": {
"version": "1.1.0",
"from": "code-point-at@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz"
},
"combined-stream": {
"version": "1.0.5",
"from": "combined-stream@>=1.0.5 <1.1.0",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz"
},
"commander": {
"version": "2.9.0",
"from": "commander@>=2.9.0 <3.0.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
"optional": true
},
"concat-map": {
"version": "0.0.1",
"from": "concat-map@0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
},
"console-control-strings": {
"version": "1.1.0",
"from": "console-control-strings@>=1.1.0 <1.2.0",
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz"
},
"core-util-is": {
"version": "1.0.2",
"from": "core-util-is@>=1.0.0 <1.1.0",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
},
"cryptiles": {
"version": "2.0.5",
"from": "cryptiles@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
"optional": true
},
"dashdash": {
"version": "1.14.1",
"from": "dashdash@>=1.12.0 <2.0.0",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"optional": true,
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"from": "assert-plus@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"optional": true
}
}
},
"debug": {
"version": "2.2.0",
"from": "debug@>=2.2.0 <2.3.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
"optional": true
},
"deep-extend": {
"version": "0.4.1",
"from": "deep-extend@>=0.4.0 <0.5.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz",
"optional": true
},
"delayed-stream": {
"version": "1.0.0",
"from": "delayed-stream@>=1.0.0 <1.1.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
},
"delegates": {
"version": "1.0.0",
"from": "delegates@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
"optional": true
},
"ecc-jsbn": {
"version": "0.1.1",
"from": "ecc-jsbn@>=0.1.1 <0.2.0",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
"optional": true
},
"escape-string-regexp": {
"version": "1.0.5",
"from": "escape-string-regexp@>=1.0.2 <2.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"optional": true
},
"extend": {
"version": "3.0.0",
"from": "extend@>=3.0.0 <3.1.0",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz",
"optional": true
},
"extsprintf": {
"version": "1.0.2",
"from": "extsprintf@1.0.2",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz"
},
"forever-agent": {
"version": "0.6.1",
"from": "forever-agent@>=0.6.1 <0.7.0",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
"optional": true
},
"form-data": {
"version": "2.1.2",
"from": "form-data@>=2.1.1 <2.2.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.2.tgz",
"optional": true
},
"fs.realpath": {
"version": "1.0.0",
"from": "fs.realpath@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
},
"fstream": {
"version": "1.0.10",
"from": "fstream@>=1.0.2 <2.0.0",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz"
},
"fstream-ignore": {
"version": "1.0.5",
"from": "fstream-ignore@>=1.0.5 <1.1.0",
"resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz",
"optional": true
},
"gauge": {
"version": "2.7.3",
"from": "gauge@>=2.7.1 <2.8.0",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.3.tgz",
"optional": true
},
"generate-function": {
"version": "2.0.0",
"from": "generate-function@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
"optional": true
},
"generate-object-property": {
"version": "1.2.0",
"from": "generate-object-property@>=1.1.0 <2.0.0",
"resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
"optional": true
},
"getpass": {
"version": "0.1.6",
"from": "getpass@>=0.1.1 <0.2.0",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz",
"optional": true,
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"from": "assert-plus@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"optional": true
}
}
},
"glob": {
"version": "7.1.1",
"from": "glob@>=7.0.5 <8.0.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz"
},
"graceful-fs": {
"version": "4.1.11",
"from": "graceful-fs@>=4.1.2 <5.0.0",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz"
},
"graceful-readlink": {
"version": "1.0.1",
"from": "graceful-readlink@>=1.0.0",
"resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
"optional": true
},
"har-validator": {
"version": "2.0.6",
"from": "har-validator@>=2.0.6 <2.1.0",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
"optional": true
},
"has-ansi": {
"version": "2.0.0",
"from": "has-ansi@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"optional": true
},
"has-unicode": {
"version": "2.0.1",
"from": "has-unicode@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
"optional": true
},
"hawk": {
"version": "3.1.3",
"from": "hawk@>=3.1.3 <3.2.0",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
"optional": true
},
"hoek": {
"version": "2.16.3",
"from": "hoek@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz"
},
"http-signature": {
"version": "1.1.1",
"from": "http-signature@>=1.1.0 <1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
"optional": true
},
"inflight": {
"version": "1.0.6",
"from": "inflight@>=1.0.4 <2.0.0",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
},
"inherits": {
"version": "2.0.3",
"from": "inherits@>=2.0.1 <2.1.0",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
},
"ini": {
"version": "1.3.4",
"from": "ini@>=1.3.0 <1.4.0",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz",
"optional": true
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"from": "is-fullwidth-code-point@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"
},
"is-my-json-valid": {
"version": "2.15.0",
"from": "is-my-json-valid@>=2.12.4 <3.0.0",
"resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz",
"optional": true
},
"is-property": {
"version": "1.0.2",
"from": "is-property@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
"optional": true
},
"is-typedarray": {
"version": "1.0.0",
"from": "is-typedarray@>=1.0.0 <1.1.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"optional": true
},
"isarray": {
"version": "1.0.0",
"from": "isarray@>=1.0.0 <1.1.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
},
"isstream": {
"version": "0.1.2",
"from": "isstream@>=0.1.2 <0.2.0",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"optional": true
},
"jodid25519": {
"version": "1.0.2",
"from": "jodid25519@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz",
"optional": true
},
"jsbn": {
"version": "0.1.1",
"from": "jsbn@>=0.1.0 <0.2.0",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"optional": true
},
"json-schema": {
"version": "0.2.3",
"from": "json-schema@0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
"optional": true
},
"json-stringify-safe": {
"version": "5.0.1",
"from": "json-stringify-safe@>=5.0.1 <5.1.0",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"optional": true
},
"jsonpointer": {
"version": "4.0.1",
"from": "jsonpointer@>=4.0.0 <5.0.0",
"resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
"optional": true
},
"jsprim": {
"version": "1.3.1",
"from": "jsprim@>=1.2.2 <2.0.0",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz",
"optional": true
},
"mime-db": {
"version": "1.26.0",
"from": "mime-db@>=1.26.0 <1.27.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.26.0.tgz"
},
"mime-types": {
"version": "2.1.14",
"from": "mime-types@>=2.1.7 <2.2.0",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.14.tgz"
},
"minimatch": {
"version": "3.0.3",
"from": "minimatch@>=3.0.2 <4.0.0",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz"
},
"minimist": {
"version": "0.0.8",
"from": "minimist@0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
},
"mkdirp": {
"version": "0.5.1",
"from": "mkdirp@>=0.5.1 <0.6.0",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"
},
"ms": {
"version": "0.7.1",
"from": "ms@0.7.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
"optional": true
},
"node-pre-gyp": {
"version": "0.6.33",
"from": "node-pre-gyp@>=0.6.29 <0.7.0",
"resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.33.tgz",
"optional": true
},
"nopt": {
"version": "3.0.6",
"from": "nopt@>=3.0.6 <3.1.0",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
"optional": true
},
"npmlog": {
"version": "4.0.2",
"from": "npmlog@>=4.0.1 <5.0.0",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.0.2.tgz",
"optional": true
},
"number-is-nan": {
"version": "1.0.1",
"from": "number-is-nan@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"
},
"oauth-sign": {
"version": "0.8.2",
"from": "oauth-sign@>=0.8.1 <0.9.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
"optional": true
},
"object-assign": {
"version": "4.1.1",
"from": "object-assign@>=4.1.0 <5.0.0",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"optional": true
},
"once": {
"version": "1.4.0",
"from": "once@>=1.3.0 <2.0.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
},
"path-is-absolute": {
"version": "1.0.1",
"from": "path-is-absolute@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
},
"pinkie": {
"version": "2.0.4",
"from": "pinkie@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
"optional": true
},
"pinkie-promise": {
"version": "2.0.1",
"from": "pinkie-promise@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
"optional": true
},
"process-nextick-args": {
"version": "1.0.7",
"from": "process-nextick-args@>=1.0.6 <1.1.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz"
},
"punycode": {
"version": "1.4.1",
"from": "punycode@>=1.4.1 <2.0.0",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"optional": true
},
"qs": {
"version": "6.3.1",
"from": "qs@>=6.3.0 <6.4.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.3.1.tgz",
"optional": true
},
"rc": {
"version": "1.1.7",
"from": "rc@>=1.1.6 <1.2.0",
"resolved": "https://registry.npmjs.org/rc/-/rc-1.1.7.tgz",
"optional": true,
"dependencies": {
"minimist": {
"version": "1.2.0",
"from": "minimist@>=1.2.0 <2.0.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"optional": true
}
}
},
"readable-stream": {
"version": "2.2.2",
"from": "readable-stream@>=2.0.0 <3.0.0||>=1.1.13 <2.0.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz",
"optional": true
},
"request": {
"version": "2.79.0",
"from": "request@>=2.79.0 <3.0.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
"optional": true
},
"rimraf": {
"version": "2.5.4",
"from": "rimraf@>=2.5.4 <2.6.0",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz"
},
"semver": {
"version": "5.3.0",
"from": "semver@>=5.3.0 <5.4.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
"optional": true
},
"set-blocking": {
"version": "2.0.0",
"from": "set-blocking@>=2.0.0 <2.1.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"optional": true
},
"signal-exit": {
"version": "3.0.2",
"from": "signal-exit@>=3.0.0 <4.0.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
"optional": true
},
"sntp": {
"version": "1.0.9",
"from": "sntp@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
"optional": true
},
"sshpk": {
"version": "1.10.2",
"from": "sshpk@>=1.7.0 <2.0.0",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.10.2.tgz",
"optional": true,
"dependencies": {
"assert-plus": {
"version": "1.0.0",
"from": "assert-plus@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"optional": true
}
}
},
"string_decoder": {
"version": "0.10.31",
"from": "string_decoder@>=0.10.0 <0.11.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
},
"string-width": {
"version": "1.0.2",
"from": "string-width@>=1.0.1 <2.0.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"
},
"stringstream": {
"version": "0.0.5",
"from": "stringstream@>=0.0.4 <0.1.0",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
"optional": true
},
"strip-ansi": {
"version": "3.0.1",
"from": "strip-ansi@>=3.0.1 <4.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"
},
"strip-json-comments": {
"version": "2.0.1",
"from": "strip-json-comments@>=2.0.1 <2.1.0",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
"optional": true
},
"supports-color": {
"version": "2.0.0",
"from": "supports-color@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"optional": true
},
"tar": {
"version": "2.2.1",
"from": "tar@>=2.2.1 <2.3.0",
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz"
},
"tar-pack": {
"version": "3.3.0",
"from": "tar-pack@>=3.3.0 <3.4.0",
"resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.3.0.tgz",
"optional": true,
"dependencies": {
"once": {
"version": "1.3.3",
"from": "once@>=1.3.3 <1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
"optional": true
},
"readable-stream": {
"version": "2.1.5",
"from": "readable-stream@>=2.1.4 <2.2.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz",
"optional": true
}
}
},
"tough-cookie": {
"version": "2.3.2",
"from": "tough-cookie@>=2.3.0 <2.4.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz",
"optional": true
},
"tunnel-agent": {
"version": "0.4.3",
"from": "tunnel-agent@>=0.4.1 <0.5.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
"optional": true
},
"tweetnacl": {
"version": "0.14.5",
"from": "tweetnacl@>=0.14.0 <0.15.0",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"optional": true
},
"uid-number": {
"version": "0.0.6",
"from": "uid-number@>=0.0.6 <0.1.0",
"resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz",
"optional": true
},
"util-deprecate": {
"version": "1.0.2",
"from": "util-deprecate@>=1.0.1 <1.1.0",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
},
"uuid": {
"version": "3.0.1",
"from": "uuid@>=3.0.0 <4.0.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz",
"optional": true
},
"verror": {
"version": "1.3.6",
"from": "verror@1.3.6",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz",
"optional": true
},
"wide-align": {
"version": "1.1.0",
"from": "wide-align@>=1.1.0 <2.0.0",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz",
"optional": true
},
"wrappy": {
"version": "1.0.2",
"from": "wrappy@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
},
"xtend": {
"version": "4.0.1",
"from": "xtend@>=4.0.0 <5.0.0",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"optional": true
}
}
},
"fstream": {
"version": "1.0.11",
"from": "fstream@>=1.0.2 <2.0.0",
@@ -6128,6 +5434,11 @@
"from": "he@>=1.1.0 <1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz"
},
"hellojs": {
"version": "1.15.1",
"from": "hellojs@>=1.15.1 <2.0.0",
"resolved": "http://registry.npmjs.org/hellojs/-/hellojs-1.15.1.tgz"
},
"hmac-drbg": {
"version": "1.0.1",
"from": "hmac-drbg@>=1.0.0 <2.0.0",
@@ -7717,7 +7028,7 @@
"lazy-debug-legacy": {
"version": "0.0.1",
"from": "lazy-debug-legacy@>=0.0.0 <0.1.0",
"resolved": "http://registry.npmjs.org/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz"
"resolved": "https://registry.npmjs.org/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz"
},
"lazy-req": {
"version": "1.1.0",

View File

@@ -1,7 +1,7 @@
{
"name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "3.99.0",
"version": "3.102.2",
"main": "./website/server/index.js",
"dependencies": {
"@slack/client": "^3.8.1",
@@ -69,6 +69,7 @@
"gulp-uglify": "^1.4.2",
"gulp.spritesmith": "^4.1.0",
"habitica-markdown": "^1.3.0",
"hellojs": "^1.15.1",
"html-webpack-plugin": "^2.8.1",
"image-size": "~0.3.2",
"in-app-purchase": "^1.1.6",

View File

@@ -1,3 +1,4 @@
import moment from 'moment';
import {
generateUser,
} from '../../../../helpers/api-integration/v3';
@@ -127,4 +128,106 @@ describe('GET /tasks/user', () => {
let allCompletedTodos = await user.get('/tasks/user?type=_allCompletedTodos');
expect(allCompletedTodos.length).to.equal(numberOfTodos);
});
it('returns dailies with isDue for the date specified', async () => {
// @TODO Add required format
let startDate = moment().subtract('1', 'days').toISOString();
let createdTasks = await user.post('/tasks/user', [
{
text: 'test daily',
type: 'daily',
startDate,
frequency: 'daily',
everyX: 2,
},
]);
let dailys = await user.get('/tasks/user?type=dailys');
expect(dailys.length).to.be.at.least(1);
expect(dailys[0]._id).to.equal(createdTasks._id);
expect(dailys[0].isDue).to.be.false;
let dailys2 = await user.get(`/tasks/user?type=dailys&dueDate=${startDate}`);
expect(dailys2[0]._id).to.equal(createdTasks._id);
expect(dailys2[0].isDue).to.be.true;
});
it('returns dailies with isDue for the date specified and will add CDS offset if time is not supplied and assumes timezones', async () => {
let timezone = 420;
await user.update({
'preferences.dayStart': 0,
'preferences.timezoneOffset': timezone,
});
let startDate = moment().zone(timezone).subtract('4', 'days').startOf('day').toISOString();
await user.post('/tasks/user', [
{
text: 'test daily',
type: 'daily',
startDate,
frequency: 'daily',
everyX: 2,
},
]);
let today = moment().format('YYYY-MM-DD');
let dailys = await user.get(`/tasks/user?type=dailys&dueDate=${today}`);
expect(dailys[0].isDue).to.be.true;
let yesterday = moment().subtract('1', 'days').format('YYYY-MM-DD');
let dailys2 = await user.get(`/tasks/user?type=dailys&dueDate=${yesterday}`);
expect(dailys2[0].isDue).to.be.false;
});
it('returns dailies with isDue for the date specified and will add CDS offset if time is not supplied and assumes timezones', async () => {
let timezone = 240;
await user.update({
'preferences.dayStart': 0,
'preferences.timezoneOffset': timezone,
});
let startDate = moment().zone(timezone).subtract('4', 'days').startOf('day').toISOString();
await user.post('/tasks/user', [
{
text: 'test daily',
type: 'daily',
startDate,
frequency: 'daily',
everyX: 2,
},
]);
let today = moment().format('YYYY-MM-DD');
let dailys = await user.get(`/tasks/user?type=dailys&dueDate=${today}`);
expect(dailys[0].isDue).to.be.true;
let yesterday = moment().subtract('1', 'days').format('YYYY-MM-DD');
let dailys2 = await user.get(`/tasks/user?type=dailys&dueDate=${yesterday}`);
expect(dailys2[0].isDue).to.be.false;
});
it('returns dailies with isDue for the date specified and will add CDS offset if time is not supplied and assumes timezones', async () => {
let timezone = 540;
await user.update({
'preferences.dayStart': 0,
'preferences.timezoneOffset': timezone,
});
let startDate = moment().zone(timezone).subtract('4', 'days').startOf('day').toISOString();
await user.post('/tasks/user', [
{
text: 'test daily',
type: 'daily',
startDate,
frequency: 'daily',
everyX: 2,
},
]);
let today = moment().format('YYYY-MM-DD');
let dailys = await user.get(`/tasks/user?type=dailys&dueDate=${today}`);
expect(dailys[0].isDue).to.be.true;
let yesterday = moment().subtract('1', 'days').format('YYYY-MM-DD');
let dailys2 = await user.get(`/tasks/user?type=dailys&dueDate=${yesterday}`);
expect(dailys2[0].isDue).to.be.false;
});
});

View File

@@ -133,6 +133,7 @@ describe('POST /tasks/user', () => {
expect(task.completed).to.equal(false);
expect(task.streak).not.to.equal('never');
expect(task.value).not.to.equal(324);
expect(task.yesterDaily).to.equal(true);
});
it('ignores invalid fields', async () => {

View File

@@ -396,6 +396,7 @@ describe('PUT /tasks/:id', () => {
notes: 'some new notes',
frequency: 'daily',
everyX: 5,
yesterDaily: false,
startDate: moment().add(1, 'days').toDate(),
});
@@ -405,6 +406,7 @@ describe('PUT /tasks/:id', () => {
expect(savedDaily.everyX).to.eql(5);
expect(savedDaily.isDue).to.be.false;
expect(savedDaily.nextDue.length).to.eql(6);
expect(savedDaily.yesterDaily).to.be.false;
});
it('can update checklists (replace it)', async () => {

View File

@@ -79,6 +79,13 @@ describe('cron', () => {
expect(user.purchased.plan.gemsBought).to.equal(0);
});
it('resets plan.gemsBought on a new month if user does not have purchased.plan.dateUpdated', () => {
user.purchased.plan.gemsBought = 10;
user.purchased.plan.dateUpdated = undefined;
cron({user, tasksByType, daysMissed, analytics});
expect(user.purchased.plan.gemsBought).to.equal(0);
});
it('does not reset plan.gemsBought within the month', () => {
let clock = sinon.useFakeTimers(moment().startOf('month').add(2, 'days').unix());
user.purchased.plan.dateUpdated = moment().startOf('month').toDate();
@@ -476,6 +483,25 @@ describe('cron', () => {
expect(progress.down).to.equal(-1);
});
it('should do damage for only yesterday\'s dailies', () => {
daysMissed = 3;
tasksByType.dailys[0].startDate = moment(new Date()).subtract({days: 1});
let daily = {
text: 'test daily',
type: 'daily',
};
let task = new Tasks.daily(Tasks.Task.sanitize(daily)); // eslint-disable-line new-cap
tasksByType.dailys.push(task);
tasksByType.dailys[1].startDate = moment(new Date()).subtract({days: 2});
tasksByType.dailys[1].everyX = 2;
tasksByType.dailys[1].frequency = 'daily';
cron({user, tasksByType, daysMissed, analytics});
expect(user.stats.hp).to.equal(48);
});
});
describe('habits', () => {

View File

@@ -596,7 +596,7 @@ describe('Purchasing a group plan for group', () => {
let updatedUser = await User.findById(recipient._id).exec();
expect(updatedUser.purchased.plan.extraMonths).to.within(7, 8);
expect(updatedUser.purchased.plan.extraMonths).to.within(7, 9);
});
it('adds months to members with existing recurring subscription and ignores existing negative extraMonths', async () => {

View File

@@ -1,63 +1,63 @@
describe('Group Tasks Meta Actions Controller', () => {
let rootScope, scope, user, userSerivce;
beforeEach(() => {
module(function($provide) {
$provide.value('User', {});
});
inject(($rootScope, $controller) => {
rootScope = $rootScope;
user = specHelper.newUser();
user._id = "unique-user-id";
userSerivce = {user: user};
scope = $rootScope.$new();
scope.task = {
group: {
assignedUsers: [],
approval: {
required: false,
}
},
};
scope.task._edit = angular.copy(scope.task);
$controller('GroupTaskActionsCtrl', {$scope: scope, User: userSerivce});
});
});
describe('toggleTaskRequiresApproval', function () {
it('toggles task approval required field from false to true', function () {
scope.toggleTaskRequiresApproval();
expect(scope.task._edit.group.approval.required).to.be.true;
});
it('toggles task approval required field from true to false', function () {
scope.task._edit.group.approval.required = true;
scope.toggleTaskRequiresApproval();
expect(scope.task._edit.group.approval.required).to.be.false;
});
});
describe('assign events', function () {
it('adds a group member to assigned users on "addedGroupMember" event ', () => {
var testId = 'test-id';
rootScope.$broadcast('addedGroupMember', testId);
expect(scope.task.group.assignedUsers).to.contain(testId);
expect(scope.task._edit.group.assignedUsers).to.contain(testId);
});
it('removes a group member to assigned users on "addedGroupMember" event ', () => {
var testId = 'test-id';
scope.task.group.assignedUsers.push(testId);
scope.task._edit.group.assignedUsers.push(testId);
rootScope.$broadcast('removedGroupMember', testId);
expect(scope.task.group.assignedUsers).to.not.contain(testId);
expect(scope.task._edit.group.assignedUsers).to.not.contain(testId);
});
});
});
describe('Group Tasks Meta Actions Controller', () => {
let rootScope, scope, user, userSerivce;
beforeEach(() => {
module(function($provide) {
$provide.value('User', {});
});
inject(($rootScope, $controller) => {
rootScope = $rootScope;
user = specHelper.newUser();
user._id = "unique-user-id";
userSerivce = {user: user};
scope = $rootScope.$new();
scope.task = {
group: {
assignedUsers: [],
approval: {
required: false,
}
},
};
scope.task._edit = angular.copy(scope.task);
$controller('GroupTaskActionsCtrl', {$scope: scope, User: userSerivce});
});
});
describe('toggleTaskRequiresApproval', function () {
it('toggles task approval required field from false to true', function () {
scope.toggleTaskRequiresApproval();
expect(scope.task._edit.group.approval.required).to.be.true;
});
it('toggles task approval required field from true to false', function () {
scope.task._edit.group.approval.required = true;
scope.toggleTaskRequiresApproval();
expect(scope.task._edit.group.approval.required).to.be.false;
});
});
describe('assign events', function () {
it('adds a group member to assigned users on "addedGroupMember" event ', () => {
var testId = 'test-id';
rootScope.$broadcast('addedGroupMember', testId);
expect(scope.task.group.assignedUsers).to.contain(testId);
expect(scope.task._edit.group.assignedUsers).to.contain(testId);
});
it('removes a group member to assigned users on "addedGroupMember" event ', () => {
var testId = 'test-id';
scope.task.group.assignedUsers.push(testId);
scope.task._edit.group.assignedUsers.push(testId);
rootScope.$broadcast('removedGroupMember', testId);
expect(scope.task.group.assignedUsers).to.not.contain(testId);
expect(scope.task._edit.group.assignedUsers).to.not.contain(testId);
});
});
});

View File

@@ -9,7 +9,7 @@ describe('tasks actions', () => {
});
describe('fetchUserTasks', () => {
it('fetches user tasks', async () => {
xit('fetches user tasks', async () => {
expect(store.state.tasks.loadingStatus).to.equal('NOT_LOADED');
const tasks = [{_id: 1}];
sandbox.stub(axios, 'get').withArgs('/api/v3/tasks/user').returns(Promise.resolve({data: {data: tasks}}));
@@ -36,7 +36,7 @@ describe('tasks actions', () => {
expect(store.state.tasks.loadingStatus).to.equal('LOADED');
});
it('can reload tasks if forceLoad is true', async () => {
xit('can reload tasks if forceLoad is true', async () => {
store.state.tasks = {
loadingStatus: 'LOADED',
data: [{_id: 1}],

View File

@@ -1,7 +1,7 @@
import axios from 'axios';
import generateStore from 'client/store';
describe('tasks actions', () => {
describe('user actions', () => {
let store;
beforeEach(() => {

View File

@@ -1,552 +1,540 @@
.promo_android {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -356px;
background-position: -1748px 0px;
width: 175px;
height: 175px;
}
.promo_aquatic_potions {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -982px -148px;
background-position: -589px -148px;
width: 141px;
height: 441px;
}
.promo_backgrounds_armoire_201602 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -704px -1042px;
background-position: -1606px -295px;
width: 141px;
height: 294px;
}
.promo_backgrounds_armoire_201603 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -846px -1042px;
background-position: -1606px -590px;
width: 141px;
height: 294px;
}
.promo_backgrounds_armoire_201604 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1432px -442px;
background-position: -1325px -441px;
width: 140px;
height: 441px;
}
.promo_backgrounds_armoire_201605 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -282px -1042px;
background-position: -987px -894px;
width: 140px;
height: 441px;
}
.promo_backgrounds_armoire_201606 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -699px -148px;
background-position: -306px -148px;
width: 140px;
height: 447px;
}
.promo_backgrounds_armoire_201607 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -559px 0px;
background-position: 0px -305px;
width: 139px;
height: 588px;
}
.promo_backgrounds_armoire_201608 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -423px -1042px;
background-position: -1128px -894px;
width: 140px;
height: 439px;
}
.promo_backgrounds_armoire_201609 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -564px -1042px;
background-position: -1269px -894px;
width: 139px;
height: 438px;
}
.promo_backgrounds_armoire_201610 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1291px -442px;
background-position: -282px -894px;
width: 140px;
height: 441px;
}
.promo_backgrounds_armoire_201611 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1291px 0px;
background-position: -141px -894px;
width: 140px;
height: 441px;
}
.promo_backgrounds_armoire_201612 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1150px -442px;
background-position: 0px -894px;
width: 140px;
height: 441px;
}
.promo_backgrounds_armoire_201701 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1150px 0px;
background-position: -705px -894px;
width: 140px;
height: 441px;
}
.promo_backgrounds_armoire_201702 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -852px -600px;
background-position: -1041px 0px;
width: 141px;
height: 441px;
}
.promo_backgrounds_armoire_201703 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -710px -600px;
background-position: -1041px -442px;
width: 141px;
height: 441px;
}
.promo_backgrounds_armoire_201704 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -840px -148px;
background-position: -1183px 0px;
width: 141px;
height: 441px;
}
.promo_backgrounds_armoire_201705 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -568px -600px;
background-position: -447px -148px;
width: 141px;
height: 441px;
}
.promo_backgrounds_armoire_201706 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -426px -600px;
background-position: -1183px -442px;
width: 141px;
height: 441px;
}
.promo_backgrounds_armoire_201707 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -899px -442px;
width: 141px;
height: 441px;
}
.promo_bees {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -284px -600px;
background-position: -899px 0px;
width: 141px;
height: 441px;
}
.promo_bundle_feathered {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -142px -600px;
background-position: -757px -442px;
width: 141px;
height: 441px;
}
.promo_bundle_splashy {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -757px 0px;
width: 141px;
height: 441px;
}
.promo_burnout {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -306px -295px;
background-position: -306px -596px;
width: 219px;
height: 240px;
}
.promo_chairs_glasses {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1818px -532px;
background-position: -1854px -352px;
width: 51px;
height: 210px;
}
.promo_checkin_incentives {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -988px -1042px;
background-position: -1606px 0px;
width: 141px;
height: 294px;
}
.promo_classes_fall_2014 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -704px -1337px;
background-position: 0px -1484px;
width: 321px;
height: 100px;
}
.promo_classes_fall_2015 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1130px -1190px;
background-position: -823px -1336px;
width: 377px;
height: 99px;
}
.promo_classes_fall_2016 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1573px -442px;
background-position: -1606px -885px;
width: 103px;
height: 348px;
}
.promo_coffee_mug {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px 0px;
background-position: -526px -596px;
width: 200px;
height: 179px;
}
.promo_contrib_spotlight_Keith {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1802px -1477px;
background-position: -1467px -442px;
width: 87px;
height: 111px;
}
.promo_contrib_spotlight_alys {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1803px -1365px;
background-position: -1748px -1318px;
width: 90px;
height: 110px;
}
.promo_contrib_spotlight_beffymaroo {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -806px;
background-position: -1748px -626px;
width: 114px;
height: 147px;
}
.promo_contrib_spotlight_blade {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -1477px;
background-position: -1748px -1429px;
width: 89px;
height: 111px;
}
.promo_contrib_spotlight_cantras {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1573px -900px;
background-position: -1467px -663px;
width: 87px;
height: 109px;
}
.promo_contrib_spotlight_dewines {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1573px -791px;
background-position: -1467px -554px;
width: 89px;
height: 108px;
}
.promo_contrib_spotlight_megan {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1813px -1045px;
background-position: -1748px -1206px;
width: 90px;
height: 111px;
}
.promo_contrib_spotlight_shanaqui {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -1365px;
background-position: -1748px -1094px;
width: 90px;
height: 111px;
}
.promo_cow {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -141px -1042px;
background-position: -564px -894px;
width: 140px;
height: 441px;
}
.promo_cupid_potions {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1573px 0px;
background-position: -1467px 0px;
width: 138px;
height: 441px;
}
.promo_dilatoryDistress {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -182px -1632px;
background-position: -1270px -1484px;
width: 90px;
height: 90px;
}
.promo_egg_mounts {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: 0px -1484px;
background-position: 0px -1336px;
width: 280px;
height: 147px;
}
.promo_enchanted_armoire {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1026px -1337px;
background-position: -1201px -1336px;
width: 374px;
height: 76px;
}
.promo_enchanted_armoire_201507 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1088px -1484px;
background-position: -322px -1484px;
width: 217px;
height: 90px;
}
.promo_enchanted_armoire_201508 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -954px;
background-position: -540px -1484px;
width: 180px;
height: 90px;
}
.promo_enchanted_armoire_201509 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -637px -1632px;
background-position: -1088px -1484px;
width: 90px;
height: 90px;
}
.promo_enchanted_armoire_201511 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -1183px;
background-position: -1748px -912px;
width: 122px;
height: 90px;
}
.promo_enchanted_armoire_201601 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: 0px -1632px;
background-position: -906px -1484px;
width: 90px;
height: 90px;
}
.promo_fairy_potions {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: 0px -600px;
background-position: -140px -305px;
width: 141px;
height: 441px;
}
.promo_floral_potions {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -532px;
background-position: -1748px -352px;
width: 105px;
height: 273px;
}
.promo_ghost_potions {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1432px 0px;
background-position: -846px -894px;
width: 140px;
height: 441px;
}
.promo_habitica {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -180px;
background-position: -1748px -176px;
width: 175px;
height: 175px;
}
.promo_habitica_sticker {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: 0px -295px;
background-position: 0px 0px;
width: 305px;
height: 304px;
}
.promo_habitoween_2016 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: 0px -1042px;
background-position: -423px -894px;
width: 140px;
height: 441px;
}
.promo_haunted_hair {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -1045px;
background-position: -1748px -774px;
width: 100px;
height: 137px;
}
.promo_holly_potions {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -994px -600px;
background-position: -1325px 0px;
width: 141px;
height: 440px;
}
.promo_item_notif {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -838px -1484px;
background-position: 0px -1585px;
width: 249px;
height: 102px;
}
.promo_jackalope {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -561px -1484px;
background-position: -281px -1336px;
width: 276px;
height: 147px;
}
.promo_king_manta {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -558px -1336px;
width: 264px;
height: 147px;
}
.promo_more_checkin_incentives {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -699px 0px;
background-position: -306px 0px;
width: 450px;
height: 147px;
}
.promo_mystery_201405 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -364px -1632px;
background-position: -1543px -1484px;
width: 90px;
height: 90px;
}
.promo_mystery_201406 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1432px -884px;
background-position: -1606px -1234px;
width: 90px;
height: 96px;
}
.promo_mystery_201407 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1870px -669px;
background-position: -1854px -563px;
width: 42px;
height: 62px;
}
.promo_mystery_201408 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1507px -1042px;
background-position: -1839px -1206px;
width: 60px;
height: 71px;
}
.promo_mystery_201409 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1494px -1484px;
background-position: -1634px -1484px;
width: 90px;
height: 90px;
}
.promo_mystery_201410 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1833px -1274px;
background-position: -1839px -1094px;
width: 72px;
height: 63px;
}
.promo_mystery_201411 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -91px -1632px;
background-position: -614px -1585px;
width: 90px;
height: 90px;
}
.promo_mystery_201412 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1870px -602px;
background-position: -1869px -1003px;
width: 42px;
height: 66px;
}
.promo_mystery_201501 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1663px -791px;
background-position: -1863px -708px;
width: 48px;
height: 63px;
}
.promo_mystery_201502 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -910px -1632px;
background-position: -815px -1484px;
width: 90px;
height: 90px;
}
.promo_mystery_201503 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1092px -1632px;
background-position: -1179px -1484px;
width: 90px;
height: 90px;
}
.promo_mystery_201504 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1508px -1190px;
background-position: -1839px -1318px;
width: 60px;
height: 69px;
}
.promo_mystery_201505 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1585px -1484px;
background-position: -1361px -1484px;
width: 90px;
height: 90px;
}
.promo_mystery_201506 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1870px -532px;
background-position: -1871px -912px;
width: 42px;
height: 69px;
}
.promo_mystery_201507 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1573px -1222px;
background-position: -1467px -773px;
width: 90px;
height: 105px;
}
.promo_mystery_201508 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1150px -884px;
background-position: -140px -747px;
width: 93px;
height: 90px;
}
.promo_mystery_201509 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -273px -1632px;
background-position: -250px -1585px;
width: 90px;
height: 90px;
}
.promo_mystery_201510 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1413px -1042px;
background-position: -721px -1484px;
width: 93px;
height: 90px;
}
.promo_mystery_201511 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -455px -1632px;
background-position: -432px -1585px;
width: 90px;
height: 90px;
}
.promo_mystery_201512 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1835px -1183px;
background-position: -1863px -626px;
width: 60px;
height: 81px;
}
.promo_mystery_201601 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -1274px;
background-position: -1748px -1003px;
width: 120px;
height: 90px;
}
.promo_mystery_201602 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -728px -1632px;
background-position: -523px -1585px;
width: 90px;
height: 90px;
}
.promo_mystery_201603 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -819px -1632px;
background-position: -1452px -1484px;
width: 90px;
height: 90px;
}
.promo_mystery_201604 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1306px -1484px;
background-position: -1467px -1076px;
width: 93px;
height: 90px;
}
.promo_mystery_201605 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1001px -1632px;
background-position: -997px -1484px;
width: 90px;
height: 90px;
}
.promo_mystery_201606 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1573px -1010px;
background-position: -1467px -879px;
width: 90px;
height: 105px;
}
.promo_mystery_201607 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -546px -1632px;
background-position: -341px -1585px;
width: 90px;
height: 90px;
}
.promo_mystery_201608 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1400px -1484px;
background-position: -1467px -985px;
width: 93px;
height: 90px;
}
.promo_mystery_201609 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1291px -884px;
background-position: -1467px -1167px;
width: 93px;
height: 90px;
}
.promo_mystery_201610 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1827px -806px;
background-position: -1849px -774px;
width: 63px;
height: 84px;
}
.promo_mystery_201611 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1573px -1328px;
width: 90px;
height: 99px;
}
.promo_mystery_201612 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: 0px 0px;
width: 558px;
height: 294px;
}
.promo_mystery_201701 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1573px -1116px;
width: 90px;
height: 105px;
}
.promo_mystery_201702 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -281px -1484px;
width: 279px;
height: 147px;
}
.promo_mystery_201703 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1130px -1042px;
width: 282px;
height: 147px;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 932 KiB

After

Width:  |  Height:  |  Size: 928 KiB

View File

@@ -1,378 +1,432 @@
.promo_mystery_201611 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1571px -1083px;
width: 90px;
height: 99px;
}
.promo_mystery_201612 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -586px 0px;
width: 558px;
height: 294px;
}
.promo_mystery_201701 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1712px -300px;
width: 90px;
height: 105px;
}
.promo_mystery_201702 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -584px -1538px;
width: 279px;
height: 147px;
}
.promo_mystery_201703 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1040px -1247px;
width: 282px;
height: 147px;
}
.promo_mystery_201704 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -833px -343px;
background-position: -1680px -992px;
width: 90px;
height: 90px;
}
.promo_mystery_201705 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1667px -151px;
background-position: -301px -1538px;
width: 282px;
height: 147px;
}
.promo_mystery_201706 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1547px -1177px;
background-position: -1963px -934px;
width: 111px;
height: 90px;
}
.promo_mystery_3014 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -904px -1517px;
background-position: -1812px -1381px;
width: 217px;
height: 90px;
}
.promo_new_hair_fall2016 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -425px -927px;
background-position: -1429px -442px;
width: 140px;
height: 441px;
}
.promo_orca {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1547px -1026px;
background-position: -1963px -783px;
width: 105px;
height: 105px;
}
.promo_orcas {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1571px -844px;
width: 219px;
height: 147px;
}
.promo_partyhats {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1547px -1268px;
background-position: -1963px -1025px;
width: 115px;
height: 47px;
}
.promo_pastel_skin {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -983px -1369px;
background-position: -1110px -1422px;
width: 330px;
height: 83px;
}
.customize-option.promo_pastel_skin {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1008px -1384px;
background-position: -1135px -1437px;
width: 60px;
height: 60px;
}
.promo_pastel_skin_hair {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -848px -1078px;
background-position: -824px -1096px;
width: 354px;
height: 147px;
}
.customize-option.promo_pastel_skin_hair {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -873px -1093px;
background-position: -849px -1111px;
width: 60px;
height: 60px;
}
.promo_peppermint_flame {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1254px -589px;
background-position: -1953px -1085px;
width: 140px;
height: 147px;
}
.promo_pet_skins {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1249px -927px;
background-position: -1812px -1085px;
width: 140px;
height: 147px;
}
.customize-option.promo_pet_skins {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1274px -942px;
background-position: -1837px -1100px;
width: 60px;
height: 60px;
}
.promo_pyromancer {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1547px -875px;
background-position: -1963px -632px;
width: 113px;
height: 113px;
}
.promo_rainbow_armor {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1875px -1246px;
background-position: -1712px -196px;
width: 92px;
height: 103px;
}
.promo_seafoam {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1287px 0px;
width: 141px;
height: 441px;
}
.promo_seasonal_shop_fall_2016 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1667px -594px;
background-position: -864px -1538px;
width: 279px;
height: 147px;
}
.promo_shimmer_hair {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1314px -1369px;
background-position: -1144px -1538px;
width: 330px;
height: 83px;
}
.promo_shimmer_potions {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: 0px -927px;
background-position: -1429px 0px;
width: 141px;
height: 441px;
}
.promo_shinySeeds {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -142px -927px;
background-position: -1287px -442px;
width: 141px;
height: 441px;
}
.promo_splashy_skins {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -725px -562px;
width: 375px;
height: 186px;
}
.customize-option.promo_splashy_skins {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -750px -577px;
width: 60px;
height: 60px;
}
.promo_splashyskins {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: 0px -1628px;
background-position: -1812px -1472px;
width: 198px;
height: 91px;
}
.customize-option.promo_splashyskins {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -25px -1643px;
background-position: -1837px -1487px;
width: 60px;
height: 60px;
}
.promo_spooky_sparkles_fall_2016 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1667px -299px;
background-position: -1571px -196px;
width: 140px;
height: 294px;
}
.promo_spring_classes_2016 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -620px -1369px;
background-position: -687px -984px;
width: 362px;
height: 102px;
}
.promo_spring_classes_2017 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: 0px -1369px;
background-position: -730px -1247px;
width: 309px;
height: 147px;
}
.promo_springclasses2014 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -326px -1517px;
background-position: -1812px -91px;
width: 288px;
height: 90px;
}
.promo_springclasses2015 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -615px -1517px;
background-position: -1812px 0px;
width: 288px;
height: 90px;
}
.promo_staff_spotlight_Lemoness {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1808px -447px;
background-position: -1963px -330px;
width: 102px;
height: 146px;
}
.promo_staff_spotlight_Viirus {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1547px -573px;
background-position: -1969px -182px;
width: 119px;
height: 147px;
}
.promo_staff_spotlight_paglias {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1547px -724px;
background-position: -1963px -481px;
width: 99px;
height: 147px;
}
.promo_steampunk_3017 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -566px -927px;
background-position: -282px -1096px;
width: 140px;
height: 441px;
}
.promo_summer_classes_2014 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -848px -1226px;
background-position: -257px -984px;
width: 429px;
height: 102px;
}
.promo_summer_classes_2015 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1667px -1427px;
background-position: 0px -1689px;
width: 300px;
height: 88px;
}
.promo_summer_classes_2016 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -848px -927px;
background-position: -423px -1096px;
width: 400px;
height: 150px;
}
.promo_summer_classes_2017 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1254px 0px;
background-position: -1145px 0px;
width: 141px;
height: 588px;
}
.promo_takeThis_gear {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1278px -1226px;
background-position: -1812px -1640px;
width: 114px;
height: 87px;
}
.promo_takethis_armor {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -199px -1628px;
background-position: -1927px -1640px;
width: 114px;
height: 87px;
}
.promo_task_planning {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1396px -181px;
background-position: -1571px 0px;
width: 240px;
height: 195px;
}
.promo_turkey_day_2016 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -284px -927px;
background-position: -141px -1096px;
width: 140px;
height: 441px;
}
.promo_unconventional_armor {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1890px -1149px;
background-position: -1951px -1309px;
width: 60px;
height: 60px;
}
.promo_unconventional_armor2 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1890px -1074px;
background-position: -2030px -1381px;
width: 70px;
height: 74px;
}
.promo_updos {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1808px -299px;
background-position: -1812px -182px;
width: 156px;
height: 147px;
}
.promo_veteran_pets {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1275px -1517px;
background-position: -1951px -1233px;
width: 146px;
height: 75px;
}
.promo_winter_classes_2016 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -932px -782px;
background-position: -749px -1422px;
width: 360px;
height: 90px;
}
.promo_winter_classes_2017 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: 0px -782px;
background-position: -257px -839px;
width: 432px;
height: 144px;
}
.promo_winter_fireworks {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1203px -1078px;
background-position: -1812px -1233px;
width: 138px;
height: 147px;
}
.promo_winterclasses2015 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: 0px -1517px;
background-position: -423px -1422px;
width: 325px;
height: 110px;
}
.promo_wintery_skins {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -707px -927px;
background-position: 0px -1096px;
width: 140px;
height: 441px;
}
.customize-option.promo_wintery_skins {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -732px -942px;
background-position: -25px -1111px;
width: 60px;
height: 60px;
}
.promo_winteryhair {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1122px -1517px;
background-position: -1812px -1564px;
width: 152px;
height: 75px;
}
.avatar_variety {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -433px -782px;
background-position: -690px -839px;
width: 498px;
height: 95px;
}
.npc_viirus {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: 0px -1720px;
background-position: -1571px -992px;
width: 108px;
height: 90px;
}
.party_preview {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: 0px -562px;
background-position: -499px -312px;
width: 451px;
height: 219px;
}
.promo_backtoschool {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1396px -875px;
background-position: -1812px -330px;
width: 150px;
height: 150px;
}
.promo_cooking {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -452px -562px;
background-position: -328px -562px;
width: 396px;
height: 219px;
}
.promo_startingover {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1396px -573px;
background-position: -1812px -783px;
width: 150px;
height: 150px;
}
.promo_valentines {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -310px -1369px;
background-position: -1179px -1096px;
width: 309px;
height: 147px;
}
.promo_working_out {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1667px 0px;
background-position: 0px -1538px;
width: 300px;
height: 150px;
}
.scene_arts_crafts {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -926px -277px;
background-position: 0px -839px;
width: 256px;
height: 256px;
}
.scene_buying_rewards {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1667px -1246px;
background-position: -1571px -663px;
width: 207px;
height: 180px;
}
.scene_coding {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1396px -1026px;
background-position: -1812px -632px;
width: 150px;
height: 150px;
}
.scene_dailies {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -926px 0px;
background-position: 0px -562px;
width: 327px;
height: 276px;
}
.scene_eco_friendly {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1667px -1074px;
background-position: -1571px -491px;
width: 222px;
height: 171px;
}
@@ -390,55 +444,19 @@
}
.scene_habits {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -926px -534px;
background-position: -423px -1247px;
width: 306px;
height: 174px;
}
.scene_meditation {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1396px -724px;
background-position: -1812px -481px;
width: 150px;
height: 150px;
}
.scene_phone_peek {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1396px -1177px;
background-position: -1812px -934px;
width: 150px;
height: 150px;
}
.scene_raking_leaves {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -586px -343px;
width: 246px;
height: 198px;
}
.scene_todos {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1396px -377px;
width: 240px;
height: 195px;
}
.scene_video_games {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -586px 0px;
width: 339px;
height: 342px;
}
.welcome_basic_avatars {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1667px -908px;
width: 246px;
height: 165px;
}
.welcome_promo_party {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1396px 0px;
width: 270px;
height: 180px;
}
.welcome_sample_tasks {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1667px -742px;
width: 246px;
height: 165px;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 961 KiB

After

Width:  |  Height:  |  Size: 996 KiB

View File

@@ -0,0 +1,36 @@
.scene_raking_leaves {
background-image: url(/static/sprites/spritesmith-largeSprites-2.png);
background-position: -340px 0px;
width: 246px;
height: 198px;
}
.scene_todos {
background-image: url(/static/sprites/spritesmith-largeSprites-2.png);
background-position: -587px 0px;
width: 240px;
height: 195px;
}
.scene_video_games {
background-image: url(/static/sprites/spritesmith-largeSprites-2.png);
background-position: 0px 0px;
width: 339px;
height: 342px;
}
.welcome_basic_avatars {
background-image: url(/static/sprites/spritesmith-largeSprites-2.png);
background-position: -271px -343px;
width: 246px;
height: 165px;
}
.welcome_promo_party {
background-image: url(/static/sprites/spritesmith-largeSprites-2.png);
background-position: 0px -343px;
width: 270px;
height: 180px;
}
.welcome_sample_tasks {
background-image: url(/static/sprites/spritesmith-largeSprites-2.png);
background-position: 0px -524px;
width: 246px;
height: 165px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 506 KiB

After

Width:  |  Height:  |  Size: 518 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 KiB

After

Width:  |  Height:  |  Size: 158 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 130 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 161 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 141 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 157 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

After

Width:  |  Height:  |  Size: 147 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 KiB

After

Width:  |  Height:  |  Size: 183 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 KiB

After

Width:  |  Height:  |  Size: 162 KiB

View File

@@ -1,414 +1,492 @@
.Pet-Turtle-Red {
.Pet-Triceratops-Golden {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -82px 0px;
width: 81px;
height: 99px;
}
.Pet-Turtle-Shade {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -492px -400px;
width: 81px;
height: 99px;
}
.Pet-Turtle-Skeleton {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -164px 0px;
width: 81px;
height: 99px;
}
.Pet-Turtle-White {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: 0px -100px;
width: 81px;
height: 99px;
}
.Pet-Turtle-Zombie {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -82px -100px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-Base {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -164px -100px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-CottonCandyBlue {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -246px 0px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-CottonCandyPink {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -246px -100px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-Desert {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: 0px -200px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-Golden {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -82px -200px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-Red {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -164px -200px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-Shade {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -246px -200px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-Skeleton {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -328px 0px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-White {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -328px -100px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-Zombie {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -328px -200px;
width: 81px;
height: 99px;
}
.Pet-Whale-Base {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: 0px -300px;
width: 81px;
height: 99px;
}
.Pet-Whale-CottonCandyBlue {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -82px -300px;
width: 81px;
height: 99px;
}
.Pet-Whale-CottonCandyPink {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -164px -300px;
width: 81px;
height: 99px;
}
.Pet-Whale-Desert {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -246px -300px;
width: 81px;
height: 99px;
}
.Pet-Whale-Golden {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -328px -300px;
width: 81px;
height: 99px;
}
.Pet-Whale-Red {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -410px 0px;
width: 81px;
height: 99px;
}
.Pet-Whale-Shade {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -410px -100px;
width: 81px;
height: 99px;
}
.Pet-Whale-Skeleton {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -410px -200px;
width: 81px;
height: 99px;
}
.Pet-Whale-White {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -410px -300px;
width: 81px;
height: 99px;
}
.Pet-Whale-Zombie {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -492px 0px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Aquatic {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -492px -100px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Base {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -492px -200px;
width: 81px;
height: 99px;
}
.Pet-Wolf-CottonCandyBlue {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -492px -300px;
width: 81px;
height: 99px;
}
.Pet-Wolf-CottonCandyPink {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: 0px -400px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Cupid {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -82px -400px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Desert {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -164px -400px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Fairy {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -246px -400px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Floral {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -328px -400px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Ghost {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -410px -400px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Golden {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: 0px 0px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Holly {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -574px 0px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Peppermint {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -574px -100px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Red {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -574px -200px;
width: 81px;
height: 99px;
}
.Pet-Wolf-RoyalPurple {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -574px -300px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Shade {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -574px -400px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Shimmer {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: 0px -500px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Skeleton {
.Pet-Triceratops-Red {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -82px -500px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Spooky {
.Pet-Triceratops-Shade {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -164px 0px;
width: 81px;
height: 99px;
}
.Pet-Triceratops-Skeleton {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: 0px -100px;
width: 81px;
height: 99px;
}
.Pet-Triceratops-White {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -82px -100px;
width: 81px;
height: 99px;
}
.Pet-Triceratops-Zombie {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -164px -100px;
width: 81px;
height: 99px;
}
.Pet-Turkey-Base {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -246px 0px;
width: 81px;
height: 99px;
}
.Pet-Turkey-Gilded {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -246px -100px;
width: 81px;
height: 99px;
}
.Pet-Turtle-Base {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: 0px -200px;
width: 81px;
height: 99px;
}
.Pet-Turtle-CottonCandyBlue {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -82px -200px;
width: 81px;
height: 99px;
}
.Pet-Turtle-CottonCandyPink {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -164px -200px;
width: 81px;
height: 99px;
}
.Pet-Turtle-Desert {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -246px -200px;
width: 81px;
height: 99px;
}
.Pet-Turtle-Golden {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -328px 0px;
width: 81px;
height: 99px;
}
.Pet-Turtle-Red {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -328px -100px;
width: 81px;
height: 99px;
}
.Pet-Turtle-Shade {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -328px -200px;
width: 81px;
height: 99px;
}
.Pet-Turtle-Skeleton {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: 0px -300px;
width: 81px;
height: 99px;
}
.Pet-Turtle-White {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -82px -300px;
width: 81px;
height: 99px;
}
.Pet-Turtle-Zombie {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -164px -300px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-Base {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -246px -300px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-CottonCandyBlue {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -328px -300px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-CottonCandyPink {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -410px 0px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-Desert {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -410px -100px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-Golden {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -410px -200px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-Red {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -410px -300px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-Shade {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -492px 0px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-Skeleton {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -492px -100px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-White {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -492px -200px;
width: 81px;
height: 99px;
}
.Pet-Unicorn-Zombie {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -492px -300px;
width: 81px;
height: 99px;
}
.Pet-Whale-Base {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: 0px -400px;
width: 81px;
height: 99px;
}
.Pet-Whale-CottonCandyBlue {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -82px -400px;
width: 81px;
height: 99px;
}
.Pet-Whale-CottonCandyPink {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -164px -400px;
width: 81px;
height: 99px;
}
.Pet-Whale-Desert {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -246px -400px;
width: 81px;
height: 99px;
}
.Pet-Whale-Golden {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -328px -400px;
width: 81px;
height: 99px;
}
.Pet-Whale-Red {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -410px -400px;
width: 81px;
height: 99px;
}
.Pet-Whale-Shade {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -492px -400px;
width: 81px;
height: 99px;
}
.Pet-Whale-Skeleton {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -574px 0px;
width: 81px;
height: 99px;
}
.Pet-Whale-White {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -574px -100px;
width: 81px;
height: 99px;
}
.Pet-Whale-Zombie {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -574px -200px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Aquatic {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -574px -300px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Base {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -574px -400px;
width: 81px;
height: 99px;
}
.Pet-Wolf-CottonCandyBlue {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: 0px -500px;
width: 81px;
height: 99px;
}
.Pet-Wolf-CottonCandyPink {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: 0px 0px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Cupid {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -164px -500px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Thunderstorm {
.Pet-Wolf-Desert {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -246px -500px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Veteran {
.Pet-Wolf-Fairy {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -328px -500px;
width: 81px;
height: 99px;
}
.Pet-Wolf-White {
.Pet-Wolf-Floral {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -410px -500px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Zombie {
.Pet-Wolf-Ghost {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -492px -500px;
width: 81px;
height: 99px;
}
.Pet_HatchingPotion_Aquatic {
.Pet-Wolf-Golden {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -574px -500px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Holly {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -656px 0px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Peppermint {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -656px -100px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Red {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -656px -200px;
width: 81px;
height: 99px;
}
.Pet-Wolf-RoyalPurple {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -656px -300px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Shade {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -656px -400px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Shimmer {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -656px -500px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Skeleton {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: 0px -600px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Spooky {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -82px -600px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Thunderstorm {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -164px -600px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Veteran {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -246px -600px;
width: 81px;
height: 99px;
}
.Pet-Wolf-White {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -328px -600px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Zombie {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -410px -600px;
width: 81px;
height: 99px;
}
.Pet_HatchingPotion_Aquatic {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -541px -600px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_Base {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -490px -600px;
background-position: -738px -312px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_CottonCandyBlue {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -49px -600px;
background-position: -590px -600px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_CottonCandyPink {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -98px -600px;
background-position: -639px -600px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_Cupid {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -147px -600px;
background-position: -688px -600px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_Desert {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -196px -600px;
background-position: -738px 0px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_Fairy {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -245px -600px;
background-position: -738px -52px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_Floral {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -294px -600px;
background-position: -738px -104px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_Ghost {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -343px -600px;
background-position: -738px -156px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_Golden {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -392px -600px;
background-position: -738px -208px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_Holly {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -441px -600px;
background-position: -738px -260px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_Peppermint {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -574px -500px;
background-position: -492px -600px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_Purple {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -539px -600px;
background-position: -738px -364px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_Red {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -588px -600px;
background-position: -738px -416px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_RoyalPurple {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -656px 0px;
background-position: -738px -468px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_Shade {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -656px -52px;
background-position: -738px -520px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_Shimmer {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -656px -104px;
background-position: -738px -572px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_Skeleton {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -656px -156px;
background-position: -738px -624px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_Spooky {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -656px -208px;
background-position: 0px -700px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_Thunderstorm {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -656px -260px;
background-position: -49px -700px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_White {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -656px -312px;
background-position: -98px -700px;
width: 48px;
height: 51px;
}
.Pet_HatchingPotion_Zombie {
background-image: url(/static/sprites/spritesmith-main-18.png);
background-position: -656px -364px;
background-position: -147px -700px;
width: 48px;
height: 51px;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 36 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 64 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 59 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

After

Width:  |  Height:  |  Size: 109 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 154 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

After

Width:  |  Height:  |  Size: 150 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

After

Width:  |  Height:  |  Size: 158 KiB

View File

@@ -1,18 +1,30 @@
.seasonalshop_open {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1932px -1138px;
width: 162px;
height: 138px;
}
.quest_TEMPLATE_FOR_MISSING_IMAGE {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -459px -1513px;
background-position: -422px -1513px;
width: 221px;
height: 39px;
}
.quest_armadillo {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -880px -892px;
width: 219px;
height: 219px;
}
.quest_atom1 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: 0px -1513px;
background-position: -862px -1326px;
width: 250px;
height: 150px;
}
.quest_atom2 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -251px -1513px;
background-position: -214px -1513px;
width: 207px;
height: 138px;
}
@@ -30,13 +42,13 @@
}
.quest_basilist {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1932px -570px;
background-position: -1932px -392px;
width: 189px;
height: 141px;
}
.quest_beetle {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -442px -1112px;
background-position: -1540px -1079px;
width: 204px;
height: 201px;
}
@@ -72,19 +84,19 @@
}
.quest_dilatoryDistress1 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1540px -1085px;
background-position: -1540px -868px;
width: 210px;
height: 210px;
}
.quest_dilatoryDistress2 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1932px -1014px;
background-position: -1932px -836px;
width: 150px;
height: 150px;
}
.quest_dilatoryDistress3 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -880px -440px;
background-position: -880px -220px;
width: 219px;
height: 219px;
}
@@ -96,37 +108,37 @@
}
.quest_dustbunnies {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: 0px -672px;
background-position: -880px -440px;
width: 219px;
height: 219px;
}
.quest_egg {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1932px -362px;
background-position: -1932px -184px;
width: 165px;
height: 207px;
}
.quest_evilsanta {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1932px -1316px;
background-position: -1932px -1277px;
width: 118px;
height: 131px;
}
.quest_evilsanta2 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -660px -672px;
background-position: -220px -672px;
width: 219px;
height: 219px;
}
.quest_falcon {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -880px -672px;
background-position: -440px -672px;
width: 219px;
height: 219px;
}
.quest_ferret {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1100px 0px;
background-position: -660px -672px;
width: 219px;
height: 219px;
}
@@ -138,19 +150,19 @@
}
.quest_ghost_stag {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1100px -440px;
background-position: -1100px 0px;
width: 219px;
height: 219px;
}
.quest_goldenknight1 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1100px -660px;
background-position: -1100px -220px;
width: 219px;
height: 219px;
}
.quest_goldenknight2 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1330px -1326px;
background-position: -1113px -1326px;
width: 250px;
height: 150px;
}
@@ -168,55 +180,55 @@
}
.quest_guineapig {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -660px -892px;
background-position: -1100px -660px;
width: 219px;
height: 219px;
}
.quest_harpy {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -880px -892px;
background-position: -220px 0px;
width: 219px;
height: 219px;
}
.quest_hedgehog {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -647px -1112px;
background-position: -442px -1112px;
width: 219px;
height: 186px;
}
.quest_horse {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1320px 0px;
background-position: -440px -892px;
width: 219px;
height: 219px;
}
.quest_kraken {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -645px -1326px;
background-position: -885px -1112px;
width: 216px;
height: 177px;
}
.quest_mayhemMistiflying1 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1932px -1165px;
background-position: -1932px -987px;
width: 150px;
height: 150px;
}
.quest_mayhemMistiflying2 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1320px -660px;
background-position: -1100px -892px;
width: 219px;
height: 219px;
}
.quest_mayhemMistiflying3 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -220px 0px;
background-position: -1320px 0px;
width: 219px;
height: 219px;
}
.quest_monkey {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1320px -880px;
background-position: -1320px -220px;
width: 219px;
height: 219px;
}
@@ -228,103 +240,103 @@
}
.quest_moon2 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1320px -440px;
background-position: -1320px -660px;
width: 219px;
height: 219px;
}
.quest_moon3 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1320px -220px;
background-position: -1320px -440px;
width: 219px;
height: 219px;
}
.quest_moonstone1 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1100px -892px;
background-position: -660px -892px;
width: 219px;
height: 219px;
}
.quest_moonstone2 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -440px -892px;
background-position: -220px -892px;
width: 219px;
height: 219px;
}
.quest_moonstone3 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: 0px -892px;
background-position: -880px -672px;
width: 219px;
height: 219px;
}
.quest_nudibranch {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1540px 0px;
background-position: -1540px -434px;
width: 216px;
height: 216px;
}
.quest_octopus {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -867px -1112px;
background-position: -662px -1112px;
width: 222px;
height: 177px;
}
.quest_owl {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1100px -220px;
background-position: -880px 0px;
width: 219px;
height: 219px;
}
.quest_peacock {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1540px -434px;
background-position: -1320px -880px;
width: 216px;
height: 216px;
}
.quest_penguin {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1932px -178px;
background-position: -1932px 0px;
width: 190px;
height: 183px;
}
.quest_rat {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -440px -672px;
background-position: -440px -232px;
width: 219px;
height: 219px;
}
.quest_rock {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1540px -868px;
background-position: -1540px -651px;
width: 216px;
height: 216px;
}
.quest_rooster {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: 0px -1664px;
background-position: 0px -1513px;
width: 213px;
height: 174px;
}
.quest_sabretooth {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -220px -672px;
background-position: -440px 0px;
width: 219px;
height: 219px;
}
.quest_sheep {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -880px -220px;
background-position: -1100px -440px;
width: 219px;
height: 219px;
}
.quest_slime {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -880px 0px;
background-position: -220px -232px;
width: 219px;
height: 219px;
}
.quest_sloth {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -220px -452px;
background-position: -660px 0px;
width: 219px;
height: 219px;
}
@@ -336,79 +348,67 @@
}
.quest_snake {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1090px -1112px;
background-position: -1102px -1112px;
width: 216px;
height: 177px;
}
.quest_spider {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1079px -1326px;
background-position: -1364px -1326px;
width: 250px;
height: 150px;
}
.quest_stoikalmCalamity1 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1932px -712px;
background-position: -1932px -685px;
width: 150px;
height: 150px;
}
.quest_stoikalmCalamity2 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -660px 0px;
background-position: 0px -672px;
width: 219px;
height: 219px;
}
.quest_stoikalmCalamity3 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -440px -232px;
background-position: -220px -452px;
width: 219px;
height: 219px;
}
.quest_taskwoodsTerror1 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1932px -863px;
background-position: -1932px -534px;
width: 150px;
height: 150px;
}
.quest_taskwoodsTerror2 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1540px -651px;
background-position: -1540px 0px;
width: 216px;
height: 216px;
}
.quest_taskwoodsTerror3 {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -220px -232px;
background-position: 0px -892px;
width: 219px;
height: 219px;
}
.quest_treeling {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1307px -1112px;
background-position: -1319px -1112px;
width: 216px;
height: 177px;
}
.quest_trex {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -1932px 0px;
background-position: 0px -1688px;
width: 204px;
height: 177px;
}
.quest_trex_undead {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -862px -1326px;
background-position: -645px -1326px;
width: 216px;
height: 177px;
}
.quest_triceratops {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -440px 0px;
width: 219px;
height: 219px;
}
.quest_turtle {
background-image: url(/static/sprites/spritesmith-main-8.png);
background-position: -220px -892px;
width: 219px;
height: 219px;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 455 KiB

After

Width:  |  Height:  |  Size: 456 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 221 KiB

After

Width:  |  Height:  |  Size: 225 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 701 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 771 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 739 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 800 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 681 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -91,8 +91,8 @@
height: 10.5em
width: 100%
// Covers avatars, health bar at 1005-768. Fix:
@media (max-width: 1005px) and (min-width: 768px)
// Covers avatars, health bar at 1005-768. Fix:
@media (max-width: 1005px) and (min-width: 768px)
margin-top: 2.8em;
// this is a wrapper for avatars in the header

View File

@@ -1,43 +1,43 @@
"use strict";
/*
A controller to manage the Group Plans page
*/
angular.module('habitrpg')
.controller("GroupPlansCtrl", ['$scope', '$window', 'Groups', 'Payments',
function($scope, $window, Groups, Payments) {
$scope.PAGES = {
BENEFITS: 'benefits',
CREATE_GROUP: 'create-group',
UPGRADE_GROUP: 'upgrade-group',
};
$scope.activePage = $scope.PAGES.BENEFITS;
$scope.newGroup = {
type: 'guild',
privacy: 'private',
};
$scope.PAYMENTS = {
AMAZON: 'amazon',
STRIPE: 'stripe',
};
$scope.changePage = function (page) {
$scope.activePage = page;
$window.scrollTo(0, 0);
};
$scope.newGroupIsReady = function () {
return !!$scope.newGroup.name;
};
$scope.createGroup = function () {
$scope.changePage($scope.PAGES.UPGRADE_GROUP);
};
$scope.upgradeGroup = function (paymentType) {
var subscriptionKey = 'group_monthly'; // @TODO: Get from content API?
if (paymentType === $scope.PAYMENTS.STRIPE) Payments.showStripe({subscription: subscriptionKey, coupon: null, groupToCreate: $scope.newGroup});
if (paymentType === $scope.PAYMENTS.AMAZON) Payments.amazonPayments.init({type: 'subscription', subscription: subscriptionKey, coupon: null, groupToCreate: $scope.newGroup});
};
}]);
"use strict";
/*
A controller to manage the Group Plans page
*/
angular.module('habitrpg')
.controller("GroupPlansCtrl", ['$scope', '$window', 'Groups', 'Payments',
function($scope, $window, Groups, Payments) {
$scope.PAGES = {
BENEFITS: 'benefits',
CREATE_GROUP: 'create-group',
UPGRADE_GROUP: 'upgrade-group',
};
$scope.activePage = $scope.PAGES.BENEFITS;
$scope.newGroup = {
type: 'guild',
privacy: 'private',
};
$scope.PAYMENTS = {
AMAZON: 'amazon',
STRIPE: 'stripe',
};
$scope.changePage = function (page) {
$scope.activePage = page;
$window.scrollTo(0, 0);
};
$scope.newGroupIsReady = function () {
return !!$scope.newGroup.name;
};
$scope.createGroup = function () {
$scope.changePage($scope.PAGES.UPGRADE_GROUP);
};
$scope.upgradeGroup = function (paymentType) {
var subscriptionKey = 'group_monthly'; // @TODO: Get from content API?
if (paymentType === $scope.PAYMENTS.STRIPE) Payments.showStripe({subscription: subscriptionKey, coupon: null, groupToCreate: $scope.newGroup});
if (paymentType === $scope.PAYMENTS.AMAZON) Payments.amazonPayments.init({type: 'subscription', subscription: subscriptionKey, coupon: null, groupToCreate: $scope.newGroup});
};
}]);

View File

@@ -1,8 +1,83 @@
'use strict';
habitrpg.controller('NotificationCtrl',
['$scope', '$rootScope', 'Shared', 'Content', 'User', 'Guide', 'Notification', 'Analytics', 'Achievement', 'Social', 'Tasks',
function ($scope, $rootScope, Shared, Content, User, Guide, Notification, Analytics, Achievement, Social, Tasks) {
['$scope', '$rootScope', 'Shared', 'Content', 'User', 'Guide', 'Notification', 'Analytics', 'Achievement', 'Social', 'Tasks', '$modal',
function ($scope, $rootScope, Shared, Content, User, Guide, Notification, Analytics, Achievement, Social, Tasks, $modal) {
var isRunningYesterdailies = false;
$rootScope.$watch('user', function (after, before) {
runYesterDailies();
});
$rootScope.$on('userUpdated', function (after, before) {
runYesterDailies();
});
function runYesterDailies() {
if (isRunningYesterdailies) return;
var userLastCron = moment(User.user.lastCron).local();
var userDayStart = moment().startOf('day').add({ hours: User.user.preferences.dayStart });
if (!User.user.needsCron) return;
var dailys = User.user.dailys;
if (!$rootScope.appLoaded) return;
isRunningYesterdailies = true;
var yesterDay = moment().subtract('1', 'day').startOf('day').add({ hours: User.user.preferences.dayStart });
var yesterDailies = [];
dailys.forEach(function (task) {
if (task && task.group.approval && task.group.approval.requested) return;
if (task.completed) return;
var shouldDo = Shared.shouldDo(yesterDay, task);
if (task.yesterDaily && shouldDo) yesterDailies.push(task);
});
if (yesterDailies.length === 0) {
User.runCron().then(function () {
isRunningYesterdailies = false;
});
return;
};
var modalScope = $rootScope.$new();
modalScope.obj = User.user;
modalScope.taskList = yesterDailies;
modalScope.list = {
showCompleted: false,
type: 'daily',
};
modalScope.processingYesterdailies = true;
$scope.yesterDailiesModalOpen = true;
$modal.open({
templateUrl: 'modals/yesterDailies.html',
scope: modalScope,
backdrop: 'static',
controller: ['$scope', 'Tasks', 'User', '$rootScope', function ($scope, Tasks, User, $rootScope) {
$rootScope.$on('task:scored', function (event, data) {
var task = data.task;
var indexOfTask = _.findIndex($scope.taskList, function (taskInList) {
return taskInList._id === task._id;
});
if (!$scope.taskList[indexOfTask]) return;
$scope.taskList[indexOfTask].group.approval.requested = task.group.approval.requested;
if ($scope.taskList[indexOfTask].group.approval.requested) return;
$scope.taskList[indexOfTask].completed = task.completed;
});
$scope.ageDailies = function () {
User.runCron()
.then(function () {
isRunningYesterdailies = false;
});
};
}],
});
}
$rootScope.$watch('user.stats.hp', function (after, before) {
if (after <= 0){

View File

@@ -36,6 +36,9 @@ habitrpg.controller("TasksCtrl", ['$scope', '$rootScope', '$location', 'User','N
},
});
Analytics.updateUser();
if (task.group.approval.required) task.group.approval.requested = true;
$rootScope.$broadcast('task:scored', {task: task});
}
$scope.score = function(task, direction) {

View File

@@ -9,9 +9,10 @@
'$state',
'User',
'$rootScope',
'Tasks',
];
function taskList($state, User, $rootScope) {
function taskList($state, User, $rootScope, Tasks) {
return {
restrict: 'EA',
templateUrl: 'templates/task-list.html',
@@ -24,6 +25,11 @@
// user: "=",
// },
link: function($scope, element, attrs) {
$scope.checklistCompletion = Tasks.checklistCompletion;
$scope.completeChecklistItem = function completeChecklistItem(task) {
User.updateTask(task, {body: task});
};
// @TODO: The use of scope with tasks is incorrect. We need to fix all task ctrls to use directives/services
// $scope.obj = {};
function setObj (obj, force) {
@@ -95,4 +101,4 @@
}
}
}
}());
}());

View File

@@ -17,7 +17,7 @@
scope: true,
link: function($scope, element, attrs) {
$scope.getClasses = function (task, user, list, main) {
return Shared.taskClasses(task, user.filters, user.preferences.dayStart, user.lastCron, list.showCompleted, main);
return Shared.taskClasses(task, user.filters, user.preferences.dayStart, user.lastCron, list.showCompleted, main, $scope.processingYesterdailies);
}
$scope.showNoteDetails = function (task) {

View File

@@ -326,11 +326,23 @@ function($rootScope, User, $http, Content) {
paymentMethod = paymentMethod.toLowerCase();
}
var cancelUrl = '/' + paymentMethod + '/subscribe/cancel?_id=' + User.user._id + '&apiToken=' + User.settings.auth.apiToken;
var queryParams = {
_id: User.user._id,
apiToken: User.settings.auth.apiToken,
noRedirect: true,
};
if (group) {
cancelUrl += '&groupId=' + group._id;
queryParams.groupId = group._id;
}
window.location.href = cancelUrl;
var cancelUrl = '/' + paymentMethod + '/subscribe/cancel?' + $.param(queryParams);
$http.get(cancelUrl)
.then(function (success) {
alert(window.evn.t('paypalCanceled'));
window.location.href = '/';
});
}
Payments.encodeGift = function(uuid, gift) {

View File

@@ -417,6 +417,16 @@ angular.module('habitrpg')
});
},
runCron: function () {
return $http({
method: "POST",
url: 'api/v3/cron',
})
.then(function (response) {
return sync();
})
},
setCustomDayStart: function (dayStart) {
$http({
method: "POST",

View File

@@ -1,20 +1,20 @@
#Running
- Open a terminal and type `npm run client:dev`
- Open a second terminal and type `npm start`
#Preparation Reading
- Vue 2 (https://vuejs.org)
- Webpack (https://webpack.github.io/) is the build system and it includes plugins for code transformation, right now we have: BabelJS for ES6 transpilation, eslint for code style, less and postcss for css compilation. The code comes from https://github.com/vuejs-templates/webpack which is a Webpack template for Vue, with some small modifications to adapt it to our use case. Docs http://vuejs-templates.github.io/webpack/
- Were using `.vue` files that make it possible to have HTML, JS and CSS for each component together in a single location. Theyre implemented as a webpack plugin and the docs can be found here http://vue-loader.vuejs.org/en/
- SemanticUI is the UI framework http://semantic-ui.com/. So far Ive only used the CSS part, it also has JS plugins but Ive yet to use them. It supports theming so if its not too difficult well want to customize the base theme with our own styles instead of writing CSS rules to override the original styling.
The code is in `/website/client`. Were using something very similar to Vuex (equivalent of Reacts Redux) for state management http://vuex.vuejs.org/en/index.html
The API is almost the same except that we dont use mutations but only actions because it would make it difficult to work with common code
The project is developed directly in the `develop` branch as long as well be able to avoid splitting it into a different branch.
So far most of the work has been on the template, so theres no complex logic to understand. The only thing I would suggest you to read about is Vuex for data management: its basically a Flux implementation: theres a central store that hold the data for the entire app, and every change to the data must happen through an action, the data cannot be mutated directly.
#Running
- Open a terminal and type `npm run client:dev`
- Open a second terminal and type `npm start`
#Preparation Reading
- Vue 2 (https://vuejs.org)
- Webpack (https://webpack.github.io/) is the build system and it includes plugins for code transformation, right now we have: BabelJS for ES6 transpilation, eslint for code style, less and postcss for css compilation. The code comes from https://github.com/vuejs-templates/webpack which is a Webpack template for Vue, with some small modifications to adapt it to our use case. Docs http://vuejs-templates.github.io/webpack/
- Were using `.vue` files that make it possible to have HTML, JS and CSS for each component together in a single location. Theyre implemented as a webpack plugin and the docs can be found here http://vue-loader.vuejs.org/en/
- SemanticUI is the UI framework http://semantic-ui.com/. So far Ive only used the CSS part, it also has JS plugins but Ive yet to use them. It supports theming so if its not too difficult well want to customize the base theme with our own styles instead of writing CSS rules to override the original styling.
The code is in `/website/client`. Were using something very similar to Vuex (equivalent of Reacts Redux) for state management http://vuex.vuejs.org/en/index.html
The API is almost the same except that we dont use mutations but only actions because it would make it difficult to work with common code
The project is developed directly in the `develop` branch as long as well be able to avoid splitting it into a different branch.
So far most of the work has been on the template, so theres no complex logic to understand. The only thing I would suggest you to read about is Vuex for data management: its basically a Flux implementation: theres a central store that hold the data for the entire app, and every change to the data must happen through an action, the data cannot be mutated directly.

View File

@@ -1,16 +1,20 @@
<!-- Entry point component for the entire app -->
<template lang="pug">
#app
app-menu
.container-fluid
app-header
router-view
router-view(v-if="!isUserLoggedIn || isStaticPage")
template(v-else)
#loading-screen.h-100.w-100.d-flex.justify-content-center.align-items-center(v-if="!isUserLoaded")
p Loading...
template(v-else)
app-menu
.container-fluid
app-header
router-view
</template>
<script>
import AppMenu from './components/appMenu';
import AppHeader from './components/appHeader';
import { mapState } from 'client/libs/store';
export default {
name: 'app',
@@ -18,9 +22,38 @@ export default {
AppMenu,
AppHeader,
},
data () {
return {
isUserLoaded: false,
};
},
computed: {
...mapState(['isUserLoggedIn']),
isStaticPage () {
return this.$route.meta.requiresLogin === false ? true : false;
},
},
created () {
// Setup listener for title
this.$store.watch(state => state.title, (title) => {
document.title = title;
});
if (this.isUserLoggedIn && !this.isStaticPage) {
// Load the user and the user tasks
Promise.all([
this.$store.dispatch('user:fetch'),
this.$store.dispatch('tasks:fetchUserTasks'),
]).then(() => {
this.isUserLoaded = true;
}).catch((err) => {
console.error('Impossible to fetch user. Clean up localStorage and refresh.', err); // eslint-disable-line no-console
});
}
},
};
</script>
<style src="bootstrap/scss/bootstrap.scss" lang="scss"></style>
<style src="assets/scss/index.scss" lang="scss"></style>
<style src="assets/css/index.css"></style>
<style src="assets/css/index.css"></style>

View File

@@ -1,552 +1,540 @@
.promo_android {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -356px;
background-position: -1748px 0px;
width: 175px;
height: 175px;
}
.promo_aquatic_potions {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -982px -148px;
background-position: -589px -148px;
width: 141px;
height: 441px;
}
.promo_backgrounds_armoire_201602 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -704px -1042px;
background-position: -1606px -295px;
width: 141px;
height: 294px;
}
.promo_backgrounds_armoire_201603 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -846px -1042px;
background-position: -1606px -590px;
width: 141px;
height: 294px;
}
.promo_backgrounds_armoire_201604 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1432px -442px;
background-position: -1325px -441px;
width: 140px;
height: 441px;
}
.promo_backgrounds_armoire_201605 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -282px -1042px;
background-position: -987px -894px;
width: 140px;
height: 441px;
}
.promo_backgrounds_armoire_201606 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -699px -148px;
background-position: -306px -148px;
width: 140px;
height: 447px;
}
.promo_backgrounds_armoire_201607 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -559px 0px;
background-position: 0px -305px;
width: 139px;
height: 588px;
}
.promo_backgrounds_armoire_201608 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -423px -1042px;
background-position: -1128px -894px;
width: 140px;
height: 439px;
}
.promo_backgrounds_armoire_201609 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -564px -1042px;
background-position: -1269px -894px;
width: 139px;
height: 438px;
}
.promo_backgrounds_armoire_201610 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1291px -442px;
background-position: -282px -894px;
width: 140px;
height: 441px;
}
.promo_backgrounds_armoire_201611 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1291px 0px;
background-position: -141px -894px;
width: 140px;
height: 441px;
}
.promo_backgrounds_armoire_201612 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1150px -442px;
background-position: 0px -894px;
width: 140px;
height: 441px;
}
.promo_backgrounds_armoire_201701 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1150px 0px;
background-position: -705px -894px;
width: 140px;
height: 441px;
}
.promo_backgrounds_armoire_201702 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -852px -600px;
background-position: -1041px 0px;
width: 141px;
height: 441px;
}
.promo_backgrounds_armoire_201703 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -710px -600px;
background-position: -1041px -442px;
width: 141px;
height: 441px;
}
.promo_backgrounds_armoire_201704 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -840px -148px;
background-position: -1183px 0px;
width: 141px;
height: 441px;
}
.promo_backgrounds_armoire_201705 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -568px -600px;
background-position: -447px -148px;
width: 141px;
height: 441px;
}
.promo_backgrounds_armoire_201706 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -426px -600px;
background-position: -1183px -442px;
width: 141px;
height: 441px;
}
.promo_backgrounds_armoire_201707 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -899px -442px;
width: 141px;
height: 441px;
}
.promo_bees {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -284px -600px;
background-position: -899px 0px;
width: 141px;
height: 441px;
}
.promo_bundle_feathered {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -142px -600px;
background-position: -757px -442px;
width: 141px;
height: 441px;
}
.promo_bundle_splashy {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -757px 0px;
width: 141px;
height: 441px;
}
.promo_burnout {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -306px -295px;
background-position: -306px -596px;
width: 219px;
height: 240px;
}
.promo_chairs_glasses {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1818px -532px;
background-position: -1854px -352px;
width: 51px;
height: 210px;
}
.promo_checkin_incentives {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -988px -1042px;
background-position: -1606px 0px;
width: 141px;
height: 294px;
}
.promo_classes_fall_2014 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -704px -1337px;
background-position: 0px -1484px;
width: 321px;
height: 100px;
}
.promo_classes_fall_2015 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1130px -1190px;
background-position: -823px -1336px;
width: 377px;
height: 99px;
}
.promo_classes_fall_2016 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1573px -442px;
background-position: -1606px -885px;
width: 103px;
height: 348px;
}
.promo_coffee_mug {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px 0px;
background-position: -526px -596px;
width: 200px;
height: 179px;
}
.promo_contrib_spotlight_Keith {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1802px -1477px;
background-position: -1467px -442px;
width: 87px;
height: 111px;
}
.promo_contrib_spotlight_alys {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1803px -1365px;
background-position: -1748px -1318px;
width: 90px;
height: 110px;
}
.promo_contrib_spotlight_beffymaroo {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -806px;
background-position: -1748px -626px;
width: 114px;
height: 147px;
}
.promo_contrib_spotlight_blade {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -1477px;
background-position: -1748px -1429px;
width: 89px;
height: 111px;
}
.promo_contrib_spotlight_cantras {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1573px -900px;
background-position: -1467px -663px;
width: 87px;
height: 109px;
}
.promo_contrib_spotlight_dewines {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1573px -791px;
background-position: -1467px -554px;
width: 89px;
height: 108px;
}
.promo_contrib_spotlight_megan {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1813px -1045px;
background-position: -1748px -1206px;
width: 90px;
height: 111px;
}
.promo_contrib_spotlight_shanaqui {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -1365px;
background-position: -1748px -1094px;
width: 90px;
height: 111px;
}
.promo_cow {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -141px -1042px;
background-position: -564px -894px;
width: 140px;
height: 441px;
}
.promo_cupid_potions {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1573px 0px;
background-position: -1467px 0px;
width: 138px;
height: 441px;
}
.promo_dilatoryDistress {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -182px -1632px;
background-position: -1270px -1484px;
width: 90px;
height: 90px;
}
.promo_egg_mounts {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: 0px -1484px;
background-position: 0px -1336px;
width: 280px;
height: 147px;
}
.promo_enchanted_armoire {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1026px -1337px;
background-position: -1201px -1336px;
width: 374px;
height: 76px;
}
.promo_enchanted_armoire_201507 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1088px -1484px;
background-position: -322px -1484px;
width: 217px;
height: 90px;
}
.promo_enchanted_armoire_201508 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -954px;
background-position: -540px -1484px;
width: 180px;
height: 90px;
}
.promo_enchanted_armoire_201509 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -637px -1632px;
background-position: -1088px -1484px;
width: 90px;
height: 90px;
}
.promo_enchanted_armoire_201511 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -1183px;
background-position: -1748px -912px;
width: 122px;
height: 90px;
}
.promo_enchanted_armoire_201601 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: 0px -1632px;
background-position: -906px -1484px;
width: 90px;
height: 90px;
}
.promo_fairy_potions {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: 0px -600px;
background-position: -140px -305px;
width: 141px;
height: 441px;
}
.promo_floral_potions {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -532px;
background-position: -1748px -352px;
width: 105px;
height: 273px;
}
.promo_ghost_potions {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1432px 0px;
background-position: -846px -894px;
width: 140px;
height: 441px;
}
.promo_habitica {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -180px;
background-position: -1748px -176px;
width: 175px;
height: 175px;
}
.promo_habitica_sticker {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: 0px -295px;
background-position: 0px 0px;
width: 305px;
height: 304px;
}
.promo_habitoween_2016 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: 0px -1042px;
background-position: -423px -894px;
width: 140px;
height: 441px;
}
.promo_haunted_hair {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -1045px;
background-position: -1748px -774px;
width: 100px;
height: 137px;
}
.promo_holly_potions {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -994px -600px;
background-position: -1325px 0px;
width: 141px;
height: 440px;
}
.promo_item_notif {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -838px -1484px;
background-position: 0px -1585px;
width: 249px;
height: 102px;
}
.promo_jackalope {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -561px -1484px;
background-position: -281px -1336px;
width: 276px;
height: 147px;
}
.promo_king_manta {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -558px -1336px;
width: 264px;
height: 147px;
}
.promo_more_checkin_incentives {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -699px 0px;
background-position: -306px 0px;
width: 450px;
height: 147px;
}
.promo_mystery_201405 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -364px -1632px;
background-position: -1543px -1484px;
width: 90px;
height: 90px;
}
.promo_mystery_201406 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1432px -884px;
background-position: -1606px -1234px;
width: 90px;
height: 96px;
}
.promo_mystery_201407 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1870px -669px;
background-position: -1854px -563px;
width: 42px;
height: 62px;
}
.promo_mystery_201408 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1507px -1042px;
background-position: -1839px -1206px;
width: 60px;
height: 71px;
}
.promo_mystery_201409 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1494px -1484px;
background-position: -1634px -1484px;
width: 90px;
height: 90px;
}
.promo_mystery_201410 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1833px -1274px;
background-position: -1839px -1094px;
width: 72px;
height: 63px;
}
.promo_mystery_201411 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -91px -1632px;
background-position: -614px -1585px;
width: 90px;
height: 90px;
}
.promo_mystery_201412 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1870px -602px;
background-position: -1869px -1003px;
width: 42px;
height: 66px;
}
.promo_mystery_201501 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1663px -791px;
background-position: -1863px -708px;
width: 48px;
height: 63px;
}
.promo_mystery_201502 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -910px -1632px;
background-position: -815px -1484px;
width: 90px;
height: 90px;
}
.promo_mystery_201503 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1092px -1632px;
background-position: -1179px -1484px;
width: 90px;
height: 90px;
}
.promo_mystery_201504 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1508px -1190px;
background-position: -1839px -1318px;
width: 60px;
height: 69px;
}
.promo_mystery_201505 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1585px -1484px;
background-position: -1361px -1484px;
width: 90px;
height: 90px;
}
.promo_mystery_201506 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1870px -532px;
background-position: -1871px -912px;
width: 42px;
height: 69px;
}
.promo_mystery_201507 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1573px -1222px;
background-position: -1467px -773px;
width: 90px;
height: 105px;
}
.promo_mystery_201508 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1150px -884px;
background-position: -140px -747px;
width: 93px;
height: 90px;
}
.promo_mystery_201509 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -273px -1632px;
background-position: -250px -1585px;
width: 90px;
height: 90px;
}
.promo_mystery_201510 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1413px -1042px;
background-position: -721px -1484px;
width: 93px;
height: 90px;
}
.promo_mystery_201511 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -455px -1632px;
background-position: -432px -1585px;
width: 90px;
height: 90px;
}
.promo_mystery_201512 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1835px -1183px;
background-position: -1863px -626px;
width: 60px;
height: 81px;
}
.promo_mystery_201601 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1712px -1274px;
background-position: -1748px -1003px;
width: 120px;
height: 90px;
}
.promo_mystery_201602 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -728px -1632px;
background-position: -523px -1585px;
width: 90px;
height: 90px;
}
.promo_mystery_201603 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -819px -1632px;
background-position: -1452px -1484px;
width: 90px;
height: 90px;
}
.promo_mystery_201604 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1306px -1484px;
background-position: -1467px -1076px;
width: 93px;
height: 90px;
}
.promo_mystery_201605 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1001px -1632px;
background-position: -997px -1484px;
width: 90px;
height: 90px;
}
.promo_mystery_201606 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1573px -1010px;
background-position: -1467px -879px;
width: 90px;
height: 105px;
}
.promo_mystery_201607 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -546px -1632px;
background-position: -341px -1585px;
width: 90px;
height: 90px;
}
.promo_mystery_201608 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1400px -1484px;
background-position: -1467px -985px;
width: 93px;
height: 90px;
}
.promo_mystery_201609 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1291px -884px;
background-position: -1467px -1167px;
width: 93px;
height: 90px;
}
.promo_mystery_201610 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1827px -806px;
background-position: -1849px -774px;
width: 63px;
height: 84px;
}
.promo_mystery_201611 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1573px -1328px;
width: 90px;
height: 99px;
}
.promo_mystery_201612 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: 0px 0px;
width: 558px;
height: 294px;
}
.promo_mystery_201701 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1573px -1116px;
width: 90px;
height: 105px;
}
.promo_mystery_201702 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -281px -1484px;
width: 279px;
height: 147px;
}
.promo_mystery_201703 {
background-image: url(/static/sprites/spritesmith-largeSprites-0.png);
background-position: -1130px -1042px;
width: 282px;
height: 147px;
}

View File

@@ -1,378 +1,432 @@
.promo_mystery_201611 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1571px -1083px;
width: 90px;
height: 99px;
}
.promo_mystery_201612 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -586px 0px;
width: 558px;
height: 294px;
}
.promo_mystery_201701 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1712px -300px;
width: 90px;
height: 105px;
}
.promo_mystery_201702 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -584px -1538px;
width: 279px;
height: 147px;
}
.promo_mystery_201703 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1040px -1247px;
width: 282px;
height: 147px;
}
.promo_mystery_201704 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -833px -343px;
background-position: -1680px -992px;
width: 90px;
height: 90px;
}
.promo_mystery_201705 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1667px -151px;
background-position: -301px -1538px;
width: 282px;
height: 147px;
}
.promo_mystery_201706 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1547px -1177px;
background-position: -1963px -934px;
width: 111px;
height: 90px;
}
.promo_mystery_3014 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -904px -1517px;
background-position: -1812px -1381px;
width: 217px;
height: 90px;
}
.promo_new_hair_fall2016 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -425px -927px;
background-position: -1429px -442px;
width: 140px;
height: 441px;
}
.promo_orca {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1547px -1026px;
background-position: -1963px -783px;
width: 105px;
height: 105px;
}
.promo_orcas {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1571px -844px;
width: 219px;
height: 147px;
}
.promo_partyhats {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1547px -1268px;
background-position: -1963px -1025px;
width: 115px;
height: 47px;
}
.promo_pastel_skin {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -983px -1369px;
background-position: -1110px -1422px;
width: 330px;
height: 83px;
}
.customize-option.promo_pastel_skin {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1008px -1384px;
background-position: -1135px -1437px;
width: 60px;
height: 60px;
}
.promo_pastel_skin_hair {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -848px -1078px;
background-position: -824px -1096px;
width: 354px;
height: 147px;
}
.customize-option.promo_pastel_skin_hair {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -873px -1093px;
background-position: -849px -1111px;
width: 60px;
height: 60px;
}
.promo_peppermint_flame {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1254px -589px;
background-position: -1953px -1085px;
width: 140px;
height: 147px;
}
.promo_pet_skins {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1249px -927px;
background-position: -1812px -1085px;
width: 140px;
height: 147px;
}
.customize-option.promo_pet_skins {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1274px -942px;
background-position: -1837px -1100px;
width: 60px;
height: 60px;
}
.promo_pyromancer {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1547px -875px;
background-position: -1963px -632px;
width: 113px;
height: 113px;
}
.promo_rainbow_armor {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1875px -1246px;
background-position: -1712px -196px;
width: 92px;
height: 103px;
}
.promo_seafoam {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1287px 0px;
width: 141px;
height: 441px;
}
.promo_seasonal_shop_fall_2016 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1667px -594px;
background-position: -864px -1538px;
width: 279px;
height: 147px;
}
.promo_shimmer_hair {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1314px -1369px;
background-position: -1144px -1538px;
width: 330px;
height: 83px;
}
.promo_shimmer_potions {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: 0px -927px;
background-position: -1429px 0px;
width: 141px;
height: 441px;
}
.promo_shinySeeds {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -142px -927px;
background-position: -1287px -442px;
width: 141px;
height: 441px;
}
.promo_splashy_skins {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -725px -562px;
width: 375px;
height: 186px;
}
.customize-option.promo_splashy_skins {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -750px -577px;
width: 60px;
height: 60px;
}
.promo_splashyskins {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: 0px -1628px;
background-position: -1812px -1472px;
width: 198px;
height: 91px;
}
.customize-option.promo_splashyskins {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -25px -1643px;
background-position: -1837px -1487px;
width: 60px;
height: 60px;
}
.promo_spooky_sparkles_fall_2016 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1667px -299px;
background-position: -1571px -196px;
width: 140px;
height: 294px;
}
.promo_spring_classes_2016 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -620px -1369px;
background-position: -687px -984px;
width: 362px;
height: 102px;
}
.promo_spring_classes_2017 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: 0px -1369px;
background-position: -730px -1247px;
width: 309px;
height: 147px;
}
.promo_springclasses2014 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -326px -1517px;
background-position: -1812px -91px;
width: 288px;
height: 90px;
}
.promo_springclasses2015 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -615px -1517px;
background-position: -1812px 0px;
width: 288px;
height: 90px;
}
.promo_staff_spotlight_Lemoness {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1808px -447px;
background-position: -1963px -330px;
width: 102px;
height: 146px;
}
.promo_staff_spotlight_Viirus {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1547px -573px;
background-position: -1969px -182px;
width: 119px;
height: 147px;
}
.promo_staff_spotlight_paglias {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1547px -724px;
background-position: -1963px -481px;
width: 99px;
height: 147px;
}
.promo_steampunk_3017 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -566px -927px;
background-position: -282px -1096px;
width: 140px;
height: 441px;
}
.promo_summer_classes_2014 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -848px -1226px;
background-position: -257px -984px;
width: 429px;
height: 102px;
}
.promo_summer_classes_2015 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1667px -1427px;
background-position: 0px -1689px;
width: 300px;
height: 88px;
}
.promo_summer_classes_2016 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -848px -927px;
background-position: -423px -1096px;
width: 400px;
height: 150px;
}
.promo_summer_classes_2017 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1254px 0px;
background-position: -1145px 0px;
width: 141px;
height: 588px;
}
.promo_takeThis_gear {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1278px -1226px;
background-position: -1812px -1640px;
width: 114px;
height: 87px;
}
.promo_takethis_armor {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -199px -1628px;
background-position: -1927px -1640px;
width: 114px;
height: 87px;
}
.promo_task_planning {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1396px -181px;
background-position: -1571px 0px;
width: 240px;
height: 195px;
}
.promo_turkey_day_2016 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -284px -927px;
background-position: -141px -1096px;
width: 140px;
height: 441px;
}
.promo_unconventional_armor {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1890px -1149px;
background-position: -1951px -1309px;
width: 60px;
height: 60px;
}
.promo_unconventional_armor2 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1890px -1074px;
background-position: -2030px -1381px;
width: 70px;
height: 74px;
}
.promo_updos {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1808px -299px;
background-position: -1812px -182px;
width: 156px;
height: 147px;
}
.promo_veteran_pets {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1275px -1517px;
background-position: -1951px -1233px;
width: 146px;
height: 75px;
}
.promo_winter_classes_2016 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -932px -782px;
background-position: -749px -1422px;
width: 360px;
height: 90px;
}
.promo_winter_classes_2017 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: 0px -782px;
background-position: -257px -839px;
width: 432px;
height: 144px;
}
.promo_winter_fireworks {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1203px -1078px;
background-position: -1812px -1233px;
width: 138px;
height: 147px;
}
.promo_winterclasses2015 {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: 0px -1517px;
background-position: -423px -1422px;
width: 325px;
height: 110px;
}
.promo_wintery_skins {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -707px -927px;
background-position: 0px -1096px;
width: 140px;
height: 441px;
}
.customize-option.promo_wintery_skins {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -732px -942px;
background-position: -25px -1111px;
width: 60px;
height: 60px;
}
.promo_winteryhair {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1122px -1517px;
background-position: -1812px -1564px;
width: 152px;
height: 75px;
}
.avatar_variety {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -433px -782px;
background-position: -690px -839px;
width: 498px;
height: 95px;
}
.npc_viirus {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: 0px -1720px;
background-position: -1571px -992px;
width: 108px;
height: 90px;
}
.party_preview {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: 0px -562px;
background-position: -499px -312px;
width: 451px;
height: 219px;
}
.promo_backtoschool {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1396px -875px;
background-position: -1812px -330px;
width: 150px;
height: 150px;
}
.promo_cooking {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -452px -562px;
background-position: -328px -562px;
width: 396px;
height: 219px;
}
.promo_startingover {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1396px -573px;
background-position: -1812px -783px;
width: 150px;
height: 150px;
}
.promo_valentines {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -310px -1369px;
background-position: -1179px -1096px;
width: 309px;
height: 147px;
}
.promo_working_out {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1667px 0px;
background-position: 0px -1538px;
width: 300px;
height: 150px;
}
.scene_arts_crafts {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -926px -277px;
background-position: 0px -839px;
width: 256px;
height: 256px;
}
.scene_buying_rewards {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1667px -1246px;
background-position: -1571px -663px;
width: 207px;
height: 180px;
}
.scene_coding {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1396px -1026px;
background-position: -1812px -632px;
width: 150px;
height: 150px;
}
.scene_dailies {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -926px 0px;
background-position: 0px -562px;
width: 327px;
height: 276px;
}
.scene_eco_friendly {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1667px -1074px;
background-position: -1571px -491px;
width: 222px;
height: 171px;
}
@@ -390,55 +444,19 @@
}
.scene_habits {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -926px -534px;
background-position: -423px -1247px;
width: 306px;
height: 174px;
}
.scene_meditation {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1396px -724px;
background-position: -1812px -481px;
width: 150px;
height: 150px;
}
.scene_phone_peek {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1396px -1177px;
background-position: -1812px -934px;
width: 150px;
height: 150px;
}
.scene_raking_leaves {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -586px -343px;
width: 246px;
height: 198px;
}
.scene_todos {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1396px -377px;
width: 240px;
height: 195px;
}
.scene_video_games {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -586px 0px;
width: 339px;
height: 342px;
}
.welcome_basic_avatars {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1667px -908px;
width: 246px;
height: 165px;
}
.welcome_promo_party {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1396px 0px;
width: 270px;
height: 180px;
}
.welcome_sample_tasks {
background-image: url(/static/sprites/spritesmith-largeSprites-1.png);
background-position: -1667px -742px;
width: 246px;
height: 165px;
}

View File

@@ -0,0 +1,36 @@
.scene_raking_leaves {
background-image: url(/static/sprites/spritesmith-largeSprites-2.png);
background-position: -340px 0px;
width: 246px;
height: 198px;
}
.scene_todos {
background-image: url(/static/sprites/spritesmith-largeSprites-2.png);
background-position: -587px 0px;
width: 240px;
height: 195px;
}
.scene_video_games {
background-image: url(/static/sprites/spritesmith-largeSprites-2.png);
background-position: 0px 0px;
width: 339px;
height: 342px;
}
.welcome_basic_avatars {
background-image: url(/static/sprites/spritesmith-largeSprites-2.png);
background-position: -271px -343px;
width: 246px;
height: 165px;
}
.welcome_promo_party {
background-image: url(/static/sprites/spritesmith-largeSprites-2.png);
background-position: 0px -343px;
width: 270px;
height: 180px;
}
.welcome_sample_tasks {
background-image: url(/static/sprites/spritesmith-largeSprites-2.png);
background-position: 0px -524px;
width: 246px;
height: 165px;
}

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More