Commit Graph

97 Commits

Author SHA1 Message Date
nethack.rankin
43f72cc357 yet more wizard mode handling (trunk only)
Reorganize the recent wizard mode control:  move set_playmode() from
xxxmain.c to the core, and have it call new authorize_wizard_mode() to do
the port-specific part.  If the set_playmode() call during startup doesn't
result in running in wizard mode (either because not allowed or user
didn't request it), it will be called again during restore if the save
file is from a wizard mode game.

     For ports which check character name for authorization, players will
have to use `nethack -u whatever -D' (or options for name and playmode) to
restore a wizard mode save file if WIZARD has been changed from "wizard".
plname[] from a wizard mode saved game will always have that value, so if
it's not the right one players will need to get authorized by the startup
code before loading the save file.
2007-02-17 05:25:36 +00:00
nethack.rankin
1659dd5634 more wizard/explore mode control (trunk only)
Wizard mode or explore mode can be forced on (via -D or -X on the
command line, or now via OPTIONS=playmode:debug|explore) when restoring
a saved game; explore mode handling was confined to restgamestate(), but
wizard mode handling was replicated in every main().  Treat `wizard' the
same as `discover'.  Also, prevent a new game started when restore fails
from using the old game's option settings if partial restore attempt got
far enough to load the flags struct.  And update bemain.c and macmain.c
to catch up with the others modified by the playmode patch.
2007-02-16 02:35:30 +00:00
nethack.rankin
5c0a06d6b0 OPTIONS=playmode:normal|explore|debug (trunk only)
[see cvs log for src/options.c for some additional info]
     Relief for the command-line impaired.  Allow player to request
explore or wizard mode via run-time config file or NETHACKOPTIONS.
Validation is left to xxxmain() and has been updated for Unix, VMS, and
ports which share pcmain.  Mac and Be appear to allow any user to access
wizard mode, and may not need any modification, although they'll continue
to have the old buglet of running with both wizard and discover flags set
if player uses `nethack -X -D'.  This may or may not work as-is for the
Qt interface depending upon whether it goes through one of the xxxmain()'s
mentioned above [someone needs to make sure that it doesn't allow Qt on
Unix to bypass the (username == WIZARD_NAME) test when user requests
wizard mode].
2007-02-15 05:22:54 +00:00
nethack.rankin
151dcad8fa hangup revamp (trunk only)
[See cvs log for src/cmd.c for more complete description.]

     This turns clearlocks() into a no-op during the period when the UNIX
port is asking the user to confirm whether to overwrite an existing game.
Also, this removes the duplication of code and function between hangup()
and end_of_input(), and it simplifies the check for whether hangups are
supported by adding new macro HANGUPHANDLING.  (I don't think global.h is
the best place to be defining that but I couldn't figure out where else
it would fit, other than repeating for individual xxxconf.h files.)  And
adds a couple more done_hup checks to try to cope with situations where
rhack() is being bypassed.  Lastly, having readchar() return EOF was
ignored for non-UNIX configs; now everybody gets ESC instead of letting
EOF be seen further inside the core.
2007-01-16 04:54:38 +00:00
nethack.rankin
f2d8a53718 hangup() cleanup; SIGXCPU handling 2007-01-09 05:29:17 +00:00
nethack.allison
4169a3a308 Remove win32 mapi mail from distribution (trunk only) 2006-10-19 13:26:54 +00:00
nethack.allison
084dce82d0 symbol preprocessing (trunk only)
Clean up the preprocessing associated with the
loadable symbol stuff.

Base it on new LOADSYMSETS, rather than on the
previously existing ASCIIGRAPH preprocessor define.
2006-10-02 13:15:50 +00:00
nethack.allison
719721e017 more symbol set stuff (trunk only)
- Instead of checking for the Rogue level, check which
  graphics are engaged (PRIMARY or ROGUESET) in the
  SYMHANDLING() macro.

- track which graphics are active through 'currentgraphics'.

- Instead of symset and roguesymset and symhandling and roguehandling
  variables, have symset and symhandling be arrays of two, with the
  following indexes:
	PRIMARY
	ROGUESET
  That reduced the amount of repeated code.
  (Not to be confused with the 'symset' and 'roguesymset' config file options
   both of which still exist)

- the symbol routines were adjusted to pass
the index , rather than 'rogueflag' and coding to roguesymset etc.

Other than fixing bugs that are encountered, this is probably
the last of the symbol stuff, with the exception of
making the symset and roguesymset config file options
accept the keyword value "default".
2006-09-22 02:00:30 +00:00
cohrs
39d5f48ce0 symhandling followup for Linux
- tile2x11 would not build because drawing.c now depended on strcmpi which
was (via STRNCMPI not being defined) defined to strncmpi which is
implemented in hacklib.c which needs panic which is defined in... I gave up
on tracking down all the loose ends and changed the strcmpi to strcmp,
which means the handling is case sensitive, but it avoids a bunch of
changes to the way the util/Makefile.
- the symhandling changes introduced a chicken and the egg problem for
ASCIIGRAPH on Unix platforms, which was getting the defn from tcap.h but
that does not get included earlier enough nor often enough.  I added a defn
to unixconf.h to mimic ntconf.h, since ASCIIGRAPH is normally defined on Unix.
- options.c included an unused decl for a function named graphics_opts
- Unix Makefile was not installing "symbols".  I'm assuming this isn't
supposed to get the DLB treatment.
2006-09-21 05:09:38 +00:00
nethack.allison
f0bf6c7653 more follow-up (trunk only)
Based on feedback, make the load_symset() call easier
to follow.
2006-09-21 03:47:00 +00:00
nethack.allison
253bf359af drawing overhaul (trunk only)
This is an overhaul to the NetHack drawing mechanism.

- eliminates the need to have separate lists in drawing.c
for the things and their associated explanations by grouping
those thing together on the same inializer in a struct.

- replaces all of these options: IBMgraphics, DECgraphics, MACgraphics,
graphics, monsters, objects, boulder, traps, effects

- drawing.c contains only the set of NetHack standard symbols for
the main game and a set of NetHack standard symbols for the
roguelevel.

- introduces a symbols file that contains named sets of
symbols that can be loaded at run time making it extensible
for situations like multinational code pages like those reported
by <Someone>, without hardcoding additional sets into the game code.

- symbols file uses names for the symbols, so offsets will not break
when new things are introduced into the game, the way the older
config file uchar load routines did.

- symbols file only contains exceptions to the standard NetHack
set, not entire sets so they are much less verbose than all of
the g_FILLER() entries that were previously in drawing.c

- 'symset' and 'roguesymset' config file options for
preselecting a symbol set from the file called 'symbols'
at startup time. The name of the symbols file is not under the
users control, only the symbol set name desired from within the
symbols file is.

- 'symset' config file option loads a desired symbol set for
everything but the rogue level.

- 'roguesymset' config file option loads a desired symbol set
for the rogue level.

- 'SYMBOLS' config file option allows the user to specify replacement
symbols on a per symbol basis. You can specify as many or as few symbols
as you wish. The symbols are identified by a name:value pair, and line
continuation is supported. Multiple symbol assignments can be made on
the same line if each name:value pair is separated by a comma.
For example:
SYMBOLS = S_bars:\xf0, S_tree: \xf1, S_room:\xfa \
	  S_fountain:\xf4 \
	  S_boulder:0

- 'symbols' file has the following structure:
start: DECgraphics
	Handling: DEC
	S_vwall: \xf8			# meta-x, vertical rule
	S_hwall: \xf1			# meta-q, horizontal rule
finish
start: IBMgraphics
	Handling: IBM
	S_vwall: \xb3			# meta-3, vertical rule
	S_hwall: \xc4			# meta-D, horizontal rule
finish

- 'symbols' file added to the source tree in the dat directory

- Port Makefiles/scripts will need to be adjusted to move them into
HACKDIR destination
2006-09-21 01:46:15 +00:00
nethack.rankin
2c0a072ef1 main() reorganization (trunk only)
Move some internals-related code out of port-specific main so that
it isn't duplicated a bunch of times.  One minor side-effect of this
change is that if you auto-pickup something at the very start of a game,
it will happen after any full moon/new moon/Friday 13th message rather
than before.  There's a second change for some:  the shared main() used
by several of the micro ports had a small difference in game play--if you
saved a game while on an engraving, it would automatically be read when
you resume--that will now occur for everybody [Elbereth weenies rejoice!].
pcmain() was also calling update_inventory() at start of play.  That's
unnecessary for new games, where inventory initialization triggers a call
to it for each item added to your pack; but I wasn't sure about restored
games, so everybody gets it there now.

     The Mac and BeOS ports evidently haven't been touched it some time;
they still referenced flags.move which got replaced by context.move quite
a while back.  The Windows GUI code has a declaration for mswin_moveloop()
which appears to be non-existant, but I left it alone.  I assume that the
Qt interface uses the existing main() routines; at least I couldn't find
any start of game code specific to it.  vmsmain's revised main() is the
only one which has been tested.
2006-04-02 07:35:30 +00:00
nethack.allison
143790540b mextra follow up bit 3
More Makefile tweaks
2006-01-07 13:38:29 +00:00
nethack.allison
faa5458843 mextra-related port Makefile mods
This attempts to modify the various Makefiiles for the mextra changes.
Port teams should verify that the modifications are valid.
2006-01-06 05:52:48 +00:00
nethack.rankin
0303517e2d depend.awk (trunk only)
I don't have any way to test this, but zlib.h needs special handling
to prevent compilation problems for anyone who doesn't have it.
2005-12-15 03:42:52 +00:00
nethack.allison
ab1872b928 zlib support; also internal compression changes
o Add support for zlib compression via ZLIB_COMP in config.h (ZLIB_COMP
  and COMPRESS are mutually exclusive).
o rlecomp and zerocomp are run time options available if RLECOMP and
  ZEROCOMP are defined, but not turned on by default if either COMPRESS
  or ZLIB_COMP are defined.
o Add information to the save file about internal compression options
  used when writing the save file, particularly rlecomp and zerocomp
  support.
o Automatically adjust rlecomp and zerocomp (if support compiled in)
  when reading in an existing savefile that was saved with those options
  turned on.  Still allows writing out of savefile in preferred format.
o In order to support zlib and not conflict with compress and uncompress
  routines there, the NetHack internal functions were changed to
  nh_uncompress and nh_compress as done in the zlib contribution received
  in 1999 from <Someone>.

I tagged the sources NETHACK_3_5_0_PREZLIB prior to applying these
changes.
2005-01-22 15:28:15 +00:00
nethack.allison
e7b25a1900 more trunk 3.5 2005-01-02 20:55:41 +00:00
nethack.allison
e9b022d579 housekeeping: mark trunk sources 3.5 (misc) 2005-01-02 17:21:18 +00:00
cohrs
691f81102e last minute Linux README bits 2003-12-06 20:55:15 +00:00
cohrs
57a1c343dd Unix CLI option to set windowtype
Add the ability to select the windowtype on the command line on Unix using
a new -wwindowtype option.  I had thought the proposed patch could core
dump, but the default windowtype selection occurs earlier and ensures
that raw_print will always work.  So, the only problem with the proposed
patch was it didn't move the linux and sco special-case code until after
the selection was made.  That special-case code really should be moved to
to wintty.c, IMO since it doesn't affect other windowtypes.
2003-11-23 21:36:36 +00:00
cohrs
4e09be0163 3.4.3 update
update the linux README
2003-10-21 02:06:27 +00:00
cohrs
e145f93cb5 unix depend update
trunk needs a new dependency on context.h
2003-10-21 01:27:05 +00:00
cohrs
5d2d4d9b84 unix depend update
update the unix 'make depend' output in both branches.
2003-10-21 01:16:16 +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
cohrs
559be58c21 conflicting delayed killers
Introduce a new set of functions to manage delayed killers in the trunk, used
in addressing the various reports of delayed killer confusion.  Since existing
delayed killers are related to player properties, the delayed killers are
keyed by uprop indexes.  I did this to avoid adding yet another set of
similar identifiers.
- the new delayed_killer() is used for stoning, sliming, sickness, and
delayed self-genocide while polymorphed.  Some other timed events don't
use it (and didn't use the old delayed_killer variable) because they
use a fixed message when the timeout occurs.
- A new data structure, struct kinfo, is used to track both delayed and
immediate killers.  This encapsulates all the info involved with
identifying a killer.  The structure contains a buffer, which subsumes the
old killer_buf and several other buffers that didn't/couldn't use killer_buf.
- the killer list is saved and restored as part of the game state.
- the special case of usick_cause was removed and a delayed killer list
entry is now used in its place
- common code dealing with (un)sliming is moved to a new make_slimed function
- attempted to update all make dependencies for new end.c -> lev.h
dependency, sorry if I messed any up
2003-09-29 19:24:20 +00:00
kmhugo
3cd543ce74 lint tidbit 2003-09-28 00:10:23 +00:00
cohrs
db011864c0 U651 - avoid declaring errno unnecessarily
Some changes for standard C platforms, to avoid declaring errno explictly.
Such platforms should declare errno in errno.h, which is already included
in the files in question.
2003-09-24 02:12:22 +00:00
cohrs
2d59f9d8db context build changes for Unix
- removed an extraneous space from Makefile.src that confused GNU make
- unixmain.c still had a couple uses of flags.move
2003-09-22 05:21:53 +00:00
nethack.allison
18e971e442 trunk only: preserving context (sys files)
Pat Rankin wrote:
> collect them all into some new struct and
> save that separately rather than jamming more non-option stuff
> into struct flags.

This patch:
- collects all context/tracking related fields from flags
  into a new structure called "context."
It also adds the following to the new structure:
- stethoscope turn support
- victual support
- tin support
2003-09-21 11:56:11 +00:00
cohrs
40b5b12673 SAFERHANGUP
This is an initial round of SAFERHANGUP hangup changes.  It introduces
SAFERHANGUP, provides the core framework, and enables it for UNIX.

Window-port changes are provided for win/tty, win/X11 and win/gnome.  Qt
changes should be forthcoming after having Warwick look at them.
window.doc is updated so windowport maintainers have an clue what needs to
be done to support SAFERHANGUP.
2003-09-19 03:15:49 +00:00
warwick
0460cc9824 MacOSX can handle >14 character names.
I think the #if is inverted really - what DOES have that limit?
2003-09-11 04:23:52 +00:00
warwick
a80481a5e7 Avoid unixisms. On MacOSX, we cannot assume that the user will use
a command-line option to set their name. Normally they will type
a name if asked - but they won't be asked if we pull their username
as a name.
2003-09-11 04:22:55 +00:00
warwick
656fe3689d Rule for tile2cmp.o needed. 2003-09-11 04:21:12 +00:00
cohrs
0d2ff02af3 README.linux sync
update the README.linux to correspond to the version that was included
in the 3.4.2 binary distro.
2003-09-03 01:22:09 +00:00
cohrs
648b1489a4 X11 install
Build and install the NetHack.ad file, and change the nethack.sh to append
the HACKDIR to the XUSERFILESEARCHPATH.  This means users do not have to
do anything special to use the NetHack X11 resources, nor does it require
teaching nethack where the X11 app-defaults directory is.  The change also
updates the X11 and linux doc files in a corresponding way.
2003-08-26 15:11:58 +00:00
cohrs
c954ee8a10 U555 - solaris compilation bits
- If you have Gnome installed on solaris, the GETRES support wouldn't build.
I don't have access to a solaris system with Gnome installed, but hacked
unixconf.h to force the GETRES code itself to be compiled.  So, I believe the
unixres.c change will work for folks really using Gnome on Solaris.
Whether the rest of the gnome code will build there is beyond me.
- I accidentally left TIMED_DELAY defined and the Solaris build failed.
While solaris has usleep(), this is not part of SVR4 as far as I can tell.
But, SysV does have poll, so I implemented msleep() for SysV systems in
terms of poll.  So, you can now define TIMED_DELAY on any SYSV build.
2003-07-30 23:19:56 +00:00
cohrs
d5ad0b62b6 yet another README.linux update
clarify the installation of NetHack.ad as NetHack.
2003-07-15 00:36:50 +00:00
cohrs
362518c3ac BSD and POSIX
Finally got around to installing OpenBSD (rev 3.3) in a vmware partition.
Found that several #if BSD's were inappropriate for modern BSD's.  Haven't
installed FreeBSD or NetBSD, but based on reading their man pages,
these changes are needed there too.  Mostly due to POSIX time() signature.
2003-07-06 22:06:46 +00:00
jwalz
85c062ce47 Document the process of fighting a cross-compile into submission. 2003-07-05 23:20:22 +00:00
cohrs
a686589b1f guidebook building command
I found that the setting of GUIDECMD sys/unix/Makefile.doc didn't cut
it with groff-1.18.  Also, the command was duplicated in the rule to
generate Guidebook.txt.
2003-06-12 05:16:20 +00:00
jwalz
be7e8373f4 That one $(LD) needs to be an $(LD). $(CC) will link in the non-shared
C library and cause problems with address space for something NetHack's
size.
2003-05-28 17:33:54 +00:00
warwick
47bbe26073 Unify usage of $(CC) vs. $(LD) for linking to always $(LINK), set
to $(CC) by default.
Necessary for C++ builds where the C++ compiler driver must be used
to link, adding libraries that the C compiler driver does not know
about.
2003-05-28 05:36:57 +00:00
cohrs
b8e3cc2b77 another README.linux update
Make the instructions a bit more blow-by-blow.  Re-order them so they
correspond to the Install.unx step numbers.  Explicitly refer to
Install.unx and Install.X11 where appropriate.
2003-05-17 20:35:07 +00:00
cohrs
549736e688 narrative linux install instructions
try to give an example showing actual commands to make it more obvious
exactly how the linux tarball gets installed
2003-04-04 02:00:35 +00:00
cohrs
f6f89a2075 someone finally was confused by glibc 2.2.93 before e-mailing devteam
about README.linux.  Try to clarify the confused version number.
2003-03-21 04:16:08 +00:00
cohrs
f60f576727 Building src objects via Makefile.utl
<Someone> noticed that if one builds something in util and the required .o
files aren't already built in src, the .o gets placed in the wrong place.
Added the missing '-o $@' to the compilation command.
2003-03-02 06:21:29 +00:00
cohrs
b6da412ef1 U277 - Gnome compilation on Redhat 7.2 & 8.0
Reported on RH 7.2 and 8.0.  Compilation failed because system headers that
needed _GNU_SOURCE on these Redhat versions got included before it was
defined.  To ensure _GNU_SOURCE is defined, added an autodetect for it to
config1.h and removed the need to set it in unixres.c.  __linux__ is also
checked elsewhere.
2003-03-02 06:07:19 +00:00
cohrs
bbb6a45c34 minor Unix Makefile mod
I just noticed that the installed owner/group of "recover" was not being
set correctly.  This has no important effect, but does look funny.
2003-02-21 04:32:29 +00:00
cohrs
c6cbe125de updating official Linux binary
I'm updating the official binary to be built on a Redhat 8.0 system.  This
should give the binary some legs if we take a while to get the next release out.
2003-02-21 04:02:38 +00:00
cohrs
500df8346a line length bit 2003-02-12 03:57:41 +00:00