0.0 Table of Contents
********************************************************************************
*                                                                              *
*            General Documentation for the Client Of Win (COW)                 *
*                                                                              *
*  Comments, suggestions and bug reports to brmbugs@crown.EECS.Berkeley.EDU    *
*                                                                              *
*                                                                              *
*  CREDITS: Chris Guthrie, Ed James, Scott Silvey, and Kevin Smith,            *
*           Tedd Hadley, Andy McFadden, Eric Mehlhaff, J. Mark Noworolski,     *
*           Nick Trown, Lars Bernhardsson, Sam Shen, Rick Weinstein,           *
*           Jeff Nelson, Jeff Waller, Robert Kenney, Steve Sheldon,            *
*           Dave Gosselin, Heiko Wengler, Kurt Siegl and many others.          *
*                                                                              *
********************************************************************************



                                Table of Contents
 1.0  Overview
 2.0  Acknowledgements
 3.0  Features
 4.0  Xtrekrc
 8.0  Compiling
 9.0  Guide to Related Valuable information



1.0  Overview

     This document describes the COW client, its capabilities, and the client's
features.  COW started as the successor of the BRM client after release 3. 
BRM started as a merger of the Berkeley client with Rick's Moo 
client.  Since then, all three clients have developed fairly independant of one
other.  Familiarity with netrek is presumed throughout this document.  Please
consult section 9.0 for information on the game itself.

     COW has an expire function which insures that players obtain new copies
regularly.  This alleviates the client's caretakers from having to support
ancient clients.  Generally, a client will expire 60 days after its compile
date.

2.0  Acknowledgements

     Many people have contributed to COW and many many others contributed
to its ancestor clients.  Here is an undoubtedly incomplete list of credits
presented in no particular order.  Where possible their typical netrek name is
provided in the hope that you will ogg them:

              Scott Silvey
              Kevin Smith
              Rick Weinstein
              J. Mark Noworolski		Passing Wind
              Tedd Hadley			pteroducktyl
              Heiko Wengler			Musashi
              Andy McFadden			ShadowSpawn
              Chris Guthrie
              Ed James
              Eric Mehlhaff
              Nick Trown			Netherworld
              Lars Bernhardsson			lab
              Sam Shen
              Rick				Videodrome
              Jeff Nelson			Miles Teg
              Jeff Waller
              Robert Kenney			Zhi'Gau
              Steve Sheldon			Ceasar
              Dave Gosselin			Tom Servo
              Kurt Siegl			007
              Kevin Powell			seurat
	      Alec Habig			Entropy


3.0  Features

     The COW client has many features that make it stand out from earlier
clients.  This section will attempt to describe all of its features, including
those that are common to all clients.

   3.1  Command Line Options

     This section will describe COW features that are selected from the command
line when the client is invoked.  Selecting "-u" for usage or any invalid 
option will provide a brief summary of this section ( -help will work too ).


   3.1.1  SERVER SELECTION

     The "-h server_address" option will allow the user to select a specific 
server.  The client will look to the .xtrekrc file for a default server should 
this option be absent.  Examples of server addresses would be 136.165.1.12 or
starbase.louisville.edu.

   3.1.2  PORT SPECIFICATION

     The "-p port_number" option will allow the user to select a specific port
address.  An example of a port_number would be 1111, 2222, or 2592.

   3.1.3  DEFAULTS FILE SPECIFICATION

     The "-r defaultsfile" option will allow the user to select a defaults file
other than .xtrekrc.  The defaults file contains all of the user selectable
defaults ( please see Section 4.0 for more information on .xtrekrc ).  Using 
this option, two users can run netrek from the same userid / account and still
have unique defaults files.

   3.1.4  VERIFICATION OPTIONS

     The "-o" option instructs the client to use the old reserved.c verification
to identify itself to the server.  Upgraded RSA servers will require that the
client use RSA verification.  This is selected using the "-R" option.
   
   3.1.5  RECORD GAME OPTION

     The "-f record_file"  will record the game into record_file.
 
   3.1.5  METASERVER OPTION

     The "-m" option will instruct the client to search the Meta Server at 
metaserver.ecst.csuchico.edu, port 3521 and present the user with a list of 
available servers.  The user may then select the most desirable server 
directly from the client. The metaserver may be customized via the .xtrekrc
with the following resources:
 metaport: 3521
 metaserver: metaserver.ecst.csuchico.edu


   3.1.2  AUTOLOGIN OPTION

     The "-A passowrd" allows the client to automatically enter the specified 
character password without having to prompt the user.  This option is normally 
used with the "-C character_name" option, which automatically enters the 
character name.  The "-C" option must be followed by a character name string.





*** Hockey Lines  
Due to popular demand, hockey lines have been added.
For those of you who want to see a hockey rink on the tactical,
just use the features menu (shift-O) and toggle them on.

You get:
   Blue lines (blue)
   Center line (red)
   Side lines, i.e. the rink edges (grey)
   Goal lines (red)
   Goal boxes (the color of the team)

They are a little awkward at first, but once you get used to them,
you'll wonder how you lived without them.

Since this is a first pass, I'm looking for more input on what
would make them better.  Here are some of my comments:

1)  Lines are hard coded into the software.  They should be 
based upon planet location, so the hockey gods can move the
planets around.

2)  You either have them all or none.  Perhaps the set of
desired lines should be configurable from the xtrekrc.  Also,
you cannot change the colors.

3)  Lines on the galactic would look pretty

If you have any comments, mail them to kantner@hot.caltech.edu

*** Shell escape tool
You may execute any Unix shell comand within the client. Read your mail 
now within the client. To do so, just send a message to the destination 
"!" and you get a shell prompt. Enter the comand and it's output will 
be displayed in the tools window. Works also with macros to "!".
You may disable it in the .xtrekrc for security reasons with shellTools: off
CAUTION: The client will be blocked for the time the comand is executed.
Also some programs suspend the client if it is started in the background.

*** Fast quit
Hitting 'q' will quit the client out without ever going back to the
team selection window, the normal 'Q' still goes back to the team
selection window.

*** Reread defaults file
You can reread your netrek default file by hitting '&', it is also
possible to enter a new default file name at anytime by sending
a message to 'M' which contains the file name.

*** Phaser window
A seperate window now exists for showing the results of your phasering.
Use the options window to bring it up.

*** New dashboard
Uses sliding bars instead of numbers at the bottom of your screen.
newDashboard: on
in your .xtrekrc will activate it.

*** Galactic rotation
For those who like to fight with some specific orientation, the
galaxy is now rotate-able.  This can be done in the options window.
This works now also with short packages.

*** Gateway
Lots of cool gateway code in this client, unfortunately I don't
use nor do I know what it does other than get past firewalls.

*** Observer support
Many servers allow you to *observe* a game instead of playing, sort of
like watching football.  COW supports this feature.  Currently in order
to be an observer, all you have to do is connect to the observer port
for a server, generally only INL tournament servers will have observer
ports active.  A good guess at the observer ports is 4000 and 5000.

*** Auto torp aiming and dodge
Get outa here...


***************************************************************
4.0 Xtrekrc:
***************************************************************

COW looks for a .xtrekrc file in your home directory.  Alternatively
this file may be called home, and it may be in whatever directory
the client is executed from.

A file called "SAMPLE.xtrekrc" should have been included with this
client.  Below is an attempt to explain the many,many options you
can include in a .xtrekrc file.  Some of this was borrowed from
various other documentation such as MOO documentation.

For other options, see MACROs and Receiver Configurable Distress Calls.


rank.mapped:	(on/off)
rank.parent:	(window name) ie root, review_all, netrek, etc
rank.geometry:  (geometry specification) ie 80x26+554+624
		Every window may have these three defaults set for it.
		Some windows are resizeable, others are not.

font:		fixed
bigfont:	lucidasans-24
italicfont:	-schumacher-clean-medium-i-normal--10-*-*-*-c-80-iso8859-1
boldfont:	-schumacher-clean-bold-r-normal--10-100-*-*-c-60-iso8859-1
		Specifies which fonts you want to use,
		not sure that all of these are still used in COW

color.white:            white
color.black:            black
color.red:              #ffa0ff
color.green:            green
color.yellow:           yellow
color.cyan:             cyan
color.light grey:       light grey
		Specify what colors should be used by the client.
		This is generic X color specification (right?).
		All the possible left hand sides are listed I think.

name:		(string of chars) default name

password:	(string of chars) default password; if both name and password
		are included in your .xtrekrc, COW will attempt to do
		an autologin for you.

showshields:	(on/off) draw shields on ships

newDistress:	(on/off) right justified distress call or not, default value
		is to right justify (on)

showIND:	(on/off) mark independent planets with a X drawn over it.

varyShields:	(on/off) Shield color and bitmap depends on shield status.

varyHull: 	(on/off) graphical indication of your hull condition. kinda
		like varyShields

cloakChars:	(string of one or two chars) what to use for cloakers on
		galactic instead of '??'.

enemyPhasers:	(integer 0-10) enemy phasers thickness at starting point.

showstats:	(on/off) show stats window

reportkills:    (on/off) display kill messages or ignore these

babes:		(on/off) The Sexist Feature: shows Kathy Ireland when
		you ghostbust

netstats:	(on/off) collect network statistics for measuring lag

netstatfreq:	(integer) how often to update the network statistics

newPlanetBitmaps:	(on/off) new planet bitmaps, less junk to
		get in the way of seeing torps

newDashboard:	(on/off) new dashboard, has sliding bars instead of
		numbers at the bottom of the screen, definately worth
		a look

newdashboard2: (on/off) new new dashboard, adds colors and reverses
		some things

newPlist:	(on/off) new playerlist, instead of total kills, deaths
		offense and defense it shows login and stats (off+bomb+planet).

keepInfo:	(integer) number of updates to keep info windows on the
		screen before automatically removing them

logging:	(on/off) displays messages to stdout if set.

logfile:	(filename) alternatively saves messages to a text file

useRSA:		(on/off) default setting for whether the client should use RSA
		verification.

tryShort:	(on/off) default setting for whether to use short packets.

autoquit:	(integer) length of time to wait on team selection screen
		before Auto-quit exits for you.

showmotd:	(on/off) display motd if in wait queue

keymap:		(string of chars) remaps the keyboard, syntax is simply the
		key to map onto, followed by the key to map, repeated.
		Thus to map the "fire torps" key 't' onto 'f', use keymap: ft

buttonmap:  map the mouse buttons to something else.
       	 i.e. the default mapping is:
         1t2p3k

server:		bronco.ece.cmu.edu
	default server that is called when no -h argument is
        specified.  The compiled in default server is bronco.ece.cmu.edu
port:		2596
	default port that gets called. The compiled default is 2592

server.rio: 	riovista.berkeley.edu
        Allows you to specify a server abbreviation.  Thus instead of
	using "-h riovista.berkeley.edu" you now use only "-h rio"
port.rio:	4566
	default port that gets called for the server abbreviation.

showtractorpressor:  toggle showing tractor/pressor  beams

       UDp control
tryUdp:     (on/off) Automaticaly use UDP if on
udpDebug:
udpClientSend:
udpClientRecv:
udpSequenceChk:

extraAlertBorder:  Draws border in internal netrek windows, as well
        as external ones (which get ignored in X11 with window-managers )

forcemono:     if on, the client windows are set to be monochrome

redrawDelay:  if >0 synchron screen refresh every n/10 sec 
		(useful for slow X-terms and high lag).	

Can show nothing, resources, or owner on galactic by default.
resource--  showgalactic:    1
2 = nothing
1 = resources
0 = ownership

Can show nothing, resources, or owner on local map by default.
resource--  showlocal:    2
2 = nothing
1 = resources
0 = ownership

Can turn off planet names by default.
resource-- showplanetnames:   off

Can sort player list by team. code fixed by Greg. (gc2n@andrew.cmu.edu)
resource-- sortPlayers:   on

Can show lock on galactic, local, galactic & local, or none.
resource-- showLock:  3
0 = none
1 = galactic
2 = local
3 = both

Can be set to not continue the visible tractors.
resource-- continuetractors:    on
on = continue
off = turns off after 2 updates.

	Ship dependend key-, buttonmaps and .xtrekrc files 

You add one off: sc, dd, ca, bb, as, sb, ga, att, default  to
the following default files:

rcfile-??:  	ship specific .xtrekrc file,
keymap-??:	ship dependend keymap, 
ckeymap-??:	ship dependend CTRL keymap,
buttonmap-??:	ship dependend buttonmap.

It will automatically reload the specified defaults if you change
the shiptype. If a default does not exist, the -default value is used.

***************************************************************
Short Packets:
***************************************************************

For a more technical description of short packets, see README.SHORT_PCK.

Short packets are supported by COW.  These have been shown
to substantially reduce the volume of traffic between the client
and server, and will improve lag in many situations.  Not all
servers support short packets yet, but that is changing rapidly.

COW has a short packet window which is brought up with the ` key.
In this window you can turn short packets on and off as well as
configure it in various ways.

Also in your netrek defaults file you can add the line

tryShort:	on

in order to have short packets automatically turned on whenever
you connect to a server which allows it.

Don't forget about the - and | keys for requesting updates.


***************************************************************
5.0 Options:
***************************************************************

Summary of command line options available for COW.

u	(existance) prints usage information for the client

C	(sting of chars) name to auto-login with

A	(sting of chars) password to auto-login with

c	(existance) checking - this will check server_port-1 and spew out
	a list of all players currently playing on that server - not all
	servers are intelligent enough to do this

s	(integer) passive port to use, generally only server gods would ever
	use this option and even they can get by without it

f	(filename) file to record packets in

l	(filename) file to log messages

p	(integer) port to connect to server 

d	(sting of chars) display name

m	(existance) use meta window instead of selecting server with
	on line options - TRY THIS, IT's COOOOOOL!!

o	(existance) use reserved.c blessing for client authentification

R	(existance) use RSA blessing for client authentification (default)

h	(sting of chars) server name

H	(sting of chars) Gateway name

P	(existance) log packets, generally don't want to use this

t	(sting of chars) title- the name of the window the client makes

r	(filename) netrek default file, instead of .xtrekrc

D	(existance) debug mode

v	(existance) display version/expiration info then exit




***************************************************************
6.0 MACROs:
***************************************************************

Three types of macros exist in the COW client:  NBT, NEWMACRO, and
SMARTMACRO.  NBT is always on, however NEWMACRO and SMARTMACRO can
be turned off by a server which does not allow them.

You may see a list of what macros are in your client by hitting
'X' followed by '?'.  At the top of this list it shows which macros
are enabled in the client right now.

NBT macros allow you enter a message in your .xtrekrc which you
send regularly.  

macro.x.X:      <text here>
#x is any ascii character; it is the "name" of the macro (the key you press
#in macro mode to send the associated macro)
#X can be A,T,F,R,K,O where A=all, T=team, F=fed, R=rom, K=kli, O=ori
#(determines the message board to which the text body of the macro is sent)
Example: 
macro.b.T:              BOMB!!!!

For more information on NEWMACRO and SMARTMACRO see the NEWMACRO 
section below.


***************************************************************
Receiver Configurable Distress Calls:
***************************************************************

9/2/93 - jmn, jn (no relation 8^)

Receiver configurable distress calls have been added to the client
and use a MACRO-like syntax.

In order to change the distress type a line such as the following
should be in your defaults file.

dist.T.taking:		(%i) Carrying %a to %l%?%n>-1%{ @ %n%}

This has the format 
dist.[key].[name of distress]:		[macro]

Arguments for the macro and SMARTMACRO syntax are exactly the same
as before.  Any argument can be used, but usually only those
in the groups "Standard" and "FULLY CAPITALIZED" apply.

Below is a table giving the name of each distress, the key it
is assigned to, and the default macro (at the time of this writing).

Key  Name	Default Distress Macro
T    taking	%T%c: (%i) Carrying %a to %l%?%n>-1%{ @ %n%}
o    ogg	%T%c: Help Ogg %p at xx
b    bomb	%T%c: %?%n>4%{bomb %l @ %n%!bomb%}
c    space_control	%T%c: Help Control at %l
1    help1	%T%c: Help me! %d%% dam, %s%% shd, %f%% fuel %a lawyers.
2    help2	%T%c: Help me! %d%% dam, %s%% shd, %f%% fuel %a lawyers.
3    help3	%T%c: Help me! %d%% dam, %s%% shd, %f%% fuel %a lawyers.
4    help4	%T%c: Help me! %d%% dam, %s%% shd, %f%% fuel %a lawyers.
e    escorting	%T%c: Escorting %p
O    ogging	%T%c: Ogging %p
B    bombing	%T%c: Bombing %l @ %n
C    controlling	%T%c: Controlling at %l
5    doing1	%T%c: @%b %d%% dam, %s%% shd, %f%% fuel %a lawyers.
6    doing2	%T%c: @%b %d%% dam, %s%% shd, %f%% fuel %a lawyers.
7    doing3	%T%c: @%b %d%% dam, %s%% shd, %f%% fuel %a lawyers.
8    doing4	%T%c: @%b %d%% dam, %s%% shd, %f%% fuel %a lawyers.
f    free_beer	%T%c: %p is free beer
n    no_gas	%T%c: %p no gas
h    crippled	%T%c: %p crippled
9    pickup	%T%c: %p++ @ %l
0    pop	%T%c: %l%?%n>-1%{ @ %n%}!
F    carrying	%T%c@%b: %d%% dam, %s%% shd, %f%% fuel %a lawyers.
@    other2	%T%c: @%b %d%% dam, %s%% shd, %f%% fuel %a lawyers.
#    other3	%T%c: @%b %d%% dam, %s%% shd, %f%% fuel %a lawyers.
E    help	%T%c@%b: %?%S=SB%{SB%!%} Help!  %d%% dam, %s%% shd, %f%% fuel  %E%{ETEMPED!!! %}%W%{WTEMPED!!!  %}%?%a>0%{%a armies!!%!%}



Here is some documentation written by jmn about how receiver
configurable distress calls work:

===========================
Well... here's how it works.... Each RC_DISTRESS compatible client can make
the distress call appear as whatever you like through their .xtrekrc...
If you DONT have a new enough client the server will do a default parsing
of the distress call and you will see it like that. Also if the server is
old then the distress call sent out by each client will appear the way
_the sender_ likes to have them displayed.

Let me summarize with an example:
F0 likes 'F' to say 'Carrying 4 maggots.'
F1 likes 'F' to say 'Carrying 4 armies.'
F2 likes 'F' to say 'Carrying 4 lawyers. 20% fuel'
The server default is 'Carrying 4.'
Note:
Advanced RC_DISTRESS users should note that 'F' can be remapped easily in
at least 2 different ways. For example throught .xtrekrc

dist.(.carrying: %T%c: Carrying %a maggots.
singleMacro: (
(this will make 'X(' or '(' be the same as 'F' used to be)
There will be more documentation on this coming later but basically the
syntax is the same as SMARTMACRO and NEWMACRO.

-----------
On a NEW server:
Case 1: All of them are using a new client.
F1 will ALWAYS see 'Carrying x armies.' No matter who sent it.

Case 2: Only F1 is using an old client.
F1 will see the _server_ set defaults for the carrying call from everybody.
Note that the calls from F0 and F2 will appear in the same format to him on
this server (but may appear in a different format on different servers).
F2 and F0 will see F1's client-defined distress calls.

---------------
On an old server:
F1 will see whatever the sender likes to see (in this case the sender sends
the pre-formatted text instead of the RC_DISTRESS short-hand).
So a 'F' from F2 will appear to everybody as:
'Carrying 4 lawyers. 20% fuel'
a 'F' from F0 will appear to everybody as:
'Carrying 4 maggots.'
===========================


-------------------------------------------------------------------------
8/16/93 - jn
New feature for default file...	
rejectMacro:  on	(on/off) default to off, if on, COW automatically
			stops NEWMACROs from being sent when the server
			has turned NEWMACROs off.  That is any
			macro in your defaults file defined by a
			mac.*.*:   (TEXT)    line.			

Multiline macros are no-longer allowed at all.
Primarily this is based on network traffic arguments.

***************************************************************
NEWMACRO and SMARTMACRO documentation - Jeff Nelson 6/4/1993 
***************************************************************


*WARNING*  *WARNING*  *WARNING*  *WARNING*  *WARNING*

These features default ON in the COW client!  A server may turn them
off *for you* if they are not allowed at that server.  The BRM client will
inform you by sending you a message line like:
BRM: Features enabled: NO_NEWMACRO, NO_SMARTMACRO

If you are not at a server that allows NEWMACRO, then all targetted
macros will be treated as normal NBT macros (no argument substitution,
%a will broadcast as %a).  If you are not on a server that allows
SMARTMACRO, then any conditional text or tests will *not* be evaluated,
instead they will be sent as the macro appears in your defaults file!

If you don't like this, complain to the server god!!  Make a difference!!


Compilers:
In order to use the below features, NBT and NEWMACRO must be defined.
In addition, SMARTMACRO must be defined to use the most advanced
features.


Here is the idea:
A player should be able to include in his/her macros whatever
reasonable information is available.  And configuring its display
in whatever way is desired.  In order to do this, the following
syntax is used (while remaining completely compatible with old NBT
macros).

A key is assigned in the defaults file (ie .xtrekrc, etc)
by a line like:

mac.F.T		Help!  Carrying %a!!

This defines a macro which will send a distress containing
the number of armies a player is carrying to his team.

Note, this is NOT printf syntax!  Any attempt to use formatting will
fail miserably.  Maybe in the future someone will want to develop
a means of formatting the variables used in macros, but the only
means I can think of are both bulky and ugly.

Here is another example:

mac.f		Help!  Carrying %a!!

Unlike the first, this macro will not send directly to the team,
instead it requires that you give a third keystroke specifying the
recipient.  For example, it could be invoked by:

XfT		<- to your team
Xf1		<- to player 1
XfG		<- if you are desperate, send to God
XfA		<- if you are stupid, send to ALL

Old macros will still work in addition to these, thus be sure there are
no conflicts.  These generally cause suprising results.  For example,
if this is in your macro file:

mac.E.T		Help!  I'm carrying!!
macro.E.A	You all suck!
mac.E		Help!  I'm a twink!!
mac.E.T		Help!  I'm carrying again!!
macro.E.A	You all suck even worse NOW!

The suprising results would be that pressing XE would broadcast the
first two messages, and then wait for the destination of the third.
It would be impossible to ever use the last two.  Unfortunately, multiline
macros also do not work if they require a destination.  There is no
good reason for this, but since multiline macros annoy the hell out
of me, I ain't fixing it.  You can still do something like:

mac.D.A:	D
mac.D.A:	O
mac.D.A:	O
mac.D.A:	S
mac.D.A:	H

This would properly broadcase 5 messages containing 1 character to all.
If you tried to specify the destination for these by using "mac.D:",
only 'D' would be sent.

Also '?' can still not be used as a macro key.
The following definitions will work in a macro:

Standard:

%a      armies carried by sender
%d      sender damage percentage
%s      sender shield percentage
%f      sender fuel percentage
%w      sender wtemp percentage
%e      sender etemp percentage
%t      team id character of target planet
%T      team id character of sender team
%c      sender id character
%n      armies on target planet
%E      1 if etemped, 0 if not
%W      1 if wtemped, 0 if not
%S      sender two character ship type
%p      id character of target player
%g	id char of target friendly player
%h	id char of target enemy player
%P      id character of player nearest sender
%G	id char of friendly player nearest sender
%H	id char of enemy player nearest sender
%l      three character name of target planet
%i	sender full player name (16 character max)
%u	full name of target player (16 character max)
%z	3 letter team id of target planet
%b      sender nearest planet

FULLY CAPITALIZED:
%L	three character name of target planet
%I	sender full player name (16 character max)
%U	full name of target player (16 character max)
%Z	3 letter team id of target planet
%B      sender nearest planet

Ping stats: (may differ slightly from server '!' ping stats)
%v    average ping stat round trip time 
%V    ping stat round trip standard deviation
%y    percent total packet loss as calculated by server formula

Miscellanous:
%m      the last message you sent
%M	the last message you sent in all caps

As a further extension to NEWMACRO, a macro may now be sent
to any of the following destinations:

%i %I %c	send message to self
%u %U %p	send message to player nearest mouse
%t %z %Z	send message to team of player nearest mouse
%g		send message to nearest friendly player to my ship
%h		send message to nearest enemy player to my ship

with a syntax like

#useful for INL...
mac.C.%i:	CAPTAIN
mac.N.%i:	NEWGALAXY
mac.S.%i:	START
mac.T.%i:	%Z

mac.W.%t:	SHUT UP, TWINKS!!
mac.I.%u:	%u: det when you escort!
mac.O.%u:	(%i) ogging

What this does is allows you to send a macro to a player or
team specified by your mouse location instead of requiring
a 3rd character to be input.  Also, it allows you to send
message to yourself without having to actual sit there and
figure out who you are (they tried and failed back in the '60s).


>>>>The above is available when NEWMACRO is defined;  from here on,
>>>>SMARTMACRO must be defined *in addition*.

Further, tests may be done within the macro system, the syntax
for these test is as follows.
%?	introduces a test
=	equivalence
>	greater
<	less

Expressions are evaluated on a character by character basis until the
test is resolved.  The text of the test is then replaced in the macro
by 1 or 0.

Test are then fed to a syntax I call conditional text.  The best way
to demonstrate how this works is example.

1%{included if true%!included if false%}

This would print:
included if true

0%{included if true%!included if false%}
included if false

Combining the whole package, a very robust macroing system is
quickly generated.  One can easily design or mimic Distress calls,
including the variable NBT distress of the COW client and all the
hardcoded message macroing built into my own client but never released.

Here are a few more samples to work from:

mac.F.T:	Help!  Carrying %a!!
mac.f:		Help!  Carrying %a!!
mac.c.T:	%p++ near %l
mac.b.T:	%?%n>4%{bomb %l at %n%!bomb%}
mac.d.T:	%E%{%!%W%{%!I'm fine.  How are you?  %}%}%E%{ETEMPED!!!  %}%W%{WTEMPED!!!  %}Carrying %?%a>0%{%a armies!%!NO armies.%}
mac.a.T:        %E%{ETEMPED!!!  %}%W%{WTEMPED!!!  %}Carrying %?%a>0%{%a armies!%!NO armies.%}
mac.R.A:	I'm a %?%S=SB%{star base!%!twink!%}
mac.K.A:	KissMy%S
mac.t:		thanks
mac.y:		yes
mac.n:		no
mac.B:		bye, getting hungry/sleep/horny
mac.e.T:	need escort going to %l%?%a>0%{, carrying %a armies!%}
mac.v.%t:       %T%c PING stats: Average: %v ms, Stdv: %V ms, Loss: %y%%

#My Favorite:
mac.m:		%m


***************************************************************
7.0 MOO Client Doc:
***************************************************************

Since BRM is based on the Moo client, many of the features
in BRM are derived from it.  Here is some documentation
for this client.

---------------------------------------------------------------

Recent updates to the "moo" client. 
(sort of a tribute to harvard Admiral Moooooooo!) (aka ryche)

future changes i'm working on:
    having the outgoing message you are composing to redraw.
    Configurable bitmaps for your cursors and your women,
    if you happen to be sick enough not to like Kathy and Steph.
--> RSA soon to be added by bronco gods.

i'm open to suggestions...

Changes to 'original' Mehlhaff client as of Apr 17, 1993:

BRAND NEW FEATURES!!--

o enemy phasers are now dotted lines so people on color
  machines have less advantage over us b&w users.
o you can turn the babes off if you want. .netrekrc resource:
  babes: on/off
o In color, you can have your shield be color of your warning
  status, like your slot number.  resource:  
  warnshields:  on/off
o lagmeter now working.  \ to see the window and . to see the
  netstat window  resources:
  netstats:  on    netstatfreq:  5      (how many updates to
  the lagmeter per second)
o silly info-borg planet bitmaps are now optional.
  resource:   newPlanetBitmaps:  on/off 
o client now responds to pigcall with "ricksmoo ver. 1.08"
  will only respond to individual messages. not 5 spaces to ALL.
o added hadley's ping stuff. the "," key brings the window up.
o Windows can now be resized!!
o zorg type XSendEvents will not be accepted by moo.
o moo has no default server compiled in. you must use -h
  or the .netrekrc resource
o New Sexist Features:  Stephanie Seymour now welcomes you to MOO
  when you enter your name. Kathy Ireland informs you if you get
  ghostbusted.
o the 'you were killed by' messages now redraw.
  sometimes they change the names when they do... not sure why.
o Phaser hits can now be logged in different places.
  resource--  showPhaser:   2
  0 = don't show
  1 = show on kill window
  2 = show on phaser window
  3 = show on total review window only

  the phaser window is controlled just like the other
  review windows.  e.g.:
     review_phaser.mapped:   on
     review_phaser.parent:   netrek
     review_phaser.geometry: 81x2+0+555
o Changed the 'you were killed by' messages to be more 
  degrading. (You were SMACKed by a plasma from R3)
o client now tells you what server you have connected 
  to in the name entry screen, also in the wait queue
o added kill messages to the message logging feature.
o you can change the defaults file you want to read in
  by sending the name of the file to 'M' (you->MOO)
  currently, you have to put the full path to the file in
  but I'll see about ~ completion...
      example:  F0->MOO  /afs/andrew.cmu.edu/cm5m/.netrekrc
                then hit & to re read the defaults.
o defaults file can now be re-read in. using the & key.
  this way you can change defaults without quitting out.
   Currently the only changes that will take effect are
   the message macros and the keymap.
o Configurable message macros to the all board. control-jkliop
  send to ALL board messages from your .xtrekrc
  resource--   message1: your control-j message
               message2: your control-k message
               message3: your control-l message
               message4: your control-i message
               message5: your control-o message
               message6: your control-p message
o Made the regular info window smaller. the shift-i info window
  is bigger. It contains the deleted info from the regular one.
o Made the time-out for entering your name 199 seconds.
  Used to be 99.
o Client now calls you by your real rank, not just "Captain!"
o added message logging on/off by default file.
  resource--   logging: on
o Added time stamping to logged messages.
o Added message logging. Will log TEAM and ALL board messages,
  either to standard out (your xterm, whatever) or, to a file.
  usage:  moo -l /path/to/messagelog OR in .xtrekrc- logfile: file
  the message logging is toggled with the ':' key.
o Player list sorting is now toggleable with the '/' key, which
  you can remap like any normal key.
o show shields/don't show shields removed from shift-O window.
  if this bothers you, see a pshychiatrist
o show stats/don't show stats removed from shift-O window.
  if this bothers you, use shift-S. that's what it's for.
o Removed 'M' key. If this bothers you, see a doctor.
  ('M' key used to turn off the galactic map)
o Show resources on galactic map by default.
o Update galactic map frequently by default.
o Visible tractor/pressors turn off when tractee cloaks.
o Show My Speed is no longer an option.
o bug in x11window.c fixed.
o beeps twice when you make the queue.
o Small clock is displayed on the far right of tstat window.
o Distress calls show armies carried as last field. (easier to read)
o SB distress call says "HELP!!" (to attract more attention)
o New (better?) cursor for tactical & galactic.
o Option to not continue the visible tractors. (a la Bert's client)

Can write TEAM and ALL messages to a file when you hit ':'
resource--  logfile:	/tmp/messagelog
the logfile can also be given on the command line.

Can show nothing, resources, or owner on galactic by default.
resource--  showgalactic:    1
2 = nothing
1 = resources
0 = ownership

Can show nothing, resources, or owner on local map by default.
resource--  showlocal:    2
2 = nothing
1 = resources
0 = ownership

Can turn off planet names by default.
resource-- showplanetnames:   off

Can sort player list by team. code fixed by Greg. (gc2n@andrew.cmu.edu)
resource-- sortPlayerlist:   on

Can show lock on galactic, local, galactic & local, or none.
resource-- showLock:  3
0 = none
1 = galactic
2 = local
3 = both

Can be set to not continue the visible tractors.
resource-- continuetractors:	on
on = continue
off = turns off after 2 updates.

---- OLD README, from Mehlhaff client ---
New key commands:
    >  increase speed by 1
    <  decrease speed by 1
    }  turn on cloaking device.
    {  turn off cloaking device.

    F  send a report of armies carried. This sends a message to your team
       saying how many armies you are carrying.  Many players used to use
       distress signals to quickly convey the same information, lessening
       the impact of the distress signal.  Distress signals should be for
       emergencies, not just common usage.

Changed distress signals:
	The distress signal of ships tells your team if you are low on fuel.
    Many ships are just as doomed when out of fuel as they are when they are 
    damaged.  
	Alternately, if you are flying a starbase, the distress signal 
    tells instead how your weapon temperature is doing, because starbases
    overheat far more often than they run out of fuel.
    Also, after the percentage weapon temperature, it will put a 'W' if 
    your weapons are currently overheated.


Help Window:  
	Basically, this was done to show what keys were
    actually mapped to what functions.  Every key function has a line in 
    the help window. Her'es a sample line:

    s gb  Toggle shields
    ||\\_ The 'b' key has been mapped to toggle shields
    || \_ The 'g' key has also been mapped toggle to  the shields
    |\____This space is always there, as a separator.
    \_____This is the default key for this function, and the hook that you
	  use when defining things to this function. I.e. to set the 'g' 
	  and 'b' mappings mentioned here, you'd have to put 'gsbs' in 
	  your .xtrekrc or your keymap options.
	  NOTE:  This character will appear here, even if it is mapped
		to something else.

Featues from the Calvin_bwo client, by Tedd Hadley:
    These features had been available in the hadley client for quite some
    time.  If they bother you, you should bother him.

Lock-on Icon:
	A little triangle is put above the icon of planet that you are 
    locked onto.  If you are locked onto a ship, this icon goes on the
    bottom.

Message-Warp:  The non-warp version.
   	Hit the 'm' key and start typing. Your cursor changes to the
    'text' cursor, and all keystrokes go to the message window.  Sending
    the mesage or the ESC key ends this.  Note, the mouse pointer is not moved, 
    and in fact, you could even still shoot and/or steer with mouse
    events while in 'message' state.

Changed cursors:
	The cursor changes in different windows. Of specific importance
    is the tactical cursor and how it changes when non-warp message-warp.
    Is activated.
   
New xtrekrc features:
	A sample xtrekrc should come with the client, but here are some of the
    new xtrekrc options:

    buttonmap:  map the mouse buttons to something else.
	i.e. the default mapping is:
	  1t2p3k

    server: default server that is called when no -h argument is
	specified.  The compiled in default server is bronco.ece.cmu.edu
    port:   default port that gets called. The compiled default is 2592

    showtractorpressor:  toggle showing tractor/pressor  beams

       UDp control
    tryUdp:	(on/off) Automaticaly use UDP if on
    udpDebug:
    udpClientSend:
    udpClientRecv:
    udpSequenceChk:

    extraAlertBorder:  Draws border in internal netrek windows, as well
	as external ones (which get ignored in X11 with window-managers )

    forcemono:	   if on, the client windows are set to be monochrome


***************************************************************
8.0 Compiling:
***************************************************************

COW has the best and easiest to use installation procedure a client
ever had.

1 *** If you are compiling COW and do not intend to release the client
  *** for public distribution with an RSA blessing, simply type:

make

In case you will need some additional flags for your compiler or linker,
edit the "sample_key.def" file and change the corresponding parameters
at the bottom.

2 *** If you are compiling COW with the intention of releasing a client
  *** for public distribution with an RSA blessing, read below.

First, please contact brmbugs@crown.EECS.Berkeley.EDU so we know about
the existance of the client and where other people might obtain it.

Make sure that you have MP or GMP available on your system.
If you do not have the GMP installation, you need to obtain it.
It should be available from gatekeeper.dec.com.

To install it do the following:

1) Take the sample_key.def file as a basis to generate an own RSA key
   definition file.
2) Edit the Makefile and set KEYDEF to the name of the new generated file.
3) make
	If you don't have already a key a new key will be generated.
4) make distkey
	Sends a mail to the RSA key keeper to get your key installed 
	at the servers.
5) you are done!  watch that GPA hit the floor!!


brmbugs@crown.EECS.Berkeley.EDU always likes to receive bug reports for
the client and if you have any suggestion for how to improve the
Makefiles or this description, please email us.  Remember that
fixes are the best way to complain. Working patches should be sent to:
brmbugs@crown.EECS.Berkeley.EDU


***************************************************************
9.0 NEW STUFF:
***************************************************************

The following are additions to BRM made after the time of
the writing of the above document.  The most recent changes
are at the bottom.


From: powell@csl.biosci.arizona.edu (Kevin R. Powell)
Date: Fri, 17 Sep 93 18:26:04 MST

--------Mouse Extensions--------

The new mouse extensions expand the ways in which you interact with 
the mouse.  The mouse extensions come in 3 distinct areas of functionality.

The mouse handling has been expanded in the following ways:

        1. Continuous tracking has been added to the mouse code.
        2. Shift and control keys now extend the number of commands
                that can be issued from a single mouse button.
        3. Any mouse button may now be used as a sort of shift
                key.  Multiple function can be assigned to any key
                by pressing while a mouse button is down.

Note that the first 2 extensions in the above list do not affect the normal
behavior of the mouse a great deal.  They just add more functionality, while 
the 3 extension, does some bizarre things with the way you deal with the 
mouse:)

--------Continuous tracking--------

Continuous tracking allows you to cause multiple commands to be issued to the
server when dragging the mouse with a button down.  For instance you can 
drag the mouse while pressing button 3 (which defaults to set_course).  This
provides more feedback for the user, and allows for smoother control.

The xtrekrc value continuousMouse controls whether or not this extension is 
enabled, the default value is on.

Example xtrekrc value:

# This enables continuous mouse tracking
continuousMouse:        on

--------Shift and control mouse buttons--------

The shift and control keys can be used to modify the default function
assigned to a button.  The shift key acts as a switch which brings an
alternate mapping to the mouse buttons.  In a simliar way control and
shift + control act to switch mappings again.

You should be able to use button remapping by the normal mechanism, but you 
will need to include buttons 1-c instead of the normal 1-3.
Breakdown of values:
Normal buttons 1, 2, 3, 
<shift + button 1, 2, or 3> maps to 4, 5, 6,
<control + button 1, 2, or 3> maps to 7, 8, 9, 
<shift + control + button 1, 2, or 3> maps to a, b, and c. 

The xtrekrc value shiftedMouse controls whether or not this extension is 
enabled, the default value is on.

Example xtrekrc values:

# This enables shift/control/shift+control modifiers to the mousebuttons
shiftedMouse:   on
# This remaps all the possible mouse buttons
buttonmap: 1t2p3k4c5s6y7E8z9xaFbdcD

--------Mouse buttons as shift--------

Mouse buttons 1-3 can be remapped to enable an alternate key set.  This is
similar to how the shift key works.  When you press the shift key it causes
the keys to respond differently (i.e., the letters are capitalized.)  This
mouse extension does something very similar making the mouse buttons 1-3
act like shift keys.  Each button "shifts" or causes a new set of key 
mappings to come into affect.  For people who are used to complicated key
mappings this extension may actually be useful:)

This extension can in some ways be viewed as the natural extension of the 
shift/control key + button combinations.  Instead of the keyboard remapping
the mouse, the mouse now remaps the keyboard.  Each key on the keyboard now
has several possible mappings.  

In the xtrekrc example below the 'a' key has the following functions: by 
itself it does nothing, with button 1 it is fire_torpedoe, and with button 2
it is set_speed warp 2.  Likewise s is shield toggle with no mouse buttons,
phaser with button 1, and warp 3 with button 2.  Note that it is possible 
to remap all the buttons (1-3) this way.

The xtrekrc value mouseAsShift controls whether or not this extension is 
enabled, the default value is off.

Example xtrekrc values:

# experimental mouse a shift-like function
mouseAsShift:           on
b1keymap:               atspdc
b2keymap:               a2s3d#
# I use the 3rd button as set, I like it on th mouse
#b3keymap:              a2s3d#

--------Availability--------

These mouse mods will be available in iBRM v1.00a and in the future in 
BRM v3.xx.  The BRM group is currently modifying the much of the code 
that the mouse extensions also effect.  So to avoid conflicting patches I am 
waiting for the completion of the above mentioned code.  I will then splice 
my mouse code into the BRM group's code, and submit it to them.  We'll see 
if it makes it in:)  


----

The following things are on by default:

        1. continuous mouse code
        2. shift/control mouse code

The stuff which is off:

        1. mouse as shift
        2. ignore signals

To turn on ignore signals on the command line use the -i (i.e. brm -i ...).
To turn on ignore signals in the .xtrekrc add the following line:
ignoreSignals:  on

The dashboard is enabled by:
newdashboard2:  on

Any comments or suggestions would be greatly appreciated.

Kevin
aka ingres, seurat, The Tick
powell@cs.arizona.edu


------------------------------------------------------------------------

Added xtrekrc option which turns the motion mouse feature off,
motion mouse still defaults to on.  - jn 9/19/93

motionMouse:    off

------------------------------------------------------------------------

Configurable Player List Documentation
 
    I've added a new .xtrekrc option called playerlist what it allows
you to do is specify which columns of the player list you want to show
and in what order.  The following is a table of the available columns.
 
Spc  Let   Name                 Header
---  ---   -------------------- -------------------
  3  'n'   Ship Number          " No"
  3  'T'   Ship Type            " Ty"
 11  'R'   Rank                 " Rank      "
 17  'N'   Name                 " Name            "
  6  'K'   Kills                " Kills"
 17  'l'   Login Name           " Login           "
  6  'O'   Offense              " Offse"
  6  'W'   Wins                 "  Wins"
  6  'D'   Defense              " Defse"
  6  'L'   Losses               "  Loss"
  6  'S'   Total Rating (stats) " Stats"
  6  'r'   Ratio                " Ratio"
  8  'd'   Damage Inflicted(DI) "      DI"
  1  ' '   White Space          " "
PLIST1
  6  'B'   Bombing              " Bmbng"
  6  'b'   Armies Bombed        " Bmbed"
  6  'P'   Planets              " Plnts"
  6  'p'   Planets Taken        " Plnts"
 17  'M'   Display/Host Machine " Host Machine    "
  7  'H'   Hours Played         " Hours "
  6  'k'   Max Kills            " Max K"
  6  'V'   Kills per Hour       "   KPH"
  6  'v'   Deaths per Hour      "   DPH"
PLIST2
  9  'w'   War staus            " War Stat"
  3  's'   Speed                " Sp"
 
So for example if you just wanted to see names and rank you'd add this
line to your .xtrekrc:
 
playerlist: NR
 
     In order for this mod to be in effect you must compile with PLIST
defined, otherwise you will get either of the two currently available
defaults.  The things shown after PLIST1 are only available if you
have PLIST1 defined, the same goes for the things after PLIST2, but
you must have PLIST defined or neither of these will do anything.
 
dave
gosselin@ll.mit.edu

NOTE FROM SOURCE KEEPER:
PLIST2 is not active in BRM currently.  Some players feel that placing
speed on the playerlist gives a strategic advantage.

NOTE ON SB STATS :
On servers which support the SBHOURS .feature, you will see slightly 
different things when you info a SB, or show the SB player on the 
playerlist.  The usual offense and defense lines are replaced with SB 
kills/hour and deaths/hour.  The kills, deaths, hours and ratio entries
are all the player's SB stats as long as he is in the SB, and his normal
stats otherwise.

------------------------------------------------------------------------

GHOST START

After a client dies, or even if you kill the client on purpose,
you can recover the game and continue playing.  In fact the
server won't have any idea that anything but bad lag (called
a ghostbust) has occurred.

The benefits of this feature include the ability to change
displays, recompile code (if you happen to be a code hack),
or simply recover from a core dump.

In order to use it, you have to pay attention to two numbers
which are displayed when you connect to the server.  A line
like this appears:
***  socket 11323, player 0  ***

This indicates which player slot you have been assigned, and
which socket number has been chosen as your ghostbust socket.

Now in order to restart, just do:
brm -G 0 -s 11323

The important options are -G followed by the player slot you
occupy, and -s followed by the ghostbust socket.  Notice that
you don't even specify a server!

This feature may NOT work on all servers.  Many server gods use
server code which is too old to support this feature.  Also,
keep an eye out for small details that are off.  It is NOT
logically possible to account for everything with this feature.
Such things as the motd are not resent by the server when you
connect, so you won't have that around anymore.  Further, the
client won't know who it is even connected to (see above), thus
don't be shocked if the client claims you are connected to a
bogus server.

WARNING:  Some servers have *very* short ghostbust timeout
periods.  You must reconnect before this timeout expires or
your slot will be given to someone else, you won't be able
to reconnect.  On most servers it is around 6 minutes long.

Note to experts:  The server will reverify clients using whatever
available means it has, including RSA or reserved.c when a ghostbust
occurs and therefore whenever this feature is used.


--------TNG Bitmaps--------

TNG bitmaps are an extension that allows for a different set of Federation 
bitmaps.  These bitmaps are more in the with the next generation style
ships.  

The xtrekrc value useTNGBitmaps enables this extension, the default value
is off.

Example xtrekrc value:

# This enables TNG bitmaps
useTNGBitmaps:		on

--------Warn Hull--------

The warnHull extension is a direct analogue of the varyShields extension to 
BRM client.  Like varyShields, warnHull tries to keep the player informed of 
the state of your hull by using a bitmap.  The bitmap consists of eight pixels 
arranged around your ship in a circle just outside you shields (see diagrams 
below).  When warnHull is on your ship looks like it has small spikes sticking 
out of the shields:) 

The xtrekrc value warnHull enables this extension, the defaults value is off.

Example xtrekrc value:
warnHull:		on


It works by using 8 pixels arrayed at the 4 cardinal point of the compass and 
4 more at equal intervals between them.
        o
   o         o


o	        o	; 100% neato diagram 1:)


   o         o
        o

So as the hull is damaged, the pixels disappear for every 12% of damage 
accumulated (clockwise from the top).

         
   o          


o	         	; <76% neato diagram 2:)


   o         o
        o


--------New Dashboard 2--------

The new dashboard besides defaulting to green (a much more informative color 
I believe:) uses different levels (fuel, hull damage etc) for green-to-
yellow-to-red transitions.  It also defaults to displaying how much hull
and shields you have left, not how much you have lost (i.e. this is an
optimistic dashboard, it sees the cup as half full:)

The default value of newdashboard2 is off.

Example xtrekrc value:
newdashboard2:		on

--------Ignore Signals--------

Ignore signals ignores segmentation faults and bus faults and **tries** to 
reset the game so you can continue.  It is meant to be used when playing that
really important game:)  You may never actually see it function, or at least
we hope so.  You can probably keep it safely on.  You will see a message like:
"Caught signal SIGSEGV or SIGBUS; attempting to continue" if a segmentation 
or bus fault occurs.

The default value of ignoreSignals is off.

Example xtrekrc value:
ignoreSignals:		on

The command line option: '-i' enables this feature as well.  You will see
a message like: "Ignoring signals SIGSEGV and SIGBUS" when this features is
enabled by the xtrekrc value or the command line option.

--------Personalized Cursors--------

The personalized cursor extensions allows the user to specify their own 
cursors for the map, local, text, menus and info list windows.  

Tell me  if you have problems, I need feedback on this because I know of at 
least one X terminal which this doesn't work properly for.  It works fine on 
my sun:)

For infoCursorDef, textCursorDef, arrowCursorDef an optional mask may 
be specified.  To specify a mask, first create your new cursor, say called
mycursor, then create the mask and call it mycursor.mask.  They both need to
be on the same path.  Cursor and mask *must* be the same size, if not the 
cursor cannot be used (why anybody would want to do this makes no sense, 
but...:)

These are the xtrekrc values:

localCursorDef:		/usr/me/.local.xbm
mapCursorDef:		/usr/me/.map.xbm
infoCursorDef:		/usr/me/.info.xbm
textCursorDef:		/usr/me/.text.xbm  # the mask would be called /usr/me/.text.xbm.mask
arrowCursorDef:		/usr/me/.arrow.xbm

--------------------------------------------------------------------

From: powell@csl.biosci.arizona.edu (Kevin R. Powell)

--------Control keymaps--------

Control keymaps (ckeymap) handles the remapping of keys in an 
analoguous manner to the normal keymap (keymap).  The control keymap 
also allows the user to map both *upper* and *lower* case letters keys  
when pressed with the control key.  This means that ^u and ^U are
*different* keys when it come to mapping them.  

Any combination of normal keys and control keys can be mapped to one 
another.  In other words, you can map from control key to control key,
control key to normal key, normal key to normal key, and normal key
to control key.
 
New format for ckeymap is:
c = any printable ascii character.
^ = introduce control mapping (the key '^' not control + key.)
 
Each entry is a pair, like:
cc              # regular format
c^c             # regular->control
^cc             # control->regular
^c^c            # control->control
 
Example ckeymap:
ckeymap:                 ^a%r^b^m^ca%d5 tfDFf^^E

Special case:
The '^' must be mapped with a double ^ ("^^") in either the bound or
binding key position.
 
Notes:
If you experience difficulties (you shouldn't) you might wish to use a 
normal keymap and a new ckeymap in combination.  Both are read in, the 
keymap first then the ckeymap.  This means that if a key which is defined 
in both the keymap and ckeymap, the ckeymap's definition will be the one 
used.

Analogously, control keys may be used for buttonmap, singleMacro and
all macro and RCD definitions.

----------------
Rabbit Ear Bitmaps

How to use rabbit ear bitmaps.  A new resource value called
whichNewPlanetBitmaps is used to enable rabbit ear bitmaps.  You must also 
have the newPlanetBitmaps enabled as well for whichNewPlanetBitmaps to have 
any effect.

Resources:

# newPlanetBitmaps automatically sets whichNewPlanetBitmaps to 1 if
# no whichNewPlanetBitmaps resource is set.
newPlanetBitmaps:	on
# newPlanetBitmaps must be on for the following to work
whichNewPlanetBitmaps:	(integer) choose which planet bitmaps to use
	0 = normal old style bitmaps
	1 = default moobitmaps
	2 = rabbit ear bitmaps

----------------
Documentation Window

The documentation window is used to view documentation while actually 
playing.  In order to do this you must either have the COW.DOC file in 
the directory you are running the client from or you must set the 
documentation resource value with the full path to the file with the
documentation.  Control-y brings this window up.

The 'f', 'b' keys scroll forward and back by 28 lines, like the motd 
window.  While 'F' and 'B' keys scroll by 4 lines.

Resources:

documentation:	/home/kensho/powell/misc/netrek/brm3002/myCOW.DOC
----------------
Xtrekrc File Window

The xtrekrc file window is used to view your current xtrekrc file online.
It is currently very stupid in that if you used the command line
option '-r' to specify your xtrekrc file, this viewer will not find
it (it currently hard wired for $HOME/.xtrekrc:(  Control-X (that 
is control-shift-x) will bring up this window.

The 'f', 'b' keys scroll forward and back by 28 lines, like the motd 
window.  While 'F' and 'B' keys scroll by 4 lines.
----------------

Kevin

-------------------------------------------------------------------
   BEEPLITE.DOC
-------------------------------------------------------------------
Local weenies cheat.  They talk to each other.  Those of us who have
never met another netrek player are forced to relie heavily on the
message window.

In order to even the playing field, the current feature was proposed.
This feature causes certain types of RCD messages to beep or even
highlite specific objects on the screen.  This is done via a
macro-like interface which is highly configurable.  Further, bitmaps
used to highlite can be substituted with your preferences.

***  TURNING BEEPING AND HIGHLITING ON

In order to turn message beeping and highliting on, you must include the
following in your .xtrekrc.

UseLite: on

The above leaves you with the feature on, but nothing is automatically
setup.  If you want to configure it yourself, go to the "CONFIGURING
VIA XTREKRC" section.  You can include a set of reasonable defaults,
instead of bothering to learn to configure it yourself by including
the lines.

DefLite: on

At any time, you can extend these simply by including some of the
configuration syntax in your .xtrekrc as described in the "CONFIGURING VIA
XTREKRC" section.

WARNING:  Use beep _sparingly_, people (including you) will get sick 
very quickly of hearing your workstation beep every 5 seconds.


***  CONFIGURING VIA XTREKRC


Message beeps are configured as on and off.  They are turned on if the
proper line is in your .xtrekrc.  Otherwise they are left off.

Message lites are configured in a way very similar to macros.
However, in addition to the original set of macro arguments, a new
class of arguments is introduced to handle the highliting.

To configure message highliting, include something like the line below.
Here "name of distress" is the RCD message type.  "macro" is the macro
style syntax specifying what is to be highlited.

lite.[name of distress]:  [macro]


Below are the configurations which are equivalent to the defaults
which are setup for you if using DefLite.  These provide good 
examples for how the system works.

lite.taking:   /c/l
lite.base_ogg: /g/m
lite.pickup:   /h
lite.help:  %?%S=SB%{/c%}

The above does the following,
"taking" message highlites the planet and taker
"base_ogg" message highlites the person to sync and your ship 
      (to REALLY get your attention)
"pickup" message highlites the enemy who picked up
"help" tests to see if the player sending the distress is a base, if so
      he is highlited

You might like to change the last one to:
lite.help:  %?%S=SB%{/c%}%?%a>0%{/c%}

This will highlite bases who distress AND carriers who distress.

Using TTS you may change the pickup macro to:
lite.pickup:   /h/|%p++ @ %l|

This sends a big ++ message on the tactical map in addition to the light.

Note that all the MACRO parsing routines are run on these, and plain 
text left over is ignored.  Only the highlite argument matter.

The following are the arguments for highliting.

/c /i /I   sender
/m /M      _your_ ship

/p      target player
/g      target friendly player
/h      target enemy player
/P      player nearest sender
/G      friendly player nearest sender
/H      enemy player nearest sender
/b      planet nearest sender
/l      target planet

The following are the arguments for sounds.

/0     	Standard window beep (incoming message sound if sound is on) 
/1 - /9 Play nt_message1 - nt_message9 sound.

Tactical Text Solution for the Tactical Tunnel Syndrome (TTS):

/| .. | displays Text in between via TTS. 
 

Additional defaults:

planetCycleTime:	highlighting time for planets
playerCycleTime: 	highlighting time for players

tts_color: 		color of TTS message (should be dark)
tts_font: 		Font (large prefered)
tts_max_len: 		Max length of a message
tts_time: 		Time a TTS message is displayed