Commit Graph

2477 Commits

Author SHA1 Message Date
nethack.allison
d08dcbc3fb tin variety (trunk only)
- store the variety of tin at tin creation time
  rather than at tin-opening time (as a negative
  value in spe just as homemade was; spinach
   is still spe 1)

Allow wishing for a particular variety of tin
from the tin variety list:
	"deep fried", "boiled","broiled","candied"
	"dried", "french fried", "homemade"
	"pickled", "pureed", "rotten", "sauteed"
	"smoked", "soup made from", "stir fried",
	"szechuan"
Example: "tin of soup made from orc"

non-debug player could randomly fail on the
variety specification 1 in 4 times
2003-10-28 03:45:49 +00:00
nethack.allison
f66a750562 win32tty: fix extended commands
The autocompletion was working, but you couldn't tell
because the text was overwritten with blanks.  This was
a recent glitch created during fix for other cursor problems.
2003-10-27 01:14:02 +00:00
cohrs
05f2aa40ce crash on hangup following
restore the exit_nhwindows call, but in the right place.  without this,
the window inteface doesn't get a chance o shut down.
2003-10-27 00:59:54 +00:00
cohrs
1dae4245f5 crash on hangup
the message history saver needs the windows to stick around until save
is completed.  This usually the case, but end_of_input() was calling
exit_nhwindows prematurely.  This is actually an old bug (calling it early,
but wasn't harmful until other recent changes).
2003-10-27 00:39:45 +00:00
nethack.allison
dbb1d0f230 saving msg history glitch (trunk only)
<Someone> discovered that it is possible to
have wins[WIN_MESSAGE] be null during
a hangup, not sure why yet.

Put a guard in to prevent de-referencing a null pointer.
2003-10-27 00:23:22 +00:00
nethack.allison
211666434c more win32tty clean-up
This brings things much closer to correct operation (I hope).
- The shift to only moving the cursor on input (<Someone>'s
changes) had a lot of complications, among them was
that sometimes, there is no more input. When the program was
exiting, or bombing the cursor synch never got done, so the
final messages could end up strewn any place the cursor
happened to be dwelling.

- There were two competing output systems in use: the
wintty stuff for the game, and the msmsg and error stuff
used by the sys/share/pcsys, sys/share/pctty, and
sys/share/pcunix routines.  Those were meant to mimic
output to stdout, where stuff just got sent to a sequential
display.  Over time, there were calls mixed in that depended
on the cursor tracked stuff from the core game, so you
really couldn't be sure where things were going to display.
It wasn't as much of an issue before, because the cursor
really did get moved around as expected. Everything
now ends up in the same output system.

- I even found a use of the real putchar() because
sys/share/pcunix didn't #include wintty.h the same
as the other files, and the macro never got defined.
Who knows where that character was being put -
the game certainly couldn't track it.

While everything I knew to be wrong yesterday is
now working, there may be some other glitches
lurking that I haven't discovered yet.

Please: test, test, test.
2003-10-26 15:56:50 +00:00
nethack.rankin
ca476c0eb2 patchevel.h comment 2003-10-26 06:04:04 +00:00
nethack.allison
043a2944ca class differentiation followup
> Healers pick up on the fact that a wand of undead turning
> revived a creature.
...if a vital piece of code isn't accidentally left out
2003-10-25 22:37:18 +00:00
nethack.allison
b4c2f74c22 class differentiation bit (trunk only)
Healers pick up on the fact that a wand of undead turning
revived a creature.
2003-10-25 22:20:24 +00:00
cohrs
cd7e1163e1 changing level workaround (C341-13)
Use a new flush_screen(-1) call to toggle 3rd screen update in goto_level.
This keeps the 3rd screen state unchanged, no matter what happens at higher
levels, ensures the map window cursor stays on the hero, ensures the
hero's showrace colors remains bright white, and so on.
2003-10-25 19:28:54 +00:00
nethack.allison
125d1f1cf1 handheld lockfile left around fix (from <Someone>) 2003-10-25 18:32:30 +00:00
nethack.allison
2a9f2b1f36 patchlevel.h sync between branch and core 2003-10-25 15:20:04 +00:00
nethack.allison
fa8956dbb9 win32gui build fix (from <Someone>)
<Someone> wrote:
> Using the MCVS IDE I couldn't compile NetHack any longer, due to a
> misplaced #endif and a library not included in the DSP file.
> Here's a patch for both problems for 3.5.0.
> The 3.4.x verison only suffered from the first problem. Patch also
> attached.
2003-10-25 14:45:51 +00:00
nethack.allison
58f322841d more win32tty fixes
There were still some significant startup message problems
with win32tty.

I've spent a lot of time in the debugger tracing through them all.
I think I've got them all worked out now, certainly the ones that
I was aware of.  There may be some I haven't discovered.
Testing welcomed of course!

This patch also attempts to diagnose the error where someone tries
to execute NetHack directly out of a zip file, and provide
them with a (hopefully) helpful message similar to what we
might end up telling them if they wrote in.  If you want
to test that part, you can comment out the line in the
Makefile that adds "dungeon" to nhdat, and delete the nhdat
in your binary and src directories, and "make install".
Then add the value of your TEMP environment variable as a
DATADIR statement in defaults.nh (here's mine):
	DATADIR=C:\DOCUME~1\ALLISO~1\LOCALS~1\Temp
The diagnostic code engages if the game fails to open
dungeon. It then checks to see if it the game dir is the
TEMP directory for your system, and if so it prints the
message.
2003-10-25 04:02:24 +00:00
nethack.allison
b989a746a0 fixes catchup 2003-10-25 03:59:09 +00:00
nethack.allison
45dd5ffe9f win32tty: startup msg cleanup
the win32 cursor restriction stuff messed up any
messages displayed during abnormal start conditions
where the window system never got initialized properly.
among them:
- messages relating to lock files or games in progress
- dungeon errors
- early panic messages
2003-10-24 15:15:44 +00:00
nethack.allison
4ceb7c3743 starting pet identification
make it possible for the code to recognize your starting pet throughout the
	game via is_starting_pet(mon) macro.
2003-10-24 12:15:46 +00:00
nethack.allison
5fbce73815 were followup
"Rat's appear" -> "Rats appear"
Use makeplural rather than s_suffix.
2003-10-24 12:06:13 +00:00
nethack.allison
04174eda2a starting pet identification
Make it possible to identify your starting pet throughout the game
via is_starting_pet(mon) macro.
2003-10-24 11:52:49 +00:00
nethack.allison
da063bdc18 cvsfix
My cvs tree had the correct code. When I did a cvs update
it didn't pull anything down. When I deleted the include/extern.h
file from my cvs tree, and did an update with the "get the clean copy"
switch, it pulled down an extern.h that was indeed missing the
prototype.  In all cases my local cvs reported that it was 1.130.
I applied the prototype change to the cvs copy, did a cvs diff
to ensure nothing else was out of sync and re-committed.
2003-10-24 10:20:00 +00:00
cohrs
25d9778b64 stone to flesh bit
<Someone> suggested and I agree (mostly, if you're a Monk poly'd to a
strict carnivore, I think it should still smell delicious):
> "You smell the odor of meat." (if herbivorous)
> "You smell a delicious smell." (otherwise)
> I think that if your character is a monk or still veg(itari)an, you should
> also get the first message. Even if you're not intentionally vegitarian,
> the first message is still appropriate.
2003-10-24 05:58:39 +00:00
cohrs
a9c80974e8 another conflict abuse
Reported a really long time ago (June 2001) by <Someone>:
 - stand on the upstairs and engrave Elbereth with a /oFire
 - create Demogorgon and e.g. a tame dragon
 - cause conflict
 - Dragon will kill Demogorgon and Demogorgon will never ever attack Dragon.
All monsters could still attack Demogorgon without response via fightm().
Modified fightm() to include a bit of code in m_move and dog_move, allowing
response to an attack.  Testing this in action, Demogorgon still usually
did things detrimental to the player, mostly summoning nasty monsters.
2003-10-24 01:59:48 +00:00
nethack.allison
96b0d848b2 buglist: polymorphed into quantum mechanic
<email deleted> wrote:
- When polymorphed into a quantum mechanic, it is possible to jump in
  the water on a no teleport level and instinctively teleport.
- When an engulfing monster is teleported away on a no teleport level
  when the hero is polymorphed into a quantum mechanic, there is no
  message displayed like "You are no longer engulfed!" because
  u_teleport_mon is passed FALSE for give feedback. But maybe this is
  for a good reason...
2003-10-24 01:54:34 +00:00
nethack.allison
e4495a6389 <Someone>'s were_summon rules
>Hemmed in by one invisible wererat?
><Someone>: Should I feel hemmed in if I can see that a wererat summons
>zero rats? Can the invisible wererat hem me in all by itself? And
>even if it had summoned anything, wouldn't a different message had
>been clearer (for isntance, "Rats appear around you!"); after all,
>I could see *what* was hemming me in.
>I agree that the current messages (and even the ones aspired to by the
>comment) are non-ideal.

<Someone>'s suggested set-up:
Seen summoner, seen help    : "The wererat summons help!"
Seen summoner, unseen help: "The wererat summons help! You feel hemmed in."
Seen summoner, no help: "The wererat summons help! But none comes."
Unseen summoner, seen help: "(A rat appears|Rats appear) from
nowhere!"
Unseen summoner, unseen help: "You feel hemmed in."
Unseen summoner, no help: No message.
2003-10-23 12:13:21 +00:00
nethack.rankin
95d01c00d0 charging tweak
Some newsgroup discussion recently pointed out that source comments
for scrolls of charging didn't match the actual charge increase performed
by that magic.  This bumps the values a little bit
 (uncursed: comment said 5 to 15, actual amount was 10 to 14, now 10 to 20;
  blessed: comment said 10 to 25, actual amount was 16 to 25, now 15 to 30)
and adjusts the comments to match the code.
2003-10-23 07:41:24 +00:00
nethack.rankin
5b9c03729c weapon skill tweak
Barbarians start with either a two-handed sword and an ordinary axe
or a battle-axe and a short sword.  The latter combination was the only
one among all the roles where the player couldn't enhance skills for
starting weapons to expert.  Fix that by allowing barbarians to become
expert in short swords; reduce potential capability with pick-axe/mattock
from expert down to skilled to compensate for the increase.

     This also addresses an earlier complaint that monks are no better in
martial arts than samurai even though the latter have lots of choices for
good weapon skills.  Reduce the martial arts limit on samurai from grand
master to just master; likewise with bare-handed combat for barbarians
and cavemen.  In this case there didn't seem to be any need to bump the
limit on anything else as compensation.

     I still think non-rogues shouldn't be allowed to become expert in
daggers (which means that ranger and valkyrie starting gear would need
to change slightly) due to how powerful throwing them is, but I haven't
included that change here.

     For the skills which have lower upper limits than before, existing
characters who have #enhanced their skills high enough with the previous
code will retain their higher-than-max skill ranking with the new code.
Characters who have exercised enough to advance to the old max but
haven't done so yet will be limited to the new max.
2003-10-23 07:12:03 +00:00
cohrs
f7a681a139 inappropriate lit_corridor check
To reproduce: disable lit_corridor, enter a corridor, read a scroll of
light, then read a cursed scroll of light.  The corridor won't darken again.
A test of flags.lit_corridor in newsym was at fault.  I'm guessing this was
never noticed because lit_corridor is on by default on Windows and the
default lit and unlit corridor symbols are the same on most other platforms.
2003-10-23 06:49:22 +00:00
nethack.rankin
7ad89fbbdd lex update
This is a case where a one-line change to the scanner source produces
a large diff in the generated C code.
2003-10-23 06:30:43 +00:00
nethack.allison
94b6f32b25 Half_physical_damage 08
missed a spot
2003-10-23 04:53:46 +00:00
cohrs
d82c7e671b support engraving in blood in special level files
the file format and sp_lev.c supported it, but the level parser didn't
2003-10-23 02:36:23 +00:00
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.allison
a6ed42dc07 win32tty hangs if you ^C at "Who are you?"
From Newsgroups: rec.games.roguelike.nethack :
> <email deleted>
> Subject: question for windows tty users
>
> I am trying to hunt down a bug, and want to know if I have
> encountered another one of those bizarre "features" that only
> occur on my computer (I seem to get a lot of them).
>
> I can reproduce this bug, or whatever it is, in the official
> Windows binary like this: Start the tty version of NetHack by
> double clicking on the program. You won't see the bug if you
> start it from the command line. When the game asks, "Who are
> you?" press ^C. NetHack will respond with "^C abort. Hit
> <Enter> to end," and then it hangs. Pressing Enter does
> nothing, and the program does not end.
>
> Can anybody else reproduce this behaviour? Thanks in advance.
>
> -- <Someone>
2003-10-21 15:19:08 +00:00
nethack.allison
d07568164d win32tty hangs if you ^C at "Who are you?"
From Newsgroups: rec.games.roguelike.nethack :
> <email deleted>
> Subject: question for windows tty users
>
> I am trying to hunt down a bug, and want to know if I have
> encountered another one of those bizarre "features" that only
> occur on my computer (I seem to get a lot of them).
>
> I can reproduce this bug, or whatever it is, in the official
> Windows binary like this: Start the tty version of NetHack by
> double clicking on the program. You won't see the bug if you
> start it from the command line. When the game asks, "Who are
> you?" press ^C. NetHack will respond with "^C abort. Hit
> <Enter> to end," and then it hangs. Pressing Enter does
> nothing, and the program does not end.
>
> Can anybody else reproduce this behaviour? Thanks in advance.
>
> -- <Someone>
2003-10-21 14:17:04 +00:00
nethack.allison
2d55849bb1 win32 acknowledgement bit 2003-10-21 12:14:12 +00:00
nethack.allison
31c7b0a2ab win32 dep 2003-10-21 11:06:20 +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
nethack.rankin
537718980d vms catchup
1) filename manipulation during restore
2) hangup handling in low level input routine
3) Makefile dependencies
4) version number update
2003-10-21 04:25:35 +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
cohrs
4e09be0163 3.4.3 update
update the linux README
2003-10-21 02:06:27 +00:00