Index: src/engine_type.h =================================================================== --- src/engine_type.h (revision 24184) +++ src/engine_type.h (working copy) @@ -90,8 +90,8 @@ */ enum AircraftSubTypeBits { AIR_HELI = 0, - AIR_CTOL = 1, ///< Conventional Take Off and Landing, i.e. planes - AIR_FAST = 2 + AIR_CTOL = 1 << 0, ///< Conventional Take Off and Landing, i.e. planes + AIR_FAST = 1 << 1, }; /** Information about a aircraft vehicle. */ @@ -150,23 +150,24 @@ * EngineInfo.misc_flags is a bitmask, with the following values */ enum EngineMiscFlags { - EF_RAIL_TILTS = 0, ///< Rail vehicle tilts in curves - EF_ROAD_TRAM = 0, ///< Road vehicle is a tram/light rail vehicle - EF_USES_2CC = 1, ///< Vehicle uses two company colours - EF_RAIL_IS_MU = 2, ///< Rail vehicle is a multiple-unit (DMU/EMU) - EF_RAIL_FLIPS = 3, ///< Rail vehicle can be flipped in the depot - EF_AUTO_REFIT = 4, ///< Automatic refitting is allowed + EF_RAIL_TILTS = 0, ///< Rail vehicle tilts in curves + EF_ROAD_TRAM = 0, ///< Road vehicle is a tram/light rail vehicle + EF_USES_2CC = 1 << 0, ///< Vehicle uses two company colours + EF_RAIL_IS_MU = 1 << 1, ///< Rail vehicle is a multiple-unit (DMU/EMU) + EF_RAIL_FLIPS = 3, ///< Rail vehicle can be flipped in the depot (but has EF_USES_2CC and EF_RAIL_IS_MU. Need ) + EF_AUTO_REFIT = 1 << 2, ///< Automatic refitting is allowed EF_NO_DEFAULT_CARGO_MULTIPLIER = 5, ///< Use the new capacity algorithm. The default cargotype of the vehicle does not affect capacity multipliers. CB 15 is also called in purchase list. EF_NO_BREAKDOWN_SMOKE = 6, ///< Do not show black smoke during a breakdown. + EF_EXACTLY_INTRO_DATE = 1 << 3, ///< Do not randomize intro date of this engine. }; /** * Engine.flags is a bitmask, with the following values. */ enum EngineFlags { - ENGINE_AVAILABLE = 1, ///< This vehicle is available to everyone. - ENGINE_EXCLUSIVE_PREVIEW = 2, ///< This vehicle is in the exclusive preview stage, either being used or being offered to a company. - ENGINE_OFFER_WINDOW_OPEN = 4, ///< The exclusive offer window is currently open for a company. + ENGINE_AVAILABLE = 1 << 0, ///< This vehicle is available to everyone. + ENGINE_EXCLUSIVE_PREVIEW = 1 << 1, ///< This vehicle is in the exclusive preview stage, either being used or being offered to a company. + ENGINE_OFFER_WINDOW_OPEN = 1 << 2, ///< The exclusive offer window is currently open for a company. }; static const uint MAX_LENGTH_ENGINE_NAME_CHARS = 32; ///< The maximum length of an engine name in characters including '\0' Index: src/engine.cpp =================================================================== --- src/engine.cpp (revision 24184) +++ src/engine.cpp (working copy) @@ -656,7 +656,8 @@ * of engines in early starting games. * Note: TTDP uses fixed 1922 */ uint32 r = Random(); - e->intro_date = ei->base_intro <= ConvertYMDToDate(_settings_game.game_creation.starting_year + 2, 0, 1) ? ei->base_intro : (Date)GB(r, 0, 9) + ei->base_intro; + e->intro_date = ( ei->base_intro <= ConvertYMDToDate(_settings_game.game_creation.starting_year + 2, 0, 1) || + HasBit(ei->misc_flags, EF_EXACTLY_INTRO_DATE) ) ? ei->base_intro : (Date)GB(r, 0, 9) + ei->base_intro; if (e->intro_date <= _date) { e->age = (aging_date - e->intro_date) >> 5; e->company_avail = (CompanyMask)-1;