GithubHelp home page GithubHelp logo

copperwater / xnethack Goto Github PK

View Code? Open in Web Editor NEW
54.0 8.0 15.0 127.96 MB

Experimental features and improvements applied to NetHack 3.7-dev

License: Other

Perl 0.42% C 88.31% C++ 4.13% Assembly 0.23% OpenEdge ABL 0.03% GAP 0.01% Batchfile 0.08% Awk 0.05% Shell 0.18% Roff 0.22% DIGITAL Command Language 0.24% Makefile 0.17% AppleScript 0.03% sed 0.01% CSS 0.02% Lua 5.71% Objective-C 0.08% Rez 0.09%
nethack roguelike roguelike-game

xnethack's Introduction

xNetHack

xNetHack is a fork of the dungeon exploration game NetHack. It is a distant descendent of Rogue and Hack, and a direct descendant of the development version of NetHack 3.7. For more information on NetHack, visit http://nethack.org, and for its public Git repository, see https://github.com/NetHack/NetHack.

The main goals of xNetHack are to take vanilla NetHack and:

  1. Fix gameplay balance issues.
  2. Remove tedious and frustrating parts of the game.
  3. Make uninteresting parts of the game more interesting.
  4. Experiment with new ideas from the community.

In general, the game design takes a conservative approach to changing the gameplay compared to other variants, with focus on deepening elements of the game rather than broadening them. For example, this philosophy would prefer to differentiate monsters in a class that all tend to play the same way, instead of adding new monsters to that class.

Popular features of xNetHack have tended to be good candidates for feature suggestions to the DevTeam; a number of features in vanilla NetHack either originated in xNetHack or used its implementation of something that originated in another variant.

xNetHack's public Git repository can be accessed at https://github.com/copperwater/xNetHack. Its changelogs (one per each version) can be found in the doc/ folder. A more human-readable version of this is available on the NetHack wiki: https://nethackwiki.com/wiki/xNetHack.

The ideas and proposals that xNetHack draws from are archived on the NetHack YANI Archive, which is maintained by the xNetHack author.

Installation

For installation instructions, please refer to the README file also found in this directory, which is the unchanged README provided by the NetHack devteam. It will direct you to the appropriate documentation for your system, in particular the sys/*/Install.* files.

  • Users running macOS can build and install xNetHack with the script install_macos.sh (requires homebrew to install build dependencies).

xnethack's People

Contributors

alkom avatar apowers313 avatar ardub23 avatar argrath avatar barthouse avatar bhaak avatar bhouse-microsoft avatar chasonr avatar copperwater avatar davecohrs avatar dextercd avatar dnicolaas avatar entrez avatar fredriq avatar k21971 avatar mogigoma avatar nh-karnov avatar nhkeni avatar nhmall avatar nhtangles avatar nullcgt avatar pavelbraginskiy avatar paxed avatar remirol avatar rojjacebolla avatar tung avatar uniqp avatar vivit-r avatar vultur-cadens avatar zomgreg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xnethack's Issues

Raise the required level to dip for Excalibur

Raise XL cutoffs for Excalibur higher; possibly much higher for non-Knight lawfuls.

  • lv 10 for knights, 15 for others?
  • cf. fourk excalibur bias towards knights (f9b0c65) which makes odds scale
  • evilhack allow only knights to dip for excalibur (possibly all lawfuls above XL15) (1a73b41)
  • #2423: Only knights of XL 7 or higher can dip for Excalibur, and no other characters can, though it remains the lawful crowning gift.
  • #733: Raise the XL threshold of dipping Excalibur for non-Knight roles to around 9-12. Knights can still dip at level 5.
    • This isn't necessarily the Excal change that's desired. As it's a crowning gift, perhaps the level minimum should be raised for all roles, with Knights getting some different benefit.
  • If implemented this needs to have some message for when a lawful XL5+ character ineligible for Excalibur dips into a fountain and otherwise would have got it, indicating they are not experienced enough.
  • Reasoning for this feature (for commit msg) is that Excal is a prime example of a feature balanced for not many players actually knowing about it, similar to Elbereth. Very powerful but not easy to get by accident. In the age of nethackwiki, this doesn't work anymore.
  • There is weirdness now for Knights, in that Arthur has Excalibur when you enter the Quest, which then blocks you from getting it in any way short of stealing it from him. Likely fix (until Knight quest redesign) is to remove Arthur getting this, so that it doesn't make life unnecessarily hard for Knights.

Gehennom level with no maze

A filler level in Gehennom generated with no maze, only solid rock and a few rooms.
2021-10-31 16_58_24-hardfought org - PuTTY

I've occasionally seen a single room fail to connect properly with the maze, requiring me to dig in or out, but this is the first time I've seen no maze at all. I used a stethoscope to search for secret passages all around the room with the upstair, then dug a few tiles to the right before reading a mapping scroll.

My best guess as to the cause is that the tiny room in the lower-left was supposed to be the maze, but somehow it stopped generating past a few tiles. That guess is based on that it's too small to be a normal room, but it could be a short piece of maze hallway.

maddening build process (probably due to inaccurate instructions from upstream)

sed -e 's;/usr/games/lib/nethackdir;$(HACKDIR);' \

It seems bad that this line explicitly looks for a folder called "nethackdir"? When I'm trying to run xnh locally, I don't have any folder called nethackdir, because i followed the instructions to set my own folder names. I have

PREFIX=$(wildcard ~)
HACKDIR=$(PREFIX)/xnethack
SHELLDIR = $(PREFIX)/shelldir
INSTDIR=$(HACKDIR)
VARDIR = $(HACKDIR)/var

, which seems to work for compiling and running splicehack, but XNH keeps looking for folders that don't exist:

~/git/xNetHack$ ~/xnethack/xnethack 
/home/foot/xnh/install/games/lib/xnethackdir: No such file or directory
Cannot chdir to /home/roja/xnh/install/games/lib/xnethackdir.

~/git/xNetHack$ ~/xnh/xnethack
/home/foot/xnh/xnethack: 68: exec: /home/foot/xnh/xnethackdir/xnethack: not found

~/git/xNetHack$ ~/xnh/xnethackdir/inst/xnethack 
/home/foot/xnh/install/games/lib/xnethackdir: No such file or directory
Cannot chdir to /home/foot/xnh/install/games/lib/xnethackdir.

~/git/xNetHack$ ./src/xnethack 
/home/foot/xnh/install/games/lib/xnethackdir: No such file or directory
Cannot chdir to /home/roja/xnh/install/games/lib/xnethackdir.

I've been at this for a few hours and I just feel like an idiot, I don't understand how people casually compile and run all these variants locally. 😭

Make mindless undead monsters fearless

There should be a fearless() macro that governs this behavior.

Fearless monsters should not be capable of turning and fleeing from active scare effects. (Probably the scroll of scare monster should still work on them.)

Fire a dart -- You kill the gas spore! rn2(0) attempted, returning 0

You kill the gas spore!  rn2(0) attempted, returning 0--More--

I was firing darts at gas spores as a Valkyrie. Also happens when firing arrows as Valkyrie.

On Hardfought US.

Unix xNetHack Version 5.0 - last build Thu Feb 13 18:53:40 2020
 (7926277bdcf78a0d6fae8bd9c01eb6270da7d4b6).

Options compiled into this edition:
    color, console escape codes for tile hinting, data file compression,
    data librarian, end-of-game dumplogs, insurance files for recovering
    from crashes, log file, extended log file, errors and warnings log file,
    mail daemon, news file, pattern matching via posixregex, pseudo random
    numbers generated by ISAAC64, strong PRNG seed available from
    /dev/urandom, screen clipping, shell command, traditional status
    display, status via windowport with highlighting, suspend command,
    terminal info library, timed wait for display effects, system
    configuration at run-time, save and bones files accepted from versions
    5.0.0 through 5.0.0, and basic NetHack features.

Supported windowing systems:
    "tty" (traditional text with optional line-drawing) and "curses"
    (terminal-based graphics), with a default of "tty".

edit here's a backtrace

#0  rn2 (x=0) at rnd.c:105
No locals.
#1  0x0000556c7df37b20 in thitmonst (mon=0x556c7e8897c0, obj=0x556c7e829d10) at dothrow.c:1797
        broken = 0 '\000'
        chance = 0
        speadjust = 0 '\000'
        wasthrown = 1 '\001'
        chopper = 0 '\000'
        tmp = 0
        disttmp = 2
        otyp = 6
        hmode = 1
        guaranteed_hit = 0 '\000'
        dieroll = 7
#2  0x0000556c7df35ad6 in throwit (obj=0x556c7e829d10, wep_mask=512, twoweap=0 '\000') at dothrow.c:1347
        obj_gone = 125 '}'
        mon = 0x556c7e8897c0
        range = 6
        urange = 6
        crossbowing = 0 '\000'
        clear_thrownobj = 0 '\000'
        impaired = 0 '\000'
        tethered_weapon = 0 '\000'
#3  0x0000556c7df3155a in throw_obj (obj=0x556c7e7d2360, shotlimit=0) at dothrow.c:250
        otmp = 0x556c7e829d10
        multishot = 1
        skill = -24 '\350'
        wep_mask = 512
        twoweap = 0 '\000'
        weakmultishot = 0 '\000'
#4  0x0000556c7df31e82 in dofire () at dothrow.c:430
        shotlimit = 0
        obj = 0x556c7e7d2360
#5  0x0000556c7dee5cdf in rhack (cmd=0x556c7e1dc920 <in_line> "f") at cmd.c:4993
        tlist = 0x556c7e1d1dc0 <extcmdlist+960>
        res = 2116080504
        func = 0x556c7df31d26 <dofire>
        spkey = 0
        prefix_seen = 0 '\000'
        bad_command = 1 '\001'
        firsttime = 1 '\001'
#6  0x0000556c7deaab28 in moveloop (resuming=1 '\001') at allmain.c:472
        moveamt = 12
        wtcap = 0
        change = 0
        monscanmove = 0 '\000'
        energyfrac = 0
#7  0x0000556c7e123d5b in main (argc=1, argv=0x7ffc73823a08) at ../sys/unix/unixmain.c:351
        fd = 4
        dir = 0x4 <error: Cannot access memory at address 0x4>
        exact_username = 0 '\000'
        resuming = 1 '\001'
        plsel_once = 0 '\000'

Program in disorder! trying to force stuck pet down stairs

My Barbarian tried in vain to get Idefix to follow down to Dlvl 2. The pet could move, and could stay near me, but would not come down despite repeated attempts.
Having failed, I went to the mines alone and found a leash. A level teleport trap sent me back up.

I tamed my now feral pet again, applied a leash, buc tested a few things, and tried to go down stairs again.
Pet's attachment to Dlvl 1 was evidently stronger than my leash, and I received this message:

leash in use isn't attached to anything? Program in disorder! (Saving and reloading may fix this problem.)

If I go back up to Dlvl 1, I see tame little dog called Idefix, leashed to you.
If I go back down again, I no longer get the message though my pet remains upstairs.

This is running 32b859ac8 Pre-release addition of flavor text strings for 8.0 built with stock sys/unix/hints/linux.370.

Here's a core file, standing on the downstairs next to the pet:
core.566911.remove.this.txt

Edit: After saving and reloading, the problem persists. I dropped the leash from my inventory. The dog picked up and dropped the leash. Farlook says "tame little dog called Idefix, fleeing, leashed to you" despite the leash being on the ground (I suppose that might just be fallout from the disorder of the leash in use coming unattached?).

Wish parser should translate "leather armor" to "light armor"

This would be a backwards-compatibility shim, because probably 99% of the time when someone wishes for "leather armor" in xNetHack, they want to get the base-leather piece of armor that provides 2 AC, not any random object in ARMOR_CLASS that happens to have its material set to leather.

So the token "leather armor" in a wish should:

  • be parsed into LIGHT_ARMOR
  • not have the "leather" mean anything

Dismounting wumpus while over air has weird effects

An easy way to reproduce this is to go to Vlad's cavern level (tower4) and ^G summon "tame saddled wumpus" and #ride it. Make sure not to have levitation or flying.

If you are completely surrounded by air, you are not allowed to dismount the wumpus.

If, however, you are next to at least one walkable space:

  1. The wumpus falls into the depths. (This doesn't make sense since it clings to the ceiling and dismounting it shouldn't make it detach from the ceiling).
  2. You are credited with the wumpus's death and your god is angry because you killed a pet.
  3. You have not moved to one of the adjacent walkable spaces, and are still hovering in midair.
  4. You plummet into the depths yourself and probably die.

Expected behavior is that the wumpus remains in place, clinging to the ceiling, and you dismount on one of the adjacent walkable spaces.

Allow for easy Lua unbundling

Good evening! I'm trying to make a FreeBSD package out of this and the way you use Lua is quite weird. Please add a simple way to use the system's Lua installation instead. Also let me know if a specific Lua version is needed.

Crash when moving into moat

I was playing on Hardfought (xNetHack version 5.1). Wanted to dilute some potions, so I jumped in the moat on the Oracle level. Did it 2 or 3 times, and the game crashed. When I opened the game, it told my I had a game in progress, asked I wanted to abandon it. Got in touch with an admin who recovered the save file. I went back to the Oracle level and jumped in the water again, game crashed again, no "game in progress" notification this time.

When I moved into the moat I was a Samurai, Level 10, ~90 HP, wearing GDSM, wielding Snickersnee, and carrying ~8 potions (a couple of which were acid), nothing else in inventory.

Happy to provide additional info or attempt to reproduce if that would help.

Quest redesign: Monk

This will be the next redesigned quest.

A few parts of this quest have already been redesigned in the effort to not have it be a carbon copy of the Priest quest, so there's less redesign effort than usual involved, but this largely focused on levels and not making a distinct quest story.

  • Home level redesign
  • Upper filler level redesign
  • Locate level redesign
  • Lower filler levels redesign (needs to not be a boring room-and-corridor dungeon; it should be underground, but should be more interesting. Also should be distinct from the Arc quest tomb generation.)
  • Goal level redesign
  • Quest story redesign
  • Any changes to Master Kaen (probably none are needed)

Notes on a distinct story from quest overhaul brainstorming, not necessarily committed to:

  • Kaen is known and stated already to have a strong affiliation with elementals
    • He takes the Eyes because they let him discover points where elementals can more easily be summoned from the Planes. (He can use them to see into the Elemental Planes, not just the Astral.)
    • His Monastery of the Earth-Lord is one such place, with an affinity for earth elementals, which explains why they're the most numerous
  • Kaen wants to destroy the Monastery of Chan-Sune because its location has an affinity for summoning all types of elementals (this is kind of a weak motivation)
    • The reason he's not still there trying to destroy it when you arrive is because the initial attacks were repulsed by the guardians well enough to force him back to his own base to regroup and summon more elementals
    • this isn't TOO different from the basic quest story, but it's somewhat novel in that none of them deal with an enemy who is currently withdrawn but preparing to strike again.
    • A cool bit of level design that could be done here is that the elementals on the home level are just a token force, and there are no elementals at all on the upper filler levels, them being instead just full of wild animals (particularly one or two tigers). Ideally elementals won't even respawn on these levels.
    • The devastating losses to the monastery are represented in the level by either rows of headstones or rows of burnt engravings of monks' names in the outer forest
  • #2630: The monk quest is very loot-sparse in terms of random items being generated on the floors of the levels (death drops are unaffected), because all the major players are either monks, without much in the way of worldly possessions, or elementals who don't have any items.

macOS build failed

I have tried to execute the macOS build through sys/unix/install_macos.sh. I have an M1 MacBook with macOS 12.6.3 (Monterey).

The build runs fine until I run into this error:

[CC] monst.c
In file included from monst.c:6:
In file included from ../include/config.h:710:
In file included from ../include/integer.h:54:
In file included from /Library/Developer/CommandLineTools/usr/lib/clang/14.0.0/include/stdint.h:52:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdint.h:52:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types.h:32:
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h:309:39: error: too few arguments provided to function-like macro invocation
#if __has_attribute(warn_unused_result)
^
1 error generated.

Any advises on what I could do?

Impossible with overflowing fountain in big room: "deleting trap (5) containing ammo (218)?"

I was on my way to make more holy water, I dipped into the big room's fountain and received the following messages:

Your potion of confusion dilutes.  deleting trap (5) containing ammo (218)?
Program in disorder!  (Saving and reloading may fix this problem.)
Please report these messages to [email protected].
Alternatively, contact local support: Contact K2 or Tangles on
irc.libera.chat channel #hardfought
Water gushes forth from the overflowing fountain!

The room looks like this:

snap-1215

Permanent inventory update issues

A few issues with the curses permanent inventory:

  • when carrying capacity changes (e.g. recovery from Xan bite), capacity is not updated
  • when declining to buy something via 'Itemized billing', item's unpaid status incorrectly updates

Standing next to a hezrou may induce nausea

This could repurpose the defunct abattoir sickness code to instead scan the area around the hero for a hezrou. It should happen at fairly low frequency (so that you're not guaranteed to get nauseous just from being near a hezrou for a few turns).

This should happen only if olfaction() is true.

A different but more complicated implementation would be to make the gas clouds emitted by hezrous, and only those gas clouds, induce nausea.

Dump log inconsistencies

In a recent game, the achievement "You completed the Gnomish Mines" was not recorded in the end game log.
It appears to have been replaced by a "You handled the Bell of Opening" message (this appears twice).
The Mines' End variant was the Gnomish Sewer.

Dump log:
https://eu.hardfought.org/userdata/G/Graznop/xnethack/dumplog/1623968162.xnh.html

Acquiring the Mines' End luckstone was noted by Beholder on IRC (at 09:00), just before attaining the rank of Exhumer (at 09:05):
https://www.hardfought.org/irclog/%23hardfought-2021-06-19.log

Floating dragon scales

I'm on Vlad's Tower, Level 1, and killed a Gray Dragon on an "air" tile while levitating via a ring. I got a message about it's body falling away and disappearing, but it also dropped dragon scales that are just "floating" there in the air. Seems like a bug that the scales don't also fall away.

Playing on Hardfought.
Unix NetHack Version 7.0.0 - last build Mar 20 2022 21:41:19
(d8d347d964b310a1d65c52326b9d30ac073ddabd).

Thanks for all your work!

Demon gating message sequencing is backwards

When a weapon-wielding demon (such as a horned devil) is gated in, the message about it wielding its item will get printed before the message about it appearing in a cloud of brimstone.

This occurs because in msummon, makemon is called first to create the monster, possibly triggering messages about the monster wielding its weapon, and then the brimstone message is printed after all demons have been gated in.

Possible solutions:

  • Suppress the message about a monster wielding a weapon if it's being created. The problem with this solution, though, is that the player won't necessarily know that it is wielding a weapon at all until it attacks with that weapon.
  • Move the special summon message into makemon somehow rather than doing it after the fact. This seems like it would be messy, because makemon probably should not have to care about what its caller is doing.

Diamond shaped stores...

If a store is given one of the new diamond shapes and the entrance is at one of the points of the diamond, the shopkeeper will refuse to move out of your way to allow you to enter (or presumably exit). Apparently it would cause him to lose contact with the control square just inside the door...

unable to interact with objects on the ground when using the option "force_invmenu"

for example, you can't eat a corpse or food without picking it up, and it's completely impossible to quaff from fountains.

normally the game prompts you asking if you want to eat the corpse below you or quaff from the fountain if you are standing on it, and if you say no then it moves on to your inventory but this behaviour is absent in xnethack and without the ability to specify the ground from the inventory menu, there's no way to interact with things on the ground with this option enabled.

this happens both in the current master as well as the current xnethack version on hardfought.

I can't get this to compile no matter what I try.

Visual Studio keeps giving me this error, and I'm not very familiar with compiling source code. The instructions are very confusing. Can somebody pre-compile this? I'd love to play offline.

error : Your project does not reference ".NETFramework,Version=v4.0" framework. Add a reference to ".NETFramework,Version=v4.0" in the "TargetFrameworks" property of your project file and then re-run NuGet restore.

Can't find object "loadstone" error - Mine's End

After hitting > to travel down into the Mine's End level, I received this error:

Screenshot - 4_14_2020 , 6_01_25 PM+1

After hitting Enter on that screen, I received this error:
Screenshot - 4_14_2020 , 6_07_11 PM+1

This was my first time going down this stair. I'm playing an Elven Ranger on hardfought. The server is running xNethack version 5.1. Saving and reloading the game did not cause any errors to occur.

YANI #2018: Every lock in the game has a deterministic chance of being unopenable by a credit card

  • Deterministic chance is based on object ID if a box and xyz coordinates if a door.
  • Attempting gives the message "It doesn't look like this lock can be opened with a credit card."
  • Boxes have a constant 40% chance of being like this, and doors are based on depth, starting at 10% or so on level 1 and increasing to 80% by level 50.
  • Possibly extend this behavior to locks that can't be opened by a key either, requiring either a lock pick or magic. [Probably for the future, kick this back into the feature lists if decided not to implement it now.]

Feedback on new Valkyrie quest

Hey there--I'm not sure if this is an appropriate forum for general feedback--let me know if there's somewhere you'd prefer I post this.

I'm playing on Hardfought for the first time in a year or so with no idea that I was on a new xNetHack version. I was delighted when I realized the Valkyrie quest was overhauled. The new Home level is much more interesting, and the Bifrost is very cool. Overall I love it.

I have one complaint, and that's anti-synergy of the Sol Valtiva with my other weapon options. I started with the +1 Spear, took a little while to find a long sword and then #dipped for Excalibur. Eventually I found a convertible altar and sacrificed for Mjolnir, and then went on the Quest, where I was surprised to pick up Sol Valtiva. So I have 3 great weapon options. Sol Valtiva, dealing fire damage and being 2-handed seems like a sub-optimal choice for Gehennom. It's really cool that it acts as a light source, but I mostly want a light source for throwing Mjolnir, and it won't work for that because I'd need to wield both of them. So while I'm psyched for a new artifact, I'm a little disappointed that I'll probably not use it much.

When I play a Valkyrie, I love wielding Mjolnir. It seems super-thematic. I like the way it's beefed up in xNetHack with the new #invoke ability and I don't mind the risky two-handed trade-off for more damage. Maybe Mjolnir should just be the Valkyrie quest artifact? But it doesn't seem like Valks need a new weapon option.

Thanks for all your work!

Game-ending crash when viewing encyclopedia entry for 'dart' or 'shuriken'

In xNetHack version 5.0 on hardfought.org (US server), attempting to view the encyclopedia and additional information on darts or shuriken crashes to the server menu. Upon re-entering the game, I'm told "There is already a game in progress under your name. Destroy old game?" Answering 'no' boots me back to the server menu again.

This happens when inspecting darts or shuriken from the inventory, or when using / (what is) followed by ? (something else) and typing "dart" or "shuriken". Typing "darts" or "shurikens" shows the encyclopedia entry, but without the added information (damage, material, etc), and in the case of "darts", the entry is shown twice in a row (which may be unrelated).

I suspect that the error has to do with the bit in the extra information that displays the associated skill. The only weapon I found to show the description "Thrown missile" is the boomerang, which is incorrectly described as using the broadsword skill. SpliceHack doesn't show the weapon's skill, and the bug is absent there.

Object lookup doesn't work for certain phrasings of item

Object lookup works fine for "X of Y" phrasings like "wand of death" or "ring of slow digestion". But it does not work for "Y X" phrasings like "death wand" and "slow digestion ring"; these just get whatever encyclopedia entry happens to match.

Boulder...

Stood on the upstairs on the nemesis level of the ranger quest and read a cursed scroll of earth. The scroll disappeared but no boulder was produced. Some new bit of f*ckery?

Curses windowport overwrites terminal color settings

I'm that guy who first prompted that issue on Reddit. So I would like to repost it here.

Hi, guys! I'm still trying to play xNetHack, but I have no knowledge about coding. However, now I've noticed, that this fork, xNetHack, forcefully overwrites my colors for curses interface, and I don't know, how could I change that behaviour. The set of color options from configuration file doesn't work. What should I do to set my preset of colors, taken from windows prompt?

Here is the link to the same issue in NetHack branch, with some nice info provided by entrez: Curses windowport overwrites terminal color settings

Game crash after fire trap causes multiple potions to explode

Hi there, just had a game crash (playing on Hardfought, xNetHack 5.1) after I stepped on a fire trap. I got the "flames erupt from the floor" message, my shield smouldered, a potion exploded and I healed a little bit - and I was prompted to name that potion, then another potion exploded "strange feeling for a moment, then it passes", I named the second potion, and basically as soon as I hit enter with that name I was back at the Hardfought home screen - no more messages, no dying, etc. Starting up xNetHack again I got the new game screen.

Needs old compat code stripped out

The file hacklib.c currently has a lot of code guarded with defined(BSD) that makes various functions use long for time stamps instead of time_t. However, this hasn't been the case for decades. Please fix the code by discarding the BSD special code path.

This was first noticed in by a compiler warning:

hacklib.c:1146:24: warning: incompatible pointer types passing 'long *' to parameter of type 'const time_t *' (aka 'const long long *') [-Wincompatible-pointer-types]
        lt = localtime((long *) (&date));
                       ^~~~~~~~~~~~~~~~
../include/system.h:541:38: note: passing argument to parameter here
E struct tm *localtime(const time_t *);
                                     ^

There are probably more issues coming from this.

Level jumping

I have a game where I'm a valkyrie. when I go down the stairs to the 2nd level of the quest, it takes me to the gnomish mines final level, then when I try to go up I just get more and more mines levels, even into negative numbers. Got to dungeon level -4. Then I went back down the bottom, saved, and restarted. Acted normal for a while.

Then, on later levels (24, 27, 32) when I go down the stair I end up on dungeon level one. If I dig a hole it will take me to the next level, though.

"mazewalk unfinished? stone at <2,2>" descending stair from Medusa, then collapse

I'm not sure that I did anything out of the ordinary this time, but taking the stairs down after defeating Medusa resulted in this mazewalk unfinished? stone at <2,2> message:

snap-1212

Then,

Suddenly, the dungeon collapses.
To report this error, Contact K2 or Tangles on irc.libera.chat channel #hardfought
and it may be possible to rebuild.

mazexy: can't find a place!

In case that helps any, here's a core dump from just before the collapse: core.632359.remove.this.txt

And a tarball of ~/nh/install/games: nh-games.tar.gz

(Mostly) Duplicate YAFMs are displayed when restoring a game while hallucinating

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚Restoring save file...                                                          β”‚
β”‚NetHack is filmed in front of an undead studio audience.                        β”‚
β”‚Hello wizard, the orcish Ranger, welcome back to xNetHack!                      β”‚
β”‚xNetHack is filmed in front of a live studio audience.                          β”‚
β”‚Do you want to keep the save file? [yn] (n)                                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                                                β”‚
β”‚                                                                0               β”‚
β”‚                                                                Β·+────┐         β”‚
β”‚                                                                β”‚@Β·(=Β·β”‚         β”‚
β”‚                                                               q-=Β·IΒ·Β·β”‚         β”‚
β”‚                                                                β”‚IΒ·(Β±~β”‚         β”‚
β”‚                                                                β””Β·Β·Β·β”€β”€β”˜         β”‚
β”‚                                                                  β–’β–’β–’β–’          β”‚
β”‚                                                                                β”‚
β”‚                                                                                β”‚
β”‚                                                                                β”‚
β”‚                                                                                β”‚
β”‚                                                                                β”‚
β”‚                                                                                β”‚
β”‚                                                                                β”‚
β”‚                                                                                β”‚
β”‚                                                                                β”‚
β”‚                                                                                β”‚
β”‚                                                                                β”‚
β”‚                                                                                β”‚
β”‚                                                                                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚Wizard the Marksman            St:14 Dx:10 Co:15 In:13 Wi:13 Ch:10  Chaotic     β”‚
β”‚Dlvl:1  $:0  HP:111(111)  Pw:102(102)  AC:7  Xp:30  T:288  Hallu                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

These messages come from two separate commits. The first (9fb1868) commit is the original one that was added to xNetHack. This was later upstreamed to the vanilla NetHack 3.7 by the second commit (a9c41d2), which was then merged back to xNetHack by 15b7311.

xNetHack/src/allmain.c

Lines 717 to 724 in 9fb1868

pline(new_game ? "%s %s, welcome to xNetHack! You are a%s %s %s."
: "%s %s, the%s %s %s, welcome back to xNetHack!",
Hello((struct monst *) 0), plname, buf, urace.adj,
(currentgend && urole.name.f) ? urole.name.f : urole.name.m);
if (Hallucination)
pline("xNetHack is filmed in front of a live studio audience.");
}

xNetHack/src/allmain.c

Lines 686 to 692 in a9c41d2

}
if (Hallucination)
pline("NetHack is filmed in front of a live studio audience.");
/*
* The "welcome back" message always describes your innate form

The upstreamed one was inserted to a different location in the welcome function, hence they did not get merged into one automatically nor cause a merge conflict.

Differentiate the various types of giant

  • Hill giant: this is the "unspecial" giant, it should perhaps have its stats (base level, difficulty etc) swapped with stone giant.
  • Stone giant: if not carrying a boulder and standing on diggable floor not next to water, may pry a boulder up out of the floor, creating a pit on that space (that they don't fall into). This expends their mspec_used and sets it to a high amount - 80 to 100 or more turns? Also, may spawn with an extra boulder.
  • Fire giant: passive fire attack, an active fire attack would be nice but none of the attack types really fit (AT_TUCH seems weird for a giant, and physical types like AT_CLAW seem like they ought to do physical damage, but don't if paired with AD_FIRE). Maybe it can be fire breath?
  • Frost giant: same as fire giant, but with cold.
  • Storm giants: have an active lightning attack (AT_MAGC AD_ELEC?) This should be limited by mspec_used so that they can't use it every move, and should not be flavored as casting a spell because giants aren't supposed to be that learned.

All giants may need their difficulties bumped.

See YANI #1678, #3158

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.