====== Engine Game Mechanics ======
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 [[https://idioms.thefreedictionary.com/seeing+how+the+sausage+gets+made|how the sausage gets made]]. So you really may want to avoid this portion of the manual if you enjoy the game.**
===== Variables =====
This is a table of variables and their descriptions used in the formulas.
==== Sliders ====
^ Variable ^ Description ^ ^ Variable ^ Description ^
| **Slider_Layout_Bore ** | Sliders: Engine Design Layout => Bore | | **Slider_Layout_Stroke ** | Sliders: Engine Design Layout => Stroke |
| **Slider_Layout_Length** | Sliders: Engine Design Layout => Length | | **Slider_Layout_Width** | Sliders: Engine Design Layout => Width |
| **Slider_Layout_Displacement** | (Slider_Layout_Bore + Slider_Layout_Stroke) รท 2.0 | | **Slider_Layout_Weight** | Sliders: Engine Design Layout => Weight |
| **Slider_Performance_Revolutions** | Sliders: Engine Design Performance => Revolutions | | **Slider_Performance_Torque** | Sliders: Engine Design Performance => Engine Torque |
| **Slider_Performance_FuelEconomy** | Sliders: Engine Design Performance => Fuel Economy | | **Slider_DesignFocus_Performance** | Sliders: Engine Design Focus => Focus on Performance |
| **Slider_DesignFocus_FuelEconomy** | Sliders: Engine Design Focus => Focus on Fuel Economy | | **Slider_DesignFocus_Dependability** | Sliders: Engine Design Focus => Focus on Dependability |
| **Slider_DesignFocus_DesignPace ** | Sliders: Engine Design Focus => Development Pace | | **Slider_Technology_Materials** | Sliders: Engine Design Technology => Material Quality |
| **Slider_Technology_Components** | Sliders: Engine Design Technology => Component Quality | | **Slider_Technology_Technologies** | Sliders: Engine Design Technology => Technology |
| **Slider_Technology_Techniques** | Sliders: Engine Design Technology => Manufacturing Techniques |
==== Sub-Components ====
^ Variable ^ Description ^ ^ Variable ^ Description ^
| **SubComponent_Layout_UnitCosts** | Engine Layout Unit Costs | | **SubComponent_Layout_DesignCosts** | Engine Layout Design Costs |
| **SubComponent_Layout_DesignRequirements** | Engine Layout Design Requirements | | **SubComponent_Layout_ManufacturingRequirements** | Engine Layout Manufacturing Requirements |
| **SubComponent_Layout_Reliability** | Engine Layout Reliability Value | | **SubComponent_Layout_Weight** | Engine Layout Weight Value |
| **SubComponent_Layout_FinishTime** | Engine Layout Research Finish Time Value | | **SubComponent_Layout_Width** | Engine Layout Width Value |
| **SubComponent_Layout_Length** | Engine Layout Length Value | | **SubComponent_Layout_Smoothness** | Engine Layout Smoothness Value |
| **SubComponent_Layout_ValveLimit** | Engine Layout What Valves Layout Can Use | | **SubComponent_Layout_UseDisplacement** | Engine Layout Measured in Displacement |
| **SubComponent_Layout_CylinderLengthArrangment** | Engine Layout Number of Cylinder Banks | | **SubComponent_Layout_FuelRatings** | Engine Layout Fuel Economy Value |
| **SubComponent_Layout_PowerRatings** | Engine Layout Power Rating Value | | **SubComponent_Layout_Turbined** | Engine Layout is Circler |
| **SubComponent_Cylinders_UnitCosts** | Cylinder Unit Costs Value | | **SubComponent_Cylinders_DesignCosts** | Cylinder Design Costs Value |
| **SubComponent_Cylinders_DesignRequire** | Cylinder Design Requirements | | **SubComponent_Cylinders_ManufacturingRequire** | Cylinder Manufacturing Requirements |
| **SubComponent_Cylinders_PowerRating** | Cylinder Power Value | | **SubComponent_Cylinders_FuelRating** | Cylinder Fuel Value |
| **SubComponent_Cylinders_ReliabilityRating** | Cylinder Reliability Value | | **SubComponent_Cylinders_Weight** | Cylinder Weight Value |
| **SubComponent_Cylinders_FinishTime** | Cylinders Research Finish Time Value | | **SubComponent_Cylinders_CylinderCount** | Number of Cylinders |
| **SubComponent_Cylinders_SmoothnessRating** | Cylinder Smoothness Value | | **SubComponent_FuelType_UnitCosts** | Fuel Type Unit Costs |
| **SubComponent_FuelType_DesignCosts** | Fuel Type Design Costs | | **SubComponent_FuelType_DesignRequirements** | Fuel Type Design Requirements |
| **SubComponent_FuelType_ManufacturingRequirements** | Fuel Type Manufacturing Requirements | | **SubComponent_FuelType_PowerRating** | Fuel Type Power Value |
| **SubComponent_FuelType_FuelRating** | Fuel Type Fuel Economy Value | | **SubComponent_FuelType_ReliabilityRating** | Fuel Type Reliability Value |
| **SubComponent_FuelType_Weight** | Fuel Type Weight Value | | **SubComponent_FuelType_FinishTime** | Fuel Type Research Finish Time Value |
| **SubComponent_FuelType_RPM** | Fuel Type RPM Value | | **SubComponent_FuelType_SmoothnessRating** | Fuel Type Smoothness Value |
| **SubComponent_FuelType_PopularityRating** | Fuel Type Popularity Value | | **SubComponent_Induction_UnitCosts** | Induction System Unit Costs |
| **SubComponent_Induction_DesignCosts** | Induction System Design Costs | | **SubComponent_Induction_DesignRequirements** | Induction System Design Requirements |
| **SubComponent_Induction_ManufacturingRequirements** | Induction System Manufacturing Requirements | | **SubComponent_Induction_PowerRating** | Induction System Power Value |
| **SubComponent_Induction_FuelRating** | Induction System Fuel Economy Value | | **SubComponent_Induction_ReliabilityRating** | Induction System Reliability Value |
| **SubComponent_Induction_Weight** | Induction System Weight Value | | **SubComponent_Induction_FinishTime** | Induction System Research Finish Time Value |
| **SubComponent_Valve_UnitCosts** | Valve System Unit Costs | | **SubComponent_Valve_DesignCosts** | Valve System Design Costs |
| **SubComponent_Valve_DesignRequirements** | Valve System Design Requirements | | **SubComponent_Valve_ManufacturingRequirements** | Valve System Manufacturing Requirements |
| **SubComponent_Valve_FuelRating** | Valve System Fuel Economy Value | | **SubComponent_Valve_ReliabilityRating** | Valve System Fuel Reliability Value |
| **SubComponent_Valve_Weight** | Valve System Fuel Weight Value | | **SubComponent_Valve_FinishTime** | Valve System Research Finish Time Value |
| **SubComponent_Valve_RPM** | Valve System RPM Value | | **SubComponent_Valve_SmoothnessRating** | Valve System Smoothness Value |
| **SubComponent_Valve_Size** | Valve System Size Value | | **SubComponent_Valve_PowerRating** | Valve System Power Value |
==== Global ====
^ Variable ^ Description ^ ^ Variable ^ Description ^
| ** Year ** | Current game year | | **Marq_DesignEngineSkill** | Engine design skill of the selected marque |
| ** AdjustedYear ** | Year - 1899 (Value is set to 121 after 2020) | | ** PreResearchEngineAmountEffect ** | Research team's bonus on engine design |
| ** Global_Interest_Rate ** | Global Interest Rates as defined in the TurnEvents.xml file | | ** carPriceRate ** | Global vehicle costs variable as defined in the TurnEvents.xml file |
| ** ex_0d996p_year50R ** | 0.996%%^%%(2050-year) if Year > 2020: 0.901037361 | | ** ex_1d0023p_year99 ** | 1.0023%%^%%(year-1899) |
| ** ex_1d0024p_year99 ** | 1.0024%%^%%(year-1899) | | ** ex_1d003p_year99 ** | 1.003%%^%%(year-1899) |
| ** ex_1d0035p_year99 ** | 1.0035%%^%%(year-1899) | | ** ex_1d004p_year99 ** | 1.004%%^%%(year-1899) |
| ** ex_1d005p_year99 ** | 1.005%%^%%(year-1899) | | ** ex_1d0051p_year99 ** | 1.0051%%^%%(year-1899) |
| ** ex_1d006p_year99 ** | 1.006%%^%%(year-1899) | | ** ex_1d007p_year99 ** | 1.007%%^%%(year-1899) |
| ** ex_1d008p_year99 ** | 1.008%%^%%(year-1899) | | ** ex_1d01p_year99 ** | 1.01%%^%%(year-1899) |
| ** ex_1d025p_year99 ** | 1.025%%^%%(year-1899) | | ** ex_1d03p_year99 ** | 1.03%%^%%(year-1899) |
| ** ex_1d033p_year99 ** | 1.033%%^%%(year-1899) | | ** ex_1d035p_year99 ** | 1.035%%^%%(year-1899) |
| ** ex_1d038p_year99 ** | 1.038%%^%%(year-1899) | | ** ex_1d039p_year99 ** | 1.039%%^%%(year-1899) |
| ** ex_1d04p_year99 ** | 1.04%%^%%(year-1899) | | ** ex_1d05p_year99 ** | 1.05%%^%%(year-1899) |
===== Specs =====
==== Bore ====
Value is in millimeters.
Bore_mm = Value in the text box next to the slider.
==== Stroke ====
Value is in millimeters.
Stroke_mm = Value in the text box next to the slider.
==== Displacement ====
Value is in Cubic Centimeters (cc)
Displacement_CC = (0.7854 * ((Bore_mm/10) * (Bore_mm/10)) * (Stroke_mm/10) * SubComponent_Cylinders_CylinderCount)
==== Torque ====
Value is in lb-ft.
Torque = 10 + (Marq_DesignEngineSkill/20.0) +
((((25) * ((Slider_Performance_Torque - 0.4)*1.5)*ex_1d01p_year99) +
((4*(SubComponent_Layout_Length + SubComponent_Layout_Width) )*ex_1d005p_year99) -
(14 * (Slider_Performance_FuelEconomy+Slider_DesignFocus_FuelEconomy) * ex_1d004p_year99) +
(SubComponent_Layout_PowerRatings*5 + SubComponent_Cylinders_PowerRating*13 +
SubComponent_FuelType_PowerRating*24 + 100*SubComponent_Induction_PowerRating +
(5 * ex_1d004p_year99 * Slider_DesignFocus_Performance) +
8*(Slider_Technology_Components+Slider_Technology_Materials +
Slider_Technology_Technologies +Slider_Technology_Techniques))*ex_1d0024p_year99))
Torque = Torque * ((SubComponent_Cylinders_CylinderCount * Stroke_mm*0.93 * Bore_mm*0.9)*0.000027)+5
if year < 2050 then:
Torque = Torque * ex_0d996p_year50R
Torque = Torque * SubComponent_Valve_PowerRating
==== RPM ====
tmpAY = AdjustedYear
if tmpAY > 80 then:
tmpAY = 80 + ((AdjustedYear-80)/5)
rpm = ((((tmpAY^4)*0.00000420875) -
((19*(tmpAY^3))*0.00016835) + ((427*(tmpAY^2))*0.00126) +
((1315*(tmpAY))*0.01515) + 620 ) + (265 * ex_1d01p_year99 * Slider_DesignFocus_Performance) +
(465 * ex_1d0105p_year99 * (Slider_Performance_Revolutions*5.5)) -
(10 * ex_1d01p_year99 * SubComponent_Induction_PowerRating) +
(55 * ex_1d005p_year99 * (1-Slider_Layout_Weight)) - (30* ex_1d005p_year99 *
(Slider_DesignFocus_FuelEconomy + Slider_Performance_FuelEconomy))+
(25 * ex_1d01p_year99 * Slider_Technology_Components) +
(25 * ex_1d01p_year99 * Slider_Technology_Materials) +
(25 * ex_1d01p_year99 * Slider_Technology_Technologies)) *
SubComponent_FuelType_RPM
rpm = rpm * SubComponent_Valve_RPM
rpm = rpm - ((rpm/1.5) * (Stroke_mm/221.136364))
if rpm < 25 then:
rpm = 25
==== Horsepower ====
Values are in HP.
hp = (Torque * rpm) / 5252
==== Length ====
Values are in inches.
=== SubComponent_Layout_CylinderLengthArrangment Equals 1 ===
Length = (3 + (Displacement_CC/((47.3)+277))) * SubComponent_Layout_Length +
((SubComponent_Cylinders_CylinderCount)*(Bore_mm/130.0)) +
(SubComponent_Cylinders_CylinderCount+(5*(Bore_mm/130.0))+
2*SubComponent_Valve_Size)
Length = Length + (0.16 * Length * Slider_Layout_Length)
=== SubComponent_Layout_CylinderLengthArrangment Equals -1 Or Less ===
Bank = SubComponent_Layout_CylinderLengthArrangment * -1
Length = 3+(0.039 * (Bore_mm * 2)) + 5 * Slider_Layout_Length
Length = Length * Bank
=== SubComponent_Layout_CylinderLengthArrangment Equals Any Other Value ===
Banks = 0.5;
if SubComponent_Layout_CylinderLengthArrangment > 0
Banks = 1.0/SubComponent_Layout_CylinderLengthArrangment
Length = (4 + ((Displacement_CC*(Banks*2))/((47.3)+277))) *
SubComponent_Layout_Length + ((SubComponent_Cylinders_CylinderCount*Banks)*
(Bore_mm/130.0)) + ((SubComponent_Cylinders_CylinderCount*(Banks*2))+
(5*(Bore_mm/130.0))+2*SubComponent_Valve_Size)
Length = Length + (0.16 * Length * Slider_Layout_Length);
==== Width ====
Values are in inches.
Width = (6 + (Displacement_CC/((57.3)+302))) * SubComponent_Layout_Width +
((6*(Bore_mm/115.0))+5*SubComponent_Valve_Size)
Width = Width + (0.16 * Width * Slider_Layout_Width)
if(SubComponent_Layout_CylinderLengthArrangment < -1)
{
Bank = 1/(SubComponent_Layout_CylinderLengthArrangment * -1)
Width = Width * Bank
}
==== Weight ====
Values are in lbs.
Weight = 30 + (55*((SubComponent_Valve_Weight+ SubComponent_Layout_Weight +
SubComponent_FuelType_Weight + SubComponent_Induction_Weight +
SubComponent_Cylinders_Weight)/5.0) ) + (100*(Stroke_mm/80.0)) +
(((Length*1.95*Width)/80.0) +
( 40 + (42 * (((Slider_Layout_Width+Slider_Layout_Length)/2.0)+0.05)) +
((15+(15*(SubComponent_Valve_Weight+ SubComponent_Layout_Weight +
SubComponent_FuelType_Weight + SubComponent_Induction_Weight +
SubComponent_Cylinders_Weight)/5.0 ) ) * (Slider_Layout_Weight + 0.1)) -
(15 * Slider_Technology_Materials) + (5 * SubComponent_Induction_Weight)+
(8*(Slider_Layout_Width+Slider_Layout_Length)) ) *
((Length*1.78*Width)/800.0)) +
((5+(5*SubComponent_Cylinders_Weight))*(SubComponent_Cylinders_CylinderCount))
if(SubComponent_Layout_CylinderLengthArrangment > 2)
Weight = Weight * (SubComponent_Layout_CylinderLengthArrangment/2.9)
==== Fuel Consumption ====
Values are in miles per gallon.
FuelConsumption_MPG = 95 + ((55 * ex_1d0023p_year99) * (Slider_Performance_FuelEconomy+0.1)) +
(40 * ex_1d0023p_year99 * Slider_DesignFocus_FuelEconomy )
FuelConsumption_MPG = FuelConsumption_MPG +
(12 * ex_1d0023p_year99*SubComponent_FuelType_FuelRating) +
(7 * ex_1d0023p_year99*Slider_Technology_Technologies)
FuelConsumption_MPG = FuelConsumption_MPG - (15 * ex_1d0051p_year99 *
(Slider_Performance_Torque + Slider_Performance_Revolutions + Slider_DesignFocus_Performance)) -
(20 * Slider_Layout_Displacement)+(10*SubComponent_Valve_FuelRating)
FuelConsumption_MPG = (FuelConsumption_MPG + (6*SubComponent_Cylinders_FuelRating)+
(6*SubComponent_Layout_FuelRatings))*SubComponent_Induction_FuelRating +
(Marq_DesignEngineSkill/50.0)
if( (1.5+Displacement_CC/350.0) > 0 )
FuelConsumption_MPG = FuelConsumption_MPG/(1.5+Displacement_CC/350.0)
FuelConsumption_MPG = FuelConsumption_MPG + 5
if( FuelConsumption_MPG < 1 )
FuelConsumption_MPG = 1;
if( SubComponent_FuelType_FuelRating < 5 AND FuelConsumption_MPG > 30)
{
if( SubComponent_FuelType_FuelRating > 1.5 AND
FuelConsumption_MPG > (30+(SubComponent_FuelType_FuelRating*2.0)) )
{
FuelConsumption_MPG = FuelConsumption_MPG +
-FuelConsumption_MPG^0.85+18+(SubComponent_FuelType_FuelRating*2.0)
}
else
{
FuelConsumption_MPG = FuelConsumption_MPG + -FuelConsumption_MPG^0.85+18
}
}
===== Ratings =====
==== Design Requirements ====
Design_Requirements = (5 * Slider_DesignFocus_Dependability) +
(5 * Slider_DesignFocus_FuelEconomy) +
(5 * Slider_DesignFocus_Performance) + (3 * Slider_Performance_Revolutions) +
(2 * Slider_Performance_FuelEconomy) + (2 * Slider_Performance_Torque) +
(2 * Slider_Technology_Technologies) + (1-Slider_Layout_Weight) +
(Slider_Layout_Displacement + (1-Slider_Layout_Length +
(1-Slider_Layout_Width))) - (2 * Slider_Technology_Techniques)
Design_Requirements = Design_Requirements + (SubComponent_Cylinders_DesignRequire) +
(SubComponent_FuelType_DesignRequirements) + (SubComponent_Valve_DesignRequirements) +
(5 * SubComponent_Induction_DesignRequirements) +
(3* SubComponent_Layout_DesignRequirements)
Design_Requirements = 2.7027 * Design_Requirements
==== Manufacturing Requirements ====
Manufacturing_Requirements = (Slider_Layout_Displacement ) + (2*(1-Slider_Layout_Length)) +
(2*(1-Slider_Layout_Width)) + (Slider_Performance_FuelEconomy) +
(Slider_Performance_Revolutions * 2) + (2 * Slider_Performance_Torque) +
(Slider_Technology_Components + Slider_Technology_Materials +
Slider_Technology_Technologies + (3 * Slider_Technology_Techniques))
Manufacturing_Requirements = Manufacturing_Requirements +
(3 * SubComponent_Cylinders_ManufacturingRequire) +
( 3 * SubComponent_Layout_ManufacturingRequirements) +
( 2 * SubComponent_Induction_ManufacturingRequirements) +
(SubComponent_FuelType_ManufacturingRequirements) +
( 2 * SubComponent_Valve_ManufacturingRequirements)
Manufacturing_Requirements = Manufacturing_Requirements * 3.7037
==== Power Ratings ====
if( SubComponent_Cylinders_CylinderCount > 0 )
Power_Rating = Torque / ( (100 * ex_1d007p_year99) * SubComponent_Cylinders_CylinderCount / 2.2 )
Power_Rating = Power_Rating * 50
if( Power_Rating > 50 )
Power_Rating = 50
Power_Rating = Power_Rating + ( 50 * ( Torque/2000.0 ) )
if( Power_Rating > 100 )
Power_Rating = 100
==== Fuel Economy Rating ====
FuelEconomy_Rating = (FuelConsumption_MPG / 120.0)* 100;
if(FuelEconomy_Rating >100)
FuelEconomy_Rating = 100;
==== Reliability ====
Reliability_Rating = (6 * Slider_DesignFocus_Dependability) +
(3* (1-Slider_DesignFocus_Performance)) + (5*(1-(rpm/10000.0))) +
(2*1-Slider_Performance_Torque) + (3*1-Slider_Performance_Revolutions) +
(3 * Slider_Technology_Components) + (2 * Slider_Technology_Materials) +
(1-Slider_Technology_Technologies) + (Slider_Technology_Techniques)
Reliability_Rating = Reliability_Rating + (1 * SubComponent_Cylinders_ReliabilityRating) +
(1 * SubComponent_FuelType_ReliabilityRating) +
(1 * (1-SubComponent_Induction_ReliabilityRating)) +
(1 * SubComponent_Layout_Reliability) +
(2*SubComponent_Valve_ReliabilityRating)
Reliability_Rating = Reliability_Rating + (8 * (1-(Stroke_mm/150.0)))
Reliability_Rating = Reliability_Rating / 4.5
Reliability_Rating = Reliability_Rating * 10
Reliability_Rating = Reliability_Rating + (Marq_DesignEngineSkill/10.0)
if(Reliability_Rating<0)
Reliability_Rating = 0
if(Reliability_Rating>100)
Reliability_Rating = 100
==== Smoothness ====
Smoothness_Rating = (-(1.0/10.0)*((SubComponent_Cylinders_CylinderCount-8) *
(SubComponent_Cylinders_CylinderCount-8))+5)
Smoothness_Rating = Smoothness_Rating + (SubComponent_Cylinders_SmoothnessRating * 2) +
(SubComponent_FuelType_SmoothnessRating * 2) + (SubComponent_Layout_Smoothness*2) +
(Slider_Technology_Components * 3) + (Slider_Technology_Technologies * 2) +
(Slider_Technology_Techniques * 3) + (SubComponent_Valve_SmoothnessRating*2) +
(Marq_DesignEngineSkill/25)
Smoothness_Rating = Smoothness_Rating * 4
if( Smoothness_Rating > 100 )
Smoothness_Rating = 100
if(Smoothness_Rating < 1 )
Smoothness_Rating = 1;
==== Overall ====
Overall_Rating = (Reliability_Rating + FuelEconomy_Rating + Power_Rating +
Smoothness_Rating + (Marq_DesignEngineSkill))/5
Overall_Rating = Overall_Rating + (5*PreResearchEngineAmountEffect)
if(Overall_Rating > 100)
Overall_Rating = 100
===== Miscellaneous =====
==== Unit Costs ====
Unit_Costs =((((((70* ex_1d01p_year99 * (((1-Slider_Layout_Length) + (1-Slider_Layout_Width))/2.0)) +
(220 * ex_1d004p_year99 * (((0.25+(Slider_Performance_Revolutions *
Slider_Performance_Revolutions) + (Slider_Performance_Torque * Slider_Performance_Torque))/2.0) -
(0.5-(Slider_Performance_FuelEconomy*Slider_Performance_FuelEconomy)) ) ) +
(60 * ex_1d01p_year99) * ((Slider_Performance_Revolutions * Slider_Performance_Revolutions) +
(Slider_Performance_Torque * Slider_Performance_Torque)) +
220 * ex_1d008p_year99*(0.1+(((Slider_Technology_Materials*Slider_Technology_Materials)+
(Slider_Technology_Techniques*Slider_Technology_Techniques ) +
(Slider_Technology_Components*Slider_Technology_Components))) ) +
170 * ex_1d008p_year99*(Slider_Technology_Technologies*Slider_Technology_Technologies) +
50 * ex_1d0035p_year99 * (Slider_DesignFocus_Dependability * Slider_DesignFocus_Dependability) +
180 * ex_1d0035p_year99 * (Slider_DesignFocus_Performance * Slider_DesignFocus_Performance )+
(260 * ex_1d006p_year99 * (2.168 * Slider_Layout_Displacement^1.5 -4.44 * Slider_Layout_Displacement^3 +
2.646 * Slider_Layout_Displacement^4.5 + 3.126 * Slider_Layout_Displacement^6 )+
(70 * ex_1d005p_year99 * (SubComponent_Cylinders_CylinderCount/6.0) +
(.75 + Slider_Layout_Displacement^1.5) - (Slider_Layout_Weight^2)) + 10 *
(Slider_DesignFocus_FuelEconomy^2) - 50 ) * ex_1d003p_year99 +
(160 * SubComponent_Cylinders_UnitCosts)^ex_1d003p_year99 +
(120 * SubComponent_Layout_UnitCosts)^ex_1d004p_year99 +
(140 * SubComponent_Valve_UnitCosts)^ex_1d004p_year99 +
(435 * SubComponent_Induction_UnitCosts)^ex_1d004p_year99 +
(120 * SubComponent_FuelType_UnitCosts)^ex_1d004p_year99) *
(.125 + 0.12 * SubComponent_Cylinders_CylinderCount)) *
(Global_Interest_Rate/2.0)) + 50) * carPriceRate) * (designRandomVal);
Hyper_Sliders = ((Slider_Layout_Displacement*2 + (1-Slider_Layout_Length) +
(1-Slider_Layout_Width) + (1-Slider_Layout_Weight)) +
(Slider_Performance_Revolutions + Slider_Performance_Torque + Slider_Performance_FuelEconomy) +
(Slider_DesignFocus_Performance + Slider_DesignFocus_FuelEconomy + Slider_DesignFocus_Dependability) +
(Slider_Technology_Materials + Slider_Technology_Components + Slider_Technology_Techniques +
Slider_Technology_Technologies))/13.0;
Hyper_Costs = 475 * ex_1d04p_year99 * (Hyper_Sliders*Hyper_Sliders*Hyper_Sliders*Hyper_Sliders);
Unit_Costs = Unit_Costs + Hyper_Costs - ((Unit_Costs/10) * (Marq_DesignEngineSkill/100));
==== Design Costs ====
Design_Costs = (((18000 * ( 0.05+Slider_Layout_Displacement^1.5 ) *ex_1d025p_year99 +
(4000 * (1-(Slider_Layout_Weight*Slider_Layout_Weight)) *ex_1d033p_year99) +
5000 * (0.15+(Slider_Technology_Materials * Slider_Technology_Materials ) +
(Slider_Technology_Techniques * Slider_Technology_Techniques ) +
(Slider_Technology_Components * Slider_Technology_Components))^
(0.1 + (Slider_DesignFocus_Performance * Slider_DesignFocus_Performance) +
(Slider_DesignFocus_Dependability * Slider_DesignFocus_Dependability) +
(Slider_DesignFocus_FuelEconomy * Slider_DesignFocus_FuelEconomy)) *
ex_1d033p_year99+2500*((1.01 - Slider_Layout_Weight)*(1.01-Slider_Layout_Weight)) * ex_1d033p_year99 -
2500 * ex_1d033p_year99 * ((1-Slider_Layout_Width)+ (1-Slider_Layout_Length)) +
12000 * (0.2+(Slider_DesignFocus_Performance*Slider_DesignFocus_Performance) +
(Slider_DesignFocus_FuelEconomy*Slider_DesignFocus_FuelEconomy)) *
ex_1d05p_year99 +1500*(3.5+ (Slider_DesignFocus_Dependability*Slider_DesignFocus_Dependability)) *
ex_1d039p_year99)*ex_1d03p_year99 +
(4000 * ((Slider_Performance_FuelEconomy *Slider_Performance_FuelEconomy ) +
(Slider_Performance_Revolutions * Slider_Performance_Revolutions ) +
(Slider_Performance_Torque*Slider_Performance_Torque)) * ex_1d038p_year99) +
(3000 * (Slider_Technology_Technologies * Slider_Technology_Technologies) * ex_1d035p_year99) +
(Hyper_Costs * (500*ex_1d035p_year99)) +
((95 * SubComponent_Cylinders_DesignCosts)^ex_1d01p_year99) +
((115 * SubComponent_Layout_DesignCosts)^ex_1d01p_year99) +
((195* SubComponent_Induction_DesignCosts)^ex_1d01p_year99) +
((90* SubComponent_Valve_UnitCosts)^ex_1d01p_year99) +
((90 * SubComponent_FuelType_DesignCosts)^ex_1d01p_year99) *
(Global_Interest_Rate)) * ex_1d003p_year99)
if(year > 1910 && year < 1930)
Design_Costs = Design_Costs * (SubComponent_Cylinders_CylinderCount*(1 - 0.0375 * (year-1910)))
else if(year > 1930 && year < 1950)
Design_Costs = Design_Costs * (SubComponent_Cylinders_CylinderCount*(0.25 - ( 0.005 * (year-1930) )))
else if( year > 1950 )
Design_Costs = Design_Costs * (SubComponent_Cylinders_CylinderCount * 0.15);
Design_Costs = (Design_Costs * 0.85) + ((Design_Costs *0.15 ) * SubComponent_Cylinders_DesignCosts)
Design_Costs = (Design_Costs/5)+(Design_Costs*(Slider_DesignFocus_DesignPace*Slider_DesignFocus_DesignPace*4.5))
==== Finish Time ====
Finish_Time = (((0.55 * Slider_Layout_Displacement) + (1- Slider_Layout_Weight) +
0.45 * (Slider_Performance_Revolutions + Slider_Performance_Torque + Slider_Performance_FuelEconomy) +
0.45 * (Slider_DesignFocus_Dependability + Slider_DesignFocus_FuelEconomy +
Slider_DesignFocus_Performance))*ex_1d004p_year99 + (SubComponent_Cylinders_FinishTime) +
(SubComponent_Layout_FinishTime) + (.75 * SubComponent_Induction_FinishTime) +
(.55 * SubComponent_FuelType_FinishTime)) + SubComponent_Valve_FinishTime + 1-
(2*(FactOverallVAL/100.0))+ (1.15*ex_1d003p_year99*Hyper_Sliders)
Finish_Time = Finish_Time + ((year-1850)/50)
additionalTime = 0;
if(year < 2021)
{
if(( Slider_DesignFocus_DesignPace + 0.05 ) > 0)
additionalTime = ( ((year-1840)/15.0 ) *((0.5/( Slider_DesignFocus_DesignPace+0.05) ) - 0.45) )
else
additionalTime = ( ((year-1840)/15.0 ) *((0.5/(0.05) ) -0.45) )
}
else
{
if(( Slider_DesignFocus_DesignPace+0.05) > 0)
additionalTime = ( ((2020-1840)/15.0 ) *((0.5/( Slider_DesignFocus_DesignPace+0.05) ) - 0.45) )
else
additionalTime = ( ((2020-1840)/15.0 ) *((0.5/(0.05) ) -0.45) )
}
if(Slider_DesignFocus_DesignPace < 0.5)
{
Finish_Time = Finish_Time + additionalTime
}
else
{
turnsOff = (Slider_DesignFocus_DesignPace - 0.5)/0.20
Finish_Time = Finish_Time + (additionalTime - turnsOff)
}
if(Finish_Time < 1)
Finish_Time = 1
==== Employees Required ====
if(year < 2021)
Engineers_Required = Design_Requirements * (0.11833*(year-1899)+0.275);
else
Engineers_Required = Design_Requirements * (0.11833*(121)+0.275);
Engineers_Required = Engineers_Required/5 + ((Engineers_Required/1.2)*
Slider_DesignFocus_DesignPace) + 3;