feat: TU19 (Dec 2014) Features & Content (#155)
* try to resolve merge conflict
* feat: TU19 (Dec 2014) Features & Content (#32)
* December 2014 files
* Working release build
* Fix compilation issues
* Add sound to Windows64Media
* Add DLC content and force Tutorial DLC
* Revert "Add DLC content and force Tutorial DLC"
This reverts commit 97a4399472.
* Disable broken light packing
* Disable breakpoint during DLC texture map load
Allows DLC loading but the DLC textures are still broken
* Fix post build not working
* ...
* fix vs2022 build
* fix cmake build
---------
Co-authored-by: Loki <lokirautio@gmail.com>
This commit is contained in:
@@ -11,16 +11,16 @@ LakeFeature::LakeFeature(int tile)
|
||||
|
||||
bool LakeFeature::place(Level *level, Random *random, int x, int y, int z)
|
||||
{
|
||||
x -= 8;
|
||||
z -= 8;
|
||||
while (y > 5 && level->isEmptyTile(x, y, z))
|
||||
y--;
|
||||
x -= 8;
|
||||
z -= 8;
|
||||
while (y > 5 && level->isEmptyTile(x, y, z))
|
||||
y--;
|
||||
if (y <= 4)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
y -= 4;
|
||||
y -= 4;
|
||||
|
||||
bool grid[16*16*8] = {0};
|
||||
|
||||
@@ -32,7 +32,7 @@ bool LakeFeature::place(Level *level, Random *random, int x, int y, int z)
|
||||
int minX = x;
|
||||
int minY = y;
|
||||
int minZ = z;
|
||||
|
||||
|
||||
int maxX = x + 16;
|
||||
int maxY = y + 8;
|
||||
int maxZ = z + 16;
|
||||
@@ -45,98 +45,97 @@ bool LakeFeature::place(Level *level, Random *random, int x, int y, int z)
|
||||
}
|
||||
}
|
||||
|
||||
int spots = random->nextInt(4) + 4;
|
||||
for (int i = 0; i < spots; i++)
|
||||
int spots = random->nextInt(4) + 4;
|
||||
for (int i = 0; i < spots; i++)
|
||||
{
|
||||
double xr = random->nextDouble() * 6 + 3;
|
||||
double yr = random->nextDouble() * 4 + 2;
|
||||
double zr = random->nextDouble() * 6 + 3;
|
||||
double xr = random->nextDouble() * 6 + 3;
|
||||
double yr = random->nextDouble() * 4 + 2;
|
||||
double zr = random->nextDouble() * 6 + 3;
|
||||
|
||||
double xp = random->nextDouble() * (16 - xr - 2) + 1 + xr / 2;
|
||||
double yp = random->nextDouble() * (8 - yr - 4) + 2 + yr / 2;
|
||||
double zp = random->nextDouble() * (16 - zr - 2) + 1 + zr / 2;
|
||||
double xp = random->nextDouble() * (16 - xr - 2) + 1 + xr / 2;
|
||||
double yp = random->nextDouble() * (8 - yr - 4) + 2 + yr / 2;
|
||||
double zp = random->nextDouble() * (16 - zr - 2) + 1 + zr / 2;
|
||||
|
||||
for (int xx = 1; xx < 15; xx++)
|
||||
for (int xx = 1; xx < 15; xx++)
|
||||
{
|
||||
for (int zz = 1; zz < 15; zz++)
|
||||
for (int zz = 1; zz < 15; zz++)
|
||||
{
|
||||
for (int yy = 1; yy < 7; yy++)
|
||||
for (int yy = 1; yy < 7; yy++)
|
||||
{
|
||||
double xd = ((xx - xp) / (xr / 2));
|
||||
double yd = ((yy - yp) / (yr / 2));
|
||||
double zd = ((zz - zp) / (zr / 2));
|
||||
double d = xd * xd + yd * yd + zd * zd;
|
||||
if (d < 1) grid[((xx) * 16 + (zz)) * 8 + (yy)] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
double xd = ((xx - xp) / (xr / 2));
|
||||
double yd = ((yy - yp) / (yr / 2));
|
||||
double zd = ((zz - zp) / (zr / 2));
|
||||
double d = xd * xd + yd * yd + zd * zd;
|
||||
if (d < 1) grid[((xx) * 16 + (zz)) * 8 + (yy)] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int xx = 0; xx < 16; xx++)
|
||||
for (int xx = 0; xx < 16; xx++)
|
||||
{
|
||||
for (int zz = 0; zz < 16; zz++)
|
||||
for (int zz = 0; zz < 16; zz++)
|
||||
{
|
||||
for (int yy = 0; yy < 8; yy++)
|
||||
for (int yy = 0; yy < 8; yy++)
|
||||
{
|
||||
bool check = !grid[((xx) * 16 + (zz)) * 8 + (yy)] && (
|
||||
(xx < 15 && grid[((xx + 1) * 16 + (zz)) * 8 + (yy)])
|
||||
|| (xx > 0 && grid[((xx - 1) * 16 + (zz)) * 8 + (yy)])
|
||||
|| (zz < 15 && grid[((xx) * 16 + (zz + 1)) * 8 + (yy)])
|
||||
|| (zz > 0 && grid[((xx) * 16 + (zz - 1)) * 8 + (yy)])
|
||||
|| (yy < 7 && grid[((xx) * 16 + (zz)) * 8 + (yy + 1)])
|
||||
|| (yy > 0 && grid[((xx) * 16 + (zz)) * 8 + (yy - 1)]));
|
||||
bool check = !grid[((xx) * 16 + (zz)) * 8 + (yy)] && ((xx < 15 && grid[((xx + 1) * 16 + (zz)) * 8 + (yy)])//
|
||||
|| (xx > 0 && grid[((xx - 1) * 16 + (zz)) * 8 + (yy)])
|
||||
|| (zz < 15 && grid[((xx) * 16 + (zz + 1)) * 8 + (yy)])
|
||||
|| (zz > 0 && grid[((xx) * 16 + (zz - 1)) * 8 + (yy)])
|
||||
|| (yy < 7 && grid[((xx) * 16 + (zz)) * 8 + (yy + 1)])
|
||||
|| (yy > 0 && grid[((xx) * 16 + (zz)) * 8 + (yy - 1)]));
|
||||
|
||||
if (check)
|
||||
if (check)
|
||||
{
|
||||
Material *m = level->getMaterial(x + xx, y + yy, z + zz);
|
||||
if (yy >= 4 && m->isLiquid()) return false;
|
||||
if (yy < 4 && (!m->isSolid() && level->getTile(x + xx, y + yy, z + zz) != tile)) return false;
|
||||
Material *m = level->getMaterial(x + xx, y + yy, z + zz);
|
||||
if (yy >= 4 && m->isLiquid()) return false;
|
||||
if (yy < 4 && (!m->isSolid() && level->getTile(x + xx, y + yy, z + zz) != tile)) return false;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int xx = 0; xx < 16; xx++)
|
||||
for (int xx = 0; xx < 16; xx++)
|
||||
{
|
||||
for (int zz = 0; zz < 16; zz++)
|
||||
for (int zz = 0; zz < 16; zz++)
|
||||
{
|
||||
for (int yy = 0; yy < 8; yy++)
|
||||
for (int yy = 0; yy < 8; yy++)
|
||||
{
|
||||
if (grid[((xx) * 16 + (zz)) * 8 + (yy)])
|
||||
if (grid[((xx) * 16 + (zz)) * 8 + (yy)])
|
||||
{
|
||||
level->setTileNoUpdate(x + xx, y + yy, z + zz, yy >= 4 ? 0 : tile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
level->setTileAndData(x + xx, y + yy, z + zz, yy >= 4 ? 0 : tile, 0, Tile::UPDATE_CLIENTS);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int xx = 0; xx < 16; xx++)
|
||||
for (int xx = 0; xx < 16; xx++)
|
||||
{
|
||||
for (int zz = 0; zz < 16; zz++)
|
||||
for (int zz = 0; zz < 16; zz++)
|
||||
{
|
||||
for (int yy = 4; yy < 8; yy++)
|
||||
for (int yy = 4; yy < 8; yy++)
|
||||
{
|
||||
if (grid[((xx) * 16 + (zz)) * 8 + (yy)])
|
||||
if (grid[((xx) * 16 + (zz)) * 8 + (yy)])
|
||||
{
|
||||
if (level->getTile(x + xx, y + yy - 1, z + zz) == Tile::dirt_Id && level->getBrightness(LightLayer::Sky, x + xx, y + yy, z + zz) > 0)
|
||||
if (level->getTile(x + xx, y + yy - 1, z + zz) == Tile::dirt_Id && level->getBrightness(LightLayer::Sky, x + xx, y + yy, z + zz) > 0)
|
||||
{
|
||||
Biome *b = level->getBiome(x + xx, z + zz);
|
||||
if (b->topMaterial == Tile::mycel_Id) level->setTileNoUpdate(x + xx, y + yy - 1, z + zz, Tile::mycel_Id);
|
||||
else level->setTileNoUpdate(x + xx, y + yy - 1, z + zz, Tile::grass_Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (b->topMaterial == Tile::mycel_Id) level->setTileAndData(x + xx, y + yy - 1, z + zz, Tile::mycel_Id, 0, Tile::UPDATE_CLIENTS);
|
||||
else level->setTileAndData(x + xx, y + yy - 1, z + zz, Tile::grass_Id, 0, Tile::UPDATE_CLIENTS);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (Tile::tiles[tile]->material == Material::lava)
|
||||
if (Tile::tiles[tile]->material == Material::lava)
|
||||
{
|
||||
for (int xx = 0; xx < 16; xx++)
|
||||
for (int xx = 0; xx < 16; xx++)
|
||||
{
|
||||
for (int zz = 0; zz < 16; zz++)
|
||||
for (int zz = 0; zz < 16; zz++)
|
||||
{
|
||||
for (int yy = 0; yy < 8; yy++)
|
||||
for (int yy = 0; yy < 8; yy++)
|
||||
{
|
||||
bool check = !grid[((xx) * 16 + (zz)) * 8 + (yy)] && (
|
||||
(xx < 15 && grid[(((xx + 1) * 16 + (zz)) * 8 + (yy))])
|
||||
@@ -146,30 +145,30 @@ bool LakeFeature::place(Level *level, Random *random, int x, int y, int z)
|
||||
|| (yy < 7 && grid[(((xx) * 16 + (zz)) * 8 + (yy + 1))])
|
||||
|| (yy > 0 && grid[(((xx) * 16 + (zz)) * 8 + (yy - 1))]));
|
||||
|
||||
if (check)
|
||||
if (check)
|
||||
{
|
||||
if ((yy<4 || random->nextInt(2)!=0) && level->getMaterial(x + xx, y + yy, z + zz)->isSolid())
|
||||
if ((yy<4 || random->nextInt(2)!=0) && level->getMaterial(x + xx, y + yy, z + zz)->isSolid())
|
||||
{
|
||||
level->setTileNoUpdate(x + xx, y + yy, z + zz, Tile::rock_Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
level->setTileAndData(x + xx, y + yy, z + zz, Tile::stone_Id, 0, Tile::UPDATE_CLIENTS);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 4J - brought forward from 1.8.2
|
||||
if (Tile::tiles[tile]->material == Material::water)
|
||||
if (Tile::tiles[tile]->material == Material::water)
|
||||
{
|
||||
for (int xx = 0; xx < 16; xx++)
|
||||
for (int xx = 0; xx < 16; xx++)
|
||||
{
|
||||
for (int zz = 0; zz < 16; zz++)
|
||||
for (int zz = 0; zz < 16; zz++)
|
||||
{
|
||||
int yy = 4;
|
||||
if (level->shouldFreezeIgnoreNeighbors(x + xx, y + yy, z + zz)) level->setTileNoUpdate(x + xx, y + yy, z + zz, Tile::ice_Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
int yy = 4;
|
||||
if (level->shouldFreezeIgnoreNeighbors(x + xx, y + yy, z + zz)) level->setTileAndData(x + xx, y + yy, z + zz, Tile::ice_Id, 0, Tile::UPDATE_CLIENTS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user