objects/oLevelEditor/keypress_Y.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.
oLevelEditor's keypress Y event, 75 lines of GML.
if (status == EXIT or status == NEW){ file_delete(levelName); exitNames[0] = ""; exitNamesID = 0; signNames[0] = ""; signNamesID = 0; file = file_text_open_write("levels/" + string_lower(levelName)+".lvl"); for (j = 0; j < 32; j += 1) { for (i = 0; i < 40; i += 1) { file_text_write_string(file, levelArray[i, j]); if (levelArray[i, j] == "X" or levelArray[i, j] == "@") { obj = instance_position(16+i*16, 16+j*16, oExit); if (not obj) obj = instance_position(16+i*16, 16+j*16, oEntrance); if (obj) { exitNames[exitNamesID] = obj.leadsTo; exitNamesID += 1; } } else if (levelArray[i, j] == "I") { obj = instance_position(16+i*16, 16+j*16, oMsgSign); if (obj) { signNames[signNamesID] = obj.message; signNamesID += 1; } } } file_text_writeln(file); } file_text_write_string(file, author); file_text_writeln(file); file_text_write_string(file, music); file_text_writeln(file); file_text_write_string(file, lifeStart); file_text_writeln(file); file_text_write_string(file, bombStart); file_text_writeln(file); file_text_write_string(file, ropeStart); file_text_writeln(file); file_text_write_string(file, nextLevel); file_text_writeln(file); file_text_write_string(file, string(exitNamesID)); if (exitNamesID > 0) file_text_writeln(file); for (i = 0; i < exitNamesID; i += 1) { file_text_write_string(file, exitNames[i]); if (i < exitNamesID) file_text_writeln(file); } file_text_write_string(file, string(signNamesID)); if (signNamesID > 0) file_text_writeln(file); for (i = 0; i < signNamesID; i += 1) { file_text_write_string(file, signNames[i]); if (i < signNamesID-1) file_text_writeln(file); } file_text_close(file);}if (status == EXIT){ global.titleStart = 2; if (file_exists("levels/test.tmp")) file_delete("levels/test.tmp"); room_goto(rTitle);}else if (status == NEW){ global.testLevel = ""; room_restart();}