// Overworld
function chunkSO::getTerrainHeight( %this, %x, %y )
{
	if ( strLen( %height = %this.terrainHeight[ %x, %y ] ) )
	{
		return %height;
	}
	
	%height = 63;
	
	if ( %height > 119 )
	{
		%height = 119;
	}
	
	%this.terrainHeight[ %x, %y ] = %height;
	return %height;
}

function chunkSO::getBiome( %this, %x, %y )
{
	%temp = %this.getTemperature( %x, %y );
	%humi = %this.getHumidity( %x, %y );

	if ( %temp < 0 )
	{
		%temp = 0;
	}

	if ( %temp > 1 )
	{
		%temp = 1;
	}

	if ( %humi < 0 )
	{
		%humi = 0;
	}

	if ( %humi > 1 )
	{
		%humi = 1;
	}

	if ( %temp <= 0.25 && %humi <= 0.5 )
	{
		return "tundra";
	}

	if ( %temp <= 0.63 && %humi <= 0.25 )
	{
		return "grass_desert";
	}

	if ( %humi <= 0.25 )
	{
		return "desert";
	}

	if ( %temp >= 0.25 && %temp <= 0.5 && %humi >= 0.25 && %humi <= 0.75 )
	{
		return "taiga";
	}

	if ( %temp >= 0.5 && %temp <= 0.75 && %humi >= 0.25 && %humi <= 0.5 )
	{
		return "woods";
	}

	if ( %temp >= 0.75 && %humi >= 0.25 && %humi <= 0.5 )
	{
		return "savanna";
	}

	if ( %temp >= 0.5 && %temp <= 0.75 && %humi >= 0.5 && %humi <= 0.75 )
	{
		return "forest";
	}

	if ( %temp >= 0.75 && %humi >= 0.5 && %humi <= 0.75 )
	{
		return "seasonal_forest";
	}

	if ( %temp >= 0.5 && %temp <= 0.75 && %humi >= 0.75 )
	{
		return "swamp";
	}

	if ( %temp >= 0.75 && %humi >= 0.75 )
	{
		return "rain_forest";
	}

	return "forest";
}

function fancy_math(%cx,%cy,%x,%y,%z)
{
	%x += %cx * 16;
	%y += %cy * 16;

	//%m = 24;
	//%f = vectorLen( %x SPC %y SPC 0 );
	//return %f / %m;
	//%f -= 24 * mFloor( %f / 24 );
	//return %f / 24;
	%xs = 50;
	%ys = 50;
	%max = ( %xs - 1 ) + ( %ys - 1 );
	%val = %x + %y;
	%fac = %val / %max;
	return %fac;

	%val = %x - ( %xs / ( 1 + getRandom() ) );
	%val /= %y - ( %ys / ( 1 + getRandom() ) );
	%val /=  %xs * %ys ;
	return %val;
}

function chunkSO::getTemperature( %this, %x, %y )
{
	return %x / 25;
	return fancy_math(getword(%this.position,1),getword(%this.position,1),%x,%y);
	return 0.65;
}

function chunkSO::getHumidity( %this, %x, %y )
{
	return %y / 25;
	return fancy_math(getword(%this.position,1),getword(%this.position,1),%x,%y);
	return 0.65;
}

// Nether
// Aether
// The End