t"Abilities" are exchanged between client and server to allow protocol extensions - vaccinewars - be a doctor and try to vaccinate the world
 (HTM) git clone git://src.adamsgaard.dk/vaccinewars
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit df873c76ff76b9249578fcbf17703924b54797ff
 (DIR) parent 77e40eafd4a8a40611daa344fef372430a27ac65
 (HTM) Author: Ben Webb <ben@salilab.org>
       Date:   Tue, 12 Sep 2000 00:18:31 +0000
       
       "Abilities" are exchanged between client and server to allow protocol extensions
       
       
       Diffstat:
         M TODO                                |       4 +++-
         M po/dopewars.pot                     |     486 ++++++++++++++++----------------
         M src/curses_client.c                 |       1 +
         M src/dopewars.c                      |       1 +
         M src/dopewars.h                      |       9 +++++++++
         M src/gtk_client.c                    |       3 ++-
         M src/message.c                       |      43 ++++++++++++++++++++++++++++++
         M src/message.h                       |       5 +++++
         M src/serverside.c                    |       6 +++++-
         M src/win32_client.c                  |       1 +
       
       10 files changed, 313 insertions(+), 246 deletions(-)
       ---
 (DIR) diff --git a/TODO b/TODO
       t@@ -1,4 +1,6 @@
       -- Fix GTK+ modal dialog behaviour (scrolling of messages, mouse grabbing)
       +- Register abilities of both client and server to allow backwards-compatible
       +  protocol extensions
       +- Fix GTK+ modal dialog behaviour (mouse grabbing during fighting)
        - Revamp player-player fighting
        - Display purchase price of drugs?
        - Increase cops' toughness - they should kill a bitch in 50-70% of encounters
 (DIR) diff --git a/po/dopewars.pot b/po/dopewars.pot
       t@@ -6,7 +6,7 @@
        msgid ""
        msgstr ""
        "Project-Id-Version: PACKAGE VERSION\n"
       -"POT-Creation-Date: 2000-09-11 02:27+0100\n"
       +"POT-Creation-Date: 2000-09-12 01:16+0100\n"
        "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
        "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
        "Language-Team: LANGUAGE <LL@li.org>\n"
       t@@ -738,53 +738,53 @@ msgstr ""
        msgid "Drugs can be your friend!"
        msgstr ""
        
       -#: src/dopewars.c:1073
       +#: src/dopewars.c:1074
        msgid "Unable to process configuration file line"
        msgstr ""
        
       -#: src/dopewars.c:1134
       +#: src/dopewars.c:1135
        msgid ""
        "Configuration can only be changed interactively when no\n"
        "players are logged on. Wait for all players to log off, or remove\n"
        "them with the push or kill commands, and try again."
        msgstr ""
        
       -#: src/dopewars.c:1195
       +#: src/dopewars.c:1196
        #, c-format
        msgid "Index into %s array should be between 1 and %d"
        msgstr ""
        
       -#: src/dopewars.c:1214
       +#: src/dopewars.c:1215
        #, c-format
        msgid "%s is %d\n"
        msgstr ""
        
       -#: src/dopewars.c:1219
       +#: src/dopewars.c:1220
        #, c-format
        msgid "%s is %s\n"
        msgstr ""
        
       -#: src/dopewars.c:1222
       +#: src/dopewars.c:1223
        #, c-format
        msgid "%s is \"%s\"\n"
        msgstr ""
        
       -#: src/dopewars.c:1226
       +#: src/dopewars.c:1227
        #, c-format
        msgid "%s[%d] is %s\n"
        msgstr ""
        
       -#: src/dopewars.c:1229
       +#: src/dopewars.c:1230
        #, c-format
        msgid "%s is { "
        msgstr ""
        
       -#: src/dopewars.c:1260
       +#: src/dopewars.c:1261
        #, c-format
        msgid "Resized structure list to %d elements\n"
        msgstr ""
        
       -#: src/dopewars.c:1403
       +#: src/dopewars.c:1404
        #, c-format
        msgid ""
        "Usage: dopewars [OPTION]...\n"
       t@@ -1084,7 +1084,7 @@ msgstr ""
        msgid " Are you sure? "
        msgstr ""
        
       -#: src/curses_client.c:536 src/curses_client.c:554 src/curses_client.c:1673
       +#: src/curses_client.c:536 src/curses_client.c:554 src/curses_client.c:1674
        msgid "YN"
        msgstr ""
        
       t@@ -1104,7 +1104,7 @@ msgstr ""
        msgid "The server has terminated. Reverting to single player mode."
        msgstr ""
        
       -#: src/curses_client.c:635 src/gtk_client.c:335 src/serverside.c:258
       +#: src/curses_client.c:635 src/gtk_client.c:335 src/serverside.c:262
        #, c-format
        msgid "%s joins the game!"
        msgstr ""
       t@@ -1169,7 +1169,7 @@ msgstr ""
        msgid "How much money do you pay back? "
        msgstr ""
        
       -#: src/curses_client.c:880 src/curses_client.c:910 src/gtk_client.c:1927
       +#: src/curses_client.c:880 src/curses_client.c:910 src/gtk_client.c:1928
        msgid "You don't have that much money!"
        msgstr ""
        
       t@@ -1185,7 +1185,7 @@ msgstr ""
        msgid "How much money? "
        msgstr ""
        
       -#: src/curses_client.c:913 src/gtk_client.c:1920
       +#: src/curses_client.c:913 src/gtk_client.c:1921
        msgid "There isn't that much money in the bank..."
        msgstr ""
        
       t@@ -1197,7 +1197,7 @@ msgstr ""
        msgid "Messages"
        msgstr ""
        
       -#: src/curses_client.c:1130 src/gtk_client.c:1378
       +#: src/curses_client.c:1130 src/gtk_client.c:1379
        msgid "Stats"
        msgstr ""
        
       t@@ -1257,96 +1257,96 @@ msgstr ""
        msgid "Hey dude, what's your name? "
        msgstr ""
        
       -#: src/curses_client.c:1419
       +#: src/curses_client.c:1420
        #, c-format
        msgid "Hey dude, the prices of %s here are:"
        msgstr ""
        
       -#: src/curses_client.c:1431
       +#: src/curses_client.c:1432
        msgid "Will you B>uy"
        msgstr ""
        
       -#: src/curses_client.c:1432
       +#: src/curses_client.c:1433
        msgid ", S>ell"
        msgstr ""
        
       -#: src/curses_client.c:1433
       +#: src/curses_client.c:1434
        msgid ", D>rop"
        msgstr ""
        
       -#: src/curses_client.c:1434
       +#: src/curses_client.c:1435
        msgid ", T>alk, P>age, L>ist"
        msgstr ""
        
       -#: src/curses_client.c:1437
       +#: src/curses_client.c:1438
        msgid ", G>ive"
        msgstr ""
        
       -#: src/curses_client.c:1440
       +#: src/curses_client.c:1441
        msgid ", F>ight"
        msgstr ""
        
       -#: src/curses_client.c:1444
       +#: src/curses_client.c:1445
        msgid ", J>et"
        msgstr ""
        
       -#: src/curses_client.c:1446 src/curses_client.c:1461
       +#: src/curses_client.c:1447 src/curses_client.c:1462
        msgid ", or Q>uit? "
        msgstr ""
        
       -#: src/curses_client.c:1454
       +#: src/curses_client.c:1455
        msgid "Do you "
        msgstr ""
        
       -#: src/curses_client.c:1456
       +#: src/curses_client.c:1457
        msgid "F>ight, "
        msgstr ""
        
       -#: src/curses_client.c:1457
       +#: src/curses_client.c:1458
        msgid "S>tand, "
        msgstr ""
        
       -#: src/curses_client.c:1459
       +#: src/curses_client.c:1460
        msgid "R>un, "
        msgstr ""
        
       -#: src/curses_client.c:1460
       +#: src/curses_client.c:1461
        msgid "D>eal "
        msgstr ""
        
       -#: src/curses_client.c:1503
       +#: src/curses_client.c:1504
        msgid "Connection to server lost! Reverting to single player mode"
        msgstr ""
        
       -#: src/curses_client.c:1532
       +#: src/curses_client.c:1533
        msgid "BSDTPLGFJQ"
        msgstr ""
        
       -#: src/curses_client.c:1534
       +#: src/curses_client.c:1535
        msgid "DRFSQ"
        msgstr ""
        
       -#: src/curses_client.c:1562
       +#: src/curses_client.c:1563
        msgid "List what? P>layers or S>cores? "
        msgstr ""
        
       -#: src/curses_client.c:1563
       +#: src/curses_client.c:1564
        msgid "PS"
        msgstr ""
        
       -#: src/curses_client.c:1572
       +#: src/curses_client.c:1573
        msgid "Whom do you want to page (talk privately to) ? "
        msgstr ""
        
       -#: src/curses_client.c:1587
       +#: src/curses_client.c:1588
        msgid "Talk: "
        msgstr ""
        
       -#: src/curses_client.c:1672
       +#: src/curses_client.c:1673
        msgid "Play again? "
        msgstr ""
        
       -#: src/curses_client.c:1684
       +#: src/curses_client.c:1685
        msgid ""
        "No curses client available - rebuild the binary passing the\n"
        "--enable-curses-client option to configure, or use a windowed\n"
       t@@ -1445,7 +1445,7 @@ msgstr ""
        msgid "Inventory"
        msgstr ""
        
       -#: src/gtk_client.c:236 src/gtk_client.c:2163 src/gtk_client.c:2531
       +#: src/gtk_client.c:236 src/gtk_client.c:2164 src/gtk_client.c:2532
        msgid "Close"
        msgstr ""
        
       t@@ -1488,9 +1488,9 @@ msgstr ""
        msgid "High Scores"
        msgstr ""
        
       -#: src/gtk_client.c:434 src/gtk_client.c:1032 src/gtk_client.c:1491
       -#: src/gtk_client.c:1836 src/gtk_client.c:2001 src/gtk_client.c:2280
       -#: src/gtk_client.c:2438
       +#: src/gtk_client.c:434 src/gtk_client.c:1032 src/gtk_client.c:1492
       +#: src/gtk_client.c:1837 src/gtk_client.c:2002 src/gtk_client.c:2281
       +#: src/gtk_client.c:2439
        msgid "OK"
        msgstr ""
        
       t@@ -1503,7 +1503,7 @@ msgstr ""
        msgid "_Deal %s"
        msgstr ""
        
       -#: src/gtk_client.c:547 src/gtk_client.c:1125 src/gtk_client.c:1321
       +#: src/gtk_client.c:547 src/gtk_client.c:1125 src/gtk_client.c:1322
        msgid "_Fight"
        msgstr ""
        
       t@@ -1556,8 +1556,8 @@ msgstr ""
        msgid "%s how many?"
        msgstr ""
        
       -#: src/gtk_client.c:1038 src/gtk_client.c:1836 src/gtk_client.c:2012
       -#: src/gtk_client.c:2288
       +#: src/gtk_client.c:1038 src/gtk_client.c:1837 src/gtk_client.c:2013
       +#: src/gtk_client.c:2289
        msgid "Cancel"
        msgstr ""
        
       t@@ -1566,11 +1566,11 @@ msgstr ""
        msgid "You don't have any %s!"
        msgstr ""
        
       -#: src/gtk_client.c:1124 src/gtk_client.c:1837
       +#: src/gtk_client.c:1124 src/gtk_client.c:1838
        msgid "_Yes"
        msgstr ""
        
       -#: src/gtk_client.c:1124 src/gtk_client.c:1837
       +#: src/gtk_client.c:1124 src/gtk_client.c:1838
        msgid "_No"
        msgstr ""
        
       t@@ -1586,71 +1586,71 @@ msgstr ""
        msgid "Question"
        msgstr ""
        
       -#: src/gtk_client.c:1251
       +#: src/gtk_client.c:1252
        msgid "<main>/Talk"
        msgstr ""
        
       -#: src/gtk_client.c:1253
       +#: src/gtk_client.c:1254
        msgid "<main>/List"
        msgstr ""
        
       -#: src/gtk_client.c:1255
       +#: src/gtk_client.c:1256
        msgid "<main>/Errands"
        msgstr ""
        
       -#: src/gtk_client.c:1271
       +#: src/gtk_client.c:1272
        msgid "Space"
        msgstr ""
        
       -#: src/gtk_client.c:1276
       +#: src/gtk_client.c:1277
        msgid "Cash"
        msgstr ""
        
       -#: src/gtk_client.c:1281
       +#: src/gtk_client.c:1282
        msgid "Debt"
        msgstr ""
        
       -#: src/gtk_client.c:1286
       +#: src/gtk_client.c:1287
        msgid "Bank"
        msgstr ""
        
       -#: src/gtk_client.c:1301
       +#: src/gtk_client.c:1302
        msgid "Health"
        msgstr ""
        
       -#: src/gtk_client.c:1321
       +#: src/gtk_client.c:1322
        msgid "_Jet!"
        msgstr ""
        
       -#: src/gtk_client.c:1352
       +#: src/gtk_client.c:1353
        msgid "dopewars"
        msgstr ""
        
       -#: src/gtk_client.c:1438
       +#: src/gtk_client.c:1439
        msgid "Drug Dealing and Research"
        msgstr ""
        
       -#: src/gtk_client.c:1439
       +#: src/gtk_client.c:1440
        msgid "Play Testing"
        msgstr ""
        
       -#: src/gtk_client.c:1440
       +#: src/gtk_client.c:1441
        msgid "Extensive Play Testing"
        msgstr ""
        
       -#: src/gtk_client.c:1442
       +#: src/gtk_client.c:1443
        msgid "Constructive Criticism"
        msgstr ""
        
       -#: src/gtk_client.c:1444
       +#: src/gtk_client.c:1445
        msgid "Unconstructive Criticism"
        msgstr ""
        
       -#: src/gtk_client.c:1448
       +#: src/gtk_client.c:1449
        msgid "About dopewars"
        msgstr ""
        
       -#: src/gtk_client.c:1457
       +#: src/gtk_client.c:1458
        msgid ""
        "Based on John E. Dell's old Drug Wars game, dopewars is a simulation of an\n"
        "imaginary drug market.  dopewars is an All-American game which features\n"
       t@@ -1662,151 +1662,151 @@ msgid ""
        "have one month of game time to make your fortune.\n"
        msgstr ""
        
       -#: src/gtk_client.c:1465
       +#: src/gtk_client.c:1466
        #, c-format
        msgid ""
        "Version %s     Copyright (C) 1998-2000  Ben Webb ben@bellatrix.pcl.ox.ac.uk\n"
        "dopewars is released under the GNU General Public Licence\n"
        msgstr ""
        
       -#: src/gtk_client.c:1483
       +#: src/gtk_client.c:1484
        msgid ""
        "\n"
        "For information on the command line options, type dopewars -h at your\n"
        "Unix prompt. This will display a help screen, listing the availableoptions."
        msgstr ""
        
       -#: src/gtk_client.c:1521 src/gtk_client.c:1544
       +#: src/gtk_client.c:1522 src/gtk_client.c:1545
        #, c-format
        msgid "Status: Could not connect (%s)"
        msgstr ""
        
       -#: src/gtk_client.c:1532
       +#: src/gtk_client.c:1533
        #, c-format
        msgid "Status: Attempting to contact %s..."
        msgstr ""
        
       -#: src/gtk_client.c:1592
       +#: src/gtk_client.c:1593
        #, c-format
        msgid "%d of %d"
        msgstr ""
        
       -#: src/gtk_client.c:1656 src/gtk_client.c:1697 src/gtk_client.c:1738
       +#: src/gtk_client.c:1657 src/gtk_client.c:1698 src/gtk_client.c:1739
        msgid "Server"
        msgstr ""
        
       -#: src/gtk_client.c:1657 src/gtk_client.c:1712
       +#: src/gtk_client.c:1658 src/gtk_client.c:1713
        msgid "Port"
        msgstr ""
        
       -#: src/gtk_client.c:1658
       +#: src/gtk_client.c:1659
        msgid "Version"
        msgstr ""
        
       -#: src/gtk_client.c:1659
       +#: src/gtk_client.c:1660
        msgid "Players"
        msgstr ""
        
       -#: src/gtk_client.c:1660
       +#: src/gtk_client.c:1661
        msgid "Comment"
        msgstr ""
        
       -#: src/gtk_client.c:1673
       +#: src/gtk_client.c:1674
        msgid "New Game"
        msgstr ""
        
       -#: src/gtk_client.c:1682
       +#: src/gtk_client.c:1683
        msgid "Hey dude, what's your _name?"
        msgstr ""
        
       -#: src/gtk_client.c:1704
       +#: src/gtk_client.c:1705
        msgid "Host name"
        msgstr ""
        
       -#: src/gtk_client.c:1727 src/gtk_client.c:1790
       +#: src/gtk_client.c:1728 src/gtk_client.c:1791
        msgid "_Connect"
        msgstr ""
        
       -#: src/gtk_client.c:1740 src/gtk_client.c:1761
       +#: src/gtk_client.c:1741 src/gtk_client.c:1762
        msgid "Single player"
        msgstr ""
        
       -#: src/gtk_client.c:1746
       +#: src/gtk_client.c:1747
        msgid "_Antique mode"
        msgstr ""
        
       -#: src/gtk_client.c:1753
       +#: src/gtk_client.c:1754
        msgid "_Start single-player game"
        msgstr ""
        
       -#: src/gtk_client.c:1763 src/gtk_client.c:1801
       +#: src/gtk_client.c:1764 src/gtk_client.c:1802
        msgid "Metaserver"
        msgstr ""
        
       -#: src/gtk_client.c:1780
       +#: src/gtk_client.c:1781
        msgid "_Update"
        msgstr ""
        
       -#: src/gtk_client.c:1805
       +#: src/gtk_client.c:1806
        msgid "Status: Waiting for user input"
        msgstr ""
        
       -#: src/gtk_client.c:1958
       +#: src/gtk_client.c:1959
        #, c-format
        msgid "Cash: %s"
        msgstr ""
        
       -#: src/gtk_client.c:1965
       +#: src/gtk_client.c:1966
        #, c-format
        msgid "Debt: %s"
        msgstr ""
        
       -#: src/gtk_client.c:1968
       +#: src/gtk_client.c:1969
        #, c-format
        msgid "Bank: %s"
        msgstr ""
        
       -#: src/gtk_client.c:1976
       +#: src/gtk_client.c:1977
        msgid "Pay back:"
        msgstr ""
        
       -#: src/gtk_client.c:1979
       +#: src/gtk_client.c:1980
        msgid "Deposit"
        msgstr ""
        
       -#: src/gtk_client.c:1983
       +#: src/gtk_client.c:1984
        msgid "Withdraw"
        msgstr ""
        
       -#: src/gtk_client.c:2007
       +#: src/gtk_client.c:2008
        msgid "Pay all"
        msgstr ""
        
       -#: src/gtk_client.c:2029
       +#: src/gtk_client.c:2030
        msgid "Player List"
        msgstr ""
        
       -#: src/gtk_client.c:2118
       +#: src/gtk_client.c:2119
        msgid "Talk to player(s)"
        msgstr ""
        
       -#: src/gtk_client.c:2140
       +#: src/gtk_client.c:2141
        msgid "Talk to all players"
        msgstr ""
        
       -#: src/gtk_client.c:2144
       +#: src/gtk_client.c:2145
        msgid "Message:-"
        msgstr ""
        
       -#: src/gtk_client.c:2157
       +#: src/gtk_client.c:2158
        msgid "Send"
        msgstr ""
        
       -#: src/gtk_client.c:2250
       +#: src/gtk_client.c:2251
        msgid "Spy On Player"
        msgstr ""
        
       -#: src/gtk_client.c:2252
       +#: src/gtk_client.c:2253
        #, c-format
        msgid ""
        "Please choose the player to spy on. Your %s will\n"
       t@@ -1816,11 +1816,11 @@ msgid ""
        "you, so any %s or %s that he's carrying may be lost!"
        msgstr ""
        
       -#: src/gtk_client.c:2260
       +#: src/gtk_client.c:2261
        msgid "Tip Off The Cops"
        msgstr ""
        
       -#: src/gtk_client.c:2262
       +#: src/gtk_client.c:2263
        #, c-format
        msgid ""
        "Please choose the player to tip off the cops to. Your %s will\n"
       t@@ -1829,71 +1829,71 @@ msgid ""
        "so any %s or %s that he's carrying may be lost!"
        msgstr ""
        
       -#: src/gtk_client.c:2302
       +#: src/gtk_client.c:2303
        #, c-format
        msgid "Sack %s"
        msgstr ""
        
       -#: src/gtk_client.c:2303
       +#: src/gtk_client.c:2304
        #, c-format
        msgid ""
        "Are you sure? (Any %s or %s carried\n"
        "by this %s may be lost!)"
        msgstr ""
        
       -#: src/gtk_client.c:2324
       +#: src/gtk_client.c:2325
        msgid "Name"
        msgstr ""
        
       -#: src/gtk_client.c:2325
       +#: src/gtk_client.c:2326
        msgid "Price"
        msgstr ""
        
       -#: src/gtk_client.c:2326
       +#: src/gtk_client.c:2327
        msgid "Number"
        msgstr ""
        
       -#: src/gtk_client.c:2328
       +#: src/gtk_client.c:2329
        msgid "_Buy ->"
        msgstr ""
        
       -#: src/gtk_client.c:2329
       +#: src/gtk_client.c:2330
        msgid "<- _Sell"
        msgstr ""
        
       -#: src/gtk_client.c:2330
       +#: src/gtk_client.c:2331
        msgid "_Drop <-"
        msgstr ""
        
       -#: src/gtk_client.c:2335
       +#: src/gtk_client.c:2336
        #, c-format
        msgid "%s here"
        msgstr ""
        
       -#: src/gtk_client.c:2338
       +#: src/gtk_client.c:2339
        #, c-format
        msgid "%s carried"
        msgstr ""
        
       -#: src/gtk_client.c:2414
       +#: src/gtk_client.c:2415
        msgid "Change Name"
        msgstr ""
        
       -#: src/gtk_client.c:2424
       +#: src/gtk_client.c:2425
        msgid ""
        "Unfortunately, somebody else is already using \"your\" name. Please change "
        "it:-"
        msgstr ""
        
       -#: src/gtk_client.c:2483
       +#: src/gtk_client.c:2484
        msgid "Done"
        msgstr ""
        
       -#: src/gtk_client.c:2517
       +#: src/gtk_client.c:2518
        msgid "Spy reports"
        msgstr ""
        
       -#: src/gtk_client.c:2588
       +#: src/gtk_client.c:2589
        msgid ""
        "No GTK+ client available - rebuild the binary passing the\n"
        "--enable-gtk-client option to configure, or use the curses\n"
       t@@ -1956,79 +1956,79 @@ msgid ""
        "Should be from %s"
        msgstr ""
        
       -#: src/serverside.c:266
       +#: src/serverside.c:270
        #, c-format
        msgid "MaxClients (%d) exceeded - dropping connection"
        msgstr ""
        
       -#: src/serverside.c:268
       +#: src/serverside.c:272
        #, c-format
        msgid ""
        "Sorry, but this server has a limit of %d %s, which has been reached.^Please "
        "try connecting again later."
        msgstr ""
        
       -#: src/serverside.c:270
       +#: src/serverside.c:274
        msgid "player"
        msgstr ""
        
       -#: src/serverside.c:270
       +#: src/serverside.c:274
        msgid "players"
        msgstr ""
        
       -#: src/serverside.c:279
       +#: src/serverside.c:283
        #, c-format
        msgid "%s will now be known as %s"
        msgstr ""
        
       -#: src/serverside.c:294
       +#: src/serverside.c:298
        msgid "Your dealing time is up..."
        msgstr ""
        
       -#: src/serverside.c:305
       +#: src/serverside.c:309
        #, c-format
        msgid "%s: DENIED jet to %s"
        msgstr ""
        
       -#: src/serverside.c:362
       +#: src/serverside.c:366
        #, c-format
        msgid "%s now spying on %s"
        msgstr ""
        
       -#: src/serverside.c:370
       +#: src/serverside.c:374
        #, c-format
        msgid "%s spy on %s: DENIED"
        msgstr ""
        
       -#: src/serverside.c:376
       +#: src/serverside.c:380
        #, c-format
        msgid "%s tipped off the cops to %s"
        msgstr ""
        
       -#: src/serverside.c:384
       +#: src/serverside.c:388
        #, c-format
        msgid "%s tipoff about %s: DENIED"
        msgstr ""
        
       -#: src/serverside.c:492
       +#: src/serverside.c:496
        msgid "--More--"
        msgstr ""
        
       -#: src/serverside.c:503
       +#: src/serverside.c:507
        msgid "Pager exited abnormally - using stdout instead..."
        msgstr ""
        
       -#: src/serverside.c:518
       +#: src/serverside.c:522
        #, c-format
        msgid "Maintaining pid file %s"
        msgstr ""
        
       -#: src/serverside.c:522
       +#: src/serverside.c:526
        #, c-format
        msgid "Cannot create pid file %s"
        msgstr ""
        
       -#: src/serverside.c:571
       +#: src/serverside.c:575
        #, c-format
        msgid ""
        "Cannot open high score file %s.\n"
       t@@ -2036,144 +2036,144 @@ msgid ""
        "specify an alternate high score file with the -f command line option."
        msgstr ""
        
       -#: src/serverside.c:608
       +#: src/serverside.c:612
        #, c-format
        msgid ""
        "dopewars server version %s ready and waiting for connections\n"
        "on port %d. For assistance with server commands, enter the command \"help\"\n"
        msgstr ""
        
       -#: src/serverside.c:625
       +#: src/serverside.c:629
        msgid "Cannot install SIGUSR1 interrupt handler!"
        msgstr ""
        
       -#: src/serverside.c:631
       +#: src/serverside.c:635
        msgid "Cannot install SIGINT interrupt handler!"
        msgstr ""
        
       -#: src/serverside.c:634
       +#: src/serverside.c:638
        msgid "Cannot install SIGTERM interrupt handler!"
        msgstr ""
        
       -#: src/serverside.c:637
       +#: src/serverside.c:641
        msgid "Cannot install SIGHUP interrupt handler!"
        msgstr ""
        
       -#: src/serverside.c:642
       +#: src/serverside.c:646
        msgid "Cannot install pipe handler!"
        msgstr ""
        
       -#: src/serverside.c:665
       +#: src/serverside.c:669
        msgid "Users currently logged on:-\n"
        msgstr ""
        
       -#: src/serverside.c:670
       +#: src/serverside.c:674
        msgid "No users currently logged on!"
        msgstr ""
        
       -#: src/serverside.c:674
       +#: src/serverside.c:678
        #, c-format
        msgid "Pushing %s"
        msgstr ""
        
       -#: src/serverside.c:676 src/serverside.c:684
       +#: src/serverside.c:680 src/serverside.c:688
        msgid "No such user!"
        msgstr ""
        
       -#: src/serverside.c:680
       +#: src/serverside.c:684
        #, c-format
        msgid "%s killed"
        msgstr ""
        
       -#: src/serverside.c:686
       +#: src/serverside.c:690
        msgid "Unknown command - try \"help\" for help..."
        msgstr ""
        
       -#: src/serverside.c:703
       +#: src/serverside.c:707
        #, c-format
        msgid "got connection from %s"
        msgstr ""
        
       -#: src/serverside.c:719
       +#: src/serverside.c:723
        #, c-format
        msgid "%s leaves the server!"
        msgstr ""
        
       -#: src/serverside.c:787
       +#: src/serverside.c:791
        msgid "Standard input closed."
        msgstr ""
        
       -#: src/serverside.c:930
       +#: src/serverside.c:934
        #, c-format
        msgid "Unable to read high score file %s"
        msgstr ""
        
       -#: src/serverside.c:950
       +#: src/serverside.c:954
        msgid "Congratulations! You made the high scores!"
        msgstr ""
        
       -#: src/serverside.c:963
       +#: src/serverside.c:967
        msgid "You didn't even make the high score table..."
        msgstr ""
        
       -#: src/serverside.c:977
       +#: src/serverside.c:981
        #, c-format
        msgid "Unable to write high score file %s"
        msgstr ""
        
       -#: src/serverside.c:996
       +#: src/serverside.c:1000
        msgid "(R.I.P.)"
        msgstr ""
        
       -#: src/serverside.c:1031
       +#: src/serverside.c:1035
        #, c-format
        msgid "%s: Tipoff from %s"
        msgstr ""
        
       -#: src/serverside.c:1048
       +#: src/serverside.c:1052
        #, c-format
        msgid "One of your %s was spying for %s.^The spy %s!"
        msgstr ""
        
       -#: src/serverside.c:1056
       +#: src/serverside.c:1060
        #, c-format
        msgid "Your spy working with %s has been discovered!^The spy %s!"
        msgstr ""
        
       -#: src/serverside.c:1079
       +#: src/serverside.c:1083
        #, c-format
        msgid " The lady next to you on the subway said,^ \"%s\"%s"
        msgstr ""
        
       -#: src/serverside.c:1082
       +#: src/serverside.c:1086
        msgid "^    (at least, you -think- that's what she said)"
        msgstr ""
        
       -#: src/serverside.c:1084
       +#: src/serverside.c:1088
        #, c-format
        msgid " You hear someone playing %s"
        msgstr ""
        
       -#: src/serverside.c:1093 src/serverside.c:1102 src/serverside.c:1111
       -#: src/serverside.c:1120
       +#: src/serverside.c:1097 src/serverside.c:1106 src/serverside.c:1115
       +#: src/serverside.c:1124
        #, c-format
        msgid "YN^Would you like to visit %s?"
        msgstr ""
        
       -#: src/serverside.c:1131
       +#: src/serverside.c:1135
        #, c-format
        msgid "YN^^Would you like to hire %s %s for %s?"
        msgstr ""
        
       -#: src/serverside.c:1132
       +#: src/serverside.c:1136
        msgid "an"
        msgstr ""
        
       -#: src/serverside.c:1132
       +#: src/serverside.c:1136
        msgid "a"
        msgstr ""
        
       -#: src/serverside.c:1144
       +#: src/serverside.c:1148
        #, c-format
        msgid "AE^%s is already here!^Do you Attack, or Evade?"
        msgstr ""
       t@@ -2182,336 +2182,336 @@ msgstr ""
        #. The format string used for this purpose can be altered by
        #. passing non-NULL "LoneMessage" (for unaccompanied Officer
        #. Hardass) and/or "DeputyMessage" (for him with x deputies)
       -#: src/serverside.c:1213
       +#: src/serverside.c:1217
        #, c-format
        msgid "YN^Officer %s is chasing you!"
        msgstr ""
        
       -#: src/serverside.c:1215
       +#: src/serverside.c:1219
        #, c-format
        msgid "YN^Officer %s and %d of his deputies are chasing you!"
        msgstr ""
        
       -#: src/serverside.c:1236
       +#: src/serverside.c:1240
        msgid "^Do you run?"
        msgstr ""
        
       -#: src/serverside.c:1239
       +#: src/serverside.c:1243
        msgid "^Do you Run, or Fight?"
        msgstr ""
        
       -#: src/serverside.c:1254
       +#: src/serverside.c:1258
        #, c-format
        msgid "%s: tipoff by %s finished OK."
        msgstr ""
        
       -#: src/serverside.c:1260
       +#: src/serverside.c:1264
        #, c-format
        msgid "Following your tipoff, the cops ambushed %s, who was shot dead"
        msgstr ""
        
       -#: src/serverside.c:1264
       +#: src/serverside.c:1268
        #, c-format
        msgid "Following your tipoff, the cops ambushed %s, who escaped with %d %s. "
        msgstr ""
        
       -#: src/serverside.c:1301
       +#: src/serverside.c:1305
        msgid "^You stand there like an idiot."
        msgstr ""
        
       -#: src/serverside.c:1305
       +#: src/serverside.c:1309
        msgid "^You lose him in the alleys."
        msgstr ""
        
       -#: src/serverside.c:1307
       +#: src/serverside.c:1311
        msgid "^You lose them in the alleys."
        msgstr ""
        
       -#: src/serverside.c:1315
       +#: src/serverside.c:1319
        msgid "^You can't shake him, man!"
        msgstr ""
        
       -#: src/serverside.c:1317
       +#: src/serverside.c:1321
        msgid "^You can't shake them, man!"
        msgstr ""
        
       -#: src/serverside.c:1328
       +#: src/serverside.c:1332
        #, c-format
        msgid "^You killed Officer %s! You find %s on his corpse!"
        msgstr ""
        
       -#: src/serverside.c:1342
       +#: src/serverside.c:1346
        #, c-format
        msgid "YN^^^^Do you pay a doctor %s to sew your %s up?"
        msgstr ""
        
       -#: src/serverside.c:1346
       +#: src/serverside.c:1350
        #, c-format
        msgid "YN^^^^Do you pay a doctor %s to sew you up?"
        msgstr ""
        
       -#: src/serverside.c:1357
       +#: src/serverside.c:1361
        msgid "^You got one, man!"
        msgstr ""
        
       -#: src/serverside.c:1360
       +#: src/serverside.c:1364
        msgid "^You missed!"
        msgstr ""
        
       -#: src/serverside.c:1364
       +#: src/serverside.c:1368
        msgid "^He's firing on you, man! "
        msgstr ""
        
       -#: src/serverside.c:1366
       +#: src/serverside.c:1370
        msgid "^They're firing on you, man! "
        msgstr ""
        
       -#: src/serverside.c:1369
       +#: src/serverside.c:1373
        msgid "You've been hit! "
        msgstr ""
        
       -#: src/serverside.c:1376
       +#: src/serverside.c:1380
        msgid "He wasted you, man! What a drag!"
        msgstr ""
        
       -#: src/serverside.c:1378
       +#: src/serverside.c:1382
        msgid "They wasted you, man! What a drag!"
        msgstr ""
        
       -#: src/serverside.c:1386
       +#: src/serverside.c:1390
        #, c-format
        msgid "You lost one of your %s!"
        msgstr ""
        
       -#: src/serverside.c:1395
       +#: src/serverside.c:1399
        msgid "He missed!"
        msgstr ""
        
       -#: src/serverside.c:1397
       +#: src/serverside.c:1401
        msgid "They missed!"
        msgstr ""
        
       -#: src/serverside.c:1417
       +#: src/serverside.c:1421
        msgid "You were mugged in the subway!"
        msgstr ""
        
       -#: src/serverside.c:1428
       +#: src/serverside.c:1432
        #, c-format
        msgid "You meet a friend! He gives you %d %s."
        msgstr ""
        
       -#: src/serverside.c:1433
       +#: src/serverside.c:1437
        #, c-format
        msgid "You meet a friend! You give him %d %s."
        msgstr ""
        
       -#: src/serverside.c:1440
       +#: src/serverside.c:1444
        msgid "Sanitized away a RandomOffer"
        msgstr ""
        
       -#: src/serverside.c:1445
       +#: src/serverside.c:1449
        #, c-format
        msgid ""
        "Police dogs chase you for %d blocks! You dropped some %s! That's a drag, man!"
        msgstr ""
        
       -#: src/serverside.c:1459
       +#: src/serverside.c:1463
        #, c-format
        msgid "You find %d %s on a dead dude in the subway!"
        msgstr ""
        
       -#: src/serverside.c:1471
       +#: src/serverside.c:1475
        #, c-format
        msgid "Your mama made brownies with some of your %s! They were great!"
        msgstr ""
        
       -#: src/serverside.c:1479
       +#: src/serverside.c:1483
        msgid ""
        "YN^There is some weed that smells like paraquat here!^It looks good! Will "
        "you smoke it? "
        msgstr ""
        
       -#: src/serverside.c:1486
       +#: src/serverside.c:1490
        #, c-format
        msgid "You stopped to %s."
        msgstr ""
        
       -#: src/serverside.c:1507
       +#: src/serverside.c:1511
        #, c-format
        msgid "Would you like to buy a bigger trenchcoat for %s?"
        msgstr ""
        
       -#: src/serverside.c:1512
       +#: src/serverside.c:1516
        #, c-format
        msgid "YN^Hey dude! I'll help carry your %s for a mere %s. Yes or no?"
        msgstr ""
        
       -#: src/serverside.c:1524
       +#: src/serverside.c:1528
        #, c-format
        msgid "YN^Would you like to buy a %s for %s?"
        msgstr ""
        
       -#: src/serverside.c:1625 src/serverside.c:1736
       +#: src/serverside.c:1629 src/serverside.c:1740
        #, c-format
        msgid "%s: offer was on behalf of %s"
        msgstr ""
        
       -#: src/serverside.c:1628
       +#: src/serverside.c:1632
        #, c-format
        msgid "%s has accepted your %s!^Use the G key to contact your spy."
        msgstr ""
        
       -#: src/serverside.c:1674
       +#: src/serverside.c:1678
        msgid ""
        "You hallucinated for three days on the wildest trip you ever imagined!^Then "
        "you died because your brain disintegrated!"
        msgstr ""
        
       -#: src/serverside.c:1713
       +#: src/serverside.c:1717
        #, c-format
        msgid "Too late - %s has just left!"
        msgstr ""
        
       -#: src/serverside.c:1739
       +#: src/serverside.c:1743
        #, c-format
        msgid "%s has rejected your %s!"
        msgstr ""
        
       -#: src/serverside.c:1774
       +#: src/serverside.c:1778
        #, c-format
        msgid "%s has got away!"
        msgstr ""
        
       -#: src/serverside.c:1815
       +#: src/serverside.c:1819
        #, c-format
        msgid "%s has run off!"
        msgstr ""
        
       -#: src/serverside.c:1827
       +#: src/serverside.c:1831
        msgid "Coward! You successfully escaped from the fight."
        msgstr ""
        
       -#: src/serverside.c:1883
       +#: src/serverside.c:1887
        msgid "pitifully armed"
        msgstr ""
        
       -#: src/serverside.c:1884
       +#: src/serverside.c:1888
        msgid "lightly armed"
        msgstr ""
        
       -#: src/serverside.c:1885
       +#: src/serverside.c:1889
        msgid "moderately well armed"
        msgstr ""
        
       -#: src/serverside.c:1886
       +#: src/serverside.c:1890
        msgid "heavily armed"
        msgstr ""
        
       -#: src/serverside.c:1887
       +#: src/serverside.c:1891
        msgid "armed to the teeth"
        msgstr ""
        
       -#: src/serverside.c:1888
       +#: src/serverside.c:1892
        msgid " fires and "
        msgstr ""
        
       -#: src/serverside.c:1889
       +#: src/serverside.c:1893
        msgid " stands and takes it."
        msgstr ""
        
       -#: src/serverside.c:1892
       +#: src/serverside.c:1896
        #, c-format
        msgid "%s arrives, with %d %s, %s,^%s"
        msgstr ""
        
       -#: src/serverside.c:1896
       +#: src/serverside.c:1900
        #, c-format
        msgid "%s arrives, %s,^%s"
        msgstr ""
        
       -#: src/serverside.c:1901
       +#: src/serverside.c:1905
        #, c-format
        msgid "%s fires and "
        msgstr ""
        
       -#: src/serverside.c:1903
       +#: src/serverside.c:1907
        #, c-format
        msgid "%s stands and takes it."
        msgstr ""
        
       -#: src/serverside.c:1915
       +#: src/serverside.c:1919
        msgid "misses you!"
        msgstr ""
        
       -#: src/serverside.c:1916
       +#: src/serverside.c:1920
        #, c-format
        msgid "You failed to hit %s."
        msgstr ""
        
       -#: src/serverside.c:1919
       +#: src/serverside.c:1923
        msgid "You stand and take it."
        msgstr ""
        
       -#: src/serverside.c:1923
       +#: src/serverside.c:1927
        msgid "hits you, man!"
        msgstr ""
        
       -#: src/serverside.c:1926
       +#: src/serverside.c:1930
        msgid " You've been wasted! What a drag!"
        msgstr ""
        
       -#: src/serverside.c:1927
       +#: src/serverside.c:1931
        #, c-format
        msgid "You hit and killed %s"
        msgstr ""
        
       -#: src/serverside.c:1942 src/serverside.c:1975
       +#: src/serverside.c:1946 src/serverside.c:1979
        msgid ", and loot the body!"
        msgstr ""
        
       -#: src/serverside.c:1951
       +#: src/serverside.c:1955
        #, c-format
        msgid "^You lost a %s, man!"
        msgstr ""
        
       -#: src/serverside.c:1956
       +#: src/serverside.c:1960
        #, c-format
        msgid "You are paid a bounty of %s in reward for killing^one of %s's %s"
        msgstr ""
        
       -#: src/serverside.c:1964
       +#: src/serverside.c:1968
        #, c-format
        msgid "You killed one of %s's %s (%d left)"
        msgstr ""
        
       -#: src/serverside.c:1982
       +#: src/serverside.c:1986
        #, c-format
        msgid "You fire, and hit %s!"
        msgstr ""
        
       -#: src/serverside.c:2021
       +#: src/serverside.c:2025
        msgid "YN^Officer %%s spots you dropping %s, and chases you!"
        msgstr ""
        
       -#: src/serverside.c:2023
       +#: src/serverside.c:2027
        msgid ""
        "YN^Officer %%s and %%d of his deputies spot you dropping %s, and chase you!"
        msgstr ""
        
       -#: src/serverside.c:2178
       +#: src/serverside.c:2182
        msgid "Player removed due to idle timeout"
        msgstr ""
        
       -#: src/serverside.c:2188
       +#: src/serverside.c:2192
        msgid "Player removed due to connect timeout"
        msgstr ""
        
       -#: src/serverside.c:2194 src/serverside.c:2200
       +#: src/serverside.c:2198 src/serverside.c:2204
        #, c-format
        msgid "%s fails to return fire..."
        msgstr ""
        
       -#: src/message.c:386
       +#: src/message.c:427
        #, c-format
        msgid ""
        "This server is version %s, while your client is version %s.\n"
       t@@ -2520,27 +2520,27 @@ msgid ""
        "for the latest version."
        msgstr ""
        
       -#: src/message.c:525
       +#: src/message.c:566
        msgid "Could not find host"
        msgstr ""
        
       -#: src/message.c:526
       +#: src/message.c:567
        msgid "Could not create network socket"
        msgstr ""
        
       -#: src/message.c:527 src/message.c:560
       +#: src/message.c:568 src/message.c:601
        msgid "Connection refused or no server present"
        msgstr ""
        
       -#: src/message.c:703
       +#: src/message.c:746
        msgid "Cannot locate metaserver"
        msgstr ""
        
       -#: src/message.c:704
       +#: src/message.c:747
        msgid "Cannot create socket"
        msgstr ""
        
       -#: src/message.c:706
       +#: src/message.c:749
        msgid "Metaserver not running HTTP or connection denied"
        msgstr ""
        
 (DIR) diff --git a/src/curses_client.c b/src/curses_client.c
       t@@ -1394,6 +1394,7 @@ static void Curses_DoGame(Player *Play) {
           print_status(Play,TRUE);
           display_message("");
        
       +   SendAbilities(Play);
           SetPlayerName(Play,buf);
           SendClientMessage(NULL,C_NONE,C_NAME,NULL,buf,Play);
           g_free(buf); g_free(OldName);
 (DIR) diff --git a/src/dopewars.c b/src/dopewars.c
       t@@ -512,6 +512,7 @@ GSList *AddPlayer(int fd,Player *NewPlayer,GSList *First) {
           NewPlayer->ReadBuf.Data=NewPlayer->WriteBuf.Data=NULL;
           NewPlayer->ReadBuf.Length=NewPlayer->WriteBuf.Length=0;
           NewPlayer->ReadBuf.DataPresent=NewPlayer->WriteBuf.DataPresent=0;
       +   InitAbilities(NewPlayer);
           if (Server) NewPlayer->fd=fd;
           return g_slist_append(First,(gpointer)NewPlayer);
        }
 (DIR) diff --git a/src/dopewars.h b/src/dopewars.h
       t@@ -72,6 +72,14 @@ typedef long long price_t;
        
        #define NMLEN 20
        
       +#define A_PLAYERID      0
       +#define A_NUM           1
       +typedef struct ABILITIES {
       +   gboolean Local[A_NUM];
       +   gboolean Remote[A_NUM];
       +   gboolean Shared[A_NUM];
       +} Abilities;
       +
        struct COPS {
           int EscapeProb,DeputyEscape,HitProb,DeputyHit,Damage,
               Toughness,DropProb;
       t@@ -291,6 +299,7 @@ struct PLAYER_T {
           DopeList SpyList,TipList;
           Player *OnBehalfOf,*Attacked;
           ConnBuf ReadBuf,WriteBuf;
       +   Abilities Abil;
        };
        
        #define CM_SERVER 0
 (DIR) diff --git a/src/gtk_client.c b/src/gtk_client.c
       t@@ -1185,6 +1185,7 @@ void StartGame() {
           Play=ClientData.Play=g_new(Player,1);
           FirstClient=AddPlayer(0,Play,FirstClient);
           Play->fd=ClientSock;
       +   SendAbilities(Play);
           SetPlayerName(Play,ClientData.PlayerName);
           SendClientMessage(NULL,C_NONE,C_NAME,NULL,ClientData.PlayerName,Play);
           InGame=TRUE;
       t@@ -1971,7 +1972,7 @@ void TransferDialog(gboolean Debt) {
           g_free(text); g_free(prstr);
           gtk_table_attach_defaults(GTK_TABLE(table),label,0,3,1,2);
        
       -   gtk_object_set_data(GTK_OBJECT(dialog),"debt",(gpointer)Debt);
       +   gtk_object_set_data(GTK_OBJECT(dialog),"debt",GINT_TO_POINTER(Debt));
           if (Debt) {
              label=gtk_label_new(_("Pay back:"));
              gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,2,4);
 (DIR) diff --git a/src/message.c b/src/message.c
       t@@ -143,6 +143,47 @@ void SendServerMessage(Player *From,char AICode,char Code,
           } else SendClientMessage(From,AICode,Code,To,Data,To);
        }
        
       +void InitAbilities(Player *Play) {
       +   int i;
       +/* Clear all abilities */
       +   for (i=0;i<A_NUM;i++) {
       +      Play->Abil.Local[i]= FALSE;
       +      Play->Abil.Remote[i]=FALSE;
       +      Play->Abil.Shared[i]=FALSE;
       +   }
       +/* Set local abilities */
       +   Play->Abil.Local[A_PLAYERID]=TRUE;
       +   if (!Network) for (i=0;i<A_NUM;i++) {
       +      Play->Abil.Remote[i]=Play->Abil.Shared[i]=Play->Abil.Local[i];
       +   }
       +}
       +
       +void SendAbilities(Player *Play) {
       +   int i;
       +   gchar Data[A_NUM+1];
       +   if (!Network) return;
       +   for (i=0;i<A_NUM;i++) Data[i]= (Play->Abil.Local[i] ? '1' : '0');
       +   Data[A_NUM]='\0';
       +   if (Server) SendServerMessage(NULL,C_NONE,C_ABILITIES,Play,Data);
       +   else SendClientMessage(Play,C_NONE,C_ABILITIES,NULL,Data,Play);
       +}
       +
       +void ReceiveAbilities(Player *Play,gchar *Data) {
       +   int i,Length;
       +   InitAbilities(Play);
       +   if (!Network) return;
       +   Length=MIN(strlen(Data),A_NUM);
       +   for (i=0;i<Length;i++) {
       +      Play->Abil.Remote[i]= (Data[i]=='1' ? TRUE : FALSE);
       +      Play->Abil.Shared[i]= (Play->Abil.Remote[i] && Play->Abil.Local[i]);
       +   }
       +}
       +
       +gboolean HaveAbility(Player *Play,gint Type) {
       +   if (Type<0 || Type>=A_NUM) return FALSE;
       +   else return (Play->Abil.Shared[Type]=='1');
       +}
       +
        #if NETWORKING
        gchar *ReadFromConnectionBuffer(Player *Play) {
           ConnBuf *conn;
       t@@ -670,6 +711,8 @@ gboolean HandleGenericClientMessage(Player *From,char AICode,char Code,
                 ReceiveMiscData(Data); break;
              case C_INIT:
                 ReceiveInitialData(Data); break;
       +      case C_ABILITIES:
       +         ReceiveAbilities(To,Data); break;
              case C_LEAVE:
                 if (From!=&Noone) FirstClient=RemovePlayer(From,FirstClient);
                 break;
 (DIR) diff --git a/src/message.h b/src/message.h
       t@@ -71,6 +71,7 @@
        #define C_TRADE        'o'
        #define C_CHANGEDISP   'p'
        #define C_NETMESSAGE   'q'
       +#define C_ABILITIES    'r'
        
        #define C_NONE        'A'
        #define C_ASKLOAN     'B'
       t@@ -140,5 +141,9 @@ char *OpenMetaServerConnection(int *HttpSock);
        void CloseMetaServerConnection(int HttpSock);
        void ClearServerList();
        void ReadMetaServerData(int HttpSock);
       +void InitAbilities(Player *Play);
       +void SendAbilities(Player *Play);
       +void ReceiveAbilities(Player *Play,gchar *Data);
       +gboolean HaveAbility(Player *Play,gint Type);
        
        #endif
 (DIR) diff --git a/src/serverside.c b/src/serverside.c
       t@@ -203,7 +203,7 @@ void HandleServerMessage(gchar *buf,Player *ReallyFrom) {
              return;
           }
           if (From!=ReallyFrom && (From!=&Noone ||
       -       (Code!=C_NAME && Code!=C_NETMESSAGE))) {
       +       (Code!=C_NAME && Code!=C_ABILITIES && Code!=C_NETMESSAGE))) {
               g_warning(_("Message is lying about its origin\n%s: %c: %s: %s\n"
                         "Should be from %s"),From ? GetPlayerName(From) : "",Code,
                         To ? GetPlayerName(To) : "",Data,
       t@@ -226,6 +226,9 @@ void HandleServerMessage(gchar *buf,Player *ReallyFrom) {
                    ReallyFrom->ConnectTimeout=time(NULL)+(time_t)ConnectTimeout;
                 }
                 break;
       +      case C_ABILITIES:
       +         ReceiveAbilities(ReallyFrom,Data);
       +         break;
              case C_NAME:
                 pt=GetPlayerByName(Data,FirstServer);
                 if (pt && pt!=From) {
       t@@ -236,6 +239,7 @@ void HandleServerMessage(gchar *buf,Player *ReallyFrom) {
                 } else if (((ReallyFrom && strlen(GetPlayerName(ReallyFrom))==0 &&
                             Network) || (!Network && From==&Noone)) && Data[0]) {
                    if (CountPlayers(FirstServer)<MaxClients || !Network) { 
       +               SendAbilities(ReallyFrom);
                       SendInitialData(ReallyFrom);
                       SendMiscData(ReallyFrom);
                       if (!Network) {
 (DIR) diff --git a/src/win32_client.c b/src/win32_client.c
       t@@ -362,6 +362,7 @@ static void StartGame() {
           Play=ClientData.Play=g_new(Player,1);
           FirstClient=AddPlayer(0,Play,FirstClient);
           Play->fd=ClientSock;
       +   SendAbilities(Play);
           SetPlayerName(Play,ClientData.PlayerName);
           SendClientMessage(NULL,C_NONE,C_NAME,NULL,ClientData.PlayerName,Play);
           InGame=TRUE;