Merge branch 'master' into jgrpp

pull/82/head
Jonathan G Rennison 5 years ago
commit a4a3a6a630

@ -1184,7 +1184,7 @@ STR_CONFIG_SETTING_AUTOSLOPE :Allow terraform
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Allow terraforming under buildings and tracks without removing them
STR_CONFIG_SETTING_CATCHMENT :Allow more realistically sized catchment areas: {STRING}
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Have differently sized catchment areas for different types of stations and airports
STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES :Company stations can serve industries with attached neutral stations: {STRING}
STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES :Company stations can serve industries that have built-in neutral stations: {STRING}
STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :When enabled, industries with attached stations (such as Oil Rigs) may also be served by company owned stations built nearby. When disabled, these industries may only be served by their attached stations. Any nearby company stations won't be able to serve them, nor will the attached station serve anything else other than the industry
STR_CONFIG_SETTING_EXTRADYNAMITE :Allow removal of more town-owned roads, bridges and tunnels: {STRING}
STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Make it easier to remove town-owned infrastructure and buildings
@ -3436,6 +3436,7 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Ungrouped road
STR_GROUP_DEFAULT_SHIPS :Ungrouped ships
STR_GROUP_DEFAULT_AIRCRAFTS :Ungrouped aircraft
STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA})
STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groups - click on a group to list all vehicles of this group. Drag and drop groups to arrange hierarchy.
STR_GROUP_CREATE_TOOLTIP :{BLACK}Click to create a group
@ -4473,6 +4474,7 @@ STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Can't cr
STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Can't delete this group...
STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Can't rename group...
STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Can't set parent group...
STR_ERROR_GROUP_CAN_T_SET_PARENT_RECURSION :{WHITE}... loops in the group hierarchy are not allowed
STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Can't remove all vehicles from this group...
STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Can't add the vehicle to this group...
STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Can't add shared vehicles to group...

@ -3500,6 +3500,7 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Csoportosítatl
STR_GROUP_DEFAULT_SHIPS :Csoportosítatlan hajók
STR_GROUP_DEFAULT_AIRCRAFTS :Csoportosítatlan repülők
STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA})
STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Csoportok - Kattints a csoport nevére a járművek listázásához. Húzással a csoportokat hierarchiába rendezheted.
STR_GROUP_CREATE_TOOLTIP :{BLACK}Csoport létrehozásához kattints ide
@ -4537,6 +4538,7 @@ STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Csoport
STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Csoport törlése sikertelen...
STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Csoport átnevezése sikertelen...
STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Nem teheted ezt a csoportot a másik alcsoportjává...
STR_ERROR_GROUP_CAN_T_SET_PARENT_RECURSION :{WHITE}... kört okozna a csoporthierarchiában
STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Csoport járműveinek törlése sikertelen...
STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Jármű hozzáadása a csoporthoz sikertelen...
STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Megosztott jármű csoporthoz való hozzáadása sikertelen...

@ -1005,6 +1005,7 @@ STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLAC
STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Praeses)
STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}Novum oppidum {1:TOWN} constructum expensis a {0:STRING} comparatis!
STR_NEWS_NEW_TOWN_UNSPONSORED :{BLACK}{BIG_FONT}Novum oppidum nomine {TOWN} conditum!
STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Nov{G us a um i ae a} {STRING} construitur apud {TOWN}!
STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Nov{G us a um i ae a} {STRING} adsit{G 0 us a um i ae a} apud {TOWN}!
@ -1176,11 +1177,16 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :alia
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Magnitudo interfaciei
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Eligere magnitudinem interfaciei adhibendam
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Solita
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Simplex
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Duplex
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quadruplex
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Magnitudo Litterarum
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Eligere magnitudinem litterarum adhibendam
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Simplex
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Duplex
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Quadruplex
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Fundamentum graphicum
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Eligere fundamentum graphicum adhibendum
@ -1364,6 +1370,7 @@ STR_CONFIG_SETTING_AUTOSLOPE :Sinere terram p
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Sinere terram plasmare sub aedificia et vias; tum necesse non est aedificia viasve removere
STR_CONFIG_SETTING_CATCHMENT :Sinere magnitudines regionum acceptionis magis realisticas esse: {STRING}
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Si electa, aeroportus et alii stationum typi habent meliores regiones acceptionis
STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES :Stationes societatum licet operari industriis quae proprias stationes habent: {STRING}
STR_CONFIG_SETTING_EXTRADYNAMITE :Sinere plures vias, pontes, et cuniculos removere in oppidis: {STRING}
STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Si electa, infrastructura et aedificia oppidorum sunt magis facilia remotu
STR_CONFIG_SETTING_TRAIN_LENGTH :Longitudo traminum maxima: {STRING}
@ -1449,6 +1456,8 @@ STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Non lice
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Tuitio infrastructurae: {STRING}
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Electa, infrastructura prodit expensa tuitionis. Expensa crescunt celerius quam pro portione magnitudini retis, ergo societates magnae affectantur magis quam parvae
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Societatis color initialis: {STRING}
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Eligere colorem initialem societatis
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Aeroportus numquam recedunt: {STRING}
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Electa, omnes aeroportuum typi permanent post introductionem
@ -1761,6 +1770,10 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Electa, licet l
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Non licet
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Licet
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Licet, atque propria dispositio oppidi
STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Productionis urbani modus: {STRING}
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Quot onera aedificia oppidorum faciunt.{}Modus quadraticus: Oppidum duplarum incolarum, quadruplex faciat vectores.{}Modus linearis: Oppidum duplarum incolarum, duplex faciat vectores.
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Quadraticus (originalis)
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Linearis
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Positio arborum in ludo: {STRING}
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Quomodo arbores apparent intra ludum. Forsitan industriae afficiuntur quibus necesse sunt arbores, e.g. castra lignatorum
@ -2262,6 +2275,7 @@ STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Disiunge
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servatrum tutum est. Tesseram inscribe
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Societas tuta est. Tesseram inscribe
STR_NETWORK_COMPANY_LIST_CLIENT_LIST_CAPTION :{WHITE}Index clientum
# Network company list added strings
STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Index clientum
@ -2899,6 +2913,7 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD
# Framerate display window
STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x)
STR_FRAMERATE_CURRENT :{WHITE}Currens
STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL} ms
STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL} ms
STR_FRAMERATE_MS_BAD :{RED}{DECIMAL} ms
@ -2935,6 +2950,8 @@ STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nulla in
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING}
STR_SAVELOAD_FILTER_TITLE :{BLACK}Series colans:
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Superscribere Fasciculo
STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Esne certus te velle superscribere huic fasciculo?
STR_SAVELOAD_OSKTITLE :{BLACK}Inscribe nomen ludi
@ -3052,7 +3069,12 @@ STR_NEWGRF_SETTINGS_VERSION :{BLACK}Editio:
STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Editio congrua minima: {SILVER}{NUM}
STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING}
STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Coloris tabula: {SILVER}{STRING}
STR_NEWGRF_SETTINGS_PALETTE_DEFAULT :Solita (D)
STR_NEWGRF_SETTINGS_PALETTE_DEFAULT_32BPP :Solita (D) / 32 bpp
STR_NEWGRF_SETTINGS_PALETTE_LEGACY :Antiqua (W)
STR_NEWGRF_SETTINGS_PALETTE_LEGACY_32BPP :Antiqua (W) / 32 bpp
STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parametra: {SILVER}{STRING}
STR_NEWGRF_SETTINGS_PARAMETER_NONE :Nulla
STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Nulla indicia parabilia
STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Par fasciculus non inventus
@ -3133,6 +3155,8 @@ STR_NEWGRF_ERROR_READ_BOUNDS :Lectio post ter
STR_NEWGRF_ERROR_GRM_FAILED :Opes GRF desideratae non parabiles (spiritus {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} neglectus est a {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Irrita/ignota dispositio spiritus (spiritus {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Nimis elementa in indice possessionum (spiritus {3:NUM}, elementum {4:HEX})
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Revocatio productionis industriae irrita (spiritus {3:NUM}, "{2:STRING}")
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Maxime Cavendum Est!
@ -3164,6 +3188,7 @@ STR_NEWGRF_BUGGY :{WHITE}NewGRF '
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Indicium oneris/reficiendi '{1:ENGINE}' post constructionem differt eo quod est in indice emptionis. Ergo fortasse autoredemptio/automutatio non possit reficere
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' facit ut versatur ad infinitum in revocatione productionis
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Revocatio {1:HEX} reddidit conlationem ignotam irritamve {2:HEX}
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' reddidit onus irritum in revocatione productionis apud {2:HEX}
# 'User removed essential NewGRFs'-placeholders for stuff without specs
STR_NEWGRF_INVALID_CARGO :<onus irritum>
@ -3307,6 +3332,7 @@ STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Preme in
# Story book window
STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Librum Fabularum
STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Librum Fabularum Universale
STR_STORY_BOOK_SPECTATOR :Librum Fabularum Universale
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
STR_STORY_BOOK_GENERIC_PAGE_ITEM :Pagina {NUM}
STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Salire ad quamdam paginam eligendo eam in hac indice
@ -3569,6 +3595,7 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Vehicula viaria
STR_GROUP_DEFAULT_SHIPS :Naves sine grege
STR_GROUP_DEFAULT_AIRCRAFTS :Aeroplana sine grege
STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA})
STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Greges - preme in gregem ut index vehiculorum huius gregis ostendeatur. Trahe poneque greges ut ordinentur.
STR_GROUP_CREATE_TOOLTIP :{BLACK}Preme ut grex creatur
@ -3602,6 +3629,7 @@ STR_BUY_VEHICLE_SHIP_CAPTION :Naves Novae
STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Aeroplana Nova
STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Pretium: {GOLD}{CURRENCY_LONG}{BLACK} Pondus: {GOLD}{WEIGHT_SHORT}
STR_PURCHASE_INFO_COST_REFIT_WEIGHT :{BLACK}Pretium: {GOLD}{CURRENCY_LONG}{BLACK} (Pretium Reficiendi: {GOLD}{CURRENCY_LONG}{BLACK}) Pondus: {GOLD}{WEIGHT_SHORT}
STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Velocitas: {GOLD}{VELOCITY}{BLACK} Potestas: {GOLD}{POWER}
STR_PURCHASE_INFO_SPEED :{BLACK}Velocitas: {GOLD}{VELOCITY}
STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Velocitas in mare: {GOLD}{VELOCITY}
@ -3612,12 +3640,15 @@ STR_PURCHASE_INFO_REFITTABLE :(refectabilis)
STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Productum: {GOLD}{NUM}{BLACK} Aetas: {GOLD}{COMMA} ann{P us i}
STR_PURCHASE_INFO_RELIABILITY :{BLACK}Constantia Maxima: {GOLD}{COMMA}%
STR_PURCHASE_INFO_COST :{BLACK}Pretium: {GOLD}{CURRENCY_LONG}
STR_PURCHASE_INFO_COST_REFIT :{BLACK}Pretium: {GOLD}{CURRENCY_LONG}{BLACK} (Pretium Reficiendi: {GOLD}{CURRENCY_LONG}{BLACK})
STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Pondus: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT})
STR_PURCHASE_INFO_COST_SPEED :{BLACK}Pretium: {GOLD}{CURRENCY_LONG}{BLACK} Velocitas: {GOLD}{VELOCITY}
STR_PURCHASE_INFO_COST_REFIT_SPEED :{BLACK}Pretium: {GOLD}{CURRENCY_LONG}{BLACK} (Pretium Reficiendi: {GOLD}{CURRENCY_LONG}{BLACK}) Velocitas: {GOLD}{VELOCITY}
STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Capacitas: {GOLD}{CARGO_LONG}, {CARGO_LONG}
STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Currus Potentiati: {GOLD}+{POWER}{BLACK} Pondus: {GOLD}+{WEIGHT_SHORT}
STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Refectabilis: {GOLD}{STRING.dat}
STR_PURCHASE_INFO_ALL_TYPES :Omnibus onerum typis
STR_PURCHASE_INFO_NONE :Nulla
STR_PURCHASE_INFO_ALL_BUT :Omnibus praeterquam {CARGO_LIST.dat}
STR_PURCHASE_INFO_MAX_TE :{BLACK}Vis Tractionis Maxima: {GOLD}{FORCE}
STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Max. distantia volatus: {GOLD}{COMMA} tegulas
@ -4027,6 +4058,7 @@ STR_ORDER_CONDITIONAL_AGE :aetas (annorum)
STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :ministrandum
STR_ORDER_CONDITIONAL_UNCONDITIONALLY :semper
STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :aetas reliqua (anni)
STR_ORDER_CONDITIONAL_MAX_RELIABILITY :Constantia maxima
STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Quomodo valores electi componuntur indicio vehiculi
STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :aequalis est

@ -1258,7 +1258,7 @@ STR_CONFIG_SETTING_PLANE_SPEED :Factor de veloc
STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Establece la velocidad relativa de las aeronaves comparada con la de otros vehículos para reducir las utilidades de transportación aérea
STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1/{COMMA}
STR_CONFIG_SETTING_PLANE_CRASHES :Cantidad de accidentes aéreos: {STRING}
STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Probabilidad de que ocurran accidentes aéreos
STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Probabilidad de que ocurran accidentes aéreos.{}* Las aeronaves grandes son más propensas a accidentes en areopuertos pequeños
STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Ninguno*
STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Reducida
STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal
@ -1584,6 +1584,10 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Los jugadores p
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Prohibido
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Permitido
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Permitido, diseño urbano personalizado
STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Generación de cargamento en pueblios: {STRING}
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Cantidad de cargamento producido por las casas con relación a la población.{}Crecimiento cuadrado: un pueblo de doble tamaño genera el cuádruple de pasajeros.{}Crecimiento lineal: un pueblo de doble tamaño genera el doble de pasajeros.
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Cuadrado
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Lineal
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Crecimiento de árboles durante la partida: {STRING}
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controlar la aparición aleatoria de árboles durante la partida. Esto puede afectar industrias que dependen del crecimiento de árboles, como los aserraderos
@ -2131,7 +2135,7 @@ STR_NETWORK_CHAT_ALL :[Todos] {STRING
STR_NETWORK_CHAT_OSKTITLE :{BLACK}Introducir mensaje para el chat en red
# Network messages
STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}No se encontraron ni compilaron dispositivos sin soporte de red
STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}No se encontraron dispositivos de red
STR_NETWORK_ERROR_NOSERVER :{WHITE}No se pudo encontrar ninguna partida en red
STR_NETWORK_ERROR_NOCONNECTION :{WHITE}El servidor no responde a la petición
STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}No se pudo conectar debido a incompatibilidad de NewGRF
@ -3024,6 +3028,7 @@ STR_NEWGRF_BUGGY :{WHITE}El NewGR
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}La información de cargamento o reequipamiento para '{1:ENGINE}' difiere de la lista de compra después de la construcción. Esto puede causar que la renovación y el reemplazo automático no haga el reequipamiento correcta
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' ha causado un bucle sin fin en la llamada de producción
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}La llamada {1:HEX} devolvió un resultado desconocido o no válido {2:HEX}
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' retornó un tipo inválido de cargamento en la llamada de producción en {2:HEX}
# 'User removed essential NewGRFs'-placeholders for stuff without specs
STR_NEWGRF_INVALID_CARGO :<cargamento no válido>
@ -3463,6 +3468,7 @@ STR_BUY_VEHICLE_SHIP_CAPTION :Nuevos barcos
STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nuevas aeronaves
STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Costo: {GOLD}{CURRENCY_LONG}{BLACK} Peso: {GOLD}{WEIGHT_SHORT}
STR_PURCHASE_INFO_COST_REFIT_WEIGHT :{BLACK}Costo: {GOLD}{CURRENCY_LONG}{BLACK} (Costo de reformación: {GOLD}{CURRENCY_LONG}{BLACK}) Peso: {GOLD}{WEIGHT_SHORT}
STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Velocidad: {GOLD}{VELOCITY}{BLACK} Potencia: {GOLD}{POWER}
STR_PURCHASE_INFO_SPEED :{BLACK}Velocidad: {GOLD}{VELOCITY}
STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Velocidad en océano: {GOLD}{VELOCITY}
@ -3473,8 +3479,10 @@ STR_PURCHASE_INFO_REFITTABLE :(reequipable)
STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Diseñado: {GOLD}{NUM}{BLACK} Duración: {GOLD}{COMMA} año{P "" s}
STR_PURCHASE_INFO_RELIABILITY :{BLACK}Máx. fiabilidad: {GOLD}{COMMA}%
STR_PURCHASE_INFO_COST :{BLACK}Costo: {GOLD}{CURRENCY_LONG}
STR_PURCHASE_INFO_COST_REFIT :{BLACK}Costo: {GOLD}{CURRENCY_LONG}{BLACK} (Costo de reformación: {GOLD}{CURRENCY_LONG}{BLACK})
STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Peso: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT})
STR_PURCHASE_INFO_COST_SPEED :{BLACK}Costo: {GOLD}{CURRENCY_LONG}{BLACK} Velocidad: {GOLD}{VELOCITY}
STR_PURCHASE_INFO_COST_REFIT_SPEED :{BLACK}Costo: {GOLD}{CURRENCY_LONG}{BLACK} (Costo de reformación: {GOLD}{CURRENCY_LONG}{BLACK}) Velocidad: {GOLD}{VELOCITY}
STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Capacidad: {GOLD}{CARGO_LONG}, {CARGO_LONG}
STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Vagones con motor: {GOLD}+{POWER}{BLACK} Peso: {GOLD}+{WEIGHT_SHORT}
STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Reforma: {GOLD}{STRING}
@ -3495,12 +3503,20 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Comprar
STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Comprar
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Comprar
STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar y reformar tren
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar y reformar vehículo
STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar y reformar barco
STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar y reformar aeronave
STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar el tren elegido. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar el vehículo de carretera elegido. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar el barco elegido. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Comprar la aeronave elegida. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar y reformar tren seleccionado. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar y reformar vehículo seleccionado. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar y reformar barco seleccionado. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar y reformar areonave seleccionada. Mayús+Clic muestra una estimación del precio sin realizar la compra
STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Cambiar nombre
STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Cambiar nombre

@ -139,7 +139,10 @@ void LinkGraph::RemoveNode(NodeID id)
node_edges[id] = node_edges[last_node];
}
Station::Get(this->nodes[last_node].station)->goods[this->cargo].node = id;
this->nodes.erase(this->nodes.begin() + id);
/* Erase node by swapping with the last element. Node index is referenced
* directly from station goods entries so the order and position must remain. */
this->nodes[id] = this->nodes.back();
this->nodes.pop_back();
this->edges.EraseColumn(id);
/* Not doing EraseRow here, as having the extra invalid row doesn't hurt
* and removing it would trigger a lot of memmove. The data has already

@ -58,6 +58,8 @@ const char *MusicDriver_FluidSynth::Start(const char * const *param)
/* Create the settings. */
_midi.settings = new_fluid_settings();
if (!_midi.settings) return "Could not create midi settings";
/* Don't try to lock sample data in memory, OTTD usually does not run with privileges allowing that */
fluid_settings_setint(_midi.settings, "synth.lock-memory", 0);
/* Create the synthesizer. */
_midi.synth = new_fluid_synth(_midi.settings);

@ -100,6 +100,7 @@ AirportSpec AirportSpec::specs[NUM_AIRPORTS]; ///< Airport specifications.
assert(type < lengthof(AirportSpec::specs));
const AirportSpec *as = &AirportSpec::specs[type];
if (type >= NEW_AIRPORT_OFFSET && !as->enabled) {
if (_airport_mngr.GetGRFID(type) == 0) return as;
byte subst_id = _airport_mngr.GetSubstituteID(type);
if (subst_id == AT_INVALID) return as;
as = &AirportSpec::specs[subst_id];
@ -129,6 +130,24 @@ bool AirportSpec::IsAvailable() const
return _cur_year <= this->max_year;
}
/**
* Check if the airport would be within the map bounds at the given tile.
* @param table Selected layout table. This affects airport rotation, and therefore dimenions.
* @param tile Top corner of the airport.
* @return true iff the airport would be within the map bounds at the given tile.
*/
bool AirportSpec::IsWithinMapBounds(byte table, TileIndex tile) const
{
if (table >= this->num_table) return false;
byte w = this->size_x;
byte h = this->size_y;
if (this->rotation[table] == DIR_E || this->rotation[table] == DIR_W) Swap(w, h);
return TileX(tile) + w < MapSizeX() &&
TileY(tile) + h < MapSizeY();
}
/**
* This function initializes the airportspec array.
*/

@ -123,6 +123,7 @@ struct AirportSpec {
static AirportSpec *GetWithoutOverride(byte type);
bool IsAvailable() const;
bool IsWithinMapBounds(byte table, TileIndex index) const;
static void ResetAirports();

@ -29,7 +29,6 @@
#include "core/random_func.hpp"
#include "aircraft.h"
#include "roadveh.h"
#include "ship.h"
#include "station_base.h"
#include "waypoint_base.h"
#include "company_base.h"
@ -1085,42 +1084,6 @@ CommandCost CmdInsertOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
if (!Order::CanAllocateItem()) return_cmd_error(STR_ERROR_NO_MORE_SPACE_FOR_ORDERS);
if (v->orders.list == NULL && !OrderList::CanAllocateItem()) return_cmd_error(STR_ERROR_NO_MORE_SPACE_FOR_ORDERS);
if (v->type == VEH_SHIP && _settings_game.pf.pathfinder_for_ships != VPF_NPF) {
/* Make sure the new destination is not too far away from the previous */
const Order *prev = NULL;
uint n = 0;
/* Find the last goto station or depot order before the insert location.
* If the order is to be inserted at the beginning of the order list this
* finds the last order in the list. */
const Order *o;
FOR_VEHICLE_ORDERS(v, o) {
switch (o->GetType()) {
case OT_GOTO_STATION:
case OT_GOTO_DEPOT:
case OT_GOTO_WAYPOINT:
prev = o;
break;
default: break;
}
if (++n == sel_ord && prev != NULL) break;
}
if (prev != NULL) {
uint dist;
if (new_order.IsType(OT_CONDITIONAL)) {
/* The order is not yet inserted, so we have to do the first iteration here. */
dist = GetOrderDistance(prev, v->GetOrder(new_order.GetConditionSkipToOrder()), v);
} else {
dist = GetOrderDistance(prev, &new_order, v);
}
if (dist >= SHIP_MAX_ORDER_DISTANCE) {
return_cmd_error(STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION);
}
}
}
if (flags & DC_EXEC) {
Order *new_o = new Order();
new_o->AssignOrder(new_order);

@ -358,13 +358,14 @@ RailTypes AddDateIntroducedRailTypes(RailTypes current, Date date)
/**
* Get the rail types the given company can build.
* @param company the company to get the rail types for.
* @param introduces If true, include rail types introduced by other rail types
* @return the rail types.
*/
RailTypes GetCompanyRailtypes(CompanyID company)
RailTypes GetCompanyRailtypes(CompanyID company, bool introduces)
{
RailTypes rts = RAILTYPES_NONE;
Engine *e;
const Engine *e;
FOR_ALL_ENGINES_OF_TYPE(e, VEH_TRAIN) {
const EngineInfo *ei = &e->info;
@ -374,12 +375,46 @@ RailTypes GetCompanyRailtypes(CompanyID company)
if (rvi->railveh_type != RAILVEH_WAGON) {
assert(rvi->railtype < RAILTYPE_END);
if (introduces) {
rts |= GetRailTypeInfo(rvi->railtype)->introduces_railtypes;
} else {
SetBit(rts, rvi->railtype);
}
}
}
}
if (introduces) return AddDateIntroducedRailTypes(rts, _date);
return rts;
}
/**
* Get list of rail types, regardless of company availability.
* @param introduces If true, include rail types introduced by other rail types
* @return the rail types.
*/
RailTypes GetRailTypes(bool introduces)
{
RailTypes rts = RAILTYPES_NONE;
const Engine *e;
FOR_ALL_ENGINES_OF_TYPE(e, VEH_TRAIN) {
const EngineInfo *ei = &e->info;
if (!HasBit(ei->climates, _settings_game.game_creation.landscape)) continue;
const RailVehicleInfo *rvi = &e->u.rail;
if (rvi->railveh_type != RAILVEH_WAGON) {
assert(rvi->railtype < RAILTYPE_END);
if (introduces) {
rts |= GetRailTypeInfo(rvi->railtype)->introduces_railtypes;
} else {
SetBit(rts, rvi->railtype);
}
}
}
return AddDateIntroducedRailTypes(rts, _date);
if (introduces) return AddDateIntroducedRailTypes(rts, MAX_DAY);
return rts;
}
/**

@ -455,7 +455,8 @@ bool ValParamRailtype(const RailType rail);
RailTypes AddDateIntroducedRailTypes(RailTypes current, Date date);
RailType GetBestRailtype(const CompanyID company);
RailTypes GetCompanyRailtypes(const CompanyID c);
RailTypes GetCompanyRailtypes(CompanyID company, bool introduces = true);
RailTypes GetRailTypes(bool introduces);
RailType GetRailTypeByLabel(RailTypeLabel label, bool allow_alternate_labels = true);

@ -2182,20 +2182,20 @@ void InitializeRailGUI()
*/
DropDownList *GetRailTypeDropDownList(bool for_replacement, bool all_option)
{
RailTypes used_railtypes = RAILTYPES_NONE;
RailTypes used_railtypes;
RailTypes avail_railtypes;
/* Find the used railtypes. */
Engine *e;
FOR_ALL_ENGINES_OF_TYPE(e, VEH_TRAIN) {
if (!HasBit(e->info.climates, _settings_game.game_creation.landscape)) continue;
const Company *c = Company::Get(_local_company);
used_railtypes |= GetRailTypeInfo(e->u.rail.railtype)->introduces_railtypes;
/* Find the used railtypes. */
if (for_replacement) {
avail_railtypes = GetCompanyRailtypes(c->index, false);
used_railtypes = GetRailTypes(false);
} else {
avail_railtypes = c->avail_railtypes;
used_railtypes = GetRailTypes(true);
}
/* Get the date introduced railtypes as well. */
used_railtypes = AddDateIntroducedRailTypes(used_railtypes, MAX_DAY);
const Company *c = Company::Get(_local_company);
DropDownList *list = new DropDownList();
if (all_option) {
@ -2223,9 +2223,9 @@ DropDownList *GetRailTypeDropDownList(bool for_replacement, bool all_option)
StringID str = for_replacement ? rti->strings.replace_text : (rti->max_speed > 0 ? STR_TOOLBAR_RAILTYPE_VELOCITY : STR_JUST_STRING);
DropDownListParamStringItem *item;
if (for_replacement) {
item = new DropDownListParamStringItem(str, rt, !HasBit(c->avail_railtypes, rt));
item = new DropDownListParamStringItem(str, rt, !HasBit(avail_railtypes, rt));
} else {
DropDownListIconItem *iconitem = new DropDownListIconItem(rti->gui_sprites.build_x_rail, PAL_NONE, str, rt, !HasBit(c->avail_railtypes, rt));
DropDownListIconItem *iconitem = new DropDownListIconItem(rti->gui_sprites.build_x_rail, PAL_NONE, str, rt, !HasBit(avail_railtypes, rt));
iconitem->SetDimension(d);
item = iconitem;
}

@ -24,6 +24,8 @@
* \li AIGroup::SetSecondaryColour
* \li AIGroup::GetPrimaryColour
* \li AIGroup::GetSecondaryColour
* \li AIVehicle::BuildVehicleWithRefit
* \li AIVehicle::GetBuildWithRefitCapacity
*
* \b 1.9.0
*

@ -19,6 +19,10 @@
*
* This version is not yet released. The following changes are not set in stone yet.
*
* API additions:
* \li GSVehicle::BuildVehicleWithRefit
* \li GSVehicle::GetBuildWithRefitCapacity
*
* \b 1.9.0
*
* API additions:

@ -136,8 +136,10 @@
if (!::IsValidTile(tile)) return -1;
if (!IsAirportInformationAvailable(type)) return -1;
const AirportSpec *as = ::AirportSpec::Get(type);
if (!as->IsWithinMapBounds(0, tile)) return -1;
if (_settings_game.economy.station_noise_level) {
const AirportSpec *as = ::AirportSpec::Get(type);
AirportTileTableIterator it(as->table[0], tile);
uint dist;
AirportGetNearestTown(as, it, dist);
@ -155,6 +157,8 @@
if (!IsAirportInformationAvailable(type)) return INVALID_TOWN;
const AirportSpec *as = AirportSpec::Get(type);
if (!as->IsWithinMapBounds(0, tile)) return INVALID_TOWN;
uint dist;
return AirportGetNearestTown(as, AirportTileTableIterator(as->table[0], tile), dist)->index;
}

@ -256,9 +256,6 @@
if (!IsValidEngine(engine_id)) return 0;
switch (GetVehicleType(engine_id)) {
case ScriptVehicle::VT_WATER:
return _settings_game.pf.pathfinder_for_ships != VPF_NPF ? 129 : 0;
case ScriptVehicle::VT_AIR:
return ::Engine::Get(engine_id)->GetRange() * ::Engine::Get(engine_id)->GetRange();

@ -472,9 +472,6 @@
const ::Vehicle *v = ::Vehicle::Get(vehicle_id);
switch (v->type) {
case VEH_SHIP:
return _settings_game.pf.pathfinder_for_ships != VPF_NPF ? 129 : 0;
case VEH_AIRCRAFT:
return ::Aircraft::From(v)->acache.cached_max_range_sqr;

@ -60,8 +60,6 @@ struct Ship FINAL : public SpecializedVehicle<Ship, VEH_SHIP> {
void SetDestTile(TileIndex tile);
};
static const uint SHIP_MAX_ORDER_DISTANCE = 130;
/**
* Iterate over all ships.
* @param var The variable used for iteration.

@ -496,8 +496,8 @@ static Track ChooseShipTrack(Ship *v, TileIndex tile, DiagDirection enterdir, Tr
bool path_found = true;
Track track;
if (v->dest_tile == 0 || DistanceManhattan(tile, v->dest_tile) > SHIP_MAX_ORDER_DISTANCE + 5) {
/* No destination or destination too far, don't invoke pathfinder. */
if (v->dest_tile == 0) {
/* No destination, don't invoke pathfinder. */
track = TrackBitsToTrack(v->state);
if (!IsDiagonalTrack(track)) track = TrackToOppositeTrack(track);
if (!HasBit(tracks, track)) track = FindFirstTrack(tracks);

@ -241,7 +241,7 @@ static const LegendAndColour * const _legend_table[] = {
SmallMapColourScheme _heightmap_schemes[] = {
{NULL, _green_map_heights, lengthof(_green_map_heights), MKCOLOUR_XXXX(0x5B)}, ///< Green colour scheme.
{NULL, _dark_green_map_heights, lengthof(_dark_green_map_heights), MKCOLOUR_XXXX(0x62)}, ///< Dark green colour scheme.
{NULL, _violet_map_heights, lengthof(_violet_map_heights), MKCOLOUR_XXXX(0x82)}, ///< Violet colour scheme.
{NULL, _violet_map_heights, lengthof(_violet_map_heights), MKCOLOUR_XXXX(0x81)}, ///< Violet colour scheme.
};
/**

@ -2403,6 +2403,7 @@ CommandCost CmdBuildAirport(TileIndex tile, DoCommandFlag flags, uint32 p1, uint
/* Check if a valid, buildable airport was chosen for construction */
const AirportSpec *as = AirportSpec::Get(airport_type);
if (!as->IsAvailable() || layout >= as->num_table) return CMD_ERROR;
if (!as->IsWithinMapBounds(layout, tile)) return CMD_ERROR;
Direction rotation = as->rotation[layout];
int w = as->size_x;

@ -223,6 +223,7 @@ static void GetVideoModes()
for (int i = 0; modes[i]; i++) {
uint w = modes[i]->w;
uint h = modes[i]->h;
if (w < 640 || h < 480) continue; // reject too small resolutions
int j;
for (j = 0; j < n; j++) {
if (_resolutions[j].width == w && _resolutions[j].height == h) break;
@ -234,6 +235,7 @@ static void GetVideoModes()
if (++n == lengthof(_resolutions)) break;
}
}
if (n == 0) usererror("No usable screen resolutions found!\n");
_num_resolutions = n;
SortResolutions(_num_resolutions);
}

Loading…
Cancel
Save