Commit Graph

1207 Commits

Author SHA1 Message Date
cohrs
f4fbe1a13e buglist: cutting Shopkeeper the long worm
Cutting a shopkeeper poly'd as a long worm would generate strange messages
and could result in a crash.  cutworm didn't deal with all the intricacies
of duplicating a monster.   Fixed by changing cutworm() to use clone_mon()
to do most of its dirty work.  It seems to me that without this change,
cutting a tame long worm could also have similar bad effects.
Other side effects of this change:
- clone_mon now takes x,y coordinates, 0,0 results in previous behavior
- clone_mon no longer always makes cloned monsters tame/peaceful if player
  caused the clone, using the same formula previously in cutworm.  Someone
  else may wish to tweak this for gremlins.
- clone_mon will christen the new mon with the old shopkeeper's name, even
  though clones are never shopkeepers (game can't handle 2 for a shop)
- cutworm can now be called during conflict or pet combat, although I
  added no such calls (yet)
2003-10-23 02:30:46 +00:00
cohrs
cc52b2f533 extra control characters in panic messages
I noticed a few panic messages contained newlines, and one included a naked
carriage return.  panic() adds a newline itself, and also generally ensures
the message will be on a new line (the initial "oops" ensures the message
itself will be on a new lines).  This patch removes the unneeded characters.
2003-10-23 01:30:05 +00:00
cohrs
cc5bea4fbf gcc warning bit 2003-10-23 01:24:20 +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
8467ab1515 Half_physical_damage 06
- [fixed in trunk] Alchemical explosion
- [fixed in trunk] Artifacts' blasting
- [fixed in trunk] Boiling/freezing potions
- [fixed in trunk] Chest/door/tin traps
- [fixed in trunk] Falling rocks/boulders (trap, digging, scroll of earth)
- [fixed in trunk] Mixing water and acid
- [fixed in trunk] Thrown potion (acid)

This is my last patch on this today.
2003-10-22 03:02:11 +00:00
nethack.allison
cdf982e478 Half_physical_damage 05
- [fixed in trunk] Jumping/Newton's-Thirding into something solid
- [fixed in trunk] Being hit by Mjollnir on the return
- [fixed in trunk] Contaminated or boiling water from a sink
- [fixed in trunk] Falling on a sink while levitating
- [fixed in trunk, fire only] Any passive attack
- [fixed in trunk] Zapping yourself with a wand, horn or spell
- [fixed in trunk] Burning (un)holy water
- [fixed in trunk] Thrown potion (bottle)
- [fixed in trunk] Bumping head on ceiling by cursed levitation
- [fixed in trunk] Exploding rings and wands (under all circumstances)
- [fixed in trunk] Stinking cloud damage
- [fixed in trunk] Sitting in a spiked pit, in lava
- [fixed in trunk] Exploding spellbooks
- [fixed in trunk] Falling off or failing to mount a steed
- [fixed in trunk] Falling into a (spiked) pit
- [fixed in trunk] Land mine explosion
- [fixed in trunk] Fire traps
2003-10-21 23:45:11 +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
1369d5831a Half_physical_damage 03
- fish out of water
2003-10-21 17:54:32 +00:00
cohrs
32234b1da4 pets getting "stuck" trying to reach inaccessible objects
Incorporate a slightly modified version of a patch submitted by <Someone> back in June.  The basic problem, which I noticed again this past
weekend, is that pets with a high apport value can still try to get to
objects when there's no path to the object.  The patch extends the
can_reach_food function to be used for any object, renaming it to
can_reach_location, and adds a could_reach_item function for doing point
checks.  This also removes any chance of a pet dragon, for example, eating
something underwater.
2003-10-21 17:16:50 +00:00
nethack.allison
47e1a6873a Half_physical_damage 2
Another batch of missing Half_physical_damage checks
from the list provided by <Someone>:
- Scrolls of fire (!confused)
- Broken wands
- Splattered burning oil from thrown potion
- Dipping a lit lamp into a potion of oil
- Scrolls of fire (confused, didn't bother with non-confused)
- Being caught in a fireball

Adds a macro Maybe_Half_Phys to assist.
2003-10-21 16:47:59 +00:00
cohrs
6c63831645 U704 - creating unappropriate hell random monsters
When changing levels, the state of rndmonst() is reset, causing the monster
choices to be recalculated.  However, the frequency counts for initial
uncommon() monsters were never cleared.  Thus, if the first non-extinct
monster were a hell monster, and you returned to the main dungeon, the hell
monster will remain in the list and could be selected.
2003-10-21 16:20:18 +00:00
nethack.rankin
08639fdda8 some lint cleanup
Using
	gcc -Wall -Wshadow -Wpointer-arith -Wwrite-strings \
	    -Wmissing-braces -Wmissing-prototypes
with an old version of gcc.

mhitu.c: In function `hitmu':
mhitu.c:1176: warning: declaration of `buf' shadows previous local
options.c: In function `special_handling':
options.c:2712: warning: initialization discards `const' from pointer target type
options.c:2745: warning: initialization discards `const' from pointer target typ
trap.c: In function `dotrap':
trap.c:1111: warning: `saddle' might be used uninitialized in this function

The first one is no longer present in the trunk code.  The last one is
bogus as its wishy-washy wording suggests.
2003-10-21 05:59:33 +00:00
cohrs
15bd245d2b old bug report: unchanging iron golem still rehumanizes
Calling rehumanize directly when u.mh > 0 doesn't consider Unchanging
(perhaps it should?).  But, it's probably better to call losehp anyway.
Also, part of a buglist item: .5PD didn't affect rust trap damage on iron golem
2003-10-21 04:28:16 +00:00
cohrs
231b2b16f8 U453 and buglist item - travel command updates
I wrote to the devteam early last week:
> Given my understanding of travel, it's supposed to be somewhat intelligent,
> and "convenient", and should, therefore avoid walking into water, lava,
> traps, or other things that distant movement would avoid, even if you're
> right next it.  Unless...  the travel destination is the "bad" location
> next to you when the travel starts.
To that end...
- add a context (iflags in 3.4.3 to maintain savefile compat) flag to
differenciate the first travel step from later steps, to allow the
detection of the final sentence, above.
- several changes to set/reset the travel1 flag as needed
- add code to findtravelpath to treat the first step specially if it's
the only step, allowing forced travel into a "bad" location
- correct the "don't travel over traps" code, which was getting confused
because hero's starting location was being avoided
- add code to avoid traveling into water and lava, duplicating
checks used for non-travel running
- fix some strange "guess" travel behavior: avoid zigzag paths when there's
a more direct path (even though the number of moves is the same)
- trunk change adds a new DISP_ALL tmp_at type, and uses it in some debug
code for travel, debug changes not added to the 3.4.3 branch
2003-10-21 02:27:43 +00:00
nethack.allison
50f7d77325 another bit
follow-up to previous bit
2003-10-20 18:13:42 +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
4c696884f2 bit
triggered from newsgroup post:
> ""For you , esteemed lady; only 10 for this large shield." k - a
> large shield (unpaid, 10 zorkmids).
> To what level do you want to teleport? 0
> Go to Nowhere. Are you sure? [ynq] (q) y
> You scream in agony as your body begins to warp... You cease to
> exist.
> Die? [yn] (n) y
> Bayburt comes and takes all your possessions."
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> How? He teleported to Nowhere?

Leave no doubt that your possessions did not go with you...
2003-10-19 21:26:07 +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
cohrs
b2ffe64968 breaking migrated objects
Allow migrated objects to break on arrival.  Added code to obj_delivery to
cause this, along with a flag to keep breakage from occurring.  The new
flag isn't used yet, because all the current object migration involve
objects that were moving/dropping.  To help make this change, rloco now
returns whether the object was placed or not, so caller can know if an obj
pointer is still valid or not.

Making the breakage messages for MIGR_NEAR_PLAYER objects show up after the
new level is displayed required some effort (rather than while the old level
was still displayed, which was confusing), due to the needs of goto_level.
- obj_delivery now has 2 passes, one for before player arrives, another after,
allowing the two cases to be treated differently
- goto_level calls obj_delivery twice (run_timers is not called twice,
since the run required before the level is displayed will have already run
any timers on migrating object)
- kill_genocided_monsters now kills eggs on the migrating_objs list too
2003-10-18 22:55:42 +00:00
nethack.allison
4cbdae2d3b > - When polymorphed into a flying creature and being grabbed
> over the water, then polymorphed into a non-flying creature
> leaves you standing on the water (you can kill the creature
> too and you're still on the water when you shouldn't be).
> - When floating from levitation over water and being held and
> removing levitation, you will fall into the water and drown or
> crawl back onto land. If you crawl back onto land you're no
> longer being held.
> The first situation seems to be a bug, the second a possible
> exploit. Both situations don't seem very correct, if you're
> being held it seems you should not fall into the water/lava
> until you are no longer being held. [patch contributed] It
> will keep the hero held up on over the water until released if
> his size is smaller than or equal to the size of the monster
> holding him. [<email deleted>, patch
> supplied]
>

A recent patch ensured that you ended up in the water when
polymorphed.

This patch is less ambitious than <Someone>'s
contribution, where he actually had the monster hold you up.
Perhaps that can be tackled for the trunk later.
2003-10-18 14:59:29 +00:00
nethack.allison
6820b0520b buglist: Vlad can turn to flee and be paralyzed at the same time
This is a cop-out in that it just suppresses the message.
2003-10-18 14:02:25 +00:00
cohrs
36faeeea3c debian bug #23229 - save file permissions
Use fqname buffer 1 for restoring the save file (just like save does when
creating it) so the value won't change out from under the code in unixmain.
- Also moved a tty-specific hack in docompress_file that was causing
the 'y' response to the "keep the save file" prompt to be echoed twice.
2003-10-16 16:18:26 +00:00
nethack.allison
716b2e81f4 from <Someone>'s list: destroy wand of digging
20000922    Water should flow into pits from broken WoD, or DoE.

This addresses the Wand of Digging part, but does not
do anything about Drum of Earthquake.
2003-10-16 02:36:26 +00:00
cohrs
f86341a390 eating amulet of unchanging redux
To keep this from growing beyond this targeted change, make eating an
amulet of unchanging "un"change you, unless you're also wearing one.
2003-10-15 20:07:14 +00:00
cohrs
b964ae9712 trunk compilation followup to iron changes 2003-10-15 16:13:59 +00:00
nethack.allison
913207b30c more patch cleanup 2003-10-15 12:42:07 +00:00
nethack.allison
427ec9f626 dipping non-weapon iron in fountain follow-up patch correction 2003-10-15 12:37:39 +00:00
nethack.allison
46296dfb5c dipping non-weapon iron in fountain
<email deleted> wrote:
> Non-weapon iron items don't appear to rust if #dipped in a fountain.

Fixed. If something does get rusted, its a 50/50 chance whether other
fountain effects take place on the item afterwards.
2003-10-15 12:32:35 +00:00
nethack.allison
dbc6ff00df ice followup
Ensure that we don't start a timer on ice that
the player or a monster didn't create when
zapping existing ice.
2003-10-14 11:06:58 +00:00
nethack.allison
84f667c5a4 ice Warning (trunk only) 2003-10-13 23:54:41 +00:00
nethack.allison
2d99bb91be change the "Stop eating?" question (trunk only)
Opinions expressed:
> I actually like having "yes" consistently mean take a
> dangerous action, and "no" mean the safe route.

Also:
> I would classify the current behavior--where the "safe" answer
> is the opposite of the one for other prompts--as simply a bug.
[...]

change the dreaded "Stop eating?" prompt to "Continue eating?" with default "no"
2003-10-13 02:48:46 +00:00
nethack.allison
bcdb8cf7f9 Vlad won't use digging in his tower
<email deleted> wrote:
> [...] Vlad happened to be generated with a /WoDig and tried to
> make an escape hole during his last few moves. Shouldn't he
> know, that the floor in his own tower is undigable? So he lost
> valuable time with a pretty senseless action...
2003-10-12 22:56:36 +00:00
nethack.allison
23c884cbff another melting ice follow up (trunk only)
Zapping existing ice with cold wand/spell guaranties safe ice for
a minimum of MIN_ICE_TIME time.

Note that it could actually cause the ice to melt sooner than
it previously would have due to the randomization, but that's
an internal that the non-wizard-mode player would  never
know anyway. The important thing from the hero's perspective
is that the ice should be safe for a while at least.

Also noticed and corrected a bug where the ice object effects
seem to have been getting initiated when solidifying lava in
zap.c
2003-10-12 15:45:20 +00:00
nethack.allison
afd8d17d43 melting ice follow up (trunk only)
(now + 50) < (melting time) < (now + 50 + 2000)
with the chance approaching 100% the longer the time passed
2003-10-12 14:49:42 +00:00
nethack.allison
6712fc1b04 melting ice (trunk only)
add a new melt_ice_away timer for ice created via zapping
a wand/spell of cold.

Some follow-up adjustments to the length of time before
the ice melts may be necessary. Ideally, I'd like to
have it so that the shorter the length of time since
the ice was created, the lesser the chance that it will
melt out from under you.  Likewise, the longer it has
been, the more risky it will be to venture onto it.

At the moment, however, each spot of ice is just
getting a somewhat random time always greater
than 50, which is less than ideal.
2003-10-12 04:21:27 +00:00
cohrs
f6425ee3c5 X11 hilite_pet
Add support for hilite_pet to X11 text map mode (hilite_pet was already
supported when tiles were enabled).  While testing this, I found a missing
newsym() in the code implementing the creation of a "tame" monster.
2003-10-12 03:55:17 +00:00
cohrs
701054d012 eating an amulet of unchanging
Prompted by a suggestion on the newsgroup and from <Someone>, allow eating an
amulet of unchanging to remove intrinsic polymorph.
2003-10-11 18:54:48 +00:00
cohrs
79961e0d85 throwing while polymorphed
<Someone> suggested that a dragon, lacking hands, shouldn't be able to
throw things.  Dragons can pick things up, and it seems they can throw
things the same way.  However, it does seem that a notake() monster, which
cannot pick things up, shouldn't be able to throw things either.
2003-10-11 18:38:24 +00:00
cohrs
8ee1ecd2ea hiding under a cockatrice corpse
Reported a while back, a (stonable) hiding monster will hide at a location
containing only a cockatrice corpse.  While it would be interesting to
allow monsters to try, and stone themselves as a result, I chose the
simpler fix which is to not have monsters hide in such situations.  I found
the hiding code was duplicated in several places, so I moved it into a new
hideunder() function that works for both the hero and monsters.
2003-10-10 23:01:42 +00:00
cohrs
219e091d82 U685 - billing for tin usage
When moving the code to bill for tins before eating them (to charge for
them at the pre-eating hunger status), several cases were able to bypass
billing.  Moved the bill checking code to a new costly_tin() subroutine so
it could be called in all the necessary places.
2003-10-10 22:53:28 +00:00
nethack.allison
d590efacad buglist: splashing
> Not all objects say "Splash!" when they fall in the
> water. When levitating/flying and dropping things they
> don't, but when polymorphing and forced to drop items
> they do. [<email deleted>]

when floating over the water, things dropped always
make some sort of sound. Also fix up some messages
when Underwater that previously said things like
"feel what is lying on the water" by adjusting
surface() in that situation to return "bottom."

While looking into this, I noticed that if you
are polymorphed into a Flyer and you then polymorph
back into your normal form, you don't end up in
the water until you move, so this attempts to
correct that too.
2003-10-10 15:53:27 +00:00
nethack.allison
5cf49afd75 #U578: Various bug reports
> <email deleted>
> on Tuesday, August 5, 2003:
> Warriors on the Valkyrie quest may be male.
[...]
2003-10-10 13:36:53 +00:00
nethack.allison
27749e572e more context (trunk only)
- reading spellbooks
- taking off
2003-10-08 03:31:06 +00:00
cohrs
9c24966fe2 message history followup
Add a couple missing prototypes
removed an unused variable
2003-10-06 02:55:55 +00:00
nethack.allison
4775dd3cbf headings in option menus
There was a great deal of inconsistency in
different menus on how headings were displayed.
This allows the user to select what they like best.
I was motivated to do this, because I wasn't satisfied
with the appearance of ATR_INVERSE in the menus
on win32tty, and several of them specified it.
2003-10-05 19:56:22 +00:00
nethack.allison
f6f6c1f0d5 saving message history (trunk only)
On September 11, 2003 "<Someone>" wrote:
> When we're going to have a different save file format, could
> the last messages in the message history be saved as well, so
> ^P would work the same before and after saving (possibly
> including a few less messages to make room for the startup
> messages?).

This seemed like a reasonable request. This patch:
- adds the core support required.
- adds the tty supporting routines.
2003-10-05 13:43:16 +00:00
cohrs
ed8ce13d8f eels in lava
<Someone> reported that randomly placed aquatic monsters can end up in
lava.  The placement code allowed lava whenever the WET flag was passed to
it.  This was so passing (WET|DRY) would match all locations, but it's not
appropriate for when only the flag WET is used.  Since we have no levels
currently affected by this bug, I fixed it only in the trunk.
2003-10-02 04:23:59 +00:00
cohrs
6c734c22eb nagas eating
<Someone> suggested that nagas should eat.  This seems reasonable.
I made all but the black omnivores.  The black are similar to the AD&D
spirit naga, which are listed as carnivores, while AD&D's other nagas are
omnivores, so I took the same approach.
2003-10-02 03:39:57 +00:00
cohrs
d91171b491 U666 - inserting gold into a container
The special-case code for the full menu style lacked an #ifndef GOLDOBJ
to handle the case where gold is the only thing in the hero was carrying.
2003-10-01 03:37:55 +00:00