1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-12-27 02:20:36 +00:00

ls:: fixed the generation of various lands in horodisk/voronoi

This commit is contained in:
Zeno Rogue 2023-09-18 11:24:45 +02:00
parent 66ea0804cf
commit 9fbc73025e

View File

@ -276,7 +276,7 @@ EX void place_random_gate_continuous(cell *c) {
} }
EX void giantLandSwitch(cell *c, int d, cell *from) { EX void giantLandSwitch(cell *c, int d, cell *from) {
bool fargen = d == min(BARLEV, ls::hv_structure() ? 8 : 9); bool fargen = d == 9;
switch(c->land) { switch(c->land) {
case laPrairie: // ------------------------------------------------------------- case laPrairie: // -------------------------------------------------------------
@ -405,7 +405,7 @@ EX void giantLandSwitch(cell *c, int d, cell *from) {
} }
else { else {
if(d == (ls::hv_structure() ? 8 : 9)) { if(d == 9) {
cell *c2 = NONSTDVAR ? c->master->c7 : c; cell *c2 = NONSTDVAR ? c->master->c7 : c;
if(cdist50(c2) == 3 && polarb50(c2)) if(cdist50(c2) == 3 && polarb50(c2))
c->wall = waPalace; c->wall = waPalace;
@ -1669,13 +1669,11 @@ EX void giantLandSwitch(cell *c, int d, cell *from) {
if(d == 8 && c->land == laKraken && kraken_pseudohept(c) && hrand(1000) <= 2) { if(d == 8 && c->land == laKraken && kraken_pseudohept(c) && hrand(1000) <= 2) {
c->wall = waNone; c->wall = waNone;
if(ls::hv_structure()) forCellCM(c2, c) setdist(c2, 8, c);
forCellEx(c2, c) c2->wall = waNone; forCellEx(c2, c) c2->wall = waNone;
} }
if(d == 8 && !kraken_pseudohept(c) && hrand_monster(20000) < 10 + 3 * items[itKraken] + 2 * yendor::hardness() && c->wall == waSea && !c->item && !c->monst && !safety) { if(d == 8 && !kraken_pseudohept(c) && hrand_monster(20000) < 10 + 3 * items[itKraken] + 2 * yendor::hardness() && c->wall == waSea && !c->item && !c->monst && !safety) {
bool ok = true; bool ok = true;
if(ls::hv_structure()) forCellCM(c2, c) setdist(c2, 8, c);
forCellEx(c2, c) forCellEx(c2, c)
if(c2->wall != waSea || c2->item || c2->monst) if(c2->wall != waSea || c2->item || c2->monst)
ok = false; ok = false;
@ -1984,7 +1982,7 @@ EX void giantLandSwitch(cell *c, int d, cell *from) {
for(int i=0; i<c->type; i++) { for(int i=0; i<c->type; i++) {
cell *c2 = c->move(i); cell *c2 = c->move(i);
if(c2 && c2->wall == waRose) nww++; if(c2 && c2->wall == waRose) nww++;
if(c2 && !ls::any_chaos() && !ls::hv_structure()) for(int j=0; j<c2->type; j++) { if(c2 && !ls::any_chaos()) for(int j=0; j<c2->type; j++) {
cell *c3 = c2->move(j); cell *c3 = c2->move(j);
// note: c3->land is required for Android -- // note: c3->land is required for Android --
// not strictly equivalent since another land there might be not yet generated // not strictly equivalent since another land there might be not yet generated
@ -2543,7 +2541,7 @@ EX void giantLandSwitch(cell *c, int d, cell *from) {
case laEclectic: { case laEclectic: {
if(d >= (ls::hv_structure() ? 8 : 9)) c->wall = waChasm; if(d >= 9) c->wall = waChasm;
if(d == 8) wfc::schedule(c); if(d == 8) wfc::schedule(c);
@ -2748,7 +2746,7 @@ EX void giantLandSwitch(cell *c, int d, cell *from) {
break; break;
case laFrog: case laFrog:
if(d == (ls::hv_structure() ? 8 : 9)) { if(d == 9) {
if(randomPatternsMode ? RANDPAT : !is_zebra_trapdoor(c)) { if(randomPatternsMode ? RANDPAT : !is_zebra_trapdoor(c)) {
if(hrand(2000) < PT(100 + 2 * kills[moFrog] + 2 * kills[moPhaser] + 2 * kills[moVaulter], 100) && notDippingFor(itFrog)) { if(hrand(2000) < PT(100 + 2 * kills[moFrog] + 2 * kills[moPhaser] + 2 * kills[moVaulter], 100) && notDippingFor(itFrog)) {
bool ok = true; bool ok = true;
@ -3048,10 +3046,13 @@ EX void setdist(cell *c, int d, cell *from) {
if(!c->monst) c->stuntime = 0; if(!c->monst) c->stuntime = 0;
giantLandSwitch(c, d, from); bool big_first = ls::hv_structure();
if(!big_first) giantLandSwitch(c, d, from);
if(d == min(reduced_barlev, 9)) moreBigStuff(c); if(d == min(reduced_barlev, 9)) moreBigStuff(c);
if(big_first) giantLandSwitch(c, d, from);
if(d == 7) repairLandgen(c); if(d == 7) repairLandgen(c);
// the number of tiles in the standard geometry has about 7553 digits! // the number of tiles in the standard geometry has about 7553 digits!