Commit Graph

51 Commits

Author SHA1 Message Date
Pasi Kallinen
411ee58593 Add more explicit helpless reasons
Instead of just "while helpless", the death reason will tell
more explicitly why the player was helpless.  For example:
"while frozen by a monster's gaze"
2015-03-29 22:12:19 +03:00
Sean Hunt
ac108cd365 Make GOLDOBJ unconditional. 2015-02-27 19:33:40 -05:00
Sean Hunt
1edadd1d48 Make REINCARNATION unconditional.
There is a lot of code affected by this, and Pat Rankin correctly
observes that it would be better to store roguelike as a level flag
rather than just using Is_rogue_level. A note for the future.
2015-02-27 19:33:16 -05:00
keni
03140969ee Bulk recovery of file CVS headers and addition of NHDT- headers. 2015-02-26 09:19:03 -05:00
nethack.rankin
084d2ab85d magic mapping fixes
^F on Plane of Water didn't show the magic portal to Astral.  I spent
a lot of time looking at differences between current code and 3.4.3 to figure
out what had changed, then finally tried it on 3.4.3 and discovered that it
didn't work back then either.  ^F marks all floor and ceiling traps as seen
and explicitly maps them, but Water has level.flags.hero_memory clear, making
the mapped trap disappear when it isn't in line of sight.

     When fixing this, I changed magic mapping so that it shows furniture
(stairs, altars, fountains, &c) in preference to traps or objects, and known
traps in preference to objects, so hidden things can be spotted.  (Once
they're in line of sight, the precedence reverses to normal, showing objects
on top of traps on top of floor.)
2012-04-16 02:05:40 +00:00
keni
6120c3dd0b can we commit across directories? src/detect.c and util/makedefs.c 2011-12-29 23:29:43 +00:00
nethack.rankin
eaf3819bc2 expanded #terrain command (trunk only; 2nd try...)
Change the post-3.4.3 extended command "#terrain" so that it can be
used in normal play rather than just in wizard mode.  It's inspired by
a command in 'crawl' that lets you view the bare map without monsters,
objects, and traps so that you can see the floor at locations which have
been covered up by those things.

normal play
      redraw map to show the known portion of it without displaying
   monsters, objects, or traps; after player responds to --More--, the
   map returns to normal.

explore mode
      put up a menu so player can choose between the known portion of
   the map as above or the full map.  If the level isn't fully explored
   then the latter provides information to the player that he hasn't
   earned yet, but the _hero_ doesn't learn anything and after --More--
   the map reverts to what it showed before.  (In other words, unlike
   with magic mapping, the unknown portion doesn't become known.)

wizard mode
      put up a menu so player can choose among four alternatives:  the
   two above, the text representation of the map's internal levl[][].typ
   codes, or a legend explaining those codes.  (Originally, I wanted to
   be able to toggle back and forth between these last two, but looking
   at one and dismissing it, then reissuing #terrain to look at the
   other is much simpler to implement and is good enough.)
2011-12-05 09:39:19 +00:00
nethack.rankin
e055b2820e hangup vs u.uinwater again (trunk only)
Redo the fix that prevents hangup from putting hero on top of water
if it occurs during magic mapping or object/gold/trap detection.  Instead
of copying u.uinwater into another field in struct u so that it can be
reset during restore, copy it into a new field in struct iflags and reset
it during save so that no fixup upon restore is needed.
2011-11-30 18:52:28 +00:00
nethack.rankin
e072ebd3fa mapping/detection hangup handling (trunk only)
Noticed while looking at the magic mapping code:  u.uinwater is
cleared during mapping and detection so that map updating isn't suppressed
due to underwater vision restrictions, and it was possible for a hangup
save to take place before that state field was reset.  After restore, the
hero would end up standing on water, then fall in on the next turn.  This
saves it in struct `u' rather than in a local variable, so that the stored
value is accessible during restore.

     The u.uburied flag was being ignored, but presumeably it would also
impose severe vision restrictions if it ever gets implemented, so it is
now saved, temporarily cleared, and restored along with u.uinwater during
monster/object/gold/trap detection and magic mapping.
2011-11-29 03:28:07 +00:00
nethack.rankin
fdf037a89f autosearch while blind (trunk only)
From a bug report, he was running blind while wielding scissors--
I mean Excalibur--and stopped for no apparent reason.  The autosearch
capability conferred by that artifact (also by ring of searching, or for
some roles or races once they reach a particular level) had found a secret
door and changed it into a normal door, but since he couldn't see at the
time his map display wasn't updated to show that.  This makes the map show
such things even if blind, and also gives a message that the search found
something.
2011-11-24 00:13:24 +00:00
nethack.rankin
84f02bd336 intrinsics revamp (trunk only)
Simplify many of the intrinsics macros from
  #define xxx_resistance (Hxxx || Exxx || resists_xxx(&youmonst))
down to
  #define xxx_resistance (Hxxx || Exxx)
by setting or clearing an extra bit in Hxxx during polymorph so that the
resists_xxx() check becomes implicit.

     Unfornately there were lots of places in the code that treat Hxxx
as a timeout number--primarily for Stunned, Confused, and Hallucination;
Stunned happens to be one of the revised macros--rather than as a bit
mask, so this patch needed a lot more changes than originally antipated.
2011-10-01 00:25:57 +00:00
nethack.rankin
d592b9c4ae sokoban completion (trunk only)
Something I've had in mind for a long time and finally gotten around
to implementing:  when you fill in the last pit or hole of a sokoban level,
it's considered to be completed so luck penalties for unsokobanish things
(breaking a boulder, dropping everything and squeezing onto a boulder's
spot, reading a scroll of earth) stop being assessed and most Sokoban-
specific movement restrictions (against pushing boulders diagonally,
squeezing diagonally between boulders, floating over a pit or hole without
falling in, digging of new holes by monsters) are lifted.  Teleporting,
level teleporting, and phasing through walls are still prohibited when in
the sokoban branch of the dungeon.  (Keeping the non-phasing one in place
prevents taking a shortcut to the final prize in order to bypass the
treasure zoo monsters.)

     This adds level.flags.sokoban_rules, defines Sokoban macro to access
it, and replaces most In_sokoban(&u.uz) tests to check it instead.  It
gets set when a sokoban level is pre-mapped at the end of level creation,
and if it is set then whenever a trap is deleted, the flag gets cleared
if there are no more pits or holes present on the level.
2011-08-30 22:13:27 +00:00
keni
4eabcee787 Add RCS version lines 2009-05-06 10:50:32 +00:00
nethack.rankin
e2eba2ae9a endgame portal detection (trunk only)
In the newsgroup about three weeks ago someone described trying to
use the Bell of Opening to find the magic portal on the Plane of Water
and not succeeding.  It's supposed to work like a wand of secret door
detection to mark nearby traps as known.  And does, but it turns out
that the wand wasn't working as expected there either.  They both require
line of sight, and since the water outside of the bubbles blocks that
they only found the portal if it was within the same bubble as the hero.
(Clouds on the Plane of Air posed a similar problem, although monster
activity usually reveals the portal on that level so this wasn't much of
an issue there.)  Since the detection magic doesn't require the hero to
see the traps--wand and Bell both work while blind--this patch overrides
the line of sight requirement on the Planes of Water and Air.  As long as
hero is within the detection magic's range, the portals on those levels
will get marked as having been seen and when the hero gets into the right
bubble or out of the clouds the portal traps will be shown on the map.

     The line-of-sight override code is simple-minded and lets players
find traps through boulders when/if those are present (but the found
traps won't be seen yet since vision still controls the map display).
Also, it assumes that only water/air/cloud terrain is present so could
potentially yield strange results if any other terrain gets introduced on
either of those two levels.
2007-11-25 23:03:47 +00:00
nethack.rankin
fb8261769a locking/unlocking vs traps (trunk only)
About six weeks back, <email deleted> suggested that
bear traps should deal out damage and be escapable via opening magic.
This doesn't do anything about the first part, but it does allow opening
magic (wand of opening, spell of knock, blessed Bell of Opening) to get
the hero out of bear traps and webs if zapped either at self or downwards.
Zaps across the floor which hit monsters will free them from such traps,
with a chance that releasing a hostile monster will pacify it (using
existing #untrap code).  Conversely, if you are at a web or bear trap
location but not currently trapped, closing magic (wand of locking, spell
of wizard lock) will cause the trap to activate; you may or may not become
trapped.  Likewise for zaps at monsters who are at such locations, which
is treated as an attack.

     Opening magic which hits the hero or a monster located at a trap door
or falling rock trap spot will cause the trap to activate; as above, it's
an attack for the monster case.  At the moment, zapping opening magic
downwards at the hero's location (but not zapping at self or at monsters)
will also cause holes, pits, and spiked pits to activate.  (Zapping down
triggers falling rock traps and zapping up doesn't; that'll need to be
changed.)  Zapping opening down while mounted will untrap, if stuck in a
web or bear trap, and will trap, for the falling cases, in precedence over
releasing the saddle and forcibly dismounting.  The latter still occurs
when there is no applicable trap present though.

     Zapping locking magic downwards at a hole location will convert the
hole into a trap door.  Zapping breaking magic (wand of striking, spell of
force bolt) down at a trap door location will convert the trap door into a
hole.  (Neither conversion currently alters the made-by-you flag for the
trap.  However, the rationalization that distinctive style is what makes
made-by-you recognizable suggests that conversion should clear the flag.)
Lastly, the old behavior (which pre-dated bare holes) of destroying trap
doors when zapping down at them with locking magic has been removed--it
didn't seem to fit very well with the new cases.  I'm starting to have
second thoughts about that but am going to commit this before discovery of
some more niggling details drags it out for another six weeks.
2006-10-01 05:24:28 +00:00
nethack.allison
253bf359af drawing overhaul (trunk only)
This is an overhaul to the NetHack drawing mechanism.

- eliminates the need to have separate lists in drawing.c
for the things and their associated explanations by grouping
those thing together on the same inializer in a struct.

- replaces all of these options: IBMgraphics, DECgraphics, MACgraphics,
graphics, monsters, objects, boulder, traps, effects

- drawing.c contains only the set of NetHack standard symbols for
the main game and a set of NetHack standard symbols for the
roguelevel.

- introduces a symbols file that contains named sets of
symbols that can be loaded at run time making it extensible
for situations like multinational code pages like those reported
by <Someone>, without hardcoding additional sets into the game code.

- symbols file uses names for the symbols, so offsets will not break
when new things are introduced into the game, the way the older
config file uchar load routines did.

- symbols file only contains exceptions to the standard NetHack
set, not entire sets so they are much less verbose than all of
the g_FILLER() entries that were previously in drawing.c

- 'symset' and 'roguesymset' config file options for
preselecting a symbol set from the file called 'symbols'
at startup time. The name of the symbols file is not under the
users control, only the symbol set name desired from within the
symbols file is.

- 'symset' config file option loads a desired symbol set for
everything but the rogue level.

- 'roguesymset' config file option loads a desired symbol set
for the rogue level.

- 'SYMBOLS' config file option allows the user to specify replacement
symbols on a per symbol basis. You can specify as many or as few symbols
as you wish. The symbols are identified by a name:value pair, and line
continuation is supported. Multiple symbol assignments can be made on
the same line if each name:value pair is separated by a comma.
For example:
SYMBOLS = S_bars:\xf0, S_tree: \xf1, S_room:\xfa \
	  S_fountain:\xf4 \
	  S_boulder:0

- 'symbols' file has the following structure:
start: DECgraphics
	Handling: DEC
	S_vwall: \xf8			# meta-x, vertical rule
	S_hwall: \xf1			# meta-q, horizontal rule
finish
start: IBMgraphics
	Handling: IBM
	S_vwall: \xb3			# meta-3, vertical rule
	S_hwall: \xc4			# meta-D, horizontal rule
finish

- 'symbols' file added to the source tree in the dat directory

- Port Makefiles/scripts will need to be adjusted to move them into
HACKDIR destination
2006-09-21 01:46:15 +00:00
nethack.allison
1fcbfd85c9 additonal oextra care
Be deliberately careful with copies taken of
oextra pointers and clear the pointer if it
truly is a redundant copy that will become
invalid if/when the original holder is deallocated.
2006-05-13 20:19:06 +00:00
nethack.allison
a732a87ee2 tame hidden monster message
<email deleted> wrote:
> * Searching next to a tame hidden monster gives the message "You find a
> <kraken>." It should be "your <kraken>."

While I don't consider this a bug, the change seems appropriate.
2006-02-24 02:54:58 +00:00
nethack.allison
af91e757f5 build clean-up (trunk only)
../src/detect.c(715) : warning C4101: 'obj' : unreferenced local variable
2005-11-26 04:00:22 +00:00
nethack.rankin
bdf85bfa84 magically detecting chest traps (trunk only)
(Nothing to do with the recent suggestion that the search command be
extended to find traps on adjacent containers.)  When a crystal ball or
confused/cursed gold detection performed trap detection, it found trapped
chests on the floor but not any which were buried or carried by the hero
or by monsters.  This fixes that.

     Still needs fixing?  The message "your toes stop itching" when the
only trap on the level is at the hero's current location is pretty strange
if that trap happens to be carried rather than stood over, but I don't
know what to change it to.  I guess it's always been strange if there was
a ceiling trap rather than a floor trap involved.
2005-11-17 04:51:13 +00:00
nethack.rankin
ebc20fa560 fix #M108 - seeing while asleep
I think being asleep or unconscious ought to override vision the way
that being blinded does, but that's a more ambitious change than I care to
tackle.  This replaces You("see ...") with You_see("..."), comparable to
You_hear().  It catches the reported door case and several variations of
light sources burning out while on the floor rather than in inventory, but
it probably misses some other cases.  zap_over_floor() in particular is
highly suspect.
2005-06-23 03:48:14 +00:00
nethack.allison
5fa8f73af8 housekeeping: mark trunk sources 3.5 (src) 2005-01-02 16:44:46 +00:00
nethack.allison
cdbe3b1d39 U719: grayswandir and exploding black lights
<email deleted> wrote:
> When wielding greyswander and a black light explodes, the
> message is still "You are freaked by a blast of kaleidoscopic
> light!" giving no indication that you are immune to
> hallucination. Maybe something like "You see a blast of color,
> but seem unaffected" would be more appropriate?

return the changed status back to the caller from
make_hallucinated().
2003-10-29 13:03:23 +00:00
nethack.allison
9b9f13aa13 Half_physical_damage 07
It is not physical damage if:
1. it already qualifies for some other special type of damage
   for which a special resistance already exists in the game
   including: cold, fire, shock, and acid. Note that fire is
   extended to include all forms of burning, even boiling water
   since that is already dealt with by fire resistance, and in
   most or all cases is caused by fire.
2. it doesn't leave a mark. Marks include destruction of, or
   damage to, an internal organ (including the brain),
   lacerations, bruises, crushed body parts, bleeding.

Current exceptions to the rule (already existing):
- holy water burning chaotic ("it burns like acid") is physical damage.
- unholy water burning lawful is physical damage.
2003-10-22 23:05:24 +00:00
nethack.allison
d3316e0436 Half_physical_damage 04
- [fixed in trunk] iron-ball-pulling yourself out of a bear trap
- [fixed in trunk] Hitting your foot with a bullwhip
- [fixed in trunk] Hooking yourself with a grappling hook
- [fixed in trunk] Being thwacked by an iron ball chained to you
- [fixed in trunk] A crystal ball exploding on being applied
- [fixed in trunk] Hitting yourself with your pick-axe
- [fixed in trunk] Molten lava (entering or being splashed)
- [fixed in trunk] Getting squished in a pit under a boulder
- [fixed in trunk] Kicking something that makes you go "Ouch!"
2003-10-21 18:49:57 +00:00
nethack.allison
98678f6037 more buglist crystal ball detection
<Someone> wrote:
- If I set the 'boulder' option, shouldn't I be able to give the
  symbol I define for them at the crystal ball "object or
  monster symbol" prompt and have it work?
- Could ']' be added as a synonym for 'm', as with genocide?
- set boulder symbol to '3'; use '/' or ';' to examine a
  boulder. Result is "unknown creature causing you disquiet
  co-located with a boulder" even though there's no warning
  glyph '3' there.
2003-10-20 03:46:43 +00:00
nethack.allison
2b1313a93c crystal balls and space key
Another buglist entry.

<Someone> wrote:
- There appears to be no way to detect ghosts-and-shades; the
  space key just "Never mind"s. (Not that they'd be particularly
  visible on the resulting screen under ASCII, unless you've
  changed the 'monsters' option.)

Allow space; display results in inverse using detected_mon_to_glyph()
2003-10-19 19:49:43 +00:00
nethack.allison
db2620d481 crystal balls and '~'
<Someone> wrote:
- You currently appear to be able to specify '~' and have it try
  to detect monsters (though it won't detect any long worms)

Show the entire worm when specifying either '~' or 'w' now.
2003-10-19 19:07:33 +00:00
kmhugo
e1f5ddd820 sound cleanup
+ Separate the two uses of flags.soundok.
+ Player-settable option is now called "acoustics".
+ Deafness is now handled as a full-fledged attribute.
+ Check for deafness in You_hear(), rather than caller.
+ Check for deafness in caller, rather than verbalize(),
  because gods can speak to characters in spite of deafness.
+ Since changes are being made to prop.h, reorder it to the
  same order as youprop.h and enlightenment.

There are still some extraneous checks and missing checks
for deafness, which will be followed up in a future patch.

Because of the size of this patch and its savefile incompatibilities,
it is only being applied to the trunk code.  Portions of this patch
were written by Michael Allison.
2003-09-28 03:42:50 +00:00
nethack.rankin
f5b1090fdc fix B07001 - crystal ball bug
Applying a cursed crystal ball has a chance of detroying it; the
code to use up a charge wasn't taking that into account.
2003-08-14 02:25:36 +00:00
cohrs
dce0e0cb33 use Is_box
While inspecting some code, I noticed that detect.c wasn't using Is_box in
some places it should have been.
2003-05-25 02:35:16 +00:00
nethack.rankin
9a39064b8f more perm_invent handling
Keep permanent inventory window up to date when using charged items.
Also a status line bit for the #tip command.
2003-05-24 04:07:14 +00:00
nethack.rankin
ba8d740500 treasure detection
Expert and skilled detect treasure was changed to behave like
blessed object detection in 3.3.1, but it didn't work as intended.

> Subject: [patch] skilled detect treasure doesn't detect object types
> <email deleted>
> Date: 13 Sep 2002 09:58:41 -0400
> <email deleted>
>
> It looks like the detect treasure spell when cast with skilled or expert
> ability in divination is supposed to detect the type of an object ("a
> scroll of identify" rather than "a scroll"), but this doesn't actually
> work in 3.4.0.  Here is a fix.
2002-09-14 13:00:20 +00:00
nethack.allison
fc319a4be0 string constants
<Someone> wrote:
> Linux, Redhat 7.1 nethack 3.4.0
>
>Please see attached patch file.
>
>I'm attempting to move more stuff into the "read-only" area, in
>preparation for a port to another OS.
2002-08-20 08:05:20 +00:00
nethack.allison
40940991bb change GOLD_CLASS to COIN_CLASS 2002-07-08 23:25:53 +00:00
cohrs
6fc7d44345 better trap searching behavior
- if a trap is hidden by clutter, cls() before delay, remove windowport
specific behavior, makes trap more obvious in all cases
2002-03-18 07:30:48 +00:00
nethack.allison
678debd7a0 <Someone>'s trap detection complaint
To address <Someone>'s complaint, make the cluttered
trap detection tty only. Also put in some dead
code that could make it work elsewhere in future
when there is time to test.
2002-03-17 16:03:29 +00:00
jwalz
3e6e2ff7c6 Lint part 2, mostly parameters. 2002-03-10 04:05:59 +00:00
cohrs
7f5285b1ee converting SCORR to CORR unblocks vision
- fix several cases where a point was unblocked by unblock_point wasn't
 called, directly or indirectly
2002-02-25 02:43:50 +00:00
cohrs
4497d8e4e3 pline missing punctuation bits 2002-02-13 06:52:46 +00:00
nethack.allison
77ba02a2b6 Fix conflict with <Someone>'s warning fix that I messed up on. 2002-02-10 19:54:33 +00:00
nethack.allison
677b3943dd fix problem with earlier change for gold detection. 2002-02-10 19:47:09 +00:00
cohrs
e565276030 takes your corpse
use corpse_xname to generate corpse names as a result of yname() and
also as used in the steal code.  Now messages read "your XXX corpse".
2002-02-10 18:58:12 +00:00
nethack.allison
27b76ffe47 B5008 <Someone> feeling "materially poor" while rich
Shouldn't gold detection pay attention to my inventory? "You feel
	materially poor" sounds extremely odd if I've got 50,000 zorkmids
	stuffed in my backpack.
2002-02-10 16:21:17 +00:00
cohrs
cf37a7bac0 verb agreement
add and use new APIs, Tobjnam, otense and vtense, is_plural
to determine tense/form of verbs and a few pronouns as well
2002-02-09 00:16:35 +00:00
nethack.allison
06528d1002 3.3.2 to 3.4.0 2002-02-04 16:06:00 +00:00
nethack.allison
2e030b4bf9 force tingling nose
<Someone> wrote:
>I also note that it's weird for your nose to stop tingling and your
>sense of smell to return to normal, if flags.beginner prevented your
>realising that your nose was tingling in the first place.
2002-02-04 10:38:20 +00:00
arromdee
5182c9110e secret door detection
There was an old bug where a wand of secret door detection was identified
even though it didn't find anything.

It was unconfirmed, but I had no trouble confirming it.  It happened because
the wand worked on squares that were couldsee() but which (because they weren't
lit) you couldn't actually see.  The wand would detect the secret corridor and
then not display it because it was out of sight.

I fixed it to display the corridor, in sight or not (I could have had it not
detect anything, but the wand is fairly weak already.)
2002-01-26 02:26:28 +00:00
warwick
53117c71cb Lenses don't help when you're blind.
This is a tweak to <Someone>'s lens patch.
2002-01-18 01:38:35 +00:00
arromdee
28975c6682 lenses
This adds <Someone>'s lens patch.

This is probably it for me adding in any more user-contributed patches for
3.3.2 (except maybe coin flipping; does anyone object to it?)

--Ken A.
2002-01-18 01:23:58 +00:00