mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-08-28 00:12:18 +00:00
new Crossroads variant: Crossroads VI (Cursed Crossroads)
This commit is contained in:
parent
fc63e540f0
commit
26d99c1423
15
barriers.cpp
15
barriers.cpp
@ -616,13 +616,19 @@ EX void extendBarrier(cell *c) {
|
||||
}
|
||||
if(buildBarrier6(cw, 2)) return;
|
||||
}
|
||||
|
||||
|
||||
if(land_structure == lsCursedWalls && c->barleft != laMirror && c->barright != laMirror && hrand(100) < 80 && !among(laCrossroads2, c->barleft, c->barright)) {
|
||||
cellwalker cw(c, c->bardir);
|
||||
cw = cw + wstep + 3 + wstep - 1;
|
||||
if(buildBarrier6(cw, c->barright, c->barleft)) return;
|
||||
}
|
||||
|
||||
if(among(laCrossroads6, c->barleft, c->barright) && hrand(100) < 80) {
|
||||
cellwalker cw(c, c->bardir);
|
||||
cw = cw + wstep + 3 + wstep - 1;
|
||||
if(buildBarrier6(cw, c->barright, c->barleft)) return;
|
||||
}
|
||||
|
||||
if(barrier_cross(c->barleft, c->barright) || (firstmirror && hrand(100) < 60)) {
|
||||
|
||||
cellwalker cw(c, c->bardir);
|
||||
@ -839,7 +845,12 @@ EX bool buildBarrier6(cellwalker cw, eLand m0, eLand m1) {
|
||||
setland((b[d+1]-2).cpeek(), m1);
|
||||
setland((b[d+1]+2).cpeek(), m0);
|
||||
}
|
||||
if(hrand(100) < curse_percentage) {
|
||||
int cp = curse_percentage;
|
||||
if(m0 == laCrossroads6 || m1 == laCrossroads6) {
|
||||
cp = 25;
|
||||
if(m0 == laCursed || m1 == laCursed) cp = 100;
|
||||
}
|
||||
if(hrand(100) < cp) {
|
||||
setland(cw.at, laCursed);
|
||||
cw.at->wall = waRubble;
|
||||
cw.at->monst = moHexer;
|
||||
|
@ -1564,6 +1564,7 @@ EX int wallchance(cell *c, bool deepOcean) {
|
||||
l == laCrossroads2 ? 10000 :
|
||||
l == laCrossroads5 ? 10000 :
|
||||
l == laCrossroads4 ? 5000 :
|
||||
l == laCrossroads6 ? 5000 :
|
||||
(l == laMirror && !yendor::generating) ? 2500 :
|
||||
tactic::on ? 0 :
|
||||
racing::on ? 0 :
|
||||
|
@ -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 laCrossroads2: case laCrossroads3: case laCrossroads4: case laCrossroads5: case laCrossroads6:
|
||||
case laRose: case laPower: case laWildWest: case laHalloween: case laRedRock:
|
||||
case laDragon: case laStorms: case laTerracotta: case laMercuryRiver:
|
||||
case laDesert: case laKraken: case laDocks:
|
||||
|
@ -1186,7 +1186,7 @@ LAND( 0xFFFF00, "Land of Power", laPower, ZERO, itPower, RESERVED,
|
||||
|
||||
LAND( 0xD0D0D0, "Camelot", laCamelot, ZERO | LF_CYCLIC, itHolyGrail, RESERVED, camelothelp )
|
||||
NATIVE((m == moKnight || m == moHedge || m == moFlailer || m == moLancer) ? 1 : 0)
|
||||
REQ(ITEMS(itEmerald, U5) ACCONLY3(laCrossroads, laCrossroads3, laCrossroads4))
|
||||
REQ(ITEMS(itEmerald, U5) ACCONLY4(laCrossroads, laCrossroads3, laCrossroads4, laCrossroads6))
|
||||
|
||||
LAND( 0xD000D0, "Temple of Cthulhu", laTemple, ZERO | LF_CYCLIC, itGrimoire, RESERVED, templehelp )
|
||||
NATIVE((m == moTentacle || m == moCultist || m == moPyroCultist || m == moCultistLeader) ? 1 : 0)
|
||||
@ -1452,6 +1452,10 @@ LAND( 0xC000C0, "Crossroads V", laCrossroads5, ZERO, itHyperstone, RESERVED, "Ex
|
||||
NATIVE(0)
|
||||
REQ(GOLD(R300))
|
||||
|
||||
LAND( 0x7030A0, "Crossroads VI", laCrossroads6, ZERO, itHyperstone, RESERVED, "A cursed Crossroads layout.\n")
|
||||
NATIVE(0)
|
||||
REQ(ITEMS(itCursed, 5))
|
||||
|
||||
LAND( 0xC0C0C0, "Cellular Automaton", laCA, ZERO | LF_TECHNICAL, itNone, RESERVED, cadesc)
|
||||
NATIVE(0)
|
||||
REQ(ALWAYS)
|
||||
@ -1796,6 +1800,8 @@ MONSTER( '*', 0, "vertex", moRogueviz, ZERO | CF_TECHNICAL, RESERVED, moN
|
||||
#undef ACCONLY
|
||||
#undef ACCONLY2
|
||||
#undef ACCONLY3
|
||||
#undef ACCONLY4
|
||||
#undef ACCONLY5
|
||||
#undef ACCONLYF
|
||||
#undef IFINGAME
|
||||
#undef INMODE
|
||||
|
2
help.cpp
2
help.cpp
@ -753,6 +753,8 @@ void add_reqs(eLand l, string& s) {
|
||||
#define ACCONLY(z) s += XLAT("Accessible only from %the1.\n", z);
|
||||
#define ACCONLY2(z,x) s += XLAT("Accessible only from %the1 or %the2.\n", z, x);
|
||||
#define ACCONLY3(z,y,x) s += XLAT("Accessible only from %the1, %2, or %3.\n", z, y, x);
|
||||
#define ACCONLY4(z1,z2,z3,z4) s += XLAT("Accessible only from %the1, %2, %3, or %4.\n", z1, z2, z3, z4);
|
||||
#define ACCONLY5(z1,z2,z3,z4,z5) s += XLAT("Accessible only from %the1, %2, %3, %4, or %5.\n", z1, z2, z3, z4, z5);
|
||||
#define ACCONLYF(z) s += XLAT("Accessible only from %the1 (until finished).\n", z);
|
||||
#define IFINGAME(land, ok, fallback) if(isLandIngame(land)) { ok } else { s += XLAT("Alternative rule when %the1 is not in the game:\n", land); fallback }
|
||||
#include "content.cpp"
|
||||
|
@ -2519,6 +2519,7 @@ EX void giantLandSwitch(cell *c, int d, cell *from) {
|
||||
case laCrossroads3:
|
||||
case laCrossroads4:
|
||||
case laCrossroads5:
|
||||
case laCrossroads6:
|
||||
if(c->wall == waTower) c->land = laCamelot;
|
||||
ONEMPTY {
|
||||
if(!BITRUNCATED && c->land == laCrossroads5 && hrand(100) < 60)
|
||||
|
10
landlock.cpp
10
landlock.cpp
@ -53,8 +53,7 @@ EX int landMultiplier(eLand l) {
|
||||
}
|
||||
|
||||
EX bool isCrossroads(eLand l) {
|
||||
return l == laCrossroads || l == laCrossroads2 || l == laCrossroads3 ||
|
||||
l == laCrossroads4 || l == laCrossroads5;
|
||||
return among(l, laCrossroads, laCrossroads2, laCrossroads3, laCrossroads4, laCrossroads5, laCrossroads6);
|
||||
}
|
||||
|
||||
EX bool bearsCamelot(eLand l) {
|
||||
@ -264,6 +263,8 @@ EX bool landUnlocked(eLand l) {
|
||||
#define ACCONLY(x)
|
||||
#define ACCONLY2(x,y)
|
||||
#define ACCONLY3(x,y,z)
|
||||
#define ACCONLY4(a,b,c,d)
|
||||
#define ACCONLY5(a,b,c,d,e)
|
||||
#define ACCONLYF(x)
|
||||
#define IFINGAME(land, ok, fallback) if(isLandIngame(land)) { ok } else { fallback }
|
||||
#define INMODE(x) if(x) return true;
|
||||
@ -565,7 +566,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,
|
||||
laCrossroads5, laCrossroads6
|
||||
})
|
||||
if(landUnlocked(l)) tab[cnt++] = l;
|
||||
|
||||
@ -588,6 +589,7 @@ EX eLand getNewLand(eLand old) {
|
||||
{laDesert, laRedRock, 5, 5},
|
||||
{laFrog, laReptile, 2, 2}, {laFrog, laSwitch, 2, 2}, {laFrog, laZebra, 2, 2},
|
||||
{laEclectic, laStorms, 3, 3}, {laEclectic, laIce, 3, 3}, {laEclectic, laPalace, 3, 3}, {laEclectic, laDeadCaves, 3, 3},
|
||||
{laCursed, laCrossroads6, 1, 1},
|
||||
|
||||
{laEFire, laDragon, 5, 5}, {laEWater, laLivefjord, 5, 5}, {laEEarth, laDeadCaves, 5, 5}, {laEAir, laWhirlwind, 5, 5},
|
||||
}) {
|
||||
@ -735,7 +737,7 @@ EX vector<eLand> land_over = {
|
||||
laPrairie, laBull, laTerracotta, laRose,
|
||||
laElementalWall, laTrollheim,
|
||||
laHell, laCrossroads3, laCocytus, laPower, laCrossroads4,
|
||||
laCrossroads5,
|
||||
laCrossroads5, laCrossroads6,
|
||||
// EXTRA
|
||||
laWildWest, laHalloween, laDual, laSnakeNest, laMagnetic, laCA, laAsteroids
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user