mirror of
				https://github.com/zenorogue/hyperrogue.git
				synced 2025-10-31 14:02:59 +00:00 
			
		
		
		
	new land structure: excessive crossing walls
This commit is contained in:
		| @@ -560,6 +560,7 @@ EX bool isbar4(cell *c) { | ||||
|  | ||||
| EX bool barrier_cross(eLand l, eLand r) { | ||||
|   if(l == laCrossroads3 || r == laCrossroads3) return hrand(100) < 66; | ||||
|   if(land_structure == lsCrossWalls) return hrand(100) < 90; | ||||
|   if(isElemental(l) && isElemental(r)) return hrand(100) < 75; | ||||
|   return false; | ||||
|   } | ||||
|   | ||||
| @@ -288,6 +288,7 @@ EX void gen_baby_tortoise(cell *c) { | ||||
| EX int rebalance_treasure(int x, int y, eLand l) { | ||||
|   int res = ((tactic::on || quotient == 2 || daily::on) ? (y) : inv::on ? min(2*(y),x) : (x)); | ||||
|   if(use_custom_land_list) res = (res * custom_land_treasure[l] + 50) / 100; | ||||
|   res *= ls::ls_mul(); | ||||
|   return res; | ||||
|   } | ||||
|  | ||||
| @@ -1280,7 +1281,7 @@ EX void giantLandSwitch(cell *c, int d, cell *from) { | ||||
|       if(d == 8) { | ||||
|         bool ok = c->landparam == 0; | ||||
|         forCellEx(c2, c) if(c2->landparam) ok = false; | ||||
|         if(ok && hrand(doCross ?450:15000) < 20 + (2 * items[itMutant] + yendor::hardness()) && !safety) { | ||||
|         if(ok && hrand(doCross ?450:15000) < (20 + (2 * items[itMutant] + yendor::hardness())) * ls::ls_mul_big() && !safety) { | ||||
|           if(!peace::on) c->item = itMutant; | ||||
|           c->landparam = items[itMutant] + 5 + hrand(11); | ||||
|           c->wall = waNone; | ||||
| @@ -2065,7 +2066,7 @@ EX void giantLandSwitch(cell *c, int d, cell *from) { | ||||
|      | ||||
|     case laHunting: | ||||
|       if(d == 7 && c->land == laHunting && !racing::on && !safety && !reptilecheat) { | ||||
|         if(hrand(1000) < 20) { | ||||
|         if(hrand(1000) < 20 * ls::ls_mul_big()) { | ||||
|           if(openplains(c)) { | ||||
|             if(hrand(2) == 0) { | ||||
|               if(!items[itHunting]) { | ||||
| @@ -2273,7 +2274,7 @@ EX void giantLandSwitch(cell *c, int d, cell *from) { | ||||
|           c->monst = moMonkey; | ||||
|         else if(hrand_monster(80000) < 5 + items[itRuby] + yendor::hardness()) | ||||
|           c->monst = moEagle; | ||||
|         else if(pseudohept_r(c) && c != currentmap->gamestart() && hrand_monster(4000) < 300 + items[itRuby] && !c->monst) { | ||||
|         else if(pseudohept_r(c) && c != currentmap->gamestart() && hrand_monster(4000) < (300 + items[itRuby]) * ls::ls_mul_big() && !c->monst) { | ||||
|           int hardchance = items[itRuby] + yendor::hardness(); | ||||
|           if(hardchance > 25) hardchance = 25; | ||||
|           bool hardivy = hrand(100) < hardchance; | ||||
|   | ||||
							
								
								
									
										25
									
								
								landlock.cpp
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								landlock.cpp
									
									
									
									
									
								
							| @@ -81,7 +81,7 @@ EX eLand firstland = laIce; | ||||
| EX eLand specialland = laIce; | ||||
|  | ||||
| #if HDR | ||||
| enum eLandStructure { lsNiceWalls, lsChaos, lsPatchedChaos, lsTotalChaos, lsChaosRW, lsWallChaos, lsSingle, lsNoWalls, lsHorodisks, lsVoronoi, lsLandscape, lsGUARD }; | ||||
| enum eLandStructure { lsNiceWalls, lsChaos, lsPatchedChaos, lsTotalChaos, lsChaosRW, lsWallChaos, lsSingle, lsNoWalls, lsHorodisks, lsVoronoi, lsLandscape, lsCrossWalls, lsGUARD }; | ||||
| #endif | ||||
|  | ||||
| EX eLandStructure land_structure; | ||||
| @@ -90,9 +90,9 @@ EX namespace ls { | ||||
|  | ||||
| EX bool single() { return land_structure == lsSingle; } | ||||
|  | ||||
| EX bool any_chaos() { return among(land_structure, lsChaos, lsPatchedChaos, lsWallChaos, lsTotalChaos, lsChaosRW, lsLandscape); } | ||||
| EX bool any_chaos() { return among(land_structure, lsChaos, lsPatchedChaos, lsWallChaos, lsTotalChaos, lsChaosRW, lsCrossWalls, lsLandscape); } | ||||
| EX bool std_chaos() { return land_structure == lsChaos; } | ||||
| EX bool wall_chaos() { return land_structure == lsWallChaos; } | ||||
| EX bool wall_chaos() { return among(land_structure, lsWallChaos, lsCrossWalls); } | ||||
| EX bool patched_chaos() { return land_structure == lsPatchedChaos; } | ||||
|  | ||||
| EX bool any_order() { return among(land_structure, lsNiceWalls, lsNoWalls, lsHorodisks, lsVoronoi); } | ||||
| @@ -112,11 +112,26 @@ EX int chaoticity() { | ||||
|   if(land_structure == lsChaos) return 40; | ||||
|   if(land_structure == lsLandscape) return 35; | ||||
|   if(land_structure == lsWallChaos) return 30; | ||||
|   if(land_structure == lsCrossWalls) return 32; | ||||
|   if(land_structure == lsVoronoi) return 20; | ||||
|   if(land_structure == lsSingle) return 0; | ||||
|   return 10;   | ||||
|   } | ||||
|  | ||||
| /** a multiplier to make stuff more frequent in Wall Chaos and Cross Wall Chaos: treasure */ | ||||
| EX int ls_mul() { | ||||
|   if(land_structure == lsWallChaos) return 2; | ||||
|   if(land_structure == lsCrossWalls) return 3; | ||||
|   return 1; | ||||
|   } | ||||
|  | ||||
| /** a multiplier to make stuff more frequent in Wall Chaos and Cross Wall Chaos: even bigger */ | ||||
| EX int ls_mul_big() { | ||||
|   if(land_structure == lsWallChaos) return 5; | ||||
|   if(land_structure == lsCrossWalls) return 10; | ||||
|   return 1; | ||||
|   } | ||||
|  | ||||
| EX bool tame_chaos() { return any_chaos() && chaoticity() < 35; } | ||||
| EX } | ||||
|  | ||||
| @@ -144,6 +159,8 @@ EX string land_structure_name(bool which) { | ||||
|       return XLAT("landscape"); | ||||
|     case lsNoWalls: | ||||
|       return XLAT("wall-less"); | ||||
|     case lsCrossWalls: | ||||
|       return XLAT("excessive crossing walls"); | ||||
|     default: | ||||
|       return "error structure"; | ||||
|     } | ||||
| @@ -164,6 +181,8 @@ EX void fix_land_structure_choice() { | ||||
|     land_structure = lsNoWalls; | ||||
|   if(!nice_walls_available() && land_structure == lsWallChaos) | ||||
|     land_structure = lsChaos; | ||||
|   if(!nice_walls_available() && land_structure == lsCrossWalls) | ||||
|     land_structure = lsChaos; | ||||
|   if(ls::hv_structure() && (!hyperbolic || bt::in() || quotient)) | ||||
|     land_structure = lsSingle; | ||||
|   if(walls_not_implemented() && among(land_structure, lsChaos, lsNoWalls)) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Zeno Rogue
					Zeno Rogue