mirror of
				https://github.com/zenorogue/hyperrogue.git
				synced 2025-10-30 21:42:59 +00:00 
			
		
		
		
	racing:: fixed some lands for racing
This commit is contained in:
		
							
								
								
									
										17
									
								
								bigstuff.cpp
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								bigstuff.cpp
									
									
									
									
									
								
							| @@ -965,6 +965,7 @@ int wallchance(cell *c, bool deepOcean) { | |||||||
|     (l == laMirror && !yendor::generating) ? 6000 : |     (l == laMirror && !yendor::generating) ? 6000 : | ||||||
|     l == laTerracotta ? 250 : |     l == laTerracotta ? 250 : | ||||||
|     (tactic::on && !tactic::trailer) ? 0 : |     (tactic::on && !tactic::trailer) ? 0 : | ||||||
|  |     racing::on ? 0 : | ||||||
|     l == laCaribbean ? 500 : |     l == laCaribbean ? 500 : | ||||||
|     (l == laWarpSea || l == laWarpCoast) ? 500 : |     (l == laWarpSea || l == laWarpCoast) ? 500 : | ||||||
|     l == laStorms ? 250 : |     l == laStorms ? 250 : | ||||||
| @@ -1038,10 +1039,10 @@ void buildBigStuff(cell *c, cell *from) { | |||||||
|   else if((archimedean || pseudohept(c)) && isWarped(c->land) && hrand(10000) < 3000 && c->land &&  |   else if((archimedean || pseudohept(c)) && isWarped(c->land) && hrand(10000) < 3000 && c->land &&  | ||||||
|     buildBarrierNowall(c, eLand(c->land ^ laWarpSea ^ laWarpCoast))) ; |     buildBarrierNowall(c, eLand(c->land ^ laWarpSea ^ laWarpCoast))) ; | ||||||
|    |    | ||||||
|   else if((archimedean || pseudohept(c)) && c->land == laCrossroads4 && hrand(10000) < 7000 && c->land && !c->master->alt && !tactic::on && |   else if((archimedean || pseudohept(c)) && c->land == laCrossroads4 && hrand(10000) < 7000 && c->land && !c->master->alt && !tactic::on && !racing::on && | ||||||
|     buildBarrierNowall(c, getNewLand(laCrossroads4))) ; |     buildBarrierNowall(c, getNewLand(laCrossroads4))) ; | ||||||
|    |    | ||||||
|   else if((archimedean || pseudohept(c)) && hrand(I10000) < 20 && !generatingEquidistant && !yendor::on && !tactic::on && !isCrossroads(c->land) &&  |   else if((archimedean || pseudohept(c)) && hrand(I10000) < 20 && !generatingEquidistant && !yendor::on && !tactic::on && !racing::on && !isCrossroads(c->land) &&  | ||||||
|     gold() >= R200 && !weirdhyperbolic && !c->master->alt && |     gold() >= R200 && !weirdhyperbolic && !c->master->alt && | ||||||
|     !inmirror(c) && !isSealand(c->land) && !isHaunted(c->land) && !isGravityLand(c->land) &&  |     !inmirror(c) && !isSealand(c->land) && !isHaunted(c->land) && !isGravityLand(c->land) &&  | ||||||
|     (c->land != laRlyeh || rlyehComplete()) && |     (c->land != laRlyeh || rlyehComplete()) && | ||||||
| @@ -1093,7 +1094,7 @@ void buildBigStuff(cell *c, cell *from) { | |||||||
|        |        | ||||||
|   if((!chaosmode) && bearsCamelot(c->land) && is_master(c) && !binarytiling &&  |   if((!chaosmode) && bearsCamelot(c->land) && is_master(c) && !binarytiling &&  | ||||||
|     (quickfind(laCamelot) || peace::on || (hrand(I2000) < (c->land == laCrossroads4 ? 800 : 200) && horo_ok() &&  |     (quickfind(laCamelot) || peace::on || (hrand(I2000) < (c->land == laCrossroads4 ? 800 : 200) && horo_ok() &&  | ||||||
|     items[itEmerald] >= U5 && !tactic::on))) { |     items[itEmerald] >= U5 && !tactic::on && !racing::on))) { | ||||||
|     int rtr = newRoundTableRadius(); |     int rtr = newRoundTableRadius(); | ||||||
|     heptagon *alt = createAlternateMap(c, rtr+14, hsOrigin); |     heptagon *alt = createAlternateMap(c, rtr+14, hsOrigin); | ||||||
|     if(alt) { |     if(alt) { | ||||||
| @@ -1109,19 +1110,19 @@ void buildBigStuff(cell *c, cell *from) { | |||||||
|     if(c->land == laRlyeh && ctof(c) && horo_ok() &&  |     if(c->land == laRlyeh && ctof(c) && horo_ok() &&  | ||||||
|       (quickfind(laTemple) || peace::on || (hrand(I2000) < 100 &&  |       (quickfind(laTemple) || peace::on || (hrand(I2000) < 100 &&  | ||||||
|       items[itStatue] >= U5 && !randomPatternsMode &&  |       items[itStatue] >= U5 && !randomPatternsMode &&  | ||||||
|       !tactic::on && !yendor::on))) |       !tactic::on && !yendor::on && !racing::on))) | ||||||
|       createAlternateMap(c, 2, hsA); |       createAlternateMap(c, 2, hsA); | ||||||
|  |  | ||||||
|     if(c->land == laJungle && ctof(c) &&  |     if(c->land == laJungle && ctof(c) &&  | ||||||
|       (quickfind(laMountain) || (hrand(I2000) < 100 && horo_ok() &&  |       (quickfind(laMountain) || (hrand(I2000) < 100 && horo_ok() &&  | ||||||
|       !randomPatternsMode && !tactic::on && !yendor::on && landUnlocked(laMountain)))) |       !randomPatternsMode && !tactic::on && !yendor::on && !racing::on && landUnlocked(laMountain)))) | ||||||
|       createAlternateMap(c, 2, hsA); |       createAlternateMap(c, 2, hsA); | ||||||
|  |  | ||||||
|     if(c->land == laOvergrown && ctof(c) && horo_ok() && |     if(c->land == laOvergrown && ctof(c) && horo_ok() && | ||||||
|       (quickfind(laClearing) || (hrand(I2000) < 25 &&  |       (quickfind(laClearing) || (hrand(I2000) < 25 &&  | ||||||
|       !randomPatternsMode && items[itMutant] >= U5 && |       !randomPatternsMode && items[itMutant] >= U5 && | ||||||
|       isLandIngame(laClearing) && |       isLandIngame(laClearing) && | ||||||
|       !tactic::on && !yendor::on))) { |       !tactic::on && !yendor::on && !racing::on))) { | ||||||
|       heptagon *h = createAlternateMap(c, 2, hsA); |       heptagon *h = createAlternateMap(c, 2, hsA); | ||||||
|       if(h) clearing::bpdata[h].root = NULL; |       if(h) clearing::bpdata[h].root = NULL; | ||||||
|       } |       } | ||||||
| @@ -1133,7 +1134,7 @@ void buildBigStuff(cell *c, cell *from) { | |||||||
|  |  | ||||||
|     if(c->land == laOcean && ctof(c) && deepOcean && !generatingEquidistant && !peace::on && horo_ok() &&  |     if(c->land == laOcean && ctof(c) && deepOcean && !generatingEquidistant && !peace::on && horo_ok() &&  | ||||||
|       (quickfind(laWhirlpool) || ( |       (quickfind(laWhirlpool) || ( | ||||||
|         hrand(2000) < (PURE ? 500 : 1000) && !tactic::on && !yendor::on))) |         hrand(2000) < (PURE ? 500 : 1000) && !tactic::on && !racing::on && !yendor::on))) | ||||||
|       createAlternateMap(c, 2, hsA); |       createAlternateMap(c, 2, hsA); | ||||||
|  |  | ||||||
|     if(c->land == laCaribbean && horo_ok() && ctof(c) && !c->master->alt) |     if(c->land == laCaribbean && horo_ok() && ctof(c) && !c->master->alt) | ||||||
| @@ -1146,7 +1147,7 @@ void buildBigStuff(cell *c, cell *from) { | |||||||
|       (princess::forceMouse ? canReachPlayer(from, moMouse) : |       (princess::forceMouse ? canReachPlayer(from, moMouse) : | ||||||
|         (hrand(2000) < (peace::on ? 100 : 20))) &&  |         (hrand(2000) < (peace::on ? 100 : 20))) &&  | ||||||
|       !c->master->alt &&  |       !c->master->alt &&  | ||||||
|       (princess::challenge || kills[moVizier] || peace::on) && !tactic::on && !yendor::on) { |       (princess::challenge || kills[moVizier] || peace::on) && !tactic::on && !yendor::on && !racing::on) { | ||||||
|       createAlternateMap(c, PRADIUS0, hsOrigin, waPalace); |       createAlternateMap(c, PRADIUS0, hsOrigin, waPalace); | ||||||
|       celllister cl(c, 5, 1000000, NULL); |       celllister cl(c, 5, 1000000, NULL); | ||||||
|       for(cell *c: cl.lst) if(c->master->alt) generateAlts(c->master); |       for(cell *c: cl.lst) if(c->master->alt) generateAlts(c->master); | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								game.cpp
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								game.cpp
									
									
									
									
									
								
							| @@ -7215,7 +7215,7 @@ namespace orbbull { | |||||||
| static constexpr bool randterra = false; | static constexpr bool randterra = false; | ||||||
|  |  | ||||||
| void terracotta(cell *c) { | void terracotta(cell *c) { | ||||||
|   if(c->wall == waTerraWarrior && !c->monst) { |   if(c->wall == waTerraWarrior && !c->monst && !racing::on) { | ||||||
|     bool live = false; |     bool live = false; | ||||||
|     if(randterra) { |     if(randterra) { | ||||||
|       c->landparam++; |       c->landparam++; | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								hyper.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								hyper.h
									
									
									
									
									
								
							| @@ -4684,6 +4684,7 @@ namespace racing { | |||||||
|   extern vector<cell*> track; |   extern vector<cell*> track; | ||||||
|   extern map<cell*, pair<int, int> > trackstage; |   extern map<cell*, pair<int, int> > trackstage; | ||||||
|   extern int current_player; |   extern int current_player; | ||||||
|  |   extern vector<eLand> race_lands; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| bool subscreen_split(reaction_t for_each_subscreen); | bool subscreen_split(reaction_t for_each_subscreen); | ||||||
|   | |||||||
| @@ -788,7 +788,7 @@ void giantLandSwitch(cell *c, int d, cell *from) { | |||||||
|             else c2->mondir = NODIR; |             else c2->mondir = NODIR; | ||||||
|             } |             } | ||||||
|           } |           } | ||||||
|         if(!c->monst && !tactic::on && !yendor::on && !randomPatternsMode && !peace::on && !euclid && hrand(4000) < 10 && !safety) { |         if(!c->monst && !tactic::on && !racing::on && !yendor::on && !randomPatternsMode && !peace::on && !euclid && hrand(4000) < 10 && !safety) { | ||||||
|           c->item = itBabyTortoise; |           c->item = itBabyTortoise; | ||||||
|           tortoise::babymap[c] = getBits(c) ^ tortoise::getRandomBits(); |           tortoise::babymap[c] = getBits(c) ^ tortoise::getRandomBits(); | ||||||
|           } |           } | ||||||
| @@ -956,7 +956,7 @@ void giantLandSwitch(cell *c, int d, cell *from) { | |||||||
|             forCellEx(c2, cc[i]) if(c2->wall == waArrowTrap) ok = false; |             forCellEx(c2, cc[i]) if(c2->wall == waArrowTrap) ok = false; | ||||||
|             } |             } | ||||||
|           if(ok) { |           if(ok) { | ||||||
|             for(int i=1; i<4; i++)  |             if(!racing::on) for(int i=1; i<4; i++)  | ||||||
|               cc[i]->wall = waArrowTrap, |               cc[i]->wall = waArrowTrap, | ||||||
|               cc[i]->wparam = 0; |               cc[i]->wparam = 0; | ||||||
|             for(int i=0; i<5; i++)  |             for(int i=0; i<5; i++)  | ||||||
| @@ -965,7 +965,7 @@ void giantLandSwitch(cell *c, int d, cell *from) { | |||||||
|             cc[4]->wall = waStone; |             cc[4]->wall = waStone; | ||||||
|             } |             } | ||||||
|           } |           } | ||||||
|         if(pseudohept(c) && hrand(100) < 40 && c->wall == waNone) { |         if(pseudohept(c) && hrand(100) < 40 && c->wall == waNone && !racing::on) { | ||||||
|           c->wall = waTerraWarrior; |           c->wall = waTerraWarrior; | ||||||
|           c->landparam = randterra ? 0 : 3 + hrand(3); |           c->landparam = randterra ? 0 : 3 + hrand(3); | ||||||
|           if(hrand(100) < items[itTerra]-10) |           if(hrand(100) < items[itTerra]-10) | ||||||
| @@ -1759,7 +1759,7 @@ void giantLandSwitch(cell *c, int d, cell *from) { | |||||||
|       break; |       break; | ||||||
|      |      | ||||||
|     case laHunting: |     case laHunting: | ||||||
|       if(d == 7 && c->land == laHunting) { |       if(d == 7 && c->land == laHunting && !racing::on) { | ||||||
|         if(hrand(1000) < 20) { |         if(hrand(1000) < 20) { | ||||||
|           if(openplains(c)) { |           if(openplains(c)) { | ||||||
|             if(hrand(2) == 0) { |             if(hrand(2) == 0) { | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								landlock.cpp
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								landlock.cpp
									
									
									
									
									
								
							| @@ -667,7 +667,7 @@ bool rlyehComplete() { | |||||||
|   } |   } | ||||||
|  |  | ||||||
| bool lchance(eLand l) {  | bool lchance(eLand l) {  | ||||||
|   if(tactic::on || yendor::on || ((geometry || GOLDBERG) && specialland == laElementalWall)) return true; |   if(tactic::on || yendor::on || racing::on || ((geometry || GOLDBERG) && specialland == laElementalWall)) return true; | ||||||
|   if(chaosmode) return hrand(100) < 25; |   if(chaosmode) return hrand(100) < 25; | ||||||
|   return hrand(100) >= 40 * kills[elementalOf(l)] / (elementalKills()+1);  |   return hrand(100) >= 40 * kills[elementalOf(l)] / (elementalKills()+1);  | ||||||
|   } |   } | ||||||
| @@ -724,8 +724,8 @@ hookset<eLand(eLand)> *hooks_nextland; | |||||||
|  |  | ||||||
| eLand getNewLand(eLand old) { | eLand getNewLand(eLand old) { | ||||||
|  |  | ||||||
|   if(old == laMirror && !chaosmode && hrand(10) >= (tactic::on ? 0 : markOrb(itOrbLuck) ? 5 : 2)) return laMirrored; |   if(old == laMirror && !chaosmode && hrand(10) >= ((tactic::on || racing::on) ? 0 : markOrb(itOrbLuck) ? 5 : 2)) return laMirrored; | ||||||
|   if(old == laTerracotta && !chaosmode && hrand(5) >= (tactic::on ? 0 : markOrb(itOrbLuck) ? 2 : 1) && !weirdhyperbolic) return laTerracotta; |   if(old == laTerracotta && !chaosmode && hrand(5) >= ((tactic::on || racing::on) ? 0 : markOrb(itOrbLuck) ? 2 : 1) && !weirdhyperbolic) return laTerracotta; | ||||||
|      |      | ||||||
|   eLand l = callhandlers(laNone, hooks_nextland, old); |   eLand l = callhandlers(laNone, hooks_nextland, old); | ||||||
|   if(l) return l; |   if(l) return l; | ||||||
| @@ -763,6 +763,15 @@ eLand getNewLand(eLand old) { | |||||||
|   if(old == laEAir   && lchance(old)) return hrand(2) ? laEWater : laEFire; |   if(old == laEAir   && lchance(old)) return hrand(2) ? laEWater : laEFire; | ||||||
|   if(old == laEWater && lchance(old)) return hrand(2) ? laEEarth : laEAir; |   if(old == laEWater && lchance(old)) return hrand(2) ? laEEarth : laEAir; | ||||||
|   if(old == laEFire  && lchance(old)) return hrand(2) ? laEEarth : laEAir; |   if(old == laEFire  && lchance(old)) return hrand(2) ? laEEarth : laEAir; | ||||||
|  |    | ||||||
|  |   if(racing::on && old != laElementalWall) { | ||||||
|  |     eLand l = old; | ||||||
|  |     using racing::race_lands; | ||||||
|  |     while(l == old) l = race_lands[hrand(isize(race_lands))]; | ||||||
|  |     if(l == laElementalWall) l = randomElementalLand(); | ||||||
|  |     if(l == laMirror) l = laCrossroads; | ||||||
|  |     return l; | ||||||
|  |     } | ||||||
|  |  | ||||||
|   if(tactic::on && !(tactic::trailer && old == specialland)) return specialland; |   if(tactic::on && !(tactic::trailer && old == specialland)) return specialland; | ||||||
|   if(weirdhyperbolic && specialland != old && specialland != laCrossroads4 && !chaosmode && old != laBarrier) return specialland; |   if(weirdhyperbolic && specialland != old && specialland != laCrossroads4 && !chaosmode && old != laBarrier) return specialland; | ||||||
|   | |||||||
							
								
								
									
										19
									
								
								racing.cpp
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								racing.cpp
									
									
									
									
									
								
							| @@ -19,14 +19,21 @@ static const int TWIDTH = 6; | |||||||
| vector<cell*> track; | vector<cell*> track; | ||||||
| map<cell*, pair<int, int> > trackstage; | map<cell*, pair<int, int> > trackstage; | ||||||
|  |  | ||||||
|  | bool bad(cell *c2, cell *c) { | ||||||
|  |   if(!passable(c2, c, P_ISPLAYER)) return true; | ||||||
|  |   if((c2->land == laCrossroads) ^ (c->land == laCrossroads)) return true; | ||||||
|  |   return false; | ||||||
|  |   } | ||||||
|  |  | ||||||
| int trackval(cell *c) { | int trackval(cell *c) { | ||||||
|   int v = celldist(c); |   int v = celldist(c); | ||||||
|   int bonus = 0; |   int bonus = 0; | ||||||
|  |   if(c->land != laCrossroads) | ||||||
|   forCellEx(c2, c) { |   forCellEx(c2, c) { | ||||||
|     int d = celldist(c2) - v; |     int d = celldist(c2) - v; | ||||||
|     if(d < 0 && !passable(c2, c, P_ISPLAYER)) |     if(d < 0 && bad(c2, c)) | ||||||
|       bonus += 2; |       bonus += 2; | ||||||
|     if(d == 0 && !passable(c2, c, P_ISPLAYER)) |     if(d == 0 && bad(c2, c)) | ||||||
|       bonus ++; |       bonus ++; | ||||||
|     } |     } | ||||||
|   return v + bonus; |   return v + bonus; | ||||||
| @@ -71,7 +78,7 @@ void generate_track() { | |||||||
|       break; |       break; | ||||||
|       } |       } | ||||||
|     setdist(c, 4, parent[c]); |     setdist(c, 4, parent[c]); | ||||||
|     forCellEx(c1, c) if(passable(c, c1, P_ISPLAYER) && !parent.count(c1)) { |     forCellEx(c1, c) if(!bad(c1, c) && !parent.count(c1)) { | ||||||
|       parent[c1] = c; |       parent[c1] = c; | ||||||
|       cellbydist[trackval(c1)].push_back(c1); |       cellbydist[trackval(c1)].push_back(c1); | ||||||
|       } |       } | ||||||
| @@ -289,7 +296,6 @@ int readArgs() { | |||||||
|     stop_game(); |     stop_game(); | ||||||
|     shmup::on = true; |     shmup::on = true; | ||||||
|     racing::on = true; |     racing::on = true; | ||||||
|     tactic::on = true; |  | ||||||
|     timerghost = false; |     timerghost = false; | ||||||
|     } |     } | ||||||
|   else return 1; |   else return 1; | ||||||
| @@ -365,7 +371,9 @@ auto hook = | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
| vector<eLand> race_lands = { | vector<eLand> race_lands = { | ||||||
|   laIce, laDesert,  |   laHunting, | ||||||
|  |   laIce,  | ||||||
|  |   laDesert,  | ||||||
|    |    | ||||||
|   laCrossroads, /* need editing */ |   laCrossroads, /* need editing */ | ||||||
|   laCaves,      /* need fixing */ |   laCaves,      /* need fixing */ | ||||||
| @@ -378,7 +386,6 @@ vector<eLand> race_lands = { | |||||||
|   laElementalWall, |   laElementalWall, | ||||||
|   laWildWest, |   laWildWest, | ||||||
|   laDragon, |   laDragon, | ||||||
|   laHunting, |  | ||||||
|   laTerracotta, /* disable traps and warriors */ |   laTerracotta, /* disable traps and warriors */ | ||||||
|   laRuins, |   laRuins, | ||||||
|   }; |   }; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Zeno Rogue
					Zeno Rogue