mirror of
				https://github.com/zenorogue/hyperrogue.git
				synced 2025-10-31 05:52:59 +00:00 
			
		
		
		
	new land structure, CR2-like
This commit is contained in:
		
							
								
								
									
										15
									
								
								bigstuff.cpp
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								bigstuff.cpp
									
									
									
									
									
								
							| @@ -1772,6 +1772,21 @@ EX void build_walls(cell *c, cell *from) { | |||||||
|   else if(good_for_wall(c) && isWarpedType(c->land) && hrand(10000) < 3000 && c->land &&  |   else if(good_for_wall(c) && isWarpedType(c->land) && hrand(10000) < 3000 && c->land &&  | ||||||
|     buildBarrierNowall(c, eLand(c->land ^ laWarpSea ^ laWarpCoast))) { } |     buildBarrierNowall(c, eLand(c->land ^ laWarpSea ^ laWarpCoast))) { } | ||||||
|  |  | ||||||
|  |   else if(land_structure == lsVineWalls) { | ||||||
|  |     int ev = emeraldval(c); | ||||||
|  |     if((ev | 11) == 43 && c->bardir == NODIR) { | ||||||
|  |       for(int i=0; i<c->type; i++) if(emeraldval(c->cmove(i)) == ev-4) { | ||||||
|  |         bool oldleft = true; | ||||||
|  |         for(int j=1; j<=3; j++) | ||||||
|  |           if(c->modmove(i+j) && c->modmove(i+j)->mpdist < c->mpdist) | ||||||
|  |             oldleft = false; | ||||||
|  |         buildBarrierStrong(c, i, oldleft, getNewLand(c->land)); | ||||||
|  |         extendBarrier(c); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     return; | ||||||
|  |     } | ||||||
|  |    | ||||||
|   else if(ls::single()) return; |   else if(ls::single()) return; | ||||||
|      |      | ||||||
|   else if(geometry == gNormal && celldist(c) < 3 && !GOLDBERG) { |   else if(geometry == gNormal && celldist(c) < 3 && !GOLDBERG) { | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								landgen.cpp
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								landgen.cpp
									
									
									
									
									
								
							| @@ -937,7 +937,13 @@ EX void giantLandSwitch(cell *c, int d, cell *from) { | |||||||
|      |      | ||||||
|     case laTrollheim: |     case laTrollheim: | ||||||
|       if(fargen) { |       if(fargen) { | ||||||
|         if(hrand(50000) < (ls::tame_chaos() ? 1000: ls::any_chaos() ?50:5) && c->wall != waBarrier && celldist(c) >= 7 && !safety && !peace::on) { |         int freq = | ||||||
|  |           land_structure == lsVineWalls ? 10000 : | ||||||
|  |           ls::wall_chaos() ? 2500 : | ||||||
|  |           ls::tame_chaos() ? 1000 : | ||||||
|  |           ls::any_chaos() ? 50 : | ||||||
|  |           5; | ||||||
|  |         if(hrand(50000) < freq && c->wall != waBarrier && celldist(c) >= 7 && !safety && !peace::on) { | ||||||
|           bool okay = true; |           bool okay = true; | ||||||
|           forCellCM(c2, c) forCellCM(c3, c2) forCellCM(c4, c3) forCellCM(c5, c4) { |           forCellCM(c2, c) forCellCM(c3, c2) forCellCM(c4, c3) forCellCM(c5, c4) { | ||||||
|             cell *cx = ls::any_chaos() ? c3 : c5; |             cell *cx = ls::any_chaos() ? c3 : c5; | ||||||
| @@ -2278,7 +2284,7 @@ EX void giantLandSwitch(cell *c, int d, cell *from) { | |||||||
|           int hardchance = items[itRuby] + yendor::hardness(); |           int hardchance = items[itRuby] + yendor::hardness(); | ||||||
|           if(hardchance > 25) hardchance = 25; |           if(hardchance > 25) hardchance = 25; | ||||||
|           bool hardivy = hrand(100) < hardchance; |           bool hardivy = hrand(100) < hardchance; | ||||||
|           if((cgflags & qFRACTAL) ? buildIvy(c, 0, 2) : hat::in() ?  buildIvy(c, 0, 4) : (hardivy ? buildIvy(c, 1, 9) : buildIvy(c, 0, c->type)) && !peace::on) |           if(land_structure == lsVineWalls ? buildIvy(c, 0, 2) : (cgflags & qFRACTAL) ? buildIvy(c, 0, 2) : hat::in() ?  buildIvy(c, 0, 4) : (hardivy ? buildIvy(c, 1, 9) : buildIvy(c, 0, c->type)) && !peace::on) | ||||||
|             c->item = itRuby; |             c->item = itRuby; | ||||||
|           } |           } | ||||||
|         } |         } | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								landlock.cpp
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								landlock.cpp
									
									
									
									
									
								
							| @@ -81,7 +81,7 @@ EX eLand firstland = laIce; | |||||||
| EX eLand specialland = laIce; | EX eLand specialland = laIce; | ||||||
|  |  | ||||||
| #if HDR | #if HDR | ||||||
| enum eLandStructure { lsNiceWalls, lsChaos, lsPatchedChaos, lsTotalChaos, lsChaosRW, lsWallChaos, lsSingle, lsNoWalls, lsHorodisks, lsVoronoi, lsLandscape, lsCrossWalls, lsGUARD }; | enum eLandStructure { lsNiceWalls, lsChaos, lsPatchedChaos, lsTotalChaos, lsChaosRW, lsWallChaos, lsSingle, lsNoWalls, lsHorodisks, lsVoronoi, lsLandscape, lsCrossWalls, lsVineWalls, lsGUARD }; | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| EX eLandStructure land_structure; | EX eLandStructure land_structure; | ||||||
| @@ -90,9 +90,9 @@ EX namespace ls { | |||||||
|  |  | ||||||
| EX bool single() { return land_structure == lsSingle; } | EX bool single() { return land_structure == lsSingle; } | ||||||
|  |  | ||||||
| EX bool any_chaos() { return among(land_structure, lsChaos, lsPatchedChaos, lsWallChaos, lsTotalChaos, lsChaosRW, lsCrossWalls, lsLandscape); } | EX bool any_chaos() { return among(land_structure, lsChaos, lsPatchedChaos, lsWallChaos, lsTotalChaos, lsChaosRW, lsCrossWalls, lsVineWalls, lsLandscape); } | ||||||
| EX bool std_chaos() { return land_structure == lsChaos; } | EX bool std_chaos() { return land_structure == lsChaos; } | ||||||
| EX bool wall_chaos() { return among(land_structure, lsWallChaos, lsCrossWalls); } | EX bool wall_chaos() { return among(land_structure, lsWallChaos, lsCrossWalls, lsVineWalls); } | ||||||
| EX bool patched_chaos() { return land_structure == lsPatchedChaos; } | EX bool patched_chaos() { return land_structure == lsPatchedChaos; } | ||||||
|  |  | ||||||
| EX bool any_order() { return among(land_structure, lsNiceWalls, lsNoWalls, lsHorodisks, lsVoronoi); } | EX bool any_order() { return among(land_structure, lsNiceWalls, lsNoWalls, lsHorodisks, lsVoronoi); } | ||||||
| @@ -122,6 +122,7 @@ EX int chaoticity() { | |||||||
| EX int ls_mul() { | EX int ls_mul() { | ||||||
|   if(land_structure == lsWallChaos) return 2; |   if(land_structure == lsWallChaos) return 2; | ||||||
|   if(land_structure == lsCrossWalls) return 3; |   if(land_structure == lsCrossWalls) return 3; | ||||||
|  |   if(land_structure == lsVineWalls) return 3; | ||||||
|   return 1; |   return 1; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -129,6 +130,7 @@ EX int ls_mul() { | |||||||
| EX int ls_mul_big() { | EX int ls_mul_big() { | ||||||
|   if(land_structure == lsWallChaos) return 5; |   if(land_structure == lsWallChaos) return 5; | ||||||
|   if(land_structure == lsCrossWalls) return 10; |   if(land_structure == lsCrossWalls) return 10; | ||||||
|  |   if(land_structure == lsVineWalls) return 10; | ||||||
|   return 1; |   return 1; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -161,6 +163,8 @@ EX string land_structure_name(bool which) { | |||||||
|       return XLAT("wall-less"); |       return XLAT("wall-less"); | ||||||
|     case lsCrossWalls: |     case lsCrossWalls: | ||||||
|       return XLAT("excessive crossing walls"); |       return XLAT("excessive crossing walls"); | ||||||
|  |     case lsVineWalls: | ||||||
|  |       return XLAT("regular walls"); | ||||||
|     default: |     default: | ||||||
|       return "error structure"; |       return "error structure"; | ||||||
|     } |     } | ||||||
| @@ -183,6 +187,8 @@ EX void fix_land_structure_choice() { | |||||||
|     land_structure = lsChaos; |     land_structure = lsChaos; | ||||||
|   if(!nice_walls_available() && land_structure == lsCrossWalls) |   if(!nice_walls_available() && land_structure == lsCrossWalls) | ||||||
|     land_structure = lsChaos; |     land_structure = lsChaos; | ||||||
|  |   if(land_structure == lsVineWalls && (geometry != gNormal || !BITRUNCATED)) | ||||||
|  |     land_structure = lsNiceWalls; | ||||||
|   if(ls::hv_structure() && (!hyperbolic || bt::in() || quotient)) |   if(ls::hv_structure() && (!hyperbolic || bt::in() || quotient)) | ||||||
|     land_structure = lsSingle; |     land_structure = lsSingle; | ||||||
|   if(walls_not_implemented() && among(land_structure, lsChaos, lsNoWalls)) |   if(walls_not_implemented() && among(land_structure, lsChaos, lsNoWalls)) | ||||||
| @@ -1171,7 +1177,7 @@ EX land_validity_t& land_validity(eLand l) { | |||||||
|   if(l == laWhirlwind && hyperbolic_not37) |   if(l == laWhirlwind && hyperbolic_not37) | ||||||
|     return pattern_incompatibility; |     return pattern_incompatibility; | ||||||
|  |  | ||||||
|   bool better_mirror = !geometry && STDVAR && !ls::hv_structure() && !among(land_structure, lsTotalChaos, lsPatchedChaos, lsLandscape); |   bool better_mirror = !geometry && STDVAR && !ls::hv_structure() && !among(land_structure, lsTotalChaos, lsPatchedChaos, lsLandscape, lsVineWalls); | ||||||
|  |  | ||||||
|   // available only in non-standard geometries |   // available only in non-standard geometries | ||||||
|   if(l == laMirrorOld && better_mirror) |   if(l == laMirrorOld && better_mirror) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Zeno Rogue
					Zeno Rogue