gm_skills_image
Table of Contents
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