1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-11-11 19:23:01 +00:00

made the equidistant lands generate something without crashing in all geometries

This commit is contained in:
Zeno Rogue
2017-10-30 19:12:33 +01:00
parent 142e39ec4d
commit ccbe7feb96
5 changed files with 44 additions and 5 deletions

View File

@@ -662,6 +662,16 @@ int towerval(cell *c, cellfunction* cf) {
/* other geometries */
void setLandWeird(cell *c) {
if(specialland == laIvoryTower || specialland == laEndorian || specialland == laDungeon || specialland == laOcean) {
int d = celldist(c) - (getDistLimit() - 2);
if(d <= 0)
c->land = laCrossroads4;
else
c->land = specialland, c->landparam = d;
}
}
void setLandQuotient(cell *c) {
int fv = zebra40(c);
if(fv/4 == 4 || fv/4 == 6 || fv/4 == 5 || fv/4 == 10) fv ^= 2;
@@ -669,6 +679,13 @@ void setLandQuotient(cell *c) {
if(fv%4==0 || fv%4 == 2) setland(c, laWarpSea);
if(specialland == laElementalWall)
setland(c, eLand(laEFire + (fv%4)));
if(specialland == laIvoryTower || specialland == laEndorian || specialland == laDungeon || specialland == laOcean) {
int d = celldist(c) - 1;
if(d <= 0)
c->land = laCrossroads4;
else
c->land = specialland, c->landparam = d;
}
}
void setLandSphere(cell *c) {
@@ -700,6 +717,13 @@ void setLandSphere(cell *c) {
if(specialland == laCrossroads3 && c->type != 6 && c->master->fiftyval == 1)
c->wall = waBigTree;
}
if(specialland == laIvoryTower || specialland == laEndorian || specialland == laDungeon || specialland == laOcean) {
int d = celldist(c);
if(d <= 0)
c->land = laCrossroads4;
else
c->land = specialland, c->landparam = d;
}
}
eLand euland[65536];
@@ -880,7 +904,7 @@ void buildBigStuff(cell *c, cell *from) {
}
if(generatingEquidistant) deepOcean = false;
if(weirdhyperbolic && c->land == laOcean) deepOcean = true;
if(weirdhyperbolic && c->land == laOcean) deepOcean = c->landparam >= 30;
// buildgreatwalls