mirror of
				https://github.com/zenorogue/hyperrogue.git
				synced 2025-10-31 14:02:59 +00:00 
			
		
		
		
	new Crossroads variant: Crossroads VI (Cursed Crossroads)
This commit is contained in:
		
							
								
								
									
										13
									
								
								barriers.cpp
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								barriers.cpp
									
									
									
									
									
								
							| @@ -623,6 +623,12 @@ EX void extendBarrier(cell *c) { | ||||
|     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 | ||||
|   }; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Zeno Rogue
					Zeno Rogue