start fixing commong

This commit is contained in:
Matteo Pagliazzi
2019-10-09 16:51:17 +02:00
parent 9cd43db401
commit 0c27fb24a5
76 changed files with 442 additions and 275 deletions
@@ -1,4 +1,4 @@
import prefill from './prefill.js';
import prefill from './prefill';
export default prefill({
none: {},
@@ -1,4 +1,4 @@
import prefill from '../prefill.js';
import prefill from '../prefill';
export default prefill({
0: {},
@@ -1,5 +1,5 @@
import prefill from '../prefill.js';
import sets from '../sets.js';
import prefill from '../prefill';
import sets from '../sets';
export default prefill({
0: {},
@@ -1,5 +1,5 @@
import sets from '../sets.js';
import prefill from '../prefill.js';
import sets from '../sets';
import prefill from '../prefill';
export default prefill({
0: {},
@@ -1,5 +1,5 @@
import sets from '../sets.js';
import prefill from '../prefill.js';
import sets from '../sets';
import prefill from '../prefill';
export default prefill({
white: {},
@@ -1,4 +1,4 @@
import prefill from '../prefill.js';
import prefill from '../prefill';
export default prefill({
0: {},
@@ -1,9 +1,9 @@
import bangs from './bangs.js';
import base from './base.js';
import beard from './beard.js';
import color from './color.js';
import flower from './flower.js';
import mustache from './mustache.js';
import bangs from './bangs';
import base from './base';
import beard from './beard';
import color from './color';
import flower from './flower';
import mustache from './mustache';
export default {
color,
@@ -1,5 +1,5 @@
import sets from '../sets.js';
import prefill from '../prefill.js';
import sets from '../sets';
import prefill from '../prefill';
export default prefill({
0: {},
@@ -1,5 +1,5 @@
import prefill from '../prefill.js';
import sets from '../sets.js';
import prefill from '../prefill';
import sets from '../sets';
export default prefill({
0: {},
@@ -1,11 +1,11 @@
import forOwn from 'lodash/forOwn';
import clone from 'lodash/clone';
import hair from './hair';
import shirts from './shirt.js';
import skins from './skin.js';
import sizes from './size.js';
import backgrounds from './backgrounds.js';
import chairs from './chair.js';
import shirts from './shirt';
import skins from './skin';
import sizes from './size';
import backgrounds from './backgrounds';
import chairs from './chair';
const reorderedBgs = {};
@@ -2,22 +2,36 @@ import t from '../translation';
import prefill from './prefill';
export default prefill({
baseHair1: {setPrice: 5, text: t('hairSet1')},
baseHair2: {setPrice: 5, text: t('hairSet2')},
baseHair3: {setPrice: 5, text: t('hairSet3')},
facialHair: {setPrice: 5, text: t('bodyFacialHair')},
specialShirts: {setPrice: 5, text: t('specialShirts')},
winterHairColors: {setPrice: 5, availableUntil: '2016-01-01'},
pastelHairColors: {setPrice: 5, availableUntil: '2016-01-01'},
rainbowHairColors: {setPrice: 5, text: t('rainbowColors')},
shimmerHairColors: {setPrice: 5, availableFrom: '2019-04-09', availableUntil: '2019-05-02', text: t('shimmerColors')},
hauntedHairColors: {setPrice: 5, availableFrom: '2019-10-08', availableUntil: '2019-11-02', text: t('hauntedColors')},
winteryHairColors: {setPrice: 5, availableFrom: '2019-01-08', availableUntil: '2019-02-02', text: t('winteryColors')},
rainbowSkins: {setPrice: 5, text: t('rainbowSkins')},
animalSkins: {setPrice: 5, text: t('animalSkins')},
pastelSkins: {setPrice: 5, availableFrom: '2019-04-09', availableUntil: '2019-05-02', text: t('pastelSkins')},
spookySkins: {setPrice: 5, availableUntil: '2016-01-01', text: t('spookySkins')},
supernaturalSkins: {setPrice: 5, availableFrom: '2019-10-08', availableUntil: '2019-11-02', text: t('supernaturalSkins')},
splashySkins: {setPrice: 5, availableFrom: '2019-07-02', availableUntil: '2019-08-02', text: t('splashySkins')},
winterySkins: {setPrice: 5, availableFrom: '2019-01-08', availableUntil: '2019-02-02', text: t('winterySkins')},
baseHair1: { setPrice: 5, text: t('hairSet1') },
baseHair2: { setPrice: 5, text: t('hairSet2') },
baseHair3: { setPrice: 5, text: t('hairSet3') },
facialHair: { setPrice: 5, text: t('bodyFacialHair') },
specialShirts: { setPrice: 5, text: t('specialShirts') },
winterHairColors: { setPrice: 5, availableUntil: '2016-01-01' },
pastelHairColors: { setPrice: 5, availableUntil: '2016-01-01' },
rainbowHairColors: { setPrice: 5, text: t('rainbowColors') },
shimmerHairColors: {
setPrice: 5, availableFrom: '2019-04-09', availableUntil: '2019-05-02', text: t('shimmerColors'),
},
hauntedHairColors: {
setPrice: 5, availableFrom: '2019-10-08', availableUntil: '2019-11-02', text: t('hauntedColors'),
},
winteryHairColors: {
setPrice: 5, availableFrom: '2019-01-08', availableUntil: '2019-02-02', text: t('winteryColors'),
},
rainbowSkins: { setPrice: 5, text: t('rainbowSkins') },
animalSkins: { setPrice: 5, text: t('animalSkins') },
pastelSkins: {
setPrice: 5, availableFrom: '2019-04-09', availableUntil: '2019-05-02', text: t('pastelSkins'),
},
spookySkins: { setPrice: 5, availableUntil: '2016-01-01', text: t('spookySkins') },
supernaturalSkins: {
setPrice: 5, availableFrom: '2019-10-08', availableUntil: '2019-11-02', text: t('supernaturalSkins'),
},
splashySkins: {
setPrice: 5, availableFrom: '2019-07-02', availableUntil: '2019-08-02', text: t('splashySkins'),
},
winterySkins: {
setPrice: 5, availableFrom: '2019-01-08', availableUntil: '2019-02-02', text: t('winterySkins'),
},
});
@@ -1,5 +1,5 @@
import sets from './sets.js';
import prefill from './prefill.js';
import sets from './sets';
import prefill from './prefill';
export default prefill({
black: {},
@@ -1,5 +1,5 @@
import prefill from './prefill.js';
import sets from './sets.js';
import prefill from './prefill';
import sets from './sets';
export default prefill({
/* eslint-disable quote-props */
+1 -1
View File
@@ -10,7 +10,7 @@ const faq = {
},
};
for (let i = 0; i <= NUMBER_OF_QUESTIONS; i++) {
for (let i = 0; i <= NUMBER_OF_QUESTIONS; i += 1) {
const question = {
question: t(`faqQuestion${i}`),
ios: t(`iosFaqAnswer${i}`),
+7 -3
View File
@@ -29,7 +29,8 @@ const gear = {
};
/*
The gear is exported as a tree (defined above), and a flat list (eg, {weapon_healer_1: .., shield_special_0: ...}) since
The gear is exported as a tree (defined above), and a flat list
(eg, {weapon_healer_1: .., shield_special_0: ...}) since
they are needed in different forms at different points in the app
*/
const flat = {};
@@ -61,8 +62,11 @@ each(GEAR_TYPES, type => {
item.canOwn = user => {
const userHasOwnedItem = ownsItem(key)(user);
const eventIsCurrent = moment().isAfter(item.event.start) && moment().isBefore(item.event.end);
const compatibleWithUserClass = item.specialClass ? user.stats.class === item.specialClass : true;
const eventIsCurrent = moment()
.isAfter(item.event.start) && moment().isBefore(item.event.end);
const compatibleWithUserClass = item.specialClass
? user.stats.class === item.specialClass
: true;
return _canOwn(user) && (userHasOwnedItem || eventIsCurrent) && compatibleWithUserClass;
};
+1 -1
View File
@@ -26,7 +26,7 @@ const weapon = {
// Add Two Handed message to all weapons
const rtlLanguages = [
'ae', /* Avestan */
'ae', /* Avestan */
'ar', /* 'العربية', Arabic */
'arc', /* Aramaic */
'bcc', /* 'بلوچی مکرانی', Southern Balochi */
@@ -261,7 +261,10 @@ export default function getLoginIncentives (api) {
},
110: {
rewardKey: ['Pet_Egg_Cactus', 'Pet_Egg_Dragon', 'Pet_Egg_Wolf'],
reward: [api.eggs.BearCub, api.eggs.Cactus, api.eggs.Dragon, api.eggs.FlyingPig, api.eggs.Fox, api.eggs.LionCub, api.eggs.PandaCub, api.eggs.TigerCub, api.eggs.Wolf],
reward: [
api.eggs.BearCub, api.eggs.Cactus, api.eggs.Dragon, api.eggs.FlyingPig,
api.eggs.Fox, api.eggs.LionCub, api.eggs.PandaCub, api.eggs.TigerCub, api.eggs.Wolf,
],
rewardName: 'oneOfAllPetEggs',
assignReward: function assignReward (user) {
if (!user.items.eggs.BearCub) user.items.eggs.BearCub = 0;
@@ -388,7 +391,10 @@ export default function getLoginIncentives (api) {
},
150: {
rewardKey: ['shop_head_special_clandestineCowl', 'shop_armor_special_sneakthiefRobes'],
reward: [api.gear.flat.head_special_clandestineCowl, api.gear.flat.armor_special_sneakthiefRobes],
reward: [
api.gear.flat.head_special_clandestineCowl,
api.gear.flat.armor_special_sneakthiefRobes,
],
assignReward: function assignReward (user) {
user.items.gear.owned.head_special_clandestineCowl = true; // eslint-disable-line camelcase
user.items.gear.owned.armor_special_sneakthiefRobes = true; // eslint-disable-line camelcase
@@ -406,10 +412,13 @@ export default function getLoginIncentives (api) {
},
170: {
rewardKey: ['shop_head_special_snowSovereignCrown', 'shop_armor_special_snowSovereignRobes'],
reward: [api.gear.flat.head_special_snowSovereignCrown, api.gear.flat.armor_special_snowSovereignRobes],
reward: [
api.gear.flat.head_special_snowSovereignCrown,
api.gear.flat.armor_special_snowSovereignRobes,
],
assignReward: function assignReward (user) {
user.items.gear.owned.head_special_snowSovereignCrown = true; // eslint-disable-line camelcase
user.items.gear.owned.armor_special_snowSovereignRobes = true; // eslint-disable-line camelcase
user.items.gear.owned.head_special_snowSovereignCrown = true; // eslint-disable-line camelcase, max-len
user.items.gear.owned.armor_special_snowSovereignRobes = true; // eslint-disable-line camelcase, max-len
if (user.markModified) user.markModified('items.gear.owned');
},
},
@@ -451,7 +460,10 @@ export default function getLoginIncentives (api) {
},
240: {
rewardKey: ['shop_weapon_special_nomadsScimitar', 'shop_armor_special_nomadsCuirass'],
reward: [api.gear.flat.weapon_special_nomadsScimitar, api.gear.flat.armor_special_nomadsCuirass],
reward: [
api.gear.flat.weapon_special_nomadsScimitar,
api.gear.flat.armor_special_nomadsCuirass,
],
assignReward: function assignReward (user) {
user.items.gear.owned.weapon_special_nomadsScimitar = true; // eslint-disable-line camelcase
user.items.gear.owned.armor_special_nomadsCuirass = true; // eslint-disable-line camelcase
@@ -468,7 +480,11 @@ export default function getLoginIncentives (api) {
},
280: {
rewardKey: ['Pet_Food_Meat', 'Pet_Food_Potatoe', 'Pet_Food_Milk'],
reward: [api.food.Meat, api.food.CottonCandyBlue, api.food.CottonCandyPink, api.food.Potatoe, api.food.Honey, api.food.Strawberry, api.food.Chocolate, api.food.Fish, api.food.Milk, api.food.RottenMeat],
reward: [
api.food.Meat, api.food.CottonCandyBlue, api.food.CottonCandyPink,
api.food.Potatoe, api.food.Honey, api.food.Strawberry, api.food.Chocolate,
api.food.Fish, api.food.Milk, api.food.RottenMeat,
],
rewardName: 'threeOfEachFood',
assignReward: function assignReward (user) {
if (!user.items.food.Meat) user.items.food.Meat = 0;
@@ -496,7 +512,10 @@ export default function getLoginIncentives (api) {
},
300: {
rewardKey: ['Pet_Egg_Cactus', 'Pet_Egg_Dragon', 'Pet_Egg_Wolf'],
reward: [api.eggs.BearCub, api.eggs.Cactus, api.eggs.Dragon, api.eggs.FlyingPig, api.eggs.Fox, api.eggs.LionCub, api.eggs.PandaCub, api.eggs.TigerCub, api.eggs.Wolf],
reward: [
api.eggs.BearCub, api.eggs.Cactus, api.eggs.Dragon, api.eggs.FlyingPig,
api.eggs.Fox, api.eggs.LionCub, api.eggs.PandaCub, api.eggs.TigerCub, api.eggs.Wolf,
],
rewardName: 'twoOfAllPetEggs',
assignReward: function assignReward (user) {
if (!user.items.eggs.BearCub) user.items.eggs.BearCub = 0;
@@ -549,7 +568,10 @@ export default function getLoginIncentives (api) {
},
380: {
rewardKey: ['Pet_Egg_Cactus', 'Pet_Egg_Dragon', 'Pet_Egg_Wolf'],
reward: [api.eggs.BearCub, api.eggs.Cactus, api.eggs.Dragon, api.eggs.FlyingPig, api.eggs.Fox, api.eggs.LionCub, api.eggs.PandaCub, api.eggs.TigerCub, api.eggs.Wolf],
reward: [
api.eggs.BearCub, api.eggs.Cactus, api.eggs.Dragon, api.eggs.FlyingPig,
api.eggs.Fox, api.eggs.LionCub, api.eggs.PandaCub, api.eggs.TigerCub, api.eggs.Wolf,
],
rewardName: 'threeOfAllPetEggs',
assignReward: function assignReward (user) {
if (!user.items.eggs.BearCub) user.items.eggs.BearCub = 0;
@@ -575,7 +597,11 @@ export default function getLoginIncentives (api) {
},
400: {
rewardKey: ['Pet_Food_Meat', 'Pet_Food_Potatoe', 'Pet_Food_Milk'],
reward: [api.food.Meat, api.food.CottonCandyBlue, api.food.CottonCandyPink, api.food.Potatoe, api.food.Honey, api.food.Strawberry, api.food.Chocolate, api.food.Fish, api.food.Milk, api.food.RottenMeat],
reward: [
api.food.Meat, api.food.CottonCandyBlue, api.food.CottonCandyPink,
api.food.Potatoe, api.food.Honey, api.food.Strawberry, api.food.Chocolate,
api.food.Fish, api.food.Milk, api.food.RottenMeat,
],
rewardName: 'fourOfEachFood',
assignReward: function assignReward (user) {
if (!user.items.food.Meat) user.items.food.Meat = 0;
@@ -638,10 +664,12 @@ export default function getLoginIncentives (api) {
},
},
};
// When the final check-in prize is added here, change checkinReceivedAllRewardsMessage in website/common/locales/en/loginIncentives.json
// When the final check-in prize is added here,
// change checkinReceivedAllRewardsMessage in website/common/locales/en/loginIncentives.json
// to say "You have received the final Check-In prize!". Confirm the message with Lemoness first.
// Add reference link to next reward and add filler days so we have a map to reference the next reward from any day
// Add reference link to next reward and add filler days
// so we have a map to reference the next reward from any day
// We could also, use a list, but then we would be cloning each of the rewards.
// Create a new array if we want the loginIncentives to be immutable in the future
let nextRewardKey;
+3 -2
View File
@@ -3505,14 +3505,15 @@ const quests = {
};
each(quests, (v, key) => {
let b;
defaults(v, {
key,
canBuy () {
return true;
},
});
b = v.boss;
const b = v.boss;
if (b) {
defaults(b, {
str: 1,
+43 -34
View File
@@ -11,23 +11,32 @@ import updateStats from '../fns/updateStats';
---------------------------------------------------------------
Text, notes, and mana are obvious. The rest:
* {target}: one of [task, self, party, user]. This is very important, because if the cast() function is expecting one
thing and receives another, it will cause errors. `self` is used for self buffs, multi-task debuffs, AOEs (eg, meteor-shower),
* {target}: one of [task, self, party, user].
* This is very important, because if the cast() function is expecting one
thing and receives another, it will cause errors.
`self` is used for self buffs, multi-task debuffs, AOEs (eg, meteor-shower),
etc. Basically, use self for anything that's not [task, party, user] and is an instant-cast
* {cast}: the function that's run to perform the ability's action. This is pretty slick - because this is exported to the
web, this function can be performed on the client and on the server. `user` param is self (needed for determining your
own stats for effectiveness of cast), and `target` param is one of [task, party, user]. In the case of `self` skills,
you act on `user` instead of `target`. You can trust these are the correct objects, as long as the `target` attr of the
spell is correct. Take a look at habitrpg/website/server/models/user.js and habitrpg/website/server/models/task.js for what attributes are
available on each model. Note `task.value` is its "redness". If party is passed in, it's an array of users,
* {cast}: the function that's run to perform the ability's action.
This is pretty slick - because this is exported to the
web, this function can be performed on the client and on the server.
`user` param is self (needed for determining your
own stats for effectiveness of cast), and `target` param is one of [task, party, user].
In the case of `self` skills,
you act on `user` instead of `target`. You can trust these are the correct objects,
as long as the `target` attr of the
spell is correct. Take a look at habitrpg/website/server/models/user.js and
habitrpg/website/server/models/task.js for what attributes are
available on each model. Note `task.value` is its "redness".
If party is passed in, it's an array of users,
so you'll want to iterate over them like: `_.each(target,function(member){...})`
Note, user.stats.mp is docked after automatically (it's appended to functions automatically down below in an _.each)
Note, user.stats.mp is docked after automatically
(it's appended to functions automatically down below in an _.each)
*/
function diminishingReturns (bonus, max, halfway) {
if (!halfway) halfway = max / 2;
if (!halfway) halfway = max / 2; // eslint-disable-line no-param-reassign
return max * (bonus / (bonus + halfway));
}
@@ -274,8 +283,8 @@ spells.special = {
target.stats.buffs.shinySeed = false;
target.stats.buffs.seafoam = false;
if (!target.achievements.snowball) target.achievements.snowball = 0;
target.achievements.snowball++;
user.items.special.snowball--;
target.achievements.snowball += 1;
user.items.special.snowball -= 1;
},
},
salt: {
@@ -305,8 +314,8 @@ spells.special = {
target.stats.buffs.shinySeed = false;
target.stats.buffs.seafoam = false;
if (!target.achievements.spookySparkles) target.achievements.spookySparkles = 0;
target.achievements.spookySparkles++;
user.items.special.spookySparkles--;
target.achievements.spookySparkles += 1;
user.items.special.spookySparkles -= 1;
},
},
opaquePotion: {
@@ -336,8 +345,8 @@ spells.special = {
target.stats.buffs.shinySeed = true;
target.stats.buffs.seafoam = false;
if (!target.achievements.shinySeed) target.achievements.shinySeed = 0;
target.achievements.shinySeed++;
user.items.special.shinySeed--;
target.achievements.shinySeed += 1;
user.items.special.shinySeed -= 1;
},
},
petalFreePotion: {
@@ -367,8 +376,8 @@ spells.special = {
target.stats.buffs.shinySeed = false;
target.stats.buffs.seafoam = true;
if (!target.achievements.seafoam) target.achievements.seafoam = 0;
target.achievements.seafoam++;
user.items.special.seafoam--;
target.achievements.seafoam += 1;
user.items.special.seafoam -= 1;
},
},
sand: {
@@ -395,11 +404,11 @@ spells.special = {
cast (user, target) {
if (user === target) {
if (!user.achievements.nye) user.achievements.nye = 0;
user.achievements.nye++;
user.achievements.nye += 1;
} else {
each([user, target], u => {
if (!u.achievements.nye) u.achievements.nye = 0;
u.achievements.nye++;
u.achievements.nye += 1;
});
}
@@ -432,11 +441,11 @@ spells.special = {
cast (user, target) {
if (user === target) {
if (!user.achievements.valentine) user.achievements.valentine = 0;
user.achievements.valentine++;
user.achievements.valentine += 1;
} else {
each([user, target], u => {
if (!u.achievements.valentine) u.achievements.valentine = 0;
u.achievements.valentine++;
u.achievements.valentine += 1;
});
}
@@ -469,11 +478,11 @@ spells.special = {
cast (user, target) {
if (user === target) {
if (!user.achievements.greeting) user.achievements.greeting = 0;
user.achievements.greeting++;
user.achievements.greeting += 1;
} else {
each([user, target], u => {
if (!u.achievements.greeting) u.achievements.greeting = 0;
u.achievements.greeting++;
u.achievements.greeting += 1;
});
}
@@ -506,11 +515,11 @@ spells.special = {
cast (user, target) {
if (user === target) {
if (!user.achievements.thankyou) user.achievements.thankyou = 0;
user.achievements.thankyou++;
user.achievements.thankyou += 1;
} else {
each([user, target], u => {
if (!u.achievements.thankyou) u.achievements.thankyou = 0;
u.achievements.thankyou++;
u.achievements.thankyou += 1;
});
}
@@ -543,11 +552,11 @@ spells.special = {
cast (user, target) {
if (user === target) {
if (!user.achievements.birthday) user.achievements.birthday = 0;
user.achievements.birthday++;
user.achievements.birthday += 1;
} else {
each([user, target], u => {
if (!u.achievements.birthday) u.achievements.birthday = 0;
u.achievements.birthday++;
u.achievements.birthday += 1;
});
}
@@ -580,11 +589,11 @@ spells.special = {
cast (user, target) {
if (user === target) {
if (!user.achievements.congrats) user.achievements.congrats = 0;
user.achievements.congrats++;
user.achievements.congrats += 1;
} else {
each([user, target], u => {
if (!u.achievements.congrats) u.achievements.congrats = 0;
u.achievements.congrats++;
u.achievements.congrats += 1;
});
}
@@ -617,11 +626,11 @@ spells.special = {
cast (user, target) {
if (user === target) {
if (!user.achievements.getwell) user.achievements.getwell = 0;
user.achievements.getwell++;
user.achievements.getwell += 1;
} else {
each([user, target], u => {
if (!u.achievements.getwell) u.achievements.getwell = 0;
u.achievements.getwell++;
u.achievements.getwell += 1;
});
}
@@ -654,11 +663,11 @@ spells.special = {
cast (user, target) {
if (user === target) {
if (!user.achievements.goodluck) user.achievements.goodluck = 0;
user.achievements.goodluck++;
user.achievements.goodluck += 1;
} else {
each([user, target], u => {
if (!u.achievements.goodluck) u.achievements.goodluck = 0;
u.achievements.goodluck++;
u.achievements.goodluck += 1;
});
}
@@ -50,6 +50,6 @@ const subscriptionBlocks = {
},
};
each(subscriptionBlocks, (b, k) => b.key = k);
each(subscriptionBlocks, (b, k) => { b.key = k; });
export default subscriptionBlocks;
+1 -1
View File
@@ -1,6 +1,6 @@
import t from './translation';
export const tasksByCategory = {
export const tasksByCategory = { // eslint-disable-line import/prefer-default-export
work: [
{
type: 'habit',
@@ -9,9 +9,11 @@ import gear from './gear';
const mystery = mysterySets;
each(mystery, (v, k) => v.items = filter(gear.flat, {
mystery: k,
}));
each(mystery, (v, k) => {
v.items = filter(gear.flat, {
mystery: k,
});
});
const timeTravelerStore = user => {
let ownedKeys;