1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-08-27 16:02:19 +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 == laCrossroads4 ? 5000 :
l == laCrossroads6 ? 5000 :
l == laMasterCrossroads ? 10000 :
(l == laMirror && !yendor::generating) ? 2500 :
tactic::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 &&
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) &&
landUnlockedIngame(laCrossroads4) && !weirdhyperbolic && !c->master->alt && c->bardir != NOBARRIERS &&
!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
else switch(c->land) {
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 laDragon: case laStorms: case laTerracotta: case laMercuryRiver:
case laDesert: case laKraken: case laDocks:

View File

@ -1754,6 +1754,9 @@ LAND( 0x7030A0, "Crossroads VI", laCrossroads6, ZERO, itHyperstone, RESERVED, "A
NATIVE(0)
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,
"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."

View File

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

View File

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