Bug fixes and enhancements.
Protocol: 1072 adds ShowOnWashout option.
Code: a few minor fixes and tweaks; in particular, change order
of automatic declarations to do pairs before chows.
Server: add option to reveal tiles on washout.
Graphical client: amalgamate a couple of buttons in dialogues for
more intuitive presentation.
Player: rehashed somewhat, with various parameters redistributed into
a bunch of magic numbers, with values chosen by experiment. Should
play a somewhat tougher game.
Bug fixes and enhancements.
Code: much diagnostic and logging code added. More socket code.
Buffer overflow exposures fixed (Len Budney). Add Reconnect command.
Fix very old bug in Kong Upon Kong checking (didn't account for
Server: fix bug in sending options to players when resuming a game.
Allow clients to refetch game state by Reconnect.
Graphical client: add crash reporting via Internet. Fix bug in UI after
a kong is robbed. Windows binary: build with modern libraries and tool
chain - seems to fix the mysterious crashes.
Code: the fix for thirteen wonders in 1.6.1 needed fixing.
Code: use (v)snprintf in Windows code, since it does exist, rather than
faking it with inadequate substitute.
Server: segfaulted when players connected with null names.
Code: the thirteen wonders checking function was not checking correctly.
Bug fixes and security fixes.
Protocol: use of backslash escaping has been tidied up. Arguably this
is only a bug fix, but protocol version has been bumped to 1060 anyway.
Graphical client: when auto-declaration of specials was on, players did
not get the chance to declare kongs in their dealt hands - fixed.
Server: receiving duplicate "NoClaim"s while waiting for a Chow claim
to complete could result in the chow claim being ignored - fixed this.
Code: backslash escaping tidied up, and infinite loop bug removed.
Several potential buffer overrun exploits closed (thanks to
Nicolas Boullis for these).
Bug fixes and minor enhancements.
Graphical client: add option to select table colour. Minor wording
changes. Code tidies.
Server: Change meaning of DiscarderDoubles to match Singaporean
play (as originally intended). Bug fix in loading games from file.
Code: fix bug in handling of kong robbing (konging flag wasn't cleared,
causing crash in next hand).
Graphical client: fix bug in automatic declaration of winning hands
when having Thirteen Orphans.
Extend auto-declaration so that it claims the discard as well.
Server: hands with Thirteen Orphans were being given Imperial Jade as well.
Graphical client: fix bug in interaction between sticky open dialog
fields and the --connect command-line option.
Change the location for xmj.ini under Windows: it is now
in HOMEPATH, current (if writable), or root (in that order).
Also, look for old xmj.ini in all locations if not found
in the expected location.
Fix bug in Message processing causing crashes.
Code: changed spec of get_homedir().
Bugfix, minor enhancement.
Graphical client: add display option to choose text font.
Code: fix bug in handling of "last 4 tiles" cannon (again).
Bugfixes, minor enhancement.
Protocol: version now 1050, as we now accept Chow AnyPos
Graphical client: add a checkbox to keep focus in message window.
Fix handling of chows when MahJonging so that erroneous chows
don't cause deadlock.
Server: don't allow reconnects while terminating a game.
Code: make protocol text expansion accept null source. (Prevents
errors in handling empty CMsgMessages.)
Add hacks to allow "server" to be stdin/stdout.
Change handling of chows to allow an AnyPos chow declaration
when claiming the discard for Mah-Jong.
Server: fix bugs in handling of disconnecting players before game starts.
Code: in protocol decoding, work round bug in Microsoft implementation
Feature enhancements, bugfixes.
Rules/protocol: protocol can now remove players from a game (1036).
Added TimeoutGrace game option and LocalTimeouts player option (1036).
Added LoadState command (1038).
Added LosersSettle, EastDoubles, DiscDoubles game options (1040).
Protocol version now 1040.
Server: handle new game options.
Add --no-manager option to stop players changing game options.
Add --end-on-disconnect option to end the game gracefully when
a player disconnects, and --disconnect-penalties to specify
penalties for this.
Allow clients to handle timeouts locally.
Handle dynamic loading of game state in response to LoadState.
Graphical client: re-arrange new game and connection menu and panels.
Add display options: suppress popups, include info and message windows
in main window.
Make some fields sticky in dialogs.
Add options to declare specials and sets automatically.
New window to display warnings from internal code.
Add font selection for main font.
Add display size to the preferences panel.
Handle timeouts locally if allowed.
Include small tile set in distribution.
Use "Display" instead of "XmjOption" in rc file.
Code: bugfix to cannon handling.
Fix bug in treatment of scoring options, avoid overflow.
Some changes to spec of internal functions.
Prevent players discarding when they should draw a tile.
New functions for warnings.
Server: set timeout option correctly when resuming game.
Code: fix bug in handling of cannons in last four tiles.
Rules/protocol: add option to implement Millington's rules on kongs.
Protocol version now 1034.
Server: implement scoring with Millington's rules on kongs.
Warning: server is not perfectly backward compatible, as annexed and
claimed kongs are now distinguished in scoring information, regardless
of the appropriate option setting. However, earlier clients using my
code will not be worried by this.
Graphical client: handle display of Millington's kong variations.
Code: handle Millington's kongs. (Changes to several modules.)
Graphical client: fix small bug in handling of numerical option fields.
Minor bugfixes and invisible enhancements.
Graphical client: fix bug in option parsing.
Change tiletip positions; when tiletips always on, have the selected
tile's tip always visible.
Move tiletips, claim popups, and animation into the main window
(except under Windows, where animation is still done by popups).
Fix bug in uniconification of auxiliary windows.
Code: introduced the vlazy_fixed widget, another variation on
the gtk_fixed, for use with "popups".
Feature enhancements and bugfixes.
Rules/protocol: added options for fully and partially concealed hand scores.
Added (deprecated) option to allow losers to score pure and concealed
All Honours and All Terminals now also get the All Majors score.
Protocol version now 1032.
Server: prints OK: socket on startup (or FAILED: if it fails); used
Some minor code tidies.
Graphical client: on new game panel, allow specification of robot names.
Include preferences for default robot names.
Add keyboard accelerators for selecting tiles and all menus.
Be more intelligent about starting server.
Don't animate tiles if the main window is unmapped or obscured.
Add option to iconify all subsidiary windows along with main.
Various small fixes.
Player: add --name option.
Gui: fix stupid bug introduced in last release causing
crash after about five hands.
Graphical client: add Tileset and Tileset search path options.
Allow display option changes to take immediate effect.
Server: fixed rare but major bug in dead wall handling.
Fixed minor scoring bug (filling the only place).
Rules/protocol: added file name field to SaveState cmsg.
Added Comment cmsg.
Added Wall cmsg.
Protocol version now 1030.
Server: handle new options.
Add --load-game and --save-on-exit options.
Implemented game saving and restoring.
Graphical client: added Save and Resume commands.
Changed some menu and menu option names.
Code: some tidying in addition to new features.
Major feature enhancements.
Rules/protocol: added a "nat" (unsigned in) game option type.
Added game options:
Limits on score, and no-limit games.
Seven Pair hands.
Scores for own Flower etc. changeable.
Dead Wall may be per Millington, per everybody else, or not used.
Base score for Mah Jong changeable.
Protocol version now 1020.
Server: handle new game options. Make DeadWall16 unset by default.
Added --wallfile option (testing only).
Added --option-file option.
Make first human to connect be the game manager.
Graphical client: added an Options menu, giving access to:
display options: dialog position, animation, tiletips, wall showing.
game option preferences: options applied to all games.
current game options: control over currently connected game.
Uses an rc file to store preferences.
Added tiletips facility.
When not showing wall, say how many live tiles left.
Handle new game options, such as no flowers.
Eliminated flickering problem when the wall is shown.
Suggests donation after ten full games.
Player: complete re-write of strategy engine. Now plays much more
strongly in offensive play. Still has only rudimentary defence.
New strategy control options, but still undocumented. Probably
stable enough to document: next release, perhaps.
Handles the new game options (though never tries to get seven pairs).
Code: in addition to all the code required for new features, there
has been a large amount of tidying up. Still not enough...
Server: bug in scoring: was only giving 2 pts for fishing a major
pair (despite saying 4 in the messsage!).
Graphical client: default to a smaller size on 800x600 displays.
Add an icon to the Windows version.
Graphical client: the --dialogs-below option has been broken since
the pre-release (and nobody's noticed). Now fixed.
Server: error in handling kongs declared while declaring specials:
it wasn't drawing a replacement tile for the player.
Also failing to handle properly the (vanishingly unlikely)
case of such a kong being robbed.
In addition, the Heaven's/Earth's Blessing hands were being
incorrectly detected, and would not be granted if a kong had
been declared before start of play.
Added a delay that may help with a Windows problem, when the
client crashes at end of game.
Added a --seed option for the random number generator.
Graphical client: now copes correctly with robbing a kong declared
before start of play.
Server: rare but fatal and annoying bug fixed: when a player makes
a dangerous discard and has no choice but to do so, the server
would abort. Fixed by making the appropriate macro in
game.h return a bool; also made encode_cmsg more liberal
about what it accepts, to prevent further such bugs.
First full release. Changes since the pre-release:
Rules: the rules now match the rest of the world in that konging
and declaring flowers is allowed only after drawing from the wall.
The protocol version has been incremented to 1010 to mark this change.
(The old rule will still apply if playing with old clients.)
Robbing a closed kong to complete Thirteen Unique Wonders is now
The default score for bouquets has been cut back to one double.
One or two outright bugs fixed (handling of Thirteen Wonders failed).
Server: several bugs fixed (in ptic, letting off cannons was buggy).
--exit-on-disconnect option added.
--no-special-scores option added.
--randomseats option changed to --random-seats.
Player: several bugs fixed, and many (not very successful) attempts
to improve the tactics.
Graphical client: many bug fixes.
Added "About" window.
Added "New Game..." entry to "Connect" menu, to start a game
with a local server and clients.
The scoring window is now popped up at the end of scoring, rather
than the beginning.
A message is displayed while waiting for a suspended game to restart.
Code: lots of restructuring, not least to accommodate Windows.
Stopped using imake, just use a GNU Makefile instead.
Pre-release of first public source release.