diff --git a/scripts/mongodb/queries/what-unlocks-level.js b/scripts/mongodb/queries/what-unlocks-level.js new file mode 100644 index 000000000..9d577bbdd --- /dev/null +++ b/scripts/mongodb/queries/what-unlocks-level.js @@ -0,0 +1,54 @@ +// Usage: mongo /coco -u -p what-unlocks-level.js +// Prints the slugs for levels that unlock the level given in findUnlocksForSlug + +// CHANGE THIS to whatever level you want to find the unlocks for. +var findUnlocksForSlug = 'kithgard-apprentice'; + + +var campaignSlugs = ['dungeon', 'forest', 'desert', 'mountain', 'glacier']; + +print("Levels that unlock " + findUnlocksForSlug + ":"); + +var unlockLevel = db.levels.findOne({ slug: findUnlocksForSlug }); +if(!unlockLevel) { + print("Level " + findUnlocksForSlug + " not found."); + quit(); +} + +var levelID = unlockLevel.original; +// print(levelID); + +campaignSlugs.forEach(function(slug) { + print("*** Searching " + slug + " ***"); + var campaign = db.campaigns.findOne({slug: slug }); + var levelOriginals = Object.keys(campaign.levels); + + //*** Each level in the campaign + + levelOriginals.some(function(original) { + var level = campaign.levels[original]; + eachLevel(level); + // this stops the .some() after one, for testing + // return true; + }); + +}); + +// ***** // + +function eachLevel(level) { + if(level.rewards) { + for(var i=0; i < level.rewards.length; i++) { + var reward = level.rewards[i]; + if(reward.level && reward.level == levelID) { + var found = db.levels.findOne({original: ObjectId(level.original)}); + if(found.slug) { + print(found.slug); + } else { + print("Found unlocking level, but it has no slug: " + JSON.stringify(reward.level)); + } + } + } + } +} +