From 69840c6716be61f6d0e82dcba0ba520e981890a5 Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Wed, 9 Jul 2025 09:42:38 +0200 Subject: [PATCH] removed thematic -- could not make it cool --- bigstuff.cpp | 7 --- celldrawer.cpp | 63 ------------------- classes.cpp | 3 - complex.cpp | 5 +- content.cpp | 24 -------- help.cpp | 7 --- hyperrogue-music.txt | 4 +- landgen.cpp | 20 +------ landlock.cpp | 140 ++----------------------------------------- orbgen.cpp | 6 -- sound.cpp | 1 - system.cpp | 1 - 12 files changed, 9 insertions(+), 272 deletions(-) diff --git a/bigstuff.cpp b/bigstuff.cpp index 0b01984e..3de2985f 100644 --- a/bigstuff.cpp +++ b/bigstuff.cpp @@ -1566,7 +1566,6 @@ EX int wallchance(cell *c, bool deepOcean) { l == laCrossroads4 ? 5000 : l == laCrossroads6 ? 5000 : l == laMasterCrossroads ? 10000 : - isThematic(l) ? 10000 : (l == laMirror && !yendor::generating) ? 2500 : tactic::on ? 0 : racing::on ? 0 : @@ -1767,9 +1766,6 @@ EX void build_walls(cell *c, cell *from) { return; } - if(specialland == laThematic && good_for_wall(c) && hrand(10000) < 5000) - buildBarrierNowall(c, getNewThematic(c->land)); - if(specialland == laMasterCrossroads && c->land == laMasterCrossroads && good_for_wall(c) && hrand(10000) < 100) buildBarrierNowall(c, laCrossroads4); @@ -1847,9 +1843,6 @@ EX void build_walls(cell *c, cell *from) { return; } - else if(good_for_wall(c) && ls::any_wall() && isThematic(c->land) && hrand(10000) < 1500 && !c->master->alt && !racing::on && - buildBarrierNowall(c, getNewThematic(c->land))) ; - else if(good_for_wall(c) && ls::any_wall() && c->land == laCrossroads4 && hrand(10000) < 7000 && c->land && !c->master->alt && !tactic::on && !racing::on && buildBarrierNowall(c, getNewLand(laCrossroads4))) ; diff --git a/celldrawer.cpp b/celldrawer.cpp index a3bd46ac..b6f80f57 100644 --- a/celldrawer.cpp +++ b/celldrawer.cpp @@ -97,11 +97,6 @@ EX colortable endorian_colors = { 0x202010, 0x404030, 0x0000D0 }; EX colortable canopy_colors = { 0x60C060, 0x489048 }; EX colortable camelot_cheat_colors = { 0x606060, 0xC0C0C0 }; -bool thembound(cell *c) { - forCellEx(c1, c) if(c1->land != c->land && c1->land != laBarrier) return true; - return false; - } - /** return the special colortable for the given cell -- color menu uses this to know that a colortable should be edited */ EX colortable* special_colortable_for(cell *c) { if(c->land == laPrairie && prairie::isriver(c)) return &prairie_colors; @@ -197,9 +192,6 @@ void celldrawer::setcolors() { case laAlchemist: case laFrog: case laCursed: case laDice: fcol = floorcolors[c->land]; break; - case laThematic: case laThematicNature: case laThematicUrban: case laThematicDeath: case laThematicAbstract: case laThematicWater: case laThematicEarth: case laThematicHeat: - fcol = floorcolors[laThematic]; break; - case laCA: fcol = floorcolors[c->land]; if(geosupport_chessboard()) { @@ -1241,61 +1233,6 @@ void celldrawer::set_land_floor(const shiftmatrix& Vf) { queuepoly(Vf * ddspin(c, i, M_PI/S7) * xpush(cgi.rhexf), cgi.shSwitchDisk, darkena(minf[active_switch()].color, fd, 0xFF)); break; - case laThematicNature: - if(c->wall == waNone) { - dynamicval p(poly_outline, OUTLINE_TRANS); - queuepolyat(Vf, cgi.shTreeIcon, darkena(linf[laThematicNature].color, 0, thembound(c) ? 0xFF : 0x10), PPR::FLOOR_DRAGON); - } - break; - - case laThematicUrban: - if(c->wall == waNone) { - dynamicval p(poly_outline, OUTLINE_TRANS); - queuepolyat(Vf, cgi.shHumanoid, darkena(linf[laThematicUrban].color, 0, thembound(c) ? 0xFF : 0x10), PPR::FLOOR_DRAGON); - } - break; - - case laThematicEarth: - if(c->wall == waNone) { - dynamicval p(poly_outline, OUTLINE_TRANS); - queuepolyat(Vf, cgi.shLightningBolt, darkena(linf[laThematicEarth].color, 0, thembound(c) ? 0xFF : 0x10), PPR::FLOOR_DRAGON); - } - break; - - case laThematicWater: - if(c->wall == waNone) { - dynamicval p(poly_outline, OUTLINE_TRANS); - queuepolyat(Vf, cgi.shSmallPike, darkena(linf[laThematicWater].color, 0, thembound(c) ? 0xFF : 0x10), PPR::FLOOR_DRAGON); - } - break; - - case laThematicAbstract: - if(c->wall == waNone) { - dynamicval p(poly_outline, OUTLINE_TRANS); - queuepolyat(Vf, cgi.shDodeca, darkena(linf[laThematicAbstract].color, 0, thembound(c) ? 0xFF : 0x10), PPR::FLOOR_DRAGON); - } - break; - - case laThematicDeath: - if(c->wall == waNone) { - dynamicval p(poly_outline, OUTLINE_TRANS); - queuepolyat(Vf, cgi.shMiniGhost, darkena(linf[laThematicDeath].color, 0, thembound(c) ? 0xFF : 0x10), PPR::FLOOR_DRAGON); - } - break; - - case laThematicHeat: - if(c->wall == waNone) { - dynamicval p(poly_outline, OUTLINE_TRANS); - float h = HEAT(c); - color_t col; - if(h < -1) col = 0xFF; - else if(h < 0) col = gradient(0xFFFFFF, 0xFF, 0, h, -1); - else if(h < 1) col = gradient(0xFFFFFF, 0xFFFF00, 0, h, 1); - else col = 0xFFFF00; - queuepolyat(Vf, cgi.shGem[0], darkena(col, 0, thembound(c) ? 0xFF : 0x10), PPR::FLOOR_DRAGON); - } - break; - case laStorms: set_floor(cgi.shChargedFloor); break; diff --git a/classes.cpp b/classes.cpp index 79326431..3d8ac29f 100644 --- a/classes.cpp +++ b/classes.cpp @@ -420,9 +420,6 @@ const char *ruindesc = const char *rock_description = "Shoot the Space Rocks for score. Large Rocks will split into two smaller rocks."; -const char *thematic_crossroads = - "The Thematic Crossroads has various sections that connect to lands with specific theme."; - #if HDR enum eSlimegroup { sgNone, sgCave, sgWater, sgFloorA, sgFloorB, sgVine, sgTree }; #endif diff --git a/complex.cpp b/complex.cpp index 56f31cf4..12e848c9 100644 --- a/complex.cpp +++ b/complex.cpp @@ -2064,7 +2064,6 @@ EX namespace heat { EX double absheat(cell *c) { if(c->land == laCocytus) return HEAT(c) -.6; if(c->land == laIce || c->land == laBlizzard || c->land == laEclectic) return HEAT(c) -.4; - if(c->land == laThematicHeat) return HEAT(c) - 0.2; return 0; } @@ -2168,8 +2167,6 @@ EX namespace heat { hmod += xrate*.1; if(ct->land == laVolcano) hmod += xrate * (ct->wall == waMagma ? .4 : .2); - else if(c->land == laThematicHeat && !isThematic(ct->land) && !isIcyLand(ct->land) && ct->land != laBarrier) - hmod += xrate * .3; } for(cell* ct: ls) { @@ -2218,7 +2215,7 @@ EX namespace heat { addMessage(XLAT("%The1 melts away!", c->monst)); fallMonster(c); } - if(c->wall == waIcewall && HEAT(c) > (c->land == laThematicHeat ? .2 : .4)) + if(c->wall == waIcewall && HEAT(c) > .4) drawParticles(c, MELTCOLOR, 4, 60), c->wall = waNone, kills[0]++; if(c->wall == waFrozenLake && HEAT(c) > (c->land == laCocytus ? .6 : .4)) diff --git a/content.cpp b/content.cpp index 1c1e6afd..33826843 100644 --- a/content.cpp +++ b/content.cpp @@ -1754,30 +1754,6 @@ LAND( 0x7030A0, "Crossroads VI", laCrossroads6, ZERO, itHyperstone, RESERVED, "A NATIVE(0) REQ(ITEMS(itCursed, 5)) -LAND( 0xFF0060, "Crossroads VII", laThematic, ZERO, itHyperstone, RESERVED, thematic_crossroads) - NATIVE(0) REQ(GOLD(R400)) - -LAND( 0x308030, "Crossroads VII (Nature)", laThematicNature, ZERO, itHyperstone, RESERVED, thematic_crossroads) - NATIVE(0) REQ(GOLD(R400)) - -LAND( 0x60C0C0, "Crossroads VII (Urban)", laThematicUrban, ZERO, itHyperstone, RESERVED, thematic_crossroads) - NATIVE(0) REQ(GOLD(R400)) - -LAND( 0x606060, "Crossroads VII (Death)", laThematicDeath, ZERO, itHyperstone, RESERVED, thematic_crossroads) - NATIVE(0) REQ(GOLD(R400)) - -LAND( 0xC060C0, "Crossroads VII (Abstract)", laThematicAbstract, ZERO, itHyperstone, RESERVED, thematic_crossroads) - NATIVE(0) REQ(GOLD(R400)) - -LAND( 0x6060C0, "Crossroads VII (Water)", laThematicWater, ZERO, itHyperstone, RESERVED, thematic_crossroads) - NATIVE(0) REQ(GOLD(R400)) - -LAND( 0x1030F0, "Crossroads VII (Fire/Ice)", laThematicHeat, LF_ICY, itHyperstone, RESERVED, thematic_crossroads) - NATIVE(0) REQ(GOLD(R400)) - -LAND( 0xFFFF00, "Crossroads VII (Earth/Air)", laThematicEarth, ZERO, itHyperstone, RESERVED, thematic_crossroads) - NATIVE(0) REQ(GOLD(R400)) - LAND( 0xC0B090, "Master Crossroads", laMasterCrossroads, ZERO, itHyperstone, RESERVED, "A crossroads that connects only to other crossroads.") NATIVE(0) REQ(GOLD(R500)) diff --git a/help.cpp b/help.cpp index 95908c67..fb99625a 100644 --- a/help.cpp +++ b/help.cpp @@ -855,13 +855,6 @@ EX string generateHelpForLand(eLand l) { } #endif - if(isThematic(l)) { - s += XLAT("\n\nThe following lands connect to this part: "); - - int qty = 0; - for(eLand l1: land_over) if(isLandIngame(l1) && which_thematic(l1) == l) { if(qty) s += ", "; qty++; s += XLATN(linf[l1].name); } - } - return s; } diff --git a/hyperrogue-music.txt b/hyperrogue-music.txt index 3c5521f8..e7189753 100644 --- a/hyperrogue-music.txt +++ b/hyperrogue-music.txt @@ -166,10 +166,8 @@ [92] */music/hr3-laboratory.ogg # Crossroads VI [93] */music/hr3-crossroads.ogg -# Crossroads VII -[94] */music/hr3-crossroads.ogg # Master Crossroads -[:2] */music/hr3-crossroads.ogg +[94] */music/hr3-crossroads.ogg # None [00] (used when the window is out of focus) diff --git a/landgen.cpp b/landgen.cpp index e61ef343..c375a78e 100644 --- a/landgen.cpp +++ b/landgen.cpp @@ -2521,27 +2521,13 @@ EX void giantLandSwitch(cell *c, int d, cell *from) { case laCrossroads5: case laCrossroads6: case laMasterCrossroads: - - case laThematic: case laThematicNature: case laThematicUrban: case laThematicDeath: case laThematicAbstract: case laThematicWater: case laThematicEarth: case laThematicHeat: if(c->wall == waTower) c->land = laCamelot; ONEMPTY { - if(isThematic(c->land) && hrand(100) < 10) switch(c->land) { - case laThematicNature: c->wall = pick(waSmallTree, waBigTree); break; - case laThematicUrban: c->wall = pick(waRuinWall, waPalace); break; - case laThematicDeath: c->wall = pick(waAncientGrave, waFreshGrave); break; - case laThematicAbstract: c->wall = pick(waFloorA, waFloorB, waTrapdoor); break; - case laThematicWater: { c->wall = waShallow; forCellCM(c1, c) if(c1->land == c->land) c1->wall = waShallow; } break; - case laThematicEarth: c->wall = waStone; break; - case laThematicHeat: c->wall = pick(waBonfireOff, waIcewall); break; - default: ; - } - int them_abstract = c->land == laThematicAbstract ? 3 : isThematic(c->land) ? 0 : 1; - if(!BITRUNCATED && c->land == laCrossroads5 && hrand(100) < 60) c->wall = waBarrier; else if(!inv::on && items[itShard] >= 10 && hrand(8000) < 120*orbcrossfun(items[itShard]) && mirror::build(c)) ; - else if(hyperstonesUnlocked() && !racing::on && hrand(8000) < 100 * them_abstract && mirror::build(c)) ; - else if(tactic::on && isCrossroads(specialland) && hrand(8000) < 120 * them_abstract && mirror::build(c)) ; + else if(hyperstonesUnlocked() && !racing::on && hrand(8000) < 100 && mirror::build(c)) ; + else if(tactic::on && isCrossroads(specialland) && hrand(8000) < 120 && mirror::build(c)) ; else if(c->land == laCrossroads4 && hrand(24000) < 10 && tactic::on) c->wall = waRose; else { @@ -2877,7 +2863,7 @@ EX void repairLandgen(cell *c) { if(c->land == laAlchemist && c->wall != waFloorA && c->wall != waFloorB) c->wall = waFloorA; - if(c->wall == waIcewall && !among(c->land, laIce, laCocytus, laBlizzard, laEclectic, laThematicHeat)) + if(c->wall == waIcewall && !among(c->land, laIce, laCocytus, laBlizzard, laEclectic)) c->wall = waNone; if(c->wall == waRed3 && c->land != laRedRock && c->land != laSnakeNest && c->land != laBrownian && c->land != laEclectic) diff --git a/landlock.cpp b/landlock.cpp index 55b759fe..ef65575b 100644 --- a/landlock.cpp +++ b/landlock.cpp @@ -53,7 +53,7 @@ EX int landMultiplier(eLand l) { } EX bool isCrossroads(eLand l) { - return among(l, laCrossroads, laCrossroads2, laCrossroads3, laCrossroads4, laCrossroads5, laCrossroads6, laMasterCrossroads) || isThematic(l); + return among(l, laCrossroads, laCrossroads2, laCrossroads3, laCrossroads4, laCrossroads5, laCrossroads6, laMasterCrossroads); } EX bool isCrossroadsNM(eLand l) { @@ -61,7 +61,7 @@ EX bool isCrossroadsNM(eLand l) { } EX bool bearsCamelot(eLand l) { - return isCrossroads(l) && !among(l, laCrossroads2, laCrossroads5, laMasterCrossroads) && (l == laThematicUrban || !isThematic(l)); + return isCrossroads(l) && !among(l, laCrossroads2, laCrossroads5, laMasterCrossroads); } EX bool inmirror(const cellwalker& cw) { @@ -339,8 +339,6 @@ EX bool voronoi_sea_incompatible(eLand l1, eLand l2) { EX bool incompatible1(eLand l1, eLand l2) { if(l1 == laMasterCrossroads && !isCrossroads(l2)) return true; - if(isThematic(l1) && which_thematic(l2) != l1) return true; - if(isCrossroadsNM(l1) && isCrossroadsNM(l2)) return true; if(l1 == laJungle && l2 == laMotion) return true; if(l1 == laMirrorOld && l2 == laMotion) return true; @@ -463,14 +461,6 @@ EX bool all_unlocked = false; EX vector cheatdest_list; -EX eLand getNewThematic(eLand l) { - for(int it=0; it<100; it++) { - eLand l1 = pick(laThematicNature, laThematicUrban, laThematicDeath, laThematicAbstract, laThematicHeat, laThematicWater, laThematicEarth); - if(l1 != l) return l1; - } - return l; - } - EX eLand getNewLand(eLand old) { #if CAP_LEGACY @@ -583,8 +573,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, laCrossroads6, laMasterCrossroads, - laThematicNature, laThematicUrban, laThematicDeath, laThematicAbstract, laThematicHeat, laThematicWater, laThematicEarth + laCrossroads5, laCrossroads6, laMasterCrossroads }) if(landUnlocked(l)) tab[cnt++] = l; @@ -755,132 +744,11 @@ EX vector land_over = { laPrairie, laBull, laTerracotta, laRose, laElementalWall, laTrollheim, laHell, laCrossroads3, laCocytus, laPower, laCrossroads4, - laCrossroads5, laCrossroads6, laMasterCrossroads, laThematic, + laCrossroads5, laCrossroads6, laMasterCrossroads, // EXTRA laWildWest, laHalloween, laDual, laSnakeNest, laMagnetic, laCA, laAsteroids }; -EX bool isThematic(eLand l) { - return among(l, laThematic, laThematicNature, laThematicUrban, laThematicDeath, laThematicAbstract, laThematicHeat, laThematicWater, laThematicEarth); - } - -EX eLand which_thematic(eLand l) { - // note: even if some lands are not directly accessible from Thematic, they still affect orb generation in it - switch(l) { - case laJungle: - case laEndorian: - case laWineyard: - case laOvergrown: - case laFrog: - case laRose: - case laDryForest: - case laPrairie: - case laBull: - case laMountain: // not via crossroads - case laClearing: // not via crossroads - case laTortoise: // not via crossroads - return laThematicNature; - case laAlchemist: - case laMotion: - case laMirror: - case laMirrorOld: - case laMinefield: - case laSwitch: - case laReptile: - case laZebra: - case laDice: - case laWestWall: - case laHalloween: // not standard - case laDual: // not standard - return laThematicAbstract; - case laIvoryTower: - case laPalace: - case laDungeon: - case laRuins: - case laEclectic: - case laRlyeh: - case laVariant: - case laMasterCrossroads: - case laCamelot: // in - case laTemple: // not via crossroads - case laPrincessQuest: // not via crossroads - case laWildWest: // not standard - return laThematicUrban; - case laHunting: - case laGraveyard: - case laBurial: - case laCursed: - case laDeadCaves: - case laTerracotta: - case laHive: - case laHaunted: case laHauntedWall: case laHauntedBorder: // not via crossroads - return laThematicDeath; - case laIce: - case laVolcano: - case laDragon: - case laHell: - case laCocytus: - case laPower: - case laBlizzard: - case laEFire: - return laThematicHeat; - case laNone: - case laBarrier: - case laOceanWall: - case laCA: - case laCanvas: - case laElementalWall: - case laMercuryRiver: - case laMirrorWall: - case laMirrorWall2: - case laMirrored: - case laMirrored2: - case laMemory: - case landtypes: - return laNone; - case laCrossroads: - case laCrossroads2: - case laCrossroads3: - case laCrossroads4: - case laCrossroads5: - case laCrossroads6: - case laThematic: - case laThematicAbstract: - case laThematicNature: - case laThematicUrban: - case laThematicDeath: - case laThematicHeat: - case laThematicWater: - case laThematicEarth: - case laMagnetic: - case laAsteroids: - return laThematic; - case laOcean: - case laDocks: - case laWet: - case laWarpCoast: case laWarpSea: - case laLivefjord: - case laKraken: // not direct - case laCaribbean: // not direct - case laBrownian: // not direct - case laWhirlpool: // not direct - case laEWater: - return laThematicWater; - case laRedRock: - case laDesert: - case laCaves: - case laStorms: - case laWhirlwind: - case laEmerald: - case laEEarth: - case laEAir: - case laTrollheim: - case laSnakeNest: // not standard - return laThematicEarth; - } - return laThematic; - } - EX vector landlist; #if HDR diff --git a/orbgen.cpp b/orbgen.cpp index 0da71a25..5688529c 100644 --- a/orbgen.cpp +++ b/orbgen.cpp @@ -600,12 +600,6 @@ EX void placeCrossroadOrbs(cell *c) { int gch = oi.gchance; if(!inv::on) gch /= orbcrossfun(treas); else gch /= 2; - if(isThematic(c->land)) { - bool local = which_thematic(oi.l) == c->land; - if(!local) continue; - mul *= 7; - } - if(hrand(gch) >= mul) continue; if(hrand(50+items[itHyperstone]) >= 50) continue; diff --git a/sound.cpp b/sound.cpp index bcd2b3c4..5c6aa4a2 100644 --- a/sound.cpp +++ b/sound.cpp @@ -32,7 +32,6 @@ EX eLand getCurrentLandForMusic() { if(isHaunted(id)) id = laHaunted; if(id == laWarpSea) id = laWarpCoast; if(id == laMercuryRiver) id = laTerracotta; - if(isThematic(id)) id = laThematic; return id; } diff --git a/system.cpp b/system.cpp index 4f1152d4..3cb269a7 100644 --- a/system.cpp +++ b/system.cpp @@ -241,7 +241,6 @@ EX void initgame() { splitrocks = 0; if(firstland == laElementalWall) cwt.at->land = randomElementalLand(); - if(firstland == laThematic) cwt.at->land = getNewThematic(firstland); resetview(); createMov(cwt.at, 0);