Commit Graph

52 Commits

Author SHA1 Message Date
cohrs
001c2ae58a U234, buglist, and related iron ball bugs
Several bug reports have been filed regarding the use of attached iron balls to
move in ways that are otherwise disallowed: moving diagonally from a
doorway, moving through boulders, squeezing through small openings, passing
over traps and diagonally between boulders on sokoban levels.  Modified
bhit to deal with this.  All these cases now cause the iron ball to stop if
appropriate for your form, level of burden, and so on.  Since both boulders
and iron balls are big, boulders now always stop thrown iron balls,
even if not attached.  Since iron balls don't cause any damage as they pull
you along, I didn't add any damage for the new "jerks to a halt" cases.
2003-08-04 21:37:19 +00:00
nethack.allison
cedc57b67f another buglist entry
> fog cloud hit uses "it". I was exploring the insides of a fog
> cloud with my fifth level wizard, and cast force bolt at its
> insides. I got the message "The spell hits it. You destroy the
> fog cloud!". Shouldn't "it" be "the fog cloud"? If so, it is
> debatable whether or not the then second "fog cloud" should
> perhaps be "it"... [<Someone>]
2003-08-03 19:58:49 +00:00
nethack.allison
83c28e6ff8 stone to flesh bit
Since the crysknife is the only MINERAL object in the
game that isn't affected by the "stone to flesh" spell,
and the only thing that makes it to the default
case on the switch statement in zap.c, make it
obvious that it isn't an oversight that nothing happens.
(it wasn't an oversight, right?)
2003-07-16 23:13:51 +00:00
cohrs
b53cdee210 U409 - hiding and eating bugs
Three related bug fixed, two reported in U409.
+ If you zapped a wand of cold downward while hiding underwater, the uundetected
flag was not reset (but the monster case was code correctly), resulting in
an impossible error on the next attack
+ If you finished eating something you were hiding under and were attacked,
another impossible would occur
+ While checking the eating gold case, I noticed that several cases would lose
gold on the floor if the attempt to eat it failed

The first case is fixed by resetting the flag just like the monster case.
The other cases are fixed by adding code to useupf to deal with this.
eatspecial and floorfood were modified to allow useupf to be called, and
fix the 3rd bug in the process.
2003-04-14 01:09:30 +00:00
arromdee
b7fea371b6 statue gender
Reported on the newsgroup (a few weeks ago in the middle of a post about
something else): someone turned Perseus to flesh and found out he was female.
2003-03-24 02:02:08 +00:00
nethack.allison
0f51c0174f undead turning of ghost on bones level
<email deleted>
Newsgroups: rec.games.roguelike.nethack
Subject: Re: Other ways to destroy the Amulet

<Someone> wrote:
>>> Zapped undead turning at his _corpse_, which brought the corpse
>>> back to life and also destroyed the ghost. The revived
>>> character was not carrying anything.
>>
>> Hmm, didn't the Amulet fall to the floor like when you genocide
>> something that's carrying something?
>
> Nope.
>
> That's because undead turning does mongone(ghost). The mongone
> function destroys the inventory of the monster:
> discard_minvent(mdef); /* release monster's inventory */
>
> Whereas genocided monsters are removed with mondead, which calls
> m_detach, which calls relobj, which drops the monster's inventory
> on the floor.
2003-02-19 04:31:46 +00:00
nethack.rankin
00d320c3d3 magicbane groundwork
To fix Magicbane's message sequencing, its code needs to be redone
substantially.  These changes make that easier.

cancel_monst()  let caller know whether cancellation succeeds
resist()  give artifact weapons a resistance attack rating
vtense()  handle monster names and "you" as subjects; checking against
          object names and descriptions pointed out a couple of other
          words that would have ended up being miscategorized.
2003-02-10 10:23:01 +00:00
nethack.rankin
ea400a778d some lint cleanup
Building with an old version of gcc with various warnings enabled
generated a lot of noise.  Most of it was due to not guarding string
literals with `const', but there were a couple of actual problems too.
2003-01-09 09:18:14 +00:00
cohrs
7f50893e13 bouncing zaps
As From a bug report, don't let bounces go past the edge of closed
doors.  His suggested patch included some redundancy, which I've removed.
2002-12-09 02:07:29 +00:00
cohrs
989f1cba5b B14018 healing mimics
Add missing newsym
Also fixed up some inconsistent indentation
2002-12-08 21:02:27 +00:00
nethack.rankin
e639c09f58 fix B14012 - polymorph of monster possessions
Forwarded from the newsgroup:  when a monster gets hit by wand or
spell of polymorph, any armor that fell off was protected from being
hit by that same zap, but a dropped weapon wasn't.  Nor was the whole
dropped inventory in the case where the monster is killed by system
shock rather than transformed.  Protect its entire inventory.
2002-11-08 12:45:58 +00:00
cohrs
2c926521c1 consistent sokoban guilt for polymorphing boulders
Discussed a while back in the newsgroup.  casting Stone to Flesh on a
Sokoban boulder would affect luck, but simply polymorphing a boulder would not.
2002-10-24 05:43:40 +00:00
nethack.allison
5a9550819c B13005 grammar: "A scrolls burns."
This was caused by taking a copy of the name
prior to a later delobj for use in the message.
The name would always be plural if there was
more than one, so that pluralized name would
be used even if only one of the stack was
destroyed.  Sometimes the name saved
was "scrolls labeled XXXX."

This patch simply saves a pluralized  name
and a single version and uses the
appropriate one in the message, rather
than introducing splitobj() complications.
2002-10-08 11:28:21 +00:00
nethack.rankin
0ef3240077 more monster intrinsics
Provide more control over message handling for monsters' use
of equipment.  This fixes the statue revival problem (inappropriate
feedback when monster puts on speed boots) mentioned in the earlier
"intrinsics of dead monsters" patch.
2002-09-09 09:24:38 +00:00
cohrs
5d492abf6f R1049 - various wand of digging bugs
- Breaking wand of digging dug through rock which should be undiggable.
Checks assumed pits would never show up in solid rock.
- Breaking wand of digging near shop walls wouldn't anger the shopkeeper
Checks assumed pits would never show up in walls, also, added a special
case to pay_for_damage to handle the case where you're falling thru and
can't be asked to pay.
- Shop walls wouldn't be restored if there are pits in the way.
Checks assumed pits would never show up in walls.
- If there was a hole outside the shop, you could kick stuff out of the
door into the hole without shopkeeper noticing.  Added the missing check.
2002-08-21 23:06:58 +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
b4dffbcc48 B07001 healed, undetected mimic
> [Cast a healing spell in a shop where no mimic was visible] So,
> "The small mimic looks better.". However, my picture still looks
> the same. Either the mimic should be shown, *or* I shouldn't get
> any message about the mimic healing. Both solutions seem equally
> valid to me.

If the mimic was mimicing the "strange object", then the healing causes
them to start mimicing something else with no message (the observant
player could notice however).

If the mimic was already mimicing a real object, a message similar
to this one results:
"The crude dagger seems a more vivid black than before."
2002-08-12 01:57:02 +00:00
nethack.allison
26e74eba24 stone to flesh crash
Problem was due to the use of obj
in the caller (bhito), after delete of
the obj within animate_statue().

map_object(obj * 0x0000ff00, int 1) line 254 + 3 bytes
newsym(int -18, int -2) line 702 + 102 bytes
bhito(obj * 0x002f6c00, obj * 0x002f7398) line 1665 + 21 bytes
bhitpile(obj * 0x002f7398, int (obj *, obj *)* 0x0055220b bhito(obj *, obj *), int 37, int 11) line 1701 + 11 bytes
bhit(int 0, int 1, int 10, int 0, int (monst *, obj *)* 0x0054e0e0 bhitm(monst *, obj *), int (obj *, obj *)* 0x0055220b bhito(obj *, obj *), obj * 0x002f7398) line 2707 + 29 bytes
weffects(obj * 0x002f7398) line 2434 + 51 bytes
spelleffects(int 3, char 0) line 824 + 11 bytes
docast() line 552 + 11 bytes
rhack(char * 0x005b6034 in_line) line 1813 + 3 bytes
moveloop() line 405 + 7 bytes
main(int 3, char * * 0x002f2b10) line 93
2002-08-07 02:38:04 +00:00
nethack.rankin
5773c461ef throwing through iron bars
Make throwing things through iron bars by the player and
by monsters behave consistently with each other.  Also prevent
stone-to-flesh'd boulders and wands from passing through.
2002-07-24 05:42:49 +00:00
cohrs
1238854154 R888 - panic while quaffing a potion of levitation
Now that the in_use flag is set for potions being quaffed, use the in_use
flag in general in destroy_item to avoid destroying the in use object, on
the assumption that the caller will call useup when finished.  There are a
few places that set then unset in_use, but these don't currently result in
a call to destroy_item.  The current_wand hack was not removed, since its
logic appears to allow destroy_item to still destroy the item.
2002-07-13 23:06:22 +00:00
nethack.allison
40940991bb change GOLD_CLASS to COIN_CLASS 2002-07-08 23:25:53 +00:00
cohrs
632e741a52 R853 - Items inside statues lost
If you cast stone to flesh on a statue on a location containing a monster,
the statue would be turned into a corpse and the contents lost.  This
didn't seem to be appropriate for the spell.  Now the contents spill out.
2002-07-08 00:15:27 +00:00
cohrs
e88a6182dd cancellation, polymorphed and unchanging
<Someone> reported that a wand of cancellation would ignore Unchanging,
noting the case of cancelling yourself while polymorphed into a stone golem.
He thought the wand should win, killing the player.  I felt otherwise,
since the case he specified passes the flag allow_cancel_kill == FALSE.
2002-07-07 23:25:43 +00:00
cohrs
2c26ea1dd5 R809 - newcham message reorganization
Add a param to newcham() to let it print "The oldmon turns into a newmon!"
rather than always printing this externally.  Should ensure a good ordering
of the messages.  Also put some special name handling in one place and
catch a couple cases where "saddled" was printed, resulting in funny messages.
2002-04-23 06:15:52 +00:00
nethack.rankin
812b53799d multiple iron bars fixes
Can't push boulders through iron bars; traps can't roll such through either;
	likewise for objects thrown by monsters.
Thrown objects susceptible to breaking might do so when they hit iron bars.
Assorted monsters can pass through iron bars; ditto for polymorphed character.
Attempting to dig iron bars will wake nearby monsters instead of yielding
	"you swing your pick-axe through thin air".
Autodig won't accept iron bars as candidate location.
2002-04-07 10:43:59 +00:00
cohrs
5c1ea899bf ensure touch_artifact is always called via hold_another_object
- remove the touch_artifact calls just added
- put a check into hold_another_object itself, based on the complete check
removed from makewish
2002-04-02 05:32:02 +00:00
cohrs
a74ae204cf striking ID followup part 2
- test WoStriking after activating statue, not before
2002-04-01 16:51:10 +00:00
cohrs
e5111e7587 striking ID followup
- only ID wand of striking, not spellbook of force bolt, seeing the spell
cast does not make the book known
2002-04-01 15:32:51 +00:00
cohrs
9a5a051791 identifying a wand of striking when it activates a statue trap 2002-04-01 01:22:39 +00:00
cohrs
531f703cd0 fix more "drops to the floor" cases when there is no floor
- make the code in apply.c and zap.c consistent
- use the "drops away from you" case whenever the location type does not
lend itself to using the word "floor"
2002-03-31 04:18:02 +00:00
nethack.allison
c49130e5bd boulder/statue/landmine reversal and new fix
This includes a reversal of my earlier
boulder/statue/landmine fix,
and places a check for obj->where==OBJ_FLOOR into
fracture_rock().  I think this is a better approach
because:
- if eliminates the pointless extract/place in
fracture_rock, followed by extract/place in
the caller in the two places causing the crash
- it covers any similar situations that we
might have missed or that someone might add
accidentally (you might not expect the location
of an object to change inside fracture_rock())
- it allows fracturing to take place on the
other object chains if we ever need it (statues
falling down stairs, perhaps?)
- it doesn't move objects from other chains onto
the floor briefly as the current code does
2002-03-30 14:46:31 +00:00
nethack.rankin
11b1874090 more wielded/quivered iron ball
There was at least one more special case aside from throwing
(jetisoning items to reduce weight after falling in water) which
have needed the same extra code.  This is a more general fix.
2002-03-30 09:50:59 +00:00
nethack.rankin
35c7504e8e probing of empty containers--right diff this time 2002-03-20 09:07:39 +00:00
nethack.rankin
0f1d63976b probing of empty containers 2002-03-20 09:06:30 +00:00
arromdee
a5b8144dd1 wizkit messages for gold
This prevents wizkit items that aren't objects from having their names
printed on the screen if they are gold pieces, traps, or similar.

(Note that the only one of those that actually works is gold.  For some reason
if you put "a hole" (for instance) in the wizkit, the hole will not get
created, even though it will, even on the stairs, if the wizard wishes for it
in-game.)
2002-03-03 05:01:09 +00:00
nethack.allison
24956e3b53 The unpaid cost displayed in your inventory now
includes container contents, not just the cost of the
container itself (a prices in inventory phenomenon).

Along the way I discovered a peculiarity -
contained_cost() was adding up the cost of everything in
a container, even if you had stashed items in it that were your
own and not marked unpaid it seems.

I added a flag to force the code to only add objects
that were marked "unpaid" so I could use it in this new
instance, but I didn't change any of
the existing usages (I left the flag at FALSE which leaves
the consideration of the unpaid status alone just as
before).

Some of this is correction of some messages that were
wrong prior to this when dealing with selling of objects
inside a container when only part of the contents was unpaid.
2002-02-25 19:14:42 +00:00
nethack.rankin
a9b2f4f1ee double undead turning
From the newsgroup:  when an undead monster got killed by a wand
or spell of undead turning, if it left a corpse that corpse would be
hit by the same zap and was immediately revived.  This fix uses the
flag bits that were added to prevent objects that are dropped by a
polymorphed monster from being hit by the same polymorph zap.

     This also fixes a post-3.3.1 bug that produced "the <undead>
turns to flee" even when that monster had been killed by the turning
attack.  3.3.1 had the same bogus fleeing effect but didn't give any
message so it was unnoticeable.
2002-02-23 11:13:41 +00:00
cohrs
93b46d7a60 stone-to-flesh downwards
display the typical "beneath" if you're levitating, not "at".
If over lava, say "blood boils". Also, treat ice & water like waterlevel case.
2002-02-15 05:47:57 +00:00
cohrs
e4facdc70a burnt webs still visible 2002-02-15 03:20:41 +00:00
cohrs
316a94d50f obj_no_longer_held consistency
Call obj_no_longer_held whenever an object hits the floor, no matter what
previously held it.  Also handle stoning of prior holder.
2002-02-09 21:55:45 +00:00
cohrs
62d38baab6 shattered statue rocks
move shattered statue rocks to the top of the pile
helps when the player is Blind, gives away less
2002-02-09 04:12:48 +00:00
cohrs
aac7f717c2 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:30:33 +00:00
nethack.rankin
f750e2df4e fix B3032 -- wand of speed monster id
Make wands of speed or slow monster known if their effect
on monsters is observed; likewise for speed boots.  Also, avoid
giving odd "the bat is moving faster" when seeing a bat created
in gehennom and inaccurate "the monster is moving slower" when
a monster puts on speed boots.
2002-02-08 04:14:03 +00:00
nethack.allison
742e1e8c90 3.3.2 to 3.4.0 2002-02-04 16:11:00 +00:00
arromdee
166affb0f9 polymorphed quest leader
Duuuh.  Of course adding objects already changed the editlevel.

Anyway, here's the fix I was working on.  It only matters in a very obscure
situation.  (Also, the quest leader still speaks no matter what he's
polymorphed into.)
2002-01-21 22:15:22 +00:00
cohrs
6a637d21a5 spells doing negative damage
Add a check to zhitm to ensure that spells cast by characters with low XL
and Int will not do negative damage.
2002-01-21 03:41:21 +00:00
cohrs
e7bdcb157f lava effects for monsters and objects
This patch, based on code sent to us by <Someone> well over a year ago, addresses
bugs recently resurfaced.  Namely, that lava does not generally do anything
to monsters or objects that land in java.  Newly renamed minliquid() handles
both water and lava, and new fire_damage() is used similar to water_damage().
2002-01-20 07:04:18 +00:00
arromdee
f93521e95d wizard #poly and #levelgain
This adds the wizard #poly and #levelgain commands.
2002-01-17 02:47:23 +00:00
arromdee
1d86d33fde Fix drain life "problem" (zapping it at the floor required you to reach the
floor) by not making it wipe engravings to begin with.

--Ken A.
2002-01-10 06:08:58 +00:00
nethack.allison
9b7d9f29b5 From a bug report: monsters hit by polymorph
magic while wearing dragon scales/scale mail were being turned
into random monsters instead of into dragons.

Also

Two items from <Someone>'s list.

Files patched:
  include/obj.h
  src/mon.c, muse.c, worn.c, zap.c
2002-01-09 13:10:13 +00:00