The Game Mechanics section of the manual details the internal formula used in the game's calculations. This section of the manual uses pseudo-code and may not be 100% the same as the code in the game.
The Game Mechanics part of the manual is mainly designed to be a reference for the frequently asked question, “Why do I get this rating when I do X, Y, Z?!” Usually, this answer involves many different variables, which this section of the manual demonstrates.
The game mechanics section of the manual shows how the sausage gets made. So you really may want to avoid this portion of the manual if you enjoy the game.
This is a table of variables and their descriptions used in the formulas.
Variable | Description | Variable | Description | |
---|---|---|---|---|
Slider_Interior_Style | Interior ⇒ Style Slider | Slider_Interior_Innovation | Interior ⇒ Innovation Slider | |
Slider_Interior_Luxury | Interior ⇒ Luxury Slider | Slider_Interior_Comfort | Interior ⇒ Comfort Slider | |
Slider_Interior_Safety | Interior ⇒ Safety Slider | Slider_Interior_Technology | Interior ⇒ Technology Slider | |
Slider_Materials_MaterialQuality | Materials ⇒ Material Quality Slider | Slider_Materials_Interior | Materials ⇒ Interior Quality Slider | |
Slider_Materials_Paint | Materials ⇒ Paint Quality Slider | Slider_Materials_Techniques | Materials ⇒ Manufacturing Techniques Slider | |
Slider_Design_Style | Design Focus ⇒ Style Focus Slider | Slider_Design_Luxury | Design Focus ⇒ Luxury Focus Slider | |
Slider_Design_Safety | Design Focus ⇒ Safety Focus Slider | Slider_Design_Cargo | Design Focus ⇒ Cargo Focus Slider | |
Slider_Design_Dependability | Design Focus ⇒ Dependability Slider | Slider_Design_DesignPace | Design Focus ⇒ Development Pace Slider | |
Slider_Demographics_Gender | Design Focus ⇒ Gender Target Dropdown | Slider_Demographics_Wealth | Design Focus ⇒ Wealth Dropdown | |
Slider_Demographics_Age | Design Focus ⇒ Age Dropdown | Slider_Testing_Demographics | Testing ⇒ Market Demographics Testing Slider | |
Slider_Testing_Performance | Testing ⇒ Performance Testing Slider | Slider_Testing_FuelEconomy | Testing ⇒ Fuel Economy Testing Slider | |
Slider_Testing_Comfort | Testing ⇒ Comfortability Testing Slider | Slider_Testing_Utility | Testing ⇒ Utility Testing Slider | |
Slider_Testing_Reliability | Testing ⇒ Reliability Testing Slider |
Selection | Bonuses | Penalties |
---|---|---|
Male |
|
|
Female |
|
|
Neutral | Neutral | Neutral |
Selection | Bonuses | Penalties |
---|---|---|
Less Than 25 |
|
|
25-35 |
|
|
35-55 |
|
|
Greater Than 55 |
|
|
This demographic's “value” variable also affects several other ratings covered further down the page.
Selection | Adjustment | Value |
---|---|---|
Ultra-Low |
| 0 |
Low |
| 1 |
Lower-Middle |
| 2 |
Middle |
| 3 |
Upper-Middle |
| 4 |
Upper |
| 5 |
Wealthy |
| 6 |
Ultra-Wealthy |
| 7 |
Variable | Description | Variable | Description |
---|
year designBodySkill Car_Type.Wealth_Index global_interestrate carPriceRate designRandomVal ex_0d99p_year50R ex_1d0035p_year99 ex_1d005p_year99 ex_1d02p_year99 ex_1d03p_year99 ex_1d04p_year99 ex_1d05p_year99 FactOverallVAL
Max_Z = Largest Z coordinate value of the vehicle body. Min_Z = Smallest Z coordinate value of the vehicle body. This value is a negative number. Length = ( Max_Z + Absolute Value of Min_Z ) / 2.5 If (Length < Selected_Chassis_Length) Length = (Selected_Chassis_Length / 7.51) + ( Max_Z + Absolute Value of Min_Z )/3.0 ###### Secondary Calculations ###### if( Length > Selected_Chassis.Length*1.7 ) { AdjustValue = Length / (Selected_Chassis.Length*1.7) Length = Selected_Chassis.Length*1.7 NeedToScale = true }
Max_X = Largest X coordinate value of the vehicle body. Min_X = Smallest X coordinate value of the vehicle body. This value is a negative number. Width = ( Max_X + Absolute Value of Min_X ) / 3.0 if(Width < Selected_Chassis.Width) { Old_Width = Width Width = (Selected_Chassis.Width / 2.54) + ( Max_X + Absolute Value of Min_X )/15.5 Height_Scale = ((Width/Old_Width))/2.0 } ###### Secondary Calculations See Length for possible variables ###### if(Width>Selected_Chassis.Width*1.2) { if(Width / (Selected_Chassis.Width*1.2) > AdjustValue) AdjustValue = Width / (Selected_Chassis.Width*1.2) Width = Selected_Chassis.Width*1.2 NeedToScale = true }
Max_Y = Largest Y coordinate value of the vehicle body. Min_Y = Smallest Y coordinate value of the vehicle body. This value is a negative number. Height = ( Max_Y + Absolute Value of Min_Y ) / 2.1 ###### See Width for this variable ###### if( Height_Scale > 1 ) { Height_Scale = ((Height_Scale - 1) / 2.5) + 1 Height = Height * Height_Scale } ###### Secondary Calculations See Length And Width for these variables ###### if( NeedToAdjust) Height = Height / AdjustValue
Used for fast calculations for Drag Coefficient. Game has a more accurate version of this, but we don't use it for faster processing.
Surface_Area = ( (Width/2.5) * (Height/2.5) ) / 26
//CombinedAngles = Single value comprised of multiple angle and flow tests on the frontial surface of the vehicle body. DragArea = 0.029 * CombinedAngles + 0.000513 * (CombinedAngles^2) Drag_Coefficient = 0.08 + (((Surface_Area/115.0)+(DragArea/115.0))/1.5) if(year < 1923 AND year != 1800) { Drag_Coefficient = Drag_Coefficient + (40.0/(year-1800)) } if(year > 1990) { if(year < 2021) Drag_Coefficient = Drag_Coefficient - ((Drag_Coefficient/9.75) * ((year-1990)/100.0)) else Drag_Coefficient = Drag_Coefficient - ((Drag_Coefficient/9.75) * ((2020-1990)/100.0)) }
Weight is in KG
Weight = Selected_Chassis.Weight + (Selected_Engine.Weight*0.4536) + (Selected_Gearbox.Weight*0.4536) + Absolute Value Of((1.0+Slider_Materials_MaterialQuality*0.35 + Slider_Design_Safety*(1.3-(0.3 * ex_0d99p_year50R)) + Slider_Design_Luxury*(0.5+(0.2 * ex_1d0035p_year99)) + Slider_Interior_Comfort*0.6 + Slider_Interior_Luxury*0.7 + Slider_Interior_Safety*1.25 + Slider_Materials_Interior*0.35 - (Slider_Materials_Techniques*0.4 + Slider_Testing_FuelEconomy*0.4 + Slider_Testing_Performance*0.4)) * (50*(Car_Type.Weight_Value+0.15)*fastpow(1.0135,(year-1899)/1.4))) + (Length*1.525 + Width*1.525 + Height*1.525)*(Car_Type.Weight_Value+0.1)
Values are in L
Cargo_Volume = ((Length * Width * Height -(Selected_Engine.width * Selected_Engine.length))/1.25 + (((Length * Width * Height -(Selected_Engine.width * Selected_Engine.length))/5.0) * (Car_Type.Cargo_Value +(0.25 * Slider_Design_Cargo)+(0.1 * Slider_Testing_Utility)))) / 800.0
Values in MPG
Fuel_WeightMod = (((Weight*2.205) * 4.076055) * 0.00134102209) + ((0.7 * (Surface_Area*0.092903) * Drag_Coefficient * 21253.933) * 0.00134102209) if(Weight > 0 && ((((Weight) * 2.015955) * 0.00134102209) + (( 0.7 * (Surface_Area*0.092903) *Drag_Coefficient * 2571.353) * 0.00134102209)) > 0 ) { Fuel_Mileage = ((((Selected_Gearbox.LowGear_Ratio + 0.01) / 2.0) * ((Selected_Engine.Torque*1.05)/((Weight)))) * ((Selected_Engine.HP*1.05)/((((Weight) * 2.015955) * 0.00134102209) + ((0.7 * (Surface_Area*0.092903) * Drag_Coefficient * 2571.353) * 0.00134102209))) ) } Fuel_Mileage = Fuel_Mileage + (Selected_Engine.Torque / (Fuel_WeightMod*(3.0 + ((1.0-Selected_Gearbox.LowGear_Ratio))))) Fuel_Mileage = Fuel_Mileage * Selected_Engine.FuelMileage Fuel_Mileage = 1 + Fuel_Mileage + ((3* Selected_Gearbox.Number_Of_Gears/6.0) + (1.9*((Selected_Gearbox.FuelEconomy_Rating/100.0)) + (0.7*Slider_Testing_FuelEconomy) + (0.2*(1-Slider_Testing_Performance)))) if(Fuel_Mileage > (Selected_Engine.FuelMileage * 1.5)) Fuel_Mileage = (Selected_Engine.FuelMileage * 1.5) else if(Fuel_Mileage < (Selected_Engine.FuelMileage * 0.4)) Fuel_Mileage = (Selected_Engine.FuelMileage * 0.4)
Values are in mph.
friction = 1 if((Drag_Coefficient * 0.6461 * (Surface_Area * 0.1)) != 0) { friction = ((Weight*0.14715)/(Drag_Coefficient*0.6461*(Surface_Area*0.1)))^3 / 27.0 + ((Selected_Engine.HP*745.699872)/(Drag_Coefficient*0.6461*(Surface_Area*0.1)))^2 * 0.25 } else { friction = ((Weight*0.14715)/(1+Drag_Coefficient*0.6461*(Surface_Area*0.1)))^3 / 27.0 + ((Selected_Engine.HP*745.699872)/(1+Drag_Coefficient*0.6461*(Surface_Area*0.1)))^2 * 0.25 } sqFriction = friction^0.5 Top_Speed = 1 if((Drag_Coefficient * 1.2922 * (Surface_Area *0.1 )) != 0 && Selected_Engine.HP * 745.699872 != 0) { if(((Selected_Engine.HP*745.699872)/(Drag_Coefficient*1.2922*(Surface_Area/10.0))-sqFriction) == 0) { sqFriction++ Top_Speed = ((Selected_Engine.HP*745.699872)/ (Drag_Coefficient*1.2922*(Surface_Area/10.0))+sqFriction)^(0.3333))+ (Selected_Engine.HP*745.699872)/(Drag_Coefficient*1.2922*(Surface_Area/10.0))-sqFriction)^0.3333* ((Selected_Engine.HP*745.699872)/(Drag_Coefficient*1.2922*(Surface_Area/10.0))-sqFriction)/ ((Selected_Engine.HP*745.699872)/(Drag_Coefficient*1.2922*(Surface_Area/10.0))-sqFriction) } else { Top_Speed = ((Selected_Engine.HP*745.699872)/ (Drag_Coefficient*1.2922*(Surface_Area/10.0))+sqFriction)^0.3333+ ((Selected_Engine.HP*745.699872)/(Drag_Coefficient*1.2922*(Surface_Area/10.0))-sqFriction)^0.3333* ((Selected_Engine.HP*745.699872)/(Drag_Coefficient*1.2922*(Surface_Area/10.0))-sqFriction)/ ((Selected_Engine.HP*745.699872)/(Drag_Coefficient*1.2922*(Surface_Area/10.0))-sqFriction) } } else { Top_Speed = ((Selected_Engine.HP*745.699872)/(1+Drag_Coefficient*1.2922*(Surface_Area*0.1))+sqFriction)^0.3333+ ((Selected_Engine.HP*745.699872)/(1+Drag_Coefficient*1.2922*(Surface_Area*0.1))-sqFriction)^0.3333 * ((Selected_Engine.HP*745.699872)/(1+Drag_Coefficient*1.2922*(Surface_Area*0.1))-sqFriction)/ ((Selected_Engine.HP*745.699872)/(1+Drag_Coefficient*1.2922*(Surface_Area*0.1))-sqFriction) } limitedGears = 1 if(Selected_Gearbox.Number_Of_Gears < 4) limitedGears = Selected_Gearbox.Number_Of_Gears / 8.0 Top_Speed = Top_Speed * (2.3 + (0.45*(limitedGears+(0.02*Selected_Gearbox.Number_Of_Gears)))+ (1.0*(Selected_Gearbox.HighGear_Ratio))) HP_MaxSpeed = 1 Speed_Weight_Multiplier = 0 if(Weight/Selected_Engine.HP <= 15) Speed_Weight_Multiplier = 0 else if(Weight/Selected_Engine.HP <= 38 ) { Speed_Weight_Multiplier = ((Weight/Selected_Engine.HP)-15) / 15.0 - (((1.0-Selected_Gearbox.LowGear_Ratio)+(1.0-Selected_Gearbox.HighGear_Ratio))/2.0) } else { Speed_Weight_Multiplier = 1.5 - (((1.0-Selected_Gearbox.LowGear_Ratio)+ (1.0-Selected_Gearbox.HighGear_Ratio))/1.8) } if(Speed_Weight_Multiplier < 0) Speed_Weight_Multiplier = 0 HP_MaxSpeed = ((Selected_Engine.HP*745.7) / (Drag_Coefficient * 1.25 * (Surface_Area*0.092903)))^(1.0/3.0) * (3.6-Speed_Weight_Multiplier) if(Top_Speed > HP_MaxSpeed) { if(Weight/Selected_Engine.HP > 37) { Top_Speed = HP_MaxSpeed + 1 + (10 * ((1.0-Selected_Gearbox.LowGear_Ratio)+(0.2*(1.0-Selected_Gearbox.HighGear_Ratio)))) } else if(Selected_Engine.HP < 15) { Top_Speed = HP_MaxSpeed + (Selected_Engine.HP *0.4) + (9 * ((0.02*Selected_Gearbox.Number_Of_Gears)+(1.0*(Selected_Gearbox.HighGear_Ratio)))) } else { Top_Speed = HP_MaxSpeed + 6 + (18 * ((0.02*Selected_Gearbox.Number_Of_Gears)+(1.0*(Selected_Gearbox.HighGear_Ratio)))) } } else if(Top_Speed < HP_MaxSpeed + 6 + (9 * ((0.02*Selected_Gearbox.Number_Of_Gears)+(1.0*(Selected_Gearbox.HighGear_Ratio))))) { if(Weight/Selected_Engine.HP > 37) { Top_Speed = Top_Speed + 1 + (10 * ((1.0-Selected_Gearbox.LowGear_Ratio)+ (0.2*(1.0-Selected_Gearbox.HighGear_Ratio)))) } else { Top_Speed = Top_Speed + 6 + (9 * ((0.02*Selected_Gearbox.Number_Of_Gears)+ (1.0*(Selected_Gearbox.HighGear_Ratio)))) } }
if((Selected_Engine.HP*745.699872) Does Not Equal 0 AND ((Selected_Engine.HP*745.699872)^0.5*(Selected_Engine.Torque * 1.35581795)^0.5) Does Not Equal 0) { Acceleration_MPH = 6 * Drag_Coefficient + 0.35 * ((( Weight * 2.2046) * 719.44114176) / (Selected_Engine.HP*745.699872)) + 0.4 * ((( Weight * 2.2046)^0.5 * 719.44114176)/((Selected_Engine.HP*745.699872)^0.5 * (Selected_Engine.Torque * 1.35581795)^0.5)) * ((Selected_Gearbox.LowGear_Ratio) + 1.5 - (Selected_Gearbox.Number_Of_Gears/10.0)+(0.2*(1.1-(Selected_Gearbox.StaticPerformanceRate/100.0)))) Acceleration_KPH = 6*Drag_Coefficient + 0.35 * ((( Weight * 2.2046) * 771.60617284) / (Selected_Engine.HP*745.699872)) + 0.4 * ((( Weight * 2.2046)^0.5 * 771.60617284) / ((Selected_Engine.HP*745.699872)^0.5 * (Selected_Engine.Torque * 1.35581795)^0.5)) * ((Selected_Gearbox.LowGear_Ratio) + 1.5 - (Selected_Gearbox.Number_Of_Gears/10.0) + (0.2*(1.1-(Selected_Gearbox.StaticPerformanceRate/100.0)))) } if(Acceleration_MPH < 0.5) { Acceleration_MPH = 0.5 Acceleration_KPH = 0.5 }
Braking_60_to_0 = (((100 * ex_0d99p_year99) * (1.01-Slider_Design_Safety)) + 130.16667 + ((Weight/100.0)*(1.0-Drag_Coefficient))+ (30*(1-Selected_Chassis.FrSus_Braking)) + (30*(1-Selected_Chassis.RrSus_Braking)) + (50*(1.0-Selected_Chassis.Slider_SUS_Braking)) + (50-(Selected_Chassis.StaticPerform/2.0))) * ex_0d995p_year99
Tow_Weight = Selected_Engine.Torque * (1.25 + (4 * ((1-Selected_Gearbox.LowGear_Ratio) + (0.5*(1-Selected_Gearbox.HighGear_Ratio))))) * 7.5 + (100.0 *(static_cast<Ogre::Real>(Selected_Chassis.Original_Strength_Rating)/100.0)) Tow_Weight = Tow_Weight * 0.454 - Weight if(Tow_Weight < 10) Tow_Weight = 10
Roadhoad_LateralG = 0.4 +(0.5*(42475269.9 - (Length * Width * Height))/42475269.9) + (0.5*(Selected_Chassis.Original_Performance_Rating/100.0)) + (0.2 * ((1300.0-Weight)/1300.0))
Design_Requirements = ( 5 * Slider_Design_Cargo + 15 * Slider_Design_Dependability + 6 * Slider_Design_Luxury + 10 * Slider_Design_Safety + 10 * Slider_Design_Style + 6 * Slider_Interior_Innovation + 10 * Slider_Interior_Safety + 4 * Slider_Interior_Comfort + 4* Slider_Testing_Comfort + 4* Slider_Testing_Demographics + 4* Slider_Testing_FuelEconomy + 4* Slider_Testing_Performance + 4* Slider_Testing_Reliability + 4* Slider_Testing_Utility) + Slider_Materials_Techniques + Slider_Materials_Interior + Slider_Materials_MaterialQuality + Slider_Materials_Interior + Slider_Materials_Paint + (5*(1-(RnD_Skills/100.0)))
Manufacturing_Requirements = ((Selected_Chassis.Manufacturing_Requirements + Selected_Engine.Manufacturing_Requirements + Selected_Gearbox.Manufacturing_Requirements)/4.8) + ( 3 * Slider_Interior_Comfort + 3 * Slider_Interior_Luxury + 3 * Slider_Interior_Safety + 3 * Slider_Interior_Style + 3 * Slider_Interior_Technology+ 7 * Slider_Materials_Techniques + 4 * Slider_Materials_Interior + 4 * Slider_Materials_MaterialQuality + 4 * Slider_Materials_Paint) + (5*(1-(RnD_Skills/100.0))) + (Slider_Design_Cargo + Slider_Design_Dependability + Slider_Design_Luxury + Slider_Design_Safety + Slider_Design_Style + Slider_Testing_Comfort + Slider_Testing_Demographics + Slider_Testing_FuelEconomy + Slider_Testing_Performance + Slider_Testing_Reliability + Slider_Testing_Utility)/2.0 + (10*(Slider_Demographics_Wealth/10.0)*Slider_Testing_Demographics) if(Manufacturing_Requirements > 100) Manufacturing_Requirements = 100
Power_To_Weight_Ratio = 1; if(Weight != 0) Power_To_Weight_Ratio = (Selected_Engine.HP / ((Weight*2.205)/2000.0)) else Power_To_Weight_Ratio = (Selected_Engine.HP / ((1+Weight*2.205)/2000.0)) Power_To_Weight_Ratio = -.024 + .003 * Power_To_Weight_Ratio if(Power_To_Weight_Ratio>1) Power_To_Weight_Ratio = 1 else if(Power_To_Weight_Ratio<0.01) Power_To_Weight_Ratio=0.01 Temp_Acceleration = Acceleration_KPH Temp_Brake = Braking_60_to_0 if(Temp_Brake <= 0) Temp_Brake = 1 if(Temp_Acceleration = 0) { Temp_Acceleration = 60 Temp_Brake = 10000 } else if (Temp_Acceleration > 60) { Temp_Acceleration = 60 } Rating_Performance = 10.0 * (Selected_Chassis.Performance_Rating/100.0) + 45.0 * Power_To_Weight_Ratio + (15* Slider_Testing_Performance) + 5 * Roadhoad_LateralG + (5 * (Top_Speed/321.0)) + (5* (Selected_Gearbox.Performance_Rating/100.0)) + (5 * (50.0/Temp_Brake)) + (10 * ((60.0-Temp_Acceleration)/60.0)) +(75*Demo_Performance*Slider_Testing_Demographics) if(Rating_Performance > 100) Rating_Performance = 100 else if(Rating_Performance < 0 ) Rating_Performance = 1
Rating_Drivability = (27 * (Selected_Chassis.Performance_Rating/100.0)) + (6 * Selected_Chassis.FrSus_Steering) + (6 * Selected_Chassis.RrSus_Steering) - (5 * (Selected_Gearbox.Comfort_Rating)) + (41*(Roadhoad_LateralG/1.4)) + (15*Selected_Chassis.SubComponent_Drive_ridePerformance) + (12 * Slider_Testing_Performance) - (2 * Slider_Testing_Comfort) + (75*demoDrive*Slider_Testing_Demographics) if(Rating_Drivability > 100) { Rating_Drivability = 100; } else if(Rating_Drivability < 0 ) { Rating_Drivability = 1; }
//See Performance Rating for value of Temp_Brake Rating_Safety = (10 * Slider_Design_Safety) + (10 * Slider_Interior_Safety) + (15 * Selected_Chassis.SubComponent_Frame_Safety) + (2 * Slider_Interior_Technology) + (2*Slider_Materials_Techniques) + (2*Slider_Materials_Interior) + (2 * Slider_Materials_MaterialQuality) + (2 * Slider_Testing_Reliability) + (20 * (Weight/4000.0)) + (15*(designSafetySkill/100.0)) + (5 * (50.0/Temp_Brake) ) + (15 * (Selected_Chassis.Strength_Rating/100.0)) + (75*Demographics_Safety*Slider_Testing_Demographics) if(Rating_Safety > 100) Rating_Safety = 100 else if(Rating_Safety < 0 ) Rating_Safety = 1
Rating_Fuel_Economy = Fuel_Mileage*2 if(Rating_Fuel_Economy > 100) Rating_Fuel_Economy = 100 else if (Rating_Fuel_Economy < 1) Rating_Fuel_Economy = 1
Rating_Power = 20 * (Tow_Weight/25000.0) if(Rating_Power>50) Rating_Power=50 Rating_Power = Rating_Power + (70 * (Selected_Engine.Torque/600.0)) + (10 * (Selected_Gearbox.Power_Rating/100.0))+ (20*Demographics_Power*Slider_Testing_Demographics) if(Rating_Power>100) Rating_Power=100 else if(Rating_Power < 0) Rating_Power=0
Rating_Cargo = 85 * (Cargo_Volume / 3200.0) if(Rating_Cargo > 85) Rating_Cargo = 85 Rating_Cargo = Rating_Cargo + (10 * Slider_Design_Cargo) + (5 * Slider_Testing_Utility)+(30*Demographics_Cargo*Slider_Testing_Demographics) if(Rating_Cargo>100) Rating_Cargo=100 else if(Rating_Cargo < 0) Rating_Cargo=0
Rating_Luxury = (7 * Slider_Design_Luxury) + (7 * Slider_Design_Style) + (4 * Slider_Interior_Comfort) + (4*Slider_Interior_Innovation) + (8 * Slider_Interior_Luxury) + (4*Slider_Interior_Style) + (3*Slider_Interior_Technology) + (5*Slider_Materials_Interior) + (5* Slider_Testing_Comfort) + (3*Slider_Testing_Utility) + (15 * (Selected_Chassis.Comfort_Rating/100.0)) + (8 * (Selected_Gearbox.Comfort_Rating/100.0)) + (10 * (Selected_Engine.Smoothness_Rating/100.0)) + (5 * (Rating_Cargo/100.0)) + (5 * Selected_Gearbox.Subcomponents_Gearbox_Smoothness ) + (7*(designLuxurySkill/100.0))+(75*Demographics_Luxury*Slider_Testing_Demographics) if(Rating_Luxury>100) Rating_Luxury=100 else if(Rating_Luxury < 0) Rating_Luxury=0
Rating_Quality = (10*Slider_Design_Dependability) + (5*Slider_Design_Luxury) + (5*Slider_Design_Style) + (5*Slider_Materials_Techniques) + (15*Slider_Materials_Interior) + (10*Slider_Materials_Paint) + (10*Slider_Testing_Reliability) + (5*Slider_Testing_Utility) + (5* (Selected_Gearbox.Reliability_Rating/100.0)) + (5* (Selected_Chassis.Durability_Rating/100.0)) + (5* (Selected_Engine.Reliability_Rating/100.0)) + (20 * (designBodySkill/100.0)) + (75*(Slider_Demographics_Wealth/15.0)*Slider_Testing_Demographics) if(Rating_Quality>100) Rating_Quality=100 else if(Rating_Quality < 0) Rating_Quality=0 if(Selected_Gearbox.Max_Torque_Support < Selected_Engine.Torque) { Rating_Quality = (Rating_Quality*0.7) + ( (Rating_Quality*0.25) *(Selected_Gearbox.Max_Torque_Support / Selected_Engine.Torque)) }
Rating_Dependability = (20*Slider_Design_Dependability) + (5*Slider_Materials_MaterialQuality) + (15*Slider_Testing_Reliability) + (5*Slider_Testing_Utility) + (15*(Selected_Chassis.Durability_Rating/100.0)) + (5*(Selected_Chassis.Strength_Rating/100.0)) + (10*(Selected_Gearbox.Reliability_Rating/100.0)) + (20*(Selected_Engine.Reliability_Rating/100.0)) + (5*(Selected_Engine.Smoothness_Rating/100.0))+(75*Demographics_Dependability*Slider_Testing_Demographics) if(Rating_Dependability>100) Rating_Dependability=100 else if(Rating_Dependability < 0) Rating_Dependability=0 if(Selected_Gearbox.Max_Torque_Support < Selected_Engine.Torque) { Rating_Dependability = Rating_Dependability * (Selected_Gearbox.Max_Torque_Support / Selected_Engine.Torque) Rating_Dependability = Rating_Dependability * 0.95 }
Rating_Overall = (Rating_Performance + Rating_Drivability + Rating_Luxury + Rating_Safety + Rating_Fuel_Economy + Rating_Power + Rating_Cargo + Rating_Quality + Rating_Dependability + Selected_Chassis.Overall + Selected_Engine.Overall + Selected_Gearbox.OverallRate + designBodySkill) / 13.0 Rating_Overall = Rating_Overall + (5*PreResearchcarAmountEffect) if(Rating_Overall > 100) Rating_Overall = 100;
See the Vehicle Type Importance Ratings page for vehicle type importance ratings.
Rating_CarType = (Rating_Cargo*Car_Type.Rating_Cargo * 3) + (Rating_Dependability * Car_Type.Rating_Dependability * 3) + (Rating_Drivability * Car_Type.Rating_Drivability * 3) + (Rating_Fuel_Economy * Car_Type.Rating_Fuel * 3) + (Rating_Luxury * Car_Type.Rating_Luxury * 3) + (Rating_Performance * Car_Type.Rating_Performance * 3) + (Rating_Power * Car_Type.Rating_Power* 3) + (Rating_Safety * Car_Type.Rating_Safety* 3) maxRating_CarType = (100*Car_Type.Rating_Cargo * 3) + (100 * Car_Type.Rating_Dependability * 3) + (100 * Car_Type.Rating_Drivability * 3) + (100 * Car_Type.Rating_Fuel * 3) + (100 * Car_Type.Rating_Luxury * 3) + (100 * Car_Type.Rating_Performance * 3) + (100 * Car_Type.Rating_Power * 3) + (100 * Car_Type.Rating_Safety * 3) if(maxRating_CarType < 1) maxRating_CarType = 1; Rating_CarType = 100 * (Rating_CarType / maxRating_CarType)
VehicleImg = (Rating_CarType/75.0) * (((IMAGE_GLOBAL_GENERAL*2) + IMAGE_QUALITY + IMAGE_WORK + (IMAGE_RACING/2.0))/4.5) //If making a trim if(BaseModelImg>0) { VehicleImg = BaseModelImg + ((Rating_CarType-BaseModelImg)/20.0) BaseModelImg =0; } else //If Making New Generation { tmpVImage = Get_Most_Recent_Vehicle_Image_By_Name() if(tmpVImage > 0) VehicleImg= tmpVImage + ((Rating_CarType-tmpVImage)/20.0) } if(VehicleImg>100) VehicleImg = 100 else if(VehicleImg< 0) VehicleImg = 0
Unit_Costs = ((((200*ex_1d02p_year99*((((Slider_Interior_Comfort^2 )+ (Slider_Interior_Luxury^2) + (Slider_Interior_Safety^2) + (Slider_Interior_Technology^2) + (((Slider_Interior_Innovation^2) + (Slider_Interior_Style^2))/2.5))/3.5) + ((Slider_Design_Cargo^2 + Slider_Design_Dependability^2 + Slider_Design_Safety^2 + Slider_Design_Style^2 +Slider_Design_Luxury^2)/4.0)+ (( (Slider_Testing_Demographics^2 )+ (Slider_Testing_Performance^2 ) + (Slider_Testing_FuelEconomy^2) + (Slider_Testing_Comfort^2) + (Slider_Testing_Utility^2)+ (Slider_Testing_Reliability^2))/7.0) + (((Slider_Materials_MaterialQuality^2 ) + (Slider_Materials_Techniques^2)+ (Slider_Materials_Interior^2) + (Slider_Materials_Paint^2))/1.5))) * (Car_Type.Wealth_Index/3.0))* (global_interestrate/2.1))*carPriceRate) * designRandomVal + (130*ex_1d02p_year99*(Slider_Demographics_Wealth/5.0)) + (150*ex_1d02p_year99*(Slider_Demographics_Wealth/10.0)*Slider_Testing_Demographics) hyperSliders = ((Slider_Interior_Style + Slider_Interior_Innovation + Slider_Interior_Luxury + Slider_Interior_Comfort + Slider_Interior_Safety + Slider_Interior_Technology) + ( Slider_Materials_MaterialQuality + Slider_Materials_Interior + Slider_Materials_Paint + Slider_Materials_Techniques) + ( Slider_Design_Style + Slider_Design_Luxury + Slider_Design_Safety + Slider_Design_Cargo + Slider_Design_Dependability) + ( Slider_Testing_Demographics + Slider_Testing_Performance + Slider_Testing_FuelEconomy + Slider_Testing_Comfort + Slider_Testing_Utility + Slider_Testing_Reliability))/21.0 hyperCosts = 450 * ex_1d04p_year99 * (hyperSliders^4) Unit_Costs = Selected_Chassis.Unit_Costs + Selected_Engine.Unit_Costs + Selected_Gearbox.Unit_Costs + Unit_Costs + hyperCosts - ((Unit_Costs/10) * (designBodySkill/100)) if( Game Difficult is set to Easy ) Unit_Costs = Unit_Costs * 0.9 else if( Game Difficult is set to Hard or Nightmare ) Unit_Costs = Unit_Costs * 1.1
Design_Costs = (hyperCosts * (400*ex_1d03p_year99)) + (Selected_Chassis.Unit_Costs*400 * ex_1d03p_year99 + Selected_Engine.Unit_Costs*400 * ex_1d03p_year99+Selected_Gearbox.Unit_Costs * 400*ex_1d03p_year99 + 20000*ex_1d05p_year99 * ((Slider_Design_Cargo^2) + (Slider_Design_Dependability^2) + (Slider_Design_Luxury^2) + (Slider_Design_Safety^2) + (Slider_Design_Style^2 ) + (Slider_Interior_Innovation^2 ) + (Slider_Interior_Safety^2 ) + (Slider_Interior_Style^2) + (Slider_Testing_Comfort^2 *2 ) + (Slider_Testing_Demographics^2 * 2 )+ (Slider_Testing_FuelEconomy^2 * 2) + (Slider_Testing_Performance^2 * 2 )+ (Slider_Testing_Reliability^2 * 2) + (Slider_Testing_Utility^2 * 2))) + (40000*ex_1d03p_year99*(Slider_Demographics_Wealth/10.0) * Slider_Testing_Demographics) If creating a New Trim or New Generation, If this design's Design Requirements Rating is higher than the Base Model's Design Requirements, then you lose your discounts. Otherwise, only a fraction of the design costs at this stage is charged. The fractions break down like this: 15% for base, 5% for a gearbox change, 5% for an engine change, 75% for chassis change. Design_Costs = (Design_Costs/5)+((Design_Costs/1.25)*(Slider_Design_DesignPace^2*4.5)) if( Game Difficult is set to Easy ) Design_Costs = Design_Costs * 0.9 else if( Game Difficult is set to Hard or Nightmare ) Design_Costs = Design_Costs * 1.1
Finish_Time = ((0.7*(Slider_Interior_Innovation+Slider_Interior_Style+Slider_Interior_Safety)) + (0.9*(Slider_Design_Cargo+(Slider_Design_Dependability*2) + Slider_Design_Cargo + Slider_Design_Luxury + Slider_Design_Safety + Slider_Design_Style)) + (1.5* (Slider_Testing_Comfort + Slider_Testing_Demographics + Slider_Testing_FuelEconomy + Slider_Testing_Performance + Slider_Testing_Reliability + Slider_Testing_Utility))) + 2*ex_1d005p_year99- (3*ex_1d005p_year99*(RnD_Skills/100.0))- (2*(FactOverallVAL/100.0)) + (1.25*ex_1d0035p_year99*hyperSliders) Finish_Time = Finish_Time + ((year-1870)/30) If creating a New Trim or New Generation, If this design's Design Requirements Rating is higher than the Base Model's Design Requirements, then you lose all time discounts. Otherwise, only a fraction of design time is charged. The fractions break down like this: 15% for base, 5% for a gearbox change, 5% for an engine change, 75% for chassis change. if(Year < 2021) { if(( Slider_Design_DesignPace + 0.05) > 0) additionalTime = ( ((year-1840)/15.0 ) *((0.5/( Slider_Design_DesignPace+0.05) ) -0.45) ) else additionalTime = ( ((year-1840)/15.0 ) * 9.55 ) } else { if(( Slider_Design_DesignPace+0.05) > 0) additionalTime = ( ((2020-1840)/15.0 ) *((0.5/( Slider_Design_DesignPace+0.05) ) -0.45) ) else additionalTime = ( ((2020-1840)/15.0 ) * 9.55 ) } if( Creating a trim and base model is completed ) { if(Slider_Design_DesignPace < 0.5) Finish_Time = Finish_Time + additionalTime else if(additionalTime > 0) { turnsOff = (Slider_Design_DesignPace - 0.5)/0.2 Finish_Time = Finish_Time + (additionalTime - TurnsOff) } } if(Finish_Time < 1) Finish_Time = 1
if(year < 2021) Employees_Required = Design_Requirements * (0.07833*(year-1899)+0.295) else Employees_Required = Design_Requirements * (0.07833*(121)+0.295) Employees_Required = Employees_Required/5 + ((Employees_Required/1.2)*Slider_Design_DesignPace) + 3