t"Abilities" are exchanged between client and server to allow protocol extensio… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit df873c76ff76b9249578fcbf17703924b54797ff | |
parent 77e40eafd4a8a40611daa344fef372430a27ac65 | |
Author: Ben Webb <[email protected]> | |
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(-) | |
--- | |
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 | |
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 <[email protected]>\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 [email protected]\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 "" | |
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); | |
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); | |
} | |
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 | |
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); | |
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 AICo… | |
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; | |
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 | |
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) { | |
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; |