1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-12-26 01:50:36 +00:00

ls:: fixed Camelot in horodisk_structure

This commit is contained in:
Zeno Rogue 2023-09-14 21:15:00 +02:00
parent 1d4dac0a50
commit dd5e9dbc6e

View File

@ -1810,7 +1810,7 @@ EX void start_camelot(cell *c) {
heptagon *alt = create_altmap(c, ls::single() ? 2 : rtr+(hyperbolic && WDIM == 3 ? 11 : 14), ls::single() ? hsA : hsOrigin); heptagon *alt = create_altmap(c, ls::single() ? 2 : rtr+(hyperbolic && WDIM == 3 ? 11 : 14), ls::single() ? hsA : hsOrigin);
if(alt) { if(alt) {
altmap::radius(alt) = rtr; altmap::radius(alt) = rtr;
altmap::orig_land(alt) = c->land; altmap::orig_land(alt) = ls::horodisk_structure() ? laCrossroads : c->land;
hv_land[alt] = laCamelot; hv_land[alt] = laCamelot;
} }
} }
@ -1830,7 +1830,7 @@ EX void build_horocycles(cell *c, cell *from) {
// buildbigstuff // buildbigstuff
if(ls::any_order() && bearsCamelot(c->land) && can_start_horo(c) && !bt::in() && !ls::voronoi_structure() && if(ls::any_order() && (ls::horodisk_structure() || bearsCamelot(c->land)) && can_start_horo(c) && !bt::in() && !ls::voronoi_structure() &&
#if MAXMDIM >= 4 #if MAXMDIM >= 4
!(hyperbolic && WDIM == 3 && !reg3::in_hrmap_rule_or_subrule()) && !(hyperbolic && WDIM == 3 && !reg3::in_hrmap_rule_or_subrule()) &&
#endif #endif
@ -2024,6 +2024,9 @@ EX void buildCamelot(cell *c) {
if(c->land == laNone) printf("Camelot\n"); // NONEDEBUG if(c->land == laNone) printf("Camelot\n"); // NONEDEBUG
} }
} }
else {
setland(c, eLand(altmap::orig_land(c->master->alt->alt)));
}
#endif #endif
} }
@ -2120,6 +2123,7 @@ EX void gen_temple(cell *c) {
EX void moreBigStuff(cell *c) { EX void moreBigStuff(cell *c) {
if(disable_bigstuff) return; if(disable_bigstuff) return;
if(!ls::hv_structure())
if((bearsCamelot(c->land) && !euclid && !quotient && !nil) || c->land == laCamelot) if((bearsCamelot(c->land) && !euclid && !quotient && !nil) || c->land == laCamelot)
if(have_alt(c)) if(!(bt::in() && specialland != laCamelot)) if(have_alt(c)) if(!(bt::in() && specialland != laCamelot))
buildCamelot(c); buildCamelot(c);
@ -2152,7 +2156,10 @@ EX void moreBigStuff(cell *c) {
gen_alt(c); gen_alt(c);
preventbarriers(c); preventbarriers(c);
} }
if(have_alt(c) && celldistAlt(c) <= 0) { if(have_alt(c) && hv_land[c->master->alt->alt] == laCamelot) {
buildCamelot(c);
}
else if(have_alt(c) && celldistAlt(c) <= 0) {
eLand l = hv_land[c->master->alt->alt]; eLand l = hv_land[c->master->alt->alt];
setland(c, l); setland(c, l);
if(l == laWhirlpool && celldistAlt(c) >= -1) { if(l == laWhirlpool && celldistAlt(c) >= -1) {