Changeset - r17251:1a6731d06266
[Not reviewed]
master
0 7 0
alberth - 13 years ago 2011-02-06 18:26:50
alberth@openttd.org
(svn r22001) -Codechange: Rename difficulty.number_industries to difficulty.industry_density.
7 files changed with 20 insertions and 20 deletions:
0 comments (0 inline, 0 general)
src/genworld_gui.cpp
Show inline comments
 
@@ -381,25 +381,25 @@ struct GenerateLandscapeWindow : public 
 

	
 
			case GLAND_TOWN_PULLDOWN:
 
				if (_game_mode == GM_EDITOR) {
 
					SetDParam(0, STR_DISASTERS_OFF);
 
				} else if (_settings_newgame.difficulty.number_towns == CUSTOM_TOWN_NUMBER_DIFFICULTY) {
 
					SetDParam(0, STR_NUM_CUSTOM_NUMBER);
 
					SetDParam(1, _settings_newgame.game_creation.custom_town_number);
 
				} else {
 
					SetDParam(0, _num_towns[_settings_newgame.difficulty.number_towns]);
 
				}
 
				break;
 

	
 
			case GLAND_INDUSTRY_PULLDOWN:   SetDParam(0, _game_mode == GM_EDITOR ? STR_DISASTERS_OFF : _num_inds[_settings_newgame.difficulty.number_industries]); break;
 
			case GLAND_INDUSTRY_PULLDOWN:   SetDParam(0, _game_mode == GM_EDITOR ? STR_DISASTERS_OFF : _num_inds[_settings_newgame.difficulty.industry_density]); break;
 
			case GLAND_LANDSCAPE_PULLDOWN:  SetDParam(0, _landscape[_settings_newgame.game_creation.land_generator]); break;
 
			case GLAND_TREE_PULLDOWN:       SetDParam(0, _tree_placer[_settings_newgame.game_creation.tree_placer]); break;
 
			case GLAND_TERRAIN_PULLDOWN:    SetDParam(0, _elevations[_settings_newgame.difficulty.terrain_type]); break;
 

	
 
			case GLAND_WATER_PULLDOWN:
 
				if (_settings_newgame.difficulty.quantity_sea_lakes == CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY) {
 
					SetDParam(0, STR_SEA_LEVEL_CUSTOM_PERCENTAGE);
 
					SetDParam(1, _settings_newgame.game_creation.custom_sea_level);
 
				} else {
 
					SetDParam(0, _sea_lakes[_settings_newgame.difficulty.quantity_sea_lakes]);
 
				}
 
				break;
 
@@ -577,25 +577,25 @@ struct GenerateLandscapeWindow : public 
 
				ShowDropDownList(this, BuildMapsizeDropDown(), _settings_newgame.game_creation.map_x, GLAND_MAPSIZE_X_PULLDOWN);
 
				break;
 

	
 
			case GLAND_MAPSIZE_Y_PULLDOWN: // Mapsize Y
 
				ShowDropDownList(this, BuildMapsizeDropDown(), _settings_newgame.game_creation.map_y, GLAND_MAPSIZE_Y_PULLDOWN);
 
				break;
 

	
 
			case GLAND_TOWN_PULLDOWN: // Number of towns
 
				ShowDropDownMenu(this, _num_towns, _settings_newgame.difficulty.number_towns, GLAND_TOWN_PULLDOWN, 0, 0);
 
				break;
 

	
 
			case GLAND_INDUSTRY_PULLDOWN: // Number of industries
 
				ShowDropDownMenu(this, _num_inds, _settings_newgame.difficulty.number_industries, GLAND_INDUSTRY_PULLDOWN, 0, 0);
 
				ShowDropDownMenu(this, _num_inds, _settings_newgame.difficulty.industry_density, GLAND_INDUSTRY_PULLDOWN, 0, 0);
 
				break;
 

	
 
			case GLAND_RANDOM_BUTTON: // Random seed
 
				_settings_newgame.game_creation.generation_seed = InteractiveRandom();
 
				snprintf(this->edit_str_buf, this->edit_str_size, "%u", _settings_newgame.game_creation.generation_seed);
 
				UpdateTextBufferSize(&this->text);
 
				this->SetDirty();
 
				break;
 

	
 
			case GLAND_GENERATE_BUTTON: // Generate
 
				MakeNewgameSettingsLive();
 

	
 
@@ -752,25 +752,25 @@ struct GenerateLandscapeWindow : public 
 
			case GLAND_HEIGHTMAP_ROTATION_PULLDOWN: _settings_newgame.game_creation.heightmap_rotation = index; break;
 

	
 
			case GLAND_TOWN_PULLDOWN:
 
				if ((uint)index == CUSTOM_TOWN_NUMBER_DIFFICULTY) {
 
					this->widget_id = widget;
 
					SetDParam(0, _settings_newgame.game_creation.custom_town_number);
 
					ShowQueryString(STR_JUST_INT, STR_MAPGEN_NUMBER_OF_TOWNS, 5, 50, this, CS_NUMERAL, QSF_NONE);
 
				}
 
				IConsoleSetSetting("difficulty.number_towns", index);
 
				break;
 

	
 
			case GLAND_INDUSTRY_PULLDOWN:
 
				IConsoleSetSetting("difficulty.number_industries", index);
 
				IConsoleSetSetting("difficulty.industry_density", index);
 
				break;
 

	
 
			case GLAND_TERRAIN_PULLDOWN: {
 
				GameMode old_gm = _game_mode;
 
				_game_mode = GM_MENU;
 
				IConsoleSetSetting("difficulty.terrain_type", index);
 
				_game_mode = old_gm;
 
				break;
 
			}
 

	
 
			case GLAND_WATER_PULLDOWN: {
 
				if ((uint)index == CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY) {
src/industry_cmd.cpp
Show inline comments
 
@@ -1838,46 +1838,46 @@ static Industry *CreateNewIndustry(TileI
 
/**
 
 * Compute the appearance probability for an industry during map creation.
 
 * @param it Industry type to compute.
 
 * @param [out] force_at_least_one Returns whether at least one instance should be forced on map creation.
 
 * @return Relative probability for the industry to appear.
 
 */
 
static uint32 GetScaledIndustryGenerationProbability(IndustryType it, bool *force_at_least_one)
 
{
 
	const IndustrySpec *ind_spc = GetIndustrySpec(it);
 
	uint32 chance = ind_spc->appear_creation[_settings_game.game_creation.landscape] * 16; // * 16 to increase precision
 
	if (!ind_spc->enabled || chance == 0 || ind_spc->num_table == 0 ||
 
			!CheckIfCallBackAllowsAvailability(it, IACT_MAPGENERATION) ||
 
			(_game_mode != GM_EDITOR && _settings_game.difficulty.number_industries == ID_FUND_ONLY)) {
 
			(_game_mode != GM_EDITOR && _settings_game.difficulty.industry_density == ID_FUND_ONLY)) {
 
		*force_at_least_one = false;
 
		return 0;
 
	} else {
 
		/* We want industries appearing at coast to appear less often on bigger maps, as length of coast increases slower than map area.
 
		 * For simplicity we scale in both cases, though scaling the probabilities of all industries has no effect. */
 
		chance = (ind_spc->check_proc == CHECK_REFINERY || ind_spc->check_proc == CHECK_OIL_RIG) ? ScaleByMapSize1D(chance) : ScaleByMapSize(chance);
 

	
 
		*force_at_least_one = (chance > 0) && !(ind_spc->behaviour & INDUSTRYBEH_NOBUILT_MAPCREATION) && (_game_mode != GM_EDITOR);
 
		return chance;
 
	}
 
}
 

	
 
/**
 
 * Compute the probability for constructing a new industry during game play.
 
 * @param it Industry type to compute.
 
 * @param [out] min_number Minimal number of industries that should exist at the map.
 
 * @return Relative probability for the industry to appear.
 
 */
 
static uint16 GetIndustryGamePlayProbability(IndustryType it, byte *min_number)
 
{
 
	if (_settings_game.difficulty.number_industries == ID_FUND_ONLY) {
 
	if (_settings_game.difficulty.industry_density == ID_FUND_ONLY) {
 
		*min_number = 0;
 
		return 0;
 
	}
 

	
 
	const IndustrySpec *ind_spc = GetIndustrySpec(it);
 
	byte chance = ind_spc->appear_ingame[_settings_game.game_creation.landscape];
 
	if (!ind_spc->enabled || chance == 0 || ind_spc->num_table == 0 ||
 
			((ind_spc->behaviour & INDUSTRYBEH_BEFORE_1950) && _cur_year > 1950) ||
 
			((ind_spc->behaviour & INDUSTRYBEH_AFTER_1960) && _cur_year < 1960) ||
 
			!CheckIfCallBackAllowsAvailability(it, IACT_RANDOMCREATION)) {
 
		*min_number = 0;
 
		return 0;
 
@@ -1894,25 +1894,25 @@ static uint GetNumberOfIndustries()
 
{
 
	/* Number of industries on a 256x256 map. */
 
	static const uint16 numof_industry_table[] = {
 
		0,    // none
 
		0,    // minimal
 
		10,   // very low
 
		25,   // low
 
		55,   // normal
 
		80,   // high
 
	};
 

	
 
	assert(lengthof(numof_industry_table) == ID_END);
 
	uint difficulty = (_game_mode != GM_EDITOR) ? _settings_game.difficulty.number_industries : (uint)ID_VERY_LOW;
 
	uint difficulty = (_game_mode != GM_EDITOR) ? _settings_game.difficulty.industry_density : (uint)ID_VERY_LOW;
 
	return ScaleByMapSize(numof_industry_table[difficulty]);
 
}
 

	
 
/**
 
 * Advertise about a new industry opening.
 
 * @param ind Industry being opened.
 
 */
 
static void AdvertiseIndustryOpening(const Industry *ind)
 
{
 
	const IndustrySpec *ind_spc = GetIndustrySpec(ind->type);
 
	SetDParam(0, ind_spc->name);
 
	if (ind_spc->new_industry_text > STR_LAST_STRINGID) {
 
@@ -1985,41 +1985,41 @@ void IndustryBuildData::Reset()
 
{
 
	this->wanted_inds = GetCurrentTotalNumberOfIndustries() << 16;
 

	
 
	for (IndustryType it = 0; it < NUM_INDUSTRYTYPES; it++) {
 
		this->builddata[it].Reset();
 
	}
 
}
 

	
 
/** Monthly update of industry build data. */
 
void IndustryBuildData::MonthlyLoop()
 
{
 
	static const int NEWINDS_PER_MONTH = 0x38000 / (10 * 12); // lower 16 bits is a float fraction, 3.5 industries per decade, divided by 10 * 12 months.
 
	if (_settings_game.difficulty.number_industries == ID_FUND_ONLY) return; // 'no industries' setting,
 
	if (_settings_game.difficulty.industry_density == ID_FUND_ONLY) return; // 'no industries' setting,
 

	
 
	/* To prevent running out of unused industries for the player to connect,
 
	 * add a fraction of new industries each month, but only if the manager can keep up. */
 
	uint max_behind = 1 + min(99u, ScaleByMapSize(3)); // At most 2 industries for small maps, and 100 at the biggest map (about 6 months industry build attempts).
 
	if (GetCurrentTotalNumberOfIndustries() + max_behind >= (this->wanted_inds >> 16)) {
 
		this->wanted_inds += ScaleByMapSize(NEWINDS_PER_MONTH);
 
	}
 
}
 

	
 
/**
 
 * This function will create random industries during game creation.
 
 * It will scale the amount of industries by mapsize and difficulty level.
 
 */
 
void GenerateIndustries()
 
{
 
	if (_game_mode != GM_EDITOR && _settings_game.difficulty.number_industries == ID_FUND_ONLY) return; // No industries in the game.
 
	if (_game_mode != GM_EDITOR && _settings_game.difficulty.industry_density == ID_FUND_ONLY) return; // No industries in the game.
 

	
 
	uint32 industry_probs[NUM_INDUSTRYTYPES];
 
	bool force_at_least_one[NUM_INDUSTRYTYPES];
 
	uint32 total_prob = 0;
 
	uint num_forced = 0;
 

	
 
	for (IndustryType it = 0; it < NUM_INDUSTRYTYPES; it++) {
 
		industry_probs[it] = GetScaledIndustryGenerationProbability(it, force_at_least_one + it);
 
		total_prob += industry_probs[it];
 
		if (force_at_least_one[it]) num_forced++;
 
	}
 

	
src/industry_gui.cpp
Show inline comments
 
@@ -593,25 +593,25 @@ public:
 
	}
 

	
 
	virtual void OnPlaceObjectAbort()
 
	{
 
		this->RaiseButtons();
 
	}
 

	
 
	virtual void OnInvalidateData(int data = 0)
 
	{
 
		this->SetupArrays();
 

	
 
		const IndustrySpec *indsp = (this->selected_type == INVALID_INDUSTRYTYPE) ? NULL : GetIndustrySpec(this->selected_type);
 
		if (indsp == NULL) this->enabled[this->selected_index] = _settings_game.difficulty.number_industries != ID_FUND_ONLY;
 
		if (indsp == NULL) this->enabled[this->selected_index] = _settings_game.difficulty.industry_density != ID_FUND_ONLY;
 
		this->SetButtons();
 
	}
 
};
 

	
 
void ShowBuildIndustryWindow()
 
{
 
	if (_game_mode != GM_EDITOR && !Company::IsValidID(_local_company)) return;
 
	if (BringWindowToFrontById(WC_BUILD_INDUSTRY, 0)) return;
 
	new BuildIndustryWindow();
 
}
 

	
 
static void UpdateIndustryProduction(Industry *i);
src/saveload/afterload.cpp
Show inline comments
 
@@ -1439,28 +1439,28 @@ bool AfterLoadGame()
 
		Station *st;
 
		FOR_ALL_STATIONS(st) {
 
			std::list<Vehicle *>::iterator iter;
 
			for (iter = st->loading_vehicles.begin(); iter != st->loading_vehicles.end();) {
 
				Vehicle *v = *iter;
 
				iter++;
 
				if (!v->current_order.IsType(OT_LOADING)) st->loading_vehicles.remove(v);
 
			}
 
		}
 
	}
 

	
 
	if (IsSavegameVersionBefore(58)) {
 
		/* Setting difficulty number_industries other than zero get bumped to +1
 
		 * since a new option (very low at position1) has been added */
 
		if (_settings_game.difficulty.number_industries > 0) {
 
			_settings_game.difficulty.number_industries++;
 
		/* Setting difficulty industry_density other than zero get bumped to +1
 
		 * since a new option (very low at position 1) has been added */
 
		if (_settings_game.difficulty.industry_density > 0) {
 
			_settings_game.difficulty.industry_density++;
 
		}
 

	
 
		/* Same goes for number of towns, although no test is needed, just an increment */
 
		_settings_game.difficulty.number_towns++;
 
	}
 

	
 
	if (IsSavegameVersionBefore(64)) {
 
		/* copy the signal type/variant and move signal states bits */
 
		for (TileIndex t = 0; t < map_size; t++) {
 
			if (IsTileType(t, MP_RAILWAY) && HasSignals(t)) {
 
				SetSignalStates(t, GB(_m[t].m2, 4, 4));
 
				SetSignalVariant(t, INVALID_TRACK, GetSignalVariant(t, TRACK_X));
 
@@ -2554,28 +2554,28 @@ bool AfterLoadGame()
 

	
 
	if (IsSavegameVersionBefore(159)) {
 
		/* If the savegame is old (before version 100), then the value of 255
 
		 * for these settings did not mean "disabled". As such everything
 
		 * before then did reverse.
 
		 * To simplify stuff we disable all turning around or we do not
 
		 * disable anything at all. So, if some reversing was disabled we
 
		 * will keep reversing disabled, otherwise it'll be turned on. */
 
		_settings_game.pf.reverse_at_signals = IsSavegameVersionBefore(100) || (_settings_game.pf.wait_oneway_signal != 255 && _settings_game.pf.wait_twoway_signal != 255 && _settings_game.pf.wait_for_pbs_path != 255);
 
	}
 

	
 
	if (IsSavegameVersionBefore(160)) {
 
		/* Setting difficulty number_industries other than zero get bumped to +1
 
		 * since a new option (very low at position1) has been added */
 
		if (_settings_game.difficulty.number_industries > 0) {
 
			_settings_game.difficulty.number_industries++;
 
		/* Setting difficulty industry_density other than zero get bumped to +1
 
		 * since a new option (minimal at position 1) has been added */
 
		if (_settings_game.difficulty.industry_density > 0) {
 
			_settings_game.difficulty.industry_density++;
 
		}
 
	}
 

	
 
	/* Road stops is 'only' updating some caches */
 
	AfterLoadRoadStops();
 
	AfterLoadLabelMaps();
 

	
 
	GamelogPrintDebug(1);
 

	
 
	InitializeWindowsAndCaches();
 
	/* Restore the signals */
 
	ResetSignalHandlers();
src/saveload/oldloader_sl.cpp
Show inline comments
 
@@ -1435,25 +1435,25 @@ static const OldChunks subsidy_chunk[] =
 
static bool LoadOldSubsidy(LoadgameState *ls, int num)
 
{
 
	Subsidy *s = new (num) Subsidy();
 
	bool ret = LoadChunk(ls, s, subsidy_chunk);
 
	if (s->cargo_type == CT_INVALID) delete s;
 
	return ret;
 
}
 

	
 
static const OldChunks game_difficulty_chunk[] = {
 
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, max_no_competitors ),
 
	OCL_NULL( 2), // competitor_start_time
 
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, number_towns ),
 
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, number_industries ),
 
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, industry_density ),
 
	OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, DifficultySettings, max_loan ),
 
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, initial_interest ),
 
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, vehicle_costs ),
 
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, competitor_speed ),
 
	OCL_NULL( 2), // competitor_intelligence
 
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, vehicle_breakdowns ),
 
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, subsidy_multiplier ),
 
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, construction_cost ),
 
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, terrain_type ),
 
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, quantity_sea_lakes ),
 
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, economy ),
 
	OCL_SVAR( OC_FILE_U16 |  OC_VAR_U8, DifficultySettings, line_reverse_mode ),
src/settings_type.h
Show inline comments
 
@@ -26,25 +26,25 @@ enum IndustryDensity {
 
	ID_VERY_LOW,  ///< Very few industries at game start.
 
	ID_LOW,       ///< Few industries at game start.
 
	ID_NORMAL,    ///< Normal amount of industries at game start.
 
	ID_HIGH,      ///< Many industries at game start.
 

	
 
	ID_END,       ///< Number of industry density settings.
 
};
 

	
 
/** Settings related to the difficulty of the game */
 
struct DifficultySettings {
 
	byte   max_no_competitors;               ///< the number of competitors (AIs)
 
	byte   number_towns;                     ///< the amount of towns
 
	byte   number_industries;                ///< The industry density. @see IndustryDensity
 
	byte   industry_density;                 ///< The industry density. @see IndustryDensity
 
	uint32 max_loan;                         ///< the maximum initial loan
 
	byte   initial_interest;                 ///< amount of interest (to pay over the loan)
 
	byte   vehicle_costs;                    ///< amount of money spent on vehicle running cost
 
	byte   competitor_speed;                 ///< the speed at which the AI builds
 
	byte   vehicle_breakdowns;               ///< likelihood of vehicles breaking down
 
	byte   subsidy_multiplier;               ///< amount of subsidy
 
	byte   construction_cost;                ///< how expensive is building
 
	byte   terrain_type;                     ///< the mountainousness of the landscape
 
	byte   quantity_sea_lakes;               ///< the amount of seas/lakes
 
	byte   economy;                          ///< how volatile is the economy
 
	byte   line_reverse_mode;                ///< reversing at stations or not
 
	byte   disasters;                        ///< are disasters enabled
src/table/settings.h
Show inline comments
 
@@ -339,25 +339,25 @@ static const SettingDesc _gameopt_settin
 
 * for example doesn't need to be synched. Every client assigns the
 
 * service_interval value to the v->service_interval, meaning that every client
 
 * assigns his value. If the setting was company-based, that would mean that
 
 * vehicles could decide on different moments that they are heading back to a
 
 * service depot, causing desyncs on a massive scale. */
 
const SettingDesc _settings[] = {
 
	/***************************************************************************/
 
	/* Saved settings variables. */
 
	/* Do not ADD or REMOVE something in this "difficulty.XXX" table or before it. It breaks savegame compatability. */
 
	 SDT_CONDVAR(GameSettings, difficulty.max_no_competitors,        SLE_UINT8, 97, SL_MAX_VERSION, 0, 0,     0,0,MAX_COMPANIES-1,1,STR_NULL,                                  MaxNoAIsChange),
 
	SDT_CONDNULL(                                                            1, 97, 109),
 
	 SDT_CONDVAR(GameSettings, difficulty.number_towns,              SLE_UINT8, 97, SL_MAX_VERSION, 0,NG,     2,     0,      4,  1, STR_NUM_VERY_LOW,                          DifficultyChange),
 
	 SDT_CONDVAR(GameSettings, difficulty.number_industries,         SLE_UINT8, 97, SL_MAX_VERSION, 0,NG, ID_END-1,  0,ID_END-1, 1, STR_FUNDING_ONLY,                          DifficultyChange),
 
	 SDT_CONDVAR(GameSettings, difficulty.industry_density,          SLE_UINT8, 97, SL_MAX_VERSION, 0,NG, ID_END-1,  0,ID_END-1, 1, STR_FUNDING_ONLY,                          DifficultyChange),
 
	 SDT_CONDVAR(GameSettings, difficulty.max_loan,                 SLE_UINT32, 97, SL_MAX_VERSION, 0,NS|CR,300000,100000,500000,50000,STR_NULL,                               DifficultyChange),
 
	 SDT_CONDVAR(GameSettings, difficulty.initial_interest,          SLE_UINT8, 97, SL_MAX_VERSION, 0,NS,     2,     2,      4,  1, STR_NULL,                                  DifficultyChange),
 
	 SDT_CONDVAR(GameSettings, difficulty.vehicle_costs,             SLE_UINT8, 97, SL_MAX_VERSION, 0,NS,     0,     0,      2,  1, STR_SEA_LEVEL_LOW,                         DifficultyChange),
 
	 SDT_CONDVAR(GameSettings, difficulty.competitor_speed,          SLE_UINT8, 97, SL_MAX_VERSION, 0, 0,     2,     0,      4,  1, STR_AI_SPEED_VERY_SLOW,                    DifficultyChange),
 
	SDT_CONDNULL(                                                            1, 97, 109),
 
	 SDT_CONDVAR(GameSettings, difficulty.vehicle_breakdowns,        SLE_UINT8, 97, SL_MAX_VERSION, 0, 0,     1,     0,      2,  1, STR_DISASTER_NONE,                         DifficultyChange),
 
	 SDT_CONDVAR(GameSettings, difficulty.subsidy_multiplier,        SLE_UINT8, 97, SL_MAX_VERSION, 0, 0,     2,     0,      3,  1, STR_SUBSIDY_X1_5,                          DifficultyChange),
 
	 SDT_CONDVAR(GameSettings, difficulty.construction_cost,         SLE_UINT8, 97, SL_MAX_VERSION, 0,NS,     0,     0,      2,  1, STR_SEA_LEVEL_LOW,                         DifficultyChange),
 
	 SDT_CONDVAR(GameSettings, difficulty.terrain_type,              SLE_UINT8, 97, SL_MAX_VERSION, 0,NG,     1,     0,      3,  1, STR_TERRAIN_TYPE_VERY_FLAT,                DifficultyChange),
 
	 SDT_CONDVAR(GameSettings, difficulty.quantity_sea_lakes,        SLE_UINT8, 97, SL_MAX_VERSION, 0,NG,     0,     0,      4,  1, STR_SEA_LEVEL_VERY_LOW,                    DifficultyChange),
 
	 SDT_CONDVAR(GameSettings, difficulty.economy,                   SLE_UINT8, 97, SL_MAX_VERSION, 0, 0,     0,     0,      1,  1, STR_ECONOMY_STEADY,                        DifficultyChange),
 
	 SDT_CONDVAR(GameSettings, difficulty.line_reverse_mode,         SLE_UINT8, 97, SL_MAX_VERSION, 0, 0,     0,     0,      1,  1, STR_REVERSE_AT_END_OF_LINE_AND_AT_STATIONS,DifficultyChange),
0 comments (0 inline, 0 general)