tFully completed "translated-string" support; %P now supported for prices, too.… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 4e3602017eea8f0f61368aa22b54d767b22a3f35 | |
parent 1cf917eb25286179db182405ef1ce84a53486e28 | |
Author: Ben Webb <[email protected]> | |
Date: Sun, 8 Oct 2000 15:57:50 +0000 | |
Fully completed "translated-string" support; %P now supported for prices, too. | |
Diffstat: | |
M ChangeLog | 4 +++- | |
M po/dopewars.pot | 964 +++++++++++++++--------------… | |
M src/AIPlayer.c | 32 ++++++++++++-----------------… | |
M src/curses_client.c | 47 +++++++++++++----------------… | |
M src/dopewars.c | 9 ++++----- | |
M src/gtk_client.c | 53 +++++++++++++++--------------… | |
M src/message.c | 12 ++++-------- | |
M src/serverside.c | 34 +++++++++++++----------------… | |
M src/tstring.c | 227 ++++++++++++++++++-----------… | |
M src/tstring.h | 1 + | |
M src/win32_client.c | 50 ++++++++++-------------------… | |
11 files changed, 706 insertions(+), 727 deletions(-) | |
--- | |
diff --git a/ChangeLog b/ChangeLog | |
t@@ -1,7 +1,9 @@ | |
1.4.9 | |
- Completely rewritten fighting code | |
- - Tense and case-sensitive translated strings | |
- Internationalization (i18n) support | |
+ - Tense and case-sensitive translated strings handled via. dpg_ analogues | |
+ to glib's g_ string handling functions %P = price, | |
+ %Txx or %txx = tense-sensitive string | |
- Networking revamped - now uses nonblocking sockets to improve server | |
responsiveness and to remove deadlocks (previously, any client could | |
halt server by sending an unterminated message); "abilities" added to | |
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-10-02 22:34+0100\n" | |
+"POT-Creation-Date: 2000-10-08 16:52+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@@ -14,781 +14,780 @@ msgstr "" | |
"Content-Type: text/plain; charset=CHARSET\n" | |
"Content-Transfer-Encoding: ENCODING\n" | |
-#: src/dopewars.c:108 | |
+#: src/dopewars.c:109 | |
msgid "bitch" | |
msgstr "" | |
-#: src/dopewars.c:108 | |
+#: src/dopewars.c:109 | |
msgid "bitches" | |
msgstr "" | |
-#: src/dopewars.c:108 | |
+#: src/dopewars.c:109 | |
msgid "gun" | |
msgstr "" | |
-#: src/dopewars.c:108 | |
+#: src/dopewars.c:109 | |
msgid "guns" | |
msgstr "" | |
-#: src/dopewars.c:108 | |
+#: src/dopewars.c:109 | |
msgid "drug" | |
msgstr "" | |
-#: src/dopewars.c:108 | |
+#: src/dopewars.c:109 | |
msgid "drugs" | |
msgstr "" | |
-#: src/dopewars.c:109 | |
+#: src/dopewars.c:110 | |
msgid "12-" | |
msgstr "" | |
-#: src/dopewars.c:109 | |
+#: src/dopewars.c:110 | |
msgid "-1984" | |
msgstr "" | |
-#: src/dopewars.c:110 | |
+#: src/dopewars.c:111 | |
msgid "Hardass" | |
msgstr "" | |
-#: src/dopewars.c:110 | |
+#: src/dopewars.c:111 | |
msgid "Bob" | |
msgstr "" | |
-#: src/dopewars.c:110 | |
+#: src/dopewars.c:111 | |
msgid "the Loan Shark" | |
msgstr "" | |
-#: src/dopewars.c:110 | |
+#: src/dopewars.c:111 | |
msgid "the Bank" | |
msgstr "" | |
-#: src/dopewars.c:111 | |
+#: src/dopewars.c:112 | |
msgid "Dan's House of Guns" | |
msgstr "" | |
-#: src/dopewars.c:111 | |
+#: src/dopewars.c:112 | |
msgid "the pub" | |
msgstr "" | |
-#: src/dopewars.c:127 | |
+#: src/dopewars.c:128 | |
msgid "Network port to connect to" | |
msgstr "" | |
-#: src/dopewars.c:130 | |
+#: src/dopewars.c:131 | |
msgid "Name of the high score file" | |
msgstr "" | |
-#: src/dopewars.c:131 | |
+#: src/dopewars.c:132 | |
msgid "Name of the server to connect to" | |
msgstr "" | |
-#: src/dopewars.c:134 | |
+#: src/dopewars.c:135 | |
msgid "Non-zero if server should report to a metaserver" | |
msgstr "" | |
-#: src/dopewars.c:137 | |
+#: src/dopewars.c:138 | |
msgid "Port for metaserver communication (client)" | |
msgstr "" | |
-#: src/dopewars.c:140 | |
+#: src/dopewars.c:141 | |
msgid "Port for metaserver communication (server)" | |
msgstr "" | |
-#: src/dopewars.c:143 | |
+#: src/dopewars.c:144 | |
msgid "Metaserver name to report server details to" | |
msgstr "" | |
-#: src/dopewars.c:146 | |
+#: src/dopewars.c:147 | |
msgid "Path of the CGI script on the metaserver (client)" | |
msgstr "" | |
-#: src/dopewars.c:149 | |
+#: src/dopewars.c:150 | |
msgid "Preferred hostname of your server machine" | |
msgstr "" | |
-#: src/dopewars.c:151 | |
+#: src/dopewars.c:152 | |
msgid "Authentication for LocalName with the metaserver" | |
msgstr "" | |
-#: src/dopewars.c:154 | |
+#: src/dopewars.c:155 | |
msgid "Server description, reported to the metaserver" | |
msgstr "" | |
-#: src/dopewars.c:157 | |
+#: src/dopewars.c:158 | |
msgid "Program used to display multi-page output" | |
msgstr "" | |
-#: src/dopewars.c:159 | |
+#: src/dopewars.c:160 | |
msgid "No. of game turns (if 0, game never ends)" | |
msgstr "" | |
-#: src/dopewars.c:161 | |
+#: src/dopewars.c:162 | |
msgid "Random events are sanitized" | |
msgstr "" | |
-#: src/dopewars.c:164 | |
+#: src/dopewars.c:165 | |
msgid "Non-zero if the total value of bought drugs should be stored" | |
msgstr "" | |
-#: src/dopewars.c:167 | |
+#: src/dopewars.c:168 | |
msgid "Be verbose in processing config file" | |
msgstr "" | |
-#: src/dopewars.c:169 | |
+#: src/dopewars.c:170 | |
msgid "Number of locations in the game" | |
msgstr "" | |
-#: src/dopewars.c:172 | |
+#: src/dopewars.c:173 | |
msgid "Number of guns in the game" | |
msgstr "" | |
-#: src/dopewars.c:174 | |
+#: src/dopewars.c:175 | |
msgid "Number of drugs in the game" | |
msgstr "" | |
-#: src/dopewars.c:176 | |
+#: src/dopewars.c:177 | |
msgid "Location of the Loan Shark" | |
msgstr "" | |
-#: src/dopewars.c:178 | |
+#: src/dopewars.c:179 | |
msgid "Location of the bank" | |
msgstr "" | |
-#: src/dopewars.c:180 | |
+#: src/dopewars.c:181 | |
msgid "Location of the gun shop" | |
msgstr "" | |
-#: src/dopewars.c:182 | |
+#: src/dopewars.c:183 | |
msgid "Location of the pub" | |
msgstr "" | |
-#: src/dopewars.c:185 | |
+#: src/dopewars.c:186 | |
msgid "Name of the loan shark" | |
msgstr "" | |
-#: src/dopewars.c:187 | |
+#: src/dopewars.c:188 | |
msgid "Name of the bank" | |
msgstr "" | |
-#: src/dopewars.c:189 | |
+#: src/dopewars.c:190 | |
msgid "Name of the gun shop" | |
msgstr "" | |
-#: src/dopewars.c:191 | |
+#: src/dopewars.c:192 | |
msgid "Name of the pub" | |
msgstr "" | |
-#: src/dopewars.c:193 | |
+#: src/dopewars.c:194 | |
msgid "Sort key for listing available drugs" | |
msgstr "" | |
-#: src/dopewars.c:196 | |
+#: src/dopewars.c:197 | |
msgid "No. of seconds in which to return fire" | |
msgstr "" | |
-#: src/dopewars.c:199 | |
+#: src/dopewars.c:200 | |
msgid "Players are disconnected after this many seconds" | |
msgstr "" | |
-#: src/dopewars.c:202 | |
+#: src/dopewars.c:203 | |
msgid "Time in seconds for connections to be made or broken" | |
msgstr "" | |
-#: src/dopewars.c:205 | |
+#: src/dopewars.c:206 | |
msgid "Maximum number of TCP/IP connections" | |
msgstr "" | |
-#: src/dopewars.c:208 | |
+#: src/dopewars.c:209 | |
msgid "Seconds between turns of AI players" | |
msgstr "" | |
-#: src/dopewars.c:211 | |
+#: src/dopewars.c:212 | |
msgid "Amount of cash that each player starts with" | |
msgstr "" | |
-#: src/dopewars.c:214 | |
+#: src/dopewars.c:215 | |
msgid "Amount of debt that each player starts with" | |
msgstr "" | |
-#: src/dopewars.c:216 | |
+#: src/dopewars.c:217 | |
msgid "Name of each location" | |
msgstr "" | |
-#: src/dopewars.c:220 | |
+#: src/dopewars.c:221 | |
msgid "Police presence at each location (%)" | |
msgstr "" | |
-#: src/dopewars.c:224 | |
+#: src/dopewars.c:225 | |
msgid "Minimum number of drugs at each location" | |
msgstr "" | |
-#: src/dopewars.c:228 | |
+#: src/dopewars.c:229 | |
msgid "Maximum number of drugs at each location" | |
msgstr "" | |
-#: src/dopewars.c:232 | |
+#: src/dopewars.c:233 | |
msgid "Name of each drug" | |
msgstr "" | |
-#: src/dopewars.c:236 | |
+#: src/dopewars.c:237 | |
msgid "Minimum normal price of each drug" | |
msgstr "" | |
-#: src/dopewars.c:240 | |
+#: src/dopewars.c:241 | |
msgid "Maximum normal price of each drug" | |
msgstr "" | |
-#: src/dopewars.c:244 | |
+#: src/dopewars.c:245 | |
msgid "Non-zero if this drug can be specially cheap" | |
msgstr "" | |
-#: src/dopewars.c:248 | |
+#: src/dopewars.c:249 | |
msgid "Non-zero if this drug can be specially expensive" | |
msgstr "" | |
-#: src/dopewars.c:252 | |
+#: src/dopewars.c:253 | |
msgid "Message displayed when this drug is specially cheap" | |
msgstr "" | |
-#: src/dopewars.c:256 src/dopewars.c:259 | |
+#: src/dopewars.c:257 src/dopewars.c:260 | |
#, c-format | |
msgid "Format string used for expensive drugs 50% of time" | |
msgstr "" | |
-#: src/dopewars.c:262 | |
+#: src/dopewars.c:263 | |
msgid "Divider for drug price when it's specially cheap" | |
msgstr "" | |
-#: src/dopewars.c:265 | |
+#: src/dopewars.c:266 | |
msgid "Multiplier for specially expensive drug prices" | |
msgstr "" | |
-#: src/dopewars.c:268 | |
+#: src/dopewars.c:269 | |
msgid "Name of each gun" | |
msgstr "" | |
-#: src/dopewars.c:272 | |
+#: src/dopewars.c:273 | |
msgid "Price of each gun" | |
msgstr "" | |
-#: src/dopewars.c:276 | |
+#: src/dopewars.c:277 | |
msgid "Space taken by each gun" | |
msgstr "" | |
-#: src/dopewars.c:280 | |
+#: src/dopewars.c:281 | |
msgid "Damage done by each gun" | |
msgstr "" | |
-#: src/dopewars.c:284 | |
+#: src/dopewars.c:285 | |
#, c-format | |
msgid "% probability of escaping from Officer Hardass" | |
msgstr "" | |
-#: src/dopewars.c:287 | |
+#: src/dopewars.c:288 | |
msgid "Modifier to EscapeProb for each extra deputy" | |
msgstr "" | |
-#: src/dopewars.c:290 | |
+#: src/dopewars.c:291 | |
#, c-format | |
msgid "% probability that Officer Hardass hits you" | |
msgstr "" | |
-#: src/dopewars.c:293 | |
+#: src/dopewars.c:294 | |
msgid "Modifier to HitProb for each extra deputy" | |
msgstr "" | |
-#: src/dopewars.c:296 | |
+#: src/dopewars.c:297 | |
msgid "Maximum damage done to you by each cop" | |
msgstr "" | |
-#: src/dopewars.c:299 | |
+#: src/dopewars.c:300 | |
msgid "Toughness of (difficulty of hitting) each cop" | |
msgstr "" | |
-#: src/dopewars.c:302 | |
+#: src/dopewars.c:303 | |
#, c-format | |
msgid "% probability that the cops catch you dropping drugs" | |
msgstr "" | |
-#: src/dopewars.c:305 | |
+#: src/dopewars.c:306 | |
msgid "Word used to denote a single \"bitch\"" | |
msgstr "" | |
-#: src/dopewars.c:307 | |
+#: src/dopewars.c:308 | |
msgid "Word used to denote two or more \"bitches\"" | |
msgstr "" | |
-#: src/dopewars.c:310 | |
+#: src/dopewars.c:311 | |
msgid "Word used to denote a single gun or equivalent" | |
msgstr "" | |
-#: src/dopewars.c:313 | |
+#: src/dopewars.c:314 | |
msgid "Word used to denote two or more guns" | |
msgstr "" | |
-#: src/dopewars.c:315 | |
+#: src/dopewars.c:316 | |
msgid "Word used to denote a single drug or equivalent" | |
msgstr "" | |
-#: src/dopewars.c:318 | |
+#: src/dopewars.c:319 | |
msgid "Word used to denote two or more drugs" | |
msgstr "" | |
-#: src/dopewars.c:320 | |
+#: src/dopewars.c:321 | |
msgid "Text prefixed to the turn number (i.e. the month)" | |
msgstr "" | |
-#: src/dopewars.c:323 | |
+#: src/dopewars.c:324 | |
msgid "Text appended to the turn number (i.e. the year)" | |
msgstr "" | |
-#: src/dopewars.c:326 | |
+#: src/dopewars.c:327 | |
msgid "Name of the police officer" | |
msgstr "" | |
-#: src/dopewars.c:328 | |
+#: src/dopewars.c:329 | |
msgid "Name of the reserve police officer" | |
msgstr "" | |
-#: src/dopewars.c:330 | |
+#: src/dopewars.c:331 | |
msgid "Cost for a bitch to spy on the enemy" | |
msgstr "" | |
-#: src/dopewars.c:333 | |
+#: src/dopewars.c:334 | |
msgid "Cost for a bitch to tipoff the cops to an enemy" | |
msgstr "" | |
-#: src/dopewars.c:336 | |
+#: src/dopewars.c:337 | |
msgid "Minimum price to hire a bitch" | |
msgstr "" | |
-#: src/dopewars.c:339 | |
+#: src/dopewars.c:340 | |
msgid "Maximum price to hire a bitch" | |
msgstr "" | |
-#: src/dopewars.c:342 | |
+#: src/dopewars.c:343 | |
msgid "List of things which you overhear on the subway" | |
msgstr "" | |
-#: src/dopewars.c:345 | |
+#: src/dopewars.c:346 | |
msgid "Number of subway sayings" | |
msgstr "" | |
-#: src/dopewars.c:348 | |
+#: src/dopewars.c:349 | |
msgid "List of songs which you can hear playing" | |
msgstr "" | |
-#: src/dopewars.c:351 | |
+#: src/dopewars.c:352 | |
msgid "Number of playing songs" | |
msgstr "" | |
-#: src/dopewars.c:354 | |
+#: src/dopewars.c:355 | |
msgid "List of things which you can stop to do" | |
msgstr "" | |
-#: src/dopewars.c:357 | |
+#: src/dopewars.c:358 | |
msgid "Number of things which you can stop to do" | |
msgstr "" | |
-#: src/dopewars.c:362 | |
+#: src/dopewars.c:363 | |
msgid "escaped" | |
msgstr "" | |
-#: src/dopewars.c:362 | |
+#: src/dopewars.c:363 | |
msgid "defected" | |
msgstr "" | |
-#: src/dopewars.c:362 | |
+#: src/dopewars.c:363 | |
msgid "was shot" | |
msgstr "" | |
-#: src/dopewars.c:366 | |
+#: src/dopewars.c:367 | |
msgid "`Are you Experienced` by Jimi Hendrix" | |
msgstr "" | |
-#: src/dopewars.c:367 | |
+#: src/dopewars.c:368 | |
msgid "`Cheeba Cheeba` by Tone Loc" | |
msgstr "" | |
-#: src/dopewars.c:368 | |
+#: src/dopewars.c:369 | |
msgid "`Comin` in to Los Angeles` by Arlo Guthrie" | |
msgstr "" | |
-#: src/dopewars.c:369 | |
+#: src/dopewars.c:370 | |
msgid "`Commercial` by Spanky and Our Gang" | |
msgstr "" | |
-#: src/dopewars.c:370 | |
+#: src/dopewars.c:371 | |
msgid "`Late in the Evening` by Paul Simon" | |
msgstr "" | |
-#: src/dopewars.c:371 | |
+#: src/dopewars.c:372 | |
msgid "`Light Up` by Styx" | |
msgstr "" | |
-#: src/dopewars.c:372 | |
+#: src/dopewars.c:373 | |
msgid "`Mexico` by Jefferson Airplane" | |
msgstr "" | |
-#: src/dopewars.c:373 | |
+#: src/dopewars.c:374 | |
msgid "`One toke over the line` by Brewer & Shipley" | |
msgstr "" | |
-#: src/dopewars.c:374 | |
+#: src/dopewars.c:375 | |
msgid "`The Smokeout` by Shel Silverstein" | |
msgstr "" | |
-#: src/dopewars.c:375 | |
+#: src/dopewars.c:376 | |
msgid "`White Rabbit` by Jefferson Airplane" | |
msgstr "" | |
-#: src/dopewars.c:376 | |
+#: src/dopewars.c:377 | |
msgid "`Itchycoo Park` by Small Faces" | |
msgstr "" | |
-#: src/dopewars.c:377 | |
+#: src/dopewars.c:378 | |
msgid "`White Punks on Dope` by the Tubes" | |
msgstr "" | |
-#: src/dopewars.c:378 | |
+#: src/dopewars.c:379 | |
msgid "`Legend of a Mind` by the Moody Blues" | |
msgstr "" | |
-#: src/dopewars.c:379 | |
+#: src/dopewars.c:380 | |
msgid "`Eight Miles High` by the Byrds" | |
msgstr "" | |
-#: src/dopewars.c:380 | |
+#: src/dopewars.c:381 | |
msgid "`Acapulco Gold` by Riders of the Purple Sage" | |
msgstr "" | |
-#: src/dopewars.c:381 | |
+#: src/dopewars.c:382 | |
msgid "`Kicks` by Paul Revere & the Raiders" | |
msgstr "" | |
-#: src/dopewars.c:382 | |
+#: src/dopewars.c:383 | |
msgid "the Nixon tapes" | |
msgstr "" | |
-#: src/dopewars.c:383 | |
+#: src/dopewars.c:384 | |
msgid "`Legalize It` by Mojo Nixon & Skid Roper" | |
msgstr "" | |
-#: src/dopewars.c:388 | |
+#: src/dopewars.c:389 | |
msgid "have a beer" | |
msgstr "" | |
-#: src/dopewars.c:389 | |
+#: src/dopewars.c:390 | |
msgid "smoke a joint" | |
msgstr "" | |
-#: src/dopewars.c:390 | |
+#: src/dopewars.c:391 | |
msgid "smoke a cigar" | |
msgstr "" | |
-#: src/dopewars.c:391 | |
+#: src/dopewars.c:392 | |
msgid "smoke a Djarum" | |
msgstr "" | |
-#: src/dopewars.c:392 | |
+#: src/dopewars.c:393 | |
msgid "smoke a cigarette" | |
msgstr "" | |
-#: src/dopewars.c:396 | |
+#: src/dopewars.c:397 | |
msgid "Baretta" | |
msgstr "" | |
-#: src/dopewars.c:397 | |
+#: src/dopewars.c:398 | |
msgid ".38 Special" | |
msgstr "" | |
-#: src/dopewars.c:398 | |
+#: src/dopewars.c:399 | |
msgid "Ruger" | |
msgstr "" | |
-#: src/dopewars.c:399 | |
+#: src/dopewars.c:400 | |
msgid "Saturday Night Special" | |
msgstr "" | |
-#: src/dopewars.c:403 | |
+#: src/dopewars.c:404 | |
msgid "Bronx" | |
msgstr "" | |
-#: src/dopewars.c:404 | |
+#: src/dopewars.c:405 | |
msgid "Ghetto" | |
msgstr "" | |
-#: src/dopewars.c:405 | |
+#: src/dopewars.c:406 | |
msgid "Central Park" | |
msgstr "" | |
-#: src/dopewars.c:406 | |
+#: src/dopewars.c:407 | |
msgid "Manhattan" | |
msgstr "" | |
-#: src/dopewars.c:407 | |
+#: src/dopewars.c:408 | |
msgid "Coney Island" | |
msgstr "" | |
-#: src/dopewars.c:408 | |
+#: src/dopewars.c:409 | |
msgid "Brooklyn" | |
msgstr "" | |
-#: src/dopewars.c:409 | |
+#: src/dopewars.c:410 | |
msgid "Queens" | |
msgstr "" | |
-#: src/dopewars.c:410 | |
+#: src/dopewars.c:411 | |
msgid "Staten Island" | |
msgstr "" | |
-#: src/dopewars.c:414 | |
+#: src/dopewars.c:415 | |
msgid "Acid" | |
msgstr "" | |
-#: src/dopewars.c:415 | |
+#: src/dopewars.c:416 | |
msgid "The market is flooded with cheap home-made acid!" | |
msgstr "" | |
-#: src/dopewars.c:416 | |
+#: src/dopewars.c:417 | |
msgid "Cocaine" | |
msgstr "" | |
-#: src/dopewars.c:417 | |
+#: src/dopewars.c:418 | |
msgid "Hashish" | |
msgstr "" | |
-#: src/dopewars.c:417 | |
+#: src/dopewars.c:418 | |
msgid "The Marrakesh Express has arrived!" | |
msgstr "" | |
-#: src/dopewars.c:418 | |
+#: src/dopewars.c:419 | |
msgid "Heroin" | |
msgstr "" | |
-#: src/dopewars.c:419 | |
+#: src/dopewars.c:420 | |
msgid "Ludes" | |
msgstr "" | |
-#: src/dopewars.c:420 | |
+#: src/dopewars.c:421 | |
msgid "Rival drug dealers raided a pharmacy and are selling cheap ludes!" | |
msgstr "" | |
-#: src/dopewars.c:421 | |
+#: src/dopewars.c:422 | |
msgid "MDA" | |
msgstr "" | |
-#: src/dopewars.c:422 | |
+#: src/dopewars.c:423 | |
msgid "Opium" | |
msgstr "" | |
-#: src/dopewars.c:423 | |
+#: src/dopewars.c:424 | |
msgid "PCP" | |
msgstr "" | |
-#: src/dopewars.c:424 | |
+#: src/dopewars.c:425 | |
msgid "Peyote" | |
msgstr "" | |
-#: src/dopewars.c:425 | |
+#: src/dopewars.c:426 | |
msgid "Shrooms" | |
msgstr "" | |
-#: src/dopewars.c:426 | |
+#: src/dopewars.c:427 | |
msgid "Speed" | |
msgstr "" | |
-#: src/dopewars.c:427 | |
+#: src/dopewars.c:428 | |
msgid "Weed" | |
msgstr "" | |
-#: src/dopewars.c:427 | |
+#: src/dopewars.c:428 | |
msgid "" | |
"Columbian freighter dusted the Coast Guard! Weed prices have bottomed out!" | |
msgstr "" | |
-#: src/dopewars.c:433 | |
+#: src/dopewars.c:434 | |
#, c-format | |
msgid "Cops made a big %s bust! Prices are outrageous!" | |
msgstr "" | |
-#: src/dopewars.c:434 | |
+#: src/dopewars.c:435 | |
#, c-format | |
msgid "Addicts are buying %s at ridiculous prices!" | |
msgstr "" | |
-#: src/dopewars.c:439 | |
+#: src/dopewars.c:440 | |
msgid "Wouldn't it be funny if everyone suddenly quacked at once?" | |
msgstr "" | |
-#: src/dopewars.c:440 | |
+#: src/dopewars.c:441 | |
msgid "The Pope was once Jewish, you know" | |
msgstr "" | |
-#: src/dopewars.c:441 | |
+#: src/dopewars.c:442 | |
msgid "I'll bet you have some really interesting dreams" | |
msgstr "" | |
-#: src/dopewars.c:442 | |
+#: src/dopewars.c:443 | |
msgid "So I think I'm going to Amsterdam this year" | |
msgstr "" | |
-#: src/dopewars.c:443 | |
+#: src/dopewars.c:444 | |
msgid "Son, you need a yellow haircut" | |
msgstr "" | |
-#: src/dopewars.c:444 | |
+#: src/dopewars.c:445 | |
msgid "I think it's wonderful what they're doing with incense these days" | |
msgstr "" | |
-#: src/dopewars.c:445 | |
+#: src/dopewars.c:446 | |
msgid "I wasn't always a woman, you know" | |
msgstr "" | |
-#: src/dopewars.c:446 | |
+#: src/dopewars.c:447 | |
msgid "Does your mother know you're a dope dealer?" | |
msgstr "" | |
-#: src/dopewars.c:447 | |
+#: src/dopewars.c:448 | |
msgid "Are you high on something?" | |
msgstr "" | |
-#: src/dopewars.c:448 | |
+#: src/dopewars.c:449 | |
msgid "Oh, you must be from California" | |
msgstr "" | |
-#: src/dopewars.c:449 | |
+#: src/dopewars.c:450 | |
msgid "I used to be a hippie, myself" | |
msgstr "" | |
-#: src/dopewars.c:450 | |
+#: src/dopewars.c:451 | |
msgid "There's nothing like having lots of money" | |
msgstr "" | |
-#: src/dopewars.c:451 | |
+#: src/dopewars.c:452 | |
msgid "You look like an aardvark!" | |
msgstr "" | |
-#: src/dopewars.c:452 | |
+#: src/dopewars.c:453 | |
msgid "I don't believe in Ronald Reagan" | |
msgstr "" | |
-#: src/dopewars.c:453 | |
+#: src/dopewars.c:454 | |
msgid "Courage! Bush is a noodle!" | |
msgstr "" | |
-#: src/dopewars.c:454 | |
+#: src/dopewars.c:455 | |
msgid "Haven't I seen you on TV?" | |
msgstr "" | |
-#: src/dopewars.c:455 | |
+#: src/dopewars.c:456 | |
msgid "I think hemorrhoid commercials are really neat!" | |
msgstr "" | |
-#: src/dopewars.c:456 | |
+#: src/dopewars.c:457 | |
msgid "We're winning the war for drugs!" | |
msgstr "" | |
-#: src/dopewars.c:457 | |
+#: src/dopewars.c:458 | |
msgid "A day without dope is like night" | |
msgstr "" | |
-#: src/dopewars.c:458 | |
+#: src/dopewars.c:459 | |
#, c-format | |
msgid "We only use 20% of our brains, so why not burn out the other 80%" | |
msgstr "" | |
-#: src/dopewars.c:459 | |
+#: src/dopewars.c:460 | |
msgid "I'm soliciting contributions for Zombies for Christ" | |
msgstr "" | |
-#: src/dopewars.c:460 | |
+#: src/dopewars.c:461 | |
msgid "I'd like to sell you an edible poodle" | |
msgstr "" | |
-#: src/dopewars.c:461 | |
+#: src/dopewars.c:462 | |
msgid "Winners don't do drugs... unless they do" | |
msgstr "" | |
-#: src/dopewars.c:462 | |
+#: src/dopewars.c:463 | |
msgid "Kill a cop for Christ!" | |
msgstr "" | |
-#: src/dopewars.c:463 | |
+#: src/dopewars.c:464 | |
msgid "I am the walrus!" | |
msgstr "" | |
-#: src/dopewars.c:464 | |
+#: src/dopewars.c:465 | |
msgid "Jesus loves you more than you will know" | |
msgstr "" | |
-#: src/dopewars.c:465 | |
+#: src/dopewars.c:466 | |
msgid "I feel an unaccountable urge to dye my hair blue" | |
msgstr "" | |
-#: src/dopewars.c:466 | |
+#: src/dopewars.c:467 | |
msgid "Wasn't Jane Fonda wonderful in Barbarella" | |
msgstr "" | |
-#: src/dopewars.c:467 | |
+#: src/dopewars.c:468 | |
msgid "Just say No... well, maybe... ok, what the hell!" | |
msgstr "" | |
-#: src/dopewars.c:468 | |
+#: src/dopewars.c:469 | |
msgid "Would you like a jelly baby?" | |
msgstr "" | |
-#: src/dopewars.c:469 | |
+#: src/dopewars.c:470 | |
msgid "Drugs can be your friend!" | |
msgstr "" | |
-#: src/dopewars.c:1126 | |
+#: src/dopewars.c:1127 | |
msgid "Unable to process configuration file line" | |
msgstr "" | |
-#: src/dopewars.c:1187 | |
+#: src/dopewars.c:1188 | |
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:1248 | |
+#: src/dopewars.c:1249 | |
#, c-format | |
msgid "Index into %s array should be between 1 and %d" | |
msgstr "" | |
-#: src/dopewars.c:1267 | |
+#: src/dopewars.c:1268 | |
#, c-format | |
msgid "%s is %d\n" | |
msgstr "" | |
-#: src/dopewars.c:1272 | |
-#, c-format | |
-msgid "%s is %s\n" | |
+#: src/dopewars.c:1271 | |
+msgid "%s is %P\n" | |
msgstr "" | |
-#: src/dopewars.c:1275 | |
+#: src/dopewars.c:1274 | |
#, c-format | |
msgid "%s is \"%s\"\n" | |
msgstr "" | |
-#: src/dopewars.c:1279 | |
+#: src/dopewars.c:1278 | |
#, c-format | |
msgid "%s[%d] is %s\n" | |
msgstr "" | |
-#: src/dopewars.c:1282 | |
+#: src/dopewars.c:1281 | |
#, c-format | |
msgid "%s is { " | |
msgstr "" | |
-#: src/dopewars.c:1313 | |
+#: src/dopewars.c:1312 | |
#, c-format | |
msgid "Resized structure list to %d elements\n" | |
msgstr "" | |
-#: src/dopewars.c:1457 | |
+#: src/dopewars.c:1456 | |
#, c-format | |
msgid "" | |
"Usage: dopewars [OPTION]...\n" | |
t@@ -1002,7 +1001,7 @@ msgstr "" | |
msgid "CLQP" | |
msgstr "" | |
-#: src/curses_client.c:372 src/gtk_client.c:816 | |
+#: src/curses_client.c:372 src/gtk_client.c:813 | |
msgid "Where to, dude ? " | |
msgstr "" | |
t@@ -1018,11 +1017,11 @@ msgstr "" | |
msgid "How many do you drop? " | |
msgstr "" | |
-#: src/curses_client.c:456 src/curses_client.c:834 | |
+#: src/curses_client.c:456 src/curses_client.c:832 | |
msgid "What do you wish to buy? " | |
msgstr "" | |
-#: src/curses_client.c:458 src/curses_client.c:836 | |
+#: src/curses_client.c:458 src/curses_client.c:834 | |
msgid "What do you wish to sell? " | |
msgstr "" | |
t@@ -1044,336 +1043,331 @@ msgstr "" | |
msgid "How many do you sell? " | |
msgstr "" | |
-#: src/curses_client.c:512 | |
+#: src/curses_client.c:511 | |
msgid "Choose an errand to give one of your %tde..." | |
msgstr "" | |
-#: src/curses_client.c:518 | |
-#, c-format | |
-msgid " S>py on another dealer (cost: %s)" | |
+#: src/curses_client.c:517 | |
+msgid " S>py on another dealer (cost: %P)" | |
msgstr "" | |
-#: src/curses_client.c:522 | |
-#, c-format | |
-msgid " T>ip off the cops to another dealer (cost: %s)" | |
+#: src/curses_client.c:521 | |
+msgid " T>ip off the cops to another dealer (cost: %P)" | |
msgstr "" | |
-#: src/curses_client.c:525 | |
+#: src/curses_client.c:524 | |
msgid " G>et stuffed" | |
msgstr "" | |
-#: src/curses_client.c:528 | |
+#: src/curses_client.c:527 | |
msgid "or C>ontact your spies and receive reports" | |
msgstr "" | |
-#: src/curses_client.c:530 | |
+#: src/curses_client.c:529 | |
msgid "or N>o errand ? " | |
msgstr "" | |
-#: src/curses_client.c:533 | |
+#: src/curses_client.c:532 | |
msgid "STGCN" | |
msgstr "" | |
-#: src/curses_client.c:536 | |
+#: src/curses_client.c:535 | |
msgid "Whom do you want to spy on? " | |
msgstr "" | |
-#: src/curses_client.c:541 | |
+#: src/curses_client.c:540 | |
msgid "Whom do you want to tip the cops off to? " | |
msgstr "" | |
-#: src/curses_client.c:546 | |
+#: src/curses_client.c:545 | |
msgid " Are you sure? " | |
msgstr "" | |
-#: src/curses_client.c:547 src/curses_client.c:565 src/curses_client.c:1713 | |
+#: src/curses_client.c:546 src/curses_client.c:564 src/curses_client.c:1704 | |
msgid "YN" | |
msgstr "" | |
-#: src/curses_client.c:563 | |
+#: src/curses_client.c:562 | |
msgid "Are you sure you want to quit? " | |
msgstr "" | |
-#: src/curses_client.c:571 | |
+#: src/curses_client.c:570 | |
msgid "New name: " | |
msgstr "" | |
-#: src/curses_client.c:627 | |
+#: src/curses_client.c:626 | |
msgid "You have been pushed from the server. Reverting to single player mode." | |
msgstr "" | |
-#: src/curses_client.c:637 | |
+#: src/curses_client.c:636 | |
msgid "The server has terminated. Reverting to single player mode." | |
msgstr "" | |
-#: src/curses_client.c:652 src/gtk_client.c:339 src/serverside.c:259 | |
+#: src/curses_client.c:651 src/gtk_client.c:339 src/serverside.c:259 | |
#, c-format | |
msgid "%s joins the game!" | |
msgstr "" | |
-#: src/curses_client.c:657 src/gtk_client.c:345 | |
+#: src/curses_client.c:656 src/gtk_client.c:345 | |
#, c-format | |
msgid "%s has left the game." | |
msgstr "" | |
-#: src/curses_client.c:662 | |
+#: src/curses_client.c:661 | |
#, c-format | |
msgid "%s will now be known as %s." | |
msgstr "" | |
-#: src/curses_client.c:686 | |
+#: src/curses_client.c:685 | |
msgid "S U B W A Y" | |
msgstr "" | |
-#: src/curses_client.c:729 | |
+#: src/curses_client.c:728 | |
msgid "" | |
"Unfortunately, somebody else is already using \"your\" name. Please change " | |
"it." | |
msgstr "" | |
-#: src/curses_client.c:750 | |
+#: src/curses_client.c:749 | |
msgid "H I G H S C O R E S" | |
msgstr "" | |
-#: src/curses_client.c:807 | |
+#: src/curses_client.c:805 | |
msgid "Will you B>uy, S>ell, or L>eave? " | |
msgstr "" | |
-#: src/curses_client.c:812 | |
+#: src/curses_client.c:810 | |
msgid "BSL" | |
msgstr "" | |
-#: src/curses_client.c:817 | |
+#: src/curses_client.c:815 | |
msgid "You don't have any %tde to sell!" | |
msgstr "" | |
-#: src/curses_client.c:825 src/gtk_client.c:1102 | |
+#: src/curses_client.c:823 src/gtk_client.c:1096 | |
msgid "You'll need more %tde to carry any more %tde!" | |
msgstr "" | |
-#: src/curses_client.c:847 src/gtk_client.c:1107 | |
+#: src/curses_client.c:845 src/gtk_client.c:1101 | |
msgid "You don't have enough space to carry that %tde!" | |
msgstr "" | |
-#: src/curses_client.c:855 src/gtk_client.c:1111 | |
+#: src/curses_client.c:853 src/gtk_client.c:1105 | |
msgid "You don't have enough cash to buy that %tde!" | |
msgstr "" | |
-#: src/curses_client.c:868 src/gtk_client.c:1115 | |
+#: src/curses_client.c:866 src/gtk_client.c:1109 | |
msgid "You don't have any to sell!" | |
msgstr "" | |
-#: src/curses_client.c:892 | |
+#: src/curses_client.c:890 | |
msgid "How much money do you pay back? " | |
msgstr "" | |
-#: src/curses_client.c:898 src/curses_client.c:928 src/gtk_client.c:1943 | |
+#: src/curses_client.c:896 src/curses_client.c:926 src/gtk_client.c:1937 | |
msgid "You don't have that much money!" | |
msgstr "" | |
-#: src/curses_client.c:918 | |
+#: src/curses_client.c:916 | |
msgid "Do you want to D>eposit money, W>ithdraw money, or L>eave ? " | |
msgstr "" | |
-#: src/curses_client.c:921 | |
+#: src/curses_client.c:919 | |
msgid "DWL" | |
msgstr "" | |
-#: src/curses_client.c:923 | |
+#: src/curses_client.c:921 | |
msgid "How much money? " | |
msgstr "" | |
-#: src/curses_client.c:931 src/gtk_client.c:1936 | |
+#: src/curses_client.c:929 src/gtk_client.c:1930 | |
msgid "There isn't that much money in the bank..." | |
msgstr "" | |
-#: src/curses_client.c:958 | |
+#: src/curses_client.c:956 | |
msgid "Yes" | |
msgstr "" | |
-#: src/curses_client.c:958 | |
+#: src/curses_client.c:956 | |
msgid "No" | |
msgstr "" | |
-#: src/curses_client.c:958 | |
+#: src/curses_client.c:956 | |
msgid "Run" | |
msgstr "" | |
-#: src/curses_client.c:959 src/gtk_client.c:521 | |
+#: src/curses_client.c:957 src/gtk_client.c:519 | |
msgid "Fight" | |
msgstr "" | |
-#: src/curses_client.c:959 | |
+#: src/curses_client.c:957 | |
msgid "Attack" | |
msgstr "" | |
-#: src/curses_client.c:959 | |
+#: src/curses_client.c:957 | |
msgid "Evade" | |
msgstr "" | |
-#: src/curses_client.c:1028 | |
+#: src/curses_client.c:1026 | |
msgid "Press any key..." | |
msgstr "" | |
-#: src/curses_client.c:1160 | |
+#: src/curses_client.c:1157 | |
msgid "Messages" | |
msgstr "" | |
-#: src/curses_client.c:1167 src/gtk_client.c:1396 | |
+#: src/curses_client.c:1164 src/gtk_client.c:1390 | |
msgid "Stats" | |
msgstr "" | |
-#: src/curses_client.c:1170 | |
-#, c-format | |
-msgid "Cash %17s" | |
+#: src/curses_client.c:1167 | |
+msgid "Cash %17P" | |
msgstr "" | |
-#: src/curses_client.c:1177 | |
+#: src/curses_client.c:1171 | |
#, c-format | |
msgid "Health %3d" | |
msgstr "" | |
-#: src/curses_client.c:1179 | |
-#, c-format | |
-msgid "Bank %17s" | |
+#: src/curses_client.c:1173 | |
+msgid "Bank %17P" | |
msgstr "" | |
-#: src/curses_client.c:1183 | |
-#, c-format | |
-msgid "Debt %17s" | |
+#: src/curses_client.c:1176 | |
+msgid "Debt %17P" | |
msgstr "" | |
-#: src/curses_client.c:1187 | |
+#: src/curses_client.c:1179 | |
#, c-format | |
msgid "Space %6d" | |
msgstr "" | |
-#: src/curses_client.c:1189 | |
+#: src/curses_client.c:1181 | |
msgid "%Tde %3d Space %6d" | |
msgstr "" | |
-#: src/curses_client.c:1198 | |
+#: src/curses_client.c:1190 | |
msgid "Trenchcoat" | |
msgstr "" | |
-#: src/curses_client.c:1200 | |
+#: src/curses_client.c:1192 | |
msgid "**Stats: Drugs** %Tde" | |
msgstr "" | |
-#: src/curses_client.c:1213 src/gtk_client.c:638 | |
+#: src/curses_client.c:1205 src/gtk_client.c:636 | |
msgid "**Stats: Guns** %Tde" | |
msgstr "" | |
-#: src/curses_client.c:1239 | |
+#: src/curses_client.c:1231 | |
#, c-format | |
msgid "Spy reports for %s" | |
msgstr "" | |
-#: src/curses_client.c:1242 src/curses_client.c:1246 | |
+#: src/curses_client.c:1234 src/curses_client.c:1238 | |
msgid "%Tde..." | |
msgstr "" | |
-#: src/curses_client.c:1267 | |
+#: src/curses_client.c:1259 | |
msgid "No other players are currently logged on!" | |
msgstr "" | |
-#: src/curses_client.c:1272 | |
+#: src/curses_client.c:1264 | |
msgid "Players currently logged on:-" | |
msgstr "" | |
-#: src/curses_client.c:1420 | |
+#: src/curses_client.c:1412 | |
msgid "Hey dude, what's your name? " | |
msgstr "" | |
-#: src/curses_client.c:1455 | |
+#: src/curses_client.c:1447 | |
msgid "Hey dude, the prices of %tde here are:" | |
msgstr "" | |
-#: src/curses_client.c:1467 | |
+#: src/curses_client.c:1458 | |
msgid "Will you B>uy" | |
msgstr "" | |
-#: src/curses_client.c:1468 | |
+#: src/curses_client.c:1459 | |
msgid ", S>ell" | |
msgstr "" | |
-#: src/curses_client.c:1469 | |
+#: src/curses_client.c:1460 | |
msgid ", D>rop" | |
msgstr "" | |
-#: src/curses_client.c:1470 | |
+#: src/curses_client.c:1461 | |
msgid ", T>alk, P>age, L>ist" | |
msgstr "" | |
-#: src/curses_client.c:1473 | |
+#: src/curses_client.c:1464 | |
msgid ", G>ive" | |
msgstr "" | |
-#: src/curses_client.c:1476 | |
+#: src/curses_client.c:1467 | |
msgid ", F>ight" | |
msgstr "" | |
-#: src/curses_client.c:1480 | |
+#: src/curses_client.c:1471 | |
msgid ", J>et" | |
msgstr "" | |
-#: src/curses_client.c:1482 src/curses_client.c:1497 | |
+#: src/curses_client.c:1473 src/curses_client.c:1488 | |
msgid ", or Q>uit? " | |
msgstr "" | |
-#: src/curses_client.c:1490 | |
+#: src/curses_client.c:1481 | |
msgid "Do you " | |
msgstr "" | |
-#: src/curses_client.c:1492 | |
+#: src/curses_client.c:1483 | |
msgid "F>ight, " | |
msgstr "" | |
-#: src/curses_client.c:1493 | |
+#: src/curses_client.c:1484 | |
msgid "S>tand, " | |
msgstr "" | |
-#: src/curses_client.c:1495 | |
+#: src/curses_client.c:1486 | |
msgid "R>un, " | |
msgstr "" | |
-#: src/curses_client.c:1496 | |
+#: src/curses_client.c:1487 | |
msgid "D>eal " | |
msgstr "" | |
-#: src/curses_client.c:1539 | |
+#: src/curses_client.c:1530 | |
msgid "Connection to server lost! Reverting to single player mode" | |
msgstr "" | |
-#: src/curses_client.c:1568 | |
+#: src/curses_client.c:1559 | |
msgid "BSDTPLGFJQ" | |
msgstr "" | |
-#: src/curses_client.c:1570 | |
+#: src/curses_client.c:1561 | |
msgid "DRFSQ" | |
msgstr "" | |
-#: src/curses_client.c:1598 | |
+#: src/curses_client.c:1589 | |
msgid "List what? P>layers or S>cores? " | |
msgstr "" | |
-#: src/curses_client.c:1599 | |
+#: src/curses_client.c:1590 | |
msgid "PS" | |
msgstr "" | |
-#: src/curses_client.c:1608 | |
+#: src/curses_client.c:1599 | |
msgid "Whom do you want to page (talk privately to) ? " | |
msgstr "" | |
-#: src/curses_client.c:1623 | |
+#: src/curses_client.c:1614 | |
msgid "Talk: " | |
msgstr "" | |
-#: src/curses_client.c:1712 | |
+#: src/curses_client.c:1703 | |
msgid "Play again? " | |
msgstr "" | |
-#: src/curses_client.c:1724 | |
+#: src/curses_client.c:1715 | |
msgid "" | |
"No curses client available - rebuild the binary passing the\n" | |
"--enable-curses-client option to configure, or use a windowed\n" | |
t@@ -1472,7 +1466,7 @@ msgstr "" | |
msgid "Inventory" | |
msgstr "" | |
-#: src/gtk_client.c:238 src/gtk_client.c:2178 src/gtk_client.c:2543 | |
+#: src/gtk_client.c:238 src/gtk_client.c:2177 src/gtk_client.c:2542 | |
msgid "Close" | |
msgstr "" | |
t@@ -1492,187 +1486,184 @@ msgstr "" | |
msgid "Jetting to %tde" | |
msgstr "" | |
-#: src/gtk_client.c:367 | |
-#, c-format | |
-msgid "_Spy\t(%s)" | |
+#: src/gtk_client.c:366 | |
+msgid "_Spy\t(%P)" | |
msgstr "" | |
-#: src/gtk_client.c:371 | |
-#, c-format | |
-msgid "_Tipoff\t(%s)" | |
+#: src/gtk_client.c:369 | |
+msgid "_Tipoff\t(%P)" | |
msgstr "" | |
-#: src/gtk_client.c:405 | |
+#: src/gtk_client.c:403 | |
msgid "High Scores" | |
msgstr "" | |
-#: src/gtk_client.c:439 src/gtk_client.c:1048 src/gtk_client.c:1508 | |
-#: src/gtk_client.c:1853 src/gtk_client.c:2017 src/gtk_client.c:2293 | |
-#: src/gtk_client.c:2449 | |
+#: src/gtk_client.c:437 src/gtk_client.c:1042 src/gtk_client.c:1502 | |
+#: src/gtk_client.c:1847 src/gtk_client.c:2016 src/gtk_client.c:2292 | |
+#: src/gtk_client.c:2448 | |
msgid "OK" | |
msgstr "" | |
-#: src/gtk_client.c:548 | |
+#: src/gtk_client.c:546 | |
msgid "_Deal %Tde" | |
msgstr "" | |
-#: src/gtk_client.c:552 src/gtk_client.c:1146 src/gtk_client.c:1343 | |
+#: src/gtk_client.c:550 src/gtk_client.c:1140 src/gtk_client.c:1337 | |
msgid "_Fight" | |
msgstr "" | |
-#: src/gtk_client.c:555 | |
+#: src/gtk_client.c:553 | |
msgid "_Stand" | |
msgstr "" | |
-#: src/gtk_client.c:558 src/gtk_client.c:1145 | |
+#: src/gtk_client.c:556 src/gtk_client.c:1139 | |
msgid "_Run" | |
msgstr "" | |
-#: src/gtk_client.c:645 | |
+#: src/gtk_client.c:643 | |
msgid "**Stats: Bitches** %Tde" | |
msgstr "" | |
-#: src/gtk_client.c:807 | |
+#: src/gtk_client.c:804 | |
msgid "Jet to location" | |
msgstr "" | |
-#: src/gtk_client.c:876 | |
-#, c-format | |
-msgid "at %s" | |
+#: src/gtk_client.c:871 | |
+msgid "at %P" | |
msgstr "" | |
-#: src/gtk_client.c:881 | |
+#: src/gtk_client.c:875 | |
msgid "You are currently carrying %d %tde" | |
msgstr "" | |
-#: src/gtk_client.c:886 | |
+#: src/gtk_client.c:880 | |
#, c-format | |
msgid "Available space: %d" | |
msgstr "" | |
-#: src/gtk_client.c:891 | |
+#: src/gtk_client.c:885 | |
#, c-format | |
msgid "You can afford %d" | |
msgstr "" | |
-#: src/gtk_client.c:940 src/gtk_client.c:1077 | |
+#: src/gtk_client.c:934 src/gtk_client.c:1071 | |
msgid "Buy" | |
msgstr "" | |
-#: src/gtk_client.c:941 src/gtk_client.c:1078 | |
+#: src/gtk_client.c:935 src/gtk_client.c:1072 | |
msgid "Sell" | |
msgstr "" | |
-#: src/gtk_client.c:942 src/gtk_client.c:1079 | |
+#: src/gtk_client.c:936 src/gtk_client.c:1073 | |
msgid "Drop" | |
msgstr "" | |
-#: src/gtk_client.c:1031 | |
+#: src/gtk_client.c:1025 | |
msgid "Buy how many?" | |
msgstr "" | |
-#: src/gtk_client.c:1033 | |
+#: src/gtk_client.c:1027 | |
msgid "Sell how many?" | |
msgstr "" | |
-#: src/gtk_client.c:1035 | |
+#: src/gtk_client.c:1029 | |
msgid "Drop how many?" | |
msgstr "" | |
-#: src/gtk_client.c:1054 src/gtk_client.c:1853 src/gtk_client.c:2028 | |
-#: src/gtk_client.c:2301 | |
+#: src/gtk_client.c:1048 src/gtk_client.c:1847 src/gtk_client.c:2027 | |
+#: src/gtk_client.c:2300 | |
msgid "Cancel" | |
msgstr "" | |
-#: src/gtk_client.c:1090 | |
+#: src/gtk_client.c:1084 | |
msgid "Buy %tde" | |
msgstr "" | |
-#: src/gtk_client.c:1091 | |
+#: src/gtk_client.c:1085 | |
msgid "Sell %tde" | |
msgstr "" | |
-#: src/gtk_client.c:1092 | |
+#: src/gtk_client.c:1086 | |
msgid "Drop %tde" | |
msgstr "" | |
-#: src/gtk_client.c:1097 | |
+#: src/gtk_client.c:1091 | |
msgid "You don't have any %tde!" | |
msgstr "" | |
-#: src/gtk_client.c:1145 src/gtk_client.c:1854 | |
+#: src/gtk_client.c:1139 src/gtk_client.c:1848 | |
msgid "_Yes" | |
msgstr "" | |
-#: src/gtk_client.c:1145 src/gtk_client.c:1854 | |
+#: src/gtk_client.c:1139 src/gtk_client.c:1848 | |
msgid "_No" | |
msgstr "" | |
-#: src/gtk_client.c:1146 | |
+#: src/gtk_client.c:1140 | |
msgid "_Attack" | |
msgstr "" | |
-#: src/gtk_client.c:1146 | |
+#: src/gtk_client.c:1140 | |
msgid "_Evade" | |
msgstr "" | |
-#: src/gtk_client.c:1164 | |
+#: src/gtk_client.c:1158 | |
msgid "Question" | |
msgstr "" | |
-#: src/gtk_client.c:1293 | |
+#: src/gtk_client.c:1287 | |
msgid "Space" | |
msgstr "" | |
-#: src/gtk_client.c:1298 | |
+#: src/gtk_client.c:1292 | |
msgid "Cash" | |
msgstr "" | |
-#: src/gtk_client.c:1303 | |
+#: src/gtk_client.c:1297 | |
msgid "Debt" | |
msgstr "" | |
-#: src/gtk_client.c:1308 | |
+#: src/gtk_client.c:1302 | |
msgid "Bank" | |
msgstr "" | |
-#: src/gtk_client.c:1323 | |
+#: src/gtk_client.c:1317 | |
msgid "Health" | |
msgstr "" | |
-#: src/gtk_client.c:1343 | |
+#: src/gtk_client.c:1337 | |
msgid "_Jet!" | |
msgstr "" | |
-#: src/gtk_client.c:1373 | |
+#: src/gtk_client.c:1367 | |
msgid "dopewars" | |
msgstr "" | |
-#: src/gtk_client.c:1455 | |
+#: src/gtk_client.c:1449 | |
msgid "Drug Dealing and Research" | |
msgstr "" | |
-#: src/gtk_client.c:1456 | |
+#: src/gtk_client.c:1450 | |
msgid "Play Testing" | |
msgstr "" | |
-#: src/gtk_client.c:1457 | |
+#: src/gtk_client.c:1451 | |
msgid "Extensive Play Testing" | |
msgstr "" | |
-#: src/gtk_client.c:1459 | |
+#: src/gtk_client.c:1453 | |
msgid "Constructive Criticism" | |
msgstr "" | |
-#: src/gtk_client.c:1461 | |
+#: src/gtk_client.c:1455 | |
msgid "Unconstructive Criticism" | |
msgstr "" | |
-#: src/gtk_client.c:1465 | |
+#: src/gtk_client.c:1459 | |
msgid "About dopewars" | |
msgstr "" | |
-#: src/gtk_client.c:1474 | |
+#: src/gtk_client.c:1468 | |
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@@ -1684,151 +1675,156 @@ msgid "" | |
"have one month of game time to make your fortune.\n" | |
msgstr "" | |
-#: src/gtk_client.c:1482 | |
+#: src/gtk_client.c:1476 | |
#, 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:1500 | |
+#: src/gtk_client.c:1494 | |
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 available options." | |
msgstr "" | |
-#: src/gtk_client.c:1538 src/gtk_client.c:1561 | |
+#: src/gtk_client.c:1532 src/gtk_client.c:1555 | |
#, c-format | |
msgid "Status: Could not connect (%s)" | |
msgstr "" | |
-#: src/gtk_client.c:1549 | |
+#: src/gtk_client.c:1543 | |
#, c-format | |
msgid "Status: Attempting to contact %s..." | |
msgstr "" | |
-#: src/gtk_client.c:1609 | |
+#: src/gtk_client.c:1603 | |
#, c-format | |
msgid "%d of %d" | |
msgstr "" | |
-#: src/gtk_client.c:1673 src/gtk_client.c:1714 src/gtk_client.c:1755 | |
+#: src/gtk_client.c:1667 src/gtk_client.c:1708 src/gtk_client.c:1749 | |
msgid "Server" | |
msgstr "" | |
-#: src/gtk_client.c:1674 src/gtk_client.c:1729 | |
+#: src/gtk_client.c:1668 src/gtk_client.c:1723 | |
msgid "Port" | |
msgstr "" | |
-#: src/gtk_client.c:1675 | |
+#: src/gtk_client.c:1669 | |
msgid "Version" | |
msgstr "" | |
-#: src/gtk_client.c:1676 | |
+#: src/gtk_client.c:1670 | |
msgid "Players" | |
msgstr "" | |
-#: src/gtk_client.c:1677 | |
+#: src/gtk_client.c:1671 | |
msgid "Comment" | |
msgstr "" | |
-#: src/gtk_client.c:1690 | |
+#: src/gtk_client.c:1684 | |
msgid "New Game" | |
msgstr "" | |
-#: src/gtk_client.c:1699 | |
+#: src/gtk_client.c:1693 | |
msgid "Hey dude, what's your _name?" | |
msgstr "" | |
-#: src/gtk_client.c:1721 | |
+#: src/gtk_client.c:1715 | |
msgid "Host name" | |
msgstr "" | |
-#: src/gtk_client.c:1744 src/gtk_client.c:1807 | |
+#: src/gtk_client.c:1738 src/gtk_client.c:1801 | |
msgid "_Connect" | |
msgstr "" | |
-#: src/gtk_client.c:1757 src/gtk_client.c:1778 | |
+#: src/gtk_client.c:1751 src/gtk_client.c:1772 | |
msgid "Single player" | |
msgstr "" | |
-#: src/gtk_client.c:1763 | |
+#: src/gtk_client.c:1757 | |
msgid "_Antique mode" | |
msgstr "" | |
-#: src/gtk_client.c:1770 | |
+#: src/gtk_client.c:1764 | |
msgid "_Start single-player game" | |
msgstr "" | |
-#: src/gtk_client.c:1780 src/gtk_client.c:1818 | |
+#: src/gtk_client.c:1774 src/gtk_client.c:1812 | |
msgid "Metaserver" | |
msgstr "" | |
-#: src/gtk_client.c:1797 | |
+#: src/gtk_client.c:1791 | |
msgid "_Update" | |
msgstr "" | |
-#: src/gtk_client.c:1822 | |
+#: src/gtk_client.c:1816 | |
msgid "Status: Waiting for user input" | |
msgstr "" | |
-#: src/gtk_client.c:1974 | |
-#, c-format | |
-msgid "Cash: %s" | |
+#: src/gtk_client.c:1958 | |
+msgid "**LoanShark window title** %Tde" | |
+msgstr "" | |
+ | |
+#: src/gtk_client.c:1961 | |
+msgid "**BankName window title** %Tde" | |
+msgstr "" | |
+ | |
+#: src/gtk_client.c:1975 | |
+msgid "Cash: %P" | |
msgstr "" | |
#: src/gtk_client.c:1981 | |
-#, c-format | |
-msgid "Debt: %s" | |
+msgid "Debt: %P" | |
msgstr "" | |
-#: src/gtk_client.c:1984 | |
-#, c-format | |
-msgid "Bank: %s" | |
+#: src/gtk_client.c:1983 | |
+msgid "Bank: %P" | |
msgstr "" | |
-#: src/gtk_client.c:1992 | |
+#: src/gtk_client.c:1991 | |
msgid "Pay back:" | |
msgstr "" | |
-#: src/gtk_client.c:1995 | |
+#: src/gtk_client.c:1994 | |
msgid "Deposit" | |
msgstr "" | |
-#: src/gtk_client.c:1999 | |
+#: src/gtk_client.c:1998 | |
msgid "Withdraw" | |
msgstr "" | |
-#: src/gtk_client.c:2023 | |
+#: src/gtk_client.c:2022 | |
msgid "Pay all" | |
msgstr "" | |
-#: src/gtk_client.c:2045 | |
+#: src/gtk_client.c:2044 | |
msgid "Player List" | |
msgstr "" | |
-#: src/gtk_client.c:2133 | |
+#: src/gtk_client.c:2132 | |
msgid "Talk to player(s)" | |
msgstr "" | |
-#: src/gtk_client.c:2155 | |
+#: src/gtk_client.c:2154 | |
msgid "Talk to all players" | |
msgstr "" | |
-#: src/gtk_client.c:2159 | |
+#: src/gtk_client.c:2158 | |
msgid "Message:-" | |
msgstr "" | |
-#: src/gtk_client.c:2172 | |
+#: src/gtk_client.c:2171 | |
msgid "Send" | |
msgstr "" | |
-#: src/gtk_client.c:2263 | |
+#: src/gtk_client.c:2262 | |
msgid "Spy On Player" | |
msgstr "" | |
-#: src/gtk_client.c:2265 | |
+#: src/gtk_client.c:2264 | |
msgid "" | |
"Please choose the player to spy on. Your %tde will\n" | |
"then offer his services to the player, and if successful,\n" | |
t@@ -1837,11 +1833,11 @@ msgid "" | |
"you, so any %tde or %tde that he's carrying may be lost!" | |
msgstr "" | |
-#: src/gtk_client.c:2273 | |
+#: src/gtk_client.c:2272 | |
msgid "Tip Off The Cops" | |
msgstr "" | |
-#: src/gtk_client.c:2275 | |
+#: src/gtk_client.c:2274 | |
msgid "" | |
"Please choose the player to tip off the cops to. Your %tde will\n" | |
"help the cops to attack that player, and then report back to you\n" | |
t@@ -1849,71 +1845,71 @@ msgid "" | |
"so any %tde or %tde that he's carrying may be lost!" | |
msgstr "" | |
-#: src/gtk_client.c:2314 | |
+#: src/gtk_client.c:2313 | |
msgid "Sack %Tde" | |
msgstr "" | |
-#: src/gtk_client.c:2315 | |
+#: src/gtk_client.c:2314 | |
msgid "" | |
"Are you sure? (Any %tde or %tde carried\n" | |
"by this %tde may be lost!)" | |
msgstr "" | |
-#: src/gtk_client.c:2335 | |
+#: src/gtk_client.c:2334 | |
msgid "Name" | |
msgstr "" | |
-#: src/gtk_client.c:2336 | |
+#: src/gtk_client.c:2335 | |
msgid "Price" | |
msgstr "" | |
-#: src/gtk_client.c:2337 | |
+#: src/gtk_client.c:2336 | |
msgid "Number" | |
msgstr "" | |
-#: src/gtk_client.c:2339 | |
+#: src/gtk_client.c:2338 | |
msgid "_Buy ->" | |
msgstr "" | |
-#: src/gtk_client.c:2340 | |
+#: src/gtk_client.c:2339 | |
msgid "<- _Sell" | |
msgstr "" | |
-#: src/gtk_client.c:2341 | |
+#: src/gtk_client.c:2340 | |
msgid "_Drop <-" | |
msgstr "" | |
-#: src/gtk_client.c:2346 | |
+#: src/gtk_client.c:2345 | |
msgid "%Tde here" | |
msgstr "" | |
-#: src/gtk_client.c:2349 | |
+#: src/gtk_client.c:2348 | |
msgid "%Tde carried" | |
msgstr "" | |
-#: src/gtk_client.c:2425 | |
+#: src/gtk_client.c:2424 | |
msgid "Change Name" | |
msgstr "" | |
-#: src/gtk_client.c:2435 | |
+#: src/gtk_client.c:2434 | |
msgid "" | |
"Unfortunately, somebody else is already using \"your\" name. Please change " | |
"it:-" | |
msgstr "" | |
-#: src/gtk_client.c:2472 | |
+#: src/gtk_client.c:2471 | |
msgid "**GunShop window title** %Tde" | |
msgstr "" | |
-#: src/gtk_client.c:2496 | |
+#: src/gtk_client.c:2495 | |
msgid "Done" | |
msgstr "" | |
-#: src/gtk_client.c:2529 | |
+#: src/gtk_client.c:2528 | |
msgid "Spy reports" | |
msgstr "" | |
-#: src/gtk_client.c:2595 | |
+#: src/gtk_client.c:2594 | |
msgid "" | |
"No GTK+ client available - rebuild the binary passing the\n" | |
"--enable-gtk-client option to configure, or use the curses\n" | |
t@@ -2135,148 +2131,145 @@ msgstr "" | |
msgid "(R.I.P.)" | |
msgstr "" | |
-#: src/serverside.c:1031 | |
+#: src/serverside.c:1030 | |
#, c-format | |
msgid "%s: Tipoff from %s" | |
msgstr "" | |
-#: src/serverside.c:1049 | |
+#: src/serverside.c:1048 | |
msgid "One of your %tde was spying for %s.^The spy %s!" | |
msgstr "" | |
-#: src/serverside.c:1056 | |
+#: src/serverside.c:1055 | |
#, c-format | |
msgid "Your spy working with %s has been discovered!^The spy %s!" | |
msgstr "" | |
-#: src/serverside.c:1079 | |
+#: src/serverside.c:1078 | |
#, c-format | |
msgid " The lady next to you on the subway said,^ \"%s\"%s" | |
msgstr "" | |
-#: src/serverside.c:1082 | |
+#: src/serverside.c:1081 | |
msgid "^ (at least, you -think- that's what she said)" | |
msgstr "" | |
-#: src/serverside.c:1084 | |
+#: src/serverside.c:1083 | |
#, 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:1092 src/serverside.c:1101 src/serverside.c:1110 | |
+#: src/serverside.c:1119 | |
msgid "YN^Would you like to visit %tde?" | |
msgstr "" | |
-#: src/serverside.c:1131 | |
-msgid "YN^^Would you like to hire a %tde for %s?" | |
+#: src/serverside.c:1130 | |
+msgid "YN^^Would you like to hire a %tde for %P?" | |
msgstr "" | |
-#: src/serverside.c:1144 | |
+#: src/serverside.c:1142 | |
#, c-format | |
msgid "AE^%s is already here!^Do you Attack, or Evade?" | |
msgstr "" | |
-#: src/serverside.c:1466 | |
+#: src/serverside.c:1464 | |
msgid "You were mugged in the subway!" | |
msgstr "" | |
-#: src/serverside.c:1477 | |
+#: src/serverside.c:1475 | |
#, c-format | |
msgid "You meet a friend! He gives you %d %s." | |
msgstr "" | |
-#: src/serverside.c:1482 | |
+#: src/serverside.c:1480 | |
#, c-format | |
msgid "You meet a friend! You give him %d %s." | |
msgstr "" | |
-#: src/serverside.c:1491 | |
+#: src/serverside.c:1489 | |
msgid "Sanitized away a RandomOffer" | |
msgstr "" | |
-#: src/serverside.c:1496 | |
+#: src/serverside.c:1494 | |
#, c-format | |
msgid "" | |
"Police dogs chase you for %d blocks! You dropped some %s! That's a drag, man!" | |
msgstr "" | |
-#: src/serverside.c:1512 | |
+#: src/serverside.c:1510 | |
#, c-format | |
msgid "You find %d %s on a dead dude in the subway!" | |
msgstr "" | |
-#: src/serverside.c:1524 | |
+#: src/serverside.c:1522 | |
#, c-format | |
msgid "Your mama made brownies with some of your %s! They were great!" | |
msgstr "" | |
-#: src/serverside.c:1534 | |
+#: src/serverside.c:1532 | |
msgid "" | |
"YN^There is some weed that smells like paraquat here!^It looks good! Will " | |
"you smoke it? " | |
msgstr "" | |
-#: src/serverside.c:1541 | |
+#: src/serverside.c:1539 | |
#, c-format | |
msgid "You stopped to %s." | |
msgstr "" | |
-#: src/serverside.c:1562 | |
-#, c-format | |
-msgid "Would you like to buy a bigger trenchcoat for %s?" | |
+#: src/serverside.c:1560 | |
+msgid "Would you like to buy a bigger trenchcoat for %P?" | |
msgstr "" | |
-#: src/serverside.c:1567 | |
-#, c-format | |
-msgid "YN^Hey dude! I'll help carry your %s for a mere %s. Yes or no?" | |
+#: src/serverside.c:1565 | |
+msgid "YN^Hey dude! I'll help carry your %tde for a mere %P. Yes or no?" | |
msgstr "" | |
-#: src/serverside.c:1579 | |
-#, c-format | |
-msgid "YN^Would you like to buy a %s for %s?" | |
+#: src/serverside.c:1575 | |
+msgid "YN^Would you like to buy a %tde for %P?" | |
msgstr "" | |
-#: src/serverside.c:1685 src/serverside.c:1778 | |
+#: src/serverside.c:1679 src/serverside.c:1772 | |
#, c-format | |
msgid "%s: offer was on behalf of %s" | |
msgstr "" | |
-#: src/serverside.c:1688 | |
+#: src/serverside.c:1682 | |
#, c-format | |
msgid "%s has accepted your %s!^Use the G key to contact your spy." | |
msgstr "" | |
-#: src/serverside.c:1734 | |
+#: src/serverside.c:1728 | |
msgid "" | |
"You hallucinated for three days on the wildest trip you ever imagined!^Then " | |
"you died because your brain disintegrated!" | |
msgstr "" | |
-#: src/serverside.c:1758 | |
+#: src/serverside.c:1752 | |
#, c-format | |
msgid "Too late - %s has just left!" | |
msgstr "" | |
-#: src/serverside.c:1781 | |
+#: src/serverside.c:1775 | |
#, c-format | |
msgid "%s has rejected your %s!" | |
msgstr "" | |
-#: src/serverside.c:1824 | |
+#: src/serverside.c:1818 | |
msgid "YN^Officer %%s spots you dropping %s, and chases you!" | |
msgstr "" | |
-#: src/serverside.c:1826 | |
+#: src/serverside.c:1820 | |
msgid "" | |
"YN^Officer %%s and %%d of his deputies spot you dropping %s, and chase you!" | |
msgstr "" | |
-#: src/serverside.c:1985 | |
+#: src/serverside.c:1979 | |
msgid "Player removed due to idle timeout" | |
msgstr "" | |
-#: src/serverside.c:1995 | |
+#: src/serverside.c:1989 | |
msgid "Player removed due to connect timeout" | |
msgstr "" | |
t@@ -2345,100 +2338,100 @@ msgstr "" | |
msgid "%s arrives with %d %tde, %s!" | |
msgstr "" | |
-#: src/message.c:1063 | |
+#: src/message.c:1062 | |
#, c-format | |
msgid "%s stands and takes it" | |
msgstr "" | |
-#: src/message.c:1065 | |
+#: src/message.c:1064 | |
msgid "You stand there like a dummy." | |
msgstr "" | |
-#: src/message.c:1070 | |
+#: src/message.c:1069 | |
#, c-format | |
msgid "%s has got away!" | |
msgstr "" | |
-#: src/message.c:1072 | |
+#: src/message.c:1071 | |
msgid "You got away!" | |
msgstr "" | |
-#: src/message.c:1077 | |
+#: src/message.c:1076 | |
msgid "Guns reloaded..." | |
msgstr "" | |
-#: src/message.c:1082 | |
+#: src/message.c:1081 | |
#, c-format | |
msgid "%s shoots at %s... and misses!" | |
msgstr "" | |
-#: src/message.c:1085 | |
+#: src/message.c:1084 | |
#, c-format | |
msgid "%s shoots at you... and misses!" | |
msgstr "" | |
-#: src/message.c:1088 | |
+#: src/message.c:1087 | |
#, c-format | |
msgid "You missed %s!" | |
msgstr "" | |
-#: src/message.c:1094 | |
+#: src/message.c:1093 | |
#, c-format | |
msgid "%s shoots %s dead." | |
msgstr "" | |
-#: src/message.c:1097 | |
+#: src/message.c:1096 | |
msgid "%s shoots at %s and kills a %tde!" | |
msgstr "" | |
-#: src/message.c:1101 | |
+#: src/message.c:1099 | |
#, c-format | |
msgid "%s shoots at %s." | |
msgstr "" | |
-#: src/message.c:1106 | |
+#: src/message.c:1104 | |
#, c-format | |
msgid "%s wasted you, man! What a drag!" | |
msgstr "" | |
-#: src/message.c:1110 | |
+#: src/message.c:1108 | |
msgid "%s shoots at you... and kills a %tde!" | |
msgstr "" | |
-#: src/message.c:1114 | |
+#: src/message.c:1111 | |
#, c-format | |
msgid "%s hits you, man!" | |
msgstr "" | |
-#: src/message.c:1118 | |
+#: src/message.c:1115 | |
#, c-format | |
msgid "You killed %s!" | |
msgstr "" | |
-#: src/message.c:1120 | |
+#: src/message.c:1117 | |
msgid "You hit %s, and killed a %tde!" | |
msgstr "" | |
-#: src/message.c:1124 | |
+#: src/message.c:1120 | |
#, c-format | |
msgid "You hit %s!" | |
msgstr "" | |
-#: src/message.c:1127 | |
+#: src/message.c:1123 | |
msgid " You loot the body!" | |
msgstr "" | |
-#: src/message.c:1130 | |
+#: src/message.c:1126 | |
#, c-format | |
msgid " (Health: %d)" | |
msgstr "" | |
-#: src/AIPlayer.c:58 | |
+#: src/AIPlayer.c:59 | |
#, c-format | |
msgid "AI Player started; attempting to contact server at %s:%d..." | |
msgstr "" | |
-#: src/AIPlayer.c:61 | |
+#: src/AIPlayer.c:62 | |
#, c-format | |
msgid "" | |
"Could not connect to dopewars server\n" | |
t@@ -2446,19 +2439,19 @@ msgid "" | |
"AI Player terminating abnormally." | |
msgstr "" | |
-#: src/AIPlayer.c:65 | |
+#: src/AIPlayer.c:66 | |
msgid "Connection established\n" | |
msgstr "" | |
-#: src/AIPlayer.c:85 | |
+#: src/AIPlayer.c:86 | |
msgid "Connection to server lost!\n" | |
msgstr "" | |
-#: src/AIPlayer.c:98 | |
+#: src/AIPlayer.c:99 | |
msgid "AI Player terminated OK.\n" | |
msgstr "" | |
-#: src/AIPlayer.c:111 | |
+#: src/AIPlayer.c:112 | |
#, c-format | |
msgid "Using name %s\n" | |
msgstr "" | |
t@@ -2478,87 +2471,82 @@ msgid "%s has left the game.\n" | |
msgstr "" | |
#: src/AIPlayer.c:172 | |
-#, c-format | |
-msgid "Jetting to %s with %s cash and %s debt" | |
+msgid "Jetting to %tde with %P cash and %P debt" | |
msgstr "" | |
-#: src/AIPlayer.c:192 | |
+#: src/AIPlayer.c:189 | |
msgid "AI Player killed. Terminating normally.\n" | |
msgstr "" | |
-#: src/AIPlayer.c:212 | |
+#: src/AIPlayer.c:209 | |
msgid "Game time is up. Leaving game.\n" | |
msgstr "" | |
-#: src/AIPlayer.c:215 | |
+#: src/AIPlayer.c:212 | |
msgid "AI Player pushed from the server.\n" | |
msgstr "" | |
-#: src/AIPlayer.c:218 | |
+#: src/AIPlayer.c:215 | |
msgid "The server has terminated.\n" | |
msgstr "" | |
-#: src/AIPlayer.c:272 | |
-#, c-format | |
-msgid "Selling %d %s at %s\n" | |
+#: src/AIPlayer.c:269 | |
+msgid "Selling %d %tde at %P\n" | |
msgstr "" | |
-#: src/AIPlayer.c:288 | |
-#, c-format | |
-msgid "Buying %d %s at %s\n" | |
+#: src/AIPlayer.c:284 | |
+msgid "Buying %d %tde at %P\n" | |
msgstr "" | |
-#: src/AIPlayer.c:317 | |
-#, c-format | |
-msgid "Buying a %s for %s at the gun shop\n" | |
+#: src/AIPlayer.c:312 | |
+msgid "Buying a %tde for %P at the gun shop\n" | |
msgstr "" | |
-#: src/AIPlayer.c:357 | |
-#, c-format | |
-msgid "Debt of %s paid off to loan shark\n" | |
+#: src/AIPlayer.c:351 | |
+msgid "Debt of %P paid off to loan shark\n" | |
msgstr "" | |
-#: src/AIPlayer.c:382 | |
+#: src/AIPlayer.c:374 | |
#, c-format | |
msgid "Loan shark located at %s\n" | |
msgstr "" | |
-#: src/AIPlayer.c:390 | |
+#: src/AIPlayer.c:382 | |
#, c-format | |
msgid "Gun shop located at %s\n" | |
msgstr "" | |
-#: src/AIPlayer.c:398 | |
+#: src/AIPlayer.c:390 | |
#, c-format | |
msgid "Pub located at %s\n" | |
msgstr "" | |
-#: src/AIPlayer.c:411 | |
+#: src/AIPlayer.c:403 | |
#, c-format | |
msgid "Bank located at %s\n" | |
msgstr "" | |
-#: src/AIPlayer.c:435 | |
+#: src/AIPlayer.c:427 | |
msgid "Call yourselves drug dealers?" | |
msgstr "" | |
-#: src/AIPlayer.c:436 | |
+#: src/AIPlayer.c:428 | |
msgid "A trained monkey could do better..." | |
msgstr "" | |
-#: src/AIPlayer.c:437 | |
+#: src/AIPlayer.c:429 | |
msgid "Think you're hard enough to deal with the likes of me?" | |
msgstr "" | |
-#: src/AIPlayer.c:438 | |
+#: src/AIPlayer.c:430 | |
msgid "Zzzzz... are you dealing in candy or what?" | |
msgstr "" | |
-#: src/AIPlayer.c:439 | |
+#: src/AIPlayer.c:431 | |
msgid "Reckon I'll just have to shoot you for your own good." | |
msgstr "" | |
-#: src/AIPlayer.c:447 | |
+#: src/AIPlayer.c:439 | |
msgid "" | |
"This binary has been compiled without networking support, and thus cannot " | |
"act as an AI player.\n" | |
diff --git a/src/AIPlayer.c b/src/AIPlayer.c | |
t@@ -29,6 +29,7 @@ | |
#include "dopeos.h" | |
#include "dopewars.h" | |
#include "message.h" | |
+#include "tstring.h" | |
#include "AIPlayer.h" | |
#if NETWORKING | |
t@@ -118,7 +119,6 @@ int HandleAIMessage(char *Message,Player *AIPlay) { | |
char *Data,Code,AICode,WasFighting; | |
Player *From,*tmp; | |
GSList *list; | |
- gchar *prstr,*prstr2; | |
struct timeval tv; | |
gboolean Handled; | |
if (ProcessMessage(Message,AIPlay,&From,&AICode,&Code, | |
t@@ -169,11 +169,8 @@ int HandleAIMessage(char *Message,Player *AIPlay) { | |
tv.tv_sec=AITurnPause; | |
tv.tv_usec=0; | |
bselect(0,NULL,NULL,NULL,&tv); | |
- g_print(_("Jetting to %s with %s cash and %s debt"), | |
- Location[(int)AIPlay->IsAt].Name, | |
- (prstr=FormatPrice(AIPlay->Cash)), | |
- (prstr2=FormatPrice(AIPlay->Debt))); | |
- g_free(prstr); g_free(prstr2); | |
+ dpg_print(_("Jetting to %tde with %P cash and %P debt"), | |
+ Location[(int)AIPlay->IsAt].Name,AIPlay->Cash,AIPlay->Debt); | |
if (brandom(0,100)<10) AISendRandomMessage(AIPlay); | |
break; | |
case C_UPDATE: | |
t@@ -244,7 +241,7 @@ void PrintAIMessage(char *Text) { | |
void AIDealDrugs(Player *AIPlay) { | |
/* Buy and sell drugs for AI player "AIPlay" */ | |
price_t *Profit,MaxProfit; | |
- gchar *prstr,*text; | |
+ gchar *text; | |
int i,LastHighest,Highest,Num,MinProfit; | |
Profit = g_new(price_t,NumDrug); | |
for (i=0;i<NumDrug;i++) { | |
t@@ -269,9 +266,8 @@ void AIDealDrugs(Player *AIPlay) { | |
if (Highest==-1) break; | |
Num=AIPlay->Drugs[Highest].Carried; | |
if (MaxProfit>0 && Num>0) { | |
- g_print(_("Selling %d %s at %s\n"),Num,Drug[Highest].Name, | |
- (prstr=FormatPrice(AIPlay->Drugs[Highest].Price))); | |
- g_free(prstr); | |
+ dpg_print(_("Selling %d %tde at %P\n"),Num,Drug[Highest].Name, | |
+ AIPlay->Drugs[Highest].Price); | |
AIPlay->CoatSize+=Num; | |
AIPlay->Cash+=Num*AIPlay->Drugs[Highest].Price; | |
text=g_strdup_printf("drug^%d^%d",Highest,-Num); | |
t@@ -285,9 +281,8 @@ void AIDealDrugs(Player *AIPlay) { | |
Num=AIPlay->CoatSize-SPACERESERVE; | |
} | |
if (MaxProfit<0 && Num>0) { | |
- g_print(_("Buying %d %s at %s\n"),Num,Drug[Highest].Name, | |
- (prstr=FormatPrice(AIPlay->Drugs[Highest].Price))); | |
- g_free(prstr); | |
+ dpg_print(_("Buying %d %tde at %P\n"),Num,Drug[Highest].Name, | |
+ AIPlay->Drugs[Highest].Price); | |
text=g_strdup_printf("drug^%d^%d",Highest,Num); | |
AIPlay->CoatSize-=Num; | |
AIPlay->Cash-=Num*AIPlay->Drugs[Highest].Price; | |
t@@ -303,7 +298,7 @@ void AIGunShop(Player *AIPlay) { | |
/* Handles a visit to the gun shop by AI player "AIPlay" */ | |
int i; | |
int Bought; | |
- gchar *text,*prstr; | |
+ gchar *text; | |
do { | |
Bought=0; | |
for (i=0;i<NumGun;i++) { | |
t@@ -314,9 +309,8 @@ void AIGunShop(Player *AIPlay) { | |
AIPlay->CoatSize-=Gun[i].Space; | |
AIPlay->Guns[i].Carried++; | |
Bought++; | |
- g_print(_("Buying a %s for %s at the gun shop\n"),Gun[i].Name, | |
- (prstr=FormatPrice(Gun[i].Price))); | |
- g_free(prstr); | |
+ dpg_print(_("Buying a %tde for %P at the gun shop\n"), | |
+ Gun[i].Name,Gun[i].Price); | |
text=g_strdup_printf("gun^%d^1",i); | |
SendClientMessage(AIPlay,C_NONE,C_BUYOBJECT,NULL,text); | |
g_free(text); | |
t@@ -354,9 +348,7 @@ void AIPayLoan(Player *AIPlay) { | |
prstr=pricetostr(AIPlay->Debt); | |
SendClientMessage(AIPlay,C_NONE,C_PAYLOAN,NULL,prstr); | |
g_free(prstr); | |
- g_print(_("Debt of %s paid off to loan shark\n"), | |
- (prstr=FormatPrice(AIPlay->Debt))); | |
- g_free(prstr); | |
+ dpg_print(_("Debt of %P paid off to loan shark\n"),AIPlay->Debt); | |
} | |
SendClientMessage(AIPlay,C_NONE,C_DONE,NULL,NULL); | |
} | |
diff --git a/src/curses_client.c b/src/curses_client.c | |
t@@ -501,7 +501,6 @@ static void GiveErrand(Player *Play) { | |
/* Prompts the user (player "Play") to give an errand to one of his/her */ | |
/* bitches. The decision is relayed to the server for implementation. */ | |
int c,y; | |
- gchar *prstr; | |
GString *text; | |
Player *To; | |
t@@ -514,14 +513,14 @@ static void GiveErrand(Player *Play) { | |
mvaddstr(y++,1,text->str); | |
attrset(PromptAttr); | |
if (Play->Bitches.Carried>0) { | |
- g_string_sprintf(text, | |
- _(" S>py on another dealer (cost: %s)"), | |
- prstr=FormatPrice(Prices.Spy)); | |
- mvaddstr(y++,2,text->str); g_free(prstr); | |
- g_string_sprintf(text, | |
- _(" T>ip off the cops to another dealer (cost: %s)"), | |
- prstr=FormatPrice(Prices.Tipoff)); | |
- mvaddstr(y++,2,text->str); g_free(prstr); | |
+ dpg_string_sprintf(text, | |
+ _(" S>py on another dealer (cost: %P)"), | |
+ Prices.Spy); | |
+ mvaddstr(y++,2,text->str); | |
+ dpg_string_sprintf(text, | |
+ _(" T>ip off the cops to another dealer (cost: %P)"), | |
+ Prices.Tipoff); | |
+ mvaddstr(y++,2,text->str); | |
mvaddstr(y++,2,_(" G>et stuffed")); | |
} | |
if (Play->Flags&SPYINGON) { | |
t@@ -792,16 +791,15 @@ void GunShop(Player *Play) { | |
/* Allows player "Play" to buy and sell guns interactively. Passes the */ | |
/* decisions on to the server for sanity checking and implementation. */ | |
int i,c,c2; | |
- gchar *text,*prstr; | |
+ gchar *text; | |
print_status(Play,0); | |
attrset(TextAttr); | |
clear_bottom(); | |
for (i=0;i<NumGun;i++) { | |
- text=g_strdup_printf("%c. %-22s %12s",'A'+i,Gun[i].Name, | |
- prstr=FormatPrice(Gun[i].Price)); | |
- mvaddstr(17+i/2,(i%2)*40+1,text); | |
- g_free(prstr); g_free(text); | |
+ text=dpg_strdup_printf("%c. %-22tde %12P",'A'+i,Gun[i].Name, | |
+ Gun[i].Price); | |
+ mvaddstr(17+i/2,(i%2)*40+1,text); g_free(text); | |
} | |
while (1) { | |
text=_("Will you B>uy, S>ell, or L>eave? "); | |
t@@ -1123,7 +1121,6 @@ void print_status(Player *Play,char DispDrug) { | |
/* details. If "DispDrugs" is TRUE, displays the carried drugs on the */ | |
/* right hand side of the screen; if FALSE, displays the carried guns. */ | |
int i,c; | |
- gchar *prstr,*caps; | |
GString *text; | |
gchar *tfmt,**tstr; | |
t@@ -1167,21 +1164,16 @@ void print_status(Player *Play,char DispDrug) { | |
mvaddstr(1,Width/4-2,_("Stats")); | |
attrset(StatsAttr); | |
- g_string_sprintf(text,_("Cash %17s"),prstr=FormatPrice(Play->Cash)); | |
- g_free(prstr); | |
+ g_string_sprintf(text,_("Cash %17P"),Play->Cash); | |
mvaddstr(3,9,text->str); | |
- g_string_sprintf(text,"%-19s%3d",caps=InitialCaps(Names.Guns), | |
- TotalGunsCarried(Play)); | |
- g_free(caps); | |
+ dpg_string_sprintf(text,"%-19Tde%3d",Names.Guns,TotalGunsCarried(Play)); | |
mvaddstr(Network ? 4 : 5,9,text->str); | |
g_string_sprintf(text,_("Health %3d"),Play->Health); | |
mvaddstr(Network ? 5 : 7,9,text->str); | |
- g_string_sprintf(text,_("Bank %17s"),prstr=FormatPrice(Play->Bank)); | |
- g_free(prstr); | |
+ dpg_string_sprintf(text,_("Bank %17P"),Play->Bank); | |
mvaddstr(Network ? 6 : 9,9,text->str); | |
if (Play->Debt>0) attrset(DebtAttr); | |
- g_string_sprintf(text,_("Debt %17s"),prstr=FormatPrice(Play->Debt)); | |
- g_free(prstr); | |
+ dpg_string_sprintf(text,_("Debt %17P"),Play->Debt); | |
mvaddstr(Network ? 7 : 11,9,text->str); | |
attrset(TitleAttr); | |
if (WantAntique) g_string_sprintf(text,_("Space %6d"),Play->CoatSize); | |
t@@ -1383,7 +1375,7 @@ static void Curses_DoGame(Player *Play) { | |
/* dopewars is essentially server-driven, so this loop simply has to */ | |
/* make the screen look pretty, respond to user keypresses, and react */ | |
/* to messages from the server. */ | |
- gchar *buf,*OldName,*TalkMsg,*pt,*prstr; | |
+ gchar *buf,*OldName,*TalkMsg,*pt; | |
GString *text; | |
int i,c; | |
char IsCarrying; | |
t@@ -1458,9 +1450,8 @@ static void Curses_DoGame(Player *Play) { | |
i=-1; | |
for (c=0;c<NumDrugsHere;c++) { | |
if ((i=GetNextDrugIndex(i,Play))==-1) break; | |
- g_string_sprintf(text,"%c. %-10s %8s",'A'+c,Drug[i].Name, | |
- prstr=FormatPrice(Play->Drugs[i].Price)); | |
- g_free(prstr); | |
+ dpg_string_sprintf(text,"%c. %-10tde %8P",'A'+c,Drug[i].Name, | |
+ Play->Drugs[i].Price); | |
mvaddstr(17+c/3,(c%3)*25+4,text->str); | |
} | |
attrset(PromptAttr); | |
diff --git a/src/dopewars.c b/src/dopewars.c | |
t@@ -40,6 +40,7 @@ | |
#include "dopeos.h" | |
#include "message.h" | |
#include "serverside.h" | |
+#include "tstring.h" | |
#include "AIPlayer.h" | |
int ClientSock,ListenSock; | |
t@@ -1256,7 +1257,7 @@ gboolean CheckMaxIndex(GScanner *scanner,int GlobalIndex… | |
void PrintConfigValue(int GlobalIndex,int StructIndex,gboolean IndexGiven, | |
GScanner *scanner) { | |
- gchar *prstr,*GlobalName; | |
+ gchar *GlobalName; | |
int i; | |
if (!CheckMaxIndex(scanner,GlobalIndex,StructIndex,IndexGiven)) return; | |
if (Globals[GlobalIndex].NameStruct[0]) { | |
t@@ -1267,10 +1268,8 @@ void PrintConfigValue(int GlobalIndex,int StructIndex,g… | |
g_print(_("%s is %d\n"),GlobalName, | |
*((int *)GetGlobalPointer(GlobalIndex,StructIndex))); | |
} else if (Globals[GlobalIndex].PriceVal) { | |
- prstr=FormatPrice(*((price_t *)GetGlobalPointer(GlobalIndex, | |
- StructIndex))); | |
- g_print(_("%s is %s\n"),GlobalName,prstr); | |
- g_free(prstr); | |
+ dpg_print(_("%s is %P\n"),GlobalName, | |
+ *((price_t *)GetGlobalPointer(GlobalIndex,StructIndex))); | |
} else if (Globals[GlobalIndex].StringVal) { | |
g_print(_("%s is \"%s\"\n"),GlobalName, | |
*((gchar **)GetGlobalPointer(GlobalIndex,StructIndex))); | |
diff --git a/src/gtk_client.c b/src/gtk_client.c | |
t@@ -284,7 +284,7 @@ void SetSocketWriteTest(Player *Play,gboolean WriteTest) { | |
void HandleClientMessage(char *pt,Player *Play) { | |
char *Data,Code,AICode,DisplayMode; | |
Player *From,*tmp; | |
- gchar *text,*prstr; | |
+ gchar *text; | |
gboolean Handled; | |
GtkWidget *MenuItem; | |
GSList *list; | |
t@@ -363,16 +363,14 @@ void HandleClientMessage(char *pt,Player *Play) { | |
case C_ENDLIST: | |
MenuItem=gtk_item_factory_get_widget(ClientData.Menu, | |
"<main>/Errands/Spy"); | |
- prstr=FormatPrice(Prices.Spy); | |
- text=g_strdup_printf(_("_Spy\t(%s)"),prstr); | |
+ text=dpg_strdup_printf(_("_Spy\t(%P)"),Prices.Spy); | |
gtk_label_parse_uline(GTK_LABEL(GTK_BIN(MenuItem)->child),text); | |
- g_free(text); g_free(prstr); | |
- prstr=FormatPrice(Prices.Tipoff); | |
- text=g_strdup_printf(_("_Tipoff\t(%s)"),prstr); | |
+ g_free(text); | |
+ text=dpg_strdup_printf(_("_Tipoff\t(%P)"),Prices.Tipoff); | |
MenuItem=gtk_item_factory_get_widget(ClientData.Menu, | |
"<main>/Errands/Tipoff"); | |
gtk_label_parse_uline(GTK_LABEL(GTK_BIN(MenuItem)->child),text); | |
- g_free(text); g_free(prstr); | |
+ g_free(text); | |
break; | |
case C_UPDATE: | |
if (From==&Noone) { | |
t@@ -684,7 +682,7 @@ void UpdateInventory(struct InventoryWidgets *Inven, | |
gint i,row,selectrow[2]; | |
gpointer rowdata; | |
price_t price; | |
- gchar *titles[2],*prstr; | |
+ gchar *titles[2]; | |
gboolean CanBuy=FALSE,CanSell=FALSE,CanDrop=FALSE; | |
GList *glist[2],*selection; | |
GtkCList *clist[2]; | |
t@@ -740,9 +738,8 @@ void UpdateInventory(struct InventoryWidgets *Inven, | |
if (Objects[i].Carried > 0) { | |
if (price>0) CanSell=TRUE; else CanDrop=TRUE; | |
if (HaveAbility(ClientData.Play,A_DRUGVALUE)) { | |
- prstr=FormatPrice(Objects[i].TotalValue/Objects[i].Carried); | |
- titles[1] = g_strdup_printf("%d @ %s",Objects[i].Carried,prstr); | |
- g_free(prstr); | |
+ titles[1] = dpg_strdup_printf("%d @ %P",Objects[i].Carried, | |
+ Objects[i].TotalValue/Objects[i].Carried); | |
} else { | |
titles[1] = g_strdup_printf("%d",Objects[i].Carried); | |
} | |
t@@ -863,7 +860,6 @@ static struct DealDiaStruct DealDialog; | |
static void UpdateDealDialog() { | |
GString *text; | |
- gchar *prstr; | |
GtkAdjustment *spin_adj; | |
gint DrugInd,CanDrop,CanCarry,CanAfford,MaxDrug; | |
Player *Play; | |
t@@ -872,14 +868,12 @@ static void UpdateDealDialog() { | |
DrugInd=DealDialog.DrugInd; | |
Play=ClientData.Play; | |
- prstr=FormatPrice(Play->Drugs[DrugInd].Price); | |
- g_string_sprintf(text,_("at %s"),prstr); | |
- g_free(prstr); | |
+ dpg_string_sprintf(text,_("at %P"),Play->Drugs[DrugInd].Price); | |
gtk_label_set_text(GTK_LABEL(DealDialog.cost),text->str); | |
CanDrop=Play->Drugs[DrugInd].Carried; | |
dpg_string_sprintf(text,_("You are currently carrying %d %tde"), | |
- Drug[DrugInd].Name,CanDrop); | |
+ CanDrop,Drug[DrugInd].Name); | |
gtk_label_set_text(GTK_LABEL(DealDialog.carrying),text->str); | |
CanCarry=Play->CoatSize; | |
t@@ -1952,14 +1946,22 @@ static void TransferOK(GtkWidget *widget,GtkWidget *di… | |
void TransferDialog(gboolean Debt) { | |
GtkWidget *dialog,*button,*label,*radio,*table,*vbox,*hbbox,*hsep,*entry; | |
- gchar *text,*prstr; | |
+ gchar *text; | |
GSList *group; | |
+ gchar *tfmt,**tstr; | |
dialog=gtk_window_new(GTK_WINDOW_DIALOG); | |
gtk_signal_connect(GTK_OBJECT(dialog),"destroy", | |
GTK_SIGNAL_FUNC(SendDoneMessage),NULL); | |
- gtk_window_set_title(GTK_WINDOW(dialog),Debt ? Names.LoanSharkName : | |
- Names.BankName); | |
+ if (Debt) { | |
+ tstring_fmt(&tfmt,&tstr, | |
+ _("**LoanShark window title** %Tde"),Names.LoanSharkName); | |
+ } else { | |
+ tstring_fmt(&tfmt,&tstr, | |
+ _("**BankName window title** %Tde"),Names.BankName); | |
+ } | |
+ gtk_window_set_title(GTK_WINDOW(dialog),tstr[0]); | |
+ tstring_free(tfmt,tstr); | |
gtk_container_set_border_width(GTK_CONTAINER(dialog),7); | |
gtk_window_set_modal(GTK_WINDOW(dialog),TRUE); | |
gtk_window_set_transient_for(GTK_WINDOW(dialog), | |
t@@ -1970,21 +1972,18 @@ void TransferDialog(gboolean Debt) { | |
gtk_table_set_row_spacings(GTK_TABLE(table),4); | |
gtk_table_set_col_spacings(GTK_TABLE(table),4); | |
- prstr=FormatPrice(ClientData.Play->Cash); | |
- text=g_strdup_printf(_("Cash: %s"),prstr); | |
+ text=dpg_strdup_printf(_("Cash: %P"),ClientData.Play->Cash); | |
label=gtk_label_new(text); | |
- g_free(text); g_free(prstr); | |
+ g_free(text); | |
gtk_table_attach_defaults(GTK_TABLE(table),label,0,3,0,1); | |
if (Debt) { | |
- prstr=FormatPrice(ClientData.Play->Debt); | |
- text=g_strdup_printf(_("Debt: %s"),prstr); | |
+ text=dpg_strdup_printf(_("Debt: %P"),ClientData.Play->Debt); | |
} else { | |
- prstr=FormatPrice(ClientData.Play->Bank); | |
- text=g_strdup_printf(_("Bank: %s"),prstr); | |
+ text=dpg_strdup_printf(_("Bank: %P"),ClientData.Play->Bank); | |
} | |
label=gtk_label_new(text); | |
- g_free(text); g_free(prstr); | |
+ g_free(text); | |
gtk_table_attach_defaults(GTK_TABLE(table),label,0,3,1,2); | |
gtk_object_set_data(GTK_OBJECT(dialog),"debt",GINT_TO_POINTER(Debt)); | |
diff --git a/src/message.c b/src/message.c | |
t@@ -1054,8 +1054,7 @@ void FormatFightMessage(Player *To,GString *text, | |
_("armed to the teeth"); | |
if (DefendName[0]) { | |
dpg_string_sprintfa(text,_("%s arrives with %d %tde, %s!"), | |
- Names.Bitches, | |
- DefendName,Bitches,Armament); | |
+ DefendName,Bitches,Names.Bitches,Armament); | |
} | |
break; | |
case F_STAND: | |
t@@ -1095,8 +1094,7 @@ void FormatFightMessage(Player *To,GString *text, | |
AttackName,DefendName); | |
} else if (BitchesKilled) { | |
dpg_string_sprintfa(text,_("%s shoots at %s and kills a %tde!"), | |
- Names.Bitch, | |
- AttackName,DefendName); | |
+ AttackName,DefendName,Names.Bitch); | |
} else { | |
g_string_sprintfa(text,_("%s shoots at %s."), | |
AttackName,DefendName); | |
t@@ -1108,8 +1106,7 @@ void FormatFightMessage(Player *To,GString *text, | |
} else if (BitchesKilled) { | |
dpg_string_sprintfa(text, | |
_("%s shoots at you... and kills a %tde!"), | |
- Names.Bitch, | |
- AttackName); | |
+ AttackName,Names.Bitch); | |
} else { | |
g_string_sprintfa(text,_("%s hits you, man!"),AttackName); | |
} | |
t@@ -1118,8 +1115,7 @@ void FormatFightMessage(Player *To,GString *text, | |
g_string_sprintfa(text,_("You killed %s!"),DefendName); | |
} else if (BitchesKilled) { | |
dpg_string_sprintfa(text,_("You hit %s, and killed a %tde!"), | |
- Names.Bitch, | |
- DefendName); | |
+ DefendName,Names.Bitch); | |
} else { | |
g_string_sprintfa(text,_("You hit %s!"),DefendName); | |
} | |
diff --git a/src/serverside.c b/src/serverside.c | |
t@@ -1012,7 +1012,6 @@ void SendEvent(Player *To) { | |
gchar *text; | |
Player *Play; | |
GSList *list; | |
- gchar *prstr; | |
if (!To) return; | |
if (To->EventNum==E_MAX) To->EventNum=E_NONE; | |
t@@ -1047,8 +1046,8 @@ void SendEvent(Player *To) { | |
else j=brandom(0,NUMDISCOVER-1); | |
text=dpg_strdup_printf( | |
_("One of your %tde was spying for %s.^The spy %s!"), | |
- Names.Bitches, | |
- GetPlayerName(To->SpyList.Data[i].Play),_(Discover[j])… | |
+ Names.Bitches,GetPlayerName(To->SpyList.Data[i].Play), | |
+ _(Discover[j])); | |
if (j!=DEFECT) LoseBitch(To,NULL,NULL); | |
SendPlayerData(To); | |
SendPrintMessage(NULL,C_NONE,To,text); | |
t@@ -1127,12 +1126,11 @@ void SendEvent(Player *To) { | |
case E_HIREBITCH: | |
if (To->IsAt+1==RoughPubLoc && !WantAntique) { | |
To->Bitches.Price=brandom(Bitch.MinPrice,Bitch.MaxPrice); | |
- text=g_strdup_printf( | |
- _("YN^^Would you like to hire a %tde for %s?"), | |
- Names.Bitch, | |
- prstr=FormatPrice(To->Bitches.Price)); | |
+ text=dpg_strdup_printf( | |
+ _("YN^^Would you like to hire a %tde for %P?"), | |
+ Names.Bitch,To->Bitches.Price); | |
SendQuestion(NULL,C_ASKBITCH,To,text); | |
- g_free(text); g_free(prstr); | |
+ g_free(text); | |
return; | |
} | |
break; | |
t@@ -1554,20 +1552,18 @@ int OfferObject(Player *To,char ForceBitch) { | |
/* TRUE, then a bitch is definitely offered. Returns 0 if the client */ | |
/* can advance immediately to the next state, 1 otherwise. */ | |
int ObjNum; | |
- gchar *prstr,*text=NULL; | |
+ gchar *text=NULL; | |
if (brandom(0,100)<50 || ForceBitch) { | |
if (WantAntique) { | |
To->Bitches.Price=brandom(MINTRENCHPRICE,MAXTRENCHPRICE); | |
- text=g_strdup_printf(_("Would you like to buy a bigger trenchcoat " | |
- "for %s?"),prstr=FormatPrice(To->Bitches.Price)); | |
- g_free(prstr); | |
+ text=dpg_strdup_printf(_("Would you like to buy a bigger trenchcoat " | |
+ "for %P?"),To->Bitches.Price); | |
} else { | |
To->Bitches.Price=brandom(Bitch.MinPrice,Bitch.MaxPrice)/10l; | |
- text=g_strdup_printf(_("YN^Hey dude! I'll help carry your %s for a " | |
- "mere %s. Yes or no?"),Names.Drugs, | |
- prstr=FormatPrice(To->Bitches.Price)); | |
- g_free(prstr); | |
+ text=dpg_strdup_printf( | |
+ _("YN^Hey dude! I'll help carry your %tde for a " | |
+ "mere %P. Yes or no?"),Names.Drugs,To->Bitches.Price); | |
} | |
SendQuestion(NULL,C_ASKBITCH,To,text); | |
g_free(text); | |
t@@ -1576,10 +1572,8 @@ int OfferObject(Player *To,char ForceBitch) { | |
ObjNum=brandom(0,NumGun); | |
To->Guns[ObjNum].Price=Gun[ObjNum].Price/10; | |
if (Gun[ObjNum].Space>To->CoatSize) return 0; | |
- text=g_strdup_printf(_("YN^Would you like to buy a %s for %s?"), | |
- Gun[ObjNum].Name, | |
- prstr=FormatPrice(To->Guns[ObjNum].Price)); | |
- g_free(prstr); | |
+ text=dpg_strdup_printf(_("YN^Would you like to buy a %tde for %P?"), | |
+ Gun[ObjNum].Name,To->Guns[ObjNum].Price); | |
SendQuestion(NULL,C_ASKGUN,To,text); | |
g_free(text); | |
return 1; | |
diff --git a/src/tstring.c b/src/tstring.c | |
t@@ -20,6 +20,7 @@ | |
#include <stdio.h> | |
+#include <string.h> | |
#include <stdarg.h> | |
#ifdef HAVE_CONFIG_H | |
t@@ -31,6 +32,16 @@ | |
#include "message.h" | |
#include "tstring.h" | |
+typedef struct _FmtData { | |
+ union { | |
+ int IntVal; | |
+ price_t PriceVal; | |
+ char CharVal; | |
+ char *StrVal; | |
+ } data; | |
+ char Type; | |
+} FmtData; | |
+ | |
gchar *GetTranslatedString(gchar *str,gchar *code,gboolean Caps) { | |
gchar *dstr,*pt,*tstr,*Default,*tcode; | |
t@@ -109,137 +120,161 @@ void tstring_free(gchar *tformat,gchar **tstrings) { | |
g_free(tstrings); | |
} | |
-void GetNextFormat(int Index,gchar *str,int *StartPos, | |
- int *EndPos,int *ArgNum,char *Code,gboolean *Caps) { | |
- int anum; | |
- *StartPos=*EndPos=*ArgNum=0; | |
+void GetNextFormat(int *Index,gchar *str,int *StartPos, | |
+ int *EndPos,int *FmtPos,gchar *Type,int *ArgNum,int *Wid, | |
+ int *Prec,char *Code) { | |
+ int anum,wid,prec,i; | |
+ gchar type; | |
+ *StartPos=-1; | |
+ *EndPos=*FmtPos=*ArgNum=*Wid=*Prec=0; | |
+ *Type=0; | |
Code[0]=0; | |
- anum=0; | |
- while (str[Index]) { | |
- if (str[Index]=='%') { | |
- *StartPos=*EndPos=Index++; | |
- while (str[Index]>='0' && str[Index]<='9') { | |
- anum=anum*10+str[Index]-'0'; | |
- Index++; | |
- } | |
- if (str[Index]=='$') { | |
- *EndPos=Index++; *ArgNum=anum; | |
- } | |
- if ((str[Index]=='T' || str[Index]=='t') && Index+2<strlen(str)) { | |
- *Caps=(str[Index]=='T'); | |
- Code[0]=str[Index+1]; | |
- Code[1]=str[Index+2]; | |
- Code[2]=0; | |
- *EndPos=Index+2; | |
- } | |
- return; | |
- } else Index++; | |
- } | |
-} | |
- | |
-void GetNextTString(gchar *str,int index,gchar *Code,gboolean *Caps, | |
- int *NumArg,int *StartPos,int *EndPos) { | |
- int i; | |
- *StartPos=*EndPos=0; | |
- i=index; | |
+ anum=wid=prec=0; | |
+ i=*Index; | |
while (str[i]) { | |
if (str[i]=='%') { | |
- i++; | |
- if ((str[i]=='T' || str[i]=='t') | |
- && i+2<strlen(str)) { | |
- (*NumArg)++; | |
- *StartPos=i-1; | |
- *Caps = (str[i]=='T'); | |
+ *StartPos=*EndPos=i++; | |
+ while (strchr("#0- +'",str[i])) i++; /* Skip flag characters */ | |
+ while (str[i]>='0' && str[i]<='9') wid=wid*10+str[i++]-'0'; | |
+ if (str[i]=='$') { | |
+ *EndPos=i; | |
+ i++; anum=wid; wid=0; | |
+ while (strchr("#0- +'",str[i])) i++; /* Skip flag characters */ | |
+ while (str[i]>='0' && str[i]<='9') wid=wid*10+str[i++]-'0'; | |
+ } | |
+ if (str[i]=='.') { | |
+ i++; | |
+ while (str[i]>='0' && str[i]<='9') prec=prec*10+str[i++]-'0'; | |
+ } | |
+ *FmtPos=i; | |
+ type=str[i]; | |
+ if ((type=='T' || type=='t') && i+2<strlen(str)) { | |
Code[0]=str[i+1]; | |
Code[1]=str[i+2]; | |
- Code[2]='\0'; | |
+ Code[2]=0; | |
i+=3; | |
- *EndPos=i; | |
- return; | |
- } | |
+ } else i++; | |
+ *ArgNum=anum; *Wid=wid; *Prec=prec; *Index=i; *Type=type; | |
+ return; | |
} else i++; | |
} | |
+ *Index=i; | |
} | |
-int SkipNextTString(gchar *str,int index) { | |
- gchar Code[3]; | |
- gboolean Caps; | |
- int NumArg,StartPos,EndPos; | |
- GetNextTString(str,index,Code,&Caps,&NumArg,&StartPos,&EndPos); | |
- return EndPos; | |
-} | |
+gchar *HandleTFmt(gchar *format, va_list va) { | |
+ int i,StrInd,StartPos,EndPos,FmtPos,ArgNum,DefaultArgNum,Wid,Prec; | |
+ char Code[3],Type; | |
+ gchar *retstr,*fstr; | |
+ GString *string,*tmpfmt; | |
+ GArray *arr; | |
+ FmtData *fdat; | |
-void SubstNextTString(GString *string,int *NumArg,GPtrArray *strs) { | |
- gchar Code[3]; | |
- gboolean Caps; | |
- int StartPos,EndPos; | |
- gchar *str,*tstr; | |
- | |
- GetNextTString(string->str,0,Code,&Caps,NumArg,&StartPos,&EndPos); | |
- if (EndPos!=0 && *NumArg>=1 && *NumArg<=strs->len) { | |
- str=(gchar *)g_ptr_array_index(strs,*NumArg-1); | |
- tstr=GetTranslatedString(str,Code,Caps); | |
- g_string_erase(string,StartPos,EndPos-StartPos); | |
- g_string_insert(string,StartPos,tstr); | |
- g_free(tstr); | |
- } | |
-} | |
+ string=g_string_new(""); | |
+ tmpfmt=g_string_new(""); | |
-gchar *HandleTFmt(gchar *format, va_list args) { | |
- GString *string; | |
- gchar *retstr; | |
- GPtrArray *tstrs; | |
- int i,numtstr,NumArg; | |
- | |
- string=g_string_new(format); | |
- tstrs=g_ptr_array_new(); | |
- i=numtstr=0; | |
- while (1) { | |
- i=SkipNextTString(string->str,i); | |
- if (i!=0) numtstr++; else break; | |
+ arr=g_array_new(FALSE,TRUE,sizeof(FmtData)); | |
+ i=DefaultArgNum=0; | |
+ while (i<strlen(format)) { | |
+ GetNextFormat(&i,format,&StartPos,&EndPos,&FmtPos,&Type,&ArgNum, | |
+ &Wid,&Prec,Code); | |
+ if (StartPos==-1) break; | |
+ if (ArgNum==0) ArgNum=++DefaultArgNum; | |
+ if (ArgNum>arr->len) { | |
+ g_array_set_size(arr,ArgNum); | |
+ } | |
+ g_array_index(arr,FmtData,ArgNum-1).Type=Type; | |
} | |
- for (i=0;i<numtstr;i++) { | |
- g_ptr_array_add(tstrs,(gpointer)va_arg(args,char *)); | |
+ for (i=0;i<arr->len;i++) { | |
+ fdat=&g_array_index(arr,FmtData,i); | |
+ switch(fdat->Type) { | |
+ case '\0': | |
+ g_error("Incomplete format string!"); break; | |
+ case 'd': | |
+ fdat->data.IntVal=va_arg(va,int); break; | |
+ case 'P': | |
+ fdat->data.PriceVal=va_arg(va,price_t); break; | |
+ case 'c': | |
+ fdat->data.CharVal=(char)va_arg(va,int); break; | |
+ case 's': case 't': case 'T': | |
+ fdat->data.StrVal=va_arg(va,char *); break; | |
+ default: | |
+ g_error("Unknown format type %c!",fdat->Type); | |
+ } | |
} | |
- NumArg=0; | |
- for (i=0;i<numtstr;i++) { | |
- SubstNextTString(string,&NumArg,tstrs); | |
+ i=DefaultArgNum=0; | |
+ while (i<strlen(format)) { | |
+ StrInd=i; | |
+ GetNextFormat(&i,format,&StartPos,&EndPos,&FmtPos,&Type,&ArgNum, | |
+ &Wid,&Prec,Code); | |
+ if (StartPos==-1) { | |
+ g_string_append(string,&format[StrInd]); break; | |
+ } | |
+ while (StrInd<StartPos) g_string_append_c(string,format[StrInd++]); | |
+ if (ArgNum==0) ArgNum=++DefaultArgNum; | |
+ g_string_assign(tmpfmt,"%"); | |
+ EndPos++; | |
+ while (EndPos<FmtPos) g_string_append_c(tmpfmt,format[EndPos++]); | |
+ if (Type=='T' || Type=='t' || Type=='P') g_string_append_c(tmpfmt,'s'); | |
+ else g_string_append_c(tmpfmt,Type); | |
+ fdat=&g_array_index(arr,FmtData,ArgNum-1); | |
+ if (Type!=fdat->Type) g_error("Unmatched types!"); | |
+ switch(Type) { | |
+ case 'd': | |
+ g_string_sprintfa(string,tmpfmt->str,fdat->data.IntVal); break; | |
+ case 'c': | |
+ g_string_sprintfa(string,tmpfmt->str,fdat->data.CharVal); break; | |
+ case 'P': | |
+ fstr=FormatPrice(fdat->data.PriceVal); | |
+ g_string_sprintfa(string,tmpfmt->str,fstr); g_free(fstr); break; | |
+ case 't': case 'T': | |
+ fstr=GetTranslatedString(fdat->data.StrVal,Code,Type=='T'); | |
+ g_string_sprintfa(string,tmpfmt->str,fstr); g_free(fstr); break; | |
+ case 's': | |
+ g_string_sprintfa(string,tmpfmt->str,fdat->data.StrVal); break; | |
+ } | |
} | |
retstr=string->str; | |
- g_ptr_array_free(tstrs,FALSE); | |
+ g_array_free(arr,TRUE); | |
g_string_free(string,FALSE); | |
+ g_string_free(tmpfmt,TRUE); | |
return retstr; | |
} | |
+void dpg_print(gchar *format, ...) { | |
+ va_list ap; | |
+ gchar *retstr; | |
+ va_start(ap,format); | |
+ retstr=HandleTFmt(format,ap); | |
+ va_end(ap); | |
+ g_print(retstr); | |
+ g_free(retstr); | |
+} | |
+ | |
gchar *dpg_strdup_printf(gchar *format, ...) { | |
va_list ap; | |
- gchar *newfmt,*retstr; | |
+ gchar *retstr; | |
va_start(ap,format); | |
- newfmt=HandleTFmt(format,ap); | |
- retstr=g_strdup_vprintf(newfmt,ap); | |
- g_free(newfmt); | |
+ retstr=HandleTFmt(format,ap); | |
va_end(ap); | |
return retstr; | |
} | |
void dpg_string_sprintf(GString *string, gchar *format, ...) { | |
va_list ap; | |
- gchar *newfmt,*retstr; | |
+ gchar *newstr; | |
va_start(ap,format); | |
- newfmt=HandleTFmt(format,ap); | |
- retstr=g_strdup_vprintf(newfmt,ap); | |
- g_string_assign(string,retstr); | |
- g_free(newfmt); g_free(retstr); | |
+ newstr=HandleTFmt(format,ap); | |
+ g_string_assign(string,newstr); | |
+ g_free(newstr); | |
va_end(ap); | |
} | |
void dpg_string_sprintfa(GString *string, gchar *format, ...) { | |
va_list ap; | |
- gchar *newfmt,*retstr; | |
+ gchar *newstr; | |
va_start(ap,format); | |
- newfmt=HandleTFmt(format,ap); | |
- retstr=g_strdup_vprintf(newfmt,ap); | |
- g_string_append(string,retstr); | |
- g_free(newfmt); g_free(retstr); | |
+ newstr=HandleTFmt(format,ap); | |
+ g_string_append(string,newstr); | |
+ g_free(newstr); | |
va_end(ap); | |
} | |
diff --git a/src/tstring.h b/src/tstring.h | |
t@@ -30,6 +30,7 @@ | |
void tstring_fmt(gchar **tformat,gchar ***tstrings,char *OrigFormat, ...); | |
void tstring_free(gchar *tformat,gchar **tstrings); | |
+void dpg_print(gchar *format, ...); | |
gchar *dpg_strdup_printf(gchar *format, ...); | |
void dpg_string_sprintf(GString *string, gchar *format, ...); | |
void dpg_string_sprintfa(GString *string, gchar *format, ...); | |
diff --git a/src/win32_client.c b/src/win32_client.c | |
t@@ -116,31 +116,21 @@ static void DisplayStats(Player *Play,struct STATS *Stat… | |
g_string_sprintf(text,"Space available: %d",Play->CoatSize); | |
SetWindowText(Stats->Space,text->str); | |
- prstr=FormatPrice(Play->Cash); | |
- g_string_sprintf(text,"Cash: %s",prstr); | |
+ dpg_string_sprintf(text,"Cash: %P",Play->Cash); | |
SetWindowText(Stats->Cash,text->str); | |
- g_free(prstr); | |
- prstr=FormatPrice(Play->Debt); | |
- g_string_sprintf(text,"Debt: %s",prstr); | |
+ dpg_string_sprintf(text,"Debt: %P",Play->Debt); | |
SetWindowText(Stats->Debt,text->str); | |
- g_free(prstr); | |
- prstr=FormatPrice(Play->Bank); | |
- g_string_sprintf(text,"Bank: %s",prstr); | |
+ dpg_string_sprintf(text,"Bank: %P",Play->Bank); | |
SetWindowText(Stats->Bank,text->str); | |
- g_free(prstr); | |
- caps=InitialCaps(Names.Guns); | |
- g_string_sprintf(text,"%s: %d",caps,TotalGunsCarried(Play)); | |
+ dpg_string_sprintf(text,"%Tde: %d",Names.Guns,TotalGunsCarried(Play)); | |
SetWindowText(Stats->Guns,text->str); | |
- g_free(caps); | |
if (!WantAntique) { | |
- caps=InitialCaps(Names.Bitches); | |
- g_string_sprintf(text,"%s: %d",caps,Play->Bitches.Carried); | |
+ dpg_string_sprintf(text,"%Tde: %d",Names.Bitches,Play->Bitches.Carried); | |
SetWindowText(Stats->Bitches,text->str); | |
- g_free(caps); | |
} else SetWindowText(Stats->Bitches,""); | |
g_string_sprintf(text,"Health: %d",Play->Health); | |
t@@ -192,13 +182,12 @@ void UpdateInventory(HWND HereList,HWND CarriedList, | |
} | |
if (HereList && price>0) { | |
CanBuy=TRUE; | |
- prstr=FormatPrice(price); | |
- text=g_strdup_printf("%s\t%s",name,prstr); | |
+ text=dpg_strdup_printf("%s\t%P",name,price); | |
addresult=SendMessage(HereList,LB_ADDSTRING,0,(LPARAM)text); | |
if (addresult>=0 && addresult<NumObjects) { | |
SendMessage(HereList,LB_SETITEMDATA,(WPARAM)addresult,(LPARAM)i); | |
} | |
- g_free(text); g_free(prstr); | |
+ g_free(text); | |
} | |
if (Objects[i].Carried>0) { | |
if (price>0) CanSell=TRUE; else CanDrop=TRUE; | |
t@@ -221,15 +210,13 @@ static void SetErrandMenus(HWND hwnd) { | |
menu=GetMenu(hwnd); | |
if (!menu) return; | |
- prstr=FormatPrice(Prices.Spy); | |
- text=g_strdup_printf("&Spy\t(%s)",prstr); | |
+ text=dpg_strdup_printf("&Spy\t(%P)",Prices.Spy); | |
ModifyMenu(menu,ID_SPY,MF_BYCOMMAND | MF_STRING,ID_SPY,text); | |
- g_free(text); g_free(prstr); | |
+ g_free(text); | |
- prstr=FormatPrice(Prices.Tipoff); | |
- text=g_strdup_printf("&Tipoff\t(%s)",prstr); | |
+ text=dpg_strdup_printf("&Tipoff\t(%P)",Prices.Tipoff); | |
ModifyMenu(menu,ID_TIPOFF,MF_BYCOMMAND | MF_STRING,ID_TIPOFF,text); | |
- g_free(text); g_free(prstr); | |
+ g_free(text); | |
DrawMenuBar(hwnd); | |
} | |
t@@ -447,9 +434,7 @@ static void UpdateDealDialog(HWND hwnd,LONG DealType,int D… | |
CanDrop=Play->Drugs[DrugInd].Carried; | |
CanCarry=Play->CoatSize; | |
- prstr=FormatPrice(Play->Drugs[DrugInd].Price); | |
- g_string_sprintf(text,"at %s",prstr); | |
- g_free(prstr); | |
+ dpg_string_sprintf(text,"at %P",Play->Drugs[DrugInd].Price); | |
SetDlgItemText(hwnd,ST_DEALPRICE,text->str); | |
g_string_sprintf(text,"You are currently carrying %d %s", | |
t@@ -773,20 +758,17 @@ BOOL CALLBACK TransferWndProc(HWND hwnd,UINT msg,UINT wP… | |
switch(msg) { | |
case WM_INITDIALOG: | |
Type=(char)lParam; | |
- prstr=FormatPrice(ClientData.Play->Cash); | |
- text=g_strdup_printf("Cash: %s",prstr); | |
+ text=dpg_strdup_printf("Cash: %P",ClientData.Play->Cash); | |
SetDlgItemText(hwnd,ST_MONEY,text); | |
g_free(text); g_free(prstr); | |
if (Type==C_BANK) { | |
CheckDlgButton(hwnd,RB_WITHDRAW,BST_CHECKED); | |
- prstr=FormatPrice(ClientData.Play->Bank); | |
- text=g_strdup_printf("Bank: %s",prstr); | |
+ text=dpg_strdup_printf("Bank: %P",ClientData.Play->Bank); | |
} else { | |
- prstr=FormatPrice(ClientData.Play->Debt); | |
- text=g_strdup_printf("Debt: %s",prstr); | |
+ text=dpg_strdup_printf("Debt: %P",ClientData.Play->Debt); | |
} | |
SetDlgItemText(hwnd,ST_BANK,text); | |
- g_free(text); g_free(prstr); | |
+ g_free(text); | |
return TRUE; | |
case WM_COMMAND: | |
if (HIWORD(wParam)==BN_CLICKED) switch(LOWORD(wParam)) { |