From ce617ba79896e86c635bf2fe8584ecb0b5dda564 Mon Sep 17 00:00:00 2001 From: copperwater Date: Mon, 2 Jul 2018 08:03:47 -0400 Subject: [PATCH 01/20] Replace awful "You feel cold" message for freezing a door you can't see That message implied something to do with an effect happening to the hero that causes them to feel cold, such as taking cold damage. Change it to "You hear a deep cracking sound" instead. --- src/zap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zap.c b/src/zap.c index a9adec794..1fac865a1 100644 --- a/src/zap.c +++ b/src/zap.c @@ -4626,7 +4626,7 @@ short exploding_wand_typ; case ZT_COLD: new_doormask = D_NODOOR; see_txt = "The door freezes and shatters!"; - sense_txt = "feel cold."; + hear_txt = "a deep cracking sound."; break; case ZT_DEATH: /* death spells/wands don't disintegrate */ From 40d6dbaa96b677cef084075badf0105e5d396402 Mon Sep 17 00:00:00 2001 From: copperwater Date: Sun, 1 Jul 2018 11:51:55 -0400 Subject: [PATCH 02/20] Applying a candelabrum with no candles gives a tip "This candelabrum has no candles. To attach candles, apply them instead of the candelabrum." --- src/apply.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/apply.c b/src/apply.c index d3429faf4..8d35e2f0e 100644 --- a/src/apply.c +++ b/src/apply.c @@ -1138,6 +1138,7 @@ register struct obj *obj; } if (obj->spe <= 0) { pline("This %s has no %s.", xname(obj), s); + pline("To attach candles, apply them instead of the %s.", xname(obj)); return; } if (Underwater) { From 18b46449f07a0bd4fb4d8bec25ce1eae953bb399 Mon Sep 17 00:00:00 2001 From: Patric Mueller Date: Sat, 4 Jan 2020 12:59:09 +0100 Subject: [PATCH 03/20] Only output candelabrum tip if candles are in inventory --- doc/fixes37.0 | 1 + src/apply.c | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/doc/fixes37.0 b/doc/fixes37.0 index 86dcd6e5a..bab5ec03b 100644 --- a/doc/fixes37.0 +++ b/doc/fixes37.0 @@ -77,6 +77,7 @@ NetHack Community Patches (or Variation) Included ------------------------------------------------- hallucinatory trap names from github pull request #174 autounlock feature originally from unnethack in github pull request #228 +applying a candelabrum with no candles gives a tip (github #265) Code Cleanup and Reorganization diff --git a/src/apply.c b/src/apply.c index 8d35e2f0e..e8a1c231d 100644 --- a/src/apply.c +++ b/src/apply.c @@ -1138,7 +1138,20 @@ register struct obj *obj; } if (obj->spe <= 0) { pline("This %s has no %s.", xname(obj), s); - pline("To attach candles, apply them instead of the %s.", xname(obj)); + + /* only output tip if candles are in inventory */ + boolean has_candles = FALSE; + struct obj *otmp = g.invent; + while (!has_candles && otmp) { + has_candles = Is_candle(otmp); + otmp = otmp->nobj; + } + + if (has_candles) { + pline("To attach candles, apply them instead of the %s.", + xname(obj)); + } + return; } if (Underwater) { @@ -2514,7 +2527,7 @@ struct obj *otmp; return; } ttyp = (otmp->otyp == LAND_MINE) ? LANDMINE : BEAR_TRAP; - if (otmp == g.trapinfo.tobj && u.ux == g.trapinfo.tx + if (otmp == g.trapinfo.tobj && u.ux == g.trapinfo.tx && u.uy == g.trapinfo.ty) { You("resume setting %s%s.", shk_your(buf, otmp), trapname(ttyp, FALSE)); From 1acd6317663a3c66d525ab1698351bf1c076bacf Mon Sep 17 00:00:00 2001 From: Patric Mueller Date: Sat, 4 Jan 2020 13:08:08 +0100 Subject: [PATCH 04/20] Candelabrum now reads "(n of 7 candles attached)" It wasn't obvious enough before that the Candelabrum has seven candle slots. This makes it show it clearly. --- doc/fixes37.0 | 1 + src/objnam.c | 6 +----- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/doc/fixes37.0 b/doc/fixes37.0 index bab5ec03b..2fd6b1503 100644 --- a/doc/fixes37.0 +++ b/doc/fixes37.0 @@ -78,6 +78,7 @@ NetHack Community Patches (or Variation) Included hallucinatory trap names from github pull request #174 autounlock feature originally from unnethack in github pull request #228 applying a candelabrum with no candles gives a tip (github #265) +candelabrum now reads "(n of 7 candles attached)" (github #265) Code Cleanup and Reorganization diff --git a/src/objnam.c b/src/objnam.c index 50f64ebb7..6da47e52d 100644 --- a/src/objnam.c +++ b/src/objnam.c @@ -1096,11 +1096,7 @@ unsigned doname_flags; break; } if (obj->otyp == CANDELABRUM_OF_INVOCATION) { - if (!obj->spe) - Strcpy(tmpbuf, "no"); - else - Sprintf(tmpbuf, "%d", obj->spe); - Sprintf(eos(bp), " (%s candle%s%s)", tmpbuf, plur(obj->spe), + Sprintf(eos(bp), " (%d of 7 candle%s%s)", obj->spe, plur(obj->spe), !obj->lamplit ? " attached" : ", lit"); break; } else if (obj->otyp == OIL_LAMP || obj->otyp == MAGIC_LAMP From c59387d9aa6da0f6eee964139cc4bf4c2dbce068 Mon Sep 17 00:00:00 2001 From: copperwater Date: Tue, 23 Jan 2018 14:34:59 -0500 Subject: [PATCH 05/20] Show "You feel very comfortable here" message when crowned --- src/sit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sit.c b/src/sit.c index 45be25ba8..29426632e 100644 --- a/src/sit.c +++ b/src/sit.c @@ -274,7 +274,7 @@ dosit() break; } } else { - if (is_prince(g.youmonst.data)) + if (is_prince(g.youmonst.data) || u.uevent.uhand_of_elbereth) You_feel("very comfortable here."); else You_feel("somehow out of place..."); From 77281e719497679f9d5d427f51949a91ccaaa33b Mon Sep 17 00:00:00 2001 From: copperwater Date: Tue, 5 Dec 2017 21:27:06 -0500 Subject: [PATCH 06/20] Choir chanting, bathing in darkness before Moloch snuffs out your life Inspired by a Dudley's Dungeon strip. No gameplay change, just flavor. --- src/pray.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pray.c b/src/pray.c index 0562cd7ec..52452559f 100644 --- a/src/pray.c +++ b/src/pray.c @@ -1523,6 +1523,7 @@ dosacrifice() /* Moloch's high altar */ if (u.ualign.record > -99) u.ualign.record = -99; + pline("An invisible choir chants in Latin, and you are bathed in darkness..."); /*[apparently shrug/snarl can be sensed without being seen]*/ pline("%s shrugs and retains dominion over %s,", Moloch, u_gname()); From f04457630936cc18b3f137f9a40abfd6b71c4b46 Mon Sep 17 00:00:00 2001 From: copperwater Date: Mon, 23 Apr 2018 23:09:40 -0400 Subject: [PATCH 07/20] Remove "iron hook" unidentified description It's confusing and served no purpose; a spoiled player knew what it is, an unspoiled player might think it was a hook-hand or something. Now they all show up as grappling hook. --- src/objects.c | 2 +- win/share/objects.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/objects.c b/src/objects.c index 5261a3422..449a13d09 100644 --- a/src/objects.c +++ b/src/objects.c @@ -703,7 +703,7 @@ TOOL("drum of earthquake","drum", 0, 0, 1, 1, 2, 25, 25, LEATHER, HI_LEATHER), /* tools useful as weapons */ WEPTOOL("pick-axe", None, 1, 0, 0, 20, 100, 50, 6, 3, WHACK, P_PICK_AXE, IRON, HI_METAL), -WEPTOOL("grappling hook", "iron hook", +WEPTOOL("grappling hook", None, 0, 0, 0, 5, 30, 50, 2, 6, WHACK, P_FLAIL, IRON, HI_METAL), WEPTOOL("unicorn horn", None, 1, 1, 1, 0, 20, 100, 12, 12, PIERCE, P_UNICORN_HORN, diff --git a/win/share/objects.txt b/win/share/objects.txt index 15c6181e8..a03300608 100644 --- a/win/share/objects.txt +++ b/win/share/objects.txt @@ -4530,7 +4530,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 237 (iron hook / grappling hook) +# tile 237 (grappling hook) { .............N.. ..............P. From a8a321423d0a5425d35324342c4b1ee3246a10fa Mon Sep 17 00:00:00 2001 From: copperwater Date: Thu, 13 Sep 2018 14:27:06 -0400 Subject: [PATCH 08/20] Suppress "Unknown command" messages in the dumplog. Backported from TNNT. Only affects dumplog pline history, not any other form of pline history. The impetus for this is to avoid dumplogs full of "Unknown command foo." messages which don't provide any value for people reading the file. In many cases, these messages crowd out the actual message history, making it hard to reconstruct what happened. --- src/pline.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pline.c b/src/pline.c index a12aae3c5..f4b553a01 100644 --- a/src/pline.c +++ b/src/pline.c @@ -29,6 +29,8 @@ const char *line; unsigned indx = g.saved_pline_index; /* next slot to use */ char *oldest = g.saved_plines[indx]; /* current content of that slot */ + if (!strncmp(line, "Unknown command", 15)) + return; if (oldest && strlen(oldest) >= strlen(line)) { /* this buffer will gradually shrink until the 'else' is needed; there's no pressing need to track allocation size instead */ From 2b670a82e49da22418c6c0cd85e071b14b62e438 Mon Sep 17 00:00:00 2001 From: copperwater Date: Sat, 8 Dec 2018 13:51:23 -0500 Subject: [PATCH 09/20] Give player message informing them they can use #enhance Triggers when you feel more confident in your skills. This is to address a problem I have heard about several times from newer players: unless you pay close attention to the guidebook, nothing in the game actually indicates that you can level up your abilities and how to do it. Experienced players don't need this message, of course; they can hide it via MSGTYPE if they really hate it, but I additionally added a clause that prevents this message from being displayed more than once per game session. (It didn't seem important enough to make a save field for.) --- src/weapon.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/weapon.c b/src/weapon.c index be0393397..3d446daf5 100644 --- a/src/weapon.c +++ b/src/weapon.c @@ -69,11 +69,17 @@ static void give_may_advance_msg(skill) int skill; { + static boolean got_enhance_tip = FALSE; You_feel("more confident in your %sskills.", (skill == P_NONE) ? "" : (skill <= P_LAST_WEAPON) ? "weapon " : (skill <= P_LAST_SPELL) ? "spell casting " : "fighting "); + + if (!got_enhance_tip) { + pline("(Use the #enhance command to advance them.)"); + } + got_enhance_tip = TRUE; } /* weapon's skill category name for use as generalized description of weapon; From c578b9537aa3d637f912ef862a0b2f6600e7ae4c Mon Sep 17 00:00:00 2001 From: copperwater Date: Sat, 22 Dec 2018 09:38:40 -0500 Subject: [PATCH 10/20] Neutral sacrifices disappear in a cloud of smoke The general idea here came from SpliceHack -- give each alignment a unique effect in what happens to its sacrifices -- but the "puff of smoke" in Splice seemed too small. --- src/pray.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pray.c b/src/pray.c index 52452559f..f8f7e7d9e 100644 --- a/src/pray.c +++ b/src/pray.c @@ -1309,7 +1309,11 @@ register struct obj *otmp; Your("sacrifice disappears!"); else Your("sacrifice is consumed in a %s!", - u.ualign.type == A_LAWFUL ? "flash of light" : "burst of flame"); + u.ualign.type == A_LAWFUL + ? "flash of light" + : u.ualign.type == A_NEUTRAL + ? "cloud of smoke" + : "burst of flame"); if (carried(otmp)) useup(otmp); else From 6b389c385d14cee090cf7ff196cba1eaed44ac99 Mon Sep 17 00:00:00 2001 From: copperwater Date: Fri, 25 Jan 2019 09:27:55 -0500 Subject: [PATCH 11/20] Call potion bottles by nonsensical names if hallucinating From SliceHack. Note that this refers to the description of the physical bottle; it's a substitute for "phial", "carafe", "flask", etc. such as are seen when a potion crashes on someone's head. They don't obscure the randomized appearance or actual potion identity. The SliceHack version evidently went through several revisions; just take the current one. --- src/potion.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/potion.c b/src/potion.c index d4058d583..5032e4e51 100644 --- a/src/potion.c +++ b/src/potion.c @@ -1210,11 +1210,20 @@ const char *txt; const char *bottlenames[] = { "bottle", "phial", "flagon", "carafe", "flask", "jar", "vial" }; +const char *hbottlenames[] = { + "jug", "pitcher", "barrel", "tin", "bag", "box", "glass", "beaker", + "tumbler", "vase", "flowerpot", "pan", "thingy", "mug", "teacup", "teapot", + "keg", "bucket", "thermos", "amphora", "wineskin", "parcel", "bowl", + "ampoule" +}; const char * bottlename() { - return bottlenames[rn2(SIZE(bottlenames))]; + if (Hallucination) + return hbottlenames[rn2(SIZE(hbottlenames))]; + else + return bottlenames[rn2(SIZE(bottlenames))]; } /* handle item dipped into water potion or steed saddle splashed by same */ From 598563dac36303a6f8f032d772ab0f61bc175aed Mon Sep 17 00:00:00 2001 From: copperwater Date: Mon, 4 Feb 2019 22:45:45 -0500 Subject: [PATCH 12/20] Add a default message for chatting to gnomes Message is a reference to The Silver Chair. Most of the other races had their own messages already, but gnomes would just default to discussing dungeon exploration, which doesn't make that much sense most of the times when you would be chatting to them in their own mines. The quotation is edited from the source to reflect the dungeon environment, but the sentiment is actually pretty spot-on given the average player's win ratio. Note: this doesn't interfere with the South Park gnome speech added to 3.6 a while ago; that only occurs when hallucinating and this only occurs when not hallucinating. --- src/sounds.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/sounds.c b/src/sounds.c index 1b6650444..b38bdc2f8 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -805,18 +805,25 @@ register struct monst *mtmp; pline_msg = "talks about spellcraft."; else if (ptr->mlet == S_CENTAUR) pline_msg = "discusses hunting."; - else if (is_gnome(ptr) && Hallucination && (gnomeplan = rn2(4)) % 2) - /* skipped for rn2(4) result of 0 or 2; - gag from an early episode of South Park called "Gnomes"; - initially, Tweek (introduced in that episode) is the only - one aware of the tiny gnomes after spotting them sneaking - about; they are embarked upon a three-step business plan; - a diagram of the plan shows: - Phase 1 Phase 2 Phase 3 - Collect underpants ? Profit - and they never verbalize step 2 so we don't either */ - verbl_msg = (gnomeplan == 1) ? "Phase one, collect underpants." - : "Phase three, profit!"; + else if (is_gnome(ptr)) { + if (Hallucination && (gnomeplan = rn2(4)) % 2) { + /* skipped for rn2(4) result of 0 or 2; + gag from an early episode of South Park called "Gnomes"; + initially, Tweek (introduced in that episode) is the only + one aware of the tiny gnomes after spotting them sneaking + about; they are embarked upon a three-step business plan; + a diagram of the plan shows: + Phase 1 Phase 2 Phase 3 + Collect underpants ? Profit + and they never verbalize step 2 so we don't either */ + verbl_msg = (gnomeplan == 1) ? "Phase one, collect underpants." + : "Phase three, profit!"; + } + else { + verbl_msg = + "Many enter the dungeon, and few return to the sunlit lands."; + } + } else switch (monsndx(ptr)) { case PM_HOBBIT: From 2d8b72be9d901bffffc3e24f3e7089da99e63100 Mon Sep 17 00:00:00 2001 From: copperwater Date: Wed, 18 Dec 2019 22:25:12 -0500 Subject: [PATCH 13/20] Better reporting directions for impossible() Rather than just informing the player that saving and reloading might fix the problem, they are now encouraged to report the problem to the value of DEVTEAM_EMAIL. If the sysconf specifies SUPPORT, that is also presented as an option. --- src/pline.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pline.c b/src/pline.c index f4b553a01..7eee2585f 100644 --- a/src/pline.c +++ b/src/pline.c @@ -481,6 +481,10 @@ VA_DECL(const char *, s) if (g.program_state.something_worth_saving) Strcat(pbuf, " (Saving and reloading may fix this problem.)"); pline("%s", VA_PASS1(pbuf)); + pline("Please report these messages to %s.", DEVTEAM_EMAIL); + if (sysopt.support) { + pline("Alternatively, contact local support: %s", sysopt.support); + } g.program_state.in_impossible = 0; VA_END(); From f87e42e68267ce3416e29ea93cf60073471f41a1 Mon Sep 17 00:00:00 2001 From: copperwater Date: Fri, 25 Jan 2019 15:57:09 -0500 Subject: [PATCH 14/20] Underwater fire scroll causes vaporization regardless of confusion This is originally from the variant SliceHack. Rationale: there's still fire being summoned, so it should vaporize some water. --- src/read.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/read.c b/src/read.c index 84a3278a3..8bb5b80d3 100644 --- a/src/read.c +++ b/src/read.c @@ -1605,7 +1605,10 @@ struct obj *sobj; /* scroll, or fake spellbook object for scroll-like spell */ if (!already_known) (void) learnscrolltyp(SCR_FIRE); if (confused) { - if (Fire_resistance) { + if (Underwater) { + pline("A little %s around you vaporizes.", hliquid("water")); + } + else if (Fire_resistance) { shieldeff(u.ux, u.uy); if (!Blind) pline("Oh, look, what a pretty fire in your %s.", From 43d06a4911d58517410c0935c5278fe7c6dc2484 Mon Sep 17 00:00:00 2001 From: copperwater Date: Tue, 12 Jun 2018 09:36:54 -0400 Subject: [PATCH 15/20] Default shk sell prompt to N It can get annoying when you accidentally sell something you didn't mean to by hitting space or enter at this prompt. --- src/shk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shk.c b/src/shk.c index 3076bedaa..05aad8291 100644 --- a/src/shk.c +++ b/src/shk.c @@ -3258,7 +3258,7 @@ xchar x, y; } else qbuf[0] = '\0'; /* just to pacify lint */ - switch (g.sell_response ? g.sell_response : ynaq(qbuf)) { + switch (g.sell_response ? g.sell_response : nyaq(qbuf)) { case 'q': g.sell_response = 'n'; /*FALLTHRU*/ From d9c7a7b13c78a1ecbedf843d7b7ec45785076f2b Mon Sep 17 00:00:00 2001 From: copperwater Date: Fri, 1 Feb 2019 12:21:42 -0500 Subject: [PATCH 16/20] Teach non-mindless monsters about the Castle trapdoors This feature is originally from SliceHack, but the original code directly edited the monmove code, whereas I thought it was cleaner to use the existing mtrapseen code. Thus, this commit just marks trapdoors as "seen" for all non-mindless monsters generated in the Castle level (the same way all monsters in Sokoban are marked aware of pits and holes). This change prevents these Castle monsters from moving onto trapdoors 97.5% of the time. (A determined player can still patiently sit and wait for everyone in the castle to plunge like lemmings into the trapdoors, but it will now take 40 times as long.) Also unlike SliceHack, this only excludes mindless monsters - not all non-humanoids. There are plenty of intelligent non-humanoid monsters generated right next to the trapdoors, after all. This is aimed at better flavor (the inhabitants of the castle should know about the traps in their own area) and better scenery in the Valley (doesn't seem as much of a valley of the dead if there are hordes of soldiers milling around down there). I considered sticking an in_mklev condition onto this if statement, so that monsters spawned into the Castle after its creation will fall down the trapdoors, but ultimately decided against it. --- src/makemon.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/makemon.c b/src/makemon.c index 3f6cfd0f2..96c4267fc 100644 --- a/src/makemon.c +++ b/src/makemon.c @@ -1226,6 +1226,8 @@ int mmflags; if (In_sokoban(&u.uz) && !mindless(ptr)) /* know about traps here */ mtmp->mtrapseen = (1L << (PIT - 1)) | (1L << (HOLE - 1)); + if (Is_stronghold(&u.uz) && !mindless(ptr)) /* know about the trap doors */ + mtmp->mtrapseen = (1L << (TRAPDOOR - 1)); /* quest leader and nemesis both know about all trap types */ if (ptr->msound == MS_LEADER || ptr->msound == MS_NEMESIS) mtmp->mtrapseen = ~0; From 6cbf8ccef49ef5a70bb146bca047ec2c88b1a1d3 Mon Sep 17 00:00:00 2001 From: copperwater Date: Mon, 28 May 2018 22:12:47 -0400 Subject: [PATCH 17/20] Always print a message when the hero teleports It's useful to get a message as indication you suddenly moved somewhere. For instance, MSGTYPE=stop can be used on this to avoid bumbling in the wrong direction after a spontaneous uncontrolled teleport. --- src/teleport.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/teleport.c b/src/teleport.c index 34707085d..5baf2d9e4 100644 --- a/src/teleport.c +++ b/src/teleport.c @@ -355,6 +355,8 @@ boolean allow_drag; } } } + You("materialize in %s location!", + (nux == u.ux0 && nuy == u.uy0) ? "the same" : "a different"); /* must set u.ux, u.uy after drag_ball(), which may need to know the old position if allow_drag is true... */ u_on_newpos(nux, nuy); /* set u., usteed->; cliparound() */ From 02731cb996ba1ea4f785611d80698e177c6bf7f6 Mon Sep 17 00:00:00 2001 From: copperwater Date: Tue, 12 Jun 2018 11:33:36 -0400 Subject: [PATCH 18/20] Always print a message when the hero level teleports For much the same reason as the horizontal teleport message: various forms of level teleportation produce no message indication at all that you just ended up somewhere else. --- src/teleport.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/teleport.c b/src/teleport.c index 5baf2d9e4..6e711cfbf 100644 --- a/src/teleport.c +++ b/src/teleport.c @@ -1022,6 +1022,7 @@ level_tele() call it something, we can't defer until the end of the turn */ if (u.utotype && !g.context.mon_moving) deferred_goto(); + You("materialize on a different level!"); } void From 0c89eb32f593d07545f16b52edf0e46f45a3f1ac Mon Sep 17 00:00:00 2001 From: Patric Mueller Date: Sat, 4 Jan 2020 22:46:58 +0100 Subject: [PATCH 19/20] Show the teleportation messages only with flags.verbose --- src/teleport.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/teleport.c b/src/teleport.c index 6e711cfbf..6707cc9d2 100644 --- a/src/teleport.c +++ b/src/teleport.c @@ -355,8 +355,11 @@ boolean allow_drag; } } } - You("materialize in %s location!", - (nux == u.ux0 && nuy == u.uy0) ? "the same" : "a different"); + + if (flags.verbose) + You("materialize in %s location!", + (nux == u.ux0 && nuy == u.uy0) ? "the same" : "a different"); + /* must set u.ux, u.uy after drag_ball(), which may need to know the old position if allow_drag is true... */ u_on_newpos(nux, nuy); /* set u., usteed->; cliparound() */ @@ -1017,12 +1020,14 @@ level_tele() if (!(wizard && force_dest)) get_level(&newlevel, newlev); } - schedule_goto(&newlevel, FALSE, FALSE, 0, (char *) 0, (char *) 0); + + schedule_goto(&newlevel, FALSE, FALSE, 0, (char *) 0, + flags.verbose ? "You materialize on a different level!" : (char *)0); + /* in case player just read a scroll and is about to be asked to call it something, we can't defer until the end of the turn */ if (u.utotype && !g.context.mon_moving) deferred_goto(); - You("materialize on a different level!"); } void From 25a248219a81212a1fd41e261f0ef29f9a34d59d Mon Sep 17 00:00:00 2001 From: Patric Mueller Date: Sat, 4 Jan 2020 23:03:45 +0100 Subject: [PATCH 20/20] Update fixes37.0 --- doc/fixes37.0 | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/doc/fixes37.0 b/doc/fixes37.0 index 2fd6b1503..d96916ffe 100644 --- a/doc/fixes37.0 +++ b/doc/fixes37.0 @@ -79,6 +79,23 @@ hallucinatory trap names from github pull request #174 autounlock feature originally from unnethack in github pull request #228 applying a candelabrum with no candles gives a tip (github #265) candelabrum now reads "(n of 7 candles attached)" (github #265) +replace "You feel cold" message for freezing unseen door (github #265) +applying a candelabrum with no candles gives a tip (github #265) +candelabrum now reads "(n of 7 candles attached)" (github #265) +show appropriate message on throne when crowned (github #265) +choir chanting, bathing in darkness for death by Moloch (github #265) +remove "iron hook" unidentified description (github #265) +suppress "Unknown command" messages in the dumplog. (github #265) +give player message informing them they can use #enhance (github #265) +neutral sacrifices disappear in a cloud of smoke (github #265) +call potion bottles by nonsensical names if hallucinating (github #265) +add a default message for chatting to gnomes (github #265) +better reporting directions for impossible() (github #265) +underwater fire scroll causes vaporization (github #265) +default shk sell prompt to N (github #265) +teach non-mindless monsters about the Castle trapdoors (github #265) +always print a message when the hero teleports (github #265) +always print a message when the hero level teleports (github #265) Code Cleanup and Reorganization