gamemanual:gm_unions
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
gamemanual:gm_unions [2022/07/12 12:42] – [Variables] admin | gamemanual:gm_unions [2022/08/09 15:52] (current) – [Variables] admin | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ======= Unions And Strikes Game Mechanics ======= | ||
+ | |||
+ | The Game Mechanics section of the manual details the internal formula used in the game's calculations. | ||
+ | |||
+ | 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:// | ||
+ | |||
+ | |||
+ | ====== Variables ====== | ||
+ | |||
+ | |||
+ | ^ Name ^ Description ^ ^ Name ^ Description ^ | ||
+ | | **factoryWageDifficultyAddition** | This variable adjusts the wages demanded by factory employees. | ||
+ | | **Factory_Wage** | The amount you're paying factory employees | ||
+ | | **Engineering_Wage** | The amount you're paying engineering employees | ||
+ | | **Admin_Wage** | The amount you're paying administration employees | | **total_furloughed** | This is the number of employees you have removed from work. This normally occurs when you adjust factory lines. Some furloughed workers will quit on their own. The rest are laid off automatically after 6 months unless you need them again. | ||
+ | | **total_employees** | This is the total number of employees you have | | **Department_Direct_Benefits** | Current Direct Benefits Slider position for the selected department | | ||
+ | | **Department_Defined_Benefits** | Current Defined Benefits Slider position for the selected department | ||
+ | | **Employee_Moral** | This is the morale value of the employee. | ||
+ | | **valueBP** | The current value of the Direct Benefits Slider | ||
+ | | **Last_5_Years_Income** | Total revenues over the last 5 years | | **Last_5_Years_Expenses** | Total expenses over the last 5 years | | ||
+ | | **AdministrationSkill** | Administrative Skills | ||
+ | | **DBWant** | This is the Defined Benefits slider position that the Unions want. | | **DBFeeSlider** | This is the Defined Benefits Fee slider position that the Unions want. | | ||
+ | | **DCSlider** | This is the current Direct Benefits slider position. | ||
+ | | **CurrentWages** | This is the current wages for the department. | ||
+ | |||
+ | |||
+ | ====== Employee Morale ====== | ||
+ | |||
+ | ===== From Wages ===== | ||
+ | |||
+ | ==== Factory ==== | ||
+ | |||
+ | <code cpp> | ||
+ | if( Factory_Wage < City_Average_Wage * (0.5211 + factoryWageDifficultyAddition) ) | ||
+ | Morale = Morale - (5 * (1-(Factory_Wage/ | ||
+ | else | ||
+ | Morale = Morale + (3 * (1-(1+((City_Average_Wage * (0.5211 + factoryWageDifficultyAddition ))/ | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ==== Branches ==== | ||
+ | |||
+ | <code cpp> | ||
+ | if( Branch_Wage < City_Average_Wage * 1.25 ) | ||
+ | Morale = Morale - (5 * (1-(Branch_Wage/ | ||
+ | else | ||
+ | Morale = Morale + (3 * (1-(1+((City_Average_Wage * 1.25 )/ | ||
+ | </ | ||
+ | |||
+ | ==== Engineering ==== | ||
+ | |||
+ | <code cpp> | ||
+ | if( Engineering_Wage < City_Average_Wage * 2 ) | ||
+ | Morale = Morale - (5 * (1-(Engineering_Wage/ | ||
+ | else | ||
+ | Morale = Morale + (3 * (1-(1+((City_Average_Wage * 2)/ | ||
+ | </ | ||
+ | |||
+ | ==== Marketing ==== | ||
+ | |||
+ | <code cpp> | ||
+ | if( Marketing_Wage < City_Average_Wage * 1.3 ) | ||
+ | Morale = Morale - (5 * (1-(Marketing_Wage/ | ||
+ | else | ||
+ | Morale = Morale + (3 * (1-(1+((City_Average_Wage * 1.3)/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Administration ==== | ||
+ | |||
+ | <code cpp> | ||
+ | if( Admin_Wage < City_Average_Wage * 2.5 ) | ||
+ | Morale = Morale - (5 * (1-(Admin_Wage/ | ||
+ | else | ||
+ | Morale = Morale + (3 * (1-(1+((City_Average_Wage * 2.5)/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== From Furloughed ===== | ||
+ | |||
+ | Factory morale only. | ||
+ | |||
+ | <code cpp> | ||
+ | furloughRatio = total_furloughed/ | ||
+ | laidOffRatio = (furloughed * 0.1)/ | ||
+ | |||
+ | if(furloughRatio> | ||
+ | furloughRatio = 1 | ||
+ | if(laidOffRatio> | ||
+ | laidOffRatio = 1 | ||
+ | | ||
+ | Morale = Morale - ((0.075 * furloughRatio ) + ( 0.1 * laidOffRatio) ) | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Benefits | ||
+ | |||
+ | ==== From Fees ==== | ||
+ | |||
+ | <code cpp> | ||
+ | AvgDepartmentDirectBenefits = Average Department Direct Benefits Percentage At All Companies | ||
+ | AvgDepartmentDefinedBenefits = Average Department Defined Benefits Percentage At All Companies | ||
+ | |||
+ | |||
+ | AvgDepartmentDirectBenefits = AvgDepartmentDirectBenefits * 0.9 + 0.0001 | ||
+ | AvgDepartmentDefinedBenefits = AvgDepartmentDefinedBenefits * 0.9 + 0.0001 | ||
+ | |||
+ | |||
+ | Department_Morale_Change = Department_Direct_Benefits/ | ||
+ | | ||
+ | |||
+ | if(Department_Morale_Change > 2) | ||
+ | Department_Morale_Change = 2 | ||
+ | else if(Department_Morale_Change < 2) | ||
+ | Department_Morale_Change = -2 | ||
+ | | ||
+ | Department_Morale = Department_Morale - Department_Morale_Change | ||
+ | </ | ||
+ | |||
+ | ==== Underpaying Agreement ==== | ||
+ | |||
+ | <code cpp> | ||
+ | If(Department_Direct_Benefits < Agreed_Direct_Benefits OR | ||
+ | | ||
+ | { | ||
+ | Department_Morale = Department_Morale - 2 | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== New Agreement ==== | ||
+ | |||
+ | <code cpp> | ||
+ | Department_Morale = Department_Morale = 100 | ||
+ | </ | ||
+ | |||
+ | ===== From Events ===== | ||
+ | |||
+ | |||
+ | ==== Fire Strikers ==== | ||
+ | |||
+ | <code cpp> | ||
+ | Department_Morale = Department_Morale * 0.8 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Major Strike ==== | ||
+ | |||
+ | <code cpp> | ||
+ | Department_Morale = Department_Morale * 0.5 | ||
+ | </ | ||
+ | ====== Striking ====== | ||
+ | |||
+ | |||
+ | ===== To Strike ===== | ||
+ | |||
+ | <code cpp> | ||
+ | if(Random Number Between (0.0 AND 1.0) > (1-(0.5-(Employee_Moral/ | ||
+ | Strike = true | ||
+ | else if(StockMarket_GrowthRate > 1.02 AND Random Number Between (0 and 120) < 2) | ||
+ | Strike = true | ||
+ | </ | ||
+ | |||
+ | ===== Wage Demand ===== | ||
+ | |||
+ | <code cpp> | ||
+ | |||
+ | //Branches | ||
+ | ModValue = 1.25 | ||
+ | //Factories | ||
+ | ModValue = 0.5211 + factoryWageDifficultyAddition; | ||
+ | //Marketing | ||
+ | ModValue = 1.3; | ||
+ | // | ||
+ | ModValue = 2 | ||
+ | //Admin | ||
+ | ModValue = 2.5 | ||
+ | |||
+ | |||
+ | |||
+ | if(stockmarketRates > 1.02 ) | ||
+ | RequestedWage = (City_Average_Wage * ModValue * 1.2) * (Random Number Between (0 AND 0.13) + 1.05) + 10; | ||
+ | else | ||
+ | RequestedWage = (City_Average_Wage * ModValue) * (Random Number Between ( 0 AND 0.13)+1.05)+10; | ||
+ | |||
+ | |||
+ | if(CurrentWages > RequestedWage) | ||
+ | { | ||
+ | RequestedWage = CurrentWages * 1.05 + 5; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Strike Type ===== | ||
+ | |||
+ | |||
+ | <code cpp> | ||
+ | if(Benefits_Enabled AND Random Number Between (0 to 10) = 0) | ||
+ | { | ||
+ | //Generate Benefits Demand Here... See next segments | ||
+ | } | ||
+ | else if (Random Number Between (0 to 1) = 0) | ||
+ | { | ||
+ | No strike | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | Continue With Wage Strike | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Benefits Demand ===== | ||
+ | |||
+ | The game may also generate benefit demands outside of the strike system. | ||
+ | |||
+ | ==== Direct Benefits ==== | ||
+ | |||
+ | <code cpp> | ||
+ | if(Year < 2021) | ||
+ | { | ||
+ | yearAdj = 0.0095*((year-1899)/ | ||
+ | minimumRequest = 0.009*((year-1900)); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | yearAdj = 0.0095*((121)/ | ||
+ | minimumRequest = 0.009*((120)); | ||
+ | } | ||
+ | |||
+ | |||
+ | if((year < 1975 AND Random Number Between (0 AND 99) < 6) OR | ||
+ | (year > 1974 AND year < 1995 AND Random Number Between (0 AND 99) < 20) OR | ||
+ | (year > 1994 AND Random Number Between (0 AND 99) < 30)) | ||
+ | { | ||
+ | requestAmount = valueBP + Random Number Between (0 AND 0.03) + yearAdj | ||
+ | |||
+ | if(requestAmount > 2) | ||
+ | requestAmount = 2; | ||
+ | |||
+ | if(requestAmount < minimumRequest) | ||
+ | requestAmount = minimumRequest; | ||
+ | |||
+ | | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ==== Defined Benefits ==== | ||
+ | |||
+ | <code cpp> | ||
+ | |||
+ | if( (year > 1918 AND year < 1995 AND Random Number Between (0 AND 99) < 60) OR | ||
+ | (year > 1994 AND Random Number Between (0 AND 99) < 16)) | ||
+ | { | ||
+ | requestAmount = valuePA + Random Number Between (0 AND 0.03) + yearAdj | ||
+ | |||
+ | if(requestAmount > 2) | ||
+ | requestAmount = 2; | ||
+ | |||
+ | if(requestAmount < minimumRequest) | ||
+ | requestAmount = minimumRequest; | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====== Union Negotiations ====== | ||
+ | |||
+ | <code cpp> | ||
+ | negotiations = Last_5_Years_Income / (Last_5_Years_Expenses * 1.1) | ||
+ | |||
+ | if(negotiations < 0.85) | ||
+ | { | ||
+ | negotiations = 0.85 | ||
+ | } | ||
+ | else if(negotiations > 1) | ||
+ | negotiations = 1; | ||
+ | |||
+ | if(AdministrationSkill > 0) | ||
+ | { | ||
+ | negotiations = negotiations - (0.2 * (AdministrationSkill/ | ||
+ | } | ||
+ | |||
+ | if(negotiations < 1) | ||
+ | { | ||
+ | if(negotiations < 0.65) | ||
+ | { | ||
+ | negotiations = 0.65; | ||
+ | } | ||
+ | |||
+ | DCWant = DCWant * negotiations; | ||
+ | DBWant = DBWant * negotiations; | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | DBWant = DBWant + (DBFeeSlider*(1.0-(0.2 * (AdministrationSkill/ | ||
+ | |||
+ | |||
+ | |||
+ | if(DCSlider >= DCWant AND DBSlider >= DBWant) | ||
+ | { | ||
+ | The Union Approves! | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | ====== When To Stop Striking ====== | ||
+ | |||
+ | <code cpp> | ||
+ | if(CurrentWages > RequestedWage) | ||
+ | Stop Striking | ||
+ | |||
+ | if Successful Benefits Negotiation | ||
+ | Stop Striking | ||
+ | | ||
+ | </ |