codecombat/scripts/mongodb/queries/what-unlocks-level.js

54 lines
1.5 KiB
JavaScript

// Usage: mongo <server>/coco -u <read-only-username> -p <read-only-password> 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));
}
}
}
}
}