diff --git a/classes.cpp b/classes.cpp index 4f8541ba..0b589c37 100644 --- a/classes.cpp +++ b/classes.cpp @@ -708,7 +708,8 @@ EX vector land_tac = { EX vector randlands = { laIce, laDesert, laCaves, laAlchemist, laGraveyard, laPower, laLivefjord, laZebra, laRlyeh, laDryForest, laEmerald, laWineyard, laDeadCaves, laRedRock, - laOvergrown, laWildWest, laWarpCoast, laRuins, laBull, laDragon, laReptile, laDocks + laOvergrown, laWildWest, laWarpCoast, laRuins, laBull, laDragon, laReptile, laDocks, + laFrog, laWet, laZebra }; #if HDR diff --git a/landgen.cpp b/landgen.cpp index 38b70674..393da19b 100644 --- a/landgen.cpp +++ b/landgen.cpp @@ -744,7 +744,7 @@ EX void giantLandSwitch(cell *c, int d, cell *from) { case laZebra: if(d==8) - c->wall = is_zebra_trapdoor(c) ? waTrapdoor : waNone; + c->wall = (randomPatternsMode ? RANDPAT : is_zebra_trapdoor(c)) ? waTrapdoor : waNone; ONEMPTY { if(c->wall == waNone && hrand(2500) < PT(100 + 2 * (kills[moOrangeDog]), 300) && notDippingFor(itZebra)) @@ -756,7 +756,9 @@ EX void giantLandSwitch(cell *c, int d, cell *from) { case laWineyard: if(d==8) { - if(euclid && bounded) ; + if(randomPatternsMode) + c->wall = RANDPAT ? waVinePlant : waNone; + else if(euclid && bounded) ; #if CAP_ARCM else if(arcm::in() && arcm::current.have_line) c->wall = arcm::linespattern(c) ? waVinePlant : waNone; @@ -786,8 +788,7 @@ EX void giantLandSwitch(cell *c, int d, cell *from) { if(v == 0) c->wall = waStone; else { int w = v / 4; - if(randomPatternsMode) c->wall = RANDPAT ? waVinePlant : waNone; - else if(w == 9 || w == 10 || w == 7 || w == 8) { + if(w == 9 || w == 10 || w == 7 || w == 8) { c->wall = waVinePlant; } else if(v == 24 || v == 58 || v == 26 || v == 56) @@ -2636,6 +2637,13 @@ EX void giantLandSwitch(cell *c, int d, cell *from) { // if(wet::wetdata.empty()) wet::build_data(); eWall wetwalls[10] = {waNone, waNone, waDeepWater, waDeepWater, waDeepWater, waShallow, waShallow, waShallow, waStone, waStone}; c->wall = wetwalls[hrand(10)]; // wet::wetdata[windmap::getId(c)]]; + if(randomPatternsMode) { + int a = 0; + if(RANDPAT) a++; + if(RANDPATV(laAsteroids)) a += 2; + eWall wetwalls[4] = { waNone, waShallow, waStone, waDeepWater }; + c->wall = wetwalls[a]; + } if(among(c->wall, waDeepWater, waShallow) && hrand_monster(4000) < 2 * (items[itWet] + yendor::hardness() + 5)) c->monst = hrand(100) >= 90 ? moRusalka : moPike; if(c->wall == waShallow && hrand(2000) < min(PT(100 + kills[moPike] + kills[moRusalka], 150), 150) && notDippingFor(itWet)) @@ -2645,7 +2653,7 @@ EX void giantLandSwitch(cell *c, int d, cell *from) { case laFrog: if(d == 9) { - if(!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)) { bool ok = true; forCellCM(c1, c) if(c1->item) ok = false;