Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Conversation

@copperwater
Copy link
Contributor

Since there are a lot of these, it seems better to make a single pull request instead of over 20 little ones. The commits in here are more or less independent of one another and self-contained.

All of these are from xNetHack, though some originated in other variants. A lot of them are small enhancements to the interface, mostly via messages.

If I have other small feature commits to submit later on, I plan on adding them to this pull request.

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.
"This candelabrum has no candles. To attach candles, apply them instead
of the candelabrum."
It wasn't obvious enough before that the Candelabrum has seven candle
slots. This makes it show it clearly.
Minor change to reduce some annoyance when monsters quaff polymorph or
trigger polymorph traps and the player can see it: traps have no
messages at all, so the player needs to notice that a monster
polymorphed and may need to farlook it to see what it is (for instance,
if it becomes a brown H); whereas potions just say "foo suddenly
mutates!" which is nice for letting the player know it happened, but has
the same need-to-farlook problems.

This commit simply enables newcham()'s message printing for when a
monster steps on a polymorph trap or drinks a potion (the "suddenly
mutates" message is removed.)
Such a scroll doesn't practically remove the curse from anything, so
this message is misleading. It still prints the unique message "The
scroll disintegrates."
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.
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.
Ported from SpliceHack. Continuing in the trend with the last two
commits, it's nice to have a message that indicates something you might
not immediately notice just by looking at the map display.

Note that this does inform you of pursuit when you can't see the
monster.
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.
This is originally from the variant SliceHack. Rationale: there's still
fire being summoned, so it should vaporize some water.
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.
Inspired by a Dudley's Dungeon strip. No gameplay change, just flavor.
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.
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.)
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.
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.
From SliceHack. Now if you are hallucinating and your god says
something, they will bray, moo, squeak, belch, etc. instead of booming
or thundering like normal.
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.
It was sort of silly that the can of grease could rust because it was
made of iron. In real life I've usually seen grease stored in plastic
cans.

With them not being iron anymore, they didn't need to be HI_METAL (which
is an overused color for tools anyway), so the color is now bright blue,
which no other tool uses.
TOOL("tinning kit", None, 1, 0, 0, 1, 15,100, 30, IRON, HI_METAL),
TOOL("tin opener", None, 1, 0, 0, 0, 35, 4, 30, IRON, HI_METAL),
TOOL("can of grease", None, 1, 0, 0, 1, 15, 15, 20, IRON, HI_METAL),
TOOL("can of grease", None, 1, 0, 0, 1, 15, 15, 20, PLASTIC, CLR_BRIGHT_BLUE),
Copy link
Contributor

@bhaak bhaak Dec 20, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, maybe you're not old enough to have seen metallic cans of grease. :-)

https://images.ehive.com/accounts/5386/objects/images/r5l8pe_a36v_m.jpg

They certainly can rust. Plastic are somewhat anachronistic for NetHack but then again, NetHack is in itself anachronistic.

/* 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...");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where's the fat lady? :-D

Copy link
Contributor Author

@copperwater copperwater Dec 22, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That one was implemented as a YAFM, which I was going to make a separate pull request to collect all of them in. Though, maybe this one should just be used, since it already has some (bitcoins for an ale for instance)

It can get annoying when you accidentally sell something you didn't mean
to by hitting space or enter at this prompt.
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.
pline("%s gives you %s %s%s for an ale.", Monnam(priest),
(pmoney == 1L) ? "one" : "two",
Hallucination ? "bitcoin" : "bit",
(pmoney == 1L) ? "" : "s");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No. Don't drag that clusterfuck into NetHack.

We already have hallucinated currencies, how about:
const char *bits = (Hallucination) ? currency(pmoney) : (pmoney == 1L) ? "bit" : "bits";
pline("%s gives you %s%s for an ale.", Monnam(priest), (pmoney == 1L) ? "one " : "two ", bits);

src/read.c Outdated Show resolved Hide resolved
E void FDECL(mon_arrive, (struct monst *, BOOLEAN_P));
E void FDECL(mon_catchup_elapsed_time, (struct monst *, long));
E void FDECL(keepdogs, (BOOLEAN_P));
E void FDECL(keepdogs, (BOOLEAN_P, BOOLEAN_P));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the general idea but not in this form.

As stated in the commit message, there are situations when you
shouldn't be able to notice that monsters followed you.

I also seriously dislike just adding boolean flags to functions (note that the current code sometimes also does that so this is more of a general remark than just criticism of this commit).

One boolean is often okay, but two or more make it unreadable. Either
break it out into different functions or change the booleans to enum
options.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When the booleans are totally independent, the only real options for reducing the number of arguments are to make a clunky enum that enumerates the different cases, or use bitflags, the added complication of which may be worth it for 3+ independent booleans but probably not 2.

"belches", "ring-a-lings out", "squeaks", "squeals", "screeches", "drones",
"buzzes", "pipes", "tinkles", "rumbulates", "moos", "brays", "barks",
"screams", "howls", "ululates", "quacks", "meows",
};
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd argue that the voice of a god will overwrite your hallucination.
But also that I don't like getting stuff too silly.

bhaak added a commit to bhaak/nethack_travis that referenced this pull request Jan 4, 2020
This includes most commits from GitHub pull request NetHack#265 with some code
adjustement and documentation in doc/fixes37.0.
bhaak added a commit to bhaak/nethack_travis that referenced this pull request Jan 4, 2020
This includes most commits from GitHub pull request NetHack#265 with some code
adjustment and documentation in doc/fixes37.0.
@copperwater
Copy link
Contributor Author

All these were incorporated except:

  • messages for monsters following: @bhaak, since you agree with the general idea, we should try to hash out what would be better here. One question is whether you should always be told when a monster pursues you via a non-stairs method even if you can't see it, because that produces the "gets a grip on you" message. I still think two boolean arguments for a function is okay whereas three would be pushing into making it a bitmask territory.
  • god voice funny verbs when hallucinating: I don't really agree with rejecting it on tonal grounds, but I understand the argument.
  • removing the "helping you" message from cursed remove curse: Fine, this leaves it open for a possible new cursed remove curse effect in the future, and in the meantime the interpretation of "it removes the curse from itself" still applies.
  • grease color and material: Okay, leave it as metal, but can it be a bright blue can of metal? Helps it be more recognizable and not look like a key or pick-axe.
  • additional cases for newcham polymorph: Not sure why this one didn't get picked up, I don't see any comments on it at all.

@nhmall
Copy link
Contributor

nhmall commented Nov 1, 2021

This pull request has all been committed to NetHack-3.7, except for the following bands:
https://gist.github.com/nhmall/17646bf27be669dd151b82db9dd0e5f5

@nhcopier nhcopier deleted the branch NetHack:NetHack-3.7 January 27, 2022 16:20
@nhcopier nhcopier closed this Jan 27, 2022
@nhmall nhmall reopened this Jan 27, 2022
@copperwater
Copy link
Contributor Author

Closing this old pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.