more quest logic

This commit is contained in:
CuriousMagpie
2022-01-07 17:33:37 -05:00
parent d45122ce06
commit 7bd190930f
2 changed files with 71 additions and 32 deletions

View File

@@ -98,7 +98,10 @@ const quests = {
notes: t('questAtom2Notes'), notes: t('questAtom2Notes'),
completion: t('questAtom2Completion'), completion: t('questAtom2Completion'),
group: 'questGroupAtom', group: 'questGroupAtom',
previous1: 'atom1', previous: 'atom1',
prereqQuests: [
'atom1',
],
value: 4, value: 4,
lvl: 15, lvl: 15,
category: 'unlockable', category: 'unlockable',
@@ -124,8 +127,11 @@ const quests = {
text: t('questAtom3Text'), text: t('questAtom3Text'),
notes: t('questAtom3Notes'), notes: t('questAtom3Notes'),
group: 'questGroupAtom', group: 'questGroupAtom',
previous1: 'atom1', previous: 'atom1',
previous2: 'atom2', prereqQuests: [
'atom1',
'atom2',
],
completion: t('questAtom3Completion'), completion: t('questAtom3Completion'),
value: 4, value: 4,
lvl: 15, lvl: 15,
@@ -188,7 +194,10 @@ const quests = {
completion: t('questGoldenknight2Completion'), completion: t('questGoldenknight2Completion'),
group: 'questGroupGoldenknight', group: 'questGroupGoldenknight',
value: 4, value: 4,
previous1: 'goldenknight1', previous: 'goldenknight1',
prereqQuests: [
'goldenknight1',
],
lvl: 40, lvl: 40,
category: 'unlockable', category: 'unlockable',
boss: { boss: {
@@ -214,8 +223,11 @@ const quests = {
notes: t('questGoldenknight3Notes'), notes: t('questGoldenknight3Notes'),
group: 'questGroupGoldenknight', group: 'questGroupGoldenknight',
completion: t('questGoldenknight3Completion'), completion: t('questGoldenknight3Completion'),
previous1: 'goldenknight1', previous: 'goldenknight2',
previous2: 'goldenknight2', prereqQuests: [
'goldenknight1',
'goldenknight2',
],
value: 4, value: 4,
lvl: 40, lvl: 40,
category: 'unlockable', category: 'unlockable',
@@ -291,7 +303,10 @@ const quests = {
notes: t('questMoon2Notes'), notes: t('questMoon2Notes'),
group: 'questGroupMoon', group: 'questGroupMoon',
completion: t('questMoon2Completion'), completion: t('questMoon2Completion'),
previous1: 'moon1', previous: 'moon1',
prereqQuests: [
'moon1',
],
value: 4, value: 4,
category: 'unlockable', category: 'unlockable',
unlockCondition: { unlockCondition: {
@@ -321,8 +336,11 @@ const quests = {
notes: t('questMoon3Notes'), notes: t('questMoon3Notes'),
group: 'questGroupMoon', group: 'questGroupMoon',
completion: t('questMoon3Completion'), completion: t('questMoon3Completion'),
previous1: 'moon1', previous1: 'moon2',
previous2: 'moon2', prereqQuests: [
'moon1',
'moon2',
],
value: 4, value: 4,
category: 'unlockable', category: 'unlockable',
unlockCondition: { unlockCondition: {
@@ -381,7 +399,10 @@ const quests = {
group: 'questGroupMoonstone', group: 'questGroupMoonstone',
value: 4, value: 4,
lvl: 60, lvl: 60,
previous1: 'moonstone1', previous: 'moonstone1',
prereqQuests: [
'moonstone1',
],
category: 'unlockable', category: 'unlockable',
boss: { boss: {
name: t('questMoonstone2Boss'), name: t('questMoonstone2Boss'),
@@ -406,8 +427,11 @@ const quests = {
notes: t('questMoonstone3Notes'), notes: t('questMoonstone3Notes'),
group: 'questGroupMoonstone', group: 'questGroupMoonstone',
completion: t('questMoonstone3Completion'), completion: t('questMoonstone3Completion'),
previous1: 'moonstone1', previous: 'moonstone2',
previous2: 'moonstone2', prereqQuests: [
'moonstone1',
'moonstone2',
],
value: 4, value: 4,
lvl: 60, lvl: 60,
category: 'unlockable', category: 'unlockable',
@@ -494,7 +518,10 @@ const quests = {
value: 4, value: 4,
lvl: 30, lvl: 30,
category: 'unlockable', category: 'unlockable',
previous1: 'vice1', previous: 'vice1',
prereqQuests: [
'vice1',
],
collect: { collect: {
lightCrystal: { lightCrystal: {
text: t('questVice2CollectLightCrystal'), text: t('questVice2CollectLightCrystal'),
@@ -519,8 +546,11 @@ const quests = {
notes: t('questVice3Notes'), notes: t('questVice3Notes'),
group: 'questGroupVice', group: 'questGroupVice',
completion: t('questVice3Completion'), completion: t('questVice3Completion'),
previous1: 'vice1', previous: 'vice2',
previous2: 'vice2', prereqQuests: [
'vice1',
'vice2',
],
value: 4, value: 4,
lvl: 30, lvl: 30,
category: 'unlockable', category: 'unlockable',

View File

@@ -1,4 +1,6 @@
import _mapValues from 'lodash/mapValues'; import _mapValues from 'lodash/mapValues';
import intersection from 'lodash/intersection'; // there's probably other ways to do this, but, quick way to hit what I'm thinking of
import keys from 'lodash/keys';
import i18n from '../i18n'; import i18n from '../i18n';
import content from '../content/index'; import content from '../content/index';
import { BadRequest } from './errors'; import { BadRequest } from './errors';
@@ -17,7 +19,9 @@ function userAbleToStartMasterclasser (user) {
function lockQuest (quest, user) { function lockQuest (quest, user) {
// masterclasser requirement // masterclasser requirement
if (quest.key === 'lostMasterclasser1') return !userAbleToStartMasterclasser(user); if (quest.key === 'lostMasterclasser1') {
return !userAbleToStartMasterclasser(user);
}
if (quest.key === 'lostMasterclasser2' if (quest.key === 'lostMasterclasser2'
|| quest.key === 'lostMasterclasser3' || quest.key === 'lostMasterclasser3'
|| quest.key === 'lostMasterclasser4') { || quest.key === 'lostMasterclasser4') {
@@ -40,27 +44,32 @@ function lockQuest (quest, user) {
return user.loginIncentives < quest.unlockCondition.incentiveThreshold; return user.loginIncentives < quest.unlockCondition.incentiveThreshold;
} }
// checks to make sure 1st quest completed (previous1) // checks to make sure previous quest in chain is completed
if (user.achievements.quests) { if (user.achievements.quests) {
return quest.previous1 return quest.previous
&& !user.achievements.quests[quest.previous1]; && !user.achievements.quests[quest.previous];
} }
// checks to make sure 1st and 2nd quests completed (previous1 and previous2) // TEST THIS ON MONDAYYYY
if (user.achievements.quests) { if (quest.lvl && user.stats.lvl < quest.lvl) return true;
return quest.previous1 if (quest.unlockCondition
&& !user.achievements.quests[quest.previous1] && quest.unlockCondition.incentiveThreshold
&& !user.achievements.quests[quest.previous2]; && user.loginIncentives < quest.unlockCondition.incentiveThreshold) return true;
if (quest.prereqQuests) {
if (!user.achievements.quests) return true;
const achievedQuestKeys = keys(user.achievements.quests);
if (intersection(quest.prereqQuests, achievedQuestKeys) !== quest.prereqQuests) return true;
} }
// checks to make sure 1st, 2nd, & 3rd quests completed (previous1, previous2, previous3) // OR THIS
if (user.achievements.quests) { // if (intersection(quest.prereqQuests, keys(user.quest.achievements)) !== quest.prereqQuests) {
return quest.previous1 // return true;
&& !user.achievements.quests[quest.previous1] // }
&& !user.achievements.quests[quest.previous2]
&& !user.achievements.quests[quest.previous3]; // then if we've passed all the checks, at the end
} return false;
return quest.previous1;
// return quest.previous; //what was at the end of the function before
} }
function isItemSuggested (officialPinnedItems, itemInfo) { function isItemSuggested (officialPinnedItems, itemInfo) {