Commit Graph

12976 Commits

Author SHA1 Message Date
SHIRAKATA Kentaro
dc7d434f98 add missing initializer of jcp 2022-02-20 14:43:33 -08:00
PatR
cca90a061c makedefs exit control
Have makedefs do through a common point when exiting, in case it ever
needs extra memory or scratch file cleanup.

While testing, I discovered that the reference use of 'makedefs -o' to
build obsolete onames.h didn't work anymore because of the change to
not require object probabilities to add up to 1000 within classes.
I think fixing that is the only change besides new 'makedefs_exit()'.
2022-02-20 13:52:18 -08:00
PatR
7000a3ff51 memory management for 'nomakedefs'
The nomakedefs struct starts out with static values, then if/when
populate_nomakedefs() is called, the fields are given dynamic values.
free_nomakedefs() needs to know what state it's in.

A big chunk of this if just formatting for indentation.
2022-02-20 13:47:31 -08:00
Pasi Kallinen
4a61602436 Illiterate hero will learn spells directly from deity
... instead of receiving a spellbook.
2022-02-20 22:05:33 +02:00
Pasi Kallinen
fcdae54173 Fix old-style function def 2022-02-20 21:18:03 +02:00
Pasi Kallinen
038ae7f984 Clean up some spell-related code
Add two helper functions and use those outside of spell.c,
instead of iterating through all the spells.
2022-02-20 21:12:26 +02:00
Pasi Kallinen
041a07468a Always give a message when monster changes form via polytrap
... if the hero can see it.  This was an accessibility issue.
2022-02-20 19:40:55 +02:00
Pasi Kallinen
fc19d1b453 Make looting less tedious
I've seen complaints how looting containers is tedious, and
since multiple containers in the same location are now (and have
been for a while) handled with a menu, the yes-no-quit prompt
for a single container doesn't really mean anything.

Remove that prompt, and remove the "open carefully" message too,
so when you're looting a location with a single container, the
command will drop straight into the loot-in-out -menu.  Also
adjust one looting message to explicitly mention the container
if there are other objects on top of it.

Removing the prompt means you can't loot a saddle from a tame
monster with plain loot when standing on a container - you need
to prefix the loot command with 'm' prefix in that case.
2022-02-20 18:39:52 +02:00
Pasi Kallinen
74296c3213 Split sitting code into smaller parts
Split sitting on a throne and laying an egg into their
own functions.  No changes to behaviour.
2022-02-20 17:29:37 +02:00
Pasi Kallinen
928677c810 Engraving with Fire Brand burns the text on the floor 2022-02-20 15:59:33 +02:00
Pasi Kallinen
a78419c52a Thrown items can get stuck in webs 2022-02-20 12:23:00 +02:00
PatR
ad32a114a3 fixes entry for pull request 682 - ravens lay eggs
Pull request by entrez:  make ravens oviparous.

Closes #682
2022-02-19 17:32:52 -08:00
Michael Meyer
dc21b3d657 Make ravens oviparous
Ravens are birds, so they should be able to lay eggs.
2022-02-19 17:31:34 -08:00
PatR
661947ebaf some formatting bits in dogmove.c 2022-02-19 14:55:01 -08:00
PatR
e972d0b965 gamelog: hit with wielded weapon for first time
Reordering "killed for the first time" and "hit with a wielded weapon
for the first time" was done by moving the latter to hmon().  Hitting
with an applied polearm also gave the first-hit message since it
bypassed the routine that had been doing so.  But the throwing code
that handles applied polearms calls hmon() for damage, so after that
reordering, the first-hit log message became duplicated if triggered
by polearm usage.

Also, fix a quibble with the wizard mode conduct message given after
never-hit-with-wielded-weapon conduct has been broken.  The message
said "used a wielded weapon N times" when it meant "hit with a wielded
weapon N times".  "Used" is misleading if that wielded weapon happens
to be a pick-axe, so change the message to say "hit with".
2022-02-19 11:24:28 -08:00
Pasi Kallinen
70dafd658d Imps and others cussing the hero wake up nearby monsters 2022-02-19 17:18:07 +02:00
Pasi Kallinen
5e26589fa7 Make killer bee - queen bee transformation apply to hero
if they've polyformed to a killer bee and eat royal jelly.
2022-02-19 17:06:36 +02:00
Pasi Kallinen
26ea5824c1 Reading a magic marker shows the specific red ink color 2022-02-19 13:11:24 +02:00
Pasi Kallinen
c434236f1e Allow creating unhidden traps in special levels
des.trap({ type = "rust", seen = true });
2022-02-19 12:38:28 +02:00
Pasi Kallinen
a1d5464fa7 Knight quest home level has some saddled warhorses
Also, when creating a saddle in a monster inventory in special
level lua code, automatically saddle the monster, if possible.
2022-02-19 11:51:10 +02:00
Pasi Kallinen
04756b5d34 Towels should weigh more than blindfolds
There's more cloth in a towel than in a blindfold.
2022-02-19 10:32:57 +02:00
Pasi Kallinen
41ae240cad Candy bars are bright blue in text mode
There's lots of brown comestibles, but no bright blue.
2022-02-19 10:28:06 +02:00
PatR
45bc2dafa9 Unix command line parsing
Move a bunch of stuff out of main() into new early_options(): '-dpath'
playground directory handling, '-s ...' show scores instead of playing,
and the 'argcheck()' options:  --version, --showpaths, --dumpenums,
and --debug (not to be confused with -D).  Also introduce
| --nethackrc=filename
| --no-nethackrc
to control RC file without using NETHACKOPTIONS so that that is still
available for setting other options.  They can start with either one
or two dashes.  --no-nethackrc is just --nethackrc=/dev/null under the
hood.  '-dpath' can now be '--directory=path' or '--directory path'
but the old syntax should still work.  '-s ...' can be '--scores ...'.

Basic call sequence in unixmain relating to options is now
|main() {
|  early_options(argc, argv[]);
|  initoptions(); /* process sysconf, .nethackrc, NETHACKOPTIONS */
|  process_options(possibly_modified_argc, possibly_modified_argv[]);
|}
Options processed by early_options() that don't terminate the program
are moved to the end of argv[], with argc reduced accordingly.  Then
process_options() only sees the ones that early_options() declines to
handle.

Most early options were using plain exit() instead of nh_terminate()
so not performing any nethack-specific cleanup.  However, since they
run before the game starts, there wasn't much cleanup being overlooked.

chdirx() takes a boolean as second argument but all its callers were
passing int (with value of 1 or 0, so it still worked after being
implicitly fixed by prototype).  Change them to pass TRUE or FALSE.

argcheck() was refusing (argc,argv[]) with count of 1 but then it was
checking 0..N-1 rather than 1..N-1, so it tested whether argv[0] was
an argument instead of skipping that as the program name.  Change to
allow count of 1 with modified argv that has an option name in argv[0].
That happens to fit well with how early_options() wanted to use it.
2022-02-18 14:38:24 -08:00
Pasi Kallinen
cd14456b02 Knights get no caitiff penalty against undead 2022-02-18 21:29:31 +02:00
copperwater
d1b5b39e6d Martial arts users never deal no damage with a clumsy kick
From EvilHack, under the basis that anyone trained in martial arts (or
is in a powerful kicking polyform or wearing kicking boots) should be
immune from landing such a poor kick. This bypass used to happen only
50% of the time; now it happens all the time.

Note that this only averts the "Your clumsy kick does no damage" case:
it remains possible for a powerfully kicking player to kick clumsily and
have the monster evade or block, for example if they are fumbling or
wearing bulky armor.

Also, documentation: I added a comment explaining what the incredibly
dense and confusing logic is with i and j happening here, for the next
poor soul that has to read that code.
2022-02-18 08:12:31 +02:00
Pasi Kallinen
a9712442dd Use defines for pet hunger limits 2022-02-17 20:03:39 +02:00
Pasi Kallinen
390429545e Wield and swapweapon ext cmd fail return values 2022-02-17 11:06:35 +02:00
Pasi Kallinen
953a534cc5 Fix fire auto-swapweaponing to polearm
When you have a polearm as secondary weapon, have a fireassist on,
and press 'f' to fire, the code tries to swapweapon to the polearm.
This failed badly and got stuck in a loop if you were also wearing
a shield - as polearms are two-handed and shield prevents wielding
those.

Add a new "command failed" result, and clear the command queue
in that case. Also make swapweapon and wield actually return
the ECMD flags back to the rhack loop.
2022-02-17 09:12:07 +02:00
Pasi Kallinen
b25138e6d9 Zombies groan 2022-02-16 23:04:02 +02:00
nhmall
f845df9eeb build tested with visual studio 2022 17.1.0 2022-02-16 15:57:03 -05:00
Pasi Kallinen
122634ec9e Hallucinatory rays
When hallucinating, use nonsensical names for the rays
(wands, spells, and breath weapons), and random ray glyphs.

Original code from xNetHack by copperwater <aosdict@gmail.com>,
inspired by a YANI by Kahran042.
2022-02-16 21:09:23 +02:00
PatR
f588a707bb groundwork for nethackrc name on command line
I've implemented 'nethack -nethackrc=filename' as an alternative to
'NETHACKOPTIONS='@filename' nethack' but at the moment it doesn't
work because the command line parsing comes after the run-time config
file has already been processed.  But this part should work, or maybe
have problems spotted and fixed if it doesn't.  The RC file part of
initoptions_finish() has been rewritten so that it won't need extra
replication of
|  set_error_handling()
|  process_file()
|  reset_error_handling()
|  if (NETHACKOPTIONS) {
|    set_error_handling()
|    process_options()
|    reset_error_handling()
|  }
I've tried to test all the combinations mentioned in the comment but
am not sure that I covered everything, particulary for repeating
earlier tests after making incremental changes.
2022-02-16 00:36:26 -08:00
Pasi Kallinen
d958d032a0 Looting will fall through to force
If you have autounlock on, and don't have unlocking tool, but
are wielding a weapon usable for forcing the lock.
2022-02-16 08:49:16 +02:00
nhmall
a7009e2a54 obsolete nhlan.c follow-up
- visual studio project files
- .gitattributes
2022-02-15 15:22:34 -05:00
Pasi Kallinen
679f8c11c9 Fix broken fireassist
When I recently refactored the rhack loop, I also broke fireassist,
as rhack was clearing the command queue unconditionally.
2022-02-15 20:16:31 +02:00
Pasi Kallinen
e65c921ccb Use grounded macro 2022-02-15 18:44:56 +02:00
nhw_cron
b5a4f9ca65 This is cron-daily v1-Feb-11-2022. 000files updated: Files 2022-02-15 08:35:24 -05:00
nhmall
a68cf63a05 another obsolete function reference 2022-02-15 08:16:21 -05:00
nhmall
c0a4b38bf6 remove obsolete function and references 2022-02-15 08:13:27 -05:00
PatR
47c1df6e6f Unix argcheck() usage
The checking for command line flags --version, --showpath, and one
or two others was inside #if CHDIR.  I don't know whether anyone
ever disables that configuration option, but it shouldn't control
whether those flags are handled.
2022-02-14 11:18:08 -08:00
PatR
e4910890ed man page update
For nethack.6, include the recently added 'optmenu' help file among
the list of files.

I didn't do anything about '-windowtype=xyzzy' though; there are some
other command line changes in the pipeline.  The existing '-w' that
the new longer form enhances isn't in there either.

I took my name out for the claim of copyright.  I've barely ever
touched this file.  We see if that breaks the automated processing.
2022-02-14 10:57:49 -08:00
Pasi Kallinen
f2ea207936 Monster or hero placement should avoid wall of water 2022-02-13 18:06:56 +02:00
Pasi Kallinen
c1a6dd40bc Flying should not allow monsters to walk on the wall of water
Also applies to levitating monsters.
2022-02-13 17:54:13 +02:00
Pasi Kallinen
2448ead0c4 Wall of water should block monster lined-up checks
Prevents monsters from eg. throwing items through the water.
2022-02-13 17:22:00 +02:00
nhmall
6005717e6d cut error 2022-02-13 09:10:53 -05:00
nhmall
99ffd027ae remove NHAccess symset, github issue #638
Closes #638
2022-02-13 09:07:41 -05:00
Pasi Kallinen
3b2e4d682d Water walking doesn't help in wall of water 2022-02-13 14:38:54 +02:00
Pasi Kallinen
7302b87dd5 Improve avoiding walls of water 2022-02-13 14:19:40 +02:00
Pasi Kallinen
d26c7dde44 Fix the "wall of water" and paranoid:swim 2022-02-13 11:00:09 +02:00
Pasi Kallinen
73dbd39d98 Use proper locomotion when avoiding water or lava 2022-02-13 10:56:40 +02:00