SpelunkyFan wiki

objects/oLoadLevel/create.gml

From spelunky.gmk, Spelunky Classic 1.1's source, © 2008, 2009 Derek Yu and Mossmouth, LLC, shown whole under the Spelunky User License v1.1b. Extracted by spelunky.ai's tools, an unofficial fan project, one file per script or event; the // ==== lines are the extractor's, naming each action of the event. Some scripts are others' work that Derek Yu credits in the source's readme.txt: Martin Piecyk's platform engine, ChevyRay's view scaling scripts and tsg1zzn's Super Sound System.

oLoadLevel's create event, 88 lines of GML.

global.cleanSolids = false;global.message = "";global.message2 = "";window_set_cursor(cr_default);global.keepScore = false;global.currLevel = 1;levelLoaded = false;msg = "PRESS ESCAPE TO RETURN TO TITLE."msgTimer = 0;GET_FILE_NAME = 0;status = 0;blackOut = false;if (global.customLevel){    status = 1;    blackOut = true;}else{    lifeStart = "4";    bombStart = "4";    ropeStart = "4";    instance_create(256, 64, oLoadButton);    global.prevCustomLevel = "";}levelName = global.firstCustomLevel;author = "ANONYMOUS";music = "CAVE";nextLevel = "";for (j = 0; j < 32; j += 1){    for (i = 0; i < 40; i += 1)    {        levelArray[i, j] = "0";    }}// load level listif (not global.customLevel){    tempFile = file_find_first("levels\*.lvl", 0);    while (tempFile != "")    {        if (string_char_at(tempFile, 0) != "!")        {            break;        }        tempFile = file_find_next();    }    levelList[0] = "";    levelList[0] = tempFile;    levelList[0] = string_delete(levelList[0], string_length(levelList[0])-3, 4);    numLevels = 1;    while (levelList[numLevels-1] != "")    {        tempFile = file_find_next();        if (tempFile != "")        {            if (string_char_at(tempFile, 0) != "!")            {                levelList[numLevels] = tempFile;                levelList[numLevels] = string_delete(levelList[numLevels], string_length(levelList[numLevels])-3, 4);                numLevels += 1;            }        }        else        {            break;        }    }    if (levelList[0] == "") numLevels = 0;    page = 1;    numPages = ceil(numLevels / 10);    instance_deactivate_object(oPageUp);    if (numPages <= 1) instance_deactivate_object(oPageDown);}if (global.customLevel and not levelLoaded){    scrLoadLevel(-1);}else oScreen.enabled = false;