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;