Giter VIP home page Giter VIP logo

dnao's People

Contributors

amybsod avatar chris-plus-alphanumericgibberish avatar deepy avatar demogorgon22 avatar espadolini avatar fredriq avatar gebulmer avatar hbane avatar ilbelkyr avatar k21971 avatar mackeyth avatar mason-arteles avatar neroonetrueking avatar netsysfire avatar nhtangles avatar noisytoot avatar paxed avatar rikerw avatar rojjacebolla avatar tarmunora avatar technillogue avatar tempestnano avatar tung avatar umbire avatar zombifier avatar

Stargazers

 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

dnao's Issues

Error in maze room code?

Core was generated by `/dnethack-3.18.0/dnethack -u Demo'.
Program terminated with signal SIGABRT, Aborted.
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51 }
(gdb) bt
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1 0x00007fe1ae4d8801 in __GI_abort () at abort.c:79
#2 0x00005652a4355172 in panic (str=0x5652a48dd920 "wallification: bad bounds (%d,%d) to (%d,%d)") at src/end.c:517
#3 0x00005652a44e229a in wallification (x1=36, y1=10, x2=0, y2=14) at src/mkmaze.c:145
#4 0x00005652a44e6078 in maze_damage_rooms (chance=85) at src/mkmaze.c:1156
#5 0x00005652a47297d0 in load_maze (fd=0x5652a57edba0) at src/sp_lev.c:2840
#6 0x00005652a4729de3 in load_special (name=0x7ffc58dbb030 "stair4.lev") at src/sp_lev.c:2925
#7 0x00005652a44e6a81 in makemaz (s=0x5652a57e5a74 "stair4") at src/mkmaze.c:1354
#8 0x00005652a44dc2cb in makelevel () at src/mklev.c:1007
#9 0x00005652a44de0db in mklev () at src/mklev.c:1493
#10 0x00005652a42c1136 in goto_level (newlevel=0x7ffc58dbbdac, at_stairs=1 '\001', falling=0 '\000', portal=0 '\000')
at src/do.c:1195
#11 0x00005652a4332992 in next_level (at_stairs=1 '\001') at src/dungeon.c:1199
#12 0x00005652a42c0385 in dodown () at src/do.c:887
#13 0x00005652a4281f44 in rhack (cmd=0x5652a4beb1a0 <in_line> ">") at src/cmd.c:5369
#14 0x00005652a41e2673 in moveloop () at src/allmain.c:2180
#15 0x00005652a487f1d8 in main (argc=3, argv=0x7ffc58dbc0b8) at sys/unix/unixmain.c:296
(gdb)

Kicking off map can lead to crashes (bug 1)

If you stand in the bottom right corner of the map and kick down,
#0 dokick () at src/dokick.c:846
#1 0x0000555555642746 in rhack (cmd=0x555555eeed60 <in_line> "\004") at src/cmd.c:5693
#2 0x00005555555ad95f in moveloop () at src/allmain.c:1871
#3 0x0000555555ba5aa9 in main (argc=4, argv=0x7fffffffe3c8) at sys/unix/unixmain.c:296

where
841
842 if(MON_AT(x, y)) {
843 struct permonst mdat;
844
845 mtmp = m_at(x, y);
846 mdat = mtmp->data;
847 if (!mtmp->mpeaceful || !canspotmon(mtmp))
848 flags.forcefight = TRUE; /
attack even if invisible */
849 kick_monster(x, y);
850 flags.forcefight = FALSE;

Some is_ok checks need to be happening somewhere or something...?
Also kicking down right or right doesn’t crash…
Should be easy to reproduce.

Chaos3 cracks:2 can have no downstair

The lava lake level in the mordor chaos quest (where there's a big lake in the middle, NOT the one with the high shaman of moloch) can have no downstair. Confirmed with a savefile. The stairs will put you on a random spot every time. (for ease of testing - savefile starts you on lvl 11, bugged one is lvl 10).

0wizard.zip

eat.c compiler errors out

Can't play it yet because the precompiled binaries are the old dnethack-master precompiled...
and the new dnethack-master won't compile.

C:\GAMES\binary\dnethack\src>mingw32-make -f makefile.gcc install 1>out.txt
../util/panic.c:54:7: warning: conflicting types for built-in function 'alloca'
[enabled by default]
../src/attrib.c: In function 'init_mask_attr':
../src/attrib.c:613:23: warning: initialization discards 'const' qualifier from
pointer target type [enabled by default]
../src/eat.c: In function 'givit':
../src/eat.c:950:7: error: argument 'nutval' doesn't match prototype
../src/eat.c:33:17: error: prototype declaration
mingw32-make: *** [o/eat.o] Error 1

eat.c error? This is the new dnethack-master (bard, half-dragon, anachronist ), won't compile.

Death-spear is broken af

It's probably pretty stupid (bypasses monster MR, player MR, etc.) but it also segfaults when invoked on empty square (doesn't check if there's a monster there).

migrating_mons corruption

The migrating_mons chain likes to get corrupted. It has happened in a few ways. Most just lead to a crash when it points to some memory it interprets as a monster and some of the values cause problems. (Mostly leading to crashes when trying to loop through minvent to save that object chain when changing levels.) Sometimes it can lead to infinite loops because the chain links back to itself. Not sure what causes this although it was determined pet code and hungry dead are worth investigating as they make unusual changes to the chain.

Samurai discoveries crash

This code in objnam.c function obj_typename():

if (Role_if(PM_SAMURAI) && iflags.obscure_role_obj_names && Alternate_item_name(otyp,ObscureJapanese_items)) actualn = Alternate_item_name(otyp,Japanese_items);

causes a segfault if a samurai tries to view the names of certain items because it incorrectly compares the item to the entry in "Japanese_items" instead of "ObscureJapanese_items" (copy and paste bug).

Beartraps giving bad message

You begin setting your bear trap. "Don't hurt my customers!" You finish arming the bear trap.

No shopkeeper to be seen.

Engulfing can cause stack overflow when using certain display options.

#19376 0x000055555568ac0f in cls () at src/display.c:1506
#19377 0x0000555555689930 in swallowed (first=1) at src/display.c:1090
#19378 0x0000555555c62ac6 in docorner (xmin=1, ymax=2) at win/tty/wintty.c:2437
#19379 0x0000555555c5f61b in tty_clear_nhwindow (window=1) at win/tty/wintty.c:1046
#19380 0x0000555555c60f2c in tty_display_nhwindow (window=1, blocking=0 '\000') at win/tty/wintty.c:1643
#19381 0x000055555568ac0f in cls () at src/display.c:1506
#19382 0x0000555555689930 in swallowed (first=1) at src/display.c:1090
#19383 0x0000555555c62ac6 in docorner (xmin=1, ymax=2) at win/tty/wintty.c:2437
#19384 0x0000555555c5f61b in tty_clear_nhwindow (window=1) at win/tty/wintty.c:1046
#19385 0x0000555555c60f2c in tty_display_nhwindow (window=1, blocking=0 '\000') at win/tty/wintty.c:1643
#19386 0x000055555568ac0f in cls () at src/display.c:1506
#19387 0x0000555555689930 in swallowed (first=1) at src/display.c:1090
#19388 0x0000555555c62ac6 in docorner (xmin=1, ymax=2) at win/tty/wintty.c:2437
#19389 0x0000555555c5f61b in tty_clear_nhwindow (window=1) at win/tty/wintty.c:1046
#19390 0x0000555555c60f2c in tty_display_nhwindow (window=1, blocking=0 '\000') at win/tty/wintty.c:1643
#19391 0x000055555568ac0f in cls () at src/display.c:1506
#19392 0x0000555555689930 in swallowed (first=1) at src/display.c:1090

Happens while swallowed. Not really sure which options caused this but when I made it so the fuzzer cannot change options anymore it quit happening. Not much useful info here to debug this unfortunately but can probably replicate with the fuzzer.

Random coordinates for makemon() can place monsters in !goodpos() locations

while(!goodpos(x, y, ptr ? &fakemon : (struct monst *)0, Is_waterlevel(&u.uz) ? gpflags|MM_IGNOREWATER : gpflags) && (tryct++ < 150 && ((tryct < 50 && couldsee(x, y)) || ((tryct < 100 && cansee(x, y))) || distmin(x,y,u.ux,u.uy) < BOLT_LIM)));

[10:53 PM] NeroOneTrueKing: On first glance, it seems fine
[10:55 PM] NeroOneTrueKing: But consider: A location that is in the middle of rock, far away from the player. cansee() is false, couldsee() is false, the distmin() relation is false.
[10:56 PM] NeroOneTrueKing: We than have: (!goodpos() && tryct<150 && FALSE).
[10:56 PM] NeroOneTrueKing: And we place the purple worm that the shrieking shrieker summoned into solid rock.

Making a hungry dead can crash if it cannot create a blob of preserved organs

#0 0x000055555579a8fb in m_initinv (mtmp=0x5555562e4560) at src/makemon.c:5990
#1 0x00005555557a2fb4 in makemon (ptr=0x555555f6fd70 <mons+54768>, x=37, y=18, mmflags=0) at src/makemon.c:7916
#2 0x000055555578781c in m_initgrp (mtmp=0x5555562e4120, x=42, y=7, n=0) at src/makemon.c:158
#3 0x00005555557a2f0b in makemon (ptr=0x555555f6fd70 <mons+54768>, x=42, y=7, mmflags=0) at src/makemon.c:7905
#4 0x00005555555aac7b in moveloop () at src/allmain.c:1374
#5 0x0000555555c58851 in main (argc=4, argv=0x7fffffffe3e8) at sys/unix/unixmain.c:296

 } else if(ptr == &mons[PM_HUNGRY_DEAD]){
    struct monst *blbtmp;
    blbtmp = makemon(&mons[PM_BLOB_OF_PRESERVED_ORGANS], mtmp->mx, mtmp->my, MM_ADJACENTOK|MM_NOCOUNTBIRTH);
    blbtmp->mvar1 = (long)mtmp->m_id;
}

blbtmp->mvar1 is set before verifying blbtmp isn't null

Kicking off map can lead to crashes (bug 2)

#0 0x000055555568b6b7 in back_to_glyph (x=64 '@', y=21 '\025')
at src/display.c:1752
#1 0x00005555556798b6 in map_background (x=64 '@', y=21 '\025',
show=1) at src/display.c:225
#2 0x000055555567ce20 in feel_location (x=64 '@', y=21 '\025')
at src/display.c:616
#3 0x00005555556e9d40 in dokick () at src/dokick.c:1445
#4 0x0000555555652ee1 in rhack (
cmd=0x555555fc42a0 <in_line> "\004") at src/cmd.c:5447
#5 0x00005555555b2ad7 in moveloop () at src/allmain.c:2205
#6 0x0000555555c58851 in main (argc=4, argv=0x7fffffffe3e8)
at sys/unix/unixmain.c:296

Must be blind and kick down.
I don’t know why but this works on ranger quest home. kick down the bottom. arc quest home which should be identical it doesn't work and instead you thump and get an impossible.
Pirate quest when i do this while standing on water it doesn’t crash and throws the same impossible as the arc quest.It doesn't thump on pirate quest.
feel_location should really make an isok check or something…
https://sourceforge.net/p/nethack/NetHack/ci/e2fffafb7c9e55f6f5bd9f75ab6e982c3cc862e9
https://sourceforge.net/p/nethack/NetHack/ci/9af9cf30c8bc8087a72c4eca2be7a258fca1aa56
should fix the impossible part but the part where it crashes… idk. it should always thump when you kick off the map. when it says “you kick an empty space” that means something is wrong with the level?

Above are my mostly unrevised internal notes. Should be easy to replicate.

Unclear interaction between shoot-all launchers and throwables

Wielding the BFG (or pen of the void with Eve bound into it), you currently:
Get the launcher's multishoot bonus, and it says you "shoot" the throwable, but the range is its default.
Boomerangs still move in their boomerang arcs when shot.

What is the intended behaviour?

'f'iring command ignored with mismatched launcher / ammo size

Expected behaviour is it would be like 'f'iring crossbow bolts with a bow: you throw the over/under-sized arrow.
Actual behaviour is that pressing 'f' does nothing, not even give a message that your ammo is the wrong size.

TODO: Either change flow so that it throws the arrow dumbly, or give a message that the ammo is the wrong size. Be careful not to damage the intended behaviour of shoot-anything launchers (BFG, PotV)!

Teleportitis/Swimming Bug

This was filed under dNethack instead of dNAO previously.

My previous game, user Tempest. 9/23/2014, Turn 54120.
Swimming underwater, teleport prompt,
I don't recall if I teleported or not, I can't tell from my immediate message history.
I was then asked to "Dive underwater", but I was already under water from my previous dive, declined.
I got the message: "You swim to surface"; yet, I remain underwater with no breath clock.

Perhaps teleports should always spit you out above water.

Wizard mode #genesis can lead to a crash

#0 0x0000555555a757c5 in create_particular (specify_attitude=18446744073709551615, specify_derivation=-1, allow_multi=1, ma_require=0,
mg_restrict=0, gen_restrict=0) at src/read.c:3253
#1 0x000055555563109c in wiz_genesis () at src/cmd.c:1325
#2 0x0000555555652ebf in rhack (cmd=0x555555fc42a0 <in_line> "\a") at src/cmd.c:5446
#3 0x00005555555b2ad7 in moveloop () at src/allmain.c:2205
#4 0x0000555555c5882c in main (argc=4, argv=0x7fffffffe3c8) at sys/unix/unixmain.c:296

             if (specify_derivation){
                        if (!mtmp->mfaction && (
                                undeadtype == ZOMBIFIED ? can_undead_mon(mtmp) :
                                undeadtype == SKELIFIED ? can_undead_mon(mtmp) :
                                undeadtype == VAMPIRIC ? can_undead_mon(mtmp) :
                                undeadtype == CRYSTALFIED ? TRUE :
                                undeadtype == ILLUMINATED ? TRUE :
                                undeadtype == PSEUDONATURAL ? TRUE :
                                undeadtype == TOMB_HERD ? TRUE :
                                undeadtype == YITH ? TRUE :
                                undeadtype == CRANIUM_RAT ? is_rat(mtmp->data) :
                                undeadtype == FRACTURED ? is_kamerel(mtmp->data) : 0
                                ))
                        {
                                mtmp->mfaction = undeadtype;
                        }
                }

Should check if mtmp exists before trying to check or set mfaction.

Error when levelporting from full level to full level with stalkers in tow

#0 0x000055555572713a in panic (str=0x555555ccf30a "%s") at src/end.c:519
#1 0x0000555555a0d9c8 in impossible (s=0x555555c88f91 "mnexto failed (do.c)?") at src/pline.c:350
#2 0x0000555555693943 in goto_level (newlevel=0x7fffffffd87c, at_stairs=0 '\000', falling=0 '\000', portal=0 '\000') at src/do.c:1415
#3 0x0000555555694605 in deferred_goto () at src/do.c:1655
#4 0x0000555555b47a0e in level_tele () at src/teleport.c:1107
#5 0x0000555555631135 in wiz_level_tele () at src/cmd.c:1352
#6 0x0000555555652ebf in rhack (cmd=0x555555fc42a0 <in_line> "\026") at src/cmd.c:5446
#7 0x00005555555b2ad7 in moveloop () at src/allmain.c:2205
#8 0x0000555555c5882c in main (argc=4, argv=0x7fffffffe3c8) at sys/unix/unixmain.c:296

Unable to generate x11tiles

Running tile2x11 monsters.txt objects.txt other.txt produces an empty file on Arch Linux 4.16.8-1-ARCH x86_64. The culprit seems to be other.txt, since omitting it in the above command line produces a valid (although obviously incomplete) file.

bc_sanity_check in ball.c is not sane

This function is only called when iflags.sanity_check is set or the new iflags.debug_fuzzer flag is set.
It checks that the owornmask of uball is ONLY W_BALL so if you are wielding it, quivering it, or swapepping it OR it is W_ART or W_ARTI for some reason (not sure if this is possible with the convict arti) then it will throw an impossible thinking the state of the game is insane when it is actually fine.

Firework cart explosions crash the game

When other monsters are caught in their explosions, the game segfaults and then trying to recover the game says "Strange, that map is not as I remember it", declares a trickery and throws a SIGILL during the trickery handling. This causes the player to lose their savegame with no way to recover it. Probably a double free or corruption issue.

Dilapidated Armories are too much of a free loot-haul

Potential changes to address the issue:

  • Make the brown puddings and rust monsters generated inside give no XP.
  • Disable artifact generation for items generated inside.
    Edit: more potential changes:
  • Limit the max size of armories to 20 (interior) tiles as a special-room-creation requirement

AT_WISP/AT_SHDW effect on passive attacks got lost

The switch to passives as once-per-turn instead of once-per-attack lost this benefit to those attacks.

This is a good chance to use #style: add an option to allow the character to ONLY use those attacks if available, protecting them from enemies with passive attacks.

Not sure what to do with Eladrin et al.

Game may crash when starting a new character (u.osegen and u.osepro buffer overflows)

When the function u_init() in u_init.c is called, the u.osegen[] and u.osepro[] are populated (see https://github.com/Chris-plus-alphanumericgibberish/dNAO/blob/compat-3.12.0/src/u_init.c#L1485), but what they're populated with may exceed their buffer lengths: osegen[9] is not big enough to hold e.g. "incantifier" (12 bytes) or "clockwork automaton" (20 bytes), and osepro[5] is not big enough to hold e.g. "chaell" (7 bytes). This sometimes causes the game to crash.

Certain new covetous warping cannot handle levels with certain conditions.

#0 0x0000555555684c35 in newsym (x=80, y=-38) at src/display.c:771
#1 0x0000555555b48493 in rloc_to (mtmp=0x555556047470, x=80, y=-38) at src/teleport.c:1270
#2 0x0000555555940e9b in mofflin (mtmp=0x555556047470) at src/mon.c:5353
#3 0x0000555555c115e2 in tactics (mtmp=0x555556047470) at src/wizard.c:381
#4 0x000055555595cae0 in dochug (mtmp=0x555556047470) at src/monmove.c:1132
#5 0x00005555559508f1 in dochugw (mtmp=0x555556047470) at src/monmove.c:98
#6 0x000055555591b6cd in movemon () at src/mon.c:2082
#7 0x000055555559f598 in moveloop () at src/allmain.c:824
#8 0x0000555555c58851 in main (argc=4, argv=0x7fffffffe3e8) at sys/unix/unixmain.c:296

Arch and master liches are confirmed to exhibit this behavior.
Before this crash in mofflin calls eofflin which filled a coord struct with 80 -31. Because the way eofflin handles a certain condition returns goods[0] which when the level is in this condition, goods[0] is uninitialized so garbage x and y are set to be used at the position the covetous monster warps to.
Also the above functions have names that are unreadable and aren't very clear what they are supposed to do based on the name.
I'm not sure what the level conditions are that cause goods to be empty. One of them happened with 1404 monsters, one happened with 735 so it does not require a full level, probably just a full area around the player?

Misc Fossil Issues

Casting Stone to Flesh on a fossil yields a corpse even for no-corpse monsters.
Zapping Undead Turning on a fossil yields a skeleton of the monster, even if monster has no bones.
Both methods are able to create real copies of unique / no-wish monsters, albeit without their inventory.

Error in unmaintained function "extcmd_via_menu"

0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1 0x00007ffff7239801 in __GI_abort () at abort.c:79
#2 0x0000555555727138 in panic (str=0x555555d036f8 "No window slots!") at src/end.c:518
#3 0x0000555555c5f0c2 in tty_create_nhwindow (type=4) at win/tty/wintty.c:936
#4 0x00005555556296d5 in extcmd_via_menu () at src/cmd.c:421
#5 0x0000555555c5a2a2 in tty_get_ext_cmd () at win/tty/getline.c:260
#6 0x0000555555629291 in doextcmd () at src/cmd.c:325
#7 0x0000555555652ebf in rhack (cmd=0x555555fc42a0 <in_line> "#") at src/cmd.c:5446
#8 0x00005555555b2ad7 in moveloop () at src/allmain.c:2205
#9 0x0000555555c5881f in main (argc=4, argv=0x7fffffffe3e8) at sys/unix/unixmain.c:296

Saving while engulfed and punished can lose ball or chain

Describe the bug
If the player is both engulfed and punished, saving the game may result in losing the ball and chain, and sometimes the game may produce a disorder message or crash.

To Reproduce
Steps to reproduce the behavior:

  1. Wish for a nonblessed scroll of punishment and read it
    1.5 (Optional) Pick up the heavy iron ball
  2. Generate an energy vortex or other engulfer and wait until it engulfs you
  3. Save the game while engulfed
  4. Load the game; you might get an error message immediately, but not always, and getting out of the engulfer will most probably reveal that the ball and/or chain have gone missing and you're no longer punished even though you should be

Expected behavior
The player should still be punished after saving and loading the game, and the ball and chain should reappear once you're out of the engulfer.

Desktop (please complete the following information):

  • OS: probably any, but seen on both Windows (XP and 7) and Unix

Additional context
The exact behavior of the crash varies depending on whether you picked up the ball or not, and there may also be other factors. A fix is here: SLASHEM-Extended/SLASHEM-Extended@5edaa33c

Naiads can collapse into a pool repeatedly without actually dying

There seems to be no limit, and this is with ranged weapons. A droven rogue threw 4 daggers total (in two barrages and with each one hitting) the naiad, causing it to collapse 4 times. The naiad collapsed a fifth time when slain in melee, and actually died that time.

Light sources are broken in a variety of ways

#0 0x000055555572713a in panic (str=0x555555ccf32a "%s") at src/end.c:519
#1 0x0000555555a0d9ce in impossible (s=0x555555caab60 "relink_light_sources: cant find %c_id %d") at src/pline.c:350
#2 0x000055555577b70f in relink_light_sources (ghostly=0 '\000') at src/light.c:510
#3 0x0000555555a7d947 in getlev (fd=7, pid=26651, lev=4, ghostly=0 '\000') at src/restore.c:964
#4 0x0000555555692914 in goto_level (newlevel=0x7fffffffd87c, at_stairs=0 '\000', falling=0 '\000', portal=0 '\000') at src/do.c:1225
#5 0x0000555555694605 in deferred_goto () at src/do.c:1655
#6 0x0000555555b47a14 in level_tele () at src/teleport.c:1107
#7 0x0000555555631135 in wiz_level_tele () at src/cmd.c:1352
#8 0x0000555555652ebf in rhack (cmd=0x555555fc42a0 <in_line> "\026") at src/cmd.c:5446
#9 0x00005555555b2ad7 in moveloop () at src/allmain.c:2205
#10 0x0000555555c58832 in main (argc=4, argv=0x7fffffffe3c8) at sys/unix/unixmain.c:296

(gdb) print *ls
$3 = {next = 0x0, x = 0 '\000', y = 0 '\000', range = 1, flags = 2, type = 1, id = 0x0}
Honestly I have no idea. There is also another issues here.
impossible relink_light_sources: cant find m_id 991833
impossible maybe_write_ls: no id! [range=0]
impossible save_light_sources: no id! [range=0]
This can also an issue where lightsources end up off screen.
#0 0x0000555555be913c in clear_path (col1=49, row1=23, col2=48, row2=20) at src/vision.c:1612

1612 q2_path(row1,col1,row2,col2,cleardone);
(gdb) bt
#0 0x0000555555be913c in clear_path (col1=49, row1=23, col2=48, row2=20) at src/vision.c:1612
#1 0x000055555577b2a3 in do_light_sources (cs_rows=0x555555fdb700 <cs_rows1>) at src/light.c:383
#2 0x0000555555be62cd in vision_recalc (control=0) at src/vision.c:691
#3 0x000055555591b4c5 in movemon () at src/mon.c:2057
#4 0x000055555559f598 in moveloop () at src/allmain.c:824
#5 0x0000555555c58851 in main (argc=4, argv=0x7fffffffe3e8) at sys/unix/unixmain.c:296

And another where
#0 0x0000555555c37bfe in get_mon_location (mon=0xfaa7, xp=0x55555606aba8 "D\t\001", yp=0x55555606aba9 "\t\001", locflags=0) at src/zap.c:562
562 } else if (mon && !DEADMONSTER(mon) && mon->mx > 0 && (!mon->mburied || locflags)) {
(gdb) bt
#0 0x0000555555c37bfe in get_mon_location (mon=0xfaa7, xp=0x55555606aba8 "D\t\001", yp=0x55555606aba9 "\t\001", locflags=0) at src/zap.c:562
#1 0x000055555577a4f8 in do_light_sources (cs_rows=0x555555fdb700 <cs_rows1>) at src/light.c:152
#2 0x0000555555be62cd in vision_recalc (control=0) at src/vision.c:691
#3 0x0000555555a0cb83 in vpline (line=0x7fffffffbd30 "relink_light_sources: cant find m_id 63779", the_args=0x7fffffffc160) at src/pline.c:153
#4 0x0000555555a0c9f4 in pline (line=0x555555ccf34a "%s") at src/pline.c:104
#5 0x0000555555a0d9fa in impossible (s=0x555555caab80 "relink_light_sources: cant find %c_id %d") at src/pline.c:351
#6 0x000055555577b731 in relink_light_sources (ghostly=0 '\000') at src/light.c:510
#7 0x0000555555a7d966 in getlev (fd=6, pid=30749, lev=4, ghostly=0 '\000') at src/restore.c:964
#8 0x0000555555692936 in goto_level (newlevel=0x7fffffffd89c, at_stairs=0 '\000', falling=0 '\000', portal=0 '\000') at src/do.c:1225
#9 0x0000555555694627 in deferred_goto () at src/do.c:1655
#10 0x0000555555b47a33 in level_tele () at src/teleport.c:1107
#11 0x0000555555631157 in wiz_level_tele () at src/cmd.c:1353
#12 0x0000555555652ee1 in rhack (cmd=0x555555fc42a0 <in_line> "\026") at src/cmd.c:5447
#13 0x00005555555b2ad7 in moveloop () at src/allmain.c:2205
#14 0x0000555555c58851 in main (argc=4, argv=0x7fffffffe3e8) at sys/unix/unixmain.c:296

I dunno it crashes when you change levels and lightsources are the problem.

Object with y = 21 happened and kicking it crashed the game.

Program received signal SIGSEGV, Segmentation fault.
0x0000555555684c35 in newsym (x=56, y=21) at src/display.c:771
771 if (cansee(x,y)) {
(gdb) bt
#0 0x0000555555684c35 in newsym (x=56, y=21) at src/display.c:771
#1 0x00005555556e1e04 in kick_object (x=56 '8', y=21 '\025') at src/dokick.c:699
#2 0x00005555556e6392 in dokick () at src/dokick.c:938
#3 0x00005555556292d6 in doextcmd () at src/cmd.c:328
#4 0x0000555555652ee1 in rhack (cmd=0x555555fc42a0 <in_line> "#") at src/cmd.c:5447
#5 0x00005555555b2ad7 in moveloop () at src/allmain.c:2205
#6 0x0000555555c58854 in main (argc=1, argv=0x7fffffffe418) at sys/unix/unixmain.c:296

A rock was kicked by you. u.uy was 20. Rock is at y=21 somehow. It thinks it will move 5 squares. Rock is medium. Happened in the mines. How did the rock get there? I have no idea.

Multi-turn wait command does not get interrupted

Monsters can come into view and move up to the player, status effects like confusion and stun can time out, and the player may grow hungry or even weak yet the waiting does not get interrupted. It only happens when using "n50." or similar commands, while "n50s" (searching) does get interrupted as it should. The reason for this is that the key rebindings patch makes the wait command (the . command) set no occupation when used as a multi-turn command, and this can be fixed by changing this line in cmd.c:
{"wait", "rest one move while doing nothing", donull, IFBURIED},
to:
{"wait", "rest one move while doing nothing", donull, IFBURIED, !AUTOCOMPLETE, "waiting"},

This is especially useful if the player is standing in a shop and wants to pass some time without waking up mimics. The player should be interrupted by geckos etc. moving into view, not by being meleed by them (as is currently the case)...

Monster life saving messages

All messages use cansee() instead of canseemon(), because the Amulet code assumed that you were looking at a glowing object in the monsters square instead of the monster itself.

Problems:

  • I think cansee() respects illumination, meaning that you can't see glowing amulets in dark squares!
  • Not all effects glow/are separate from the monster's appearance.

Characters don't start with max pw

They'll always start 2-3 power down from their maximum, regardless of race/role? Seems like it processes after the half-dragons-get-15-pw check, since a hlf knight had 15/18 power at T:0.

Monster life-saving doesn't properly check genocide

Currently, only amulets of life-saving do. Some "lifesaving" effects result in a change in permonst, so the proper behavior is probably to return to the top of the function until all sources of life saving are exhausted or the monst is no longer genocided.

Problem: Illuminated could trigger a LOT of times before being exhausted! Auto-exhaust in the case of genocide?

Pen of the Void duplicate code

The Pen is handled in two places, in weapon.c and artifact.c. Both functions are called, resulting in doubled damage for many spirits.

In light of the new oproperty and otyp effects, handling should be done in artifact.c so that it happens in parallel with any other effects.

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.