User Tools

Site Tools


gamemanual:gm_penalties

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 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 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;
gamemanual/gm_penalties.txt · Last modified: 2022/08/23 20:12 by admin