tAll integer configuration file variables now have a minimum value; NumLocation and NumDrug can no longer be set to anything less than 1. - vaccinewars - be a doctor and try to vaccinate the world
(HTM) git clone git://src.adamsgaard.dk/vaccinewars
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 2aa302aa4c27973a0cfb782c1c1ff5c5b37f0f73
(DIR) parent ebbf53c779d9c989c286a27e1cf4daab3b731642
(HTM) Author: Ben Webb <ben@salilab.org>
Date: Sat, 6 Apr 2002 19:51:22 +0000
All integer configuration file variables now have a minimum value; NumLocation
and NumDrug can no longer be set to anything less than 1.
Diffstat:
M src/dopewars.c | 228 ++++++++++++++++---------------
M src/dopewars.h | 1 +
2 files changed, 119 insertions(+), 110 deletions(-)
---
(DIR) diff --git a/src/dopewars.c b/src/dopewars.c
t@@ -221,357 +221,358 @@ 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},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &HiScoreFile, NULL, "HiScoreFile",
- N_("Name of the high score file"), NULL, NULL, 0, "", NULL, NULL, FALSE},
+ N_("Name of the high score file"), NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &ServerName, NULL, "Server",
N_("Name of the server to connect to"), NULL, NULL, 0, "", NULL,
- NULL, FALSE},
+ NULL, FALSE, 0},
{NULL, NULL, NULL, &ServerMOTD, NULL, "ServerMOTD",
N_("Server's welcome message of the day"), NULL, NULL, 0, "", NULL,
- NULL, FALSE},
+ NULL, FALSE, 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},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 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},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 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},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &Socks.name, NULL, "Socks.Name",
N_("The hostname of a SOCKS server to use"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 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},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{&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},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 4},
{NULL, NULL, NULL, &Socks.authuser, NULL, "Socks.Auth.User",
N_("Username for SOCKS5 authentication"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &Socks.authpassword, NULL, "Socks.Auth.Password",
N_("Password for SOCKS5 authentication"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, &MetaServer.Active, NULL, NULL, NULL, "MetaServer.Active",
N_("TRUE if server should report to a metaserver"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 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},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{&MetaServer.Port, NULL, NULL, NULL, NULL, "MetaServer.Port",
N_("Port for metaserver communication"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &MetaServer.ProxyName, NULL, "MetaServer.ProxyName",
N_("Name of a proxy for metaserver communication"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{&MetaServer.ProxyPort, NULL, NULL, NULL, NULL, "MetaServer.ProxyPort",
N_("Port for communicating with the proxy server"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &MetaServer.Path, NULL, "MetaServer.Path",
N_("Path of the script on the metaserver"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &MetaServer.LocalName, NULL, "MetaServer.LocalName",
N_("Preferred hostname of your server machine"), NULL, NULL, 0, "",
- NULL, NULL, FALSE},
+ NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &MetaServer.Password, NULL, "MetaServer.Password",
N_("Authentication for LocalName with the metaserver"), NULL, NULL, 0,
- "", NULL, NULL, FALSE},
+ "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &MetaServer.Comment, NULL, "MetaServer.Comment",
N_("Server description, reported to the metaserver"), NULL, NULL, 0, "",
- NULL, NULL, FALSE},
+ NULL, NULL, FALSE, 0},
{NULL, &MetaServer.UseSocks, NULL, NULL, NULL, "MetaServer.UseSocks",
N_("If TRUE, use SOCKS for metaserver communication"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &MetaServer.authuser, NULL, "MetaServer.Auth.User",
N_("Username for HTTP Basic authentication"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &MetaServer.authpassword, NULL,
"MetaServer.Auth.Password",
N_("Password for HTTP Basic authentication"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &MetaServer.proxyuser, NULL, "MetaServer.Proxy.User",
N_("Username for HTTP Basic proxy authentication"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &MetaServer.proxypassword, NULL,
"MetaServer.Proxy.Password",
N_("Password for HTTP Basic proxy authentication"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 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},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
#else
{NULL, &Daemonize, NULL, NULL, NULL, "Daemonize",
N_("If TRUE, the server runs in the background"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &WebBrowser, NULL, "WebBrowser",
N_("The command used to start your web browser"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
#endif
{&NumTurns, NULL, NULL, NULL, NULL, "NumTurns",
N_("No. of game turns (if 0, game never ends)"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &Currency.Symbol, NULL, "Currency.Symbol",
N_("The currency symbol (e.g. $)"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, &Currency.Prefix, NULL, NULL, NULL, "Currency.Prefix",
N_("If TRUE, the currency symbol precedes prices"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &Log.File, NULL, "Log.File",
N_("File to write log messages to"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{&Log.Level, NULL, NULL, NULL, NULL, "Log.Level",
N_("Controls the number of log messages produced"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &Log.Timestamp, NULL, "Log.Timestamp",
N_("strftime() format string for log timestamps"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, &Sanitized, NULL, NULL, NULL, "Sanitized",
- N_("Random events are sanitized"), NULL, NULL, 0, "", NULL, NULL, FALSE},
+ N_("Random events are sanitized"), NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, &DrugValue, NULL, NULL, NULL, "DrugValue",
N_("TRUE if the value of bought drugs should be saved"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, &ConfigVerbose, NULL, NULL, NULL, "ConfigVerbose",
N_("Be verbose in processing config file"), NULL, NULL, 0, "", NULL,
- NULL, FALSE},
+ NULL, FALSE, 0},
{&NumLocation, NULL, NULL, NULL, NULL, "NumLocation",
N_("Number of locations in the game"),
(void **)(&Location), NULL, sizeof(struct LOCATION), "", NULL,
- ResizeLocations, FALSE},
+ ResizeLocations, FALSE, 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},
+ (void **)(&Cop), NULL, sizeof(struct COP), "", NULL, ResizeCops, FALSE, 0},
{&NumGun, NULL, NULL, NULL, NULL, "NumGun",
N_("Number of guns in the game"),
- (void **)(&Gun), NULL, sizeof(struct GUN), "", NULL, ResizeGuns, FALSE},
+ (void **)(&Gun), NULL, sizeof(struct GUN), "", NULL, ResizeGuns, FALSE, 0},
{&NumDrug, NULL, NULL, NULL, NULL, "NumDrug",
N_("Number of drugs in the game"),
- (void **)(&Drug), NULL, sizeof(struct DRUG), "", NULL, ResizeDrugs, FALSE},
+ (void **)(&Drug), NULL, sizeof(struct DRUG), "", NULL, ResizeDrugs,
+ FALSE, 1},
{&LoanSharkLoc, NULL, NULL, NULL, NULL, "LoanShark",
- N_("Location of the Loan Shark"), NULL, NULL, 0, "", NULL, NULL, FALSE},
+ N_("Location of the Loan Shark"), NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{&BankLoc, NULL, NULL, NULL, NULL, "Bank", N_("Location of the bank"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{&GunShopLoc, NULL, NULL, NULL, NULL, "GunShop",
N_("Location of the gun shop"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{&RoughPubLoc, NULL, NULL, NULL, NULL, "RoughPub",
N_("Location of the pub"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &Names.LoanSharkName, NULL, "LoanSharkName",
- N_("Name of the loan shark"), NULL, NULL, 0, "", NULL, NULL, FALSE},
+ N_("Name of the loan shark"), NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &Names.BankName, NULL, "BankName",
- N_("Name of the bank"), NULL, NULL, 0, "", NULL, NULL, FALSE},
+ N_("Name of the bank"), NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &Names.GunShopName, NULL, "GunShopName",
- N_("Name of the gun shop"), NULL, NULL, 0, "", NULL, NULL, FALSE},
+ N_("Name of the gun shop"), NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &Names.RoughPubName, NULL, "RoughPubName",
- N_("Name of the pub"), NULL, NULL, 0, "", NULL, NULL, FALSE},
+ N_("Name of the pub"), NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{&DrugSortMethod, NULL, NULL, NULL, NULL, "DrugSortMethod",
N_("Sort key for listing available drugs"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{&FightTimeout, NULL, NULL, NULL, NULL, "FightTimeout",
N_("No. of seconds in which to return fire"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{&IdleTimeout, NULL, NULL, NULL, NULL, "IdleTimeout",
N_("Players are disconnected after this many seconds"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{&ConnectTimeout, NULL, NULL, NULL, NULL, "ConnectTimeout",
N_("Time in seconds for connections to be made or broken"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{&MaxClients, NULL, NULL, NULL, NULL, "MaxClients",
N_("Maximum number of TCP/IP connections"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{&AITurnPause, NULL, NULL, NULL, NULL, "AITurnPause",
N_("Seconds between turns of AI players"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, &StartCash, NULL, NULL, "StartCash",
N_("Amount of cash that each player starts with"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, &StartDebt, NULL, NULL, "StartDebt",
N_("Amount of debt that each player starts with"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &StaticLocation.Name, NULL, "Name",
N_("Name of each location"), (void **)(&Location), &StaticLocation,
- sizeof(struct LOCATION), "Location", &NumLocation, NULL, FALSE},
+ sizeof(struct LOCATION), "Location", &NumLocation, NULL, FALSE, 0},
{&(StaticLocation.PolicePresence), NULL, NULL, NULL, NULL,
"PolicePresence",
N_("Police presence at each location (%)"),
(void **)(&Location), &StaticLocation,
- sizeof(struct LOCATION), "Location", &NumLocation, NULL, FALSE},
+ sizeof(struct LOCATION), "Location", &NumLocation, NULL, FALSE, 0},
{&(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},
+ sizeof(struct LOCATION), "Location", &NumLocation, NULL, FALSE, 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},
+ sizeof(struct LOCATION), "Location", &NumLocation, NULL, FALSE, 1},
{&PlayerArmour, NULL, NULL, NULL, NULL, "PlayerArmour",
N_("% resistance to gunshots of each player"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{&BitchArmour, NULL, NULL, NULL, NULL, "BitchArmour",
N_("% resistance to gunshots of each bitch"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 1},
{NULL, NULL, NULL, &StaticCop.Name, NULL, "Name",
N_("Name of each cop"),
(void **)(&Cop), &StaticCop, sizeof(struct COP), "Cop", &NumCop,
- NULL, FALSE},
+ NULL, FALSE, 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},
+ NULL, FALSE, 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},
+ NULL, FALSE, 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},
+ NULL, FALSE, 1},
{&StaticCop.DeputyArmour, NULL, NULL, NULL, NULL, "DeputyArmour",
N_("% resistance to gunshots of each deputy"),
(void **)(&Cop), &StaticCop, sizeof(struct COP), "Cop", &NumCop,
- NULL, FALSE},
+ NULL, FALSE, 1},
{&StaticCop.AttackPenalty, NULL, NULL, NULL, NULL, "AttackPenalty",
N_("Attack penalty relative to a player"),
(void **)(&Cop), &StaticCop, sizeof(struct COP), "Cop", &NumCop,
- NULL, FALSE},
+ NULL, FALSE, 0},
{&StaticCop.DefendPenalty, NULL, NULL, NULL, NULL, "DefendPenalty",
N_("Defend penalty relative to a player"),
(void **)(&Cop), &StaticCop, sizeof(struct COP), "Cop", &NumCop,
- NULL, FALSE},
+ NULL, FALSE, 0},
{&StaticCop.MinDeputies, NULL, NULL, NULL, NULL, "MinDeputies",
N_("Minimum number of accompanying deputies"),
(void **)(&Cop), &StaticCop, sizeof(struct COP), "Cop", &NumCop,
- NULL, FALSE},
+ NULL, FALSE, 0},
{&StaticCop.MaxDeputies, NULL, NULL, NULL, NULL, "MaxDeputies",
N_("Maximum number of accompanying deputies"),
(void **)(&Cop), &StaticCop, sizeof(struct COP), "Cop", &NumCop,
- NULL, FALSE},
+ NULL, FALSE, 0},
{&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},
+ NULL, FALSE, 0},
{&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},
+ NULL, FALSE, 0},
{&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},
+ NULL, FALSE, 0},
{NULL, NULL, NULL, &StaticDrug.Name, NULL, "Name",
N_("Name of each drug"),
(void **)(&Drug), &StaticDrug,
- sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE},
+ sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE, 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},
+ sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE, 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},
+ sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE, 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},
+ sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE, 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},
+ sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE, 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},
+ sizeof(struct DRUG), "Drug", &NumDrug, NULL, FALSE, 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},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 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},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 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},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 1},
{&(Drugs.ExpensiveMultiply), NULL, NULL, NULL, NULL,
"Drugs.ExpensiveMultiply",
N_("Multiplier for specially expensive drug prices"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 1},
{NULL, NULL, NULL, &StaticGun.Name, NULL, "Name",
N_("Name of each gun"),
(void **)(&Gun), &StaticGun,
- sizeof(struct GUN), "Gun", &NumGun, NULL, FALSE},
+ sizeof(struct GUN), "Gun", &NumGun, NULL, FALSE, 0},
{NULL, NULL, &(StaticGun.Price), NULL, NULL, "Price",
N_("Price of each gun"),
(void **)(&Gun), &StaticGun,
- sizeof(struct GUN), "Gun", &NumGun, NULL, FALSE},
+ sizeof(struct GUN), "Gun", &NumGun, NULL, FALSE, 0},
{&(StaticGun.Space), NULL, NULL, NULL, NULL, "Space",
N_("Space taken by each gun"),
(void **)(&Gun), &StaticGun,
- sizeof(struct GUN), "Gun", &NumGun, NULL, FALSE},
+ sizeof(struct GUN), "Gun", &NumGun, NULL, FALSE, 0},
{&(StaticGun.Damage), NULL, NULL, NULL, NULL, "Damage",
N_("Damage done by each gun"),
(void **)(&Gun), &StaticGun,
- sizeof(struct GUN), "Gun", &NumGun, NULL, FALSE},
+ sizeof(struct GUN), "Gun", &NumGun, NULL, FALSE, 0},
{NULL, NULL, NULL, &Names.Bitch, NULL, "Names.Bitch",
N_("Word used to denote a single \"bitch\""), NULL, NULL, 0, "", NULL,
- NULL, FALSE},
+ NULL, FALSE, 0},
{NULL, NULL, NULL, &Names.Bitches, NULL, "Names.Bitches",
N_("Word used to denote two or more \"bitches\""),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 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},
+ NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &Names.Guns, NULL, "Names.Guns",
N_("Word used to denote two or more guns"), NULL, NULL, 0, "", NULL,
- NULL, FALSE},
+ NULL, FALSE, 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},
+ "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &Names.Drugs, NULL, "Names.Drugs",
N_("Word used to denote two or more drugs"), NULL, NULL, 0, "", NULL,
- NULL, FALSE},
+ NULL, FALSE, 0},
{NULL, NULL, NULL, &Names.Month, NULL, "Names.Month",
N_("Text prefixed to the turn number (i.e. the month)"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, &Names.Year, NULL, "Names.Year",
N_("Text appended to the turn number (i.e. the year)"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 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},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{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},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, &Bitch.MinPrice, NULL, NULL, "Bitch.MinPrice",
N_("Minimum price to hire a bitch"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, &Bitch.MaxPrice, NULL, NULL, "Bitch.MaxPrice",
N_("Maximum price to hire a bitch"),
- NULL, NULL, 0, "", NULL, NULL, FALSE},
+ NULL, NULL, 0, "", NULL, NULL, FALSE, 0},
{NULL, NULL, NULL, NULL, &SubwaySaying, "SubwaySaying",
N_("List of things which you overhear on the subway"),
- NULL, NULL, 0, "", &NumSubway, ResizeSubway, FALSE},
+ NULL, NULL, 0, "", &NumSubway, ResizeSubway, FALSE, 0},
{&NumSubway, NULL, NULL, NULL, NULL, "NumSubwaySaying",
N_("Number of subway sayings"),
- NULL, NULL, 0, "", NULL, ResizeSubway, FALSE},
+ NULL, NULL, 0, "", NULL, ResizeSubway, FALSE, 0},
{NULL, NULL, NULL, NULL, &Playing, "Playing",
N_("List of songs which you can hear playing"),
- NULL, NULL, 0, "", &NumPlaying, ResizePlaying, FALSE},
+ NULL, NULL, 0, "", &NumPlaying, ResizePlaying, FALSE, 0},
{&NumPlaying, NULL, NULL, NULL, NULL, "NumPlaying",
N_("Number of playing songs"),
- NULL, NULL, 0, "", NULL, ResizePlaying, FALSE},
+ NULL, NULL, 0, "", NULL, ResizePlaying, FALSE, 0},
{NULL, NULL, NULL, NULL, &StoppedTo, "StoppedTo",
N_("List of things which you can stop to do"),
- NULL, NULL, 0, "", &NumStoppedTo, ResizeStoppedTo, FALSE},
+ NULL, NULL, 0, "", &NumStoppedTo, ResizeStoppedTo, FALSE, 0},
{&NumStoppedTo, NULL, NULL, NULL, NULL, "NumStoppedTo",
N_("Number of things which you can stop to do"),
- NULL, NULL, 0, "", NULL, ResizeStoppedTo, FALSE}
+ NULL, NULL, 0, "", NULL, ResizeStoppedTo, FALSE, 0}
};
const int NUMGLOB = sizeof(Globals) / sizeof(Globals[0]);
t@@ -2165,17 +2166,24 @@ gboolean SetConfigValue(int GlobalIndex, int StructIndex,
GlobalName =
g_strdup_printf("%s[%d].%s", Globals[GlobalIndex].NameStruct,
StructIndex, Globals[GlobalIndex].Name);
- } else
+ } else {
GlobalName = Globals[GlobalIndex].Name;
+ }
if (Globals[GlobalIndex].IntVal) {
token = g_scanner_get_next_token(scanner);
if (token == G_TOKEN_INT) {
IntVal = (int)scanner->value.v_int;
+ if (IntVal < Globals[GlobalIndex].MinVal) {
+ g_scanner_warn(scanner, _("%s can be no smaller than %d - ignoring!"),
+ GlobalName, Globals[GlobalIndex].MinVal);
+ return FALSE;
+ }
if (Globals[GlobalIndex].ResizeFunc) {
(*(Globals[GlobalIndex].ResizeFunc)) (IntVal);
/* Displayed, for example, when you set NumDrug=10 to allow
* Drug[10].Name etc. to be set */
- g_print(_("Resized structure list to %d elements\n"), IntVal);
+ if (ConfigVerbose)
+ g_print(_("Resized structure list to %d elements\n"), IntVal);
for (list = FirstClient; list; list = g_slist_next(list)) {
tmp = (Player *)list->data;
UpdatePlayer(tmp);
(DIR) diff --git a/src/dopewars.h b/src/dopewars.h
t@@ -328,6 +328,7 @@ struct GLOBALS {
int *MaxIndex;
void (*ResizeFunc) (int NewNum);
gboolean Modified;
+ int MinVal;
};
extern const int NUMGLOB;