mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-04-26 12:43:12 +00:00
new land structure, CR2-like
This commit is contained in:
parent
e83d38e267
commit
5377147b1a
15
bigstuff.cpp
15
bigstuff.cpp
@ -1772,6 +1772,21 @@ EX void build_walls(cell *c, cell *from) {
|
|||||||
else if(good_for_wall(c) && isWarpedType(c->land) && hrand(10000) < 3000 && c->land &&
|
else if(good_for_wall(c) && isWarpedType(c->land) && hrand(10000) < 3000 && c->land &&
|
||||||
buildBarrierNowall(c, eLand(c->land ^ laWarpSea ^ laWarpCoast))) { }
|
buildBarrierNowall(c, eLand(c->land ^ laWarpSea ^ laWarpCoast))) { }
|
||||||
|
|
||||||
|
else if(land_structure == lsVineWalls) {
|
||||||
|
int ev = emeraldval(c);
|
||||||
|
if((ev | 11) == 43 && c->bardir == NODIR) {
|
||||||
|
for(int i=0; i<c->type; i++) if(emeraldval(c->cmove(i)) == ev-4) {
|
||||||
|
bool oldleft = true;
|
||||||
|
for(int j=1; j<=3; j++)
|
||||||
|
if(c->modmove(i+j) && c->modmove(i+j)->mpdist < c->mpdist)
|
||||||
|
oldleft = false;
|
||||||
|
buildBarrierStrong(c, i, oldleft, getNewLand(c->land));
|
||||||
|
extendBarrier(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
else if(ls::single()) return;
|
else if(ls::single()) return;
|
||||||
|
|
||||||
else if(geometry == gNormal && celldist(c) < 3 && !GOLDBERG) {
|
else if(geometry == gNormal && celldist(c) < 3 && !GOLDBERG) {
|
||||||
|
10
landgen.cpp
10
landgen.cpp
@ -937,7 +937,13 @@ EX void giantLandSwitch(cell *c, int d, cell *from) {
|
|||||||
|
|
||||||
case laTrollheim:
|
case laTrollheim:
|
||||||
if(fargen) {
|
if(fargen) {
|
||||||
if(hrand(50000) < (ls::tame_chaos() ? 1000: ls::any_chaos() ?50:5) && c->wall != waBarrier && celldist(c) >= 7 && !safety && !peace::on) {
|
int freq =
|
||||||
|
land_structure == lsVineWalls ? 10000 :
|
||||||
|
ls::wall_chaos() ? 2500 :
|
||||||
|
ls::tame_chaos() ? 1000 :
|
||||||
|
ls::any_chaos() ? 50 :
|
||||||
|
5;
|
||||||
|
if(hrand(50000) < freq && c->wall != waBarrier && celldist(c) >= 7 && !safety && !peace::on) {
|
||||||
bool okay = true;
|
bool okay = true;
|
||||||
forCellCM(c2, c) forCellCM(c3, c2) forCellCM(c4, c3) forCellCM(c5, c4) {
|
forCellCM(c2, c) forCellCM(c3, c2) forCellCM(c4, c3) forCellCM(c5, c4) {
|
||||||
cell *cx = ls::any_chaos() ? c3 : c5;
|
cell *cx = ls::any_chaos() ? c3 : c5;
|
||||||
@ -2278,7 +2284,7 @@ EX void giantLandSwitch(cell *c, int d, cell *from) {
|
|||||||
int hardchance = items[itRuby] + yendor::hardness();
|
int hardchance = items[itRuby] + yendor::hardness();
|
||||||
if(hardchance > 25) hardchance = 25;
|
if(hardchance > 25) hardchance = 25;
|
||||||
bool hardivy = hrand(100) < hardchance;
|
bool hardivy = hrand(100) < hardchance;
|
||||||
if((cgflags & qFRACTAL) ? buildIvy(c, 0, 2) : hat::in() ? buildIvy(c, 0, 4) : (hardivy ? buildIvy(c, 1, 9) : buildIvy(c, 0, c->type)) && !peace::on)
|
if(land_structure == lsVineWalls ? buildIvy(c, 0, 2) : (cgflags & qFRACTAL) ? buildIvy(c, 0, 2) : hat::in() ? buildIvy(c, 0, 4) : (hardivy ? buildIvy(c, 1, 9) : buildIvy(c, 0, c->type)) && !peace::on)
|
||||||
c->item = itRuby;
|
c->item = itRuby;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
14
landlock.cpp
14
landlock.cpp
@ -81,7 +81,7 @@ EX eLand firstland = laIce;
|
|||||||
EX eLand specialland = laIce;
|
EX eLand specialland = laIce;
|
||||||
|
|
||||||
#if HDR
|
#if HDR
|
||||||
enum eLandStructure { lsNiceWalls, lsChaos, lsPatchedChaos, lsTotalChaos, lsChaosRW, lsWallChaos, lsSingle, lsNoWalls, lsHorodisks, lsVoronoi, lsLandscape, lsCrossWalls, lsGUARD };
|
enum eLandStructure { lsNiceWalls, lsChaos, lsPatchedChaos, lsTotalChaos, lsChaosRW, lsWallChaos, lsSingle, lsNoWalls, lsHorodisks, lsVoronoi, lsLandscape, lsCrossWalls, lsVineWalls, lsGUARD };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
EX eLandStructure land_structure;
|
EX eLandStructure land_structure;
|
||||||
@ -90,9 +90,9 @@ EX namespace ls {
|
|||||||
|
|
||||||
EX bool single() { return land_structure == lsSingle; }
|
EX bool single() { return land_structure == lsSingle; }
|
||||||
|
|
||||||
EX bool any_chaos() { return among(land_structure, lsChaos, lsPatchedChaos, lsWallChaos, lsTotalChaos, lsChaosRW, lsCrossWalls, lsLandscape); }
|
EX bool any_chaos() { return among(land_structure, lsChaos, lsPatchedChaos, lsWallChaos, lsTotalChaos, lsChaosRW, lsCrossWalls, lsVineWalls, lsLandscape); }
|
||||||
EX bool std_chaos() { return land_structure == lsChaos; }
|
EX bool std_chaos() { return land_structure == lsChaos; }
|
||||||
EX bool wall_chaos() { return among(land_structure, lsWallChaos, lsCrossWalls); }
|
EX bool wall_chaos() { return among(land_structure, lsWallChaos, lsCrossWalls, lsVineWalls); }
|
||||||
EX bool patched_chaos() { return land_structure == lsPatchedChaos; }
|
EX bool patched_chaos() { return land_structure == lsPatchedChaos; }
|
||||||
|
|
||||||
EX bool any_order() { return among(land_structure, lsNiceWalls, lsNoWalls, lsHorodisks, lsVoronoi); }
|
EX bool any_order() { return among(land_structure, lsNiceWalls, lsNoWalls, lsHorodisks, lsVoronoi); }
|
||||||
@ -122,6 +122,7 @@ EX int chaoticity() {
|
|||||||
EX int ls_mul() {
|
EX int ls_mul() {
|
||||||
if(land_structure == lsWallChaos) return 2;
|
if(land_structure == lsWallChaos) return 2;
|
||||||
if(land_structure == lsCrossWalls) return 3;
|
if(land_structure == lsCrossWalls) return 3;
|
||||||
|
if(land_structure == lsVineWalls) return 3;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,6 +130,7 @@ EX int ls_mul() {
|
|||||||
EX int ls_mul_big() {
|
EX int ls_mul_big() {
|
||||||
if(land_structure == lsWallChaos) return 5;
|
if(land_structure == lsWallChaos) return 5;
|
||||||
if(land_structure == lsCrossWalls) return 10;
|
if(land_structure == lsCrossWalls) return 10;
|
||||||
|
if(land_structure == lsVineWalls) return 10;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,6 +163,8 @@ EX string land_structure_name(bool which) {
|
|||||||
return XLAT("wall-less");
|
return XLAT("wall-less");
|
||||||
case lsCrossWalls:
|
case lsCrossWalls:
|
||||||
return XLAT("excessive crossing walls");
|
return XLAT("excessive crossing walls");
|
||||||
|
case lsVineWalls:
|
||||||
|
return XLAT("regular walls");
|
||||||
default:
|
default:
|
||||||
return "error structure";
|
return "error structure";
|
||||||
}
|
}
|
||||||
@ -183,6 +187,8 @@ EX void fix_land_structure_choice() {
|
|||||||
land_structure = lsChaos;
|
land_structure = lsChaos;
|
||||||
if(!nice_walls_available() && land_structure == lsCrossWalls)
|
if(!nice_walls_available() && land_structure == lsCrossWalls)
|
||||||
land_structure = lsChaos;
|
land_structure = lsChaos;
|
||||||
|
if(land_structure == lsVineWalls && (geometry != gNormal || !BITRUNCATED))
|
||||||
|
land_structure = lsNiceWalls;
|
||||||
if(ls::hv_structure() && (!hyperbolic || bt::in() || quotient))
|
if(ls::hv_structure() && (!hyperbolic || bt::in() || quotient))
|
||||||
land_structure = lsSingle;
|
land_structure = lsSingle;
|
||||||
if(walls_not_implemented() && among(land_structure, lsChaos, lsNoWalls))
|
if(walls_not_implemented() && among(land_structure, lsChaos, lsNoWalls))
|
||||||
@ -1171,7 +1177,7 @@ EX land_validity_t& land_validity(eLand l) {
|
|||||||
if(l == laWhirlwind && hyperbolic_not37)
|
if(l == laWhirlwind && hyperbolic_not37)
|
||||||
return pattern_incompatibility;
|
return pattern_incompatibility;
|
||||||
|
|
||||||
bool better_mirror = !geometry && STDVAR && !ls::hv_structure() && !among(land_structure, lsTotalChaos, lsPatchedChaos, lsLandscape);
|
bool better_mirror = !geometry && STDVAR && !ls::hv_structure() && !among(land_structure, lsTotalChaos, lsPatchedChaos, lsLandscape, lsVineWalls);
|
||||||
|
|
||||||
// available only in non-standard geometries
|
// available only in non-standard geometries
|
||||||
if(l == laMirrorOld && better_mirror)
|
if(l == laMirrorOld && better_mirror)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user