mirror of https://github.com/OpenTTD/OpenTTD
Feature: Allow disabling local authority control of company actions
parent
8537fa7206
commit
f92cf38ab5
|
@ -1151,10 +1151,11 @@ STR_TERRAIN_TYPE_ALPINIST :Alpinist
|
||||||
STR_TERRAIN_TYPE_CUSTOM :Custom height
|
STR_TERRAIN_TYPE_CUSTOM :Custom height
|
||||||
STR_TERRAIN_TYPE_CUSTOM_VALUE :Custom height ({NUM})
|
STR_TERRAIN_TYPE_CUSTOM_VALUE :Custom height ({NUM})
|
||||||
|
|
||||||
###length 3
|
###length 4
|
||||||
STR_CITY_APPROVAL_PERMISSIVE :Permissive
|
STR_CITY_APPROVAL_LENIENT :Lenient
|
||||||
STR_CITY_APPROVAL_TOLERANT :Tolerant
|
STR_CITY_APPROVAL_TOLERANT :Tolerant
|
||||||
STR_CITY_APPROVAL_HOSTILE :Hostile
|
STR_CITY_APPROVAL_HOSTILE :Hostile
|
||||||
|
STR_CITY_APPROVAL_PERMISSIVE :Permissive (no effect on company actions)
|
||||||
|
|
||||||
STR_WARNING_NO_SUITABLE_AI :{WHITE}No suitable AIs available...{}You can download several AIs via the 'Online Content' system
|
STR_WARNING_NO_SUITABLE_AI :{WHITE}No suitable AIs available...{}You can download several AIs via the 'Online Content' system
|
||||||
|
|
||||||
|
|
|
@ -519,7 +519,7 @@ struct EconomySettings {
|
||||||
bool allow_town_roads; ///< towns are allowed to build roads (always allowed when generating world / in SE)
|
bool allow_town_roads; ///< towns are allowed to build roads (always allowed when generating world / in SE)
|
||||||
TownFounding found_town; ///< town founding.
|
TownFounding found_town; ///< town founding.
|
||||||
bool station_noise_level; ///< build new airports when the town noise level is still within accepted limits
|
bool station_noise_level; ///< build new airports when the town noise level is still within accepted limits
|
||||||
uint16 town_noise_population[3]; ///< population to base decision on noise evaluation (@see town_council_tolerance)
|
uint16 town_noise_population[4]; ///< population to base decision on noise evaluation (@see town_council_tolerance)
|
||||||
bool allow_town_level_crossings; ///< towns are allowed to build level crossings
|
bool allow_town_level_crossings; ///< towns are allowed to build level crossings
|
||||||
bool infrastructure_maintenance; ///< enable monthly maintenance fee for owner infrastructure
|
bool infrastructure_maintenance; ///< enable monthly maintenance fee for owner infrastructure
|
||||||
};
|
};
|
||||||
|
|
|
@ -2258,7 +2258,7 @@ CommandCost CmdBuildAirport(DoCommandFlag flags, TileIndex tile, byte airport_ty
|
||||||
authority_refuse_message = STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE;
|
authority_refuse_message = STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE;
|
||||||
authority_refuse_town = nearest;
|
authority_refuse_town = nearest;
|
||||||
}
|
}
|
||||||
} else {
|
} else if (_settings_game.difficulty.town_council_tolerance != TOWN_COUNCIL_PERMISSIVE) {
|
||||||
Town *t = ClosestTownFromTile(tile, UINT_MAX);
|
Town *t = ClosestTownFromTile(tile, UINT_MAX);
|
||||||
uint num = 0;
|
uint num = 0;
|
||||||
for (const Station *st : Station::Iterate()) {
|
for (const Station *st : Station::Iterate()) {
|
||||||
|
|
|
@ -265,11 +265,11 @@ from = SLV_97
|
||||||
flags = SF_GUI_DROPDOWN
|
flags = SF_GUI_DROPDOWN
|
||||||
def = 0
|
def = 0
|
||||||
min = 0
|
min = 0
|
||||||
max = 2
|
max = 3
|
||||||
interval = 1
|
interval = 1
|
||||||
str = STR_CONFIG_SETTING_CITY_APPROVAL
|
str = STR_CONFIG_SETTING_CITY_APPROVAL
|
||||||
strhelp = STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT
|
strhelp = STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT
|
||||||
strval = STR_CITY_APPROVAL_PERMISSIVE
|
strval = STR_CITY_APPROVAL_LENIENT
|
||||||
post_cb = DifficultyNoiseChange
|
post_cb = DifficultyNoiseChange
|
||||||
|
|
||||||
[SDTG_VAR]
|
[SDTG_VAR]
|
||||||
|
|
|
@ -284,6 +284,14 @@ min = 800
|
||||||
max = 65535
|
max = 65535
|
||||||
cat = SC_EXPERT
|
cat = SC_EXPERT
|
||||||
|
|
||||||
|
[SDT_VAR]
|
||||||
|
var = economy.town_noise_population[3]
|
||||||
|
type = SLE_UINT16
|
||||||
|
def = 400
|
||||||
|
min = 100
|
||||||
|
max = 65535
|
||||||
|
cat = SC_EXPERT
|
||||||
|
|
||||||
[SDT_BOOL]
|
[SDT_BOOL]
|
||||||
var = economy.infrastructure_maintenance
|
var = economy.infrastructure_maintenance
|
||||||
from = SLV_166
|
from = SLV_166
|
||||||
|
|
|
@ -152,6 +152,13 @@ void ExpandTown(Town *t);
|
||||||
|
|
||||||
void RebuildTownKdtree();
|
void RebuildTownKdtree();
|
||||||
|
|
||||||
|
/** Settings for town council attitudes. */
|
||||||
|
enum TownCouncilAttitudes {
|
||||||
|
TOWN_COUNCIL_LENIENT = 0,
|
||||||
|
TOWN_COUNCIL_TOLERANT = 1,
|
||||||
|
TOWN_COUNCIL_HOSTILE = 2,
|
||||||
|
TOWN_COUNCIL_PERMISSIVE = 3,
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Action types that a company must ask permission for to a town authority.
|
* Action types that a company must ask permission for to a town authority.
|
||||||
|
|
|
@ -675,7 +675,8 @@ static CommandCost ClearTile_Town(TileIndex tile, DoCommandFlag flags)
|
||||||
Town *t = Town::GetByTile(tile);
|
Town *t = Town::GetByTile(tile);
|
||||||
|
|
||||||
if (Company::IsValidID(_current_company)) {
|
if (Company::IsValidID(_current_company)) {
|
||||||
if (rating > t->ratings[_current_company] && !(flags & DC_NO_TEST_TOWN_RATING) && !_cheats.magic_bulldozer.value) {
|
if (rating > t->ratings[_current_company] && !(flags & DC_NO_TEST_TOWN_RATING) &&
|
||||||
|
!_cheats.magic_bulldozer.value && _settings_game.difficulty.town_council_tolerance != TOWN_COUNCIL_PERMISSIVE) {
|
||||||
SetDParam(0, t->index);
|
SetDParam(0, t->index);
|
||||||
return_cmd_error(STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS);
|
return_cmd_error(STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS);
|
||||||
}
|
}
|
||||||
|
@ -3527,6 +3528,9 @@ static void UpdateTownUnwanted(Town *t)
|
||||||
*/
|
*/
|
||||||
CommandCost CheckIfAuthorityAllowsNewStation(TileIndex tile, DoCommandFlag flags)
|
CommandCost CheckIfAuthorityAllowsNewStation(TileIndex tile, DoCommandFlag flags)
|
||||||
{
|
{
|
||||||
|
/* The required rating is hardcoded to RATING_VERYPOOR (see below), not the authority attitude setting, so we can bail out like this. */
|
||||||
|
if (_settings_game.difficulty.town_council_tolerance == TOWN_COUNCIL_PERMISSIVE) return CommandCost();
|
||||||
|
|
||||||
if (!Company::IsValidID(_current_company) || (flags & DC_NO_TEST_TOWN_RATING)) return CommandCost();
|
if (!Company::IsValidID(_current_company) || (flags & DC_NO_TEST_TOWN_RATING)) return CommandCost();
|
||||||
|
|
||||||
Town *t = ClosestTownFromTile(tile, _settings_game.economy.dist_local_authority);
|
Town *t = ClosestTownFromTile(tile, _settings_game.economy.dist_local_authority);
|
||||||
|
@ -3691,9 +3695,10 @@ CommandCost CheckforTownRating(DoCommandFlag flags, Town *t, TownRatingCheckType
|
||||||
/* minimum rating needed to be allowed to remove stuff */
|
/* minimum rating needed to be allowed to remove stuff */
|
||||||
static const int needed_rating[][TOWN_RATING_CHECK_TYPE_COUNT] = {
|
static const int needed_rating[][TOWN_RATING_CHECK_TYPE_COUNT] = {
|
||||||
/* ROAD_REMOVE, TUNNELBRIDGE_REMOVE */
|
/* ROAD_REMOVE, TUNNELBRIDGE_REMOVE */
|
||||||
{ RATING_ROAD_NEEDED_PERMISSIVE, RATING_TUNNEL_BRIDGE_NEEDED_PERMISSIVE}, // Permissive
|
{ RATING_ROAD_NEEDED_LENIENT, RATING_TUNNEL_BRIDGE_NEEDED_LENIENT}, // Lenient
|
||||||
{ RATING_ROAD_NEEDED_NEUTRAL, RATING_TUNNEL_BRIDGE_NEEDED_NEUTRAL}, // Neutral
|
{ RATING_ROAD_NEEDED_NEUTRAL, RATING_TUNNEL_BRIDGE_NEEDED_NEUTRAL}, // Neutral
|
||||||
{ RATING_ROAD_NEEDED_HOSTILE, RATING_TUNNEL_BRIDGE_NEEDED_HOSTILE}, // Hostile
|
{ RATING_ROAD_NEEDED_HOSTILE, RATING_TUNNEL_BRIDGE_NEEDED_HOSTILE}, // Hostile
|
||||||
|
{ RATING_ROAD_NEEDED_PERMISSIVE, RATING_TUNNEL_BRIDGE_NEEDED_PERMISSIVE}, // Permissive
|
||||||
};
|
};
|
||||||
|
|
||||||
/* check if you're allowed to remove the road/bridge/tunnel
|
/* check if you're allowed to remove the road/bridge/tunnel
|
||||||
|
|
|
@ -56,16 +56,18 @@ enum Ratings {
|
||||||
|
|
||||||
RATING_TUNNEL_BRIDGE_DOWN_STEP = -250, ///< penalty for removing town owned tunnel or bridge
|
RATING_TUNNEL_BRIDGE_DOWN_STEP = -250, ///< penalty for removing town owned tunnel or bridge
|
||||||
RATING_TUNNEL_BRIDGE_MINIMUM = 0, ///< minimum rating after removing tunnel or bridge
|
RATING_TUNNEL_BRIDGE_MINIMUM = 0, ///< minimum rating after removing tunnel or bridge
|
||||||
RATING_TUNNEL_BRIDGE_NEEDED_PERMISSIVE = 144, ///< rating needed, "Permissive" difficulty settings
|
RATING_TUNNEL_BRIDGE_NEEDED_LENIENT = 144, ///< rating needed, "Lenient" difficulty settings
|
||||||
RATING_TUNNEL_BRIDGE_NEEDED_NEUTRAL = 208, ///< "Neutral"
|
RATING_TUNNEL_BRIDGE_NEEDED_NEUTRAL = 208, ///< "Neutral"
|
||||||
RATING_TUNNEL_BRIDGE_NEEDED_HOSTILE = 400, ///< "Hostile"
|
RATING_TUNNEL_BRIDGE_NEEDED_HOSTILE = 400, ///< "Hostile"
|
||||||
|
RATING_TUNNEL_BRIDGE_NEEDED_PERMISSIVE = RATING_MINIMUM, ///< "Permissive" (local authority disabled)
|
||||||
|
|
||||||
RATING_ROAD_DOWN_STEP_INNER = -50, ///< removing a roadpiece in the middle
|
RATING_ROAD_DOWN_STEP_INNER = -50, ///< removing a roadpiece in the middle
|
||||||
RATING_ROAD_DOWN_STEP_EDGE = -18, ///< removing a roadpiece at the edge
|
RATING_ROAD_DOWN_STEP_EDGE = -18, ///< removing a roadpiece at the edge
|
||||||
RATING_ROAD_MINIMUM = -100, ///< minimum rating after removing town owned road
|
RATING_ROAD_MINIMUM = -100, ///< minimum rating after removing town owned road
|
||||||
RATING_ROAD_NEEDED_PERMISSIVE = 16, ///< rating needed, "Permissive" difficulty settings
|
RATING_ROAD_NEEDED_LENIENT = 16, ///< rating needed, "Lenient" difficulty settings
|
||||||
RATING_ROAD_NEEDED_NEUTRAL = 64, ///< "Neutral"
|
RATING_ROAD_NEEDED_NEUTRAL = 64, ///< "Neutral"
|
||||||
RATING_ROAD_NEEDED_HOSTILE = 112, ///< "Hostile"
|
RATING_ROAD_NEEDED_HOSTILE = 112, ///< "Hostile"
|
||||||
|
RATING_ROAD_NEEDED_PERMISSIVE = RATING_MINIMUM, ///< "Permissive" (local authority disabled)
|
||||||
|
|
||||||
RATING_HOUSE_MINIMUM = RATING_MINIMUM,
|
RATING_HOUSE_MINIMUM = RATING_MINIMUM,
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue