Created
April 18, 2014 11:15
Revisions
-
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,110 @@ /******************* * intoTheWoods.js * ******************* * * Ah, you're out of the woods now. Or into the woods, as the * case may be. * * So take a deep breath, relax, and remember what you're here * for in the first place. * * I've traced its signal and the Algorithm is nearby. You'll * need to go through the forest and across the river, and * you'll reach the fortress where it's kept. Their defences * are light, and we should be able to catch them off-guard. */ function startLevel(map) { // NOTE: In this level alone, map.placeObject is allowed to //overwrite existing objects. map.displayChapter('Chapter 2\nRaiders of the Lost Algorithm'); map.placePlayer(2, map.getHeight() - 1); var functionList = {}; functionList['fortresses'] = function () { function genRandomValue(direction) { if (direction === "height") { return Math.floor(Math.random() * (map.getHeight()-3)); } else if (direction === "width") { return Math.floor(Math.random() * (map.getWidth()+1)); } } var x = genRandomValue("width"); var y = genRandomValue("height"); for (var i = x-2; i < x+2; i++) { map.placeObject(i,y-2, 'block'); } for (var i = x-2; i < x+2; i++) { map.placeObject(i,y+2, 'block'); } for (var j = y-2; j < y+2; j++) { map.placeObject(x-2,j, 'block'); } for (var j = y-2; j < y+2; j++) { map.placeObject(x+2,j, 'block'); } }; functionList['generateForest'] = function () { for (var i = 0; i < map.getWidth(); i++) { for (var j = 0; j < map.getHeight(); j++) { // initialize to empty if the square contains a forest already if (map.getObjectTypeAt(i, j) === 'tree') { // remove existing forest map.placeObject(i,j, 'empty'); } if (map.getPlayer().atLocation(i,j) || map.getObjectTypeAt(i, j) === 'block' || map.getObjectTypeAt(i, j) === 'exit') { continue; } var rv = Math.random(); if (rv < 0.45) { map.placeObject(i, j, 'tree'); } } } map.refresh(); }; functionList['movePlayerToExit'] = function () { map.writeStatus("Permission denied."); } functionList['pleaseMovePlayerToExit'] = function () { map.writeStatus("I don't think so."); } functionList['movePlayerToExitDamnit'] = function () { map.writeStatus("So, how 'bout them <LOCAL SPORTS TEAM>?"); } // generate forest functionList['generateForest'](); // generate fortresses functionList['fortresses'](); functionList['fortresses'](); functionList['fortresses'](); functionList['fortresses'](); map.getPlayer().setPhoneCallback(functionList["generateForest"]); map.placeObject(map.getWidth()-1, map.getHeight()-1, 'exit'); } function validateLevel(map) { map.validateAtLeastXObjects(100, 'tree'); map.validateExactlyXManyObjects(1, 'exit'); }