======= Vehicle Penalties =======
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 =====
^ Name ^ Description ^ ^ Name ^ Description ^
| **year** | The current game year | | **Engine_Year** | The year this vehicle's engine was designed |
| **Chassis_Year** | The year this vehicle's chassis was designed | | **Gearbox_Year** | The year this vehicle's gearbox was designed |
| **CarDesignYear** | The year this vehicle was designed | | **BuyersRating** | This is the vehicle's final score used to calculate the number of sales. The higher this number, the more sales the vehicle gets. |
| **baseTopSpeed** | This is the base top speed used to calculate the required top speed for specific vehicle types. | | **CarType_Rating_Performance** | This is the vehicle type's performance rating |
| **Car_Top_Speed** | This is the top speed of the vehicle. | | **soldAtBranch** | This is the number of vehicles sold. |
| **Chassis_Sliders_Suspension_Stability** | Chassis slider position for suspension stability | | **Chassis_Sliders_Suspension_Comfort** | Chassis slider position for suspension comfort |
| **Chassis_Sliders_Suspension_Performance** | Chassis slider position for suspension performance | | **Chassis_Sliders_Suspension_Braking** | Chassis slider position for suspension braking |
| **Chassis_Sliders_Suspension_Durability** | Chassis slider position for suspension durability | | **Chassis_Sliders_Technology_Materials** | Chassis slider position for materials technologies |
| **Chassis_Sliders_Technology_Tech** | Chassis slider position for technology | | **Engine_Sliders_FuelEco** | Engine slider position for fuel economy |
| **Engine_Sliders_Materials** | Engine slider position for materials | | **Engine_Sliders_Technology** | Engine slider position for technologies |
| **Engine_Sliders_Components** | Engine slider position for components quality | | **Gearbox_Sliders_Technology_Material** | Gearbox material technology slider |
| **Gearbox_Sliders_Technology_Parts** | Gearbox parts technology slider | | **Gearbox_Sliders_Technology_Techniques** | Gearbox techniques slider |
| **Gearbox_Sliders_Technology_Tech** | Gearbox technologies slider | | **Car_Sliders_InteriorStyle** | Vehicle interior style slider |
| **Car_Sliders_InteriorLuxury** | Vehicle interior luxury slider | | **Car_Sliders_InteriorComfort** | Vehicle interior comfort slider |
| **Car_Sliders_InteriorTech** | Vehicle interior technologies slider | | **Car_Sliders_Material_Material_Quality** | Vehicle material quality slider |
| **Car_Sliders_Material_Material_InteriorQuality** | Vehicle interior quality slider | | **Car_Sliders_Material_Manufacturing_Tech** | Vehicle manufacturing technique slider |
| **SellPrice** | The sales price of the vehicle | | **UnitCosts** | The material cost of the vehicle |
| **CarType_WealthIndex** | The vehicle type's wealth index value found under [[gamemanual:references_vehicletypeimportance|wealth demo]] |
===== Age Penalty =====
collectiveAge = 0;
if(((year) - Engine_Year) > 12)
{
collectiveAge = collectiveAge + (year - (Engine_Year+12)) * 0.05;
if((year - Engine_Year) > 15)
collectiveAge = collectiveAge + (year - (Engine_Year+15)) * 0.25;
}
if(((year) - Chassis_Year) > 12)
{
collectiveAge = collectiveAge + (year - (Chassis_Year+12)) * 0.05;
if((year - Chassis_Year) > 15)
collectiveAge = collectiveAge + (year - (Chassis_Year+15)) * 0.25;
}
if((year - Gearbox_Year) > 12)
{
collectiveAge = collectiveAge + (year - (Gearbox_Year+12)) * 0.05;
if((year - Gearbox_Year) > 15)
collectiveAge = collectiveAge + (year - (Gearbox_Year+15)) * 0.25;
}
if((year - CarDesignYear) + 4 > 9)
collectiveAge = collectiveAge + (((year - CarDesignYear) + 4)/10.0)^1.6;
else
collectiveAge = collectiveAge + 0.8;
if(collectiveAge > 1)
collectiveAge = collectiveAge^1.2;
if( collectiveAge^1.2 != 0)
BuyersRating = BuyersRating / collectiveAge^1.2;
===== Top Speed Penalty =====
baseTopSpeed = 10;
if(year < 2020)
{
baseTopSpeed = baseTopSpeed + 1.05 * (year-1899);
}
else
{
baseTopSpeed = baseTopSpeed + 127.5;
}
adjustedTopSpeed = (baseTopSpeed + (baseTopSpeed*(CarType_Rating_Performance-0.3)));
if(adjustedTopSpeed <= 0)
adjustedTopSpeed = 1;
if(Car_Top_Speed < adjustedTopSpeed)
{
topSpeedMod = Car_Top_Speed / adjustedTopSpeed;
}
else
{
topSpeedMod = 1;
}
soldAtBranch = soldAtBranch * topSpeedMod;
===== Low Slider Penalty =====
lowSlidersPenality = 1.0;
if( (Chassis_Sliders_Suspension_Stability + Chassis_Sliders_Suspension_Comfort +
Chassis_Sliders_Suspension_Performance + Chassis_Sliders_Suspension_Braking) < 1.0)
{
lowSlidersPenality = lowSlidersPenality - 0.07;
}
if((Chassis_Sliders_Suspension_Durability + Chassis_Sliders_Technology_Materials +
Chassis_Sliders_Technology_Tech) < 0.35)
{
lowSlidersPenality = lowSlidersPenality - 0.05;
}
if( (Engine_Sliders_FuelEco + Engine_Sliders_Materials +
Engine_Sliders_Technology + Engine_Sliders_Compoenents) < 0.45)
{
lowSlidersPenality = lowSlidersPenality - 0.06;
}
if( (Gearbox_Sliders_Technology_Material + Gearbox_Sliders_Technology_Parts +
Gearbox_Sliders_Technology_Tech + Gearbox_Sliders_Technology_Techniques) < 0.45)
{
lowSlidersPenality = lowSlidersPenality - 0.08;
}
if( (Car_Sliders_InteriorStyle + Car_Sliders_InteriorLuxury +
Car_Sliders_InteriorComfort + Car_Sliders_InteriorTech) < 0.45)
{
lowSlidersPenality = lowSlidersPenality - 0.08;
}
if( (Car_Sliders_Material_Material_Quality +
Car_Sliders_Material_Material_InteriorQuality +
Car_Sliders_Material_Manufacturing_Tech) < 0.36)
{
lowSlidersPenality = lowSlidersPenality - 0.08;
}
BuyersRating = BuyersRating * lowSlidersPenality ;
===== Price Gouging Penalty =====
if(SellPrice > UnitCosts * (3.5 + CarType_WealthIndex / 5.0))
{
overPriced = 1.0 - (SellPrice/(UnitCosts *
(3.5 + CarType_WealthIndex / 5.0))/2.0);
if(overPriced < 0)
overPriced = 0;
}
soldAtBranch = soldAtBranch * overPriced;