TetriNET v1.0 FINAL
By:     Craig Moksnes
IRC:    St0rmCat
E-mail: stormcat@citilink.com


Gee, Tetris?  Whats that?  Yeah, yeah, so it's been
done 2 billion times before (give or take a few bil),
but this is different!  Yes, all you tetris addicts
out there be prepared for even MORE excitement..
internet tetris!  Now you can play your five best
buddies in one of the most well known games in
existence!

TetriNET is for Windows95/NT machines and WILL NOT RUN
WITH WIN32S.  TetriNET operates best on a display
capable of 256 colors or more.  If your screen resolution
is 640x480, you may have to set your windows taskbar to
auto-hide while playing to see both windows entirely.


PLEASE CONSIDER CONTRIBUTING
  - READ SCREEN ON TETRINET STARTUP FOR DETAILS


CONTENTS:

Concept          - Game explanation
Inventory        - Explanation of inventory feature (READ!!)
Win list         - How the game keeps score
Partyline        - Explanation and features
Server           - What is and how to set up a SERVER
Client           - What a client is
Modifying        - How to modify TetriNET
Acknowledgements - People who helped alot in the making of TetriNET
VERSIONS         - Whats been changed throughout the versions


Concept:

According to how the server has modified the settings,
occasionally a sphere block with a letter will appear in
your playing field.  When you make one or more lines with
any of the lines containing one or more of these special
blocks, the special blocks in the lines will be added
to your inventory which is located near the bottom of the
window.  These special blocks do different things to players.
Each effect for the special blocks will be explained below.
The more lines you clear at the same time and the more
special blocks that are in those lines will put more
special blocks in your inventory.  A player loses when
his/her blockstack reaches the top of the field.  The Winner
is the player left after the other players have lost.

Again, Depending on how the server has modified settings,
you will gain a level (or more) everytime you clear
out a certain amount of lines.  When you gain levels,
the fall speed of the blocks coming down will increase
making it harder to find a decent place for the
blocks.  The maximum level you can be at is 50.


Inventory:  (READ!!!)

As said above, special blocks are added to your inventory
when you clear lines with special blocks in them.  You
are only able to use the special block inside the red
box.  The red box cannot be moved or the game would be
incredibly easy.  The description of what the special block
does to a player is located to the left of the inventory.
To use the current special block, press the player number of
the player you want to attack.  If the special block is a
GOOD block, use it on yourself by pressing your player
number.

Here is a list of all the special blocks:

*  'A' Block:  This is the add line block.  It will add
               a "junk line" to the players field that
               you choose.
$  'C' Block:  This is the clear line block.  It clears
               the line farthest to the bottom in the
               playing field.
$  'N' Block:  This removes all blocks from a playing
               field giving the player a "fresh start".
*  'R' Block:  This removes 10 random blocks from
               a player's field.
*  'S' Block:  This switches your playing field with
               another player's field depending on which
               player number you pressed.  If either of
               the fields' block stack is over 16 blocks
               high, the stack will be lowered.
*  'B' Block:  This removes all special blocks from
               a players field.
$  'G' Block:  This "gravity" block takes all the blocks
               on the field and "pulls" them all towards
               the bottom of the field eliminating any
               gaps in the blockstack.
*  'Q' Block:  This causes each of the lines of blocks
               on a players field to randomly shift left
               or right or not at all.

IMPORTANT:   Blocks with a '*' at the beginning of the line
             are ATTACK special blocks; use these on
             other players.

             Blocks with a '$' at the beginning are DEFENSE
             blocks and should be used on yourself because
             they are GOOD

You can also press the letter 'D' and it will discard
the first block in your inventory.

When your inventory becomes full, any special blocks
you get cannot go into your inventory.  You
will have to use up some of your inventory blocks.


Win list:

The win list keeps track of how many wins each person
has since the server started up.  The person with the
most wins is at the top.  The win list on each of
the people playing is the same.  The server can reset
the win list at any time by pressing the 'Reset Winlist'
button on the Server screen.


Partyline:

This is where the players connected to the server can
talk among each other.  You can do bold/underline/italic
by surrounding the text you want affected with characters
made from pressing ctl-b/u/i respectively.  You
can also do actions on the partyline by typing:
/ME <message>

Next to the partyline box is a list of all the players
currently connected to the server.  The server can kick
a player out by selecting his/her name in the nicklist
and pressing the KICK button.  Also, when you click
on the player's nickname in the list, (only if you're
a server) their IP will be shown above the box.

Below the nickname list is the ban list box.  Here,
you list all the *IPs* you don't want entering
the game.  You can use wildcards like * and ?.
You can also *allow* an IP to join the game by
placing a exclamation point (!) before the mask.
So you could enter into the banlist box:
   *
   !204.246.6?.* roberto
and this would only allow a user with an IP matching
'204.246.6?.*' to join the game; everyone else
could not join because of the '*'.
Notice the 'roberto' after the mask, this is only
a note to yourself for who/which/what the mask is
placed for.  This note means nothing to TetriNET and
can be anything you want it to be.

You can also easily talk while the game is going by
pressing 'T' while on the Playing Fields window and
then entering your message.  After you press return
the message will be broadcasted to the rest of the
players and will be shown in the black box near the
bottom.


Server:

To play, you must have someone be the TetriNET server.
The server should be fast so the game isn't too lagged.
The server can set all of the settings available for
the game, and decides when the game starts, etc.
Fill in your Nickname into the correct edit box and any
options under that.

To the right of the nickname box is where you can
set how often the different pieces appear (or not
at all) throughout the game.  You enter in the
percentage for each piece.  100 means the piece
will appear every single time; 0 means it wont
appear at all.  Note:  All the percents of the
pieces must add up to be 100 percent before you
can play.

The edit boxes under all those settings is where
you set how often the different special blocks
appear when they are added to the playing fields.
This works the same as explained above.

When done, press the Start Server button.  Now players
can connect to your IP.  When a player connects, a join
message will be shown in the partyline box.  When a message
is added to the partyline box and you are currently
on another screen, the partyline button text will turn
green to notify you.  When everyone is ready to play,
click on the Start New Game button.

When a game is in progress, noone can join your server.
You must end the game either by someone winning or
clicking on the End Current Game button for more people
to join.


Client:

A client is just a person playing that is not the server.
A client connects to a server.  Find the IP of a server with
people you want to play with and put that in to the
correct edit box.  Then put your nickname in the
Nickname box and press the Connect button.  You should
then see the nicknames playing pop up in the partyline
window.  You cannot connect to a server if the server
has already started a game.

When the game has started, click on the Show Fields
button and a window with all 6 fields will be shown.
The fields will be updated every time a player's block
is placed onto their field to keep everyone updated
on who's winning.


Modifying TetriNET:

To change the block graphics, edit the TNETBLKS.BMP
file in the TetriNET directory.  The file MUST
be the same size and have the same block layout of
the original! - 12 16x16 blocks across and 12 8x8
blocks across under that.

You can change the sounds in TetriNET. Just replace the
WAV files with your new ones in the \SOUNDS directory.
Here is an explanation of each sound file:

  1.WAV  - immediate piece drop
  2.WAV  - piece hits bottom
  3.WAV  - line(s) with special block made
  4.WAV  - tetris made
  5.WAV  - rotate piece
  6.WAV  - line made
  7.WAV  - won
  8.WAV  - lost
  9.WAV  - message arrives while playing

Any sound/graphic "schemes" created can be distributed
freely.

You can also modify the keys.  Click on the Misc. Settings
button.  Click in any of the boxes and press a key and
the text in the edit box will change to the key that you
pressed.


Acknowledgements:

Darktick for all his ideas and help with graphics
coding on TetriNET.

myname, [bart], and Galardo because they kept playing
and playing as betas went by - also for all the bugs
they found and suggestions they gave.

The many other people I know ;) for their support and
testing they've done for me.


VERSIONS:

  New in 1.0 FINAL:
  1.  First released version!!
  2.  Fixed Attacks/Defenses box's scrolling *again*
  3.  Fixed range check error when typing in a box
      while tetrinet is connecting to a server
  4.  Now saves your nickname in the INI

  New in BETA 1.0b:
  1.  Fixed Attacks/Defenses box's scrolling and now it
      doesn't say a player is attacking you when in fact they
      aren't
  2.  Fixed Pause button not enabling and disabling properly
  3.  Partyline edit box now disables at the right times
  4.  New icon

  New in BETA 1.0a:
  1.  Kicking users is fixed and works/looks alot better
  2.  When a player dies, their field is filled with random
      blocks
  3.  You can now pause the game.
  4.  Fixed not removing player from server if they quit
      abnormally
  5.  Tabbing between edit fields on the different screens
      is now in order
  6.  You can now see all attacks on players, even from other
      players
  7.  Fixed when making the piece fall down immediately, sometimes
      it would jump up

  New in BETA 1.0:
      AKA BETA .88

  New in BETA .88:
  1.  Fixed distortion of window if your monitor's pixels per inch
      settings were set akwardly
  2.  Moderated Switch Field block now, no more cheating ;)

  New in BETA .87:
  1.  Hopefully fixed the bug that randomly kicked players
      off the server.
  2.  Added description label next to inventory for current
      special block.
  3.  Made windows smaller to better accommodate users
      with 640x480 resolutions. (You will still have to
      auto-hide your win95/nt taskbar)

  New in BETA .86:
  1.  New WAV for when a message arrives in the playing
      window
  2.  Added IP Banlist
  3.  TetriNET now pops up the reason why you can't
      connect to a server
  4.  Now you have more time to move a piece left or
      right when it's just about to hit the bottom.
  5.  Other minor bugs fixed

  New in BETA .85:
  1.  Greatly improved handling of data coming in
      from multiple sockets.  It shouldn't crash
      anymore (?)
  2.  TetriNET now passes a little less data to
      the other players.  A fast modem is still
      recommended if you're the server.
  3.  Added easy talking while playing

  New in BETA .84:
  1.  New name because of copyrights ;)
  2.  Rearranged playing field window
  3.  Rotating certain pieces at the edge of the field
      now works
  4.  Pieces drop slower than before when you hold DOWN
      (for greater accuracy)

  New in BETA .83:
  1.  Fixed partyline jumping every once in awhile
  2.  Kick button is disable properly

  New in BETA .82:
  1.  I've added 2 more players.  Now you can compete
      with a total of 5 players!
  2.  Added player list to the partyline screen
  3.  The Server can kick someone off if needed
  4.  Added actions to partyline
  5.  Added ctl-b/u/i character attributes to partyline
  6.  Now allows playing by yourself so you can practice
  7.  Many new special blocks added
  8.  The show fields screen is now a seperate window
      (to fix all that stupid palette handling)
  9.  Added a winlist.  It shows all the players who
      won and how many times they've won in the current
      game.
  10. Added ability to discard the special block in
      inventory
  11. A title screen with some nifty graphics! :)
  12. Graphics are just one file now.
  13. Fixed a few barely noticable bugs

  New in BETA .81:
  1.  Inventory system plus other special blocks -- more to come!
  2.  Added sound!
  3.  New graphics
  4.  You can change Key config, sounds, and graphics
  5.  Made playing fields of other player's smaller to reduce
      lag
  6.  Before, TetriNET sent the entire playing field of a player
      to the rest of the players.  Now it sends just modifications
      to the fields - this also reduces lots of lag
  7.  Increased size of playing fields
  8.  You can change how often each of the pieces/special blocks
      appear in the game
