User Tools

Site Tools


gamemanual:gm_chassis_design

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
gamemanual:gm_chassis_design [2022/02/15 18:00] – external edit 127.0.0.1gamemanual:gm_chassis_design [2022/07/04 13:56] (current) – [Employees Required] admin
Line 1: Line 1:
 +====== Chassis 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_FD_Length** | Slider: Frame Dimensions => Wheelbase (Length) | | **Slider_FD_Width** | Slider: Frame Dimensions => Track (Width) |
 +| **Slider_FD_Height** | Slider: Frame Dimensions => Frame Height | | **Slider_FD_Weight** | Slider: Frame Dimensions => Frame Weight |
 +| **Slider_FD_ENG_Width** | Slider: Frame Dimensions => Maximum Supported Engine Width | | **Slider_FD_ENG_Length** | Slider: Frame Dimensions => Maximum Supported Engine Length |
 +| **Slider_SUS_Stability** | Slider: Suspension => Stability | | **Slider_SUS_Comfort** | Slider: Suspension => Ride Comfort |
 +| **Slider_SUS_Performance** | Slider: Suspension => Performance | | **Slider_SUS_Braking** | Slider: Suspension => Braking |
 +| **Slider_SUS_Durability** | Slider: Suspension => Durability | | **Slider_DE_Performance** | Slider: Design Focus => Design Performance |
 +| **Slider_DE_Control** | Slider: Design Focus => Design Control | | **Slider_DE_Str** | Slider: Design Focus => Design Strength |
 +| **Slider_DE_Depend** | Slider: Design Focus => Design Dependability | | **Slider_DesignPace** | Slider: Design Focus => Development Pace |
 +| **Slider_TECH_Materials** | Slider: Component Quality => Material Quality | | **Slider_TECH_Compoenents** | Slider: Component Quality => Component Quality |
 +| **Slider_TECH_Techniques** | Slider: Component Quality => Manufacturing Techniques | | **Slider_TECH_Tech** | Slider: Component Quality => Technology |
 +
 +==== Sub-Components ====
 +
 +^ Variable ^ Description ^  ^ Variable ^ Description ^
 +| **SubComponent_Frame_Str** | Frame Strength Value | | **SubComponent_Frame_Safety** | Frame Safety Value |
 +| **SubComponent_Frame_Durability** | Frame Durability Value | | **SubComponent_Frame_Weight** | Frame Weight Value |
 +| **SubComponent_Frame_Design** | Frame Design Requirements Value | | **SubComponent_Frame_Manu** | Frame Manufacturing Requirements Value |
 +| **SubComponent_Frame_Cost** | Frame Cost Requirements Value | | **SubComponent_Frame_Performance** | Frame Performance Value |
 +| **SubComponent_FrSus_Steering** | Front Suspension Handling Value | | **SubComponent_FrSus_Braking** | Front Suspension Braking Value |
 +| **SubComponent_FrSus_Comfort** | Front Suspension Comfort Value | | **SubComponent_FrSus_Performance** | Front Suspension Performance Value |
 +| **SubComponent_FrSus_Durability** | Front Suspension Durability Value | | **SubComponent_FrSus_Manu** | Front Suspension Manufacturing Requirements Value |
 +| **SubComponent_FrSus_Design** | Front Suspension Design Requirements Value | | **SubComponent_FrSus_Cost** | Front Suspension Costs Requirements Value |
 +| **SubComponent_RrSus_Braking** | Rear Suspension Braking Value | | **SubComponent_RrSus_Steering** | Rear Suspension Handling Value |
 +| **SubComponent_RrSus_Performance** | Rear Suspension Performance Value | | **SubComponent_RrSus_Comfort** | Rear Suspension Comfort Value |
 +| **SubComponent_RrSus_Manu** | Rear Suspension Manufacturing Requirements Value | | **SubComponent_RrSus_Durability** | Rear Suspension Durability Value |
 +| **SubComponent_RrSus_Cost** | Front Suspension Costs Requirements Value | | **SubComponent_RrSus_Design** | Front Suspension Design Requirements Value |
 +| **SubComponent_Drive_rideSteering** | Drivetrain Driveability Value | | **SubComponent_Drive_ridePerformance** | Performance Handling Value |
 +| **SubComponent_Drive_Duriblity** | Drivetrain Durability Value | | **SubComponent_Drive_Weight** | Drivetrain Weight Value |
 +| **SubComponent_Drive_carPerformance** | Drivetrain Performance Value | | **SubComponent_Drive_Manu** | Drivetrain Manufacturing Requirements Value |
 +| **SubComponent_Drive_Design** | Drivetrain Design Requirements Value | | **SubComponent_Drive_Cost** | Drivetrain Costs Requirements Value |
 +| **SubComponent_Drivetain_Engine_Width** | Drivetrain Maximum Supported Engine Width Value | | **SubComponent_Drivetain_Engine_Length** | Drivetrain Maximum Supported Engine Length Value |
 +
 +
 +==== Global ====
 +
 +
 +^ Variable ^ Description ^  ^ Variable ^ Description ^
 +| **Year** | Current game year | | **Marq_DesignChassisSkill** | Chassis design skill of the selected marque |
 +| **Global_Lengths** | Global vehicle length variable as defined in the TurnEvents.xml file | | **Global_Weight** | Global vehicle width variable as defined in the TurnEvents.xml file |
 +| **PreResearchChassisAmountEffect** | Research team's bonus on chassis design | | **designRandomVal** | Random variation based on workmanship image/skill ratings.  |
 +| **carPriceRate** | Global vehicle costs variable as defined in the TurnEvents.xml file | |  |  |
 +| **ex_0d9962p_year99** | 0.9962%%^%%(year-1899) | | **ex_1d003p_year99** | 1.003%%^%%(year-1899) | 
 +| **ex_1d005p_year99** | 1.005%%^%%(year-1899) | | **ex_1d015p_year99** | 1.015%%^%%(year-1899) | 
 +| **ex_1d02p_year99** | 1.02%%^%%(year-1899) | | **ex_1d025p_year99** | 1.025%%^%%(year-1899) |
 +| **ex_1d028p_year99** | 1.028%%^%%(year-1899) | | **ex_1d032p_year99** | 1.032%%^%%(year-1899) |
 +| **ex_1d045p_year99** | 1.045%%^%%(year-1899) | |  |  |
 +
 +
 +===== Specs =====
 +
 +==== Chassis Length ====
 +
 +Chassis length in cm.
 +
 +<code cpp>
 +Chassis_Length = (145 + Global_Lengths * (2.3*Slider_FD_Length)) - ((Global_Lengths * 0.5)/5)
 +</code>
 +
 +
 +==== Chassis Width ====
 +
 +Chassis width in cm.
 +
 +<code cpp>
 +Chassis_Width = (100 + Global_Width * Slider_FD_Width + 20 * Slider_FD_Length)
 +</code>
 +
 +==== Chassis Weight ====
 +
 +Chassis width in kg.
 +
 +<code cpp>
 +Chassis_Weight = 40 + ((Global_Weight) * (1.25*Slider_FD_Weight+0.1) +
 + ((Global_Weight*.5)*(6*Slider_FD_Length+0.1)) +
 + ((Global_Weight/15)*(3.3*Slider_FD_Width+0.1)) + 
 + ((Global_Weight/20)*(2*Slider_FD_Height+0.1)) +
 + ((Global_Weight/5)*(5*SubComponent_Frame_Weight+0.1)) + 
 + ((Global_Weight/10)*(3*SubComponent_Drive_Weight+0.1)) - 
 + ((Global_Weight/5)*(Slider_TECH_Materials)) -
 + ((Global_Weight/8)*(Slider_DE_Performance)) - 
 + ((Global_Weight/11)*(Slider_TECH_Techniques)))
 +
 +if year is less than 1981)
 + Chassis_Weight /= (2.0 * ex_0d9962p_year99)
 +else
 + Chassis_Weight /= (1.469262941607760500229789005264 )
 +
 +</code>
 +
 +
 +==== Max Engine Length ====
 +
 +Maximum engine length in inches.
 +
 +<code cpp>
 +Max_Engine_Length = (8 + ((((Global_Lengths*2.25) / 24) * 
 + ((Slider_FD_Length+.1)*2.5)) + ((Global_Lengths*2.25) / 24)  * 
 + (Slider_FD_ENG_Length+.1)))*SubComponent_Drivetain_Engine_Length
 +</code>
 +
 +
 +==== Max Engine Width ====
 +
 +Maximum engine width in inches.
 +
 +<code cpp>
 +Max_Engine_Width = (8 + ((12  * ((Slider_FD_Width+0.1))*2.5) + 13 *
 +           (1.25*Slider_FD_ENG_Width + 0.1)))*SubComponent_Drivetain_Engine_Width
 +</code>
 +
 +===== Ratings =====
 +
 +
 +==== Comfort Rating ====
 +
 +Value limited between 0 to 100.
 +
 +<code cpp>
 +Comfort_Rating = ((Slider_DE_Control ) + (SubComponent_Drive_rideSteering) +
 + (Slider_FD_Weight ) + (SubComponent_FrSus_Braking + 
 + SubComponent_RrSus_Braking + Slider_SUS_Braking * 4.5) + 
 +        (SubComponent_FrSus_Comfort + SubComponent_RrSus_Comfort + 
 +        Slider_SUS_Comfort * 6 ) + (SubComponent_FrSus_Steering + 
 +        SubComponent_RrSus_Steering + Slider_SUS_Stability * 4.5) + 
 +        ((Slider_TECH_Compoenents + Slider_TECH_Materials + 
 +        Slider_TECH_Tech + Slider_TECH_Techniques)/2))
 +
 +
 +Comfort_Rating /=  2.6
 +
 +Comfort_Rating *= 10
 +
 +Comfort_Rating += (10 * (Marq_DesignChassisSkill/100.0))
 +
 +if Comfort_Rating is greater than 100
 +    Comfort_Rating = 100
 +    
 +</code>
 +
 +
 +==== Performance Rating ====
 +
 +Value limited between 0 to 100.
 +
 +<code cpp>
 +Performance_Rating = Slider_SUS_Braking*2 +(Slider_DE_Performance) - 
 + (Slider_FD_Weight*2)+ (Slider_SUS_Performance*4)+
 + (SubComponent_FrSus_Steering)+(SubComponent_RrSus_Steering)+
 + ((Slider_TECH_Compoenents+Slider_TECH_Materials*2+
 + Slider_TECH_Tech+Slider_TECH_Techniques)/2.0)+
 +        SubComponent_FrSus_Performance + SubComponent_RrSus_Performance + 
 +        SubComponent_Frame_Performance + SubComponent_Drive_carPerformance*2 - 
 +        (Slider_FD_Length+Slider_FD_Width)+(1.0-Slider_SUS_Stability)
 +
 +Performance_Rating /= 2.0
 +
 +Performance_Rating *= 10
 +
 +Performance_Rating += (10 * (Marq_DesignChassisSkill/100.0))
 +
 +if Performance_Rating is greater than 100
 +    Performance_Rating = 100
 +</code>
 +
 +
 +==== Strength Rating ====
 +
 +Value limited between 0 to 100.
 +
 +<code cpp>
 +Strength_Rating = (((SubComponent_Drive_Weight + SubComponent_Frame_Weight)/4) + 
 +        Slider_FD_Weight*2 + ((SubComponent_Drive_Duriblity  +  SubComponent_Frame_Durability + 
 +        SubComponent_RrSus_Durability + SubComponent_FrSus_Durability )/6) + 
 +        Slider_FD_Height * 5 + SubComponent_Frame_Str*8 + Slider_DE_Str + 
 +        ((Slider_TECH_Compoenents*2 + Slider_TECH_Materials*2 + 
 +        Slider_TECH_Tech*2 + Slider_TECH_Techniques*2)/2)+(Slider_FD_Length))
 +
 +Strength_Rating /=  2.6
 +
 +Strength_Rating *= 10
 +
 +Strength_Rating += (10 * (Marq_DesignChassisSkill/100.0))
 +
 +if Strength_Rating is greater than 100
 +    Strength_Rating = 100
 +
 +</code>
 +
 +
 +
 +==== Durability Rating ====
 +
 +Value limited between 0 to 100.
 +
 +<code cpp>
 +Durability_Rating = Slider_DE_Depend*0.5 + SubComponent_Drive_Duriblity*1.5 + 
 +        SubComponent_Frame_Durability*1.5 + ((SubComponent_FrSus_Durability + 
 +        SubComponent_RrSus_Durability)/2) + Slider_SUS_Durability*2.5 + 
 +        ((Slider_TECH_Compoenents + Slider_TECH_Materials + 
 +        Slider_TECH_Techniques - Slider_TECH_Tech))
 +
 +Durability_Rating *= 10
 +
 +Durability_Rating += (10 * (Marq_DesignChassisSkill/100.0))
 +
 +if Durability_Rating is greater than 100
 +    Durability_Rating = 100
 +</code>
 +
 +
 +
 +==== Overall Rating ====
 +
 +Value limited between 0 to 100.
 +
 +<code cpp>
 +Overall_Rating = (Comfort_Rating + Performance_Rating +
 + Strength_Rating + Durability_Rating + Marq_DesignChassisSkill)/5
 +
 +Overall_Rating +=  (5*PreResearchChassisAmountEffect)
 +
 +if Overall_Rating is greater than 100
 +    Overall_Rating = 100
 +</code>
 +
 +
 +==== Design Requirements ====
 +
 +Value limited between 0 to 100.
 +   
 +<code cpp>
 +Design_Req = (Slider_DE_Control + Slider_DE_Depend + Slider_DE_Performance 
 +            + Slider_DE_Str + SubComponent_Drive_Design + SubComponent_Frame_Design 
 +            + SubComponent_FrSus_Design + SubComponent_RrSus_Design)  
 +
 +Design_Req += ((Slider_FD_ENG_Length + Slider_FD_ENG_Width + (1- Slider_FD_Weight)
 +                        + Slider_SUS_Braking + Slider_SUS_Comfort + Slider_SUS_Durability
 +                        + Slider_SUS_Performance + Slider_TECH_Tech)/4)
 +
 +Design_Req = (Design_Req - Slider_TECH_Techniques) * 10
 +
 +</code>
 +
 +
 +==== Manufacturing Requirements ====
 +
 +<code cpp>
 +Manufacturing_Req = ((SubComponent_Frame_Weight/2) + Slider_SUS_Durability + Slider_DE_Depend
 +        + Slider_TECH_Compoenents + Slider_TECH_Materials + Slider_TECH_Tech
 +        + (Slider_TECH_Techniques * 1.5) + SubComponent_Frame_Manu + SubComponent_Drive_Manu
 +        + SubComponent_FrSus_Manu + SubComponent_RrSus_Manu);
 +
 +Manufacturing_Req = Manufacturing_Req * 10 + 0.01;
 +</code>
 +
 +
 +
 +
 +===== Miscellaneous =====
 +
 +
 +==== Employees Required ====
 +
 +<code cpp>
 +if year before 2021
 +    Engineers_Required = Design_Req * (0.08833*(year-1899)+0.275);
 +else
 +    Engineers_Required = Design_Req * (0.08833*(121)+0.275);
 +
 +
 +Engineers_Required = Engineers_Required/5 + ((Engineers_Required/1.2)*Slider_DesignPace) + 2;
 +</code>
 +
 +
 +
 +==== Manufacturing Costs ====
 +
 +
 +<code cpp>
 +Costs_Dimension_Sliders = (Slider_FD_Height * Slider_FD_Height) 
 +        (Slider_FD_Length * Slider_FD_Length*1.2)  +
 +        (Slider_FD_Width*Slider_FD_Width) +  ((1-Slider_FD_Weight) * 
 +        (1-Slider_FD_Weight)) +
 +        (Slider_FD_ENG_Length * Slider_FD_ENG_Length*0.8) + 
 +        (Slider_FD_ENG_Width *Slider_FD_ENG_Width *0.8)
 +
 +Costs_Frame = ((Costs_Dimension_Sliders * (25* ex_1d015p_year99) * 
 +        SubComponent_Drive_Cost) 
 +        * SubComponent_Frame_Cost) * ex_1d015p_year99 * (carPriceRate)
 +
 +
 +Costs_Frame = 15  * ex_1d02p_year99+ Costs_Frame + 1 + (.04 * Costs_Frame) + 
 +        (15 * ex_1d015p_year99 * SubComponent_Drive_Cost) + 
 +        (15 * ex_1d015p_year99 * SubComponent_Frame_Cost)
 +
 +
 +
 +Costs_Suspensions_Sliders = (Slider_SUS_Braking * Slider_SUS_Braking * 0.75) + 
 +        (Slider_SUS_Comfort * Slider_SUS_Comfort *1.25 ) +
 +        (Slider_SUS_Performance * Slider_SUS_Performance *1.2 )+ 
 +        (Slider_SUS_Durability * Slider_SUS_Durability *1.35 ) + 
 +        (Slider_SUS_Stability *  Slider_SUS_Stability )
 +
 +Costs_Suspension = (( Costs_Suspensions_Sliders  * (20 * ex_1d02p_year99) * 
 +        SubComponent_FrSus_Cost) * SubComponent_RrSus_Cost) *
 +        ex_1d015p_year99 * (carPriceRate)
 +
 +Costs_Suspension = 15 * ex_1d02p_year99+ Costs_Suspension + 
 +        1 + (.04 * Costs_Suspension) + 
 +        (15 * ex_1d015p_year99 * SubComponent_FrSus_Cost) +
 +        (15 * ex_1d015p_year99 * SubComponent_RrSus_Cost)
 +
 +
 +Costs_Tech_Sliders = (Slider_TECH_Compoenents * Slider_TECH_Compoenents * 1.15) + 
 +        (Slider_TECH_Materials * Slider_TECH_Materials * 1.25) +
 +        (Slider_TECH_Tech * Slider_TECH_Tech * 1.25) + 
 +        (Slider_TECH_Techniques * Slider_TECH_Techniques * 0.75)
 +
 +
 +Costs_Tech = Costs_Tech_Sliders * (30 * ex_1d015p_year99)  * (carPriceRate)
 +
 +Costs_Tech = 15 * ex_1d015p_year99+ Costs_Tech + 1 + (.04 * Costs_Tech)
 +
 +
 +Costs_Hyper_Sliders = ((Slider_DE_Control + Slider_DE_Depend + 
 +    Slider_DE_Performance + Slider_DE_Str) +
 +    (Slider_FD_Length+ Slider_FD_Width+ Slider_FD_Height + 
 +    (1-Slider_FD_Weight)+ Slider_FD_ENG_Width + Slider_FD_ENG_Length) +
 +    (Slider_SUS_Stability + Slider_SUS_Comfort + Slider_SUS_Performance +
 +    Slider_SUS_Braking+Slider_SUS_Durability) +
 +    (Slider_TECH_Materials+ Slider_TECH_Compoenents +
 +    Slider_TECH_Techniques + Slider_TECH_Tech))/19.0
 +
 +
 +Costs_Hyper = 450 * ex_1d045p_year99 * (Costs_Hyper_Sliders^4)
 +
 +Manufacturing_Costs = ((Costs_Frame + Costs_Suspension + Costs_Tech) *
 +                    (carPriceRate)) * designRandomVal
 +
 +Manufacturing_Costs += Manufacturing_Costs-((Manufacturing_Costs/10.0)
 +                    * (Marq_DesignChassisSkill/100.0))
 +</code>
 +
 +
 +
 +==== Design Costs ====
 +
 +
 +<code cpp>
 +
 +
 +DesignCosts_FrameSliders = (Slider_FD_ENG_Length * Slider_FD_ENG_Length ) +
 +                        (Slider_FD_ENG_Width * Slider_FD_ENG_Width) + 
 +                        (Slider_FD_Height *Slider_FD_Height ) + 
 +                        (Slider_FD_Length * Slider_FD_Length * 1.2) + 
 +                        (Slider_FD_Width * Slider_FD_Width * 0.8) + 
 +                        (1-(Slider_FD_Weight * Slider_FD_Weight * 0.8))
 +
 +
 +DesignCosts_Frame = DesignCosts_FrameSliders * (7000 * ex_1d028p_year99)
 +
 +DesignCosts_Frame = (DesignCosts_Frame + 5000 ) * 
 +                    SubComponent_Frame_Design * SubComponent_Drive_Design;
 +
 +DesignCosts_SuspensionSliders = (Slider_SUS_Braking * Slider_SUS_Braking * 0.8 ) + 
 +                    (Slider_SUS_Comfort * Slider_SUS_Comfort * 1.2) + 
 +                    (Slider_SUS_Durability *  Slider_SUS_Durability * 1.25) + 
 +                    (Slider_SUS_Performance * Slider_SUS_Performance * 1.15 ) + 
 +                    (Slider_SUS_Stability * Slider_SUS_Stability * 1.05)
 +
 +DesignCost_Suspension = DesignCosts_SuspensionSliders *  (9000 * ex_1d028p_year99)
 +
 +DesignCost_Suspension = (DesignCost_Suspension + 2500) * 
 +                        SubComponent_FrSus_Design * SubComponent_RrSus_Design
 +
 +DesignCosts_DesignSliders = (Slider_DE_Control*Slider_DE_Control*10) + 
 +                            (Slider_DE_Depend*Slider_DE_Depend*10) + 
 +                            (Slider_DE_Performance*Slider_DE_Performance*10) + 
 +                            (Slider_DE_Str*Slider_DE_Str*10)
 +
 +DesignCosts_Design = DesignCosts_DesignSliders * (14000 * ex_1d028p_year99)
 +
 +DesignCosts_Design = (DesignCosts_Design + 12000 ) * SubComponent_Frame_Design *
 +                    SubComponent_Drive_Design * SubComponent_FrSus_Design *
 +                    SubComponent_RrSus_Design
 +
 +DesignCosts_TechSliders = (Slider_TECH_Compoenents * Slider_TECH_Compoenents) +
 +                        (Slider_TECH_Materials  * Slider_TECH_Materials ) + 
 +                        (Slider_TECH_Tech * Slider_TECH_Tech ) + 
 +                        (Slider_TECH_Techniques * Slider_TECH_Techniques)
 +
 +DesignCosts_Tech = DesignCosts_TechSliders *  (9500 * ex_1d028p_year99)
 +
 +DesignCosts_Tech = (DesignCosts_Tech + 15000)
 +
 +//See Manufacturing Costs For Calculations.
 +Costs_Hyper_Sliders = Costs_Hyper_Sliders * (100*ex_1d025p_year99);
 +
 +DesignCosts = (DesignCosts_Frame + DesignCost_Suspension + DesignCosts_Design +
 +            DesignCosts_Tech + Costs_Hyper_Sliders) *ex_1d032p_year99
 +
 +DesignCosts = (DesignCosts/5)+(DesignCosts*(Slider_DesignPace*Slider_DesignPace*4.5))
 +
 +</code>
 +
 +
 +
 +==== Finish Time ====
 +
 +<code cpp>
 +
 +FinishTime_Frame = ((Slider_FD_Height + Slider_FD_Length + Slider_FD_Width +
 +            ((Slider_FD_ENG_Length + Slider_FD_ENG_Width)/1.5))/
 +            (Slider_FD_Weight + .25))
 +
 +FinishTime_Suspension = ((Slider_SUS_Braking*0.5 + Slider_SUS_Comfort + 
 +                        Slider_SUS_Durability + Slider_SUS_Performance + 
 +                        Slider_SUS_Stability)/2)
 +
 +FinishTime_Design = (Slider_DE_Control + Slider_DE_Depend + 
 +                    Slider_DE_Performance + Slider_DE_Str) * 6
 +
 +FinishTime_Tech = ((Slider_TECH_Compoenents + Slider_TECH_Materials + 
 +                    Slider_TECH_Tech) / 1.25);
 +
 +FinishTime  = 4 + ((FinishTime_Frame + FinishTime_Suspension + 
 +            FinishTime_Design + FinishTime_Tech)/4.95) * 
 +            ex_1d005p_year99 + (1.15*ex_1d003p_year99*hyperSliders)
 +
 +
 +if year is less than 2020
 +{
 +    if Slider_DesignPace+0.05 is greater than 0
 +        AdditionalTime = (((year-1840)/15.0)*((0.5/(Slider_DesignPace+0.05))-0.45))
 +    else
 +        AdditionalTime = (((year-1840)/15.0)*((0.5/(0.05))-0.45))
 +}
 +else
 +{
 +    if Slider_DesignPace+0.05 is greater than 0
 +        AdditionalTime = (((2020-1840)/15.0)*((0.5/(Slider_DesignPace+0.05))-0.45))
 +    else
 +        AdditionalTime = ( ((2020-1840)/15.0 ) *((0.5/(0.05) ) -0.45) )
 +}
 +
 +if Slider_DesignPace is less than 0.5
 +{
 +    FinishTime = FinishTime + AdditionalTime;
 +}
 +else
 +{
 +    TurnsOff = (Slider_DesignPace - 0.5)/0.20;
 +    FinishTime = FinishTime +  (AdditionalTime - TurnsOff);
 +}
 +
 +if FinishTime is less than 1
 +    FinishTime = 1;
 +
 +</code>