1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-09-05 20:07:58 +00:00

new crossroads variant: Master Crossroads

This commit is contained in:
Zeno Rogue
2025-07-07 12:15:47 +02:00
parent f2bad487a0
commit 09272b7608
5 changed files with 19 additions and 6 deletions

View File

@@ -1565,6 +1565,7 @@ EX int wallchance(cell *c, bool deepOcean) {
l == laCrossroads5 ? 10000 : l == laCrossroads5 ? 10000 :
l == laCrossroads4 ? 5000 : l == laCrossroads4 ? 5000 :
l == laCrossroads6 ? 5000 : l == laCrossroads6 ? 5000 :
l == laMasterCrossroads ? 10000 :
(l == laMirror && !yendor::generating) ? 2500 : (l == laMirror && !yendor::generating) ? 2500 :
tactic::on ? 0 : tactic::on ? 0 :
racing::on ? 0 : racing::on ? 0 :
@@ -1831,6 +1832,9 @@ EX void build_walls(cell *c, cell *from) {
else if(good_for_wall(c) && ls::any_wall() && c->land == laCrossroads4 && hrand(10000) < 7000 && c->land && !c->master->alt && !tactic::on && !racing::on && else if(good_for_wall(c) && ls::any_wall() && c->land == laCrossroads4 && hrand(10000) < 7000 && c->land && !c->master->alt && !tactic::on && !racing::on &&
buildBarrierNowall(c, getNewLand(laCrossroads4))) ; buildBarrierNowall(c, getNewLand(laCrossroads4))) ;
else if(good_for_wall(c) && ls::any_wall() && c->land == laMasterCrossroads && hrand(10000) < 500 && c->land && !c->master->alt && !tactic::on && !racing::on &&
landUnlockedIngame(laCrossroads4) && buildBarrierNowall(c, laCrossroads4)) ;
else if(good_for_wall(c) && ls::any_wall() && hrand(I10000) < 20 && !generatingEquidistant && !yendor::on && !tactic::on && !racing::on && !isCrossroads(c->land) && else if(good_for_wall(c) && ls::any_wall() && hrand(I10000) < 20 && !generatingEquidistant && !yendor::on && !tactic::on && !racing::on && !isCrossroads(c->land) &&
landUnlockedIngame(laCrossroads4) && !weirdhyperbolic && !c->master->alt && c->bardir != NOBARRIERS && landUnlockedIngame(laCrossroads4) && !weirdhyperbolic && !c->master->alt && c->bardir != NOBARRIERS &&
!inmirror(c) && !isSealand(c->land) && !isHaunted(c->land) && !isGravityLand(c->land) && !inmirror(c) && !isSealand(c->land) && !isHaunted(c->land) && !isGravityLand(c->land) &&

View File

@@ -183,7 +183,7 @@ void celldrawer::setcolors() {
// floor colors for all the lands // floor colors for all the lands
else switch(c->land) { else switch(c->land) {
case laBurial: case laTrollheim: case laBarrier: case laOceanWall: case laBurial: case laTrollheim: case laBarrier: case laOceanWall:
case laCrossroads2: case laCrossroads3: case laCrossroads4: case laCrossroads5: case laCrossroads6: case laCrossroads2: case laCrossroads3: case laCrossroads4: case laCrossroads5: case laCrossroads6: case laMasterCrossroads:
case laRose: case laPower: case laWildWest: case laHalloween: case laRedRock: case laRose: case laPower: case laWildWest: case laHalloween: case laRedRock:
case laDragon: case laStorms: case laTerracotta: case laMercuryRiver: case laDragon: case laStorms: case laTerracotta: case laMercuryRiver:
case laDesert: case laKraken: case laDocks: case laDesert: case laKraken: case laDocks:

View File

@@ -1754,6 +1754,9 @@ LAND( 0x7030A0, "Crossroads VI", laCrossroads6, ZERO, itHyperstone, RESERVED, "A
NATIVE(0) NATIVE(0)
REQ(ITEMS(itCursed, 5)) REQ(ITEMS(itCursed, 5))
LAND( 0xC0B090, "Master Crossroads", laMasterCrossroads, ZERO, itHyperstone, RESERVED, "A crossroads that connects only to other crossroads.")
NATIVE(0) REQ(GOLD(R500))
ITEM('}', 0xFFFF80, "Crossbow", itCrossbow, IC_NAI, ZERO, RESERVED, osNone, ITEM('}', 0xFFFF80, "Crossbow", itCrossbow, IC_NAI, ZERO, RESERVED, osNone,
"Your crossbow. Press 'f' or click it in the inventory to toggle firing mode. In firing mode, select a tile to see the trajectory, then " "Your crossbow. Press 'f' or click it in the inventory to toggle firing mode. In firing mode, select a tile to see the trajectory, then "
"click again to fire. After firing, the crossbow takes some time to reload." "click again to fire. After firing, the crossbow takes some time to reload."

View File

@@ -2520,6 +2520,7 @@ EX void giantLandSwitch(cell *c, int d, cell *from) {
case laCrossroads4: case laCrossroads4:
case laCrossroads5: case laCrossroads5:
case laCrossroads6: case laCrossroads6:
case laMasterCrossroads:
if(c->wall == waTower) c->land = laCamelot; if(c->wall == waTower) c->land = laCamelot;
ONEMPTY { ONEMPTY {
if(!BITRUNCATED && c->land == laCrossroads5 && hrand(100) < 60) if(!BITRUNCATED && c->land == laCrossroads5 && hrand(100) < 60)

View File

@@ -53,11 +53,15 @@ EX int landMultiplier(eLand l) {
} }
EX bool isCrossroads(eLand l) { EX bool isCrossroads(eLand l) {
return among(l, laCrossroads, laCrossroads2, laCrossroads3, laCrossroads4, laCrossroads5, laCrossroads6); return among(l, laCrossroads, laCrossroads2, laCrossroads3, laCrossroads4, laCrossroads5, laCrossroads6, laMasterCrossroads);
}
EX bool isCrossroadsNM(eLand l) {
return isCrossroads(l) && l != laMasterCrossroads;
} }
EX bool bearsCamelot(eLand l) { EX bool bearsCamelot(eLand l) {
return isCrossroads(l) && l != laCrossroads2 && l != laCrossroads5; return isCrossroads(l) && !among(l, laCrossroads2, laCrossroads5, laMasterCrossroads);
} }
EX bool inmirror(const cellwalker& cw) { EX bool inmirror(const cellwalker& cw) {
@@ -333,7 +337,8 @@ EX bool voronoi_sea_incompatible(eLand l1, eLand l2) {
} }
EX bool incompatible1(eLand l1, eLand l2) { EX bool incompatible1(eLand l1, eLand l2) {
if(isCrossroads(l1) && isCrossroads(l2)) return true; if(l1 == laMasterCrossroads && !isCrossroads(l2)) return true;
if(isCrossroadsNM(l1) && isCrossroadsNM(l2)) return true;
if(l1 == laJungle && l2 == laMotion) return true; if(l1 == laJungle && l2 == laMotion) return true;
if(l1 == laMirrorOld && l2 == laMotion) return true; if(l1 == laMirrorOld && l2 == laMotion) return true;
if(l1 == laPower && l2 == laWineyard) return true; if(l1 == laPower && l2 == laWineyard) return true;
@@ -566,7 +571,7 @@ EX eLand getNewLand(eLand old) {
laDeadCaves, laRedRock, laVariant, laHell, laCocytus, laPower, laDeadCaves, laRedRock, laVariant, laHell, laCocytus, laPower,
laBull, laTerracotta, laRose, laGraveyard, laHive, laDragon, laTrollheim, laBull, laTerracotta, laRose, laGraveyard, laHive, laDragon, laTrollheim,
laWet, laFrog, laEclectic, laCursed, laDice, laWet, laFrog, laEclectic, laCursed, laDice,
laCrossroads5, laCrossroads6 laCrossroads5, laCrossroads6, laMasterCrossroads
}) })
if(landUnlocked(l)) tab[cnt++] = l; if(landUnlocked(l)) tab[cnt++] = l;
@@ -737,7 +742,7 @@ EX vector<eLand> land_over = {
laPrairie, laBull, laTerracotta, laRose, laPrairie, laBull, laTerracotta, laRose,
laElementalWall, laTrollheim, laElementalWall, laTrollheim,
laHell, laCrossroads3, laCocytus, laPower, laCrossroads4, laHell, laCrossroads3, laCocytus, laPower, laCrossroads4,
laCrossroads5, laCrossroads6, laCrossroads5, laCrossroads6, laMasterCrossroads,
// EXTRA // EXTRA
laWildWest, laHalloween, laDual, laSnakeNest, laMagnetic, laCA, laAsteroids laWildWest, laHalloween, laDual, laSnakeNest, laMagnetic, laCA, laAsteroids
}; };