tAddition of a maximum value for integer configuration file variables. - vaccin… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 3246a0f16e74240421b047d76f53470c707621c6 | |
parent 4b2ee96bbcd2229edce28a0a259d334b622e9822 | |
Author: Ben Webb <[email protected]> | |
Date: Mon, 23 Jun 2003 11:26:47 +0000 | |
Addition of a maximum value for integer configuration file variables. | |
Diffstat: | |
M src/dopewars.c | 275 ++++++++++++++++-------------… | |
M src/dopewars.h | 2 +- | |
2 files changed, 144 insertions(+), 133 deletions(-) | |
--- | |
diff --git a/src/dopewars.c b/src/dopewars.c | |
t@@ -234,430 +234,435 @@ struct GLOBALS Globals[] = { | |
* be set in a dopewars configuration file, or in the server. See | |
* doc/configfile.html for more detailed explanations. */ | |
{&Port, NULL, NULL, NULL, NULL, "Port", N_("Network port to connect to"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 65535}, | |
{NULL, NULL, NULL, &HiScoreFile, NULL, "HiScoreFile", | |
- N_("Name of the high score file"), NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ N_("Name of the high score file"), NULL, NULL, 0, "", NULL, NULL, FALSE, | |
+ 0, 0}, | |
{NULL, NULL, NULL, &ServerName, NULL, "Server", | |
N_("Name of the server to connect to"), NULL, NULL, 0, "", NULL, | |
- NULL, FALSE, 0}, | |
+ NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &ServerMOTD, NULL, "ServerMOTD", | |
N_("Server's welcome message of the day"), NULL, NULL, 0, "", NULL, | |
- NULL, FALSE, 0}, | |
+ NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &BindAddress, NULL, "BindAddress", | |
N_("Network address for the server to listen on"), NULL, NULL, 0, "", | |
- NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, FALSE, 0, 0}, | |
#ifdef NETWORKING | |
{NULL, &UseSocks, NULL, NULL, NULL, "Socks.Active", | |
N_("TRUE if a SOCKS server should be used for networking"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
#ifndef CYGWIN | |
{NULL, &Socks.numuid, NULL, NULL, NULL, "Socks.NumUID", | |
N_("TRUE if numeric user IDs should be used for SOCKS4"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
#endif | |
{NULL, NULL, NULL, &Socks.user, NULL, "Socks.User", | |
N_("If not blank, the username to use for SOCKS4"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Socks.name, NULL, "Socks.Name", | |
N_("The hostname of a SOCKS server to use"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{&Socks.port, NULL, NULL, NULL, NULL, "Socks.Port", | |
N_("The port number of a SOCKS server to use"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 65535}, | |
{&Socks.version, NULL, NULL, NULL, NULL, "Socks.Version", | |
N_("The version of the SOCKS protocol to use (4 or 5)"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 4}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 4, 5}, | |
{NULL, NULL, NULL, &Socks.authuser, NULL, "Socks.Auth.User", | |
N_("Username for SOCKS5 authentication"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Socks.authpassword, NULL, "Socks.Auth.Password", | |
N_("Password for SOCKS5 authentication"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, &MetaServer.Active, NULL, NULL, NULL, "MetaServer.Active", | |
N_("TRUE if server should report to a metaserver"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &MetaServer.Name, NULL, "MetaServer.Name", | |
N_("Metaserver name to report/get server details to/from"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{&MetaServer.Port, NULL, NULL, NULL, NULL, "MetaServer.Port", | |
N_("Port for metaserver communication"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 65535}, | |
{NULL, NULL, NULL, &MetaServer.ProxyName, NULL, "MetaServer.ProxyName", | |
N_("Name of a proxy for metaserver communication"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{&MetaServer.ProxyPort, NULL, NULL, NULL, NULL, "MetaServer.ProxyPort", | |
N_("Port for communicating with the proxy server"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 65535}, | |
{NULL, NULL, NULL, &MetaServer.Path, NULL, "MetaServer.Path", | |
N_("Path of the script on the metaserver"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &MetaServer.LocalName, NULL, "MetaServer.LocalName", | |
N_("Preferred hostname of your server machine"), NULL, NULL, 0, "", | |
- NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &MetaServer.Password, NULL, "MetaServer.Password", | |
N_("Authentication for LocalName with the metaserver"), NULL, NULL, 0, | |
- "", NULL, NULL, FALSE, 0}, | |
+ "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &MetaServer.Comment, NULL, "MetaServer.Comment", | |
N_("Server description, reported to the metaserver"), NULL, NULL, 0, "", | |
- NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, FALSE, 0, 0}, | |
{NULL, &MetaServer.UseSocks, NULL, NULL, NULL, "MetaServer.UseSocks", | |
N_("If TRUE, use SOCKS for metaserver communication"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &MetaServer.authuser, NULL, "MetaServer.Auth.User", | |
N_("Username for HTTP Basic authentication"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &MetaServer.authpassword, NULL, | |
"MetaServer.Auth.Password", | |
N_("Password for HTTP Basic authentication"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &MetaServer.proxyuser, NULL, "MetaServer.Proxy.User", | |
N_("Username for HTTP Basic proxy authentication"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &MetaServer.proxypassword, NULL, | |
"MetaServer.Proxy.Password", | |
N_("Password for HTTP Basic proxy authentication"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
#endif /* NETWORKING */ | |
#ifdef CYGWIN | |
{NULL, &MinToSysTray, NULL, NULL, NULL, "MinToSysTray", | |
N_("If TRUE, the server minimizes to the System Tray"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
#else | |
{NULL, &Daemonize, NULL, NULL, NULL, "Daemonize", | |
N_("If TRUE, the server runs in the background"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &WebBrowser, NULL, "WebBrowser", | |
N_("The command used to start your web browser"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
#endif | |
{&NumTurns, NULL, NULL, NULL, NULL, "NumTurns", | |
N_("No. of game turns (if 0, game never ends)"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, -1}, | |
{&StartDate.day, NULL, NULL, NULL, NULL, "StartDate.Day", | |
N_("Day of the month on which the game starts"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 1, 31}, | |
{&StartDate.month, NULL, NULL, NULL, NULL, "StartDate.Month", | |
N_("Month in which the game starts"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 1, 12}, | |
{&StartDate.year, NULL, NULL, NULL, NULL, "StartDate.Year", | |
N_("Year in which the game starts"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, -1}, | |
{NULL, NULL, NULL, &Currency.Symbol, NULL, "Currency.Symbol", | |
N_("The currency symbol (e.g. $)"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, &Currency.Prefix, NULL, NULL, NULL, "Currency.Prefix", | |
N_("If TRUE, the currency symbol precedes prices"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Log.File, NULL, "Log.File", | |
N_("File to write log messages to"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{&Log.Level, NULL, NULL, NULL, NULL, "Log.Level", | |
N_("Controls the number of log messages produced"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 5}, | |
{NULL, NULL, NULL, &Log.Timestamp, NULL, "Log.Timestamp", | |
N_("strftime() format string for log timestamps"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, &Sanitized, NULL, NULL, NULL, "Sanitized", | |
- N_("Random events are sanitized"), NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ N_("Random events are sanitized"), NULL, NULL, 0, "", NULL, NULL, FALSE, | |
+ 0, 0}, | |
{NULL, &DrugValue, NULL, NULL, NULL, "DrugValue", | |
N_("TRUE if the value of bought drugs should be saved"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, &ConfigVerbose, NULL, NULL, NULL, "ConfigVerbose", | |
N_("Be verbose in processing config file"), NULL, NULL, 0, "", NULL, | |
- NULL, FALSE, 0}, | |
+ NULL, FALSE, 0, 0}, | |
{&NumLocation, NULL, NULL, NULL, NULL, "NumLocation", | |
N_("Number of locations in the game"), | |
(void **)(&Location), NULL, sizeof(struct LOCATION), "", NULL, | |
- ResizeLocations, FALSE, 1}, | |
+ ResizeLocations, FALSE, 1, -1}, | |
{&NumCop, NULL, NULL, NULL, NULL, "NumCop", | |
N_("Number of types of cop in the game"), | |
- (void **)(&Cop), NULL, sizeof(struct COP), "", NULL, ResizeCops, FALSE, 0}, | |
+ (void **)(&Cop), NULL, sizeof(struct COP), "", NULL, ResizeCops, FALSE, | |
+ 0, -1}, | |
{&NumGun, NULL, NULL, NULL, NULL, "NumGun", | |
N_("Number of guns in the game"), | |
- (void **)(&Gun), NULL, sizeof(struct GUN), "", NULL, ResizeGuns, FALSE, 0}, | |
+ (void **)(&Gun), NULL, sizeof(struct GUN), "", NULL, ResizeGuns, FALSE, | |
+ 0, -1}, | |
{&NumDrug, NULL, NULL, NULL, NULL, "NumDrug", | |
N_("Number of drugs in the game"), | |
(void **)(&Drug), NULL, sizeof(struct DRUG), "", NULL, ResizeDrugs, | |
- FALSE, 1}, | |
+ FALSE, 1, -1}, | |
{&LoanSharkLoc, NULL, NULL, NULL, NULL, "LoanShark", | |
- N_("Location of the Loan Shark"), NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ N_("Location of the Loan Shark"), NULL, NULL, 0, "", NULL, NULL, FALSE, | |
+ 0, 0}, | |
{&BankLoc, NULL, NULL, NULL, NULL, "Bank", N_("Location of the bank"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{&GunShopLoc, NULL, NULL, NULL, NULL, "GunShop", | |
N_("Location of the gun shop"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{&RoughPubLoc, NULL, NULL, NULL, NULL, "RoughPub", | |
N_("Location of the pub"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{&DebtInterest, NULL, NULL, NULL, NULL, "DebtInterest", | |
N_("Daily interest rate on the loan shark debt"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, -100}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, -100, -200}, | |
{&BankInterest, NULL, NULL, NULL, NULL, "BankInterest", | |
N_("Daily interest rate on your bank balance"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, -100}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, -100, -200}, | |
{NULL, NULL, NULL, &Names.LoanSharkName, NULL, "LoanSharkName", | |
- N_("Name of the loan shark"), NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ N_("Name of the loan shark"), NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Names.BankName, NULL, "BankName", | |
- N_("Name of the bank"), NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ N_("Name of the bank"), NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Names.GunShopName, NULL, "GunShopName", | |
- N_("Name of the gun shop"), NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ N_("Name of the gun shop"), NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Names.RoughPubName, NULL, "RoughPubName", | |
- N_("Name of the pub"), NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ N_("Name of the pub"), NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, &UseSounds, NULL, NULL, NULL, "UseSounds", | |
N_("TRUE if sounds should be enabled"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Sounds.FightHit, NULL, "Sounds.FightHit", | |
N_("Sound file played for a gun \"hit\""), NULL, NULL, 0, "", | |
- NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Sounds.FightMiss, NULL, "Sounds.FightMiss", | |
N_("Sound file played for a gun \"miss\""), NULL, NULL, 0, "", | |
- NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Sounds.FightReload, NULL, "Sounds.FightReload", | |
N_("Sound file played when guns are reloaded"), NULL, NULL, 0, "", | |
- NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Sounds.EnemyBitchKilled, NULL, "Sounds.EnemyBitchKilled", | |
N_("Sound file played when an enemy bitch/deputy is killed"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Sounds.BitchKilled, NULL, "Sounds.BitchKilled", | |
N_("Sound file played when one of your bitches is killed"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Sounds.EnemyKilled, NULL, "Sounds.EnemyKilled", | |
N_("Sound file played when another player or cop is killed"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Sounds.Killed, NULL, "Sounds.Killed", | |
N_("Sound file played when you are killed"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Sounds.EnemyFailFlee, NULL, "Sounds.EnemyFailFlee", | |
N_("Sound file played when a player tries to escape, but fails"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Sounds.FailFlee, NULL, "Sounds.FailFlee", | |
N_("Sound file played when you try to escape, but fail"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Sounds.EnemyFlee, NULL, "Sounds.EnemyFlee", | |
N_("Sound file played when a player successfully escapes"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Sounds.Flee, NULL, "Sounds.Flee", | |
N_("Sound file played when you successfully escape"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Sounds.Jet, NULL, "Sounds.Jet", | |
N_("Sound file played on arriving at a new location"), NULL, NULL, 0, "", | |
- NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Sounds.TalkToAll, NULL, "Sounds.TalkToAll", | |
N_("Sound file played when a player sends a public chat message"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Sounds.TalkPrivate, NULL, "Sounds.TalkPrivate", | |
N_("Sound file played when a player sends a private chat message"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Sounds.JoinGame, NULL, "Sounds.JoinGame", | |
N_("Sound file played when a player joins the game"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Sounds.LeaveGame, NULL, "Sounds.LeaveGame", | |
N_("Sound file played when a player leaves the game"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Sounds.StartGame, NULL, "Sounds.StartGame", | |
N_("Sound file played at the start of the game"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Sounds.EndGame, NULL, "Sounds.EndGame", | |
N_("Sound file played at the end of the game"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{&DrugSortMethod, NULL, NULL, NULL, NULL, "DrugSortMethod", | |
N_("Sort key for listing available drugs"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 1, 4}, | |
{&FightTimeout, NULL, NULL, NULL, NULL, "FightTimeout", | |
N_("No. of seconds in which to return fire"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, -1}, | |
{&IdleTimeout, NULL, NULL, NULL, NULL, "IdleTimeout", | |
N_("Players are disconnected after this many seconds"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, -1}, | |
{&ConnectTimeout, NULL, NULL, NULL, NULL, "ConnectTimeout", | |
N_("Time in seconds for connections to be made or broken"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, -1}, | |
{&MaxClients, NULL, NULL, NULL, NULL, "MaxClients", | |
N_("Maximum number of TCP/IP connections"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, -1}, | |
{&AITurnPause, NULL, NULL, NULL, NULL, "AITurnPause", | |
N_("Seconds between turns of AI players"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, -1}, | |
{NULL, NULL, &StartCash, NULL, NULL, "StartCash", | |
N_("Amount of cash that each player starts with"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, -1}, | |
{NULL, NULL, &StartDebt, NULL, NULL, "StartDebt", | |
N_("Amount of debt that each player starts with"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, -1}, | |
{NULL, NULL, NULL, &StaticLocation.Name, NULL, "Name", | |
N_("Name of each location"), (void **)(&Location), &StaticLocation, | |
- sizeof(struct LOCATION), "Location", &NumLocation, NULL, FALSE, 0}, | |
+ sizeof(struct LOCATION), "Location", &NumLocation, NULL, FALSE, 0, -1}, | |
{&(StaticLocation.PolicePresence), NULL, NULL, NULL, NULL, | |
"PolicePresence", | |
N_("Police presence at each location (%)"), | |
(void **)(&Location), &StaticLocation, | |
- sizeof(struct LOCATION), "Location", &NumLocation, NULL, FALSE, 0}, | |
+ sizeof(struct LOCATION), "Location", &NumLocation, NULL, FALSE, 0, 100}, | |
{&(StaticLocation.MinDrug), NULL, NULL, NULL, NULL, "MinDrug", | |
N_("Minimum number of drugs at each location"), | |
(void **)(&Location), &StaticLocation, | |
- sizeof(struct LOCATION), "Location", &NumLocation, NULL, FALSE, 1}, | |
+ sizeof(struct LOCATION), "Location", &NumLocation, NULL, FALSE, 1, -1}, | |
{&(StaticLocation.MaxDrug), NULL, NULL, NULL, NULL, "MaxDrug", | |
N_("Maximum number of drugs at each location"), | |
(void **)(&Location), &StaticLocation, | |
- sizeof(struct LOCATION), "Location", &NumLocation, NULL, FALSE, 1}, | |
+ sizeof(struct LOCATION), "Location", &NumLocation, NULL, FALSE, 1, -1}, | |
{&PlayerArmour, NULL, NULL, NULL, NULL, "PlayerArmour", | |
N_("% resistance to gunshots of each player"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 100}, | |
{&BitchArmour, NULL, NULL, NULL, NULL, "BitchArmour", | |
N_("% resistance to gunshots of each bitch"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 1}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 1, 100}, | |
{NULL, NULL, NULL, &StaticCop.Name, NULL, "Name", | |
N_("Name of each cop"), | |
(void **)(&Cop), &StaticCop, sizeof(struct COP), "Cop", &NumCop, | |
- NULL, FALSE, 0}, | |
+ NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &StaticCop.DeputyName, NULL, "DeputyName", | |
N_("Name of each cop's deputy"), | |
(void **)(&Cop), &StaticCop, sizeof(struct COP), "Cop", &NumCop, | |
- NULL, FALSE, 0}, | |
+ NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &StaticCop.DeputiesName, NULL, "DeputiesName", | |
N_("Name of each cop's deputies"), | |
(void **)(&Cop), &StaticCop, sizeof(struct COP), "Cop", &NumCop, | |
- NULL, FALSE, 0}, | |
+ NULL, FALSE, 0, 0}, | |
{&StaticCop.Armour, NULL, NULL, NULL, NULL, "Armour", | |
N_("% resistance to gunshots of each cop"), | |
(void **)(&Cop), &StaticCop, sizeof(struct COP), "Cop", &NumCop, | |
- NULL, FALSE, 1}, | |
+ NULL, FALSE, 1, 100}, | |
{&StaticCop.DeputyArmour, NULL, NULL, NULL, NULL, "DeputyArmour", | |
N_("% resistance to gunshots of each deputy"), | |
(void **)(&Cop), &StaticCop, sizeof(struct COP), "Cop", &NumCop, | |
- NULL, FALSE, 1}, | |
+ NULL, FALSE, 1, 100}, | |
{&StaticCop.AttackPenalty, NULL, NULL, NULL, NULL, "AttackPenalty", | |
N_("Attack penalty relative to a player"), | |
(void **)(&Cop), &StaticCop, sizeof(struct COP), "Cop", &NumCop, | |
- NULL, FALSE, 0}, | |
+ NULL, FALSE, 0, 100}, | |
{&StaticCop.DefendPenalty, NULL, NULL, NULL, NULL, "DefendPenalty", | |
N_("Defend penalty relative to a player"), | |
(void **)(&Cop), &StaticCop, sizeof(struct COP), "Cop", &NumCop, | |
- NULL, FALSE, 0}, | |
+ NULL, FALSE, 0, 100}, | |
{&StaticCop.MinDeputies, NULL, NULL, NULL, NULL, "MinDeputies", | |
N_("Minimum number of accompanying deputies"), | |
(void **)(&Cop), &StaticCop, sizeof(struct COP), "Cop", &NumCop, | |
- NULL, FALSE, 0}, | |
+ NULL, FALSE, 0, -1}, | |
{&StaticCop.MaxDeputies, NULL, NULL, NULL, NULL, "MaxDeputies", | |
N_("Maximum number of accompanying deputies"), | |
(void **)(&Cop), &StaticCop, sizeof(struct COP), "Cop", &NumCop, | |
- NULL, FALSE, 0}, | |
+ NULL, FALSE, 0, -1}, | |
{&StaticCop.GunIndex, NULL, NULL, NULL, NULL, "GunIndex", | |
N_("Zero-based index of the gun that cops are armed with"), | |
(void **)(&Cop), &StaticCop, sizeof(struct COP), "Cop", &NumCop, | |
- NULL, FALSE, 0}, | |
+ NULL, FALSE, 0, -1}, | |
{&StaticCop.CopGun, NULL, NULL, NULL, NULL, "CopGun", | |
N_("Number of guns that each cop carries"), | |
(void **)(&Cop), &StaticCop, sizeof(struct COP), "Cop", &NumCop, | |
- NULL, FALSE, 0}, | |
+ NULL, FALSE, 0, -1}, | |
{&StaticCop.DeputyGun, NULL, NULL, NULL, NULL, "DeputyGun", | |
N_("Number of guns that each deputy carries"), | |
(void **)(&Cop), &StaticCop, sizeof(struct COP), "Cop", &NumCop, | |
- NULL, FALSE, 0}, | |
+ NULL, FALSE, 0, -1}, | |
{NULL, NULL, NULL, &StaticDrug.Name, NULL, "Name", | |
N_("Name of each drug"), | |
(void **)(&Drug), &StaticDrug, | |
- sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE, 0}, | |
+ sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE, 0, 0}, | |
{NULL, NULL, &(StaticDrug.MinPrice), NULL, NULL, "MinPrice", | |
N_("Minimum normal price of each drug"), | |
(void **)(&Drug), &StaticDrug, | |
- sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE, 1}, | |
+ sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE, 1, -1}, | |
{NULL, NULL, &(StaticDrug.MaxPrice), NULL, NULL, "MaxPrice", | |
N_("Maximum normal price of each drug"), | |
(void **)(&Drug), &StaticDrug, | |
- sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE, 1}, | |
+ sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE, 1, -1}, | |
{NULL, &(StaticDrug.Cheap), NULL, NULL, NULL, "Cheap", | |
N_("TRUE if this drug can be specially cheap"), | |
(void **)(&Drug), &StaticDrug, | |
- sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE, 0}, | |
+ sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE, 0, 0}, | |
{NULL, &(StaticDrug.Expensive), NULL, NULL, NULL, "Expensive", | |
N_("TRUE if this drug can be specially expensive"), | |
(void **)(&Drug), &StaticDrug, | |
- sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE, 0}, | |
+ sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &StaticDrug.CheapStr, NULL, "CheapStr", | |
N_("Message displayed when this drug is specially cheap"), | |
(void **)(&Drug), &StaticDrug, | |
- sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE, 0}, | |
+ sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Drugs.ExpensiveStr1, NULL, "Drugs.ExpensiveStr1", | |
N_("Format string used for expensive drugs 50% of time"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Drugs.ExpensiveStr2, NULL, "Drugs.ExpensiveStr2", | |
N_("Format string used for expensive drugs 50% of time"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{&(Drugs.CheapDivide), NULL, NULL, NULL, NULL, "Drugs.CheapDivide", | |
N_("Divider for drug price when it's specially cheap"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 1}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 1, -1}, | |
{&(Drugs.ExpensiveMultiply), NULL, NULL, NULL, NULL, | |
"Drugs.ExpensiveMultiply", | |
N_("Multiplier for specially expensive drug prices"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 1}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 1, -1}, | |
{NULL, NULL, NULL, &StaticGun.Name, NULL, "Name", | |
N_("Name of each gun"), | |
(void **)(&Gun), &StaticGun, | |
- sizeof(struct GUN), "Gun", &NumGun, NULL, FALSE, 0}, | |
+ sizeof(struct GUN), "Gun", &NumGun, NULL, FALSE, 0, 0}, | |
{NULL, NULL, &(StaticGun.Price), NULL, NULL, "Price", | |
N_("Price of each gun"), | |
(void **)(&Gun), &StaticGun, | |
- sizeof(struct GUN), "Gun", &NumGun, NULL, FALSE, 0}, | |
+ sizeof(struct GUN), "Gun", &NumGun, NULL, FALSE, 0, 0}, | |
{&(StaticGun.Space), NULL, NULL, NULL, NULL, "Space", | |
N_("Space taken by each gun"), | |
(void **)(&Gun), &StaticGun, | |
- sizeof(struct GUN), "Gun", &NumGun, NULL, FALSE, 0}, | |
+ sizeof(struct GUN), "Gun", &NumGun, NULL, FALSE, 0, -1}, | |
{&(StaticGun.Damage), NULL, NULL, NULL, NULL, "Damage", | |
N_("Damage done by each gun"), | |
(void **)(&Gun), &StaticGun, | |
- sizeof(struct GUN), "Gun", &NumGun, NULL, FALSE, 0}, | |
+ sizeof(struct GUN), "Gun", &NumGun, NULL, FALSE, 0, -1}, | |
{NULL, NULL, NULL, &Names.Bitch, NULL, "Names.Bitch", | |
N_("Word used to denote a single \"bitch\""), NULL, NULL, 0, "", NULL, | |
- NULL, FALSE, 0}, | |
+ NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Names.Bitches, NULL, "Names.Bitches", | |
N_("Word used to denote two or more \"bitches\""), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Names.Gun, NULL, "Names.Gun", | |
N_("Word used to denote a single gun or equivalent"), NULL, NULL, 0, "", | |
- NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Names.Guns, NULL, "Names.Guns", | |
N_("Word used to denote two or more guns"), NULL, NULL, 0, "", NULL, | |
- NULL, FALSE, 0}, | |
+ NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Names.Drug, NULL, "Names.Drug", | |
N_("Word used to denote a single drug or equivalent"), NULL, NULL, 0, | |
- "", NULL, NULL, FALSE, 0}, | |
+ "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Names.Drugs, NULL, "Names.Drugs", | |
N_("Word used to denote two or more drugs"), NULL, NULL, 0, "", NULL, | |
- NULL, FALSE, 0}, | |
+ NULL, FALSE, 0, 0}, | |
{NULL, NULL, NULL, &Names.Date, NULL, "Names.Date", | |
N_("strftime() format string for displaying the game turn"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0}, | |
{NULL, NULL, &Prices.Spy, NULL, NULL, "Prices.Spy", | |
N_("Cost for a bitch to spy on the enemy"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, -1}, | |
{NULL, NULL, &Prices.Tipoff, NULL, NULL, "Prices.Tipoff", | |
N_("Cost for a bitch to tipoff the cops to an enemy"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, -1}, | |
{NULL, NULL, &Bitch.MinPrice, NULL, NULL, "Bitch.MinPrice", | |
N_("Minimum price to hire a bitch"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, -1}, | |
{NULL, NULL, &Bitch.MaxPrice, NULL, NULL, "Bitch.MaxPrice", | |
N_("Maximum price to hire a bitch"), | |
- NULL, NULL, 0, "", NULL, NULL, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0, -1}, | |
{NULL, NULL, NULL, NULL, &SubwaySaying, "SubwaySaying", | |
N_("List of things which you overhear on the subway"), | |
- NULL, NULL, 0, "", &NumSubway, ResizeSubway, FALSE, 0}, | |
+ NULL, NULL, 0, "", &NumSubway, ResizeSubway, FALSE, 0, 0}, | |
{&NumSubway, NULL, NULL, NULL, NULL, "NumSubwaySaying", | |
N_("Number of subway sayings"), | |
- NULL, NULL, 0, "", NULL, ResizeSubway, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, ResizeSubway, FALSE, 0, -1}, | |
{NULL, NULL, NULL, NULL, &Playing, "Playing", | |
N_("List of songs which you can hear playing"), | |
- NULL, NULL, 0, "", &NumPlaying, ResizePlaying, FALSE, 0}, | |
+ NULL, NULL, 0, "", &NumPlaying, ResizePlaying, FALSE, 0, 0}, | |
{&NumPlaying, NULL, NULL, NULL, NULL, "NumPlaying", | |
N_("Number of playing songs"), | |
- NULL, NULL, 0, "", NULL, ResizePlaying, FALSE, 0}, | |
+ NULL, NULL, 0, "", NULL, ResizePlaying, FALSE, 0, -1}, | |
{NULL, NULL, NULL, NULL, &StoppedTo, "StoppedTo", | |
N_("List of things which you can stop to do"), | |
- NULL, NULL, 0, "", &NumStoppedTo, ResizeStoppedTo, FALSE, 0}, | |
+ NULL, NULL, 0, "", &NumStoppedTo, ResizeStoppedTo, FALSE, 0, 0}, | |
{&NumStoppedTo, NULL, NULL, NULL, NULL, "NumStoppedTo", | |
N_("Number of things which you can stop to do"), | |
- NULL, NULL, 0, "", NULL, ResizeStoppedTo, FALSE, 0} | |
+ NULL, NULL, 0, "", NULL, ResizeStoppedTo, FALSE, 0, -1} | |
}; | |
const int NUMGLOB = sizeof(Globals) / sizeof(Globals[0]); | |
t@@ -2200,6 +2205,12 @@ static gboolean SetConfigValue(int GlobalIndex, int Str… | |
GlobalName, Globals[GlobalIndex].MinVal); | |
return FALSE; | |
} | |
+ if (Globals[GlobalIndex].MaxVal > Globals[GlobalIndex].MinVal | |
+ && IntVal > Globals[GlobalIndex].MaxVal) { | |
+ g_scanner_warn(scanner, _("%s can be no larger than %d - ignoring!"), | |
+ GlobalName, Globals[GlobalIndex].MaxVal); | |
+ return FALSE; | |
+ } | |
if (Globals[GlobalIndex].ResizeFunc) { | |
(*(Globals[GlobalIndex].ResizeFunc)) (IntVal); | |
/* Displayed, for example, when you set NumDrug=10 to allow | |
diff --git a/src/dopewars.h b/src/dopewars.h | |
t@@ -351,7 +351,7 @@ struct GLOBALS { | |
int *MaxIndex; | |
void (*ResizeFunc) (int NewNum); | |
gboolean Modified; | |
- int MinVal; | |
+ int MinVal, MaxVal; | |
}; | |
struct CMDLINE { |