diff --git a/bigstuff.cpp b/bigstuff.cpp index 25abc04a..44e8a01b 100644 --- a/bigstuff.cpp +++ b/bigstuff.cpp @@ -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) && diff --git a/celldrawer.cpp b/celldrawer.cpp index f576b4a6..d397970d 100644 --- a/celldrawer.cpp +++ b/celldrawer.cpp @@ -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: diff --git a/content.cpp b/content.cpp index ed5156ad..33826843 100644 --- a/content.cpp +++ b/content.cpp @@ -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." diff --git a/landgen.cpp b/landgen.cpp index 4336db5c..c375a78e 100644 --- a/landgen.cpp +++ b/landgen.cpp @@ -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) diff --git a/landlock.cpp b/landlock.cpp index 0752c362..1213bd74 100644 --- a/landlock.cpp +++ b/landlock.cpp @@ -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 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 };