indent lists in documentation with one tab
authorMischa POSLAWSKY <netris@shiar.org>
Wed, 7 Mar 2007 23:23:01 +0000 (00:23 +0100)
committerMischa POSLAWSKY <netris@shiar.org>
Wed, 7 Mar 2007 23:23:01 +0000 (00:23 +0100)
CHANGES
TODO

diff --git a/CHANGES b/CHANGES
index 4386e4b72eb13fa6313ae4a3bb90575ca1ec76f6..4c8bfdb2f9328735d1f70e83ea35cdf53fd19010 100644 (file)
--- a/CHANGES
+++ b/CHANGES
 
 v0.8: 2007-03-04
 
- * gravity off by default
- * code cleanup
-   * revert stupid whitespace changes in 0.7.A2
-   * only use tabs for block indenting
- * cleanup Configure script, rename to more customary ./configure
- * only use ascii drawstyles with --ascii
- * help shows default values
- * fix --dropmode without specified value
- * customizable chat key
- * translatable messages
      * gravity off by default
      * code cleanup
+               * revert stupid whitespace changes in 0.7.A2
+               * only use tabs for block indenting
      * cleanup Configure script, rename to more customary ./configure
      * only use ascii drawstyles with --ascii
      * help shows default values
      * fix --dropmode without specified value
      * customizable chat key
      * translatable messages
 
 v0.7.A27
 
- * clientspecific playerdata seperated from general playerdata (PlayerDisp[])
- * player names printed over top field grid
      * clientspecific playerdata seperated from general playerdata (PlayerDisp[])
      * player names printed over top field grid
 
 v0.7.A21
 
- * used curses to invert pause text instead of stdout() so it works in screen
- * some code cleaned up
      * used curses to invert pause text instead of stdout() so it works in screen
      * some code cleaned up
 
 v0.7.A20
 
- * last gcc warning fixed
- * messages now scroll bottom to top
- * your own input is echoed on screen, _ marks cursor in typing mode
- * long messages can be displayed over multiple lines
- * typing messages longer than message window moves cursor over old text
- * empty messages are escaped
- * key and network handling in main loop in functions
- * started moving messages to seperate file
      * last gcc warning fixed
      * messages now scroll bottom to top
      * your own input is echoed on screen, _ marks cursor in typing mode
      * long messages can be displayed over multiple lines
      * typing messages longer than message window moves cursor over old text
      * empty messages are escaped
      * key and network handling in main loop in functions
      * started moving messages to seperate file
 
 v0.7.A19
 
- * Sets struct for settings
- * dropmode settings in single var, cleaned up
      * Sets struct for settings
      * dropmode settings in single var, cleaned up
 
 v0.7.A5
 
- * all robot-stuff removed
- * standard includefiles for each file instead of generated proto.h
      * all robot-stuff removed
      * standard includefiles for each file instead of generated proto.h
 
 v0.7.A2
 
- * different source identing, tabs of 8 chars
- * a couple of botcalls removed
- * server switches quadra mode with --quadra parameter
      * different source identing, tabs of 8 chars
      * a couple of botcalls removed
      * server switches quadra mode with --quadra parameter
 
 v0.7.96
 
- * field messages were slightly corrupted sometimes, somehow :P
- * handler which redraws when window resizes :)
      * field messages were slightly corrupted sometimes, somehow :P
      * handler which redraws when window resizes :)
 
 v0.7.91
 
- * buffered message history, can be redrawn
- * you can send messages, enter key toggles chat mode
- * messages can contain multiple color tags
- * in chat mode, backspace backspaces, escape cancels message
      * buffered message history, can be redrawn
      * you can send messages, enter key toggles chat mode
      * messages can contain multiple color tags
      * in chat mode, backspace backspaces, escape cancels message
 
 v0.7.831
 
- * fix bugs in free blocks detection routine
- * correct J stickiness
- * players' names displayed in teamcolor
- * correct Z stickiness, correct check below mask
- * client reports winner+time and player stats (ppm+apm), calc client-side
      * fix bugs in free blocks detection routine
      * correct J stickiness
      * players' names displayed in teamcolor
      * correct Z stickiness, correct check below mask
      * client reports winner+time and player stats (ppm+apm), calc client-side
 
 v0.7.830
 
- * shapes stick vertically as well (not physically visible yet though)
- * quadra style gravity (shape falls down when possible)
- * alternate scoring method used in gravity mode
- * junklines stick horizontally so they don't drop into each other
      * shapes stick vertically as well (not physically visible yet though)
      * quadra style gravity (shape falls down when possible)
      * alternate scoring method used in gravity mode
      * junklines stick horizontally so they don't drop into each other
 
 v0.7.828
 
- * server places unteamed players in first unused team
- * fields are resized to half width if they don't fit on screen
- * instadrop is default (as in $any::decent::tetris)
- * dropmodes as options --slidedrop and --dropmode (-d and -D)
      * server places unteamed players in first unused team
      * fields are resized to half width if they don't fit on screen
      * instadrop is default (as in $any::decent::tetris)
      * dropmodes as options --slidedrop and --dropmode (-d and -D)
 
 v0.7.826
 
- * new pieces appear near middle again
- * junklines have the color of the player/team that added them
- * fix bug causing wrong number of junklines being sent after 1st game
- * --nick parameter changes nick from default login name
- * can turn field spying back on on redraw
- * new messages on top, old messages scroll down
      * new pieces appear near middle again
      * junklines have the color of the player/team that added them
      * fix bug causing wrong number of junklines being sent after 1st game
      * --nick parameter changes nick from default login name
      * can turn field spying back on on redraw
      * new messages on top, old messages scroll down
 
 v0.7.825
 
- * shapes are now stored as bitmaps, and slightly altered to match quadra
- * extensive simplification of many routines because of this
-   (binary just ~1500 bytes smaller)
- * next piece indicator aligns piece to the right
- * blocks of a piece are grouped horizontally
-   displays 1 block as [], 2 blocks [[]], 3 blocks [[[]]], stick [[[[]]]]
- * falling blocks not stored differently from frozen blocks
-   (might cause problems with robot, but i'll deal with that later)
- * if piece can't be rotated (ie near the edge) it tries to slide it right
- * fix multiplay transmission of (new) pieces
- * field reset to 'empty' when player leaves (not 'ready')
      * shapes are now stored as bitmaps, and slightly altered to match quadra
      * extensive simplification of many routines because of this
+         (binary just ~1500 bytes smaller)
      * next piece indicator aligns piece to the right
      * blocks of a piece are grouped horizontally
+         displays 1 block as [], 2 blocks [[]], 3 blocks [[[]]], stick [[[[]]]]
      * falling blocks not stored differently from frozen blocks
+         (might cause problems with robot, but i'll deal with that later)
      * if piece can't be rotated (ie near the edge) it tries to slide it right
      * fix multiplay transmission of (new) pieces
      * field reset to 'empty' when player leaves (not 'ready')
 
 v0.7.821
 
- * colorcoding altered a bit (server messages white, player stuff colored)
- * when no team specified, server assigns a team and sends it to player
- * client displays teamname of joining players
- * client disconnects also transmitted to g/o players
- * lag could delay changes to another game, desyncing clients
-   now game info is not transmitted when game has stopped
      * colorcoding altered a bit (server messages white, player stuff colored)
      * when no team specified, server assigns a team and sends it to player
      * client displays teamname of joining players
      * client disconnects also transmitted to g/o players
      * lag could delay changes to another game, desyncing clients
+         now game info is not transmitted when game has stopped
 
 v0.7.820
 
- * server doesn't quit, but just stops game when 1 player/team left
- * when a game stops, all players are paused and their fields reset
- * server handles disconnecting clients correctly again
- * 'player quit' displayed when a client disconnects from server
- * game ended messages not displayed when a game was ready but not yet started
- * server sends new game seed at game stop
- * players' scores and (next) pieces and stuff are reset at new game
- * scores are erased instead of not drawn (apm/ppm remained at new game)
      * server doesn't quit, but just stops game when 1 player/team left
      * when a game stops, all players are paused and their fields reset
      * server handles disconnecting clients correctly again
      * 'player quit' displayed when a client disconnects from server
      * game ended messages not displayed when a game was ready but not yet started
      * server sends new game seed at game stop
      * players' scores and (next) pieces and stuff are reset at new game
      * scores are erased instead of not drawn (apm/ppm remained at new game)
 
 v0.7.819
 
- * shadow piece (preview current piece dropped down)
- * new players' fields are cleared at start
- * players are now 'fragged' by the player last adding them lines
- * ^ when that last player was himself(m/f) (s)he just 'died'
- * 'Close connection' message no longer displayed
- * players in teams are displayed in their teamcolor
      * shadow piece (preview current piece dropped down)
      * new players' fields are cleared at start
      * players are now 'fragged' by the player last adding them lines
      * ^ when that last player was himself(m/f) (s)he just 'died'
      * 'Close connection' message no longer displayed
      * players in teams are displayed in their teamcolor
 
 v0.7.817
 
- * went g/o when one player of a team went g/o instead of all of 'em
- * improved handling of closing connections in server
- * naw player's name refreshed on join
- * clients don't receive death signal from rejected player anymore
      * went g/o when one player of a team went g/o instead of all of 'em
      * improved handling of closing connections in server
      * naw player's name refreshed on join
      * clients don't receive death signal from rejected player anymore
 
 v0.7.815
 
- * server started w/o --continuous exits when just 1 player or team left
- * players can't join a started non-continuous game
- * game starts if non-ready player leaves and everybody else is ready
- * message when you or enemies add junklines
      * server started w/o --continuous exits when just 1 player or team left
      * players can't join a started non-continuous game
      * game starts if non-ready player leaves and everybody else is ready
      * message when you or enemies add junklines
 
 v0.7.814
 
- * show (paused) game right after receiving game data, before receiving players
- * server starts game after receiving minimum number of players (--min-players)
- * client altered to receive players during game loop
- * server has --max-players option for player limit (default is 8)
- * (empty) fields are drawn for maximum number of players
- * server quits correctly, client quits only when no players are left
- * players join paused when game hasn't started yet
- * player's pause state is transmitted by server
- * server does not keep repeating goahead on every join
- * ^l (by default) redraws screen (doesn't work correctly on all terms yet)
- * before game has started, '(not) ready' is displayed instead of 'pause'
- * 'empty' message over empty fields, 'game over' over dead players
- * player rejoin fixed
      * show (paused) game right after receiving game data, before receiving players
      * server starts game after receiving minimum number of players (--min-players)
      * client altered to receive players during game loop
      * server has --max-players option for player limit (default is 8)
      * (empty) fields are drawn for maximum number of players
      * server quits correctly, client quits only when no players are left
      * players join paused when game hasn't started yet
      * player's pause state is transmitted by server
      * server does not keep repeating goahead on every join
      * ^l (by default) redraws screen (doesn't work correctly on all terms yet)
      * before game has started, '(not) ready' is displayed instead of 'pause'
      * 'empty' message over empty fields, 'game over' over dead players
      * player rejoin fixed
 
 v0.7.813
 
- * blocks are normal text in !curses (not bold or anything)
- * server handles incoming connections as events too (continuously)
      * blocks are normal text in !curses (not bold or anything)
      * server handles incoming connections as events too (continuously)
 
 v0.7.811
 
- * title bar inverted
- * scorebar less wide (now 3 fields take 82 chars)
      * title bar inverted
      * scorebar less wide (now 3 fields take 82 chars)
 
 v0.7: 2002-08-10
 
- * display game over over dead player's field
- * number of connections can be set with server -c
- * exiting client automatically goes game over
- * dead players can't pause the game
- * -t sets team. players in same team don't get junklines from each other
- * client no longer displays seed
- * doesn't display fields which don't fit on screen automatically
- * quit key (q by default)
      * display game over over dead player's field
      * number of connections can be set with server -c
      * exiting client automatically goes game over
      * dead players can't pause the game
      * -t sets team. players in same team don't get junklines from each other
      * client no longer displays seed
      * doesn't display fields which don't fit on screen automatically
      * quit key (q by default)
 
 v0.6.810
 
- * seed and initspeed given by server
- * exits when only 1 player left (or 0 in singleplayer)
- * version_string in netris.h
- * fixed pause for multiple players
- * paused message displayed over pausing player's field
- * all players start paused in multiplayer
- * your own hostname isn't displayed
      * seed and initspeed given by server
      * exits when only 1 player left (or 0 in singleplayer)
      * version_string in netris.h
      * fixed pause for multiple players
      * paused message displayed over pausing player's field
      * all players start paused in multiplayer
      * your own hostname isn't displayed
 
 v0.6.89
 
- * server receive fixed (checked nonexisting sock)
- * host generates and distributes player's host string
- * handle sigint correctly (not just exit(0))
- * fix multiplay g/o (close connection at g/o or server signal)
- * spy=n0 in configfile disables spying for player n
      * server receive fixed (checked nonexisting sock)
      * host generates and distributes player's host string
      * handle sigint correctly (not just exit(0))
      * fix multiplay g/o (close connection at g/o or server signal)
      * spy=n0 in configfile disables spying for player n
 
 v0.6.88
 
- * player 1 always leftmost
- * server seperate program
      * player 1 always leftmost
      * server seperate program
 
 v0.6.87
 
- * multiplay can handle over 2 players!
      * multiplay can handle over 2 players!
 
 v0.6.86
 
- * server doesn't play
      * server doesn't play
 
 v0.6.85
 
- * titlebar somewhat improved
- * pause stops time
- * junklines doesn't move pieces up (unless inside ground)
- * improved (insta)drop handling
- * drop/down at bottom forces drop
- * updated help messages (-[hH])
      * titlebar somewhat improved
      * pause stops time
      * junklines doesn't move pieces up (unless inside ground)
      * improved (insta)drop handling
      * drop/down at bottom forces drop
      * updated help messages (-[hH])
 
 v0.6.84
 
- * same handler for configfile/parameters
- * linedraw characters unless --ascii specified
- * levelup handeled correctly
- * handicap with --level (affects yourself only, unlike --speed)
- * some variables moved and altered
- * displays name+host above opponent field
      * same handler for configfile/parameters
      * linedraw characters unless --ascii specified
      * levelup handeled correctly
      * handicap with --level (affects yourself only, unlike --speed)
      * some variables moved and altered
      * displays name+host above opponent field
 
 v0.6.83
 
- * conffile can have comments (#) and tabs instead of spaces
- * level up every 10 lines (speed x1.2)
      * conffile can have comments (#) and tabs instead of spaces
      * level up every 10 lines (speed x1.2)
 
 v0.6.82
 
- * counts score (as in gameboy version)
- * reads default parameters from netris.conf (or other file specified with -f)
      * counts score (as in gameboy version)
      * reads default parameters from netris.conf (or other file specified with -f)
 
 v0.6.81
 
- * shows next piece
- * displays elapsed time instead of clock
- * shows ppm, apm and yield
- * uses arrow keys by default (linux workaround, doesn't work on all systems)
      * shows next piece
      * displays elapsed time instead of clock
      * shows ppm, apm and yield
      * uses arrow keys by default (linux workaround, doesn't work on all systems)
 
 v0.6: 2002-07-31
 
- * -D enables instant-drop (classic drop), original -D is now -d
- * addition key for rotating pieces counterclockwise
- * displays number of pieces dropped and lines made
      * -D enables instant-drop (classic drop), original -D is now -d
      * addition key for rotating pieces counterclockwise
      * displays number of pieces dropped and lines made
 
diff --git a/TODO b/TODO
index 0fd1f9ee6c94c7b84d1c7b2ed75e90f8ca804fb7..cb96b0750dd6265040fef29168c1007c6d2a0827 100644 (file)
--- a/TODO
+++ b/TODO
 possible bugs
 
- * fail on insufficient space
      * fail on insufficient space
 
 
 near-future
 
- * only global pause (handled by server in mp)
-   every client still has readiness flag
- * correct cursorposition at quit
- * echo \r
- * transmit player fields of game in progress to new player
-       * server has to maintain copy of player fields
-       * server also handles endgame stats
- * completely fix redraw
- * server should deny duplicate nicks
- * display total frags for players (by server?)
- * spacebar toggles readiness as well
-       * seperate set of key bindings during pause?
- * wrong time after first match at second player
- * toggleable message window
      * only global pause (handled by server in mp)
+         every client still has readiness flag
      * correct cursorposition at quit
      * echo \r
      * transmit player fields of game in progress to new player
+               * server has to maintain copy of player fields
+               * server also handles endgame stats
      * completely fix redraw
      * server should deny duplicate nicks
      * display total frags for players (by server?)
      * spacebar toggles readiness as well
+               * seperate set of key bindings during pause?
      * wrong time after first match at second player
      * toggleable message window
 
 
 asap
 
- * MENUTHINGY :)
-       * write options to file
- * all messages in single include file
- * timestamps
-       * backtrace...
-               * multiple players using a single (larger) field
- * wrap multiline messages at word end
- * commands
-       * basic irc / tetrinet client: /me, /msg
-       * basic tetrinet client: /move
-       * server info: /who (also in tetrinet), /version, /whois
-       * /nick, /team (requires server passing)
-       * remaining tetrinet: /join, /list, /op, /kick,
-         /winlist, /setwinlist, /start, /stats, /tstats,
-         /rules, /news, /faqs, /features, /motd
- * observers (join as g/o player)
- * bot as seperate client
- * time-based singleplayer leveling?
- * fix -f (both client+server)
- * more server options (field size..)
- * save hiscores
      * MENUTHINGY :)
+               * write options to file
      * all messages in single include file
      * timestamps
+               * backtrace...
+                       * multiple players using a single (larger) field
      * wrap multiline messages at word end
      * commands
+               * basic irc / tetrinet client: /me, /msg
+               * basic tetrinet client: /move
+               * server info: /who (also in tetrinet), /version, /whois
+               * /nick, /team (requires server passing)
+               * remaining tetrinet: /join, /list, /op, /kick,
+                 /winlist, /setwinlist, /start, /stats, /tstats,
+                 /rules, /news, /faqs, /features, /motd
      * observers (join as g/o player)
      * bot as seperate client
      * time-based singleplayer leveling?
      * fix -f (both client+server)
      * more server options (field size..)
      * save hiscores
 
 
 distant future
 
- * server can rate players (skill ranking)
-       * persistent data (retain info if players quit)
-       * store data when server quits (and prolly at interval)
-               * reliably identify players (login? identd?)
-       * inter-server exchange? (global rank)
- * different key procedure? (allowing for multiple keys simoultaniously?)
- * vertical cropping of enemy fields (merging two lines into one!)
- * server can add lines after specified time
- * sounds
- * graphics.... (or at least x version for keys)
- * extra alarm event for effects
-       * line clear animations (flash)
- * multiple next pieces
- * hold
- * special blocks
-       * inventory
-       * player keys
-       * delete key?
-       * blocks+actions
-               abcd.fg_i..lmnopqrs__v_x.z
+       * server can rate players (skill ranking)
+               * persistent data (retain info if players quit)
+               * store data when server quits (and prolly at interval)
+                       * reliably identify players (login? identd?)
+               * inter-server exchange? (global rank)
+       * different key procedure? (allowing for multiple keys simoultaniously?)
+       * vertical cropping of enemy fields (merging two lines into one!)
+       * server can add lines after specified time
+       * sounds
+       * graphics.... (or at least x version for keys)
+       * extra alarm event for effects
+               * line clear animations (flash)
+       * multiple next pieces
+       * hold
+       * special blocks
+               * inventory
+               * player keys
+               * delete key?
+               * blocks+actions
+                       abcd.fg_i..lmnopqrs__v_x.z
+                       * tetrinet:
+                               * a: add (junk)line
+                               * b: remove specials on field
+                               * c: clear (bottom) line
+                               * g: gravity (move all blocks down)
+                               * n: nuke field
+                               * o: block bomb (3x3 blocks around any bombs on field are cleared)
+                               * q: quake (shift lines left or right)
+                               * r: remove 10 blocks at random
+                               * s: swap fields
+                       * suggested:
+                               * d (w): donate (next inv block given to other player)
+                               * f (u): flip (symetric vertical inversion)
+                               * h: hide (replaces inventory blocks by ?)
+                                               (one block restored per line added?)
+                               * l: lower (all specials from field going down (g))
+                               * p: purge (half remove special blocks from inventory)
+                               * t: take (take 2 specials from target player field)
+                               * ?: mystery (block only revealed in inventory)
+                       * tetrinet 2:
+                               * d: darkness (temporarily blackens your field except
+                                              around current piece)
+                               * f: confusion (temporarily rearranges controls)
+                               * i: attack immunity (invincible to attacks)
+                               * m: mutated pieces (gives several difficult pieces)
+                               * v: clear column (erases vertical line)
+                               * blocktrix:
+                                       * l: left gravity (pulls all blocks to the left)
+                                       * p: piece change (randomly changes player's currently falling piece)
+                                       * z: zebra field (clear every second column)
+                       * ideas:
+                               * x: seperate blocks (cut all shared pieces in quadra)
+       * quadra compatible?
+       * tetrinet compatible? (prolly not)
+       * new+better bot?
+       * ipv6
+       * replay ability? (tspec replay and/or quadra rec compatible?)
+               * demo playable as intro
+                       * create record spelling out netris logo
+       * completely customizable window layout
+       * adjustable player order (maybe even in config by nick/hostname)
+       * multiple channels per server
+               * /join and /part
+       * hold piece
+       * multiple level block preview
+       * customizable colors
+               * original:
+                   BT_I=RED, O=BLUE, T=ORANGE, L=MAGENTA, J=WHITE, S=GREEN, Z=CYAN
+               * sega:
+                   BT_I=RED, O=YELLOW, T=CYAN, L=ORANGE, J=BLUE, S=MAGENTA, Z=GREEN
+               * atari:
+                   BT_I=RED, O=BLUE, T=GREEN, L=MAGENTA, J=YELLOW, S=CYAN, Z=ORANGE
+               * quadra:
+                   BT_I=GREEN, O=ORANGE, T=BLUE, L=MAGENTA, J=YELLOW, S=CYAN, Z=RED
                * tetrinet:
-                       * a: add (junk)line
-                       * b: remove specials on field
-                       * c: clear (bottom) line
-                       * g: gravity (move all blocks down)
-                       * n: nuke field
-                       * o: block bomb (3x3 blocks around any bombs on field are cleared)
-                       * q: quake (shift lines left or right)
-                       * r: remove 10 blocks at random
-                       * s: swap fields
-               * suggested:
-                       * d (w): donate (next inv block given to other player)
-                       * f (u): flip (symetric vertical inversion)
-                       * h: hide (replaces inventory blocks by ?)
-                                       (one block restored per line added?)
-                       * l: lower (all specials from field going down (g))
-                       * p: purge (half remove special blocks from inventory)
-                       * t: take (take 2 specials from target player field)
-                       * ?: mystery (block only revealed in inventory)
-               * tetrinet 2:
-                       * d: darkness (temporarily blackens your field except
-                                       around current piece)
-                       * f: confusion (temporarily rearranges controls)
-                       * i: attack immunity (invincible to attacks)
-                       * m: mutated pieces (gives several difficult pieces)
-                       * v: clear column (erases vertical line)
-               * blocktrix:
-                       * l: left gravity (pulls all blocks to the left)
-                       * p: piece change (randomly changes player's currently falling piece)
-                       * z: zebra field (clear every second column)
-               * ideas:
-                       * x: seperate blocks (cut all shared pieces in quadra)
- * quadra compatible?
- * tetrinet compatible? (prolly not)
- * new+better bot?
- * ipv6
- * replay ability? (tspec replay and/or quadra rec compatible?)
-       * demo playable as intro
-               * create record spelling out netris logo
- * completely customizable window layout
- * adjustable player order (maybe even in config by nick/hostname)
- * multiple channels per server
-       * /join and /part
- * hold piece
- * multiple level block preview
- * customizable colors
-       * original:
-           BT_I=RED, O=BLUE, T=ORANGE, L=MAGENTA, J=WHITE, S=GREEN, Z=CYAN
-       * sega:
-           BT_I=RED, O=YELLOW, T=CYAN, L=ORANGE, J=BLUE, S=MAGENTA, Z=GREEN
-       * atari:
-           BT_I=RED, O=BLUE, T=GREEN, L=MAGENTA, J=YELLOW, S=CYAN, Z=ORANGE
-       * quadra:
-           BT_I=GREEN, O=ORANGE, T=BLUE, L=MAGENTA, J=YELLOW, S=CYAN, Z=RED
-       * tetrinet:
-           BT_I=BLUE, O=YELLOW, T=YELLOW, L=MAGENTA, J=GREEN, S=RED, Z=BLUE
-       * guideline:
-           BT_I=CYAN, O=YELLOW, T=MAGENTA, L=ORANGE, J=BLUE, S=GREEN, Z=RED
+                   BT_I=BLUE, O=YELLOW, T=YELLOW, L=MAGENTA, J=GREEN, S=RED, Z=BLUE
+               * guideline:
+                   BT_I=CYAN, O=YELLOW, T=MAGENTA, L=ORANGE, J=BLUE, S=GREEN, Z=RED
 
 
 consider