1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-10-19 16:07:40 +00:00

Clearing in bounded geometries

This commit is contained in:
Zeno Rogue
2018-04-14 10:24:02 +02:00
parent d8e7c74f70
commit d9381c7284
8 changed files with 39 additions and 12 deletions

View File

@@ -303,11 +303,16 @@ void wandering() {
int ghostcount = getGhostcount();
if(cwt.c->land == laCA) ghostcount = 0;
bool genturn = hrand(100) < 30;
if(bounded && specialland == laClearing)
clearing::new_root();
if(cwt.c->land == laZebra && cwt.c->wall == waNone && wchance(items[itZebra], 20))
wanderingZebra(cwt.c);
if(smallbounded) {
bool smallbounded_generation = smallbounded || (bounded && specialland == laClearing);
if(smallbounded_generation) {
int maxdist = 0;
for(int i=0; i<size(dcal); i++) if(dcal[i]->cpdist > maxdist) maxdist = dcal[i]->cpdist;
for(int i=0; i<size(dcal); i++) if(dcal[i]->cpdist >= maxdist-1) { first7 = i; break; }
@@ -338,7 +343,7 @@ void wandering() {
if(isPlayerOn(c)) continue;
}
if(smallbounded && !c->item && hrand(5) == 0 && c->land != laHalloween) {
if(smallbounded_generation && !c->item && hrand(5) == 0 && c->land != laHalloween) {
if(passable(c, NULL, 0) || specialland == laKraken) {
if(c->land != laGraveyard && !haveOrbPower() && specialland != laHell) for(int it=0; it<1000 && !c->item; it++)
placeLocalOrbs(c);