From 8a407f45058b9bbe11f9c8e43dc5ec38153e31d1 Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Wed, 27 Mar 2024 16:51:02 +0100 Subject: [PATCH] specially generated lands now respect Unlocked and LandIngame rules --- bigstuff.cpp | 17 +++++++++-------- landlock.cpp | 5 +++++ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/bigstuff.cpp b/bigstuff.cpp index c593d50e..4d0f32a9 100644 --- a/bigstuff.cpp +++ b/bigstuff.cpp @@ -1005,7 +1005,7 @@ EX void buildEquidistant(cell *c) { if(c->landparam > 30 && b == laOcean && !generatingEquidistant && !mhybrid && hrand(10) < 5 && chance) buildAnotherEquidistant(c); - if(c->landparam > HAUNTED_RADIUS+5 && b == laGraveyard && !generatingEquidistant && !mhybrid && hrand(100) < (PURE?25:5) && items[itBone] >= U10 && chance) + if(c->landparam > HAUNTED_RADIUS+5 && b == laGraveyard && !generatingEquidistant && !mhybrid && hrand(100) < (PURE?25:5) && landUnlockedIngame(laHaunted) && chance) buildAnotherEquidistant(c); } @@ -1876,13 +1876,13 @@ EX void build_horocycles(cell *c, cell *from) { items[itEmerald] >= U5))) start_camelot(c); - if(c->land == laRlyeh && can_start_horo(c) && (quickfind(laTemple) || peace::on || (hrand(I2000) < 100 && items[itStatue] >= U5))) + if(c->land == laRlyeh && can_start_horo(c) && (quickfind(laTemple) || (hrand(I2000) < 100 && landUnlockedIngame(laTemple)))) create_altmap(c, horo_gen_distance(), hsA); - if(c->land == laJungle && can_start_horo(c) && (quickfind(laMountain) || (hrand(I2000) < 100 && landUnlocked(laMountain)))) + if(c->land == laJungle && can_start_horo(c) && (quickfind(laMountain) || (hrand(I2000) < 100 && landUnlockedIngame(laMountain)))) create_altmap(c, horo_gen_distance(), hsA); - if(c->land == laOvergrown && can_start_horo(c) && (quickfind(laClearing) || (hrand(I2000) < 25 && items[itMutant] >= U5 && isLandIngame(laClearing)))) { + if(c->land == laOvergrown && can_start_horo(c) && (quickfind(laClearing) || (hrand(I2000) < 25 && landUnlockedIngame(laClearing)))) { heptagon *h = create_altmap(c, horo_gen_distance(), hsA); if(h) clearing::bpdata[h].root = NULL; } @@ -1894,11 +1894,12 @@ EX void build_horocycles(cell *c, cell *from) { if(c->land == laOcean && deepOcean && !generatingEquidistant && !peace::on && can_start_horo(c) && (quickfind(laWhirlpool) || ( - hrand(2000) < (PURE ? 500 : 1000)))) + hrand(2000) < (PURE ? 500 : 1000) && landUnlockedIngame(laWhirlpool)))) create_altmap(c, horo_gen_distance(), hsA); #if CAP_COMPLEX2 - if(c->land == laOcean && deepOcean && !generatingEquidistant && hrand(10000) < 20 && no_barriers_in_radius(c, 2) && hyperbolic && !quotient && !tactic::on && !safety && !ls::hv_structure()) + if(c->land == laOcean && deepOcean && !generatingEquidistant && hrand(10000) < 20 && no_barriers_in_radius(c, 2) && hyperbolic && !quotient && !tactic::on && !safety && !ls::hv_structure() + && landUnlockedIngame(laBrownian)) brownian::init_further(c); #endif @@ -1919,7 +1920,7 @@ EX void build_horocycles(cell *c, cell *from) { if(c->land == laPalace && can_start_horo(c) && !princess::generating && !shmup::on && multi::players == 1 && !weirdhyperbolic && (princess::forceMouse ? canReachPlayer(from, moMouse) : (hrand(2000) < (peace::on ? 100 : 20))) && - (princess::challenge || kills[moVizier] || peace::on)) { + landUnlockedIngame(laPrincessQuest)) { create_altmap(c, PRADIUS0, hsOrigin, waPalace); celllister cl(c, 5, 1000000, NULL); for(cell *c: cl.lst) if(c->master->alt) currentmap->extend_altmap(c->master); @@ -2318,7 +2319,7 @@ EX void pregen() { currentlands.clear(); if(ls::any_chaos() && !ls::std_chaos()) for(eLand l: land_over) - if(landUnlocked(l) && isLandIngame(l)) + if(landUnlockedIngame(l)) currentlands.push_back(l); } diff --git a/landlock.cpp b/landlock.cpp index e2d534a0..b6557207 100644 --- a/landlock.cpp +++ b/landlock.cpp @@ -741,6 +741,11 @@ EX bool isLandIngame(eLand l) { return land_validity(l).flags & lv::appears_in_full; } +EX bool landUnlockedIngame(eLand l) { + if(!peace::on && !landUnlocked(l)) return false; + return isLandIngame(l); + } + namespace lv { flagtype q0 = lv::display_error_message | lv::display_in_help | lv::appears_in_geom_exp;