10.0 Table of Contents
2*******************************************************************************
3*                                                                             *
4*            General Documentation for the Client Of Win (COW)                *
5*                                                                             *
6*         Comments, suggestions and bug reports to cow@netrek.org             *
7*                                                                             *
8*                                                                             *
9*******************************************************************************
10
11
12
13                                Table of Contents
14 1.0  Overview
15
16 2.0  Acknowledgements
17
18 3.0  Features
19   3.1  Command Line Options
20   3.2  Pixmaps  (Full Color COW)
21   3.3  Other features
22
23 4.0  Xtrekrc
24   4.1   Windows, fonts, cursors, and colors
25   4.2   Startup options
26   4.3   Combat options
27   4.4   Messaging options
28   4.5   Net options
29   4.6   Galactic/tactical map options
30   4.7   Keymap (and buttonmap) options
31   4.8   Playerlist options
32
33 5.0  Connection Types: UDP, TCP.  Short packets.
34
35 6.0  Macros, RCD, RCM:
36
37 7.0  MetaServer Options
38
39 8.0  Compiling
40
41 9.0  Beeplite
42
43
44
451.0  Overview
46
47     This document describes the COW client, its capabilities, and the client's
48features.  COW started as the successor of the BRM client after release 3.
49BRM started as a merger of the Berkeley client with Rick's Moo
50client.  Since then, all three clients have developed fairly independent of one
51other.  Familiarity with netrek is presumed throughout this document.  Please
52consult the newbie manual for information on the game itself.
53
54     COW has an expire function which insures that players obtain new copies
55regularly.  This alleviates the client's caretakers from having to support
56ancient clients.  Generally, a client will expire one year after its compile
57date.
58
592.0  Acknowledgements
60
61     Many people have contributed to COW and many many others contributed
62to its ancestor clients.  Here is an undoubtedly incomplete list of credits
63presented in no particular order.  Where possible their typical netrek name is
64provided in the hope that you will ogg them:
65
66              Scott Silvey
67              Kevin Smith
68              Rick Weinstein			Videodrome
69              J. Mark Noworolski		Passing Wind
70              Tedd Hadley			pteroducktyl
71              Heiko Wengler			Musashi
72              Andy McFadden			ShadowSpawn
73              Chris Guthrie
74              Ed James
75              Eric Mehlhaff
76              Nick Trown			Netherworld
77              Lars Bernhardsson			lab
78              Sam Shen				Buster
79              Jeff Nelson			Miles Teg
80              Jeff Waller
81              Robert Kenney			Zhi'Gau
82              Steve Sheldon			Ceasar
83              Dave Gosselin			Tom Servo
84              Kurt Siegl			007
85              Kevin Powell			seurat
86	      Alec Habig			Entropy
87              Jonathan Shekter			KillThemAll!
88              James Cameron
89              Michael Kellen
90
913.0  Features
92
93     The COW client has many features that make it stand out from earlier
94clients.  This section will attempt to describe all of its features, including
95those that are common to all clients.
96
97   3.1  Command Line Options
98
99     This section will describe COW features that are selected from the command
100line when the client is invoked.  Selecting "-u" for usage or any invalid
101option will provide a brief summary of this section (-help will work too).
102
103
104   3.1.1  SERVER SELECTION
105
106     The "-h server_address" option will allow the user to select a specific
107server.  The client will look to the .xtrekrc file for a default server should
108this option be absent.  Examples of server addresses would be 136.165.1.12 or
109starbase.louisville.edu.
110
111   3.1.2  PORT SPECIFICATION
112
113     The "-p port_number" option will allow the user to select a specific port
114address.  An example of a port_number would be 1111, 2222, or 2592.
115
116   3.1.3  DEFAULTS FILE SPECIFICATION
117
118     The "-r defaultsfile" option will allow the user to select a defaults file
119other than .xtrekrc.  The defaults file contains all of the user selectable
120defaults (please see Section 4.0 for more information on .xtrekrc).  Using
121this option, two users can run netrek from the same userid / account and still
122have unique defaults files.
123
124   3.1.4  VERIFICATION OPTIONS
125
126     [deleted]
127
128   3.1.5  RECORD GAME OPTION
129
130     The "-f record_file"  will record the game into record_file.
131
132     The "-F record_file"  will play the recorded game from record_file.
133
134   3.1.6  METASERVER OPTION
135
136     The "-m" option will instruct the client to search the Meta Server at
137metaserver.ecst.csuchico.edu, port 3521 and present the user with a list of
138available servers.  The user may then select the most desirable server
139directly from the client.
140     Alternatively, the "-k" option may be used to show the "known servers",
141using the same format as the Meta Server list.  The client generates
142a list of "known servers" after each call to the meta server but only if
143the "metaCache" option is set in your .xtrekrc.
144    To find out about customising the meta-server, set the Chapter
145"MetaServer Options", later in this document.
146t
147
148   3.1.7  AUTOLOGIN OPTION
149
150     The "-A password" allows the client to automatically enter the specified
151character password without having to prompt the user.  This option is normally
152used with the "-C character_name" option, which automatically enters the
153character name.  The "-C" option must be followed by a character name string.
154
155   3.1.8  NEAREST COLOR OPTION
156
157     The "-n" option allows the client to accept the "closest match" to the
158colors requested for drawing.  How good the match is is up to your windowing
159software.
160
161   3.1.9  NO PIXMAPS OPTION
162
163     The "-b" option disables the use of color pixmaps by the client.
164
165   3.1.10  GHOST START
166
167	After a client dies, or even if you kill the client on purpose,
168	you can recover the game and continue playing.  In fact the
169	server won't have any idea that anything but bad lag (called
170	a ghostbust) has occurred.
171
172	The benefits of this feature include the ability to change
173	displays, recompile code (if you happen to be a code hack),
174	or simply recover from a core dump.
175
176	In order to use it, you have to pay attention to two numbers
177	which are displayed when you connect to the server.  A line
178	like this appears:
179	***  socket 11323, player 0  ***
180
181	This indicates which player slot you have been assigned, and
182	which socket number has been chosen as your ghostbust socket.
183
184	Now in order to restart, just do:
185	cow -G 0 -s 11323
186
187	The important options are -G followed by the player slot you
188	occupy, and -s followed by the ghostbust socket.  Notice that
189	you don't even specify a server!
190
191	This feature may NOT work on all servers.  Many server gods use
192	server code which is too old to support this feature.  Also,
193	keep an eye out for small details that are off.  It is NOT
194	logically possible to account for everything with this feature.
195	Such things as the motd are not resent by the server when you
196	connect, so you won't have that around anymore.  Further, the
197	client won't know who it is even connected to (see above), thus
198	don't be shocked if the client claims you are connected to a
199	bogus server.
200
201	WARNING:  Some servers have *very* short ghostbust timeout
202	periods.  You must reconnect before this timeout expires or
203	your slot will be given to someone else, you won't be able
204	to reconnect.  On most servers it is around 6 minutes long.
205
206   3.1.11 ESOTERIC OPTIONS
207
208     -c	this will check server_port-1 and spew out
209	a list of all players currently playing on that server - not all
210	servers are intelligent enough to do this
211
212     -s	(integer) passive port to use, generally only server gods would ever
213	use this option and even they can get by without it
214
215     -l	(filename) file to log messages
216
217     -d	(string of chars) display name
218
219     -H	(string of chars) Gateway name
220
221     -P	log packets: generally don't want to use this
222
223     -t	(string of chars) title - the name of the window the client makes
224
225     -D	debug mode
226
227     -v	display version/expiration info and exit
228
229     -i ignore signals (SIGSEGV and SIGBUS)
230
231   3.2  Pixmaps  (Full Color COW)
232
233     With the release of COW 3.00, dynamic color images are available.  No
234color images have been compiled into the client, so without the additional
235files (described below) the client will behave as before.
236
237   3.2.1  Setup
238
239     The xpm files should be available at the same site from which you got
240the client, in a file named pixmaps.tgz (PIXMAPS.ZIP for windows users).
241
242>>>   YOU MUST DOWNLOAD AND UNPACK THIS FILE TO USE THE COLOR FEATURES.    <<<
243
244     It should create a subdirectory named "pixmaps" which should have several
245(obviously named) subdirectories.  There should be several XPM files in each
246(except for Planets, which has a further subdirectory).  UNIX users will see
247that they are gzipped to save space.  You do NOT need to ungzip them unless
248you do not have gzip on your machine.
249
250>>>   DO NOT REARRANGE OR RENAME THESE FILES IF YOU WANT TO USE THEM.      <<<
251
252     You need to add a line to your .xtrekrc telling the client where to look
253for the pixmaps.  If you do not, it will assume that they are in a subdirectory
254of the directory you are in when you start the client.  The option is called
255"pixmapDir".  Tilde and environment variables WILL NOT WORK.  Relative paths
256will only work if you always start netrek from the same directory.
257
258     You should be ready to rock and roll.  Fire it up.  You may see some
259warnings about not being able to read some pixmaps.  Some of the pixmaps
260that the client looks for haven't been drawn yet.  Feel free to make your
261own set.  OTOH, if you see any lines which read
262
263 "TYPE <type> PIXMAPS NOT AVAILABLE"
264
265it means that none of a certain type of pixmap were found.  Check to make sure
266that the pixmaps are where you told it to look.  If they are, and you are on
267a UNIX system, you may not have gzip installed.  Go get it from any GNU mirror
268and either install it or use it to ungzip the XPM files.
269
270   3.2.2  Configuration
271
272     In addition to simply creating your own XPMs with a paint program, you
273may want greater control over the pictures used.  For example, you may find
274the explosions are too pretty, and you are dying because you forgot to dodge.
275The crude approach is to just remove that pixmap.  The client will default back
276to the standard bitmaps in this case.
277
278     The more elegant approach is to turn off just those pixmaps you don't
279like and keep the rest.  This also allows you to switch back and forth WITHOUT
280having to exit and restart.  So if the machine you are playing on is busy
281today, you can turn off the pixmaps until things improve, then switch back to
282full color without losing your 5 kills.
283
284     Pixmaps can be turned on or off in groups on the new "Pixmap Menu" in the
285options window (shift-O).  Each line in the window also corresponds to an
286.xtrekrc resource which you can use to set the initial values.  If one type
287of pixmaps is not available, you will be unable to turn on that option.
288
289     resource name          default      description
290
291       indPix                on      \
292       fedPix                on       |  Control whether or not the XPMs
293       romPix                on       |  for the ships of a given team
294       kliPix                on       |  should be used
295       oriPix                on      /
296
297       weaponPix             on          Torps and plasmatorps & their clouds
298       explosionPix          on          ship and starbase explosions
299       cloakPix              on          fade-in/-out and cloak icon
300       mapPix                on          Color Planet icons on galactic
301                                         (replaces the "colorgalactic" option)
302
303       backgroundPix         on          Background stars & genocide/gb images
304                                         (replaces the "babes" option)
305
306       ownerhalo             off         Draws a colored ring around each
307                                         planet on the galactic
308
309as a convenience, the option "shipPix" may be used to control all of the
310ship XPMs in one line.
311
312         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
313         +         POWER USERS                                        +
314         +                                                            +
315         +  The MegaResource "pixFlags" can be used in your .xtrekrc  +
316         +  to save a bit of typing.  Simply bitwise OR together the  +
317         +  things you want turned off:                               +
318         +                                                            +
319         +       0x0001    IND pixmaps                                +
320         +       0x0002    FED pixmaps                                +
321         +       0x0004    ROM pixmaps                                +
322         +       0x0008    KLI pixmaps                                +
323         +       0x0010    ORI pixmaps                                +
324         +                                                            +
325         +       0x0020    Weapons                                    +
326         +       0x0040    Explosions                                 +
327         +       0x0080    Cloaking                                   +
328         +       0x0100    Galactic Map Planet Icons                  +
329         +                                                            +
330         +       0x0400    Backgrounds                                +
331         +                                                            +
332         +       0x1000    Halos                                      +
333         +                                                            +
334         +  so, for exaple, no halos and no explosions would be       +
335         +  specified as:  (0x1040=4160)                              +
336         +                                                            +
337         +    pixFlags:  4160                                         +
338         +                                                            +
339         +                                                            +
340         +  (Note that this OVERRIDES all the other resources)        +
341         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
342
343
344     If you hate them all, you can either set the "pixmapDir" to "None" or
345start the client with the -b (bitmap only) command line option.  Then go ahead
346and delete all of the XPMS.  Go ahead.  We don't mind at all.  It's not like
347we put any WORK into this ...  :,-(
348
349   3.2.3  Babes/M31 and Generalized Backgrounds
350
351     Gone.  You can put up any picture you like when you GENO, GB, or just
352enter or hit shift-K.  Just specify the genocide.xpm, ghostbust.xpm and/or
353hello.xpm.  It's really none of my business what you look at in your off time.
354
355     Absolutely no picture will be shown if you do not have an XPM in the
356specified place.  It didn't belong in the client in the first place.
357
358     DEAL WITH IT.
359
360     And BTW, the ' key (quote) has the default action of retiling your local
361and galactic windows with the normal background (either black or your specified
362pixmap) to repair the damage done by the other possible pix.
363
364   3.2.4  AGRI pixmaps and FEATURE_PACKETS
365
366     The client shows a different pixmap for AGRI planets than all others.
367This was announced, voted on and overwhelmingly adopted (80%+ in favor). But
368JUST IN CASE, this option can be disabled at the server by use of the
369feature packet "AGRI_PIXMAP".
370
371     Users can choose to remove the AGRI.xpm file.  The client will default
372to using the regular planet pixmap if it is missing.
373
374   3.3  Other features
375
376*** Hockey Lines
377Due to popular demand, hockey lines have been added.
378For those of you who want to see a hockey rink on the tactical,
379just use the features menu (shift-O) and toggle them on.
380
381You get:
382   Blue lines (blue)
383   Center line (red)
384   Side lines, i.e. the rink edges (grey)
385   Goal lines (red)
386   Goal boxes (the color of the team)
387
388They are a little awkward at first, but once you get used to them,
389you'll wonder how you lived without them.
390
391Since this is a first pass, I'm looking for more input on what
392would make them better.  Here are some of my comments:
393
3941)  Lines are hardcoded into the software.  They should be
395based upon planet location, so the hockey gods can move the
396planets around.
397
3982)  You either have them all or none.  Perhaps the set of
399desired lines should be configurable from the xtrekrc.  Also,
400you cannot change the colors.
401
4023)  Lines on the galactic would look pretty
403
404If you have any comments, mail them to kantner@hot.caltech.edu
405
406*** Shell escape tool
407You may execute any Unix shell command within the client. Read your mail
408now within the client. To do so, just send a message to the destination
409"!" and you get a shell prompt. Enter the command and its output will
410be displayed in the tools window. Works also with macros to "!".
411You may disable it in the .xtrekrc for security reasons with shellTools: off
412CAUTION: The client will be blocked for the time the command is executed.
413Also some programs suspend the client if it is started in the background.
414
415*** Fast quit
416Hitting 'q' will quit the client without ever going back to the
417team selection window, the normal 'Q' still goes back to the team
418selection window.
419
420*** Reread defaults file
421You can reread your netrek default file by hitting '&', it is also
422possible to enter a new default file name at any time by sending
423a message to 'M' which contains the file name.
424
425*** Galactic rotation
426For those who like to fight with some specific orientation, the
427galaxy is now rotate-able.  This can be done in the options window.
428This works now also with short packages.
429
430*** Gateway
431Lots of cool gateway code in this client, unfortunately I don't
432use nor do I know what it does other than get past firewalls.
433
434*** Observer support
435Many servers allow you to *observe* a game instead of playing, sort of
436like watching football.  COW supports this feature.  Currently in order
437to be an observer, all you have to do is connect to the observer port
438for a server.  A good guess at the observer ports for a pickup server is
4392593; for INL, 4000 and 5000.
440
441*** Lagmeter
442This is pretty pointless: a continuously updated bar graph of how bad
443your lag is.  Perfect for the whiny player who needs an excuse. ;)
444This can be turned on with the '\' key, from the options menu, or from
445the .xtrekrc.  (lagmeter.parent, lagmeter.mapped, lagmeter.geometry)
446Requres netstats to be on.
447
448*** Pingstats
449In a similar vein, the pingstats window can be turned on from the .xtrekrc,
450the options menu, or the key ','.
451
452*** The Pig call
453COW supports sending five spaces to a player as the de facto method of
454requesting info on the client.  (So called because it was used by the Pig
455borg, AFAIK.)  For instance:
456	COW 3.00pl0, linux, 03/03/98, RMCSE365AmTsr
457The letters in the fourth field indicate which #ifdefs were specified
458at compile time.  Possibilities are:
459M: Macros
460D: Debugging information
461C: Corrupted packet handling
462S: Short packets
463E%d: Expiration date, in days after compilation
464A: Stat window contains a slider showing armies carried
465   (does not affect the newdashboard code)
466m: Metaserver support
467T: "Various tools, like shell escape, ..."
468s: Sound
469r: RCD support
470
471*** Improved help window:
472	Basically, this was done to show what keys were
473    actually mapped to what functions.  Every key function has a line in
474    the help window. Here's a sample line:
475
476    s gb  Toggle shields
477    ||\\_ The 'b' key has been mapped to toggle shields
478    || \_ The 'g' key has also been mapped to toggle shields
479    |\____This space is always there, as a separator.
480    \_____This is the default key for this function, and the hook that you
481	  use when defining things to this function. I.e. to set the 'g'
482	  and 'b' mappings mentioned here, you'd have to put 'gsbs' in
483	  your .xtrekrc or your keymap options.
484	  NOTE:  This character will appear here, even if it is mapped
485		to something else.
486
487*** Message-Warp:  The non-warp version.
488   	Hit the 'm' key and start typing. Your cursor changes to the
489    'text' cursor, and all keystrokes go to the message window.  Sending
490    the mesage or the ESC key ends this.  Again, the mouse pointer is not
491    moved.
492
493*** Documentation Window
494
495The documentation window is used to view documentation while actually
496playing.  In order to do this you must either have the COW.DOC file in
497the directory you are running the client from or you must set the
498documentation resource value to the full path to the file with the
499documentation.  Control-y brings this window up.  Also available via
500shift-O option menu under "info."
501
502The 'f', 'b' keys scroll forward and back by 28 lines, like the motd
503window.  While 'F' and 'B' keys scroll by 4 lines.
504
505In .xtrekrc:
506documentation:	/home/kensho/powell/misc/netrek/brm3002/myCOW.DOC
507
508*** Xtrekrc File Window
509
510The xtrekrc file window is used to view your current xtrekrc file online.
511It is currently very stupid in that if you used the command line
512option '-r' to specify your xtrekrc file, this viewer will not find
513it (it's currently hardwired for $HOME/.xtrekrc:(  Control-X (that
514is control-shift-x) will bring up this window, or shift-O under "info."
515
516The 'f', 'b' keys scroll forward and back by 28 lines, like the motd
517window.  While 'F' and 'B' keys scroll by 4 lines.
518
519*** Auto torp aiming and dodge
520Get outa here...
521
522
523***************************************************************
5244.0 Xtrekrc:
525***************************************************************
526
527COW looks for a .xtrekrc file in your home directory.  Alternatively
528this file may be called home, and it may be in whatever directory
529the client is executed from.
530
531A file called "SAMPLE.xtrekrc" should have been included with this
532client.  Below is an attempt to explain the many, many options you
533can include in a .xtrekrc file.  Some of this was borrowed from
534various other documentation such as MOO documentation.
535
536For other options, see MACROs and Receiver Configurable Distress Calls.
537
538
539   4.1   Windows, fonts, and colors
540
541rank.mapped:	(on/off)
542rank.parent:	(window name) ie root, review_all, netrek, etc
543rank.geometry:  (geometry specification) ie 80x26+554+624
544		Every window may have these three defaults set for it.
545		Some windows are resizeable, others are not.
546
547font:		fixed
548bigfont:	lucidasans-24
549italicfont:	-schumacher-clean-medium-i-normal--10-*-*-*-c-80-iso8859-1
550boldfont:	-schumacher-clean-bold-r-normal--10-100-*-*-c-60-iso8859-1
551		Specifies which fonts you want to use,
552		not sure that all of these are still used in COW
553
554The personalized cursor extensions allows the user to specify their own
555cursors for the map, local, text, menus and info list windows.
556
557localCursorDef:		/usr/me/.local.xbm
558mapCursorDef:		/usr/me/.map.xbm
559infoCursorDef:		/usr/me/.info.xbm
560textCursorDef:		/usr/me/.text.xbm  # the mask would be called /usr/me/.text.xbm.mask
561arrowCursorDef:		/usr/me/.arrow.xbm
562
563For infoCursorDef, textCursorDef, arrowCursorDef an optional mask may
564be specified.  To specify a mask, first create your new cursor, say called
565mycursor, then create the mask and call it mycursor.mask.  They both need to
566be on the same path.  Cursor and mask *must* be the same size, if not the
567cursor cannot be used (why anybody would want to do this makes no sense,
568but...:)
569
570color.white:            white
571color.black:            black
572color.red:              #ffa0ff
573color.green:            green
574color.yellow:           yellow
575color.cyan:             cyan
576color.light grey:       light grey
577		Specify what colors should be used by the client.
578		This is generic X color specification (right?).
579		All the possible left hand sides are listed I think.
580color.Ind:              light grey
581color.Fed:              yellow
582color.Rom:              tomato
583color.Kli:              green2
584color.Ori:              light steel blue
585		Race Colors may be set separately.
586
587   4.2   Startup options
588
589name:		(string of chars) default name
590
591password:	(string of chars) default password; if both name and password
592		are included in your .xtrekrc, COW will attempt to do
593		an autologin for you.
594
595server:		bronco.ece.cmu.edu
596		default server that is called when no -h argument is
597        	specified.  Leave this blank to have cow call the
598		metaserver by default.
599
600port:		2596
601		default port that gets called. The compiled default is 2592.
602
603server.rio: 	riovista.berkeley.edu
604	        Allows you to specify a server abbreviation.  Thus instead of
605		using "-h riovista.berkeley.edu" you now use only "-h rio"
606port.rio:	4566
607		default port that gets called for the server abbreviation.
608
609showmotd:	(on/off) display motd if in wait queue
610
611autoquit:	(integer) length of time to wait on team selection screen
612		before Auto-quit exits for you.
613
614ignoreSignals:	(on/off) ignore SIGSEGV and SIGBUS.  COW will try to reset
615		the game so you can continue.
616
617   4.3   Combat options
618
619warnShields:    (on/off) In color, you can have your shield be color of your
620                alert status (red, yellow, green)
621
622varyShields:	(on/off) Shield color and bitmap depends on shield strength.
623
624varyHull: 	(on/off) graphical indication of your hull condition.  Kinda
625		like varyShields.  When varyHull is on your ship looks like it
626		has small spikes sticking out of the shields, each spike
627		representing 12.5% of your hull strength.
628
629cloakChars:	(string of one or two chars) what to use for cloakers on
630		galactic instead of '??'.
631
632enemyPhasers:	(integer 0-10) enemy phasers thickness at starting point.
633
634phaserShrink:	(integer 0-16) Don't draw the first "phaserShrink"/16th of
635		your phaser.  This makes it easier to see incomming torps.
636
637theirPhaserShrink: (integer 0-16) "phaserShrink" for other players' ships.
638
639shrinkPhaserOnMiss: (on/off) Use "phaserShrink" and "theirPhaserShrink" even
640		if a phaser misses.
641
642highlightFriendlyPhasers: (on/off) phaser hits by your team are solid white
643                          (instead of the default "rainbow" a la COW-lite.
644
645showtractorpressor:  (on/off) toggle showing tractor/pressor beams
646
647continueTractors: (on/off) off = turns off the visible t/p after 2 updates.
648
649showstats:	(on/off) show stats window
650
651
652   4.4   Messaging options
653
654newDistress:	(on/off) right-justified distress call or not, default value
655		is to right-justify (on)
656
657reportkills:    (on/off) display kill messages or ignore these
658
659censorMessages: (on/off) attempts to remove profanity from messages sent.
660                They'll look like this: "F0->FED  @$%# you twink"
661
662logging:	(on/off) displays messages to stdout if set.
663
664logfile:	(filename) alternatively saves messages to a text file
665
666PhaserMsg:	[0, 1, 2, 3, 4, 5]
667
668  0 = Don't log phaser hits
669  1 = Log phasers on all window
670  2 = Log phasers on team window
671  3 = Log phasers on indiv window
672  4 = Log phasers on kill window
673  5 = Log phasers on review window
674
675  the additional phaser window is controlled just like the other
676  review windows.  e.g.:
677     review_phaser.mapped:   on
678     review_phaser.parent:   netrek
679     review_phaser.geometry: 81x2+0+555
680
681
682   4.5   Net options
683
684netstats:	(on/off) collect network statistics for measuring lag
685
686netstatfreq:	(integer) how often to update the network statistics
687
688tryShort:	(on/off) default setting for whether to use short packets.
689
690tryUdp:		(on/off) try to automatically connect with UDP
691udpDebug:       0 = OFF   1 = ON (conect msgs only)  2 = ON (verbose output)
692udpClientSend:	0 = TCP only,  1 = simple UDP
693		2 = enforced UDP--"state", including the following flags:
694			SPEED
695			DIRECTION
696			SHIELD (up or down)
697			ORBIT
698			REPAIR
699			CLOAK
700			BOMB
701			DOCKingPERMission
702			PLAYerLOCK and PLANetLOCK
703			BEAMing of armies
704		3 = enforced UDP--"state & weapons" all of the above plus
705    			PHASER commands
706    			PLASMA commands
707		Note that TORP commands are not included.
708
709udpClientRecv:  0 = TCP, 1 = simple, 2 = fat,
710		3 = double (not currently supported)
711
712udpSequenceChk: ?
713
714
715   4.6   Galactic/tactical map options
716
717useTNGBitmaps:	(on/off) Different bitmaps for fed.  Not the new pixmaps.
718
719ROMVLVS:	(on/off) Replacement for dorky Rom CA bitmap.  Not a pixmap.
720
721showIND:	(on/off) mark independent planets with a X drawn over it.
722
723newPlanetBitmaps: removed.  Use showlocal/showgalactic instead.
724whichNewPlanetBitmaps: ditto.
725
726newDashboard:	(integer 0-3) Uses sliding bars instead of numbers to display
727		speed, shield/hull status, etc, on the dashboard.  1 is
728		'vanilla'; just like the old stat graph.  When set at 2,
729		besides defaulting to green, displays how much hull/shield
730		you have LEFT, not how much you have lost (i.e. this is an
731		optimistic dashboard, it sees the cup as half full ;).  At 3,
732		uses triangle sliders AND numbers.
733
734keepInfo:	(integer) number of updates to keep info windows on the
735		screen before automatically removing them
736
737extraAlertBorder:  Draws border in internal netrek windows, as well
738        as external ones (which get ignored in X11 with window-managers)
739
740forcemono:     if on, the client windows are set to be monochrome
741
742redrawDelay:  if >0 synchron screen refresh every n/10 sec
743		(useful for slow X-terms and high lag).
744
745showgalactic: 	0 = nothing, 1 = ownership, 2 = standard resources,
746		3 = MOO/ZZ resources, 4 = rabbit ear resources
747		Determines what kind of information will be shown on planets
748		displayed on the galactic.  With option 2, the planet bitmap
749		has symbolic icons for armies > 4, repair, and fuel resources.
750		With option 3, the planet has a dot in its center to represent
751		fuel and four tickmarks in the corners to represent repair.
752		With option 4, an ear on the left indicates repair and an
753		ear on the right fuel.
754
755showlocal:	0 = nothing, 1 = ownership, 2 = standard resources,
756		3 = MOO/ZZ resources, 4 = rabbit ear resources
757		Determines what kind of information will be shown on planets
758		displayed on the local map.
759
760showLock:	0 = none, 1 = galactic, 2 = local, 3 = both
761		Where to display the locked-on triangle.
762
763showplanetnames: (on/off) turn on planet names by default.
764
765colorgalactic:   Use color pixmaps instead of bitmaps on galactic.
766(Obsolete -- see section 3.2.2)
767
768showstars:    Use starry background on galactic map.
769(Obsolete -- see section 3.2.2)
770
771Color pixmap controls.  (See section 3.2.2)
772resource-- indPix:        (on/off)   default on
773resource-- fedPix:        (on/off)   default on
774resource-- romPix:        (on/off)   default on
775resource-- kliPix:        (on/off)   default on
776resource-- oriPix:        (on/off)   default on
777resource-- weaponPix:     (on/off)   default on
778resource-- ex:plosionPix  (on/off)   default on
779resource-- cloakPix:      (on/off)   default on
780resource-- mapPix:        (on/off)   default on
781resource-- backgroundPix: (on/off)   default on
782resource-- pixFlags:      (int)      default 0  (== all on)
783
784ownerhalo:	(on/off)   default off
785		Draw a circle around the planet pixmap in the color of the
786		owning team. (pixmaps only)
787
788
789   4.7   Keymap (and mouse) options
790
791keymap:		(string of chars) remaps the keyboard, syntax is simply the
792		key to map onto, followed by the key to map, repeated.
793		Thus to map the "fire torps" key 't' onto 'f', use
794		keymap: ft
795		(See also the sections on control keymaps and ship
796		dependent keymaps below.)
797
798ignoreCaps:   (on/off) ignore the Capslock key.
799
800buttonmap:  	map the mouse buttons to something else.
801       	 	i.e. the default mapping is:
802         	1t2p3k
803
804shiftedMouse:   (on/off)
805	The shift and control keys can be used to modify the default function
806	assigned to a button.  The shift key acts as a switch which brings an
807	alternate mapping to the mouse buttons.  In a similar way control and
808	shift + control act to switch mappings again.
809	Breakdown of values:
810		Normal buttons 1, 2, 3,
811	<shift + button 1, 2, or 3> maps to 4, 5, 6,
812	<control + button 1, 2, or 3> maps to 7, 8, 9,
813	<shift + control + button 1, 2, or 3> maps to a, b, and c.
814	This remaps all the possible mouse buttons:
815	buttonmap: 1t2p3k4c5s6y7E8z9xaFbdcD
816
817mouseAsShift:	(on/off) Not to be confused with "shiftedMouse." ;)
818                Makes the mouse buttons 1-3 act like shift keys.  Each button
819		"shifts" or causes a new set of key mappings to come into
820		effect: Instead of the keyboard remapping the mouse, the
821		mouse now remaps the keyboard.  Each key on the keyboard now
822		has several possible mappings.  Use the b[123]keymap
823		option to specify commands.  For example, to have the 'a'
824		key fire a torpedo while button1 is pressed, and a phaser
825		while button2 is pressed, add the lines:
826		b1keymap: at
827		b2keymap: ap
828
829continuousMouse: (on/off) allows you to cause multiple commands to be issued
830                 to the server when dragging the mouse with a button down.
831                 For instance you can drag the mouse while pressing button 3
832                 (which defaults to set_course).  Saves on button wear and
833                 tear. ;)
834
835  4.7.1  Ship dependent keymaps, buttonmaps and .xtrekrc files
836
837You can add one of: sc, dd, ca, bb, as, sb, ga, att, default to the
838following default options to override them based on ship type:
839
840rcfile-??:  	ship specific .xtrekrc file,
841keymap-??:	ship dependent keymap,
842ckeymap-??:	ship dependent CTRL keymap,
843buttonmap-??:	ship dependent buttonmap.
844
845It will automatically reload the specified defaults if you change the
846shiptype. If a ship-specific option is not specified, the default
847option is used for that ship.  For e.g., keymap-sc: will be used
848instead of keymap: whenever you switch to an SC.
849
850Used well, this is a very powerful feature.  For instance, you might
851bind a key to your prefered cruising speed, with a different speed for
852each ship type.
853
854Here's part of my keymap as an example.
855# default: q = warp 2, w = 1/2 maxwarp, e = maxwarp
856ckeymap: 	q2w#e%
857# override some of the above, based on ship type
858ckeymap-ca: 	w4
859ckeymap-bb: 	w3
860ckeymap-sb: 	q1w2
861
862  4.7.2  Control keymaps
863
864Control keymaps (ckeymap) handle the remapping of keys in an
865analoguous manner to the normal keymap (keymap).  The control keymap
866also allows the user to map both *upper* and *lower* case letters keys
867when pressed with the control key.  This means that ^u and ^U are
868*different* keys when it come to mapping them.
869
870Any combination of normal keys and control keys can be mapped to one
871another.  In other words, you can map from control key to control key,
872control key to normal key, normal key to normal key, and normal key
873to control key.
874
875New format for ckeymap is:
876c = any printable ascii character.
877^ = introduce control mapping (the key '^' not control + key.)
878
879Each entry is a pair, like:
880cc              # regular format
881c^c             # regular->control
882^cc             # control->regular
883^c^c            # control->control
884
885Example ckeymap:
886ckeymap:                 ^a%r^b^m^ca%d5 tfDFf^^E
887
888Special case:
889The '^' must be mapped with a double ^ ("^^") in either the bound or
890binding key position.
891
892Notes:
893* If you experience difficulties (you shouldn't) you might wish to use
894  a normal keymap and a new ckeymap in combination.  Both are read in,
895  the keymap first then the ckeymap.  This means that if a key is
896  defined in both the keymap and ckeymap, the ckeymap's definition
897  will be the one used.
898* If you wish to use ckeymaps in conjunction with keymaps based on
899  ship type (keymap-??, etc.), note that ckeymap still overrides
900  keymap-??.  For e.g., if you define a key in ckeymap and in
901  keymap-bb, the ckeymap binding hides the other binding.  You should
902  use ckeymap-bb instead.
903* Since ckeymaps are a superset of keymaps, you might consider using
904  ckeymaps in all situations where you would use keymaps.  This will
905  make things a lot simpler for you.  (But keep in mind that `^' has a
906  special meaning in ckeymaps!)
907
908Analogously, control keys may be used for buttonmap, singleMacro and
909all macro and RCD definitions.
910
911   4.8   Playerlist options
912
913newPlist:	(on/off) new playerlist, instead of total kills, deaths
914		offense and defense it shows login and stats (off+bomb+planet).
915		Provided for backwards compatibility; use playerListStyle
916		instead.
917
918sortPlayers:    (on/off) Sort the playerlist with the enemy team players
919		first, then your team and then the neutral players.
920
921sortMyTeamFirst: (on/off) Modifies "sortPlayers" so that your team is sorted
922		immediately before the enemy teams.
923
924partitionPlist: Add blank lines to a sorted player list to separate the
925		different teams.  This is useful in mono where the teams
926		can not be distinguished by their color.
927
928playerListStyle: (0-4) The style for the player list.  The options are:
929
930		(0) Custom player list as defined by the
931			playerlist variable above,
932		(1) Old player list,
933		(2) Traditional COW player list,
934		(3) Kill watch player list,
935		(4) BRMH Player list.
936
937		If "playerListStyle" is set, newPlist is ignored.
938		Use the options menu (shift-O) to try the different styles.
939                If no options are specified, defaults to (1).
940
941playerlist:	(string) The layout for the player list.  What it allows
942you to do is specify which columns of the player list you want to show
943and in what order.  The following is a table of the available columns.
944
945Spc  Let   Name                 Header
946---  ---   -------------------- -------------------
947  3  'n'   Ship Number          " No"
948  3  'T'   Ship Type            " Ty"
949 11  'R'   Rank                 " Rank      "
950 17  'N'   Name                 " Name            "
951  6  'K'   Kills                " Kills"
952 17  'l'   Login Name           " Login           "
953  6  'O'   Offense              " Offse"
954  6  'W'   Wins                 "  Wins"
955  6  'D'   Defense              " Defse"
956  6  'L'   Losses               "  Loss"
957  6  'S'   Total Rating (stats) " Stats"
958  6  'r'   Ratio                " Ratio"
959  8  'd'   Damage Inflicted(DI) "      DI"
960  1  ' '   White Space          " "
961
962options available when compiled with PLIST1
963  6  'B'   Bombing              " Bmbng"
964  6  'b'   Armies Bombed        " Bmbed"
965  6  'P'   Planets              " Plnts"
966  6  'p'   Planets Taken        " Plnts"
967 17  'M'   Display/Host Machine " Host Machine    "
968  7  'H'   Hours Played         " Hours "
969  6  'k'   Max Kills            " Max K"
970  6  'V'   Kills per Hour       "   KPH"
971  6  'v'   Deaths per Hour      "   DPH"
972
973options available when compiled with PLIST2
974  9  'w'   War staus            " War Stat"
975  3  's'   Speed                " Sp"
976
977So for example if you just wanted to see names and rank you'd add this
978line to your .xtrekrc:
979
980playerlist: NR
981
982The styles defined by "playerListStyle" are
983	1: Old style 		= "nTRNKWLr O D d "
984	2: COW style 		= "nTR N  K lrSd"
985	3: Kill watch style	= "nTK  RNlr Sd"
986	4: BRMH style		= "nTR N  K l M"
987
988     In order for this mod to be in effect you must compile with PLIST
989defined.  The things shown after PLIST1 are only available if you
990have PLIST1 defined, the same goes for the things after PLIST2, but
991you must have PLIST defined or neither of these will do anything.
992
993NOTE FROM SOURCE KEEPER:
994PLIST2 is not active in COW currently.  Some players feel that placing
995speed on the playerlist gives a strategic advantage.
996
997NOTE ON SB STATS :
998On servers which support the SBHOURS .feature, you will see slightly
999different things when you info a SB, or show the SB player on the
1000playerlist.  The usual offense and defense lines are replaced with SB
1001kills/hour and deaths/hour.  The kills, deaths, hours and ratio entries
1002are all the player's SB stats as long as he is in the SB, and his normal
1003stats otherwise.
1004
1005***************************************************************
10065.0  Connection Types: UDP, TCP.  Short packets.
1007***************************************************************
1008
1009UDP provides an unreliable, packet-based protocol for sending data
1010across an IP network.  There are a variety of ways that a UDP packet
1011can be lost or discarded, including a failure of the underlying
1012communication mechanism.  UDP implements a checksum over the data
1013portion of the packet.  If the checksum of a received packet is in
1014error, the packet will be dropped with no indication given to the
1015user.  A queue of received packets is provided for each UDP socket.
1016This queue has a limited capacity.  Arriving datagrams which will not
1017fit within its high-water capacity are silently discarded.
1018
1019Guest              Rd     71       27            2% /  13%
1020
1021The stats above show a typically UDP connection.  It has loss of
1022packets but its round-trip times are fairly low.
1023
1024
1025TCP provides a reliable, flow-controlled, in order transfer of data
1026across an IP network.  There is nothing fundamentally different about
1027the way UDP and TCP packets travel over the wire.  The only real
1028difference is that TCP will keep sending the same packet over and over
1029again until it gets an acknowledgement back.  As a result, TCP
1030connects are typically slower than UDP connections and usually require
1031more bandwidth.  TCP is slower because it guarantees that packets will
1032arrive in order and so a lost packet can hold up later packets.
1033
1034Example:
1035
1036Guest          Ff    405      669            0% /   0%
1037                     ^^^      ^^^            ^^^^^^^^^
1038
1039The above shows possibly the same connection with UDP turned off.
1040There is no loss but the round trip times are much higher.
1041
1042
1043NOTES:
1044
1045*  COW always uses TCP for some things.  For example, the text messages
1046   that you can send to other players are implement in TCP to guarentee
1047   that they always arrive.  However, if a UDP connection is also
1048   available, it is used for the vast majority of communication.
1049
1050*  COW will fall back to using a TCP only if it fails to open
1051   a UDP link.  If you find that you have high lag and no loss, you
1052   probably should display the UDP control window (the default key is
1053   `+') and turn UDP back on by pressing the top button.
1054
1055*  It is recommended to use a TCP connection if you are at the same
1056   site (within a few milliseconds lag) of the server you are playing on.
1057   The main reason for using UDP is to reduce your round trip times.
1058
1059*  The option "tryUdp" can be used to set a preference for using
1060   UDP (tryUdp: on) or TCP only (tryUdp: off).
1061
1062
1063
1064***************************************************************
1065Short Packets:
1066***************************************************************
1067
1068For a more technical description of short packets, see README.SHORT_PCK.
1069
1070Short packets are supported by COW.  These have been shown
1071to substantially reduce the volume of traffic between the client
1072and server, and will improve lag in many situations.  Not all
1073servers support short packets yet, but that is changing rapidly.
1074
1075COW has a short packet window which is brought up with the ` key.
1076In this window you can turn short packets on and off as well as
1077configure it in various ways.
1078
1079Also in your netrek defaults file you can add the line
1080
1081tryShort:	on
1082
1083in order to have short packets automatically turned on whenever
1084you connect to a server which allows it.
1085
1086Don't forget about the - and | keys for requesting updates.
1087
1088
1089***************************************************************
10906.0 MACROs, RCD, RCM:
1091***************************************************************
1092
1093Three types of macros exist in the COW client:  NBT, NEWMACRO, and
1094SMARTMACRO.  NBT is always on, however NEWMACRO and SMARTMACRO can
1095be turned off by a server which does not allow them.
1096
1097You may see a list of what macros are in your client by hitting
1098'X' followed by '?'.  At the top of this list it shows which macros
1099are enabled in the client right now.
1100
1101NBT macros allow you enter a message in your .xtrekrc which you
1102send regularly.
1103
1104macro.x.X:      <text here>
1105#x is any ascii character; it is the "name" of the macro (the key you press
1106#in macro mode to send the associated macro)
1107#X can be A,T,F,R,K,O where A=all, T=team, F=fed, R=rom, K=kli, O=ori
1108#(determines the message board to which the text body of the macro is sent)
1109Example:
1110macro.b.T:              BOMB!!!!
1111
1112For more information on NEWMACRO and SMARTMACRO see the NEWMACRO
1113section below.
1114
1115
1116***************************************************************
1117Receiver Configurable Distress Calls (RCD):
1118***************************************************************
1119
11209/2/93 - jmn, jn (no relation 8^)
11216/7/95 - updated by ATH
1122
1123Receiver configurable distress calls have been added to the client
1124and use a MACRO-like syntax.
1125
1126In order to change the distress type a line such as the following
1127should be in your defaults file.
1128
1129dist.T.taking:		(%i) Carrying %a to %l%?%n>-1%{ @ %n%}
1130
1131	or simply
1132
1133dist.taking:		(%i) Carrying %a to %l%?%n>-1%{ @ %n%}
1134
1135This has the format
1136dist.[key].[name of distress]:		[macro]
1137
1138Arguments for the macro and SMARTMACRO syntax are exactly the same
1139as before.  Any argument can be used, but usually only those
1140in the groups "Standard" and "FULLY CAPITALIZED" apply.
1141
1142Note that if you don't want to ever see a certain distress, use the
1143macro characters : %*.  For example,
1144
1145      dist.free_beer: %*
1146
1147will allow your client to simply ignore any "free beer" RCD's that get sent.
1148
1149Below is a table giving the name of each distress, the key it
1150is assigned to, and the default macro (at the time of this writing).
1151Note that except for E and F, these are all control keys.
1152
1153Key  Name	Default Distress Macro
1154t    taking	%T%c->%O (%S) Carrying %a to %l%?%n>-1%{ @ %n%}
1155o    ogg	%T%c->%O Help Ogg %p at %l
1156b    bomb	%T%c->%O %?%n>4%{bomb %l @ %n%!bomb%}
1157c    space_control	%T%c->%O Help Control at %L
11581    save_planet	%T%c->%O Emergency at %L!!!!
11592    base_ogg	%T%c->%O Sync with --]> %g <[-- OGG ogg OGG base!!
11603    help1	%T%c->%O Help me! %d%% dam, %s%% shd, %f%% fuel %a armies.
11614    help2	%T%c->%O Help me! %d%% dam, %s%% shd, %f%% fuel %a armies.
1162e    escorting	%T%c->%O ESCORTING %g (%d%%D %s%%S %f%%F)
1163O    ogging	%T%c->%O Ogging %h
1164B    bombing	%T%c->%O Bombing %l @ %n
1165C    controlling	%T%c->%O Controlling at %l
11665    asw	%T%c->%O Anti-bombing %p near %b.
11676    asbomb	%T%c->%O DON'T BOMB %l. Let me bomb it (%S)
11687    doing1	%T%c->%O (%i)%?%a>0%{ has %a arm%?%a=1%{y%!ies%}%} at %l.  %d%% dam, %s%% shd, %f%% fuel
11698    doing2	%T%c->%O (%i)%?%a>0%{ has %a arm%?%a=1%{y%!ies%}%} at %l.  %d%% dam, %s%% shd, %f%% fuel
1170f    free_beer	%T%c->%O %p is free beer
1171n    no_gas	%T%c->%O %p @ %l has no gas
1172h    crippled	%T%c->%O %p @ %l crippled
11739    pickup	%T%c->%O %p++ @ %l
11740    pop	%T%c->%O %l%?%n>-1%{ @ %n%}!
1175F    carrying	%T%c->%O %?%S=SB%{Your Starbase is c%!C%}arrying %?%a>0%{%a%!NO%} arm%?%a=1%{y%!ies%}.
1176@    other2	%T%c->%O (%i)%?%a>0%{ has %a arm%?%a=1%{y%!ies%}%} at %l. (%d%%D, %s%%S, %f%%F)
1177#    other3	%T%c->%O (%i)%?%a>0%{ has %a arm%?%a=1%{y%!ies%}%} at %l. (%d%%D, %s%%S, %f%%F)
1178E    help	%T%c->%O Help(%S)! %s%% shd, %d%% dmg, %f%% fuel,%?%S=SB%{ %w%% wtmp,%!%}%E%{ ETEMP!%}%W%{ WTEMP!%} %a armies!
1179
1180
1181Here is some documentation written by jmn about how receiver
1182configurable distress calls work:
1183
1184===========================
1185Well... here's how it works.... Each RC_DISTRESS compatible client can make
1186the distress call appear as whatever you like through their .xtrekrc...
1187If you DONT have a new enough client the server will do a default parsing
1188of the distress call and you will see it like that. Also if the server is
1189old then the distress call sent out by each client will appear the way
1190_the sender_ likes to have them displayed.
1191
1192Let me summarize with an example:
1193F0 likes 'F' to say 'Carrying 4 maggots.'
1194F1 likes 'F' to say 'Carrying 4 armies.'
1195F2 likes 'F' to say 'Carrying 4 lawyers. 20% fuel'
1196The server default is 'Carrying 4.'
1197Note:
1198Advanced RC_DISTRESS users should note that 'F' can be remapped easily in
1199at least 2 different ways. For example throught .xtrekrc
1200
1201dist.(.carrying: %T%c: Carrying %a maggots.
1202singleMacro: (
1203(this will make 'X(' or '(' be the same as 'F' used to be)
1204There will be more documentation on this coming later but basically the
1205syntax is the same as SMARTMACRO and NEWMACRO.
1206
1207-----------
1208On a NEW server:
1209Case 1: All of them are using a new client.
1210F1 will ALWAYS see 'Carrying x armies.' No matter who sent it.
1211
1212Case 2: Only F1 is using an old client.
1213F1 will see the _server_ set defaults for the carrying call from everybody.
1214Note that the calls from F0 and F2 will appear in the same format to him on
1215this server (but may appear in a different format on different servers).
1216F2 and F0 will see F1's client-defined distress calls.
1217
1218---------------
1219On an old server:
1220F1 will see whatever the sender likes to see (in this case the sender sends
1221the pre-formatted text instead of the RC_DISTRESS short-hand).
1222So a 'F' from F2 will appear to everybody as:
1223'Carrying 4 lawyers. 20% fuel'
1224a 'F' from F0 will appear to everybody as:
1225'Carrying 4 maggots.'
1226===========================
1227
1228
1229-------------------------------------------------------------------------
12308/16/93 - jn
1231New feature for default file...
1232rejectMacro:  on	(on/off) default to off, if on, COW automatically
1233			stops NEWMACROs from being sent when the server
1234			has turned NEWMACROs off.  That is any
1235			macro in your defaults file defined by a
1236			mac.*.*:   (TEXT)    line.
1237
1238***************************************************************
1239NEWMACRO and SMARTMACRO documentation - Jeff Nelson 6/4/1993
1240***************************************************************
1241
1242
1243*WARNING*  *WARNING*  *WARNING*  *WARNING*  *WARNING*
1244
1245These features default ON in the COW client!  A server may turn them
1246off *for you* if they are not allowed at that server.  The BRM client will
1247inform you by sending you a message line like:
1248BRM: Features enabled: NO_NEWMACRO, NO_SMARTMACRO
1249
1250If you are not at a server that allows NEWMACRO, then all targetted
1251macros will be treated as normal NBT macros (no argument substitution,
1252%a will broadcast as %a).  If you are not on a server that allows
1253SMARTMACRO, then any conditional text or tests will *not* be evaluated,
1254instead they will be sent as the macro appears in your defaults file!
1255
1256If you don't like this, complain to the server god!!  Make a difference!!
1257
1258
1259Compilers:
1260In order to use the below features, NBT and NEWMACRO must be defined.
1261In addition, SMARTMACRO must be defined to use the most advanced
1262features.
1263
1264
1265Here is the idea:
1266A player should be able to include in his/her macros whatever
1267reasonable information is available.  And configuring its display
1268in whatever way is desired.  In order to do this, the following
1269syntax is used (while remaining completely compatible with old NBT
1270macros).
1271
1272A key is assigned in the defaults file (ie .xtrekrc, etc)
1273by a line like:
1274
1275mac.F.T		Help!  Carrying %a!!
1276
1277This defines a macro which will send a distress containing
1278the number of armies a player is carrying to his team.
1279
1280Note, this is NOT printf syntax!  Any attempt to use formatting will
1281fail miserably.  Maybe in the future someone will want to develop
1282a means of formatting the variables used in macros, but the only
1283means I can think of are both bulky and ugly.
1284
1285Here is another example:
1286
1287mac.f		Help!  Carrying %a!!
1288
1289Unlike the first, this macro will not send directly to the team,
1290instead it requires that you give a third keystroke specifying the
1291recipient.  For example, it could be invoked by:
1292
1293XfT		<- to your team
1294Xf1		<- to player 1
1295XfG		<- if you are desperate, send to God
1296XfA		<- if you are stupid, send to ALL
1297
1298Old macros will still work in addition to these, thus be sure there are
1299no conflicts.  These generally cause suprising results.  For example,
1300if this is in your macro file:
1301
1302mac.E.T		Help!  I'm carrying!!
1303macro.E.A	You all suck!
1304mac.E		Help!  I'm a twink!!
1305mac.E.T		Help!  I'm carrying again!!
1306macro.E.A	You all suck even worse NOW!
1307
1308The suprising results would be that pressing XE would broadcast the
1309first two messages, and then wait for the destination of the third.
1310It would be impossible to ever use the last two.  Unfortunately, multiline
1311macros also do not work if they require a destination.  There is no
1312good reason for this, but since multiline macros annoy the hell out
1313of me, I ain't fixing it.  You can still do something like:
1314
1315mac.D.A:	D
1316mac.D.A:	O
1317mac.D.A:	O
1318mac.D.A:	S
1319mac.D.A:	H
1320
1321This would properly broadcase 5 messages containing 1 character to all.
1322If you tried to specify the destination for these by using "mac.D:",
1323only 'D' would be sent.
1324
1325Also '?' can still not be used as a macro key.
1326The following definitions will work in a macro:
1327
1328Standard:
1329
1330%o	3 charcter team name of sender
1331%a      armies carried by sender
1332%d      sender damage percentage
1333%s      sender shield percentage
1334%f      sender fuel percentage
1335%w      sender wtemp percentage
1336%e      sender etemp percentage
1337%t      team id character of target planet
1338%T      team id character of sender team
1339%r	team id character of target team
1340%c      sender id character
1341%n      armies on target planet
1342%E      1 if etemped, 0 if not
1343%W      1 if wtemped, 0 if not
1344%S      sender two character ship type
1345%p      id character of target player
1346%g	id char of target friendly player
1347%h	id char of target enemy player
1348%P      id character of player nearest sender
1349%G	id char of friendly player nearest sender
1350%H	id char of enemy player nearest sender
1351%l      three character name of target planet
1352%N	full name of target planet
1353%i	sender full player name (16 character max)
1354%u	full name of target player (16 character max)
1355%z	3 letter team id of target planet
1356%b      3 char name of sender nearest planet
1357%k	kills of sender
1358%K	kills of target player
1359
1360FULLY CAPITALIZED:
1361%O	three character team name of sender
1362%L	three character name of target planet
1363%I	sender full player name (16 character max)
1364%U	full name of target player (16 character max)
1365%Z	3 letter team id of target planet
1366%B      3 char id of sender nearest planet
1367
1368Ping stats: (may differ slightly from server '!' ping stats)
1369%v    average ping stat round trip time
1370%V    ping stat round trip standard deviation
1371%y    percent total packet loss as calculated by server formula
1372
1373Miscellanous:
1374%m      the last message you sent
1375%M	the last message you sent in all caps
1376%w	whydead number for RCM
1377%W	whydead text for RCM only
1378%>nn	Tab stop at position nn
1379
1380As a further extension to NEWMACRO, a macro may now be sent
1381to any of the following destinations:
1382
1383%i %I %c	send message to self
1384%u %U %p	send message to player nearest mouse
1385%t %z %Z	send message to team of player nearest mouse
1386%g		send message to nearest friendly player to my ship
1387%h		send message to nearest enemy player to my ship
1388
1389with a syntax like
1390
1391#useful for INL...
1392mac.C.%i:	CAPTAIN
1393mac.N.%i:	NEWGALAXY
1394mac.S.%i:	START
1395mac.T.%i:	%Z
1396
1397mac.W.%t:	SHUT UP, TWINKS!!
1398mac.I.%u:	%u: det when you escort!
1399mac.O.%u:	(%i) ogging
1400
1401What this does is allows you to send a macro to a player or
1402team specified by your mouse location instead of requiring
1403a 3rd character to be input.  Also, it allows you to send
1404message to yourself without having to actual sit there and
1405figure out who you are (they tried and failed back in the '60s).
1406
1407
1408>>>>The above is available when NEWMACRO is defined;  from here on,
1409>>>>SMARTMACRO must be defined *in addition*.
1410
1411Further, tests may be done within the macro system, the syntax
1412for these test is as follows.
1413%?	introduces a test
1414=	equivalence
1415>	greater
1416<	less
1417
1418Expressions are evaluated on a character by character basis until the
1419test is resolved.  The text of the test is then replaced in the macro
1420by 1 or 0.
1421
1422Test are then fed to a syntax I call conditional text.  The best way
1423to demonstrate how this works is example.
1424
14251%{included if true%!included if false%}
1426
1427This would print:
1428included if true
1429
14300%{included if true%!included if false%}
1431included if false
1432
1433Combining the whole package, a very robust macroing system is
1434quickly generated.  One can easily design or mimic Distress calls,
1435including the variable NBT distress of the COW client and all the
1436hardcoded message macroing built into my own client but never released.
1437
1438Here are a few more samples to work from:
1439
1440mac.F.T:	Help!  Carrying %a!!
1441mac.f:		Help!  Carrying %a!!
1442mac.c.T:	%p++ near %l
1443mac.b.T:	%?%n>4%{bomb %l at %n%!bomb%}
1444mac.d.T:	%E%{%!%W%{%!I'm fine.  How are you?  %}%}%E%{ETEMPED!!!  %}%W%{WTEMPED!!!  %}Carrying %?%a>0%{%a armies!%!NO armies.%}
1445mac.a.T:        %E%{ETEMPED!!!  %}%W%{WTEMPED!!!  %}Carrying %?%a>0%{%a armies!%!NO armies.%}
1446mac.R.A:	I'm a %?%S=SB%{star base!%!twink!%}
1447mac.K.A:	KissMy%S
1448mac.t:		thanks
1449mac.y:		yes
1450mac.n:		no
1451mac.B:		bye, getting hungry/sleep/horny
1452mac.e.T:	need escort going to %l%?%a>0%{, carrying %a armies!%}
1453mac.v.%t:       %T%c PING stats: Average: %v ms, Stdv: %V ms, Loss: %y%%
1454
1455#My Favorite:
1456mac.m:		%m
1457
1458***************************************************************
1459* Symbolic names for macro destinations - Kurt Siegl 27/4/95
1460***************************************************************
1461
1462You always wanted to send a macro directly to the captain, base,
1463or the second SC bomber?
1464
1465Symbolic macro keys will solve your problems. Here how it goes:
1466
1467In the .xtrekrc file you assign a key to a symbolic name:
1468
1469	 key.[key].[dest]:	[name of key]
1470
1471If the destination isn't specified the key defaults to team.
1472
1473Examples:
1474key.C:		captain
1475key.B.t:	base
1476key.m.A:        me
1477
1478Then you can use that new key in your macros.
1479
1480Examples:
1481mac.o.C:        Hi Captain let me suggest a base ogg?
1482mac.a.B: 	BASE: Free armies for me?
1483mac.t.m:        TIME
1484
1485Finally during runtime you may change the actual destination
1486by sending a message:
1487
1488	set [name of key] [destination id]
1489
1490to the shell ("!") tools. Of corse this may be done with macros as well.
1491
1492Examples:
1493mac.^C.!:	set captain %g
1494mac.^m.!:	set me %c
1495
1496You can check the settings on the shell tools window "M".
1497
1498
1499***************************************************************
1500Receiver Configurable Server Messages (RCM)
1501***************************************************************
1502
1503Short package kill messages may be freely configured using
1504the macro syntax interpreter where
1505
1506* the killed person corresponds to the sender,
1507* the killer corresponds to the target player,
1508* involved planet (killed by, destroyed, taken) to the target planet,
1509* damage is int part of kills and shield fraction part.
1510* whydead goes with wtmp.
1511
1512All others are undefined.
1513
1514The format of the messages is:
1515
1516msg.[name of message]: [RCM macro]
1517
1518Available messages and their defaults are:
1519
1520msg.kill:  ........
1521msg.kill:GOD->ALL %i (%S) (%T%c%?%a>0%{+%a armies%!%}) was kill %?%d>0%{%k%!NO CREDIT)%} for %u (%r%p) %?%w>0%{%W%!%}
1522msg.planet:GOD->ALL %i (%S) (%T%c%?%a>0%{+%a armies%!%} killed by %l (%z) %?%w>0%{%W%!%}
1523msg.bomb:%N->%Z We are being attacked by %i (%T%c) who is %d%% damaged.
1524msg.destroy:%N->%Z %N destroyed by %i (%T%c)
1525msg.take:%N->%O %N taken by %i (%T%c)
1526msg.ghostbust:GOD->ALL %i (%S) (%T%c) was kill %k for the GhostBusters
1527
1528
1529BRMH formated kill windows may be optain by something like:
1530
1531msg.kill:  %i (%S) (%T%c%?%a>0%{+%a armies%!%}) %>30 kill %?%d>0%{%k%!NO CREDIT)%} for %u (%r%p) %?%w>0%{%>65%W%!%}
1532
1533
1534***************************************************************
15357.0 MetaServer Options
1536***************************************************************
1537
1538The MetaServer and the MetaServerCache are provided to help you find a
1539netrek game to join.  Both services provide a list of the popular
1540netrek servers.  The MetaServer is neat because provides information
1541on the number of players at each site.  The MetaServerCache is neat
1542because it is much faster if you can guess where a game will be.
1543
1544To access the MetaServer, use the command line switch "-m" or "-M".  For
1545example "cow -m".  To access the MetaServerCache, use the "-k" switch
1546instead.  The command line options are as follows:
1547
1548  -m    Default to UDP connection mode to metaserver if metaType not set
1549  -M    Default to TCP connection mode to metaserver if metaType not set
1550  -k    use TCP metaserver cache to display known servers
1551
1552If metaType (defined later) is set, -m or -M will connect to
1553metaserver based on what metaType is set to.
1554
15551) Where to find the MetaServer:
1556
1557You can use the options "metaport" and "metaserver" to point COW
1558to a new MetaServer.  The defaults for these options are:
1559
1560	 metaport: 3521
1561	 metaserver: none
1562
1563The metaserver usually resides at metaserver.netrek.org port 3521
1564
1565In UDP mode multiple metaservers can be listed on the "metaserver"
1566option, comma separated.  Example:
1567
1568      metaserver: metaserver.netrek.org, metaserver.eu.netrek.org
1569
1570Also in UDP mode, if a hostname listed has more than 1 IP address, the
1571client will attempt to connect to all IPs listed in that hostname. It
1572will then merge all responses into 1 list and display that list.
1573
1574In TCP mode, only 1 hostname may be listed.
1575
15762) How to create a list of known servers for the MetaServerCache:
1577
1578Before you can use the MetaServerCache, you must give COW a file in
1579which to cache the information from the MetaServer.  Use the .xtrekrc
1580options "metaCache" and "metaUDPcache" to specify these files.  The
1581files path will be relative to your home directory unless you start
1582the file name with a slash (/).  "metaCache" defines the TCP cache,
1583and "metaUDPcache" defines the UDP cache. The TCP and UDP cache can
1584NOT be the same.  They are incompatible formats.
1585
1586For example, to set the cache files to "~/.metaCache" and "~/.metaUDPcache"
1587use:
1588
1589	metaCache:    .metaCache
1590        metaUDPcache: .metaUDPcache
1591
1592Unlike the MetaServer, the MetaServerCache will not show the number of
1593people playing at a server.  If a server is contactable, it will be
1594shown as "Active".
1595
1596Warning: If "metaCache" or "metaUDPcache" are set, COW will also use a
1597second, temporary file.  This file with have the name of the metaCache
1598file with the last character changed to either a 'T' or an 'R'.  Eg,
1599".metaCache" becomes ".metaCachT" and "BEAST" becomes "BEASR".  Ensure
1600that this temporary file does not overwrite something important.
1601
16023) How to set the connection type to the metaserver:
1603
1604The xtrekrc option "metaType" will determine how COW connects to the
1605metaserver. The default for this option is:
1606
1607  metaType:    (default: whaterver the command line has, -m=1 -k=2 -M=3
1608                out of range values default to 3)
1609
1610where the values 1, 2, 3 are defined as:
1611
1612   How to connect to the Metaserver.  Connect with UDP, cache, or TCP.
1613                                      1 == cache, then UDP
1614                                      2 == cache, then TCP
1615                                      3 == TCP, then cache
1616
1617UDP mode offers more options and more recent information as well as a
1618quicker startup and a refresh button, explained later.  TCP mode is
1619the normal method and should be used when connections are unreliable
1620or if you're behind a firewall.
1621
16224) How much information will be shown:
1623
1624You can now control the amount of information that the MetaServer
1625displays for you by setting the "metaStatusLevel" flag.  The default
1626is:
1627
1628	metaStatusLevel: 3
1629
1630
1631The status levels are coded as follows.
1632
16330	Servers which have players but not a wait queue.
16341	+ Servers with a wait queue.
16352	+ Servers with nobody playing. (see NOTE1).
16363	+ Servers which have Timed Out for the MetaServer (see NOTE2).
16374	+ Servers which the MetaServer has not been able to connect to.
1638
1639NOTE1: When using the MetaServerCache, "metaStatusLevel" values of
1640less than 3 are treated as the value 3.  This minimum is enforced
1641because the cache does not attempt to show the number of people
1642playing at a site.
1643
1644NOTE2: If you are a long way from the MetaServer, you are advised to
1645ignore TimeOut errors.  For example, the MetaServer in America may
1646have difficulty contacting to a server in Holland while the link from
1647England to Holland is very good.
1648
1649
16505) The Fallback
1651
1652If you attempt to contact the MetaServer, and the connection times
1653out, COW will try to show the MetaServerCache instead.
1654
1655Similarly, if you attempt to use the MetaServerCache, and your
1656"metaCache" file does not exist, COW will attempt to call
1657theMetaServer.
1658
1659In UDP mode, COW will show the UDP cache right away, and then update
1660the screen as responses come in.
1661
16626) The display
1663
1664COW will pop up a window with a list of game servers.  The format of
1665the window is 1 server per line, starting with the server name,
1666followed by the server status, and the server type.  In UDP mode it
1667will also show the age of the data on that server.  In UDP mode, a
1668refresh button is also available.  Hitting that line will re-query the
1669metaservers for more up to date data.  Please don't abuse this and
1670rapidly click this button over and over as this may make the
1671metaserver admins ban you from connecting.
1672
1673To choose a server to play on, LEFT click on the server.  To join as
1674an observer RIGHT click on the server.  COW will then connect to the
1675game server.
1676
16777) Miscellaneous
1678
1679The option "metaverbose" will make UDP metaserver queries slightly
1680more verbose.  When on, COW will display who its connecting to and who
1681responds.  The default for this option is:
1682
1683     metaverbose: off
1684
1685
1686***************************************************************
16878.0 Compiling:
1688***************************************************************
1689
1690COW has the best and easiest to use installation procedure a client
1691ever had.
1692
1693make
1694
1695In case you will need some additional flags for your compiler or linker,
1696edit the "sample_key.def" file and change the corresponding parameters
1697at the bottom.
1698
1699You are done!  watch that GPA hit the floor!!
1700
1701cow@netrek.org always likes to receive bug reports for
1702the client and if you have any suggestion for how to improve the
1703Makefiles or this description, please email us.  Remember that
1704fixes are the best way to complain. Working patches should be sent to:
1705cow@netrek.org
1706
1707
1708***************************************************************
17099.0 BEEPLITE.DOC
1710***************************************************************
1711
1712Local weenies cheat.  They talk to each other.  Those of us who have
1713never met another netrek player are forced to relie heavily on the
1714message window.
1715
1716In order to even the playing field, the current feature was proposed.
1717This feature causes certain types of RCD messages to beep or even
1718highlite specific objects on the screen.  This is done via a
1719macro-like interface which is highly configurable.  Further, bitmaps
1720used to highlite can be substituted with your preferences.
1721
1722***  TURNING BEEPING AND HIGHLITING ON
1723
1724In order to turn message beeping and highliting on, you must include the
1725following in your .xtrekrc.
1726
1727UseLite: on
1728
1729The above leaves you with the feature on, but nothing is automatically
1730setup.  If you want to configure it yourself, go to the "CONFIGURING
1731VIA XTREKRC" section.  You can include a set of reasonable defaults,
1732instead of bothering to learn to configure it yourself by including
1733the lines.
1734
1735DefLite: on
1736
1737At any time, you can extend these simply by including some of the
1738configuration syntax in your .xtrekrc as described in the "CONFIGURING VIA
1739XTREKRC" section.
1740
1741WARNING:  Use beep _sparingly_, people (including you) will get sick
1742very quickly of hearing your workstation beep every 5 seconds.
1743
1744
1745***  CONFIGURING VIA XTREKRC
1746
1747
1748Message beeps are configured as on and off.  They are turned on if the
1749proper line is in your .xtrekrc.  Otherwise they are left off.
1750
1751Message lites are configured in a way very similar to macros.
1752However, in addition to the original set of macro arguments, a new
1753class of arguments is introduced to handle the highliting.
1754
1755To configure message highliting, include something like the line below.
1756Here "name of distress" is the RCD message type.  "macro" is the macro
1757style syntax specifying what is to be highlited.
1758
1759lite.[name of distress]:  [macro]
1760
1761
1762Below are the configurations which are equivalent to the defaults
1763which are setup for you if using DefLite.  These provide good
1764examples for how the system works.
1765
1766lite.taking:   /c/l
1767lite.base_ogg: /g/m
1768lite.pickup:   /h
1769lite.help:  %?%S=SB%{/c%}
1770
1771The above does the following,
1772"taking" message highlites the planet and taker
1773"base_ogg" message highlites the person to sync and your ship
1774      (to REALLY get your attention)
1775"pickup" message highlites the enemy who picked up
1776"help" tests to see if the player sending the distress is a base, if so
1777      he is highlited
1778
1779You might like to change the last one to:
1780lite.help:  %?%S=SB%{/c%}%?%a>0%{/c%}
1781
1782This will highlite bases who distress AND carriers who distress.
1783
1784Using TTS you may change the pickup macro to:
1785lite.pickup:   /h/|%p++ @ %l|
1786
1787This sends a big ++ message on the tactical map in addition to the light.
1788
1789Note that all the MACRO parsing routines are run on these, and plain
1790text left over is ignored.  Only the highlite argument matter.
1791
1792The following are the arguments for highliting.
1793
1794/c /i /I   sender
1795/m /M      _your_ ship
1796
1797/p      target player
1798/g      target friendly player
1799/h      target enemy player
1800/P      player nearest sender
1801/G      friendly player nearest sender
1802/H      enemy player nearest sender
1803/b      planet nearest sender
1804/l      target planet
1805
1806The following are the arguments for sounds.
1807
1808/0     	Standard window beep (incoming message sound if sound is on)
1809/1 - /9 Play nt_message1 - nt_message9 sound.
1810
1811Tactical Text Solution for the Tactical Tunnel Syndrome (TTS):
1812
1813/| .. | displays Text in between via TTS.
1814
1815
1816Additional defaults:
1817
1818planetCycleTime:	highlighting time for planets
1819playerCycleTime: 	highlighting time for players
1820
1821tts_color: 		color of TTS message (should be dark)
1822tts_font: 		Font (large prefered)
1823tts_max_len: 		Max length of a message
1824tts_time: 		Time a TTS message is displayed
1825tts_pos:		y location of the TTS message
1826
1827
1828*******************************************************************************
1829End of COW.DOC
1830