User Tools

Site Tools


gm_skills_image

Skills and Image Ratings

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
IMAGE_WORK Workmanship Image Rating IMAGE_RACING Racing Image Rating
IMAGE_QUALITY Quality Image Rating IMAGE_GLOBAL_GENERAL Global Image Rating
SKILL_MARKETING Marketing Skills DESIGN_ENGINE Engine Design Skills
DESIGN_CHASSIS Chassis Design Skills DESIGN_TRANSMISSION Gearbox Design Skills
DESIGN_BODY Body Design Skills DESIGN_LUX Luxury Design Skills
DESIGN_SAFETY Safety Design Skills SKILL_MANUFACTORING Manufacturing Skills
SKILL_ADMIN Administration Skills SKILL_DEALER Dealership Skills
researchChassisEffect Chassis Research Teams Effect researchEngineEffect Engine Research Teams Effect
researchGearboxEffect Gearbox Research Teams Effect researchVehicleEffect Vehicle Research Teams Effect
CarInfo.Rating_Overall Current Vehicle's Overall Rating CarInfo.Rating_Luxury Current Vehicle's Luxury Rating
CarInfo.Rating_Safety Current Vehicle's Safety Rating CarInfo.designreq Current Vehicle's Design Requirements Rating
CarInfo.Rating_Quality Current Vehicle's Quality Rating CarInfo.Rating_Dependability Current Vehicle's Dependability Rating
CarInfo.manureq Current Vehicle's Manufacturing Requirement Rating CarInfo.Vehicle_Image Current Vehicle's Vehicle Image Rating
CarInfo.Rating_Drivability Current Vehicle's Drivability Rating CarInfo.Rating_Performance Current Vehicle's Performance Rating
ChassisInfo.Overall_Comfort Chassis Comfort Rating ChassisInfo.Overall_Strength Chassis Strength Rating
ChassisInfo.Overall Chassis Overall Rating ChassisInfo.Req_Design Chassis Design Requirement Rating
ChassisInfo.Req_Manu Chassis Manufacturing Requirement Rating ChassisInfo.Overall_Dependabilty Chassis Dependability Rating
ChassisInfo.Overall_Performance Chassis Performance Rating Engine.Power Engine Power Rating
Engine.FuelEconomy Engine Fuel Economy Rating Engine.OverallRating Engine Overall Rating
Engine.DesighnRequirements Engine Design Requirement Rating Engine.Reliability Engine Reliability Rating
Engine.ManufacturingRequirement Engine Manufacturing Requirement Rating Gearbox.PowerRating Gearbox Power Rating
Gearbox.FuelRating Gearbox Fuel Economy Rating Gearbox.OverallRating Gearbox Overall Rating
Gearbox.Design_Requirement Gearbox Design Requirements Rating Gearbox.ReliabiltyRating Gearbox Reliability Rating
Gearbox.Manufacturing_Requirement Gearbox Manufacturing Requirements Rating Gearbox.PerformanceRating Gearbox Performance Rating
Number Of Cars The total number of cars designed in the last 5 years RacingHistory.PlayerWins All company's racing wins in a series.
Racing.Popularity The popularity of the racing series Marketing_*Efficency Marketing efficiency value, where * is the type of marketing
RacingRnDFocus Racing focus set to development, divided by the number of races, divided by 6.

Value Assignments

current_ImgWork = IMAGE_WORK
current_ImgRace = IMAGE_RACING
current_ImgQual = IMAGE_QUALITY
current_ImgGlobal = IMAGE_GLOBAL_GENERAL
current_MarketingSkill = SKILL_MARKETING
 
current_DesignEngineSkills = DESIGN_ENGINE
current_DesignChassisSkills = DESIGN_CHASSIS
current_DesignGearboxSkills = DESIGN_TRANSMISSION
current_DesignBodySkills = DESIGN_BODY
current_DesignLuxSkills = DESIGN_LUX
current_DesignSafeSkills = DESIGN_SAFETY
 
manuSkill = SKILL_MANUFACTORING
adminSkill = SKILL_ADMIN
dealerSkill = SKILL_DEALER
 
 
effectCemps = researchChassisEffect
effectEemps = researchEngineEffect
effectGemps = researchGearboxEffect
effectVemps = researchVehicleEffect
 
 
 
for( Cars Year > Current Year - 3 )
{
    Workmanship = Workmanship + (TOTAL(CarInfo.Rating_Overall+(CarInfo.Rating_Luxury*21)+
        CarInfo.Rating_Safety+(CarInfo.designreq*2) ) +
        (ChassisInfo.Overall_Comfort+ChassisInfo.Overall_Strength+ChassisInfo.Overall+(ChassisInfo.Req_Design*2) ))
 
    workmanship_Quality = workmanship_Quality + (TOTAL( (CarInfo.Rating_Quality*3) + 
    (CarInfo.Rating_Dependability*3) + CarInfo.manureq + CarInfo.Rating_Overall ) + 
    ( (ChassisInfo.Overall_Dependabilty*3) +ChassisInfo.Overall_Strength+ChassisInfo.Req_Manu+ChassisInfo.Overall))
 
    workmanship_Racing = workmanship_Racing + (TOTAL(CarInfo.Rating_Performance*3 + 
        CarInfo.Rating_Drivability*3 ) +  TOTAL(ChassisInfo.Overall_Performance))
 
    workGlobal = workGlobal + TOTAL(CarInfo.Rating_Overall*10)
 
    counts = Number Of Cars * 25 + 5
 
    counts_Quality =  Number Of Cars * 8 + 6
 
    counts_Racing = Number Of Cars * 8 + 3
 
    counts_Global = Number Of Cars * 10
 
}
 
 
 
for ( Every Engine Design Year > Current Year - 3  )
{
    Workmanship = Workmanship + (Engine.FuelEconomy+Engine.OverallRating+(Engine.DesighnRequirements*2) )
 
    workmanship_Quality = workmanship_Quality + ( (Engine.Reliability*5) + Engine.OverallRating + Engine.ManufacturingRequirement )
 
    workmanship_Racing = workmanship_Racing + Engine.Power*5
 
    counts = counts + 4
 
    counts_Quality = counts_Quality + 7
 
    counts_Racing = counts_Racing + 6
 
}
 
 
 
 
 
for ( Every Gearbox Design Year > Current Year - 3  )
{
    Workmanship = Workmanship + Gearbox.FuelRating+Gearbox.OverallRating+(Gearbox.Design_Requirement*2) ) 
 
    workmanship_Quality = workmanship_Quality + ( (Gearbox.ReliabiltyRating*5) +Gearbox.OverallRating+Gearbox.Manufacturing_Requirement )
 
    workmanship_Racing = (Gearbox.PerformanceRating*2+Gearbox.PowerRating*2)
 
    counts = counts + 4
 
    counts_Quality = counts_Quality + 7
 
    counts_Racing = counts_Racing + 5
 
}
 
 
 
 
 
//Race Results
for(Racing results over the last 6 years, using this trim or an car or engine from this trim)
{
    workmanship_Racing =  workmanship_Racing + TOTAL(RacingHistory.PlayerWins*Racing.Popularity)*0.3
}
 
 
 
 
for each racing championship over the last 6 years, using this trim or an car or engine from this trim
{
    workmanship_Racing = workmanship_Racing + 20;        
}
 
 
 
marketing_Effecents =  Average((Marketing_NewspaperEfficency + Marketing_BillboardsEfficency + 
    Marketing_MagsEfficency + Marketing_SportsEfficency + 
    Marketing_EventsEfficency + Marketing_RadioEfficency + 
    Marketing_TVEfficency + Marketing_InternetEfficency + Marketing_MiscEfficency)/6.0) * 100

Images

Workmanship

if(counts>0)
{
        workmanship_image = Workmanship/counts;
 
        if(workmanship_image > 110)
            workmanship_image = 110;
 
        if(workmanship_image > (current_Workmanship_Image+0.5) )
        {
            newImg = current_Workmanship_Image	+ 0.25 + (marketing_Effecents/3000.0) + ((workmanship_image-current_Workmanship_Image)/250.0)
 
            if(newImg > 100)
            {
                newImg = 100
            }
 
           IMAGE_WORK = NewImg
 
        }
        else if(workmanship_image<current_Workmanship_Image)
        {
            newImg = current_Workmanship_Image	-0.4+(marketing_Effecents/3000.0);
 
            if(newImg < 1)
            {
                newImg = 1;
            }
 
           IMAGE_WORK = NewImg
 
        }
 
}

Quality

if(counts>0)
{
        adjust_image = workmanship_Quality/counts_Quality;
 
        if(adjust_image > 110)
            adjust_image = 110;
 
        if(adjust_image > (current_ImgQual+0.5) )
        {
            newImg = current_ImgQual	+ 0.25 + (marketing_Effecents/3000.0) + ((adjust_image-current_ImgQual)/250.0);
 
            if(newImg > 100)
            {
                newImg = 100;
            }
 
           IMAGE_QUALITY = NewImg
 
        }
        else if(adjust_image<current_ImgQual)
        {
            newImg = current_ImgQual	-0.4+(marketing_Effecents/3000.0);
 
            if(newImg < 1)
            {
                newImg = 1;
            }
 
            IMAGE_QUALITY = NewImg
 
        }
 
}

Racing

	//Racing
if(Doing Racing)
{
        adjust_image = workmanship_Racing/counts_Racing;
 
 
        if(adjust_image > 100)
        {
            adjust_image = 100;
        }
 
        if(current_ImgRace <= 0)
            current_ImgRace = 1;
 
 
 
        if(adjust_image > current_ImgRace)
        {
            newImg = current_ImgRace + 0.25 + (marketing_Effecents/3000.0) + ((adjust_image-current_ImgRace)/250.0);
 
            if(newImg > 100)
            {
                newImg = 100;
            }
 
            IMAGE_RACING = newImg
 
        }
        else if(adjust_image<=current_ImgRace)
        {
            newImg = current_ImgRace -0.4+(marketing_Effecents/3000.0);
            if(newImg < 1)
            {
                newImg = 1;
            }
 
             IMAGE_RACING = newImg
 
        }
 
}

Global

Global_Total_Img = Global_Total_Img + ((current_ImgWork + current_ImgRace + current_ImgQual)*10);
counts_Global += 30;
 
//Global
if(counts_Global>0)
{
 
 
        adjust_image = Global_Total_Img/counts_Global;
 
            if(adjust_image > 100)
            {
                adjust_image = 100;
            }
 
 
 
        if(adjust_image>current_ImgGlobal+0.5)
        {
            newImg = current_ImgGlobal + 0.25 + (marketing_Effecents/3000.0) + ((adjust_image-current_ImgGlobal)/250.0);
            if(newImg > 100)
            {
                newImg = 100;
            }
 
            IMAGE_GLOBAL_GENERAL = newImg
 
        }
        else if(adjust_image<current_ImgGlobal)
        {
            newImg =	current_ImgGlobal-0.4+(marketing_Effecents/3000.0)	;
            if(newImg < 1)
            {
                newImg = 1;
            }
 
            IMAGE_GLOBAL_GENERAL = newImg
 
        }
 
}

Skills

Marketing

if(marketing_Effecents > current_MarketingSkill * 0.6)
{
    current_MarketingSkill = current_MarketingSkill + 0.5 + ((marketing_Effecents-current_MarketingSkill)/10.0);
 
}
else if(marketing_Effecents < current_MarketingSkill * 0.6)
{
    current_MarketingSkill = current_MarketingSkill - 0.1;
 
}
 
if(current_MarketingSkill>100)
{
    current_MarketingSkill = 100;
}
else if(current_MarketingSkill < 0)
{
    current_MarketingSkill = 0.1;
}
 
 
SKILL_MARKETING = current_MarketingSkill

Manufacturing

Adjusted_Manufacturing = TOTAL( (1.35-Speed) * (Moral/100.0) * (Lines/1.35) ) From Non-Contract Lines
 
 
if(Adjusted_Manufacturing > (manuSkill*1.02))
{
    manuSkill = manuSkill+0.25+ ((Adjusted_Manufacturing-manuSkill)/250.0);
 
    if(manuSkill>100)
    {
        manuSkill = 100;
    }
 
    SKILL_MANUFACTORING=manuSkill
 
 
}
else if(Adjusted_Manufacturing < (manuSkill*0.98))
{
    manuSkill = manuSkill-0.25;
 
    if(manuSkill < 0)
    {
        manuSkill = 0.1;
    }
 
    SKILL_MANUFACTORING=manuSkill
}

RnD

Researching_Average = (effectCemps+effectEemps+effectGemps+effectVemps)/4.0;
 
 
RnDCounter =Number of designs started within in the last 2 years.
 
if(RnDCounter == 0)
{
        rndSkillChange = -0.08 + (Researching_Average/12.0);
}
else
{
        rndSkillChange = (RnDCounter) * 0.02 + (Researching_Average/12.0);
}
 
 
 
SET SKILL_RND = SKILL_RND + rndSkillChange

Administrative

For All Branches
{
    dealerFocus = TOTAL(Dealer_Resources)
    branchNumber =  COUNT(Branch_ID
    branchMorale = AVG(Employee_Moral) 
}
 
 
 
if((branchNumber/(numOfCities/1.5)) * 100 < (adminSkill * 0.9))
{
   SET SKILL_ADMIN = SKILL_ADMIN - 0.5
}
else if((branchNumber/(numOfCities/1.5)) * 100  > (adminSkill * 1.1) && branchMorale >= 98)
{
   SET SKILL_ADMIN = SKILL_ADMIN + 0.7 
}

Dealer

For All Branches
{
    dealerFocus = TOTAL(Dealer_Resources)
    branchNumber =  COUNT(Branch_ID
    branchMorale = AVG(Employee_Moral) 
}
 
 
if(branchNumber != 0)
    dealerFocus = (dealerFocus*100)/(branchNumber);
 
 
if(dealerFocus < (dealerSkill * 0.95))
{
    SET SKILL_DEALER= SKILL_DEALER - 0.3 
}
else if(dealerFocus > (dealerSkill))
{
    SET SKILL_DEALER= SKILL_DEALER + 0.5 
}

Design Skills

Engine

Self designed engines over the last 5 years.
{
    overallDesignRating = Average(Engine.OverallRating);
}
 
 
oldDesignSkill = current_DesignEngineSkills;
 
 
 
if(overallDesignRating > (current_DesignEngineSkills*1.02) AND current_DesignEngineSkills < 95.5)
{
    current_DesignEngineSkills = current_DesignEngineSkills + RacingRnDFocus;
 
    current_DesignEngineSkills = current_DesignEngineSkills + 0.25 +(0.65*effectEemps);
 
    SET DESIGN_ENGINE = current_DesignEngineSkills
 
}
else if(overallDesignRating<1)
{
    current_DesignEngineSkills = current_DesignEngineSkills + RacingRnDFocus;
 
    current_DesignEngineSkills = current_DesignEngineSkills - 0.1 + (0.4*effectEemps);
 
    if(current_DesignEngineSkills < 0.1)
        current_DesignEngineSkills = 0.1;
 
    SET DESIGN_ENGINE = current_DesignEngineSkills
 
}
else if(current_DesignEngineSkills < 101 && current_DesignEngineSkills > 1)
{
    current_DesignEngineSkills = current_DesignEngineSkills + RacingRnDFocus;
 
    current_DesignEngineSkills = current_DesignEngineSkills - 0.25 +(0.85*effectEemps);
 
    if(current_DesignEngineSkills < 0.1)
        current_DesignEngineSkills = 0.1;
    else if(current_DesignEngineSkills > 99.99)
        current_DesignEngineSkills = 99.99;
 
    SET DESIGN_ENGINE = current_DesignEngineSkills
}

Chassis

 
Self designed chassis over the last 5 years.
{
    overallDesignRating = Average(Chassis.OverallRating);
}
 
 
oldDesignSkill = current_DesignChassisSkills;
 
 
if(overallDesignRating > (current_DesignChassisSkills*1.02) && current_DesignChassisSkills < 95.5)
{
    current_DesignChassisSkills = current_DesignChassisSkills + RacingRnDFocus;
 
    current_DesignChassisSkills = current_DesignChassisSkills + 0.25+(0.65*effectCemps);
 
    SET DESIGN_CHASSIS = current_DesignChassisSkills
 
}
else if(overallDesignRating<1)
{
    current_DesignChassisSkills = current_DesignChassisSkills + RacingRnDFocus;
 
    current_DesignChassisSkills = current_DesignChassisSkills - 0.1 + (0.4*effectCemps);
 
    SET DESIGN_CHASSIS = current_DesignChassisSkills
}
else if(current_DesignChassisSkills < 101  && current_DesignChassisSkills > 1)
{
    current_DesignChassisSkills = current_DesignChassisSkills + RacingRnDFocus;
 
    current_DesignChassisSkills = current_DesignChassisSkills - 0.25+(0.85*effectCemps);
 
    if(current_DesignChassisSkills > 99.99)
        current_DesignChassisSkills = 99.99;
 
    SET DESIGN_CHASSIS = current_DesignChassisSkills
 
}

Gearbox

Self designed gearboxes over the last 5 years.
{
    overallDesignRating = Average(Gearbox.OverallRating);
}
pStmt->FreeQuery();
 
oldDesignSkill = current_DesignGearboxSkills;
 
 
if(overallDesignRating > (current_DesignGearboxSkills*1.02) && current_DesignGearboxSkills < 95.5)
{
   current_DesignGearboxSkills = current_DesignGearboxSkills + RacingRnDFocus;
 
   current_DesignGearboxSkills = current_DesignGearboxSkills + 0.25 +(0.65*effectGemps);
 
   SET DESIGN_TRANSMISSION = (current_DesignGearboxSkills)
 
}
else if(overallDesignRating<1)
{
    current_DesignGearboxSkills = current_DesignGearboxSkills + RacingRnDFocus;
 
    current_DesignGearboxSkills = current_DesignGearboxSkills - 0.1 + (0.4*effectGemps);
 
    SET DESIGN_TRANSMISSION = (current_DesignGearboxSkills)
}
else if(current_DesignGearboxSkills < 101 && current_DesignGearboxSkills > 1)
{
    current_DesignGearboxSkills = current_DesignGearboxSkills + RacingRnDFocus;
 
    current_DesignGearboxSkills = current_DesignGearboxSkills - 0.25+(0.85*effectGemps);
 
    if(current_DesignGearboxSkills > 99.99)
        current_DesignGearboxSkills = 99.99;
 
   SET DESIGN_TRANSMISSION = (current_DesignGearboxSkills)
}

Vehicle Design Skills

Body

 
For Every Vehicle Self Designed For This Marque In The Last 5 Years
{
    overallDesignRating = AVERAGE Rating_Overall
 
    if(overallDesignRating > (current_DesignBodySkills*1.02) AND current_DesignBodySkills < 95.5)
    {
       current_DesignBodySkills = current_DesignBodySkills + 0.25+(0.65*effectVemps);
 
       SET DESIGN_BODY = current_DesignBodySkills
    }
    else if(overallDesignRating == 0)
    {
        current_DesignBodySkills = current_DesignBodySkills - 0.1 + (0.4*effectVemps);
 
        SET DESIGN_BODY = current_DesignBodySkills
    }
    else if(current_DesignBodySkills < 101  AND current_DesignBodySkills > 1)
    {
        current_DesignBodySkills = current_DesignBodySkills - 0.25+(0.85*effectVemps);
 
        if(current_DesignBodySkills > 99.99)
            current_DesignBodySkills = 99.99;
 
        SET DESIGN_BODY = current_DesignBodySkills
    }
 
}

Luxury

For Every Vehicle Self Designed For This Marque In The Last 5 Years
{
    overallDesignRating = AVERAEG Rating_Luxury
 
    if(overallDesignRating > (current_DesignLuxSkills*1.02)  AND current_DesignLuxSkills < 95.5)
    {
        current_DesignLuxSkills = current_DesignLuxSkills + 0.25 +(0.65*effectVemps);
 
        DESIGN_LUX = current_DesignLuxSkills
    }
    else if(overallDesignRating==0)
    {
        current_DesignLuxSkills = current_DesignLuxSkills - 0.1 + (0.4*effectVemps);
 
        DESIGN_LUX = current_DesignLuxSkills
    }
    else if(current_DesignLuxSkills<101  AND current_DesignLuxSkills > 1)
    {
        current_DesignLuxSkills = current_DesignLuxSkills - 0.25 +(0.85*effectVemps);
 
        if(current_DesignLuxSkills > 99.99)
            current_DesignLuxSkills = 99.99;
 
        DESIGN_LUX = current_DesignLuxSkills
    }
 
}

Safety

For Every Vehicle Self Designed For This Marque In The Last 5 Years
{
    overallDesignRating = AVGERAGE Rating_Safety
 
    if(overallDesignRating > (current_DesignSafeSkills*1.02)  AND current_DesignSafeSkills < 95.5)
    {
        current_DesignSafeSkills = current_DesignSafeSkills + 0.25 +(0.65*effectVemps);
 
        DESIGN_SAFETY = current_DesignSafeSkills
    }
    else if(overallDesignRating==0)
    {
        current_DesignSafeSkills = current_DesignSafeSkills - 0.1 + (0.4*effectVemps);
 
        DESIGN_SAFETY = current_DesignSafeSkills
    }
    else if(current_DesignSafeSkills<101  AND current_DesignSafeSkills > 1)
    {
        current_DesignSafeSkills = current_DesignSafeSkills - 0.25 +(0.85*effectVemps);
 
        if(current_DesignSafeSkills > 99.99)
            current_DesignSafeSkills = 99.99;
 
        DESIGN_SAFETY = current_DesignSafeSkills
    }
}

Vehicle Image

Vehicle Image

newVehicleImg = 0;
movementAmount = 0;
 
 
marketingEffect = AVERAGE (Marketing_NewspaperEfficency + Marketing_BillboardsEfficency + 
                    Marketing_MagsEfficency + Marketing_SportsEfficency + Marketing_EventsEfficency +
                    Marketing_RadioEfficency + Marketing_TVEfficency + Marketing_InternetEfficency + Marketing_MiscEfficency)
 
 
 
 
 
For Every Active Vehicle:
{
    currentVehicleIMG = CarInfo.Vehicle_Image
 
 
    if( (CarInfo.CarTypeRating+ CarInfo.Rating_Dependability*3+CarInfo.Rating_Quality*2) / 6.0 > currentVehicleIMG*1.2)
    {
        newVehicleImg = currentVehicleIMG + (0.25 + ((CarInfo.Rating_Dependability*3+CarInfo.Rating_Quality*2)/2000.0) +
            (((current_ImgGlobal*2) + current_ImgQual  + current_ImgWork + marketingEffect+  (current_ImgRace/2.0))/2200.0)); //.35 to  .6 Max
    }
    else if((CarInfo.CarTypeRating+CarInfo.Rating_Dependability*3+CarInfo.Rating_Quality*2) / 6.0< currentVehicleIMG * 0.85)
    {
        newVehicleImg = currentVehicleIMG + (-0.50  + ((CarInfo.Rating_Dependability*3+CarInfo.Rating_Quality*2)/2000.0)+
            (((current_ImgGlobal*2) + current_ImgQual  + current_ImgWork + marketingEffect +  (current_ImgRace/2.0))/2200.0)); //-.4 to -.15
    }
    else
    {
        newVehicleImg = currentVehicleIMG + (-0.25  + ((CarInfo.Rating_Dependability*3+CarInfo.Rating_Quality*2)/5000.0) +
            (((current_ImgGlobal*2) + current_ImgQual  + current_ImgWork + marketingEffect +  (current_ImgRace/2.0))/1100.0)); //-.20 to .30
    }
 
    movementAmount = (newVehicleImg-currentVehicleIMG)/4.0;
 
    newVehicleImg = (Random Number Between (0 and movementAmount)) + currentVehicleIMG;
 
    if(newVehicleImg <=1)
    {
        newVehicleImg = 1;
    }
    else if(newVehicleImg >= 100)
    {
        newVehicleImg = 100;
    }
 
    if(currentVehicleIMG DOES NOT EQUAL newVehicleImg)
    {
        VehicleImg = newVehicleImg
    }
 
}
gm_skills_image.txt · Last modified: 2022/10/28 10:19 by admin