diff --git a/bigstuff.cpp b/bigstuff.cpp index e1336636..4a76ec0d 100644 --- a/bigstuff.cpp +++ b/bigstuff.cpp @@ -421,6 +421,10 @@ bool checkInTree(cell *c, int maxv) { void buildEquidistant(cell *c) { if(!c) return; if(c->landparam) return; + if(weirdhyperbolic) { + c->landparam = 50; + return; + } if(geometry) return; eLand b = c->land; if(chaosmode && !inmirror(b)) return; @@ -876,6 +880,7 @@ void buildBigStuff(cell *c, cell *from) { } if(generatingEquidistant) deepOcean = false; + if(weirdhyperbolic && c->land == laOcean) deepOcean = true; // buildgreatwalls @@ -1094,13 +1099,21 @@ void moreBigStuff(cell *c) { if(!euclid) generateAlts(c->master); preventbarriers(c); if(d == 10) { - if(pseudohept(c)) buildCamelotWall(c); + if(weirdhyperbolic ? hrand(100) < 50 : pseudohept(c)) buildCamelotWall(c); else { if(!euclid) for(int i=0; imaster->move[i]); int q = 0; - for(int t=0; tmov[t]) == 10 && !pseudohept(c->mov[t])) q++; + if(weirdhyperbolic) { + for(int t=0; ttype; t++) createMov(c, t); + q = hrand(100); + if(q < 10) q = 0; + else if(q < 50) q = 1; + } + else { + for(int t=0; ttype; t++) { + createMov(c, t); + if(celldistAltRelative(c->mov[t]) == 10 && !pseudohept(c->mov[t])) q++; + } } if(q == 1) buildCamelotWall(c); // towers of Camelot @@ -1163,12 +1176,12 @@ void moreBigStuff(cell *c) { c->land = laTemple, c->wall = waNone, c->monst = moNone, c->item = itNone; } if(d % TEMPLE_EACH==0) { - if(pseudohept(c)) + if((weirdhyperbolic && purehepta) ? hrand(100) < 50 : pseudohept(c)) c->wall = waColumn; else { if(!euclid) for(int i=0; imaster->move[i]); int q = 0; - for(int t=0; t<6; t++) { + for(int t=0; ttype; t++) { createMov(c, t); if(celldistAlt(c->mov[t]) % TEMPLE_EACH == 0 && !ishept(c->mov[t])) q++; } diff --git a/classes.cpp b/classes.cpp index 53e202e3..9c240cb0 100644 --- a/classes.cpp +++ b/classes.cpp @@ -1625,7 +1625,7 @@ eLand land_sph[LAND_SPH] = { #define LAND_OCT 36 eLand land_oct[LAND_OCT] = { laWarpCoast, laIce, laDesert, laCaves, laJungle, laAlchemist, - laGraveyard, laRlyeh, laHell, laCocytus, laMotion, + laGraveyard, laTemple, laHell, laCocytus, laMotion, laDryForest, laDeadCaves, laRedRock, laMinefield, laLivefjord, laStorms, laOvergrown, laRose, laKraken, laBurial, laTrollheim, laBull, laHunting, diff --git a/complex.cpp b/complex.cpp index 4d90a486..45be3122 100644 --- a/complex.cpp +++ b/complex.cpp @@ -898,7 +898,7 @@ namespace whirlpool { if(i == c->type) return NULL; if(d>d2) next = -next; for(int j=1; jtype; j++) { - cell *c2 = c->mov[(i+420+next*j) % c->type]; + cell *c2 = c->mov[(i+MODFIXER+next*j) % c->type]; if(celldistAlt(c2) == d) return c2; } return NULL;