Commit Graph

183 Commits

Author SHA1 Message Date
nethack.rankin
e8e291b018 fix #H3039 - panic() when trying to drop destroyed items
From a bug report, dropping a lit
(burning) potion of oil while levitating can produce an explosion which can
destroy inventory.  If in the process of dropping multiple items, the ones
after the oil might be gone, resulting in use of stale pointers and possibly
triggering an "extract_nobj: object lost" panic or even a crash.  While
testing my fix, I discovered that being killed by an exploding potion of oil
could produce an "object_is_local" panic if bones are saved  (and reproduced
with unmodified 3.4.3).
2013-11-05 00:57:56 +00:00
nethack.rankin
98a609a03b wand of polymorph vs monster inventory
From the newsgroup:  inventory dropped by a monster killed by system
shock when zapped by a wand of polymorph is protected against being poly'd
by that same zap, but worn/wielded equipment that's forced to be dropped
due to being unusable in a transformed monster's new form was not.  Not
mentioned in the newsgroup, but also fixed:  boulders dropped when a giant
turns into a non-giant were also subject to the zap instead of protected.
2012-05-25 23:54:59 +00:00
nethack.rankin
921c056efc fix more of #2629 - striking/force bolt feedback (trunk only)
From a bug report, the message "Boing!" is given if wand of striking
or spell of force bolt is aimed at magic resistant hero by self or by
monster, or at magic resistant monster by another monster, but it was
omitted when aimed at magic resistant monster by the hero.  The shield
effect animation for resistance is given in all the cases.
2012-04-07 01:17:23 +00:00
nethack.rankin
e46e3668b3 fix another part of #2629 - destory_mitem of partial stack (trunk only)
From a bug report, if part of a stack in a monster's inventory gets
destroyed (examples given were from Fire Brand burning scrolls or Frost
Brand freezing potions, but other code calls destroy_mitem() too), the
message handled singular vs plural for the desruction part ("catches
fire and burns" vs "catch fire and burn") but always used plural when
formatting the object stack being affected.  Now say "One of <the mon's
foo>" or "Some of <the mon's foo>" as appropriate when part of a stack
is being destroyed.  (destroy_item() for the hero paid more attention
and handled this issue correctly.)
2012-04-06 08:49:27 +00:00
nethack.rankin
b94f26a8c8 some lint bits (trunk only) 2012-02-16 03:01:38 +00:00
nethack.rankin
1563a3e0ec drain life vs drain resisting objects (trunk only)
From the newsgroup:  casting spell of drain life at Stormbringer
(or Excalibur or Staff of Aesculapius) would reduce its enchantment just
like any other weapon.  Drain resistance should protect against that even
when not actively wielded.
2012-01-08 01:26:35 +00:00
keni
52aa3efcce last bunch - pline warnings while testing postcommit.pl 2012-01-04 18:52:36 +00:00
nethack.rankin
897d527837 fix #2495 - light vs gremlins (trunk only)
From a bug report, flashing yourself
with a camera while in gremlin form blinded as with any other form, but
didn't inflict any damage the way that flashing a monster gremlin does.
This fixes that, and also makes light from wand/scroll/spell that hits
you-as-gremlin or monster gremlins do 1d5 damage too.  It happens even
if the target is already in a lit spot, but doesn't continue afterwards:
simply being in a lit spot doesn't cause any damage, nor does lamp light.
2011-10-17 01:32:23 +00:00
nethack.rankin
1e63a64a4e more wishing assistance (trunk only)
It's possible to ask for help on the first wish attempt, even though
the prompt hasn't been adjusted to mention that yet, so the one message
which is composed dynamically needs to have its phrasing tweaked a bit
more if the user happens to do that.

     Also, allow help to be requested even when the cmdassist option is
toggled off.  Now that option just controls whether the prompt string is
augmented for retry attempts.
2011-10-03 01:16:05 +00:00
nethack.rankin
c3d9fe0152 wishing assistance (trunk only)
Flesh out the wishing help which becomes available if you give an
unrecognized response to the "for what do you wish?" prompt.  It was
quite terse and is now very mildly spoily instead.
2011-10-02 04:02:48 +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
7c7497e5e0 yet another test 2011-03-15 14:11:55 +00:00
keni
70a3b3ed65 another test (cross your fingers) 2011-03-08 01:54:39 +00:00
keni
fa837f3227 another test 2011-03-08 01:48:02 +00:00
keni
5900e3c517 another try 2011-03-08 01:36:33 +00:00
keni
7b6087bd4a another test 2011-03-07 13:06:48 +00:00
keni
0f5aea8565 yet another test run 2011-03-07 01:51:24 +00:00
keni
80088d2d38 back out test - make sure things work 2011-03-06 16:12:24 +00:00
keni
1fd5529464 another test 2011-03-06 16:03:40 +00:00
keni
471b1b8ba7 another dummy test 2011-03-06 15:43:06 +00:00
keni
38f479f6c4 dummy change test 2011-03-06 15:37:22 +00:00
keni
8d32f5d366 another dummy change test 2011-03-06 15:15:10 +00:00
keni
bd01116fd2 dummy change for testing (reduce debugging output - I'm done for now) 2011-03-06 02:26:37 +00:00
keni
ec74ef4593 dummy change for testing 2011-03-06 01:26:21 +00:00
keni
1077852c6b dummy change for testing 2011-03-06 01:13:58 +00:00
keni
ec9432b5af dummy change for testing 2011-03-06 01:09:13 +00:00
keni
90ca79a593 just mess with zap.c to continue debugging postcommit.pl 2011-03-06 01:02:13 +00:00
keni
7204ff00da yet another compiler warning 2011-03-06 00:24:15 +00:00
keni
d465c183ef another compiler warning 2011-03-05 23:16:38 +00:00
keni
ce25726d64 another compiler warning 2011-03-05 22:02:49 +00:00
keni
209342be11 another compiler warning 2011-03-05 21:54:34 +00:00
keni
07c00cbebe another compiler warning 2011-03-05 21:53:24 +00:00
keni
bf6852a422 another compiler warning 2011-03-05 21:51:54 +00:00
keni
673c46dec1 another compiler warning 2011-03-05 21:16:31 +00:00
keni
b480adc5ee another compiler warning 2011-03-05 20:40:46 +00:00
nethack.rankin
b0a70e81dd stone-to-flesh vs Heart of Ahriman (trunk only)
From the newsgroup:  a player accidentally cast the stone-to-flesh
spell at himself (I don't recall whether he chose wrong spell or wrong
direction, or tried to cancel and game used last remembered direction)
and the barbarian quest artifact he was carring turned into a meatball.
Artifacts already have a high chance (95%) to resist being polymorphed
but that doesn't apply for the stone-to-flesh transformation.  This
gives stone artifacts a high chance (98%) to resist being turned into
flesh.  Non-artifacts also get a small chance (2%) to resist as well.
2010-08-28 00:15:39 +00:00
keni
bd1a922dae Guidebook update and SEDUCE runtime switch
add SYSCF docs to the Guidebook because it's info needed in a binary distro
Guidebook.tex - also add some missing italics to some "NetHack" occurances
call nethack.org "official"
Guidebook.txt - didn't regenerate cleanly so no diff
add SEDUCE to SYSCF (only partly inspired by the recent email)
2010-05-13 00:54:13 +00:00
nethack.rankin
8f3c74d804 wand/spell/breath zaps hitting secret doors (trunk only)
From a bug report, black dragon breath
destroys closed doors didn't acknowledge hitting secret doors.  bhit()
reveals secret doors, but zap_over_floor() (called by buzz() for ray-type
wands and spells, and for breath attacks) didn't check for hitting those.

     When testing the fix, I noticed that feedback for an explosion caused
by breaking a wand was worded oddly for zaps like magic missile which don't
damage doors.  "The door absorbs your bolt" didn't make much sense; what
bolt?  That was first changed to "absords your blast", which still sounded
weird, then to "absorbs the blast", which seemed better but was inaccurate.
Next was "absorbs some of the blast" since the explosion continues to hit
adjacent spots, but since it still has full strength that wasn't accurate
either.  It's finally become "The door remains intact."  Unlike with zaps,
there is no additional range being lost, so no reference to absorption.
2009-05-28 14:09:30 +00:00
nethack.rankin
2dfe3f45c1 spell_damage_bonus (trunk only)
From the newsgroup:  player saw "The spell hits the <monster>?"
where the question mark punctuation reflected negative damage occurring.
Another player diagnosed it as a 2 point force bolt (from 2d12 dice role)
modified by -3 penalty for hero who has Int less than 10.  This changes
spell_damage_bonus() to avoid reducing damage below 1 point.
2009-05-27 09:19:11 +00:00
keni
4eabcee787 Add RCS version lines 2009-05-06 10:50:32 +00:00
nethack.rankin
6870660aba more breaking wands (trunk only)
If breaking a wand of polymorph uses up any floor objects, give a
"you feel shuddering vibrations" message like happens when zapping.
2008-10-20 04:07:40 +00:00
nethack.rankin
b0478ecef8 breaking wands (trunk only)
From a bug report, polymorph of self due to
breaking a wand also polymorphed various items that were dropped in the
process, unlike the case of zapping polymorph at monsters which excludes
dropped items from being poly'd.  This polymorphs the pile at the hero's
feet before polymorphing the hero.  I first tried to handle it using
obj->bypass like with monsters, but that didn't work.  Post-3.4.3, the
bypass handling is also used for polyself (by retouch_equipment()) and
it was getting reset at an inconvenient time.

     He also complained that he failed to get "you feel shuddering
vibrations" when some polymorphed objects got destroyed.  That message
is issued by weffects() which do_break_wand() doesn't call.  It ought to
be fixed, but this patch doesn't address it.

     Lastly, add code to prevent objects guarded against polymorph via
obj->bypass from getting used up when creating polypile golems.
2008-10-20 00:57:16 +00:00
nethack.rankin
17f63949bc probing while swallowed (trunk only)
Reported recently by <Someone>:  probing feedback while engulfed
shouldn't claim that the monster is not carrying anything when the hero
is inside of it.  The simple case where it's not carrying anything else
was a trivial one line change; handling inventory plus hero was trickier
and I wouldn't have bothered if I'd realized what it was going to take.
But it's done now; trivial case
        The purple worm is not carrying anything besides you.
and harder case
        The purple worm's possessions:
        Weapons
        a - an uncursed dagger
        Swallowed Creature
        > - human archeologist called wizard
2008-03-21 03:12:14 +00:00
nethack.rankin
33c14ba523 enlightenment revamp, part I (trunk only)
Groundwork for re-doing ^X so that it'll be more integrated with
enlightenment and display bottom line information without abbreviations
or long-line truncation.  `mode' doesn't do anything yet so may provoke
lint complaints.
2008-01-21 16:40:56 +00:00
nethack.rankin
a3ddcba9a7 crop rotation (trunk only)
More tuning to throttle pudding farming (plus endgame Rider farming).
Earlier changes made cloned black puddings less likely to leave corpses,
to cut down on sacrifice fodder a bit, and cloned anything less likely to
drop random items when killed; this one makes killing cloned or revived
monsters be worth less experience as the number killed goes up, to cut
down on final score inflation.  [With several boulders and magic missile
or a polearm, it's possible to kill any of the Riders repeatedly with
virtually no risk of even getting hit, much less of getting killed.  Now
if you kill Pestilence 240 times it will be worth 62720 points instead of
297840 (not including doubling bonus for ascension), with an additional
19 points per kill instead of 1241 after that, requiring a couple orders
more magnitude of abuse--excuse me, superhuman "patience"--to get the
score to reach the overflow threshold.]

     While testing this, I got "The Famine's corpse glows iridescently."
This fixes that too.  Also, previously unused kill count for experience()
had an off by one error; was including ``+ 1'' even though mvitals[].died
has already been incremented by the time that that code uses it.
2007-07-08 23:51:17 +00:00
nethack.rankin
2f9d711237 fix #H363 - reviving corpses of hiding monsters (trunk only)
From a bug report, reviving a snake corpse
produced a snake monster which was hidden under nothing--it hid under its
own corpse and wasn't revealed when that corpse got used up.  Rather than
fiddling with sequencing to remove the corpse before making the monster,
force any monster who revives in hidden state to unhide.
2007-05-31 01:42:48 +00:00
nethack.rankin
2d06a1d617 destroy_mitem message tidbit (trunk only)
"the kobold's potion of healing boils and explodes!"
Should be capitalized.  Post-3.4.3 code; branch isn't using yname() here.
2007-05-28 03:38:12 +00:00
nethack.rankin
5ca566f0f2 mirror fixes (trunk only)
From some notes I made prior to release of 3.4.3, about applying a
carried mirror in the direction of a monster:

 invisible player applying mirror toward monster which can't see invisible
   should have no effect (monster can't see hero's equipment);
 similarly when inside engulfer regardless of whether it can see invisible;
 applying mirror at worm tail shouldn't work but does;
 applying mirror toward unseen monster that can see invisible (so should be
   able to see its own image) doesn't work because bhit() won't target it;
 mirror shouldn't work when target is only visible via infravision.

The fourth one is iffy since it assumes that invisible monsters produce
invisible reflections rather than no reflections.  The reverse of that is
probably more reasonable but isn't as interesting.  The fifth one may be
contradictory; it fails to extend that logic to "infravisible monsters
produce infravisible reflections."
2007-05-12 02:01:18 +00:00
nethack.rankin
b85b3d47ff zhitu thinko (trunk only)
Spotted by Janet:  in the ``using #monster to breath[e] at self''
patch I accidentally reversed the Half_spell_damage adjustment (to breath
only from non-breath attacks only, not by doubling instead of halving
damage :-).  Changing it to include zaps by the hero is intentional.
2007-05-05 21:41:54 +00:00