Merge branch 'develop' into release

This commit is contained in:
Sabe Jones
2017-08-11 19:53:40 +00:00
445 changed files with 64704 additions and 60658 deletions

View File

@@ -22,7 +22,7 @@ module.exports = function getLoginIncentives (api) {
user.purchased.background.purple = true;
user.purchased.background.red = true;
user.purchased.background.yellow = true;
user.markModified('purchased.background');
if (user.markModified) user.markModified('purchased.background');
},
},
3: {

View File

@@ -411,6 +411,7 @@ let quests = {
vice1: {
text: t('questVice1Text'),
notes: t('questVice1Notes'),
group: 'questGroupVice',
value: 4,
lvl: 30,
category: 'unlockable',
@@ -435,6 +436,7 @@ let quests = {
vice2: {
text: t('questVice2Text'),
notes: t('questVice2Notes'),
group: 'questGroupVice',
value: 4,
lvl: 30,
category: 'unlockable',
@@ -461,6 +463,7 @@ let quests = {
vice3: {
text: t('questVice3Text'),
notes: t('questVice3Notes'),
group: 'questGroupVice',
completion: t('questVice3Completion'),
previous: 'vice2',
value: 4,
@@ -661,6 +664,7 @@ let quests = {
atom1: {
text: t('questAtom1Text'),
notes: t('questAtom1Notes'),
group: 'questGroupAtom',
value: 4,
lvl: 15,
category: 'unlockable',
@@ -686,6 +690,7 @@ let quests = {
atom2: {
text: t('questAtom2Text'),
notes: t('questAtom2Notes'),
group: 'questGroupAtom',
previous: 'atom1',
value: 4,
lvl: 15,
@@ -711,6 +716,7 @@ let quests = {
atom3: {
text: t('questAtom3Text'),
notes: t('questAtom3Notes'),
group: 'questGroupAtom',
previous: 'atom2',
completion: t('questAtom3Completion'),
value: 4,
@@ -840,6 +846,7 @@ let quests = {
moonstone1: {
text: t('questMoonstone1Text'),
notes: t('questMoonstone1Notes'),
group: 'questGroupMoonstone',
value: 4,
lvl: 60,
category: 'unlockable',
@@ -865,6 +872,7 @@ let quests = {
moonstone2: {
text: t('questMoonstone2Text'),
notes: t('questMoonstone2Notes'),
group: 'questGroupMoonstone',
value: 4,
lvl: 60,
previous: 'moonstone1',
@@ -890,6 +898,7 @@ let quests = {
moonstone3: {
text: t('questMoonstone3Text'),
notes: t('questMoonstone3Notes'),
group: 'questGroupMoonstone',
completion: t('questMoonstone3Completion'),
previous: 'moonstone2',
value: 4,
@@ -947,6 +956,7 @@ let quests = {
goldenknight1: {
text: t('questGoldenknight1Text'),
notes: t('questGoldenknight1Notes'),
group: 'questGroupGoldenknight',
value: 4,
lvl: 40,
category: 'unlockable',
@@ -972,6 +982,7 @@ let quests = {
goldenknight2: {
text: t('questGoldenknight2Text'),
notes: t('questGoldenknight2Notes'),
group: 'questGroupGoldenknight',
value: 4,
previous: 'goldenknight1',
lvl: 40,
@@ -997,6 +1008,7 @@ let quests = {
goldenknight3: {
text: t('questGoldenknight3Text'),
notes: t('questGoldenknight3Notes'),
group: 'questGroupGoldenknight',
completion: t('questGoldenknight3Completion'),
previous: 'goldenknight2',
value: 4,
@@ -1389,6 +1401,7 @@ let quests = {
dilatoryDistress1: {
text: t('questDilatoryDistress1Text'),
notes: t('questDilatoryDistress1Notes'),
group: 'questGroupDilatoryDistress',
completion: t('questDilatoryDistress1Completion'),
value: 4,
goldValue: 200,
@@ -1418,6 +1431,7 @@ let quests = {
dilatoryDistress2: {
text: t('questDilatoryDistress2Text'),
notes: t('questDilatoryDistress2Notes'),
group: 'questGroupDilatoryDistress',
completion: t('questDilatoryDistress2Completion'),
previous: 'dilatoryDistress1',
value: 4,
@@ -1457,6 +1471,7 @@ let quests = {
dilatoryDistress3: {
text: t('questDilatoryDistress3Text'),
notes: t('questDilatoryDistress3Notes'),
group: 'questGroupDilatoryDistress',
completion: t('questDilatoryDistress3Completion'),
previous: 'dilatoryDistress2',
value: 4,
@@ -2065,6 +2080,7 @@ let quests = {
taskwoodsTerror1: {
text: t('questTaskwoodsTerror1Text'),
notes: t('questTaskwoodsTerror1Notes'),
group: 'questGroupTaskwoodsTerror',
completion: t('questTaskwoodsTerror1Completion'),
value: 4,
goldValue: 200,
@@ -2103,6 +2119,7 @@ let quests = {
taskwoodsTerror2: {
text: t('questTaskwoodsTerror2Text'),
notes: t('questTaskwoodsTerror2Notes'),
group: 'questGroupTaskwoodsTerror',
completion: t('questTaskwoodsTerror2Completion'),
previous: 'taskwoodsTerror1',
value: 4,
@@ -2137,6 +2154,7 @@ let quests = {
taskwoodsTerror3: {
text: t('questTaskwoodsTerror3Text'),
notes: t('questTaskwoodsTerror3Notes'),
group: 'questGroupTaskwoodsTerror',
completion: t('questTaskwoodsTerror3Completion'),
previous: 'taskwoodsTerror2',
value: 4,
@@ -2226,6 +2244,7 @@ let quests = {
moon1: {
text: t('questMoon1Text'),
notes: t('questMoon1Notes'),
group: 'questGroupMoon',
completion: t('questMoon1Completion'),
value: 4,
category: 'unlockable',
@@ -2255,6 +2274,7 @@ let quests = {
moon2: {
text: t('questMoon2Text'),
notes: t('questMoon2Notes'),
group: 'questGroupMoon',
completion: t('questMoon2Completion'),
previous: 'moon1',
value: 4,
@@ -2284,6 +2304,7 @@ let quests = {
moon3: {
text: t('questMoon3Text'),
notes: t('questMoon3Notes'),
group: 'questGroupMoon',
completion: t('questMoon3Completion'),
previous: 'moon2',
value: 4,
@@ -2377,6 +2398,7 @@ let quests = {
stoikalmCalamity1: {
text: t('questStoikalmCalamity1Text'),
notes: t('questStoikalmCalamity1Notes'),
group: 'questGroupStoikalmCalamity',
completion: t('questStoikalmCalamity1Completion'),
value: 4,
goldValue: 200,
@@ -2415,6 +2437,7 @@ let quests = {
stoikalmCalamity2: {
text: t('questStoikalmCalamity2Text'),
notes: t('questStoikalmCalamity2Notes'),
group: 'questGroupStoikalmCalamity',
completion: t('questStoikalmCalamity2Completion'),
previous: 'stoikalmCalamity1',
value: 4,
@@ -2441,6 +2464,7 @@ let quests = {
stoikalmCalamity3: {
text: t('questStoikalmCalamity3Text'),
notes: t('questStoikalmCalamity3Notes'),
group: 'questGroupStoikalmCalamity',
completion: t('questStoikalmCalamity3Completion'),
previous: 'stoikalmCalamity2',
value: 4,
@@ -2578,6 +2602,7 @@ let quests = {
mayhemMistiflying1: {
text: t('questMayhemMistiflying1Text'),
notes: t('questMayhemMistiflying1Notes'),
group: 'questGroupMayhemMistiflying',
completion: t('questMayhemMistiflying1Completion'),
value: 4,
goldValue: 200,
@@ -2616,6 +2641,7 @@ let quests = {
mayhemMistiflying2: {
text: t('questMayhemMistiflying2Text'),
notes: t('questMayhemMistiflying2Notes'),
group: 'questGroupMayhemMistiflying',
completion: t('questMayhemMistiflying2Completion'),
previous: 'mayhemMistiflying1',
value: 4,
@@ -2650,6 +2676,7 @@ let quests = {
mayhemMistiflying3: {
text: t('questMayhemMistiflying3Text'),
notes: t('questMayhemMistiflying3Notes'),
group: 'questGroupMayhemMistiflying',
completion: t('questMayhemMistiflying3Completion'),
previous: 'mayhemMistiflying2',
value: 4,

View File

@@ -5,6 +5,15 @@ const featuredItems = {
'shield_special_0',
'armor_warrior_5',
],
quests: [
'dilatoryDistress1',
'dilatoryDistress2',
'dilatoryDistress3',
],
seasonal: 'summerMage',
timeTravelers: [
// TODO
],
};
export default featuredItems;

View File

@@ -1,6 +1,8 @@
import t from './translation';
import each from 'lodash/each';
import { NotAuthorized } from '../libs/errors';
import statsComputed from '../libs/statsComputed';
/*
---------------------------------------------------------------
Spells
@@ -41,11 +43,11 @@ spells.wizard = {
target: 'task',
notes: t('spellWizardFireballNotes'),
cast (user, target, req) {
let bonus = user._statsComputed.int * user.fns.crit('per');
let bonus = statsComputed(user).int * user.fns.crit('per');
bonus *= Math.ceil((target.value < 0 ? 1 : target.value + 1) * 0.075);
user.stats.exp += diminishingReturns(bonus, 75);
if (!user.party.quest.progress.up) user.party.quest.progress.up = 0;
user.party.quest.progress.up += Math.ceil(user._statsComputed.int * 0.1);
user.party.quest.progress.up += Math.ceil(statsComputed(user).int * 0.1);
user.fns.updateStats(user.stats, req);
},
},
@@ -57,7 +59,7 @@ spells.wizard = {
notes: t('spellWizardMPHealNotes'),
cast (user, target) {
each(target, (member) => {
let bonus = user._statsComputed.int;
let bonus = statsComputed(user).int;
if (user._id !== member._id) {
member.stats.mp += Math.ceil(diminishingReturns(bonus, 25, 125));
}
@@ -72,7 +74,7 @@ spells.wizard = {
notes: t('spellWizardEarthNotes'),
cast (user, target) {
each(target, (member) => {
let bonus = user._statsComputed.int - user.stats.buffs.int;
let bonus = statsComputed(user).int - user.stats.buffs.int;
if (!member.stats.buffs.int) member.stats.buffs.int = 0;
member.stats.buffs.int += Math.ceil(diminishingReturns(bonus, 30, 200));
});
@@ -98,7 +100,7 @@ spells.warrior = {
target: 'task',
notes: t('spellWarriorSmashNotes'),
cast (user, target) {
let bonus = user._statsComputed.str * user.fns.crit('con');
let bonus = statsComputed(user).str * user.fns.crit('con');
target.value += diminishingReturns(bonus, 2.5, 35);
if (!user.party.quest.progress.up) user.party.quest.progress.up = 0;
user.party.quest.progress.up += diminishingReturns(bonus, 55, 70);
@@ -111,7 +113,7 @@ spells.warrior = {
target: 'self',
notes: t('spellWarriorDefensiveStanceNotes'),
cast (user) {
let bonus = user._statsComputed.con - user.stats.buffs.con;
let bonus = statsComputed(user).con - user.stats.buffs.con;
if (!user.stats.buffs.con) user.stats.buffs.con = 0;
user.stats.buffs.con += Math.ceil(diminishingReturns(bonus, 40, 200));
},
@@ -124,7 +126,7 @@ spells.warrior = {
notes: t('spellWarriorValorousPresenceNotes'),
cast (user, target) {
each(target, (member) => {
let bonus = user._statsComputed.str - user.stats.buffs.str;
let bonus = statsComputed(user).str - user.stats.buffs.str;
if (!member.stats.buffs.str) member.stats.buffs.str = 0;
member.stats.buffs.str += Math.ceil(diminishingReturns(bonus, 20, 200));
});
@@ -138,7 +140,7 @@ spells.warrior = {
notes: t('spellWarriorIntimidateNotes'),
cast (user, target) {
each(target, (member) => {
let bonus = user._statsComputed.con - user.stats.buffs.con;
let bonus = statsComputed(user).con - user.stats.buffs.con;
if (!member.stats.buffs.con) member.stats.buffs.con = 0;
member.stats.buffs.con += Math.ceil(diminishingReturns(bonus, 24, 200));
});
@@ -154,7 +156,7 @@ spells.rogue = {
target: 'task',
notes: t('spellRoguePickPocketNotes'),
cast (user, target) {
let bonus = calculateBonus(target.value, user._statsComputed.per);
let bonus = calculateBonus(target.value, statsComputed(user).per);
user.stats.gp += diminishingReturns(bonus, 25, 75);
},
},
@@ -166,7 +168,7 @@ spells.rogue = {
notes: t('spellRogueBackStabNotes'),
cast (user, target, req) {
let _crit = user.fns.crit('str', 0.3);
let bonus = calculateBonus(target.value, user._statsComputed.str, _crit);
let bonus = calculateBonus(target.value, statsComputed(user).str, _crit);
user.stats.exp += diminishingReturns(bonus, 75, 50);
user.stats.gp += diminishingReturns(bonus, 18, 75);
user.fns.updateStats(user.stats, req);
@@ -180,7 +182,7 @@ spells.rogue = {
notes: t('spellRogueToolsOfTradeNotes'),
cast (user, target) {
each(target, (member) => {
let bonus = user._statsComputed.per - user.stats.buffs.per;
let bonus = statsComputed(user).per - user.stats.buffs.per;
if (!member.stats.buffs.per) member.stats.buffs.per = 0;
member.stats.buffs.per += Math.ceil(diminishingReturns(bonus, 100, 50));
});
@@ -194,7 +196,7 @@ spells.rogue = {
notes: t('spellRogueStealthNotes'),
cast (user) {
if (!user.stats.buffs.stealth) user.stats.buffs.stealth = 0;
user.stats.buffs.stealth += Math.ceil(diminishingReturns(user._statsComputed.per, user.tasksOrder.dailys.length * 0.64, 55));
user.stats.buffs.stealth += Math.ceil(diminishingReturns(statsComputed(user).per, user.tasksOrder.dailys.length * 0.64, 55));
},
},
};
@@ -207,7 +209,7 @@ spells.healer = {
target: 'self',
notes: t('spellHealerHealNotes'),
cast (user) {
user.stats.hp += (user._statsComputed.con + user._statsComputed.int + 5) * 0.075;
user.stats.hp += (statsComputed(user).con + statsComputed(user).int + 5) * 0.075;
if (user.stats.hp > 50) user.stats.hp = 50;
},
},
@@ -220,7 +222,7 @@ spells.healer = {
cast (user, tasks) {
each(tasks, (task) => {
if (task.type !== 'reward') {
task.value += 4 * (user._statsComputed.int / (user._statsComputed.int + 40));
task.value += 4 * (statsComputed(user).int / (statsComputed(user).int + 40));
}
});
},
@@ -233,7 +235,7 @@ spells.healer = {
notes: t('spellHealerProtectAuraNotes'),
cast (user, target) {
each(target, (member) => {
let bonus = user._statsComputed.con - user.stats.buffs.con;
let bonus = statsComputed(user).con - user.stats.buffs.con;
if (!member.stats.buffs.con) member.stats.buffs.con = 0;
member.stats.buffs.con += Math.ceil(diminishingReturns(bonus, 200, 200));
});
@@ -247,7 +249,7 @@ spells.healer = {
notes: t('spellHealerHealAllNotes'),
cast (user, target) {
each(target, (member) => {
member.stats.hp += (user._statsComputed.con + user._statsComputed.int + 5) * 0.04;
member.stats.hp += (statsComputed(user).con + statsComputed(user).int + 5) * 0.04;
if (member.stats.hp > 50) member.stats.hp = 50;
});
},