From 1bd9381b7380166cd5945d30d60d7adee17db38f Mon Sep 17 00:00:00 2001 From: "Joseph C. Sible" Date: Sat, 8 May 2021 17:32:17 -0400 Subject: [PATCH 01/44] Avoid spurious "R'Lyeh is not what we are talking about now" If you're following along with the tutorial, you'll still be in the Temple of Cthulhu when it tells you to go to the Burial Grounds. On your way there, you'll need to pass back through R'Lyeh, so we shouldn't warn you not to go there. --- tour.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tour.cpp b/tour.cpp index dbd83570..95be0ba4 100644 --- a/tour.cpp +++ b/tour.cpp @@ -824,7 +824,7 @@ EX slide default_slides[] = { QUICKFIND { return (l == laBurial && !items[itOrbSword]); }; - SHOWLAND ( l == laCrossroads || l == laBurial ); + SHOWLAND ( l == laRlyeh || l == laCrossroads || l == laBurial ); } }, {pcg+"Periodic patterns", 30, LEGAL::UNLIMITED | USE_SLIDE_NAME, From 29547812812f508636b4c648a853891d448a415d Mon Sep 17 00:00:00 2001 From: "Joseph C. Sible" Date: Wed, 12 May 2021 23:12:20 -0400 Subject: [PATCH 02/44] Update build information On Debian buster, I needed make, g++, libsdl-mixer1.2-dev, and libglew-dev to compile successfully, so add them to the list. Remove gcc from the list, since it's a dependency of g++ and so gets installed anyway. Also, mention that mymake uses less RAM to compile (relevant on RAM-constrained systems). --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 753e56e9..a5cd3707 100644 --- a/README.md +++ b/README.md @@ -56,13 +56,13 @@ and visualizations (see [RogueViz](http://roguetemple.com/z/hyper/rogueviz.php)) You should be able to compile on Linux, OSX, or MinGW with something like this (you need SDL, SDL_ttf, and SDL_gfx): ``` -sudo apt-get install gcc libsdl1.2-dev libsdl-ttf2.0-dev libsdl-gfx1.2-dev +sudo apt-get install make g++ libsdl1.2-dev libsdl-ttf2.0-dev libsdl-gfx1.2-dev libsdl-mixer1.2-dev libglew-dev git clone https://github.com/zenorogue/hyperrogue.git hyperrogue cd hyperrogue make ``` -The `mymake` program builds HyperRogue in parts. It takes longer than the method shown above, but when you change something, `mymake` will only recompile the changed file. +The `mymake` program builds HyperRogue in parts. It takes longer than the method shown above, but it uses significantly less memory during compilation, and when you change something, `mymake` will only recompile the changed file. Additionally, it can be easily configured, e.g., to produce an optimized build, or to include addons (see `mymake.cpp` for some example invocations, and `devmods` for some example addons). ``` From 3659b5f4148f58d2ff9295a0a1182871faa69b24 Mon Sep 17 00:00:00 2001 From: "Joseph C. Sible" Date: Fri, 11 Jun 2021 20:35:44 -0400 Subject: [PATCH 03/44] Mention the Cursed Canyon in the Shadow's description --- content.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content.cpp b/content.cpp index 60d2fa85..292c2f41 100644 --- a/content.cpp +++ b/content.cpp @@ -107,7 +107,7 @@ MONSTER( 'N', 0x404040, "Necromancer", moNecromancer, CF_FACE_UP | CF_HIGH_THREA "Necromancers can raise ghosts and zombies from fresh graves." ) MONSTER( 'S', 0x404040, "Shadow", moShadow, CF_FACE_UP | CF_NOBLOW | CF_NONLIVING | CF_SPAM, RESERVED, moNone, - "A creepy monster who follows you everywhere in the Graveyard." + "A creepy monster who follows you everywhere in the Graveyard and the Cursed Canyon." ) MONSTER( 'T', 0x40E040, "Tentacle", moTentacle, ZERO | CF_NOGHOST | CF_NOBLOW | CF_MOUNTABLE | CF_MULTITILE | CF_WORM, RESERVED, moNone, tentdes ) MONSTER( 't', 0x008000, "Tentacle Tail", moTentacletail, ZERO | CF_NOGHOST | CF_NOBLOW | CF_MOUNTABLE | CF_MULTITILE | CF_WORM | CF_INACTIVE | CF_SPAM, RESERVED, moNone, tentdes ) From fae51170d77df2cb0ec8445fa8cb7c5dd29dc725 Mon Sep 17 00:00:00 2001 From: blargdag Date: Wed, 9 Jun 2021 12:35:39 -0700 Subject: [PATCH 04/44] Fix typo in Russian translation. --- language-ru.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-ru.cpp b/language-ru.cpp index 09019578..6c281800 100644 --- a/language-ru.cpp +++ b/language-ru.cpp @@ -3481,7 +3481,7 @@ S( "волну манящего аромата. Все монстры на пути двигаются к кусту, даже если " "им приходится атаковать союзника или прекрасное существо, пойти в воду, огонь, пропасть " "или в шипы куста. Это не действует на призраков, плющи, каменных змей и " - "и монстров, ограниченных своей землёй.") + "монстров, ограниченных своей землёй.") S( "This land is filled with beautiful, but dangerous, creatures and plants.", From b2faae42d8067ce91e336293ac4a50c3668e4cdc Mon Sep 17 00:00:00 2001 From: blargdag Date: Wed, 9 Jun 2021 14:08:58 -0700 Subject: [PATCH 05/44] Another typo. --- language-ru.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-ru.cpp b/language-ru.cpp index 6c281800..ef5cd635 100644 --- a/language-ru.cpp +++ b/language-ru.cpp @@ -1263,7 +1263,7 @@ S("You trick %the1.", "Вы победили %a1.") S( "A Witch with a Flash spell. Very dangerous!\n\nLuckily, she never uses the spell if it " "would kill her friends. She could destroy an Evil Golem, though.", "Ведьма с заклинанием вспышки. Очень опасна!\n\nК счастью, она никогда не использует " - "заклинание, ели оно убьёт других ведьм. Но големов она может и уничтожить.") + "заклинание, если оно убьёт других ведьм. Но големов она может и уничтожить.") S("Your Aether powers are drained by %the1!", "Твоя эфирная сила была уменьшена %abl1!") S("As you leave, your powers are drained!", "Покидая землю силы, Вы теряете магию сфер!") From b6378cb7e7d8ea73789d6c610433b08c7584b97a Mon Sep 17 00:00:00 2001 From: blargdag Date: Wed, 9 Jun 2021 15:55:58 -0700 Subject: [PATCH 06/44] Punctuation. --- language-ru.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-ru.cpp b/language-ru.cpp index ef5cd635..66ffff28 100644 --- a/language-ru.cpp +++ b/language-ru.cpp @@ -1355,7 +1355,7 @@ S("The Grimoires contain many secrets of the Great Old Ones. " "You hope to read them when you return home, and to learn many things. " "The knowledge is valuable to you, but it is rather pointless to try to get " "several copies of the same Grimoire...", - "Гримуары содержат много секретов Великих предков Каждый новый круг Храма Ктулху содержит " + "Гримуары содержат много секретов Великих предков. Каждый новый круг Храма Ктулху содержит " "новые тома с новыми секретами. Вы можете принести их домой, прочитать и узнать много вещей." "Знание ценно для Вас, но Вам не нужны копии одного Гримуара... " ) From 295108a7185779364c5341d209b6d0cf5e980ebd Mon Sep 17 00:00:00 2001 From: blargdag Date: Fri, 18 Jun 2021 12:55:59 -0700 Subject: [PATCH 07/44] Another typo. --- language-ru.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-ru.cpp b/language-ru.cpp index 66ffff28..f7089e7b 100644 --- a/language-ru.cpp +++ b/language-ru.cpp @@ -2097,7 +2097,7 @@ S("Wherever this powerful being goes, the living fjord " N("Garnet", GEN_O, "Гранат", "Гранаты", "Гранат", "Гранатом") S("Vikings believe that garnets improve their strength.", - "Викинги верятЮ что гранаты дают им силу.") + "Викинги верят, что гранаты дают им силу.") Orb("the Fish", "Рыбы") S("This Orb lets you dive into the water. While diving, you are able to see and collect underwater treasures, " From e1461f85ab4c344aed5fdb61b25682f032906507 Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sat, 26 Jun 2021 21:39:41 -0700 Subject: [PATCH 08/44] Teleporting to Haunted Woods no longer puts you infinitely deep --- system.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/system.cpp b/system.cpp index a62632ca..36f5e16b 100644 --- a/system.cpp +++ b/system.cpp @@ -183,6 +183,7 @@ EX void initgame() { if(firstland == laOceanWall) firstland = laOcean; if(firstland == laHauntedWall) firstland = laGraveyard; + if(firstland == laHaunted && !tactic::on) firstland = laGraveyard; if(firstland == laMercuryRiver) firstland = laTerracotta; if(firstland == laMountain && !tactic::on) firstland = laJungle; if(firstland == laPrincessQuest) firstland = laPalace; From ab1cec3bac4cbc838fd37c4d8bf59145da530eaa Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sat, 26 Jun 2021 22:05:36 -0700 Subject: [PATCH 09/44] Orb of Change no longer produces Jiangshi or Desert Man --- orbs.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/orbs.cpp b/orbs.cpp index a4c12b70..9ed46353 100644 --- a/orbs.cpp +++ b/orbs.cpp @@ -1039,10 +1039,10 @@ void poly_attack(cell *dest) { eMonster orig = dest->monst; auto polymonsters = { moYeti, moRunDog, moRanger, - moDesertman, moMonkey, moCultist, + moMonkey, moCultist, moFallingDog, moVariantWarrior, moFamiliar, moOrangeDog, moRedFox, moFalsePrincess, moResearcher, - moNarciss, moJiangshi, + moNarciss, }; int ssf = 0; eMonster target = *(polymonsters.begin() + hrand(isize(polymonsters))); From 061e9bb014b1a00e6b53d4f0c135b1905f8ab73f Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sat, 26 Jun 2021 22:36:15 -0700 Subject: [PATCH 10/44] Fix extra Viziers when walking around the Palace with 12 treasures --- items.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/items.cpp b/items.cpp index cadbdeab..1547075a 100644 --- a/items.cpp +++ b/items.cpp @@ -106,7 +106,7 @@ EX bool collectItem(cell *c2, bool telekinesis IS(false)) { string s0 = ""; if(c2->item == itPalace && items[c2->item] == 12) - princess::forceVizier = true; + changes.value_set(princess::forceVizier, true); if(!cantGetGrimoire(c2, false)) collectMessage(c2, c2->item); if(c2->item == itDodeca && peace::on) peace::simon::extend(); From fa9239fddbf8a7f68e431ec7a1a885dbf75113a4 Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sat, 26 Jun 2021 23:07:01 -0700 Subject: [PATCH 11/44] Update README.md --- README.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a5cd3707..0906a856 100644 --- a/README.md +++ b/README.md @@ -51,12 +51,22 @@ OK, now lots of the above can be changed. You can change the geometry and topolo various in-game quests, and even try some other game genres in non-Euclidean spaces (roguelite aka shmup, racing, peaceful puzzles). Or use the engine for non-Euclidean computations and visualizations (see [RogueViz](http://roguetemple.com/z/hyper/rogueviz.php)). Have fun! -## Technical information ## +## Development ## -You should be able to compile on Linux, OSX, or MinGW with something like this (you need SDL, SDL_ttf, and SDL_gfx): +### Build prerequisites ### +On Linux with apt-get: + +```sudo apt-get install make g++ libsdl1.2-dev libsdl-ttf2.0-dev libsdl-gfx1.2-dev libsdl-mixer1.2-dev libglew-dev``` + +On macOS with Homebrew: + +```brew install sdl sdl_ttf sdl_gfx sdl_mixer glew``` + +macOS users might also have to edit /usr/local/include/SDL/SDL_gfxPrimitives.h at line 38 to use quote include. + +### Building HyperRogue from source ### ``` -sudo apt-get install make g++ libsdl1.2-dev libsdl-ttf2.0-dev libsdl-gfx1.2-dev libsdl-mixer1.2-dev libglew-dev git clone https://github.com/zenorogue/hyperrogue.git hyperrogue cd hyperrogue make From 67419631f58f64644a397a0d43a501a0973c67ca Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sun, 27 Jun 2021 01:44:11 -0700 Subject: [PATCH 12/44] Help for Mutant Sapling no longer claims that it unlocks Orb of Luck globally --- orbgen.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/orbgen.cpp b/orbgen.cpp index c7666f0e..3448e998 100644 --- a/orbgen.cpp +++ b/orbgen.cpp @@ -116,7 +116,7 @@ EX vector orbinfos = { {orbgenflags::S_NAT_NT, laElementalWall, 1500, 4000, itOrbSummon}, {orbgenflags::S_NATIVE, laStorms, 1000, 2500, itOrbStunning}, {orbgenflags::S_NATIVE, laOvergrown, 1000, 800, itOrbWoods}, - {orbgenflags::S_GUEST, laOvergrown, 1000, 800, itOrbLuck}, + {orbgenflags::S_GUEST, laOvergrown, 1000, 0, itOrbLuck}, {orbgenflags::S_NATIVE, laWhirlwind, 1250, 3000, itOrbAir}, {orbgenflags::S_NATIVE, laHaunted, 1000, 5000, itOrbUndeath}, {orbgenflags::S_NATIVE, laClearing, 5000, 5000, itOrbFreedom}, From 7ed69739b9cd3b7f8b2c364641cd07a0f78d7b2c Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sun, 27 Jun 2021 02:09:56 -0700 Subject: [PATCH 13/44] Orb of Slaying can now appear in hub lands --- orbgen.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/orbgen.cpp b/orbgen.cpp index c7666f0e..4939d979 100644 --- a/orbgen.cpp +++ b/orbgen.cpp @@ -240,11 +240,6 @@ EX eOrbLandRelation getOLR(eItem it, eLand l) { if(it == itOrbDigging && l == laKraken) return olrUseless; if(it == itOrbIllusion && l == laKraken) return olrUseless; - if(it == itOrbSlaying && !among(l, - laMirror, laHell, laEmerald, laDryForest, laCamelot, laPalace, laStorms, laRose, laTortoise, laBurial, laDungeon, laReptile, - laPrairie, laBull, laVolcano, laTerracotta, laRuins, laVariant, laEclectic, laBrownian)) - return olrUseless; - if(it == itOrbYendor && among(l, laWhirlwind, laWestWall)) return olrUseless; if(it == itOrbLife && (l == laKraken)) return olrUseless; @@ -297,6 +292,11 @@ EX eOrbLandRelation getOLR(eItem it, eLand l) { return olrMonster; if(isCrossroads(l) || l == laOcean) return olrHub; + + if(it == itOrbSlaying && !among(l, + laMirror, laHell, laEmerald, laDryForest, laCamelot, laPalace, laStorms, laRose, laTortoise, laBurial, laDungeon, laReptile, + laPrairie, laBull, laVolcano, laTerracotta, laRuins, laVariant, laEclectic, laBrownian)) + return olrUseless; if(l == laCocytus) if(it == itOrbDragon || it == itOrbFire || it == itOrbFlash || it == itOrbLightning) From 0bf3bde3ecf042b715a9827d0326295e20b2f477 Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sun, 27 Jun 2021 02:17:59 -0700 Subject: [PATCH 14/44] Orb of the Woods now only appears in lands where it is potentially useful (and in hubs) --- orbgen.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/orbgen.cpp b/orbgen.cpp index c7666f0e..087f14d5 100644 --- a/orbgen.cpp +++ b/orbgen.cpp @@ -325,6 +325,14 @@ EX eOrbLandRelation getOLR(eItem it, eLand l) { return olrPrize25; return olrUseless; } + + if(it == itOrbWoods && (l == laWarpSea || l == laWarpCoast)) + return olrDangerous; + + if(it == itOrbWoods && !among(l, + laDryForest, laWineyard, laCaribbean, laOvergrown, laHaunted, laHauntedWall, laHauntedBorder, laTortoise, laFrog, laEclectic, + laVariant)) + return olrUseless; if(it == itShard) { if(l == laDesert || l == laIce || l == laJungle || l == laGraveyard || From a5b219ebb385c11a616d866520b6de31ed5cd8a9 Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sun, 27 Jun 2021 02:25:08 -0700 Subject: [PATCH 15/44] Orb of Luck no longer appears in Free Fall --- orbgen.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/orbgen.cpp b/orbgen.cpp index c7666f0e..834e18e5 100644 --- a/orbgen.cpp +++ b/orbgen.cpp @@ -276,6 +276,8 @@ EX eOrbLandRelation getOLR(eItem it, eLand l) { return olrUseless; if(it == itOrbLuck && l == laMountain) return olrUseless; + if(it == itOrbLuck && l == laWestWall) + return olrUseless; if(it == itOrbLuck && l == laCamelot) return olrUseless; if(it == itOrbLuck && l == laHaunted) From 32878e5191f82e78010d5bcc86c73339669dcef7 Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sun, 27 Jun 2021 02:39:34 -0700 Subject: [PATCH 16/44] The Orb of Beauty now lifts rose-scent restrictions on targeting of ranged orbs --- orbs.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/orbs.cpp b/orbs.cpp index a4c12b70..b61c5dc6 100644 --- a/orbs.cpp +++ b/orbs.cpp @@ -1246,7 +1246,7 @@ EX eItem targetRangedOrb(cell *c, orbAction a) { if(rosedist(cwt.at) == 1) { int r = rosemap[cwt.at]; int r2 = rosemap[c]; - if(r2 <= r) { + if(r2 <= r && !markOrb(itOrbBeauty)) { if(a == roKeyboard || a == roMouseForce ) addMessage(XLAT("Those roses smell too nicely. You can only target cells closer to them!")); return itNone; From 6ce9681497453245d9de1143bab28970a0050126 Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sun, 27 Jun 2021 09:52:52 -0700 Subject: [PATCH 17/44] Orb of Friendship no longer appears in Terracotta Army --- orbgen.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/orbgen.cpp b/orbgen.cpp index c7666f0e..daa7d85b 100644 --- a/orbgen.cpp +++ b/orbgen.cpp @@ -394,6 +394,9 @@ EX eOrbLandRelation getOLR(eItem it, eLand l) { it == itOrbAether || it == itOrbSummon || it == itOrbStone) return olrForbidden; } + + if(l == laTerracotta && it == itOrbFriend) + return olrDangerous; return olrPrize25; } From a1f78cde4cea103fba42f2ffc1d2617551c07bd9 Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Mon, 28 Jun 2021 16:49:03 -0700 Subject: [PATCH 18/44] Fix typo in Jelly Kingdom description --- classes.cpp | 2 +- language-cz.cpp | 2 +- language-pl.cpp | 2 +- language-ru.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/classes.cpp b/classes.cpp index 6c06e00c..ebf89e89 100644 --- a/classes.cpp +++ b/classes.cpp @@ -411,7 +411,7 @@ const char *twdesc = "This structure will disappear after some time."; const char *jellydesc = "Some of the Slime Beasts have decided to revolt against the color rules in the " "Alchemist Lab. They have changed their shape and consistency, declared independence, and established their own Kingdom.\n\n" - "Jellies switch between being a wall and being a monster after every treasure you pick."; + "Jellies switch between being a wall and being a monster after every treasure you collect."; const char *ruindesc = "Once a beautiful city... but now overrun by the mighty Raiders of unknown origin.\n\n" diff --git a/language-cz.cpp b/language-cz.cpp index d01b05f6..97d966b0 100644 --- a/language-cz.cpp +++ b/language-cz.cpp @@ -6727,7 +6727,7 @@ N("Jelly Kingdom", GEN_N, "Království rosolu", "Království rosolu", "Králov S("Some of the Slime Beasts have decided to revolt against the color rules in the " "Alchemist Lab. They have changed their shape and consistency, declared independence, and established their own Kingdom.\n\n" - "Jellies switch between being a wall and being a monster after every treasure you pick.", + "Jellies switch between being a wall and being a monster after every treasure you collect.", "Nìkteøí Slizoví netvoøi se rozhodli vzbouøit proti barevným pravidlùm v Alchymistické laboratoøi. Zmìnili svùj tvar a konzistencim vyhlásili nezávislost a založili si své vlastní Království.\n\n" "Kdykoli sebereš nìjaký poklad, rosoly se zmìní ze zdí na netvory a opaènì." diff --git a/language-pl.cpp b/language-pl.cpp index c0e3edf0..0c26b8cb 100644 --- a/language-pl.cpp +++ b/language-pl.cpp @@ -6566,7 +6566,7 @@ N("Jelly Kingdom", GEN_N, "Królestwo Galarety", "Królestwa Galarety", "Króles S("Some of the Slime Beasts have decided to revolt against the color rules in the " "Alchemist Lab. They have changed their shape and consistency, declared independence, and established their own Kingdom.\n\n" - "Jellies switch between being a wall and being a monster after every treasure you pick.", + "Jellies switch between being a wall and being a monster after every treasure you collect.", "Część Mazistych Stworów z Laboratorium postanowiło zbuntować się przeciwko regułom koloru w " "Laboratorium. Zmieniły kształt i konsystencję, ogłosiły niepodległość i stworzyły własne Królestwo.\n\n" diff --git a/language-ru.cpp b/language-ru.cpp index f7089e7b..fbe2de2b 100644 --- a/language-ru.cpp +++ b/language-ru.cpp @@ -6793,7 +6793,7 @@ N("Jelly Kingdom", GEN_N, "Желейное Королевство", "Желей S("Some of the Slime Beasts have decided to revolt against the color rules in the " "Alchemist Lab. They have changed their shape and consistency, declared independence, and established their own Kingdom.\n\n" - "Jellies switch between being a wall and being a monster after every treasure you pick.", + "Jellies switch between being a wall and being a monster after every treasure you collect.", "Часть Живой Слизи выступила против правил цветов в Лаборатории. " "Они изменили свою форму и густоту, провозгласили независимость и образовали свое Королевство.\n\n" From 2a6196d78e06a5ee0e870ce9177d0df5fec7e5dc Mon Sep 17 00:00:00 2001 From: "Joseph C. Sible" Date: Mon, 28 Jun 2021 20:21:01 -0400 Subject: [PATCH 19/44] Update the translation files too --- language-cz.cpp | 4 ++-- language-de.cpp | 4 ++-- language-pl.cpp | 4 ++-- language-ptbr.cpp | 4 ++-- language-ru.cpp | 4 ++-- language-tr.cpp | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/language-cz.cpp b/language-cz.cpp index d01b05f6..41604ddc 100644 --- a/language-cz.cpp +++ b/language-cz.cpp @@ -715,8 +715,8 @@ S("A typical monster from the Graveyard, who moves through walls.\n\n" S("Necromancers can raise ghosts and zombies from fresh graves.", "Nekromanceři dokážou probouzet duchy a zombie z čerstvých hrobů.") -S("A creepy monster who follows you everywhere in the Graveyard.", - "Děsivý netvor, který tě sleduje po celém Hřbitově.") +S("A creepy monster who follows you everywhere in the Graveyard and the Cursed Canyon.", + "Děsivý netvor, který tě sleduje po celém Hřbitově.") //TODO UPDATE S("People worshipping Cthulhu. They are very dangerous.", "Lidé uctívající Cthulhua. Jsou velmi nebezpeční.") diff --git a/language-de.cpp b/language-de.cpp index 14f89671..d877c4ae 100644 --- a/language-de.cpp +++ b/language-de.cpp @@ -680,8 +680,8 @@ S("A typical monster from the Graveyard, who moves through walls.\n\n" S("Necromancers can raise ghosts and zombies from fresh graves.", "Totenbeschwörer können Geister und Zombies aus frischen Gräbern auferwecken.") -S("A creepy monster who follows you everywhere in the Graveyard.", - "Ein gruseliges Monster das dir über den ganzen Friedhof folgt!") +S("A creepy monster who follows you everywhere in the Graveyard and the Cursed Canyon.", + "Ein gruseliges Monster das dir über den ganzen Friedhof folgt!") //TODO UPDATE S("People worshipping Cthulhu. They are very dangerous.", "Verehrer Cthulhus. Sie sind sehr gefährlich.") diff --git a/language-pl.cpp b/language-pl.cpp index c0e3edf0..3ed9aff5 100644 --- a/language-pl.cpp +++ b/language-pl.cpp @@ -693,8 +693,8 @@ S("A typical monster from the Graveyard, who moves through walls.\n\n" S("Necromancers can raise ghosts and zombies from fresh graves.", "Nekromanci wzbudzają duchy i zombie ze świeżych grobów.") -S("A creepy monster who follows you everywhere in the Graveyard.", - "Ten odrażający potwór chodzi za Tobą po cmentarzu!") +S("A creepy monster who follows you everywhere in the Graveyard and the Cursed Canyon.", + "Ten odrażający potwór chodzi za Tobą po cmentarzu!") //TODO UPDATE S("People worshipping Cthulhu. They are very dangerous.", "Wyznawcy Cthulhu, bardzo niebiezpieczni.") diff --git a/language-ptbr.cpp b/language-ptbr.cpp index 64d8f63d..f20c7da1 100644 --- a/language-ptbr.cpp +++ b/language-ptbr.cpp @@ -721,8 +721,8 @@ S( "Nekromanci wzbudzają duchy i zombie ze świeżych grobów.") S( - "A creepy monster who follows you everywhere in the Graveyard.", - "Ten odrażający potwór chodzi za Tobą po cmentarzu!") + "A creepy monster who follows you everywhere in the Graveyard and the Cursed Canyon.", + "Ten odrażający potwór chodzi za Tobą po cmentarzu!") //TODO UPDATE S( "People worshipping Cthulhu. They are very dangerous.", diff --git a/language-ru.cpp b/language-ru.cpp index 09019578..8cbc49e1 100644 --- a/language-ru.cpp +++ b/language-ru.cpp @@ -688,8 +688,8 @@ S("A typical monster from the Graveyard, who moves through walls.\n\n" S("Necromancers can raise ghosts and zombies from fresh graves.", "Некромант может призывать призраков и зомби из свежих могил.") -S("A creepy monster who follows you everywhere in the Graveyard.", - "Пугающий монстр, вечно преследующий Вас на Кладбище.") +S("A creepy monster who follows you everywhere in the Graveyard and the Cursed Canyon.", + "Пугающий монстр, вечно преследующий Вас на Кладбище.") //TODO UPDATE S("People worshipping Cthulhu. They are very dangerous.", "Люди, поклоняющиеся Ктулху. Они довольно опасны.") diff --git a/language-tr.cpp b/language-tr.cpp index 84fd7893..1c6c69e6 100644 --- a/language-tr.cpp +++ b/language-tr.cpp @@ -645,8 +645,8 @@ S("A typical monster from the Graveyard, who moves through walls.\n\n" S("Necromancers can raise ghosts and zombies from fresh graves.", "Ölüçağıranlar mezarlardan hayaletler ve hortlaklar çağırabilirler.") -S("A creepy monster who follows you everywhere in the Graveyard.", - "Seni Mezarlık boyunca takip eden ürpertici bir canavar.") +S("A creepy monster who follows you everywhere in the Graveyard and the Cursed Canyon.", + "Seni Mezarlık boyunca takip eden ürpertici bir canavar.") //TODO UPDATE S("People worshipping Cthulhu. They are very dangerous.", "Cthulhu'ya tapan insanlar. Çok tehlikeliler.") From 07846490b0c5cfb7fb2d89927f209f59912fc652 Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Mon, 28 Jun 2021 17:59:58 -0700 Subject: [PATCH 20/44] Fix typo in Free Fall description --- content.cpp | 2 +- language-cz.cpp | 2 +- language-pl.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/content.cpp b/content.cpp index 60d2fa85..98facc10 100644 --- a/content.cpp +++ b/content.cpp @@ -1523,7 +1523,7 @@ LAND( 0x804000, "Brown Island", laBrownian, ZERO | LF_PURESEA, itBrownian, RESER REQAS(laOcean,) LAND( 0x211F6F, "Free Fall", laWestWall, ZERO | LF_GRAVITY | LF_EQUI, itWest, RESERVED, - "What on one side looks to be a normal (well, infinite) horizontal wall, on to the other side turns out to be the vertical wall" + "What on one side looks to be a normal (well, infinite) horizontal wall, on the other side turns out to be the vertical wall" " of an infinitely high tower. Jump from the window, and let the magical gravity carry you..." ) NATIVE(among(m, moWestHawk, moFallingDog) ? 2 : 0) diff --git a/language-cz.cpp b/language-cz.cpp index d01b05f6..06d9faca 100644 --- a/language-cz.cpp +++ b/language-cz.cpp @@ -7700,7 +7700,7 @@ S("Did you know that it is possible to break a magical sphere into finitely many N("Free Fall", GEN_O, "Volný pád", "Volné pády", "Volný pád", "ve Volném pádu") -S("What on one side looks to be a normal (well, infinite) horizontal wall, on to the other side turns out to be the vertical wall" +S("What on one side looks to be a normal (well, infinite) horizontal wall, on the other side turns out to be the vertical wall" " of an infinitely high tower. Jump from the window, and let the magical gravity carry you...", "To, co na jedné straně vypadá jako normální (no, nekonečná) vodorovná " diff --git a/language-pl.cpp b/language-pl.cpp index c0e3edf0..ab18546a 100644 --- a/language-pl.cpp +++ b/language-pl.cpp @@ -7443,7 +7443,7 @@ S("Did you know that it is possible to break a magical sphere into finitely many N("Free Fall", GEN_O, "Swobodny Spadek", "Swobodne Spadki", "Swobodny Spadek", "w Swobodnym Spadku") -S("What on one side looks to be a normal (well, infinite) horizontal wall, on to the other side turns out to be the vertical wall" +S("What on one side looks to be a normal (well, infinite) horizontal wall, on the other side turns out to be the vertical wall" " of an infinitely high tower. Jump from the window, and let the magical gravity carry you...", "Co wygląda z jednej strony na zwykłą (nieskończoną) poziomą ścianę, z drugiej strony okazuje się być pionową ścianą nieskończenie " From f4545797009fb63c441e13ecba275d2ec3fb712c Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Mon, 28 Jun 2021 22:25:41 -0700 Subject: [PATCH 21/44] Remove unreachable break --- orbs.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/orbs.cpp b/orbs.cpp index 86341a4c..e337f9e1 100644 --- a/orbs.cpp +++ b/orbs.cpp @@ -1574,7 +1574,6 @@ EX int orbcharges(eItem it) { return inv::on ? 150 : 50; case itOrbWinter: // "pickup-winter" return inv::on ? 45 : 30; - break; case itOrbBeauty: case itOrbEmpathy: case itOrbFreedom: From 59b7e7bbdfa4e905908890890c6be6ab961d4354 Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Mon, 28 Jun 2021 22:33:08 -0700 Subject: [PATCH 22/44] Remove extra semis in struct defs --- cell.cpp | 2 +- config.cpp | 2 +- earcut.hpp | 2 +- hyper.h | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cell.cpp b/cell.cpp index c3415ea9..e97e859f 100644 --- a/cell.cpp +++ b/cell.cpp @@ -16,7 +16,7 @@ extern int default_levs(); struct hrmap { virtual heptagon *getOrigin() { return NULL; } virtual cell *gamestart() { return getOrigin()->c7; } - virtual ~hrmap() { }; + virtual ~hrmap() { } virtual vector& allcells(); virtual void verify() { } virtual void on_dim_change() { } diff --git a/config.cpp b/config.cpp index 3834105c..7368ad9e 100644 --- a/config.cpp +++ b/config.cpp @@ -27,7 +27,7 @@ struct supersaver { virtual void load(const string& s) = 0; virtual bool dosave() = 0; virtual void reset() = 0; - virtual ~supersaver() {}; + virtual ~supersaver() {} virtual bool affects(void* v) { return false; } virtual void set_default() = 0; }; diff --git a/earcut.hpp b/earcut.hpp index 3dc9f796..8b3de301 100644 --- a/earcut.hpp +++ b/earcut.hpp @@ -30,7 +30,7 @@ namespace util { template struct nth { inline static typename std::tuple_element::type - get(const T& t) { return std::get(t); }; + get(const T& t) { return std::get(t); } }; } diff --git a/hyper.h b/hyper.h index e1954e7a..9a263f8f 100644 --- a/hyper.h +++ b/hyper.h @@ -26,8 +26,8 @@ namespace hr { /** \brief A helper structure that acts as a boolean which is always false. Helpful when disabling stuff with compiler flags. */ struct always_false { - operator bool() const { return false; }; - bool operator = (bool b) const { return b; }; + operator bool() const { return false; } + bool operator = (bool b) const { return b; } }; /** \brief placate GCC's overzealous -Wunused-result */ From 45e94c120e934d345efd08365cf1f71193c80ce4 Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Mon, 28 Jun 2021 22:39:11 -0700 Subject: [PATCH 23/44] Remove unused catch binding --- pattern2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pattern2.cpp b/pattern2.cpp index 63033276..83d4d4e2 100644 --- a/pattern2.cpp +++ b/pattern2.cpp @@ -1744,7 +1744,7 @@ EX namespace patterns { try { return ep.parse(); } - catch(hr_parse_exception& ex) { + catch(hr_parse_exception&) { return 0; } } From a6a8e5430a64f89cc2809fd9d2feb1558e9fd995 Mon Sep 17 00:00:00 2001 From: Arthur O'Dwyer Date: Tue, 29 Jun 2021 06:26:40 -0400 Subject: [PATCH 24/44] Fix some low-hanging translation bugs. --- language-cz.cpp | 14 ++++++++------ language-pl.cpp | 9 ++++----- language-ptbr.cpp | 2 +- language-ru.cpp | 2 +- language-tr.cpp | 2 +- menus.cpp | 2 +- vr.cpp | 2 +- 7 files changed, 17 insertions(+), 16 deletions(-) diff --git a/language-cz.cpp b/language-cz.cpp index d01b05f6..f17fddac 100644 --- a/language-cz.cpp +++ b/language-cz.cpp @@ -8948,7 +8948,7 @@ S( "If the pointer length is 0.5m, the object pointed to is 0.5 meter from the controller. " "This is used in situations where the controller is used as a 3D mouse, e.g., " "the drawing tool in three-dimensional geometries. When pointing at two-dimensional surfaces, " - "this is not relevant (the pointer is as long as needed to hit the surface.)", + "this is not relevant (the pointer is as long as needed to hit the surface).", "Pokud je délka ukazatele 0,5 m, je objekt, na který ukazuje, 0,5 metru od ovladače. " "To se používá v situacích, kdy se ovladač používá jako 3D myš, např. " @@ -9050,11 +9050,7 @@ S( "x, y, z (hyperboloid/sphere/plane coordinates in non-crystal geometries)\n" "ex, ey, ez (in Euclidean geometries)\n" "x0, x1, x2... (crystal geometry only)\n" - "0 is black, 1 is white, rgb(1,0,0) is red, ifp(p-2,1,0) is blue (p=1 for red, 2 for green, 3 for blue)." - - "w (fourth coordinate)\n" - "wallif(condition, color)\n" - , + "0 is black, 1 is white, rgb(1,0,0) is red, ifp(p-2,1,0) is blue (p=1 for red, 2 for green, 3 for blue).", "Zde můžeš specifikovat barevný vzor jako funkci políčka. " "Dostupné parametry:\n\n" @@ -9062,6 +9058,12 @@ S( "ex, ey, ez (v eukleidovských geometriích)\n" "x0, x1, x2... (pouze v krystalové geometrii)\n" "0 je černá, 1 bílá, rbg(1,0,0) červená, ifp(p-2,1,0) modrá (p=1 pro červenou, 2 pro zelenou, 3 pro modrou)." + ) + +S( + "w (fourth coordinate)\n" + "wallif(condition, color)\n", + "w (čtvrtá souřadnice)\n" "wallif(podmínka, barva)\n" ) diff --git a/language-pl.cpp b/language-pl.cpp index c0e3edf0..45403d78 100644 --- a/language-pl.cpp +++ b/language-pl.cpp @@ -340,7 +340,7 @@ S("Your score: %1", "Twój wynik: %1") S("Enemies killed: %1", "Potwory pokonane: %1") S("Orbs of Yendor found: %1", "Znalezione Sfery Yendoru: %1") S("Collect %1 $$$ to access more worlds", "Znajdź %1 $$$, by iść do nowych krain") -S("Collect at least %1 treasures in each of 9 types to access Hell", "Znajdź po %1 skarbów w %2 typach, by się dostać do Piekła") +S("Collect at least %1 treasures in each of %2 types to access Hell", "Znajdź po %1 skarbów w %2 typach, by się dostać do Piekła") S("Collect at least %1 Demon Daisies to find the Orbs of Yendor", "Znajdź %1 Czarciego Ziela, by znaleźć Sfery Yendoru") S("Hyperstone Quest: collect at least %3 %1 in %the2", "Misja alternatywna: znajdź co najmniej %3 skarbów %abl2") S("Hyperstone Quest completed!", "Misja alternatywna zakończona!") @@ -1693,7 +1693,7 @@ S("Hell has these lakes everywhere... They are shaped like evil stars, and fille S("hardcore mode", "tryb hardcore") -S("One wrong move, and it is game over!", "Jeden fałszywy ruch i koniec gry!") +S("One wrong move and it is game over!", "Jeden fałszywy ruch i koniec gry!") S("Not so hardcore?", "Hardkor to nie to?") // Shoot'em up Mode @@ -8667,7 +8667,7 @@ S( "If the pointer length is 0.5m, the object pointed to is 0.5 meter from the controller. " "This is used in situations where the controller is used as a 3D mouse, e.g., " "the drawing tool in three-dimensional geometries. When pointing at two-dimensional surfaces, " - "this is not relevant (the pointer is as long as needed to hit the surface.).", + "this is not relevant (the pointer is as long as needed to hit the surface).", "Jeśli długość wskaźnika to 0.5m, wskazywany punkt jest 0.5 metra od kontrolera. " "Ma to znaczenie, gdy kontroler jest używany jako mysz 3D, np. narzędzie do rysowania w " @@ -8781,8 +8781,7 @@ S( S( "w (fourth coordinate)\n" - "wallif(condition, color)\n" - , + "wallif(condition, color)\n", "w (czwarta współrzędna)\n" "wallif(warunek, kolor)\n" diff --git a/language-ptbr.cpp b/language-ptbr.cpp index 64d8f63d..73849129 100644 --- a/language-ptbr.cpp +++ b/language-ptbr.cpp @@ -343,7 +343,7 @@ S("Your score: %1", "Sua pontuação: %1") S("Enemies killed: %1", "Inimigos mortos: %1") S("Orbs of Yendor found: %1", "Orbes de Yendor encontrados: %1") S("Collect %1 $$$ to access more worlds", "Colete %1 $$$, para acessar novos mundos") -S("Collect at least %1 treasures in each of 9 types to access Hell", "Colete pelo menos %1 tesouros de cada um dos 9 tipos para acessar o Inferno") +S("Collect at least %1 treasures in each of %2 types to access Hell", "Colete pelo menos %1 tesouros de cada um dos %2 tipos para acessar o Inferno") S("Collect at least 10 Demon Daisies to find the Orbs of Yendor", "Colete pelo menos 10 Margaridas Demônio para encontrar os Orbes de Yendor") S("Hyperstone Quest: collect at least %3 %1 in %the2", "Missão da Pedra do Ímpeto: colete pelo menos %3 %1 no-a %abl1") S("Hyperstone Quest completed!", "Missão da Pedra do Ímpeto completa!") diff --git a/language-ru.cpp b/language-ru.cpp index f7089e7b..0918a139 100644 --- a/language-ru.cpp +++ b/language-ru.cpp @@ -342,7 +342,7 @@ S("Your score: %1", "Ваш счёт: %1") S("Enemies killed: %1", "Врагов убито: %1") S("Orbs of Yendor found: %1", "Собрано сфер Йендора: %1") S("Collect %1 $$$ to access more worlds", "Соберите %1 $$$, чтобы открыть новые земли") -S("Collect at least %1 treasures in each of 9 types to access Hell", "Соберите хотя бы по %1 сокровищ %2 разных типов, чтобы попасть в Ад") +S("Collect at least %1 treasures in each of %2 types to access Hell", "Соберите хотя бы по %1 сокровищ %2 разных типов, чтобы попасть в Ад") S("Collect at least %1 Demon Daisies to find the Orbs of Yendor", "Соберите %1 адских ромашек, чтобы найти сферу Йендора") S("Hyperstone Quest: collect at least %3 %1 in %the2", "Миссия Гиперкамня: соберите %3 драгоценностей в %abl2") S("Hyperstone Quest completed!", "Миссия Гиперкамня закончена!") diff --git a/language-tr.cpp b/language-tr.cpp index 84fd7893..f45d65af 100644 --- a/language-tr.cpp +++ b/language-tr.cpp @@ -322,7 +322,7 @@ S("Enemies killed: %1", "Öldürülen Düşmanlar: %1") S("Orbs of Yendor found: %1", "Bulunan Yendor Küresi sayısı: %1") S("Collect %1 $$$ to access more worlds", "%1 $$$ toplayarak başka dünyalara eriş") // S("Collect %1 $$$ to access R'Lyeh and Dry Forest", "60 $$$ toplayarak R'Lyeh ve Kara Ormana eriş.") -S("Collect at least %1 treasures in each of 9 types to access Hell", "%2 hazine çeşidinin hepsinden %1'ar tane toplayarak Cehenneme erişebilirsin.") +S("Collect at least %1 treasures in each of %2 types to access Hell", "%2 hazine çeşidinin hepsinden %1'ar tane toplayarak Cehenneme erişebilirsin.") S("Collect at least %1 Demon Daisies to find the Orbs of Yendor", "%1 Şeytan Papatyası toplayarak Yendorun Kürelerini bulabilirsin.") S("Hyperstone Quest: collect at least %3 %1 in %the2", "Aşkıntaş Görevi: %2'de en az %3 hazine topla.") S("Hyperstone Quest completed!", "Aşkıntaş görevi tamamlandı.") diff --git a/menus.cpp b/menus.cpp index e9e76608..3a3731d4 100644 --- a/menus.cpp +++ b/menus.cpp @@ -398,7 +398,7 @@ EX void switchHardcore() { else if(hardcore && canmove) { hardcore = false; } else { hardcore = true; canmove = true; hardcoreAt = turncount; } if(hardcore) - addMessage(XLAT("One wrong move, and it is game over!")); + addMessage(XLAT("One wrong move and it is game over!")); else addMessage(XLAT("Not so hardcore?")); if(pureHardcore()) popScreenAll(); diff --git a/vr.cpp b/vr.cpp index 424779a3..6ef99d7d 100644 --- a/vr.cpp +++ b/vr.cpp @@ -1336,7 +1336,7 @@ EX void show_vr_settings() { "If the pointer length is 0.5m, the object pointed to is 0.5 meter from the controller. " "This is used in situations where the controller is used as a 3D mouse, e.g., " "the drawing tool in three-dimensional geometries. When pointing at two-dimensional surfaces, " - "this is not relevant (the pointer is as long as needed to hit the surface.)." + "this is not relevant (the pointer is as long as needed to hit the surface)." )); }); From 0a1bbf08eeb3ecd765e30fecd64a257f04974687 Mon Sep 17 00:00:00 2001 From: Arthur O'Dwyer Date: Tue, 29 Jun 2021 06:47:12 -0400 Subject: [PATCH 25/44] Fix some more low-hanging translation bugs. --- geom-exp.cpp | 4 ++-- help.cpp | 4 +++- language-cz.cpp | 15 +++------------ language-de.cpp | 5 +---- language-pl.cpp | 16 +++------------- language-ptbr.cpp | 15 +++++---------- language-ru.cpp | 7 +------ 7 files changed, 18 insertions(+), 48 deletions(-) diff --git a/geom-exp.cpp b/geom-exp.cpp index 9f0ed4a1..2a02b894 100644 --- a/geom-exp.cpp +++ b/geom-exp.cpp @@ -20,7 +20,7 @@ string euchelp = "You can try many different geometries here. We start by gluing " "n-gons in such a way that k of them meet in every vertex. " "Depending on n and k, this either folds into a sphere, unfolds into a plane, " - "or requires a hyperbolic space. The result may be then 'bitrunc' by " + "or requires a hyperbolic space. The result may be then 'bitruncated' by " "replacing each vertex by a 2k-gon. Furthermore, you can play " "with quotient geometries. For example, the elliptic geometry is " "obtained from the sphere by making the antipodes be the same point, " @@ -28,7 +28,7 @@ string euchelp = "Have fun experimenting! " "Achievements and leaderboards do not work in geometry experiments, " "except some specific ones.\n\n" - "In standard geometry (bitrunc or not), you can play the full game, but in other geometries " + "In standard geometry (bitruncated or not), you can play the full game, but in other geometries " "you select a particular land. Lands are unlocked by visiting them in this " "session, or permanently by collecting 25 treasure. Try Crossroads in Euclidean " "or chaos mode in non-standard non-quotient hyperbolic to visit many lands. " diff --git a/help.cpp b/help.cpp index b98a9815..3a519e87 100644 --- a/help.cpp +++ b/help.cpp @@ -495,11 +495,13 @@ EX string generateHelpForItem(eItem it) { for(auto& oi: orbinfos) { if(treasureType(oi.l) == it) { if(oi.gchance > 0) { + help += "\n\n"; help += XLAT("\n\nOrb unlocked: %1", oi.orb); describeOrb(help, oi); } else if(oi.l == cwt.at->land || inv::on) { - help += XLAT("\n\nSecondary orb: %1", oi.orb); + help += "\n\n"; + help += XLAT("Secondary orb: %1", oi.orb); describeOrb(help, oi); } } diff --git a/language-cz.cpp b/language-cz.cpp index f17fddac..f2f26a9c 100644 --- a/language-cz.cpp +++ b/language-cz.cpp @@ -3440,9 +3440,6 @@ S( "This Orb makes you stunningly beautiful. " S( "A big, beautiful, magical flower.", "Velká, krásná, magická květina.") -S("Don't be fooled by beauty, or you will be stabbed if you come too close!", - "Nenech se oklamat krásou -- když se moc přiblížíš, můžeš dostat ránu nožem!") - S("You just cannot stand in place, those roses smell too nicely.", "Nemůžeš zůstat na místě, ty růže příliš krásně voní.") S("Those roses smell too nicely. You have to come towards them.", @@ -5758,9 +5755,8 @@ S("see how it ended", "podívej se, jak to skonèilo") // other missing/new things // ------------------------ -S("\n\nOrb unlocked: %1", "\n\nByla odemèena Sféra: %1") S("Orb unlocked: %1", "Byla odemèena Sféra: %1") -S("\n\nSecondary orb: %1", "\n\nSekundární Sféra: %1") +S("Secondary orb: %1", "Sekundární Sféra: %1") S(" to submerge", " do ponoøení") S(" to surface", " do vynoøení") S("%The1 says, \"not this place, it looks even worse...\"", @@ -7488,15 +7484,11 @@ S("animate parameters", "animace parametrù") S( "Most parameters can be animated simply by using '..' in their editing dialog. " "For example, the value of a parameter set to 0..1 will grow linearly from 0 to 1. " - "You can also use functions (e.g. cos(0..2*pi)) and refer to other parameters; " - "parameters 'a' and 'b' exist for this purpose. " - "See the list below for parameters which are currently animated (or changed).", + "You can also use functions (e.g. cos(0..2*pi)) and refer to other parameters.", "Vìtšinu parametrù lze animovat jen tím, že v jejich editaèním dialogu napíšeš '..'. " "Tak napøíklad hodnota parametru nastaveného na 0..1 poroste lineárnì od 0 do 1. " - "Lze také použít funkce (napø. cos(0..2*pi) a odkazovat na jiné parametry; " - "za tímto úèelem existují parametry 'a' a 'b'. " - "Viz níže uvedený seznam parametrù, které jsou v souèasné dobì animovány (nebo zmìnìny).") + "Lze také použít funkce (napø. cos(0..2*pi) a odkazovat na jiné parametry.") // color edit dialog @@ -8160,7 +8152,6 @@ S( S("use the full 3D models", "používej úplné 3D modely") S("Z shift", "Z-posuv") -S("Eye level", "úroveň očí") S("fixed Y/Z rotation", "stálá Y/Z rotace") S("configure FPP automatically", "automatická konfigurace FPP") diff --git a/language-de.cpp b/language-de.cpp index 14f89671..a9f3c35d 100644 --- a/language-de.cpp +++ b/language-de.cpp @@ -2407,7 +2407,7 @@ S("Variants of %the1 are available in the Random Pattern Mode after " S(" kills: %1", " Kills: %1") S(" $$$: %1", " $$$: %1") S(" Hyperstone: %1/%2", " Hypersteine: %1/%2") -S(" Hell: %1/9", " Hölle: %1/9") +S(" Hell: %1/%2", " Hölle: %1/%2") // improved editor // --------------- @@ -3228,9 +3228,6 @@ S("This Orb makes you stunningly beautiful. " S("A big, beautiful, magical flower.", "Eine große, schöne, magische Blume.") -S("Don't be fooled by beauty, or you will be stabbed if you come too close!", - "Lass dich von Schönheit nicht täuschen - oder du wirst erstochen, wenn du zu nah kommst!") - S("Each eight turns, each rosebush at distance at most 5 from you will " "release a wave of alluring scent. Creatures on the frontwave " "will move towards where the scent came from. Even if it causes them " diff --git a/language-pl.cpp b/language-pl.cpp index 45403d78..ac4ed324 100644 --- a/language-pl.cpp +++ b/language-pl.cpp @@ -3376,10 +3376,6 @@ S( "This Orb makes you stunningly beautiful. " S( "A big, beautiful, magical flower.", "Duży, piękny, magiczny kwiat.") -S("Don't be fooled by beauty, or you will be stabbed if you come too close!", - "Nie daj się zwieść urodzie, bo jak się za bardzo zbliżysz, możesz zostać ugodzon%y0 nożem!") - - S( "Each eight turns, each rosebush at distance at most 5 from you will " "release a wave of alluring scent. Creatures on the frontwave " @@ -5694,9 +5690,8 @@ S(" (%1 more digits)", " (jeszcze cyfr: %1)") S("see how it ended", "jak się skończyło") // other missing/new things -S("\n\nOrb unlocked: %1", "\n\nOdblokowana Sfera: %1") S("Orb unlocked: %1", "Odblokowana Sfera: %1") -S("\n\nSecondary orb: %1", "\n\nDodatkowa Sfera: %1") +S("Secondary orb: %1", "Dodatkowa Sfera: %1") S(" to submerge", " do zanurzenia") S(" to surface", " do wynurzenia") S("%The1 says, \"not this place, it looks even worse...\"", @@ -7237,15 +7232,11 @@ S("animate parameters", "animacja parametrów") S( "Most parameters can be animated simply by using '..' in their editing dialog. " "For example, the value of a parameter set to 0..1 will grow linearly from 0 to 1. " - "You can also use functions (e.g. cos(0..2*pi)) and refer to other parameters; " - "parameters 'a' and 'b' exist for this purpose. " - "See the list below for parameters which are currently animated (or changed).", + "You can also use functions (e.g. cos(0..2*pi)) and refer to other parameters.", "Większość parametrów może być animowana w prosty sposób, przez wpisanie '..' w ich pole edycji. " "Przykładowo, wartość parametru ustawiona na 0..1 będzie rosła liniowa od 0 do 1. " - "Możesz też używać funkcji (np. cos(0..2*pi)) lub odnosić się do innych parametrów; " - "parametry 'a' i 'b' istnieją w tym celu. Poniżej lista parametrów obecnie " - "animowanych (lub zmienionych).") + "Możesz też używać funkcji (np. cos(0..2*pi)) lub odnosić się do innych parametrów.") // color edit dialog @@ -7878,7 +7869,6 @@ S( S("use the full 3D models", "użyj pełnych modeli 3D") S("Z shift", "przesunięcie Z") -S("Eye level", "poziom oka") S("fixed Y/Z rotation", "ustalona rotacja Y/Z") S("configure FPP automatically", "automatycznie skonfiguruj FPP") diff --git a/language-ptbr.cpp b/language-ptbr.cpp index 73849129..0f4df1d0 100644 --- a/language-ptbr.cpp +++ b/language-ptbr.cpp @@ -344,7 +344,7 @@ S("Enemies killed: %1", "Inimigos mortos: %1") S("Orbs of Yendor found: %1", "Orbes de Yendor encontrados: %1") S("Collect %1 $$$ to access more worlds", "Colete %1 $$$, para acessar novos mundos") S("Collect at least %1 treasures in each of %2 types to access Hell", "Colete pelo menos %1 tesouros de cada um dos %2 tipos para acessar o Inferno") -S("Collect at least 10 Demon Daisies to find the Orbs of Yendor", "Colete pelo menos 10 Margaridas Demônio para encontrar os Orbes de Yendor") +S("Collect at least %1 Demon Daisies to find the Orbs of Yendor", "Colete pelo menos %1 Margaridas Demônio para encontrar os Orbes de Yendor") S("Hyperstone Quest: collect at least %3 %1 in %the2", "Missão da Pedra do Ímpeto: colete pelo menos %3 %1 no-a %abl1") S("Hyperstone Quest completed!", "Missão da Pedra do Ímpeto completa!") S("Look for the Orbs of Yendor in Hell or in the Crossroads!", "Procure pelos Orbes de Yendor no Inferno e nas Encruzilhadas!") @@ -483,10 +483,10 @@ S( "números mostrados para saber seus significados.\n") S( - "Move with mouse, num pad, qweadzxc, or hjklyubn. Wait by pressing 's' or '.'. Spin the world with arrows, PageUp/Down, and Home/Space. " + "Move with mouse, num pad, qweadzxc, or hjklyubn. Wait by pressing 's' or '.'. Spin the world with arrows, PageUp/Down, and Space. " "To save the game you need an Orb of Safety. Press 'v' for the main menu (configuration, special modes, etc.), ESC for the quest status.\n\n", - "Mova-se com o mouse, teclado numérico, qweadzxc, ou hjklyubn. Espere apertando 's' ou '.'. Gire o mundo com as setas, PageUp/Down, ou Home/Espaço." + "Mova-se com o mouse, teclado numérico, qweadzxc, ou hjklyubn. Espere apertando 's' ou '.'. Gire o mundo com as setas, PageUp/Down, ou Espaço." "Para salvar o jogo você precisa de um Orbe da Segurança. Pressione 'v' para ir ao menu principal (configurações, modos especiais, etc.), ESC para o estado da missão.\n\n") S("See more on the website: ", "Veja mais no site: ") @@ -2610,7 +2610,7 @@ S("Variants of %the1 are available in the Random Pattern Mode after " S(" kills: %1", " zabicia: %1") S(" $$$: %1", " $$$: %1") S(" Hyperstone: %1/%2", " Hiperkamienie: %1/%2") -S(" Hell: %1/9", " Piekło: %1/9") +S(" Hell: %1/%2", " Piekło: %1/%2") // improved editor @@ -3465,10 +3465,6 @@ S( "This Orb makes you stunningly beautiful. " S( "A big, beautiful, magical flower.", "Duży, piękny, magiczny kwiat.") -S("Don't be fooled by beauty, or you will be stabbed if you come too close!", - "Nie daj się zwieść urodzie, bo jak się za bardzo zbliżysz, możesz zostać ugodzon%y0 nożem!") - - S( "Each eight turns, each rosebush at distance at most 5 from you will " "release a wave of alluring scent. Creatures on the frontwave " @@ -5779,9 +5775,8 @@ S(" (%1 more digits)", " (jeszcze cyfr: %1)") S("see how it ended", "jak się skończyło") // other missing/new things -S("\n\nOrb unlocked: %1", "\n\nOdblokowana Sfera: %1") S("Orb unlocked: %1", "Odblokowana Sfera: %1") -S("\n\nSecondary orb: %1", "\n\nDodatkowa Sfera: %1") +S("Secondary orb: %1", "Dodatkowa Sfera: %1") S(" to submerge", " do zanurzenia") S(" to surface", " do wynurzenia") S("%The1 says, \"not this place, it looks even worse...\"", diff --git a/language-ru.cpp b/language-ru.cpp index 0918a139..6a351aa8 100644 --- a/language-ru.cpp +++ b/language-ru.cpp @@ -3465,10 +3465,6 @@ S( "This Orb makes you stunningly beautiful. " S( "A big, beautiful, magical flower.", "Большой прекрасный магический цветок.") -S("Don't be fooled by beauty, or you will be stabbed if you come too close!", - "Не будьте обмануты красотой, если не хотите получить удар в спину!") - - S( "Each eight turns, each rosebush at distance at most 5 from you will " "release a wave of alluring scent. Creatures on the frontwave " @@ -5844,9 +5840,8 @@ S(" (%1 more digits)", " (ещё цифр: %1)") S("see how it ended", "смотри, как всё закончилось") // other missing/new things -S("\n\nOrb unlocked: %1", "\n\nОткрыта сфера: %1") S("Orb unlocked: %1", "Открыта сфера: %1") -S("\n\nSecondary orb: %1", "\n\nДополнительная сфера: %1") +S("Secondary orb: %1", "Дополнительная сфера: %1") S(" to submerge", " на погружение") S(" to surface", " на поверхность") S("%The1 says, \"not this place, it looks even worse...\"", From 8794c78ad9ba05a9ee4e7c89bf2a8f75e03429f9 Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Thu, 1 Jul 2021 01:24:39 -0700 Subject: [PATCH 26/44] Orb of Safety excludes more monsters --- landgen.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/landgen.cpp b/landgen.cpp index 11b03625..d1e77197 100644 --- a/landgen.cpp +++ b/landgen.cpp @@ -2192,11 +2192,11 @@ EX void giantLandSwitch(cell *c, int d, cell *from) { case laMountain: if(d == 7) { - if(hrand_monster(50000) < 100) + if(hrand_monster(50000) < 100 && !safety) buildIvy(c, 0, 3); - else if(hrand_monster(125000) < 100 - celldistAlt(c)) + else if(hrand_monster(125000) < 100 - celldistAlt(c) && !safety) c->monst = moMonkey; - else if(hrand_monster(200000) < min(100, -10*celldistAlt(c)) - celldistAlt(c)) + else if(hrand_monster(200000) < min(100, -10*celldistAlt(c)) - celldistAlt(c) && !safety) c->monst = moEagle; else if(hrand(100) < 5) c->wall = waPlatform; @@ -2333,7 +2333,7 @@ EX void giantLandSwitch(cell *c, int d, cell *from) { c->wall = waRuinWall, c->landparam = 1; } } - if(hrand_monster(40000) < kf && !c->monst && !c->wall && !shmup::on) { + if(hrand_monster(40000) < kf && !c->monst && !c->wall && !shmup::on && !safety) { cell *c1 = c; cell *c2 = createMov(c1, hrand(c1->type)); if(c2->monst || c2->wall) return; @@ -2758,7 +2758,7 @@ EX void giantLandSwitch(cell *c, int d, cell *from) { } } - if(d == 7) { + if(d == 7 && !safety) { if(c->wall == waNone) { if(hrand_monster(2000) < ((cwt.at->land == laFrog || items[itFrog]) ? 20 : 0) + (items[itFrog] + yendor::hardness())) c->monst = pick(moFrog, moPhaser, moVaulter); From d3c37d0654dee680e1609949fbbca8518d36f442 Mon Sep 17 00:00:00 2001 From: blargdag Date: Thu, 1 Jul 2021 01:11:42 -0700 Subject: [PATCH 27/44] Fix untranslated Polish string. Apparently this one was missed in the original translation based on the Polish template. --- language-ru.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-ru.cpp b/language-ru.cpp index 0a0ecc38..58b02705 100644 --- a/language-ru.cpp +++ b/language-ru.cpp @@ -3551,7 +3551,7 @@ S("\n\nA Ghost never moves to a cell which is adjacent to another Ghost of the s S("You cannot attack diagonally!", "Вы не можете атаковать по-диагонали!") -Orb("Energy", "Energii") +Orb("Energy", "Энергии") S( "This Orb halves the power usage of orbs which cost some " "charges with each activation. It even affects the " From 03b59c21b86361eeaecf68115bce3bb24a7d2252 Mon Sep 17 00:00:00 2001 From: blargdag Date: Thu, 1 Jul 2021 01:32:22 -0700 Subject: [PATCH 28/44] Spelling typo. --- language-ru.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-ru.cpp b/language-ru.cpp index 58b02705..2888b30e 100644 --- a/language-ru.cpp +++ b/language-ru.cpp @@ -1542,7 +1542,7 @@ S( "The forests of Caribbean are too dense to be traversed by humans, " "and they are hard to burn. Many colorful parrots can be found there.", "Карибские леса слишком плотны, чтобы сквозь них мог пройти человек, " - "и их трудно поджечь. Много разноуветных попугаев живёт здесь.") + "и их трудно поджечь. Много разноцветных попугаев живёт здесь.") S("Ye wonder where did th' Pirates find all these riches...", "Интересно, где Пираты нашли эти богатства...") From c2614fac15dba69633a2d2207332972a0b584833 Mon Sep 17 00:00:00 2001 From: blargdag Date: Thu, 1 Jul 2021 01:40:18 -0700 Subject: [PATCH 29/44] Fix typo. --- language-ru.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-ru.cpp b/language-ru.cpp index 2888b30e..10f13f77 100644 --- a/language-ru.cpp +++ b/language-ru.cpp @@ -1813,7 +1813,7 @@ S( "Perhaps there used to be a forest here?", "Во время отлива на гиперболических берегах можно найти прекрасный Янтарь. " - "Може, здесь когда-то был лес?" + "Может, здесь когда-то был лес?" ) Orb("Air", "Воздуха") From 58bc123695b9c6a6085fb1e12b4f928b7d8c7043 Mon Sep 17 00:00:00 2001 From: blargdag Date: Thu, 1 Jul 2021 01:41:41 -0700 Subject: [PATCH 30/44] Spelling. --- language-ru.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-ru.cpp b/language-ru.cpp index 10f13f77..d2a15197 100644 --- a/language-ru.cpp +++ b/language-ru.cpp @@ -1820,7 +1820,7 @@ Orb("Air", "Воздуха") S("This Orb allows you to blow your enemies away.\n\n" "Click a monster to blow it one cell away. It cannot be used against mimics, ghosts, sharks and other monsters restricted to a specific terrain, and multi-tile monsters.", - "Эта сфера позволяет Вам сдуват врагов вдаль.\n\n" + "Эта сфера позволяет Вам сдувать врагов вдаль.\n\n" "Нажми на монстра, чтобы сдуть его на 1 клетку. Невозможно сдуть мимиков, духов, акул и других монстров, живущих на определённой территории, и монстров из нескольких частей." ) From 2965efe5f9dfd0ea0de742f0ab81de84426f6c97 Mon Sep 17 00:00:00 2001 From: blargdag Date: Thu, 1 Jul 2021 01:22:00 -0700 Subject: [PATCH 31/44] More untranslated Polish. --- language-ru.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-ru.cpp b/language-ru.cpp index d2a15197..cbbcf27a 100644 --- a/language-ru.cpp +++ b/language-ru.cpp @@ -3602,7 +3602,7 @@ S("key Orb power", "клавиша для силы сферы") S("Orb power (target: mouse)", "активировать сферу") S("Orb power (target: facing)", "клавиша для силы сферы") -S("You cannot go against the wind!", "Nie możesz iść pod wiatr!") +S("You cannot go against the wind!", "Нельзя ходить против ветра!") N("warp gate", GEN_F, "врата искривления", "врата искривления", "врата искривления", "вратами искривления") From d4df0ffbea2c3d8c37f4e6ecc745316f3e764e5e Mon Sep 17 00:00:00 2001 From: blargdag Date: Thu, 1 Jul 2021 02:00:03 -0700 Subject: [PATCH 32/44] Spelling. --- language-ru.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-ru.cpp b/language-ru.cpp index cbbcf27a..4ab082c2 100644 --- a/language-ru.cpp +++ b/language-ru.cpp @@ -2103,7 +2103,7 @@ Orb("the Fish", "Рыбы") S("This Orb lets you dive into the water. While diving, you are able to see and collect underwater treasures, " "while being invisible to monsters yourself. You are afraid of jumping into the water straight from a boat, so usually you won't do it.", "Эта сфера позволяет нырять. Когда Вы ныряете, Вы видите и можете собирать подводные ценности, " - "а враги Вас не видят. Но Вы боитесь прягать из лодки прямо в воду.") + "а враги Вас не видят. Но Вы боитесь прыгать из лодки прямо в воду.") S("%The1 is washed away!", "%a1 смыло водой!") S("%The1 is extinguished!", "%1 гаснет!") From ce71a4a54a839ef94b8e9ad6206525ba6293e7d4 Mon Sep 17 00:00:00 2001 From: blargdag Date: Thu, 1 Jul 2021 02:13:44 -0700 Subject: [PATCH 33/44] Spelling. --- language-ru.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-ru.cpp b/language-ru.cpp index 4ab082c2..d51894b8 100644 --- a/language-ru.cpp +++ b/language-ru.cpp @@ -2651,7 +2651,7 @@ S( "эксперименты в покое и уединении. Они изменили направление силы тяжести, " "чтобы сделать попадание сюда труднее.\n\n" "Гравитация работает так: клетка нестабильна, если она пуста, и " - "поле под ним не содердит стены. Нельзя перейти с одного нестабильного поля " + "поле под ним не содержит стены. Нельзя перейти с одного нестабильного поля " "на другое, иначе как вниз." ) From d5df018049e4c4044e94f5e7fab98277da994c64 Mon Sep 17 00:00:00 2001 From: blargdag Date: Thu, 1 Jul 2021 02:35:45 -0700 Subject: [PATCH 34/44] Typo. --- language-ru.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-ru.cpp b/language-ru.cpp index d51894b8..01e20993 100644 --- a/language-ru.cpp +++ b/language-ru.cpp @@ -3737,7 +3737,7 @@ S("Branches here could bear your weight easily.", N("weak branch", GEN_F, "тонкая ветка", "тонкие ветки", "тонкую ветку", "тонкой веткой") S("Branches here will bear you weight, but if you use them to move (not fall) to an unstable place, they will break.", - "Эти ветви выдерживают ваш вес, но если из использовать, чтобы пойти (не упасть) на что-то неустойчивое, они сломаются.") + "Эти ветви выдерживают ваш вес, но если их использовать, чтобы пойти (не упасть) на что-то неустойчивое, они сломаются.") N("canopy", GEN_F, "листва", "листва", "листву", "листвой") From c8f1fe7368241def08b5d09d30179942905ff160 Mon Sep 17 00:00:00 2001 From: blargdag Date: Thu, 1 Jul 2021 09:50:41 -0700 Subject: [PATCH 35/44] Update source string format. --- language-ru.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-ru.cpp b/language-ru.cpp index 01e20993..82cdc1b9 100644 --- a/language-ru.cpp +++ b/language-ru.cpp @@ -2396,7 +2396,7 @@ S("This is the biggest Hypersian Rug you have ever seen! " N("Prince", GEN_M, "Принц", "Принцы", "Принца", "Принцем") N("Princess", GEN_F, "Принцесса", "Принцессы", "Принцессу", "Принцессой") -S("%1 takes %his1 revenge on %the2!", "%1 будет мстить!") +S("%The1 takes %his1 revenge on %the2!", "%1 будет мстить!") S("\"That should teach you to take me seriously!\"", "\"Относись ко мне серьёзно! Будет тебе наука!\"") From 09413589b5f503e5b82b6ee0e09312e7be5afa29 Mon Sep 17 00:00:00 2001 From: blargdag Date: Thu, 1 Jul 2021 09:53:28 -0700 Subject: [PATCH 36/44] Remove redundant untranslated Polish strings. Russian translation actually appears later for the exact same strings. --- language-ru.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/language-ru.cpp b/language-ru.cpp index 82cdc1b9..057b715f 100644 --- a/language-ru.cpp +++ b/language-ru.cpp @@ -1420,12 +1420,6 @@ S("Cannot teleport on a monster!", "Нельзя телепортировать S("Cannot teleport on an item!", "Нельзя телепортироваться на предмет!") S("Cannot teleport here!", "Нельзя телепортироваться сюда!") //S("You cannot teleport that far away!", "Вы не можететелепортироваться так далеко!") -S("You cannot target that far away!", "Nie możesz celować tak daleko!") -S("You cannot target that close!", "Nie możesz celować tak blisko!") -S("Cannot cast illusion on an item!", "Nie możesz rzucić iluzji na przedmiot!") -S("Cannot cast illusion here!", "Nie możesz rzucić ilzuji tutaj!") -S("Cannot cast illusion on a monster!", "Nie możesz rzucić ilzuji na potwora!") -S("Cannot throw fire there!", "Nie możesz tego podpalić!") Orb("the Dragon", "Дракона") From efa1f575e97bdab4ed196f2734d024ad0d2d4f8a Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Fri, 2 Jul 2021 15:24:51 -0700 Subject: [PATCH 37/44] Flash Witches no longer avoid killing the player's allies --- attack.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/attack.cpp b/attack.cpp index e853eb0f..b64876ca 100644 --- a/attack.cpp +++ b/attack.cpp @@ -1099,6 +1099,7 @@ EX bool flashWouldKill(cell *c, flagtype extra) { for(int u=0; utype; u++) { cell *c3 = c2->move(u); if(isWorm(c3)) continue; // immune to Flash + if(isFriendly(c3)) continue; // player's allies and mounts don't count if(c3->monst == moEvilGolem) continue; // evil golems don't count if(c3 != c && (c3->monst || isPlayerOn(c3))) { bool b = canAttack(NULL, moWitchFlash, c3, c3->monst, AF_MAGIC | extra); From e9b2c929d65851266a35b6e04f208ac6282754ac Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sat, 3 Jul 2021 00:19:48 -0700 Subject: [PATCH 38/44] Yellow Frogs no longer phase into the player's sword --- orbs.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/orbs.cpp b/orbs.cpp index e337f9e1..c1f60d3e 100644 --- a/orbs.cpp +++ b/orbs.cpp @@ -1189,7 +1189,7 @@ EX int check_phase(cell *cf, cell *ct, flagtype flags, cell*& jumpthru) { forCellCM(c2, cf) { if(isNeighbor(c2, ct) && !nonAdjacent(cf, c2) && !nonAdjacent(c2, ct)) { jumpthru = c2; - if(passable(ct, cf, P_ISPLAYER | P_PHASE)) { + if(passable(ct, cf, flags | P_PHASE)) { partial = 2; if(c2->monst || (isWall(c2) && c2->wall != waShrub)) { return 3; From cc110ba109126e417418de0148a642c6599595cb Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sat, 3 Jul 2021 01:31:33 -0700 Subject: [PATCH 39/44] Orb of Time now preserves Orb of Plague properly --- pcmove.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pcmove.cpp b/pcmove.cpp index 25838510..e15a1d42 100644 --- a/pcmove.cpp +++ b/pcmove.cpp @@ -1497,7 +1497,8 @@ EX void swordAttackStatic() { EX int plague_kills; EX void spread_plague(cell *mf, cell *mt, int dir, eMonster who) { - if(!(who == moPlayer ? markOrb(itOrbPlague) : markEmpathy(itOrbPlague))) return; + if(!items[itOrbPlague]) return; + if(who != moPlayer && !items[itOrbEmpathy]) return; forCellEx(mx, mt) if(celldistance(mx, mf) > celldistance(mx, mf->modmove(dir)) && celldistance(mx, mf) <= 4) { sideAttackAt(mf, dir, mx, who, itOrbPlague, mt); } From a89524918a72b1a62b2fe20da77d96ea95bdf022 Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sat, 3 Jul 2021 02:47:44 -0700 Subject: [PATCH 40/44] Overview cheats: arrow keys no longer make treasure/orb counts negative --- menus.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/menus.cpp b/menus.cpp index 3a3731d4..4bf3d5fb 100644 --- a/menus.cpp +++ b/menus.cpp @@ -186,6 +186,7 @@ EX void showOverview() { else checkmove(); cheater++; }; + dialog::bound_low(0); } } else if(udiv == 3 && umod < walltypes) gotoHelp(generateHelpForWall(eWall(umod))); From 26c8afdc7e8045c138b36f3afb48cdcd89af802f Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sat, 3 Jul 2021 03:05:23 -0700 Subject: [PATCH 41/44] =?UTF-8?q?Resolve=20conflict=20between=20'Gal=C3=A1?= =?UTF-8?q?pagos=20shading'=20and=20'teleport'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- help.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/help.cpp b/help.cpp index 3a519e87..a89826a5 100644 --- a/help.cpp +++ b/help.cpp @@ -1179,7 +1179,7 @@ EX void gotoHelpFor(eLand l) { else listbeasts(); if(l == laTortoise) - help_extensions.push_back(help_extension{'t', XLAT("Galápagos shading"), [] () { + help_extensions.push_back(help_extension{'s', XLAT("Galápagos shading"), [] () { tortoise::shading_enabled = !tortoise::shading_enabled; }}); } From f67452eccb23dedea0869ecc78d127e9e643faea Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sat, 3 Jul 2021 16:12:39 -0700 Subject: [PATCH 42/44] Fix HUD kill list in 'items only' mode --- hud.cpp | 9 +++++---- inventory.cpp | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/hud.cpp b/hud.cpp index 84000b1c..919a547c 100644 --- a/hud.cpp +++ b/hud.cpp @@ -173,10 +173,10 @@ int glyphflags(int gid) { return f; } -EX bool graphglyph() { +EX bool graphglyph(bool isMonster) { // if(GDIM == 3) return false; if(vrhr::active()) return false; - return vid.graphglyph == 2 || (vid.graphglyph == 1 && vid.monmode); + return vid.graphglyph == 2 || (vid.graphglyph == 1 && (isMonster ? mmmon : mmitem)); } bool displayglyph(int cx, int cy, int buttonsize, char glyph, color_t color, int qty, int flags, int id) { @@ -190,10 +190,11 @@ bool displayglyph(int cx, int cy, int buttonsize, char glyph, color_t color, int int d = ticks - glasttime[id]; double zoom = (d <= 250 && d >= 0) ? 1.25 - .001 * d : 1; glsize = int(glsize * zoom); + bool isMonster = (id >= ittypes); - if(graphglyph()) { + if(graphglyph(isMonster)) { initquickqueue(); - if(id >= ittypes) { + if(isMonster) { eMonster m = eMonster(id - ittypes); double bsize = buttonsize * 2/3; if(m == moKrakenH) bsize /= 3; diff --git a/inventory.cpp b/inventory.cpp index e92d4783..ed0af515 100644 --- a/inventory.cpp +++ b/inventory.cpp @@ -534,7 +534,7 @@ EX namespace inv { ld py = current_display->ycenter + pos.second * rad3; int icol = iinf[o].color; if(!remaining[i]) icol = gradient(icol, 0, 0, .5, 1); - bool gg = graphglyph(); + bool gg = graphglyph(false); if(!hiliteclick) { if(gg) { From 221d42e4e98744c89ca70fb3e9a4b2a2c3980dfc Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sat, 3 Jul 2021 17:04:15 -0700 Subject: [PATCH 43/44] Wandering rocksnakes no longer appear on hepts --- monstergen.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/monstergen.cpp b/monstergen.cpp index 9e0a206d..1393ece1 100644 --- a/monstergen.cpp +++ b/monstergen.cpp @@ -593,8 +593,12 @@ EX void wandering() { else if(c->land == laDragon && (items[itDragon] >= 8 || items[itOrbYendor]) && wchance(items[itDragon], 20)) c->monst = moFireElemental; - else if(c->land == laRedRock && wchance(items[itRedGem], 10)) - c->monst = (hrand(10) || peace::on) ? moRedTroll : moHexSnake; + else if(c->land == laRedRock && wchance(items[itRedGem], 10)) { + if (hrand(10) || peace::on) + c->monst = moRedTroll; + else if (!pseudohept(c)) + c->monst = moHexSnake; + } else if(c->land == laCaves && wchance(items[itGold], 5)) c->monst = hrand(3) ? moTroll : moGoblin; From ff7be8d4e08d85516491a8a5e752905782c969d5 Mon Sep 17 00:00:00 2001 From: Jesse Ruderman Date: Sat, 3 Jul 2021 19:38:20 -0700 Subject: [PATCH 44/44] Add wiki links to land help --- help.cpp | 4 ++++ util.cpp | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/help.cpp b/help.cpp index 3a519e87..4f8485d0 100644 --- a/help.cpp +++ b/help.cpp @@ -1182,5 +1182,9 @@ EX void gotoHelpFor(eLand l) { help_extensions.push_back(help_extension{'t', XLAT("Galápagos shading"), [] () { tortoise::shading_enabled = !tortoise::shading_enabled; }}); + + help_extensions.push_back(help_extension{'w', XLAT("wiki"), [l] () { + open_wiki(linf[l].name); + }}); } } diff --git a/util.cpp b/util.cpp index b840b525..14e58523 100644 --- a/util.cpp +++ b/util.cpp @@ -724,4 +724,19 @@ EX void open_url(string s) { #endif } +const char *urlhex = "0123456789ABCDEF"; +EX void open_wiki(const char *title) { + string url = "https://hyperrogue.miraheze.org/wiki/"; + unsigned char c; + for (size_t i = 0; (c = title[i]); ++i) { + if (('0' <= c && c <= '9') || ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '_' || c == '-') + url += c; + else if (c == ' ') + url += "_"; + else + url += string("%") + urlhex[c/16] + urlhex[c%16]; + } + open_url(url); +} + }