File: NEWS

package info (click to toggle)
monopd 0.10.2-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,012 kB
  • sloc: cpp: 6,263; sh: 837; makefile: 35
file content (1088 lines) | stat: -rw-r--r-- 37,126 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
0.10.2
------

- fixed systemd socket activation support

0.10.1
------

- reworked a little bit game logic to cleanup some bugs on player
  disconnection event

0.10.0
------

- new metaserver, reworked the way monopd register to metaserver
- sockets are now not blocking for writing as well, reworked socket code to
  handle non blocking socket
- metaserver registration process is not blocking as well, except for DNS
  lookup but we cache the result and we forbid to resolve the metaserver host
  if a game is in progress
- don't wait client handshake before sending game updates anymore, it allows
  clients to lurk for new games without identifying themselves, useful so
  metaserver don't need to identify for example
- removed deprecated server to client messages: <updategamelist/>,
  <playerupdate/> master attribute, <commandlist/>, legacy <configupdate/>
  protocol
- removed deprecated client to server commands: .Ta$1 and .gp
- reworked <display/> messages so reconnecting players get display history
- added roll button (.r) to <display/> messages
- using TCP_CORK/TCP_NODELAY in a smart way to reduce game latency without
  affecting too much TCP throughput
- reworked messages order to prevent chicken and eggs problems in clients,
  like sending <cardupdate/> messages after client knows in which game
  it is to prevent message drop
- using libmuparser instead of libmath++
- added turnorder property to playerupdate message, allows clients to sort
  player list by player turn order
- reworked games and players handling, better detection when players are
  voluntarily lefting a game
- fixed many bugs when players are leaving while an action is in progress,
  most of them ended up with a frozed game
- reworked main loop so we don't spin on checking event timeout anymore
- now using UTF8-CPP library, fixed all string length checks/truncate
  and we are now checking if input is valid UTF8
- gameupdate status is now a global property, it allows client to display
  games which are in progress, adding a little bit activity in the game
  lounge
- improved spectator support, specator support is production ready, allow
  spectators by default
- added gameupdate turn property, this way clients can join a game
  as spectator in order to participate if the game was just started
- added gameupdate canbewatched property, true if player can spectate
  the game

0.9.8
-----

- fixed CVE-2015-0841: off-by-one error in network code
- check for libsystemd in preference to libsystemd-daemon
- fixed a lot of typographical and grammatical errors
- fixed systemd unit file example: it is not allowed to create a stand-alone
  Description field, moved to [Unit] section

0.9.7
-----

- bugfix: wrong estate was chosen when selling an estate, the current estate
  was chosen instead of the player-selected estate
- bugfix: fixed bind() on Mac OS X and probably some others

0.9.6
-----

- DOC: added User and Group stanzas in systemd service unit-file as a hint for
  packagers
- bugfix: fixed broken formats on x86_64, %ld on int instead of %d
- bugfix: fixed XML escaping for "You do not have enough money to buy this
  property, B & O Railroad costs 200."
- API: added gameid attribute to the new configupdate protocol

0.9.5
-----

- added systemd documentation to extra dist
- fixed CXXFLAGS and CFLAGS passed through environment variable

0.9.4
-----

- applied Debian patches against monopd
- merged libcapsinetwork into monopd
- applied Debian patches against libcapsinetwork
- bugfix: infinite loop when a game is ending
- fixed all compilation warnings, added -Werror and -Wextra to compilation flags
- added IPv6 listener support
- added systemd support for readiness notification protocol
- added systemd support for socket activation

0.9.3
-----

- bugfix: try and resolve all debts for a player on income (#83274)
- require libCapsiNetwork 0.3.0 which solves an issue with unlocatable
  symbols
- Valgrind inspired bugfixes
- improved syslog notifications

0.9.2
-----

- Valgrind inspired bugfixes improving stability.
- Switch to unixcode.org domain so some future day I can ditch the
  monopd.net proliferation.
- Properly transfer estates of players bankrupted after disconnect.
- Once auction is in state Sold or above, don't allow any more bids.

0.9.1
-----

- bugfix: properly reenable canbejoined attribute for games in progress
  allowing spectators
- bugfix: update turn for bankrupt players even if no debts were solved.
- bugfix: properly clear player socket when players disconnect

0.9.0
-----

- API: require .n as part of handshake
- API: removed updateplayerlist, has been deprecated since 0.7.0
- API: deprecated updategamelist for gameupdate
- API: .gk command for master to kick/boot players from game back to lounge (#52631)
- API: playerupdate master bool attribute moved to gameupdate master int
  (playerid) attribute
- API: configupdate has changed behavior using property system
- API: support spectators watching games in progress
- API: master can upgrade spectator to participating player (#54347)
- client config option: automate taxes (#54538)
- 30s timeout for clients not completing a handshake (requires libcapsinetwork 0.2.4)
- bugfix: exit gracefully when listen port cannot be bound (requires libcapsinetwork 0.2.5)
- bugfix: properly handle debts and estate transfers for auction
- bugfix: games are properly removed from memory when all players are disconnected
  during auction without bids, or tax dialog
- bugfix: under some debt resolutions, player property hasdebt was not set
  to false when it should have (#67594)
- bugfix: don't escape XML characters for setDisplay, it escapes internally (#68931)
- bugfix: clear buttons when ending turn manually

0.8.3
-----

- bugfix: don't put money in freeparking-like estates when collectfines is
  not enabled when resolving debts
- use properties for location= and directmove=, synchronizes jailed= and
  location= xml (#65830)
- ignore client in setTokenLocation when the token is already at the
  specified location
- added debug info
- valgrind fixes
- fixed possible race condition in setPlayerToken

0.8.2
-----

- bugfix: don't create debts for total amount on payeach card (#60986)
- bugfix: don't end turn on trade resolvement when clients are moving, during auction or tax dialog
- bugfix/API: included revision for trades to avoid accidental accept of changed trade
- bugfix: communicate player token in sendClientList (when new player joins game)
- bugfix: restore hasdebt to 0 when all debts are resolved
- use property system to relay player's game attribute
- inform about players on connect automatically, otherwise clients won't
  know about other players while not in a game
- some spectator fixes (spectator support still experimental, clients are
  not recommended to build a GUI for this yet)

0.8.1
-----

- compilation fixes for FreeBSD, Debian and gcc 3.3
- bugfix/API: communicate player bool properties hasdebt,canauction
- bugfix: remove tradeobject when targetplayer is null, not just when target
  is current owner
- bugfix: fixed crash when accepting a trade resulted in a debt
- bugfix: don't pass go on "go back three spaces" card
- bugfix: prevent duplicate player names
- bugfix: don't create debt for bankrupt players on "payeach"
- new config option/API: allow estate sales

0.8.0
-----

- use UTF-8 for config files
- gameproperty framework, with automatic wire updates, specific targets
  supported
- players with no game can now chat
- bugfix: don't include bankrupt players in "payeach" transactions
- bugfix: don't end turn when unmortaging unless there's a debt
- bugfix: clear buttons after tax choice
- bugfix: only register to meta server when identity is defined
- bugfix: update turn when player leaves running game
- bugfix: don't hold auctions when all players have 0 assets (improbable,
  but not technically impossible)
- bugfix: player's turn ends after auction completes just like it does when
  buying the regular way
- new config option: double pass money on exact landing
- new config option: shuffle card decks before taking card
- new config option: bank provides unlimited amount of houses/hotels
- new config option: player in jail gets no rent
- new config option: rentmath for cards

0.7.0
-----

- API: updateplayerlist is now deprecated for playerupdate
- API: add cleartext=bool and clearbuttons=bool to display
- API: new playerupdate attributes: host=string, image=string, master=bool and game=int
- API: support for choosable player images/tokens .pi
- API: deleteplayer tag
- CONFIG: icon support in config file, requires clients to have appropriate icons
- CONFIG: startmoney is configurable
- CONFIG: houses/hotels are configurable
- show new game button after a game has ended
- bugfix: load game templates even when config file isn't installed
- bugfix: change master attribute before sending playerupdate when creating a game
- bugfix: init Auction::m_highBidder in constructor
- bugfix: proper check for housePrice in Player::buyHouse
- bugfix: don't mess with auction events when on unsuccessful bid
- bugfix: allow building *houses* when max hotels reached
- bugfix: change player name in game description
- bugfix: only set edit=1 for master in configupdate
- bugfix: unmortgage estates thatare sold to the bank on bankruptcy

2002-12-24 (monopd-0.6.2)
----------

- SECURITY: use vsnprintf instead of vsprintf, fixes buffer overflow for .n
  command and possibly other input as well
- fixes in sending messages when deleting trade objects

2002-11-09 (monopd-0.6.1)
----------

- send estateupdate money attribute in full update
- added syslog support for info, warnings and errors
- bankrupt disconnected players after a timeout
- avoid dereference of 0 debt when bankrupting
- don't have token timeout for disconnected players
- CONFIG: add jailpayamount to config instead of hardcoded
- clear display widgets when game ends
- bugfixes against crash and possible infinite loop in setTokenLocation
- more robust turn handling

2002-10-24 (monopd-0.6.0)
----------

- code cleanups
- trade gameplay behavior fixes
- API: replaced joinedgame with correct use of <gameupdate> tag
- avoid possible race condition for Game::sendFullUpdate() call
- game now properly ends when only one player is left
- give owned cards to creditor or bank when a player goes bankrupt
- gcc 3.2 compilation fixes
- updated DESIGN document
- deleting tradecomponents in trade deconstructor no longer crashes
- CONFIG: Card::jailcard is now separated into Card::outofjail bool and
  Card::canbeowned bool, to allow for different types of ownable cards in the
  future
- support for trading of jail cards
  - API: cardupdate message to inform clients of text on cards they own,
    plus owner= attribute to replace playerupdate's outofjailcards=
  - API: new command .Tc to add cards to trade
  - API: tradecard message in tradeupdate
- inform trade players of new players getting involved
- API: notify disability to join game when size == MAX in gameupdate (games
  in updategamelist now have canbejoined boolean attribute)
- API: clientid in client message is now playerid, playerid no longer reset
  at game startup, so a game does not necessarily have players 0 through n.
- API: clientid in updateplayerlist message is also merged into playerid
- API: group attribute in estateupdate sends groupid now, not name, groupid
  attribute added to estategroupupdate
- API: merged estatedisplay with display
- CONFIG: add passmoney to estate configs (for multiple go's)
- CONFIG: move min/max players to config file
- ported to libcapsinetwork 0.2.0
- API: moved newturn message to playerupdate attribute hasturn
- remove Cards+Estates from Trades when owner changes (bankruptcy/trade/card usage)
- API: allow for reconnect with .R
- handle passing of estates elegantly
- CONFIG: remove nexutil and nextrr with advancetonextof=groupname,
  estategroups must be defined before cards now

2002-07-29 (monopd-0.5.0)
----------

- if you are insolvent on third roll of the dice in jail it doesn't end the turn right
- correctly move player to destination on successful jail roll
- allow players to go "back" (leaving a game)
- valgrind fixes, including huge memory leak in escapeXML
- free parking target for estates (cards/jail/taxes)
- game configuration
  - free parking: collect fines
  - auctionsEnabled

2002-07-15 (monopd-0.4.3)
----------

- fixed negative payeach card actions
- fixed tax choice breakage in commands
- estate defaults in game init are now also set for last estate
- fixed rentmath for utilities
- cmdline arg for running on different port than config specifies (for debugging)
- Game::findNext methods now include current estate in search
- when player has to leave jail but has no money and owes bank, roll/jail
  flags are not restored upon debt payment
- chance 3 back -> tax -> turn ended?

2002-07-11 (monopd-0.4.2)
----------

- client can choose between incremental and full updates
- when player owes $50 to each other player, the debt collector is set to
  NULL (Bank) and players never get their $50
- when we collect $50 from all other players, their solvency is not checked at all!
- 10%/200 ends turn
- 10%/200 is not protected for hasTurn
- 10%/200 buttons should only go to hasTurn
- use ${HOUSES} in configuration, that's much nicer
- ~Game crashes every now and then
- many gcc 3.1 compile fixes
- fixed many iterators that could've crashed

2002-07-09 (cap)
----------

- libmath++ includes are now in math++, require 0.0.3 or later :/
- gameboard .conf's rentmath now uses ${VAR} instead of plain VAR

2002-07-07 (cap)
----------

- clients can request full update
- payEach handles debts and solvency correctly

2002-07-04 (cap) (monopd-0.4.1)
----------

- fixed Makefile.am to include the READMEs at make dist, arghl
- fixes more mem leaks
- trades are now protected from non-participants
- added <display/> to API so clients can reset certain widgets

2002-07-03 (cap) (monopd-0.4.0)
----------

- fixed many memory leaks in Game class

2002-06-30 (cap)
----------

- monopd automatically resolves debts when you are solvent again after
  mortgaging, selling houses or trading.
- removed duplicate auction status=0 message
- finally support for 10%/200$ dialog!
- more run-time variables can be used in dynamic rentmath expressions: DICe,
  GROUPOWNED and HOUSES

2002-06-29 (cap)
----------

- send display notification when player is sent to jail

2002-06-28 (cap)
----------

- added usercount to monopigator
- fixed memory leaks and other stuff valgrind noticed

2002-06-27 (cap)
----------

- Bugfix: creating an invalid game with .gn and then starting it no longer
  crashes the server
- boardconfig API created
- API: updategamelist now sends both name and gametype for gameconfigs

2002-05-15 (cap)
----------

- added general game properties to the configuration, more verbose game
  descriptions in protocol

2002-05-01 (cap)
----------

- monopd now requires libCapsiNetwork 0.1.0 or later

2002-04-30 (cap)
----------

- added support for dynamic rent calculation, railroads/airports have been
  ported to it. we now require libmath++, so there will be no 0.3.1 as this is
  definitely a new feature worth 0.4.0 in the future

2002-04-29 (cap) (monopd-0.3.0.tar.gz)
----------

- load game configs from install data dir
- make install completely works now, updated README
- config file is now a -dist which doesn't overwrite, updated
  README.monopigator
- monopd port configurable from monopd.conf
- removed stringstream stuff, older gcc's don't seem to like it

2002-03-30 (cap)
----------

- API: introduced estategroupupdate
- API: gameupdate status started is now start

2002-03-22 (cap)
----------

- new config group EstateGroups active and used
- parsing properties: price, housePrice, color, bgColor
- API: groupid=<int> now replaced by group=<string> in estateupdate
- API: chancejailcard=<bool>,ccjailcard=<bool> replaced by outofjailcards=<int> in playerupdate
- API: removed type=<string> from estateupdate and config completely
- cards are now dynamic
- generic Board property for bgColor

2002-02-28 (cap)
----------

- auctionupdate API change: type is deprecated, edit/new are implied.

2002-02-01 (cap)
----------

- bugfix: don't allow unowned estates to be traded

2001-12-19 (cap)
----------

- C++ has bools, so use them.
- Player::canMaintain is deprecated, we've had Estate::canBeMortgaged and
  friends for a while now
- Replacing commandlist with:
  - playerupdate can_roll can_buyestate

2001-12-18 (cap)
----------

- Atlantic theme update, support for comments in config files.
- Multi-player trade updates and bugfixes.

2001-12-17 (cap)
----------

- Trades are no longer limited to two persons.

2001-12-14 (cap)
----------

- Removed --theme argument, theme can now be given as argument for .gn,
  allows clients to choose any game

2001-11-15 (cap)
----------

- Moved a lot of responsibility to Game::addPlayer, makes rest of code
  cleaner and more logical. Fixed updateplayerlist bug from TODO.
- Go to jail no longer uses hardcoded estateId 10.

2001-11-11 (cap)
----------

- Added color and bgColor to estates. Allows clients to build dynamic
  gameboards.
- Bugfix for chance/cc cards that give money.

2001-10-17 (cap)
----------

- Completed isSolvent/pay merge into payMoney (has built in check, returns
  true if payment succeeded or false if it doesn't) and addMoney (always
  true).
- Added compile date of server to version string. Have to figure out a way
  to automatically do this in CVS but not for releases.

2001-10-11 (cap)
----------

- More C code (read: chars) turned into C++ (read: strings), if there's
  going to be both a C and C++ server why not make the C++ one real C++
  instead of hybrid

2001-10-10 (cap)
----------

- API change: can_be_unmortgaged and can_be_mortgaged in estateupdate are
  replaced by can_toggle_mortgage, .m and .u commands have been replaced by
  .em command (toggle estate mortgage)
- Stringified some more stuff
- Added Player::addMoney method for easier cash management, prepared
  payMoney method which will eventually replace isSolvent() and pay()

2001-09-08 (odinhuntr)
----------

- Added sellhouseprice to Estate/initial estateupdate/config file
- Fixed up commandlist sending a little bit
- seems like i did something else too; i forget :p

2001-09-01 (odinhuntr)
----------

- Fixed a segfault bug with trading (forgot some parameters to ioInfo)
- Added a Player::getStatus() method; Player::status() is kind of sloppily
	encapsulated
- Fixed a bunch of unnecessary messages
- Fixed the oddities with passing-go money not being updated right off by
	adding the playerupdate directly into Player::pay().
- Encapsulated a bunch of other IO, too.
- Fixed two jail-related bugs; rolling enabled when paying to leave jail
	and ability to end turn while jailed removed.
- Added some better checking for the commands in the beginning of
	commands.cc.
- Encapsulated EscapeXML() into Player::name() and Game::description().
- Added type="foo" attribute to <estateupdate/>

2001-08-31 (odinhuntr)
----------

- Became the autoconf ninja I so desperatly wanted last night.  conf/
	directory is installed correctly now :p

2001-08-30 (odinhuntr)
----------

- Fixed retarded behavior of escapeXML (strcatting to a newly allocated,
	non-zero-terminated char * is bad)
- Started with some autoconf stuff, but we need an autoconf ninja to get
	the conf directory to $(prefix)/share/conf :p On the up note, one
	can now use the MONOPD_DATA #define as the prefix directory when
	haxoring on the monopd code.

2001-08-29 (odinhuntr)
----------

- Fixed auction crash bug.  I officially hate vectors.

2001-08-28 (odinhuntr)
----------

- Atlantic config file there, really rudimentary theme loading
- Lots of little cleanups

2001-08-17 (odinhuntr)
----------

- escapeXML(string) works

2001-08-10 (odinhuntr)
----------

- Fixed small bug in Estate::canBuyHouses()

2001-08-09 (odinhuntr)
----------

- Let clients know about estate prices and rents on initial estateupdate
  flood
- Fixed & --> | bug, games are playable again
- Fixed Player::status() -> Player::clientStatus() bug, ditto

2001-08-08 (odinhuntr)
----------

- Fixed the trade vector-deletion bug

2001-08-07 (odinhuntr)
----------

- Squashed a bunch of miscellaneous annoying little bugs.

2001-08-06 (cap)
----------

- implemented registerMonopigator()
- many C to C++ changes (libCapsiNetwork CVS or upcoming 0.1.0 is now 
	required!)
- merged client and player classes

2001-08-04 (cap)
----------

- Moved IO functions outside User class (User::io_writegame would now be
  Game::ioWrite).
- Moved User class to Client class

2001-08-02 (cap) (monopd-0.2.0.tar.gz)
----------

- Disconnected players are _not_ deleted from the game anymore but simply
  marked as bankrupt. This fixes some bugs and is a first step to add
  support for clients to reconnect and continue.
- Made many of the setBla() and bla() methods inlined.
- Many, many if (player->user()) checks. Moved merging of player and user
  class up to first TODO item for 0.3 (I will also redo IO stuff then by
  taking it out of the User class).
- Updated version to 0.2, prepping for release.

2001-07-31 (cap)
----------

- Removed Auction::m_ready, it was not really necessary and broke token
  movement timeouts since setReady was never set there. Instead, the event
  is created upon the first bid instead of the creation of the auction.

2001-07-31 (odinhuntr)
----------

- Added Game::estateUpdate(Estate *), sends a full estateupdate of
  the given estate and all estates in the same group to all players.
- Added <display/>, fixed bankruptcy thing (i hope).
- Working on bug list.
- AUCTIONS DONE.
- Auction fixups, *JAIL BUG SQUASHED*, some other stuff that I forget :p

2001-07-30 (odinhuntr)
----------

- Implemented most of auction system.  Still to do:  pause game during
  auction, allow bidding, handle what happens when nobody bids.

2001-07-30 (cap)
----------

- bugfix: "Advance to.." cards land player on estate
- bugfix: Timeout events land player on estate, timeouts re-enabled
- bugfix: Removing timeout event from vector when all token movements are
  already confirmed.
- bugfix: mortgaging/selling houses possible when there's a debt to settle
- bugfix: turns ends after bankrupty, even when player had doubles

2001-07-29 (odinhuntr)
----------

- API written.  God, I hate documentation.

2001-07-28 (cap)
----------

- Disabled token movement timeout as long as it's broken

2001-07-28 (odinhuntr)
----------

- XML fixes (tradeupdates not sending tradeids, reversed logic for deciding 
  which playerid to send for a player element of a tradeupdate)

2001-07-27 (odinhuntr)
----------

- Fixed annoying bug where tradeupdate accept toggles would lie about 
  which playerid was toggling (three args given to four printf args
  expected is Bad Juju (tm))
  
2001-07-26 (odinhuntr)
----------

- Changed to can_buy_houses and can_sell_houses.
- Send house price on initial estatelist, <estateupdate houseprice="150"/>.

2001-07-26 (odinhuntr)
----------

- Added a can_be_improved attribute to estateupdate, stuck it in where 
  appropriate, added Estate::canBeImproved(player *).

2001-07-24 (cap)
----------

- Keeping EstateVec pointer of Game in Estate class, moved estate related
  methods (groupSize, min/maxHouses etc) to Estate class
- Keeping User parent pointer in Player class
- Attributes changes in estateupdate allowing more lazy client updates:
  can_be_owned (replaces ownable)
  can_be_mortgaged (new)
  can_be_unmortgaged (new)
- *Major* variable cleanup/naming conventions
- updateplayerlist now supports type=del and has full support for attribute
  master

2001-07-19 (cap)
----------

- Updated trading XML as discussed on list.
  <tradeupdate type="new|edit|accepted|completed" tradeid="tradeid" 
	actor="playerid">
  Types new and edit can contain:
  <player playerid="playerid" accept="1|0" money="int"/>
  <estate estateid="estateid" included="1|0"/>
  When all accept, we send type accepted, the necessary estate/playerupdates
  and then type completed.

2001-07-18 (odinhuntr)
----------

- Added <tradeupdate type="completed"/> and deallocated trade upon success

2001-07-15 (odinhuntr)
----------

- Changed .Tc$1 to .Tr$1 'cause that's what was in the TODO :p
- Finished off player checks for trading

2001-07-15 (odinhuntr)
----------

-Trading!

 .Tn$1: trade with player $1
 .Te$1/$2: add estate $2 to trade with id $1
 .Tm$1/$2: offer $2 money to trade with id $1
 .Tc$1: cancel trade $1
 .Ta$1: accept trade $1

<tradeupdate tradeid="0" playerid="1" type="add|del|money|new" estateid="2" 
              value"3" accept="4"/>
 tradeid is the trade's internal ID tag.
 playerid is the player making the change.
 estateid is the estate for trade.
 accept is 1 or 0, depending on whether the player has accepted the 
  most recent tradeupdate. (this is reset upon any change, the player 
  must re-accept if anything is changed.)  .Ta$1 toggles this.
 type:
  add: add an estate.
  del: delete and estate.
  new: this is a new trade.
  money: player is offering an amount of money specified by 'value.'
 
- Jailcards not added yet.

2001-07-13 (cap, Friday the 13th commits)
----------

- cloned maxHouses to minHouses, even build rule now effective for both
  building and selling houses/hotels
- various cleanups
- encapsulated newTurn into Game class
- token movement timeouts working, after timeout server sends playerupdate
  towards final location with directmove=1. Clients should act upon this
  immediately and should notice themselves and cancel whatever animation they
  were displaying
- added jailed, chancejailcard and chestjailcard attributes to 
	<playerupdate>, values 1 and 0
- cleaned up API, newClass/delClass create and delete instance,
  addClass/removeClass only manipulate existing pointers

2001-07-12 (cap)
----------

- updated documentation
- event loop should be more stable now
- added command .Te#:# to toggle estates within a trade
- better implementation of vector deletes, other cleanups

2001-07-11 (odinhuntr)
----------

- fixed tax bug (luxury tax taxed an uninitialized value)
- added minimum house requirement on same-color estates

2001-07-08 (cap, live from LinuxTag)
----------

- most commands disabled during token movement
- tax $200 _or_ 10% preparations
- prepared class and some commands for trades

2001-07-06 (cap, live from LinuxTag)
----------

- Some bugfixes (checking for NULL u->game entries, moving generic checks
  towards the command parser)
- Implemented generic event system.
- Min/max players configuration.

2001-07-01 (cap)
----------

- Implemented generic event system.
- Min/max players configuration.

2001-07-01 (cap)
----------

- API changes: .c  -> .jc
               .pj -> .jp
               .r  -> .jr (normal roll can no longer be used to leave jail)
               .bh -> .hb
               .s  -> .hs
- Completed bankrupty actions (selling houses, transferring properties, etc)

2001-06-29 (cap)
----------

- Chance/CC out of jail cards are removed from pile when player receives
  them and are returned to pile when player uses them.
- Player no longer goes bankrupt automatically when unable to pay debt. 
  Player has opportunity to settle debt first (mortgaging, selling houses)
  and then pay off the debt collector with .po or to declare bankrupty
  manually.
- Leaving jail command change to .pj
- Sending some more info on startgame which should clean up client displays
  for property ownerships (they need to support it anyway, in case a
  property get sold)
- Tweaked many info messages.
- Correct calculation of rent after chance/cc cards which say "pay double
  rent / pay ten times rent".

2001-06-26 (cap)
----------

- Bugfixes.
- New command to declare bankrupty: .D, sends playerupdate with bankrupt="1"
  attribute and is automatically called when player is in debt while not
  solvent.

2001-06-24 (cap)
----------

- All chance/cc cards are now supported except advance to next util/RR!
- Houses/hotels can be sold back to the bank with command .s# (where # is 
	estateid)

2001-06-21 (cap)
----------

- Added mortgaged attribute to estateupdate. Clients can now actually parse
  results of (un)mortgage commands .m and .u!

2001-06-20 (cap)
----------

- Bugfix: unset PLAYER_CANROLL when sending to jail
- Collected Player modifications for jailing into Player::toJail()
- Buying houses is supported! Added atrribute houses to <estateupdate>,
  changed .b to .be (buy estate) and added .bh (buy house, argument
  estateid))
- Rolling not possible when clients are still moving
- No extra turn when leaving jail after doubles
- Mortgaged estates no longer collect rent
- Mortgaged estates do not counted as owned: no building or rent doubling
  for groupmates.
- Bugfix: buildings require all properties to be unmortaged, rent
  calculation is _not_ affected (except for mortgaged estate itself).

2001-06-19 (cap)
----------

- Changed game name into description (makes more sense) and issued separate
  command for it (.gd) so the master can change the description.
- Prepared some stuff for Chance/CC jailcards.

2001-06-19 (odinhuntr)
----------

- Fixed a segfault (checking u->game->status without checking u->game isn't 
  null)
- Added game names, use .gnGamename, returns <game id=moo name=Cool
  players=moo/>
  
2001-06-19 (cap)
----------

- Some bugfixes regarding throwing doubles
- Clients get a unique client ID in welcome message <client clientid="1"/>
- <updateplayerlist> now sends full info (clientid, name, host)
- Added destination enum (toUser, toGame, toAll) for User::io_info and
  User::io_error
- Even more messages turned into XML including playerupdate ((un)mortgages).
- Chance and Community Chest cards that give or take static amounts of money
  are working! And so are the pay per house/hotel ones!

2001-06-18 (cap)
----------

- Bugfix: double count must be reset after being sent to jail.
- Added Player::solvent() function to separate money checking from
  Player::pay()
- B & O Railroad -> B &amp; O Railroad. Change is currently in config file,
  I guess we should transform it ourselves before sending as XML?

2001-06-17 (cap)
----------

- Set version to pre-0.2.0

2001-06-17 (cap) (monopd-0.1.0.tar.gz)
----------

- Happy birthday Katy. Love, Rob.
- Changed estateupdate: id is now estateid, new attribute name (for init).
- Cleaned up code here and there.
- Changed intro string into XML and prepared it for clientid/connection
  cookie.
- Playerid's are 0-indexed now (or should be).
- Joinedgame no longer contains playerid attribute: client message can
  contain playerid, so that clients know their own playerid.
- When master leaves, next player becomes master.
- Added type=edit for updategamelist to edit a current item.
- Playerlist message is now updateplayerlist: types are "full", "add", "del"
  and "edit", just like updategamelist. Final attribute no longer exists.
- Set version to 0.1.0, packaged snapshot.

2001-06-16 (cap)
----------

- Added group definition for estates and rent is doubled when all
  properties of a group are owned but without houses.
- player shuffle (temporarily) disabled.
- Added directmove=1 for landing on 'to jail' message.
- Added playerupdate after paying rent.
- Bugfix: token movement confirmation is ignored when server doesn't expect
  it.
- Bugfix: passing Go gives 200 again (I pretended it did with the token
  confirmation code, but never actually gave it!).

2001-06-15 (odinhuntr)
----------

- Changed rest of messages to XML format
- Added vsprintf functionality to User::io_*
- Changed uses of said functions to use the new functionality when possible
- Fixed some spelling :p
- Added a User::io_info() (like io_error())

2001-06-14 (odinhuntr, merged into HEAD branch by cap)
----------

- Added ".d" for disconnect client->server
- Changed most barewords errors to XML messages. Gotta add vsprintf()
  functionality to User::io_*.

Note: I (cap) did not merge in the disconnect changes, I would like further
discussion on implementation first. Furthermore, since you probably have
files from both branches mixed out, please backup your changes and do a
clean checkout so your next commits builds on current tree and goes into 1.x
instead of 1.1.1.x ?

2001-06-11
----------

- Imported monopd to Sourceforge CVS. Hurrah.
- Added playerid attribute to <msg type="chat"/>, author attribute is kept
  for backwards compatibility.

2001-06-10
----------

- Only master can start game, master=1|0 attribute added to playerlist.
- Correct rent on utilities (value of dice now stored in Game class).
- Tax estates functional.
- Player leaves jail on doubles.

2001-06-10 (monopd-snapshot-2001-06-10-0251.tar.gz)
----------

- Bugfix: added missing newline after </monopd> when landing Free
  Parking and Go To Jail.
- Bugfix: passing Go should not mark clients as non-moving
- Bugfix: removed protocol breaking newline after "thrown into jail".

2001-06-05
----------

- Added reference to gtkmonop in README
- directmove=1 added to ToJail estate playerupdate
- playerlist final=1|0 instead of true|false

2001-06-05 (monopd-snapshot-2001-06-05-0510.tar.gz)
----------

- Added chat function. Commands still all start with . so anything that
  doesn't is a chat message. Server sends: <msg type="chat"
  author="playername" value="chatmsg"/>
- Removed "end of turn" non-XML message, it's no longer necessary because of
  the <newturn> message.
- Community chest and chance cards are read from config file and printed to
  client. However, the cards do not actually work yet.
- Players are shuffled upon game start.
- Lots of internal changes for Estate. Should not affect behavior much
- Playerupdate now uses playerid as attribute instead of id.


2001-06-01 (monopd-snapshot-2001-06-01-0302.tar.gz)
----------

- Added <movetoken> XML message, which replaces playerupdate for
  token movements. (but not for updates in money, name and other none
  animated stuff)
- Added .t command for clients to acknowledge token movements. Clients now
  *must* confirm the new location of their token after each
  animation/update, so that the server can send the appropriate messages
  "Passed Go, +200" at the right time.
- Added <msg type="standby"> message type, which is used to inform clients
  that the server is waiting for other clients to finish display updates
  before continuing to send info.

2001-05-27 (monopd-snapshot-2001-05-27-0342.tar.gz)
----------

- Added joinedgame XML message, informs clients of playerid.
- Added newturn XML message, informs clients of playerid with turn.

2001-05-08 (monopd-snapshot-2001-05-09-0446.tar.gz)
----------

- Many more messages turned into XML.
- Playerupdate sent after purchase as well.
- Bugfix: moved user deletion away from cmd_outro and into socket_handler

2001-05-08 (monopd-snapshot-2001-05-08-0317.tar.gz)
----------

- Confirmation for setting name is now XML.
- Confirmation/denial for joining and creating game is now XML.
- Bugfix for segmentation fault in .gs command while game pointer was NULL.
- Upon starting a game, "playerupdate" commands are sent.
- Players get unique id (valid within game).
- Dice result message is now XML.

2001-05-07 (monopd-snapshot-2001-05-07-0313.tar.gz)
----------

- Playerlist now includes final boolean ("true" or "false"). This aids
  clients, because they might need to take different actions, for example
  KMonop needs to update a Listview during config but create portfolio
  widgets once the playerlist is final.
- Playerlist (final) is automatically sent when game is started.

2001-05-03 (monopd-snapshot-2001-05-03-0422.tar.gz)
----------

- Bugfix: segmentation fault when deleting a user with a NULL pointer as
  game.

2001-05-03 (monopd-snapshot-2001-05-03-0123.tar.gz)
----------

- Playerlist is now broadcasted to all players.
- Added player hostname to playerlist.
  (monopd now requires libcapsi_network-snapshot-2001-05-03-0123.tar.gz)

2001-05-02 (monopd-snapshot-2001-05-02-0351.tar.gz)
----------

- Added command to list players in game, .gp
- Bugfix: when user gets deleted, it also removes player from game and
  deletes game is no more players are in it.

2001-04-28
----------

- API decision: messages are separated by newlines. Syntax within a message
  is yet unspecified, although it will probably use a subset of XML.
- gamelist is printed in tiny XML.

2001-03-12
----------

- turn-based game, .r only allowed on players turn [Milestone I bugfix]
- complete redesign of user, game, player and ownership relations
- separate class for estate entities, names and prices from file
- to_jail property for estates
- buying properties and collecting rent are supported in the game, however
  there are no commands in the API yet to buy properties. unowned properties
  are automatically bought at the moment.
- game requires >=2 players

2001-03-07
----------

- Simple server with very limited capabilities:
- creating a game
- joining a game not yet in progress
- starting a game