mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-12-08 20:38:47 +00:00
Added JSOnion and Spelunky samples to GML corpus
This commit is contained in:
298
samples/Game Maker Language/scrInitLevel.gml
Normal file
298
samples/Game Maker Language/scrInitLevel.gml
Normal file
@@ -0,0 +1,298 @@
|
||||
// Originally from /spelunky/Scripts/Level Generation/scrInitLevel.gml in the Spelunky Community Update Project
|
||||
|
||||
//
|
||||
// scrInitLevel()
|
||||
//
|
||||
// Calls scrLevelGen(), scrRoomGen*(), and scrEntityGen() to build level.
|
||||
//
|
||||
|
||||
/**********************************************************************************
|
||||
Copyright (c) 2008, 2009 Derek Yu and Mossmouth, LLC
|
||||
|
||||
This file is part of Spelunky.
|
||||
|
||||
You can redistribute and/or modify Spelunky, including its source code, under
|
||||
the terms of the Spelunky User License.
|
||||
|
||||
Spelunky is distributed in the hope that it will be entertaining and useful,
|
||||
but WITHOUT WARRANTY. Please see the Spelunky User License for more details.
|
||||
|
||||
The Spelunky User License should be available in "Game Information", which
|
||||
can be found in the Resource Explorer, or as an external file called COPYING.
|
||||
If not, please obtain a new copy of Spelunky from <http://spelunkyworld.com/>
|
||||
|
||||
***********************************************************************************/
|
||||
|
||||
global.levelType = 0;
|
||||
//global.currLevel = 16;
|
||||
if (global.currLevel > 4 and global.currLevel < 9) global.levelType = 1;
|
||||
if (global.currLevel > 8 and global.currLevel < 13) global.levelType = 2;
|
||||
if (global.currLevel > 12 and global.currLevel < 16) global.levelType = 3;
|
||||
if (global.currLevel == 16) global.levelType = 4;
|
||||
|
||||
if (global.currLevel <= 1 or
|
||||
global.currLevel == 5 or
|
||||
global.currLevel == 9 or
|
||||
global.currLevel == 13)
|
||||
{
|
||||
global.hadDarkLevel = false;
|
||||
}
|
||||
|
||||
// global.levelType = 3; // debug
|
||||
|
||||
// DEBUG MODE //
|
||||
/*
|
||||
if (global.currLevel == 2) global.levelType = 4;
|
||||
if (global.currLevel == 3) global.levelType = 2;
|
||||
if (global.currLevel == 4) global.levelType = 3;
|
||||
if (global.currLevel == 5) global.levelType = 4;
|
||||
*/
|
||||
|
||||
// global.levelType = 0;
|
||||
|
||||
global.startRoomX = 0;
|
||||
global.startRoomY = 0;
|
||||
global.endRoomX = 0;
|
||||
global.endRoomY = 0;
|
||||
oGame.levelGen = false;
|
||||
|
||||
// this is used to determine the path to the exit (generally no bombs required)
|
||||
for (i = 0; i < 4; i += 1)
|
||||
{
|
||||
for (j = 0; j < 4; j += 1)
|
||||
{
|
||||
global.roomPath[i,j] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// side walls
|
||||
if (global.levelType == 4)
|
||||
k = 54;
|
||||
else if (global.levelType == 2)
|
||||
k = 38;
|
||||
else if (global.lake)
|
||||
k = 41;
|
||||
else
|
||||
k = 33;
|
||||
for (i = 0; i <= 42; i += 1)
|
||||
{
|
||||
for (j = 0; j <= k; j += 1)
|
||||
{
|
||||
if (not isLevel())
|
||||
{
|
||||
i = 999;
|
||||
j = 999;
|
||||
}
|
||||
else if (global.levelType == 2)
|
||||
{
|
||||
if (i*16 == 0 or
|
||||
i*16 == 656 or
|
||||
j*16 == 0)
|
||||
{
|
||||
obj = instance_create(i*16, j*16, oDark);
|
||||
obj.invincible = true;
|
||||
obj.sprite_index = sDark;
|
||||
}
|
||||
}
|
||||
else if (global.levelType == 4)
|
||||
{
|
||||
if (i*16 == 0 or
|
||||
i*16 == 656 or
|
||||
j*16 == 0)
|
||||
{
|
||||
obj = instance_create(i*16, j*16, oTemple);
|
||||
obj.invincible = true;
|
||||
if (not global.cityOfGold) obj.sprite_index = sTemple;
|
||||
}
|
||||
}
|
||||
else if (global.lake)
|
||||
{
|
||||
if (i*16 == 0 or
|
||||
i*16 == 656 or
|
||||
j*16 == 0 or
|
||||
j*16 >= 656)
|
||||
{
|
||||
obj = instance_create(i*16, j*16, oLush); obj.sprite_index = sLush;
|
||||
obj.invincible = true;
|
||||
}
|
||||
}
|
||||
else if (i*16 == 0 or
|
||||
i*16 == 656 or
|
||||
j*16 == 0 or
|
||||
j*16 >= 528)
|
||||
{
|
||||
if (global.levelType == 0) { obj = instance_create(i*16, j*16, oBrick); obj.sprite_index = sBrick; }
|
||||
else if (global.levelType == 1) { obj = instance_create(i*16, j*16, oLush); obj.sprite_index = sLush; }
|
||||
else { obj = instance_create(i*16, j*16, oTemple); if (not global.cityOfGold) obj.sprite_index = sTemple; }
|
||||
obj.invincible = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (global.levelType == 2)
|
||||
{
|
||||
for (i = 0; i <= 42; i += 1)
|
||||
{
|
||||
instance_create(i*16, 40*16, oDark);
|
||||
//instance_create(i*16, 35*16, oSpikes);
|
||||
}
|
||||
}
|
||||
|
||||
if (global.levelType == 3)
|
||||
{
|
||||
background_index = bgTemple;
|
||||
}
|
||||
|
||||
global.temp1 = global.gameStart;
|
||||
scrLevelGen();
|
||||
|
||||
global.cemetary = false;
|
||||
if (global.levelType == 1 and rand(1,global.probCemetary) == 1) global.cemetary = true;
|
||||
|
||||
with oRoom
|
||||
{
|
||||
if (global.levelType == 0) scrRoomGen();
|
||||
else if (global.levelType == 1)
|
||||
{
|
||||
if (global.blackMarket) scrRoomGenMarket();
|
||||
else scrRoomGen2();
|
||||
}
|
||||
else if (global.levelType == 2)
|
||||
{
|
||||
if (global.yetiLair) scrRoomGenYeti();
|
||||
else scrRoomGen3();
|
||||
}
|
||||
else if (global.levelType == 3) scrRoomGen4();
|
||||
else scrRoomGen5();
|
||||
}
|
||||
|
||||
global.darkLevel = false;
|
||||
//if (not global.hadDarkLevel and global.currLevel != 0 and global.levelType != 2 and global.currLevel != 16 and rand(1,1) == 1)
|
||||
if (not global.hadDarkLevel and not global.noDarkLevel and global.currLevel != 0 and global.currLevel != 1 and global.levelType != 2 and global.currLevel != 16 and rand(1,global.probDarkLevel) == 1)
|
||||
{
|
||||
global.darkLevel = true;
|
||||
global.hadDarkLevel = true;
|
||||
//instance_create(oPlayer1.x, oPlayer1.y, oFlare);
|
||||
}
|
||||
|
||||
if (global.blackMarket) global.darkLevel = false;
|
||||
|
||||
global.genUdjatEye = false;
|
||||
if (not global.madeUdjatEye)
|
||||
{
|
||||
if (global.currLevel == 2 and rand(1,3) == 1) global.genUdjatEye = true;
|
||||
else if (global.currLevel == 3 and rand(1,2) == 1) global.genUdjatEye = true;
|
||||
else if (global.currLevel == 4) global.genUdjatEye = true;
|
||||
}
|
||||
|
||||
global.genMarketEntrance = false;
|
||||
if (not global.madeMarketEntrance)
|
||||
{
|
||||
if (global.currLevel == 5 and rand(1,3) == 1) global.genMarketEntrance = true;
|
||||
else if (global.currLevel == 6 and rand(1,2) == 1) global.genMarketEntrance = true;
|
||||
else if (global.currLevel == 7) global.genMarketEntrance = true;
|
||||
}
|
||||
|
||||
////////////////////////////
|
||||
// ENTITY / TREASURES
|
||||
////////////////////////////
|
||||
global.temp2 = global.gameStart;
|
||||
if (not isRoom("rTutorial") and not isRoom("rLoadLevel")) scrEntityGen();
|
||||
|
||||
if (instance_exists(oEntrance) and not global.customLevel)
|
||||
{
|
||||
oPlayer1.x = oEntrance.x+8;
|
||||
oPlayer1.y = oEntrance.y+8;
|
||||
}
|
||||
|
||||
if (global.darkLevel or
|
||||
global.blackMarket or
|
||||
global.snakePit or
|
||||
global.cemetary or
|
||||
global.lake or
|
||||
global.yetiLair or
|
||||
global.alienCraft or
|
||||
global.sacrificePit or
|
||||
global.cityOfGold)
|
||||
{
|
||||
if (not isRoom("rLoadLevel"))
|
||||
{
|
||||
with oPlayer1 { alarm[0] = 10; }
|
||||
}
|
||||
}
|
||||
|
||||
if (global.levelType == 4) scrSetupWalls(864);
|
||||
else if (global.lake) scrSetupWalls(656);
|
||||
else scrSetupWalls(528);
|
||||
|
||||
// add background details
|
||||
if (global.graphicsHigh)
|
||||
{
|
||||
repeat(20)
|
||||
{
|
||||
// bg = instance_create(16*rand(1,42), 16*rand(1,33), oCaveBG);
|
||||
if (global.levelType == 1 and rand(1,3) < 3)
|
||||
tile_add(bgExtrasLush, 32*rand(0,1), 0, 32, 32, 16*rand(1,42), 16*rand(1,33), 10002);
|
||||
else if (global.levelType == 2 and rand(1,3) < 3)
|
||||
tile_add(bgExtrasIce, 32*rand(0,1), 0, 32, 32, 16*rand(1,42), 16*rand(1,33), 10002);
|
||||
else if (global.levelType == 3 and rand(1,3) < 3)
|
||||
tile_add(bgExtrasTemple, 32*rand(0,1), 0, 32, 32, 16*rand(1,42), 16*rand(1,33), 10002);
|
||||
else
|
||||
tile_add(bgExtras, 32*rand(0,1), 0, 32, 32, 16*rand(1,42), 16*rand(1,33), 10002);
|
||||
}
|
||||
}
|
||||
|
||||
oGame.levelGen = true;
|
||||
|
||||
// generate angry shopkeeper at exit if murderer or thief
|
||||
if ((global.murderer or global.thiefLevel > 0) and isRealLevel())
|
||||
{
|
||||
with oExit
|
||||
{
|
||||
if (type == "Exit")
|
||||
{
|
||||
obj = instance_create(x, y, oShopkeeper);
|
||||
obj.status = 4;
|
||||
}
|
||||
}
|
||||
// global.thiefLevel -= 1;
|
||||
}
|
||||
|
||||
with oTreasure
|
||||
{
|
||||
if (collision_point(x, y, oSolid, 0, 0))
|
||||
{
|
||||
obj = instance_place(x, y, oSolid);
|
||||
if (obj.invincible) instance_destroy();
|
||||
}
|
||||
}
|
||||
|
||||
with oWater
|
||||
{
|
||||
if (sprite_index == sWaterTop or sprite_index == sLavaTop)
|
||||
{
|
||||
scrCheckWaterTop();
|
||||
}
|
||||
/*
|
||||
obj = instance_place(x-16, y, oWater);
|
||||
if (instance_exists(obj))
|
||||
{
|
||||
if (obj.sprite_index == sWaterTop or obj.sprite_index == sLavaTop)
|
||||
{
|
||||
if (type == "Lava") sprite_index = sLavaTop;
|
||||
else sprite_index = sWaterTop;
|
||||
}
|
||||
}
|
||||
obj = instance_place(x+16, y, oWater);
|
||||
if (instance_exists(obj))
|
||||
{
|
||||
if (obj.sprite_index == sWaterTop or obj.sprite_index == sLavaTop)
|
||||
{
|
||||
if (type == "Lava") sprite_index = sLavaTop;
|
||||
else sprite_index = sWaterTop;
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
global.temp3 = global.gameStart;
|
||||
Reference in New Issue
Block a user