Commit Graph

926 Commits

Author SHA1 Message Date
nethack.rankin
f1cfafb89b rnl() tweaks
Eliminate two minor anomalies in the behavior of the rnl() function
which returns a random number that is modified by the hero's Luck attribute.
Integer division by 3 on requests for small ranges and the fact that the
chance of making a modification was lower for good luck than for bad luck
meant that highest luck did not produce best chance to avoid worst result.

     The actual effect on game play is sure to have been negligible.  More
troubling is that the program has several rnl(3) and rnl(4) calls.  These
practically guarantee a result of 0 when the hero has maximum luck.  The
rnl() function really shouldn't be used for such tiny ranges (unless the
actual intent is that high level characters are expected to almost always
have the 0 outcome...).
2004-08-28 01:54:20 +00:00
nethack.allison
31bf37ee7c ensure that a sleeping steed doesn't answer you 2004-08-23 22:54:02 +00:00
nethack.allison
d84ad3ec3c rolling boulder not in bones files
<Someone> Cced from rgrn:
  <email deleted> (<Someone>) writes:
  [killed by a boulder trap, left bones]

  > Then I realized... there's no boulder.  Did the boulder disappear
  > because I died from the attack, thus bypassing the code that moves the
  > boulder to its intended destination?  Did the creation of the bones
  > file destroy the boulder?  Do boulder traps sometimes get
  > "deactivated" when bones files are loaded?

  The first of these. If you look at launch_obj(), there's an
  obj_extract_self() early on, then all the tracking its trajectory,
  then a place_object() when it comes to rest; since the thitu() call
  kills you during the trajectory part, the boulder never gets re-placed
  onto the map. This is, I think, a bug (and one that will apply to any
  monster-thrown object that kills you, as well); reported to the
  DevTeam.
2004-08-23 16:57:59 +00:00
nethack.rankin
10eea7710d killing pets by displacing them into traps
A user pointed out that you lose pacifism conduct if you kill your
pet by displacing it into a trap but you don't gain any experience in
the process.  Make this consistent with killing monsters in other ways:
if you get blamed for it then you should also get credit for it.

     Probably minliquid() and mintrap() should take another argument so
they can call killed() instead of mondead() when necessary, but I didn't
go to that much effort....
2004-08-17 01:29:47 +00:00
nethack.rankin
e16edb7fb7 monsters throwing greased objects
Make the chance for thrown object to slip or shot object to misfire
be the same for monsters as it is for the hero.
2004-08-17 00:40:35 +00:00
cohrs
7b42eff8d1 C340-18 redux
Fix the test of otrapped in ohitmon pointed out by <Someone> that was causing
my previous fix to do the exact opposite of the intended behavior.
2004-08-07 16:06:58 +00:00
nethack.rankin
2ad0b6ea0c fractured rock descriptions
From a bug report:  fracture_rock() was unintentionally propagating
the boulder or statue's dknown flag to the resulting rocks, producing a
trivial but noticeable difference in description of "rock" vs "stone" if
the source object had been seen up close prior to being broken and the
rocks are then examined remotely or while blind.

     The curse/bless state is propagating too, but this seems reasonable
so I've left it alone.
2004-08-03 03:40:08 +00:00
nethack.rankin
fa345979d4 fix "dropping Medusa's corpse down the stairs"
User reported the following incorrect feedback:
	You drop Medusa's corpse.  corpse falls down the stairs.
and apparently thought that the problem was a glitch in the middle of the
sentence; the actual problem is that the second sentence lacks its start.

     This fix isn't perfect.  You'll now get
	Medusa's corpse falls down the stairs.
for the second sentence, but
	The Oracle corpse falls down the stairs.
when dealing with a unique monster who doesn't have a personal name.
Either form seems acceptable to me, but mixing them appears inconsistent.

     Probably all the uses of corpse_xname() (and its callers back up the
chain cxname(), aobjnam(), yobjnam()) need to be reviewed for usage.  I
don't have the energy for that.
2004-08-03 02:37:44 +00:00
nethack.rankin
c91ac3274c fix U1079 - loss of water walking over lava
Fix the reported problem of being able to safely stand on lava after
taking off fireproofed water walking boots.  The situation was more wide-
spread than that; the same thing happened when non-fireproofed boots were
burned off while walking over the lava in the first place.  Now you'll
fall in and end up getting stuck (you have to have fire resistance for any
of this to happen and that resistance makes falling in be survivable).
2004-07-01 01:28:18 +00:00
nethack.rankin
74c5d3f004 hostile djinni from potion
Fix the situation <Someone> reported where the "You disturbed me, fool!"
result when releasing a djinni from a cloudy potion sometimes produced a
peaceful djinni for neutrals due to the usual randomness in how monsters
react to characters of the same alignment.  Explicitly force it to be
hostile for that outcome.

     Also, for the "it's about time" result, suppress the "It vanishes"
message when the character doesn't see the djinni depart.
2004-06-29 02:06:36 +00:00
nethack.rankin
a0fa995471 shop repair messages
Fix the situation <Someone> reported where a shopkeeper removing a trap
from the shop doorway yielded "you see the shop door reappear" instead of
reporting about the trap.  It made sense if the door had been destroyed
but not when intact.

     For trunk only, try to fix up the shop repair message situation when
multiple repairs occur at the same time.  Some things were being treated
as mutually exclusive when they aren't.  This part needs more testing,
probably using a debugger to force multiple pending repairs to all occur
on the same turn.  At any rate, using wizard mode and hoping for some
simultaneous activity was ineffective.
2004-06-24 03:13:26 +00:00
nethack.allison
9b3521e503 vampires now shapeshift [trunk only]
- can shift into fog clouds, vampire bats, and vampire lords into wolves
- after being "killed" in shifted form, they transform back rather than get
  destroyed, and you must take them on in vampire form to defeat them
- can deliberately shift into fog clouds to pass under closed doors
2004-06-15 11:52:04 +00:00
nethack.allison
c8ef9338f0 cham changes (trunk only)
This is a foundation patch for patches to follow.
- use a full short index for mon->cham field.
- The current system of providing CHAM_XXX values
  was limited to the 3 bits allocated in the bitfield and invalidated
  save/bones if the field was expanded.
- The current system didn't provide an easy backwards  change
  if multiple monster types wanted to use the bit, there was a one
  to one mapping:  For instance, if you wanted a CHAM_VAMPIRE,
  and you wanted vampires, vampire lords, and Vlad to use it, you
  would have to have CHAM_VAMPIRE, CHAM_VAMPIRE_LORD,
  and CHAM_VLAD defined to achieve that with the one-to-one backward
  mapping.
- This new way just uses the mon[] index in the mon->cham field and
  eliminates the need for CHAM_XXX  (CHAM_ORDINARY is still used).
- no longer requires the cham_to_pm mappings
2004-06-15 11:38:32 +00:00
nethack.allison
87507aed42 water flow into pits (trunk only)
water should flow into chasms from Drum of Earthquake.
Exploding wands of digging had been handled in the trunk earlier.
2004-06-08 11:06:44 +00:00
cohrs
baf8d3f416 invisible troll revives and can appear visible
Play a character without see invisible. Wear speed boots. Generate a troll.
Zap it with a wand of make invisible. Kill it. Stand on the same square and
wait for it to rise from the dead. It will appear as a 'T'. Hitting it then
produces the normal "Wait, there's something here you can't see!"
[ incorporate slashem-Bugs-951439 fix ]
2004-06-07 19:07:55 +00:00
nethack.allison
fd9db92705 skipping stones (trunk only)
Allow a chance of rocks thrown over water to skip
in such a way that they could bounce right over a water
creature.
2004-06-06 18:37:46 +00:00
nethack.allison
93cdf2b7f7 potion of poison
<Someone> wrote:
> It is a little odd that, if you are poison resistant,
> potions of sickness can kill you if and only if they
> are blessed.
2004-06-05 22:16:00 +00:00
nethack.allison
abe3d28a37 djinn/ghosts from potions
<Someone> wrote:
>It seems silly to have two flags being used for counting djinn and
>ghosts, now that there's mvitals.born...

This does not break save and bones compatibility in the 3.4.x branch,
it changes the code, but leaves the obsolete fields in flags.
2004-06-05 18:19:27 +00:00
nethack.allison
ce24d4ba09 fire traps on ice
"<Someone>" on January 8, 2004, wrote:
> A Valkyrie on the Quest home level, wearing an
> amulet of magical breathing, enters a fire trap
> out on the ice:
>
>> A tower of flame erupts from the ice!
>> The ice crackles and melts.
>> You fall into the water.  You sink like a rock.
>> But you aren't drowning.  You touch bottom.
>> A cascade of steamy bubbles erupts from the bottom!
>
>Should the trap really be being triggered twice, once on ice and
>once underwater, when I've only moved onto the location once?
2004-06-05 15:50:48 +00:00
nethack.allison
6085c8b658 hearing a boulder fall
As From a bug report, if you couldn't see a rolling boulder
fall into a pit, you only heard the sound if you were blind.
Also fixes the article used in the message.
2004-06-05 13:56:29 +00:00
nethack.allison
39d3249ed8 marilith thrusts
<Someone> reported:
>> The marilith wields 5 daggers!
>> The marilith thrusts her dagger.  The marilith misses.
> Shouldn't she thrust her daggerS?

Change to:
"The marilith thrusts one of her daggers." in that case.
2004-06-05 13:38:15 +00:00
nethack.allison
7de00a45be C342-46: cleric cast lightning
Get rid of an old known buglist entry C342-46
> Cleric cast lightning doesn't blind as other lightning does
2004-06-05 05:22:40 +00:00
nethack.rankin
3e6e8b0582 "offering" lookup
Fix the situation <Someone> reported where requesting information about
the not too unlikely word "offering" would match the "ring" quote.  I didn't
add a new quote for it but made "offer[ing]" and "sacrific[e|ing]" match the
existing altar quote.  I also added one small quote I've had laying around
for a while.
2004-06-04 23:51:20 +00:00
nethack.allison
7c691dfb8b fixes3x.x 2004-06-04 04:24:18 +00:00
nethack.allison
13e9e30acc #U986: <email deleted> wrote
on Sunday, April 4, 2004 at 20:27:06:
> On occassion when restoring a game where the
> character is wielding Sting, floor glyphs
> will show up before the --more-- prompt.
> These floor glyphs usually correspond to the
> location of monsters (sometimes they are just
> cavern features such as walls).  Some of these
> floor glyphs are not in the character's line
> of sight upon restoring.

Also in this patch is a restore of Sting's ability
to glow blue.
2004-06-04 03:56:27 +00:00
nethack.allison
6644c4086f polywarn (trunk only)
This patch increments editlevel making existing save and bones files useless.

Add polywarn() code to grant the ability to detect certain monster
types while polymorphed into other specific monster types.

If you polymorph into a vampire or vampire lord, you are able to
sense humans.

And just for fun, if you polymorph into a purple worm, you are able to
sense shriekers :-)
2004-06-03 04:20:13 +00:00
nethack.allison
e523b6accc enlightenment
Give more information about your attributes in debug mode
via Control-X.

I'd like to see some way of getting bits of this info to the
player during the game (from the Oracle or something),
but this patch keeps it limited to debug mode.
2004-06-01 05:22:28 +00:00
cohrs
13abd42d6a U979 - mimic mimicking a boulder on Sokobon hole
On mazelike levels, mimics will mimic either boulders or statues (of giant
ants, as it turns out).  However, it does not make sense to mimic a boulder
on a hole or even a pit, since boulders would typically fall in.  Also,
statues are not typical objects in Sokoban.  So, skip statue special case
in Sokoban and always avoid the forced emulation of a boulder when on a
trap location outside a room.  This is a bit drastic, but I couldn't think of
an argument for adding the code to do this only for pits, holes, et al,
which are the most likely traps outside rooms anyway.
2004-05-24 22:07:18 +00:00
nethack.allison
f92ac0c25c CE patch (from <Someone>)
Disable processing of double-click messages if the first click
causes map to scroll. The problem is that if the first click scrolls
the map the second click is going to scroll it even further
(before it is redrawn) which is very confusing for the user.
2004-05-24 14:21:15 +00:00
cohrs
1715ce50b9 Wrong weight of corpses on special levels
Incorporate a fix from <Someone> related to slashem-Bugs-916544.  The
weight was not recalcuated after changing the corpsenm.
2004-05-22 18:23:59 +00:00
nethack.rankin
9620eefd50 shapechanger hit points (trunk only)
Try to fix the report of a doppelganger (created from using stone-
to-flesh on a fake statue of Demogorgon) having 1700 hit points after
reverting to its native form.  The problem was due to the special monster
level of Demogorgon rather than anything to do with shape changers; the
actual bug was use of `mdat->mlevel' where it should have been using
`mtmp->data->mlevel'.  But the whole section of code was rather suspect
since it didn't attempt to handle other types of monsters (dragons, golems,
elementals) which have non-standard hit points, so I knocked some out.
Monsters who have gained or lost levels prior to changing form will no
longer carry that adjustment along; the new form will always be a brand
new one of its type.  However, if the old form is injured at the time of
change, the new form will be too (same as before).
2004-05-22 03:24:23 +00:00
cohrs
1fbd886068 U1047 - mimics mimicking closed doors on the rogue level
Since the rogue level does not have closed doors, mimicking one there makes
no sense.  Similar to what wand of locking does there, make mimics that end
up there mimic a wall instead of a door.
2004-05-22 01:10:01 +00:00
cohrs
c6d488fb8d U1041 - monster hidden under a corpse not displayed immediately when it rots
There was already code to ensure that if a hidden monster moved, it would
no longer be hidden.  However, if the monster is asleep or whatever under
a rotting corpse, when the corpse rotted away, the monster would not
immediately become detected.  Add a check to the rot code before the newsym.
2004-05-21 21:33:19 +00:00
cohrs
0414c09c7a U917 - floating above unknown stairs
Attempting to go > while blind and floating over unknown stairs/ladder
would refer to the stairs in the "high above" message (however, the
stairs/ladder remained unidentified on the map).  Change this case so
it only refers to stairs/ladder if that's what the hero remembers on the map.
2004-05-21 21:20:16 +00:00
nethack.allison
3283bcdb8b U1039 passive() stoning check tweak
>If you hit a cockatrice with a weapon that immediately breaks
>(like a potion, mirror, or cockatrice egg) you get stoned,

Add a parameter to passive() to make it possible to pass
additional information that indicates that the weapon was
there at the start of the turn, but destroyed during the turn.
2004-05-09 16:58:56 +00:00
nethack.rankin
c25746f0bf cursed destroy armor
Fix the bug From a bug report.  Subsequently removing
the item caused those attributes to be returned to an incorrect value
which was higher than the character started out with.
2004-05-08 03:36:37 +00:00
nethack.allison
6dc1bbd544 giant carrying boulder dies while trapped in a pit (trunk only)
<Someone> wrote:
> "You kill the invisible storm giant.  The boulder fills a pit."
> [...] why did I find the corpse *lying on* and not *buried in* the
> former pit?

Ensure that the corpse ends up buried in that case.
2004-04-11 18:39:14 +00:00
nethack.allison
1194454b2f lifting vs removing
<Someone> wrote:
> You have much trouble removing u - a helmet.
> You have much trouble lifting a plate mail. Continue? [ynq] (q)
> You have much trouble removing R - a plate mail.
> You have much trouble removing N - a leather cloak.
> Why am I told that I have trouble "lifting" a plate mail?

1. Add strsubst() routine to hacklib to replace a word or phrase in a string in place.
2. Correct the inconsistency reported.
2004-04-11 15:34:04 +00:00
cohrs
0e6afc5f34 nethack man page followup
fix a spelling mistake the spell checker didn't catch
2004-03-27 05:07:17 +00:00
cohrs
019837d03f U897: kicking while in the air
If you kick something while in the air (i.e. on the Air level or while
in a bubble on the water level), 1) greased objects were treated specially
and 2) messages were given about the object sliding.
- add checks for kicking in the air, and always increased distance a bit
(I didn't add any checks to deal with the transition from air to water or
visa versa)
- don't set the flag that causes the "slides" message in these cases either
2004-03-26 19:26:37 +00:00
cohrs
607f63e5fd score wrapping band-aid
This patch simply keeps the score from wrapping by capping it at LONG_MAX.
If someone wants to change the score to be unsigned, some changes will
need to be made to tweak this code (and use ULONG_MAX instead).
I'm assuming that our platforms all have limits.h.
2004-03-26 18:28:28 +00:00
cohrs
e424ca4ba3 Juiblex' frozen "moat"
<Someone> reported that freezing the swamp on Juiblex' level would result
in message about a frozen moat.  Avoid this by using waterbody_name
to to determine if it's a moat or not.
2004-03-26 18:20:49 +00:00
cohrs
54feb64a0e U944: Tripping over cockatrice corpse does not petrify
added the missing check in slip_or_trip for the case where the hero
is not wearing boots
2004-03-26 18:15:29 +00:00
cohrs
f349b74e0b nethack man page updates
- as requested by ESR, remove the use of parentheses from the usage
summary, it confused some man page conversion tool he has
- updated documentation for the -p option to mention the word "role"
so anyone search for role in the man page will still find it
- removed use of .UC, it is listed as deprecated in all the current man
documentation I could find, when it was even documented at all
- other minor spelling and formatting (hyphenation) changes
2004-03-26 17:23:15 +00:00
cohrs
8e4821a8f2 U172 - documetation vs implemented default for null option
The implemented default is "on", document this.
2004-03-13 01:27:21 +00:00
arromdee
dbf99cab6e blindfold (from r.g.r.n)
Someone suggested that if your vision is only blocked by a blindfold and it's
the blindfold that glows, you should be able to see it.
2004-03-12 04:04:51 +00:00
nethack.allison
1e8c99bcc0 thrown potions can sometimes hit saddle 2004-01-31 14:59:36 +00:00
cohrs
5d32958e04 dipping acid in a fountain
<Someone> reported that dipping acid in a fountain did not always destroy
the acid.  It might be best to have get_wet call useup in this case, but
that would require more work.
2004-01-28 17:49:21 +00:00
cohrs
e84bea2009 fleeing mimics
Reported to the list back in November: scaring a mimicing mimic will
produce a "turns to flee" message, but the mimic does not unmimic nor
does it flee.  The latter behavior made sense to me as a defense mechanism,
so I changed monflee to avoid printing the message in this case.
2004-01-27 21:10:14 +00:00
cohrs
b661f86e67 U846 - xorns and pits
Change pit behavior to always mark a non-flying poly'd player as trapped in
a pit, even when Passes_walls is set.  This allows players polymorphed into
xorns to descend into pits and pick things up.  In this case, any attempt
to move out of the pit now takes a turn but always succeeds.  Also fixed
a related bug (w/o ID) that a player could become trapped as if in a pit
when leaving xorn form because u.utrap wasn't checked, and simplified the
code since the extra Passes_walls checks are no longer needed.  Also
updated code in sit.c that duplicated uteetering_at_seen_pit.
2004-01-27 19:35:09 +00:00