Table of Contents

組合とストライキのゲームメカニズム

組合とストライキのゲームメカニズム マニュアルのゲームメカニクスセクションは、ゲームの計算で使用される内部式の詳細を説明します。マニュアルのこのセクションは疑似コードを使用しており、ゲーム内のコードと100%同じとは限りません。

マニュアルのゲームメカニクスパートは、主に “なぜX、Y、Zをするとこの評価になるのか?”というよくある質問に対するリファレンスとして設計されています。通常、この答えには多くの異なる変数が含まれており、マニュアルのこのセクションではそれを実証しています。

マニュアルのゲームメカニクスセクションは、ソーセージがどのように作られるかを示しています。ですから、ゲームを楽しむなら、このマニュアルの部分は避けた方がいいかもしれません。

変数

名称 説明 名称 説明
factoryWageDifficultyAddition この変数は、工場の従業員が要求する賃金を調整するものです。 City_Average_Wage これは、その都市における全職種の平均賃金です。ゲームは、都市の一人当たりの所得からこの値を生成します。
Factory_Wage 工場の従業員に支払っている金額です Branch_Wage 支店の従業員に支払っている金額です
Engineering_Wage エンジニアに支払っている金額です Marketing_Wage マーケティングの従業員に支払っている金額です
Admin_Wage 管理の従業員に支払っている金額です total_furloughed これは、仕事から外した従業員の数です。通常、工場のラインを調整するときに発生します。一時解雇した従業員の中には、自分から辞めていく人もいます。残りの従業員は、6ヵ月後、再び必要にならない限り、自動的に解雇されます。
total_employees これは、あなたが擁している従業員の総数です Department_Direct_Benefits 選択した部門の現在の直接給付スライダーの位置です
Department_Defined_Benefits 選択した部門の現在の年金スライダーの位置です Department_Pension_Fees 選択した部門の現在の年金の料金スライダーの位置です
Employee_Moral これは従業員の士気です。 StockMarket_GrowthRate turnevents.xmlファイルで定義されている、株式市場の静的成長値です。
valueBP 直接給付スライダーの現在値です valuePA 年金スライダーの現在値です
Last_5_Years_Income 過去5年間の総収益です Last_5_Years_Expenses 過去5年間の総費用です
AdministrationSkill 管理スキルです DCWant これは、組合が望む直接給付のスライダー位置です。
DBWant これは、組合が望む年金のスライダーの位置です。 DBFeeSlider これは、組合が望む年金の料金スライダーの位置です。
DCSlider これが現在の直接給付のスライダーの位置です DBSlider これは、年金のスライダーの位置です。
CurrentWages これは、部門の現在の賃金です。 RequestedWage これは、部門が要求する賃金です。

従業員の士気

賃金から

工場

if( Factory_Wage < City_Average_Wage * (0.5211 + factoryWageDifficultyAddition) )
    Morale = Morale - (5 * (1-(Factory_Wage/(City_Average_Wage * (0.5211 + factoryWageDifficultyAddition ))))
else
    Morale = Morale + (3 * (1-(1+((City_Average_Wage * (0.5211 + factoryWageDifficultyAddition ))/Factory_Wage)))
 

支店

if( Branch_Wage < City_Average_Wage * 1.25 )
    Morale = Morale - (5 * (1-(Branch_Wage/(City_Average_Wage * 1.25 ))))
else
    Morale = Morale + (3 * (1-(1+((City_Average_Wage * 1.25 )/Branch_Wage))))

エンジニアリング

if( Engineering_Wage < City_Average_Wage * 2 )
    Morale = Morale - (5 * (1-(Engineering_Wage/(City_Average_Wage * 2))))
else
    Morale = Morale + (3 * (1-(1+((City_Average_Wage * 2)/Engineering_Wage))))

マーケティング

if( Marketing_Wage < City_Average_Wage * 1.3 )
    Morale = Morale - (5 * (1-(Marketing_Wage/(City_Average_Wage * 1.3))))
else
    Morale = Morale + (3 * (1-(1+((City_Average_Wage * 1.3)/Marketing_Wage))))

管理

if( Admin_Wage < City_Average_Wage * 2.5 )
    Morale = Morale - (5 * (1-(Admin_Wage/(City_Average_Wage * 2.5))))
else
    Morale = Morale + (3 * (1-(1+((City_Average_Wage * 2.5)/Admin_Wage))))

休暇から

工場の士気のみ。

furloughRatio = total_furloughed/total_employees
laidOffRatio = (furloughed * 0.1)/total_employees
 
if(furloughRatio>1)
    furloughRatio = 1
if(laidOffRatio>1)
    laidOffRatio = 1
 
Morale = Morale - ((0.075 * furloughRatio ) + ( 0.1 * laidOffRatio) )

年金

料金から

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/AvgDepartmentDirectBenefits +
     Department_Defined_Benefits/AvgDepartmentDefinedBenefits - Department_Pension_Fees * 1.5
 
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

給料不足の契約

If(Department_Direct_Benefits < Agreed_Direct_Benefits OR 
   Department_Defined_Benefits < Agreed_Defined_Benefits)
{
  Department_Morale = Department_Morale - 2
} 

新規契約

Department_Morale = Department_Morale = 100

イベントから

着火

Department_Morale = Department_Morale * 0.8

大打撃

Department_Morale = Department_Morale * 0.5

ストライキ

ストライキへ

if(Random Number Between (0.0 AND 1.0) > (1-(0.5-(Employee_Moral/100.0)))
    Strike = true
else if(StockMarket_GrowthRate > 1.02 AND Random Number Between (0 and 120) < 2)
    Strike = true

賃上げ要求

//Branches
ModValue = 1.25
//Factories
ModValue = 0.5211 + factoryWageDifficultyAddition;
//Marketing
ModValue = 1.3;
//Engineering
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;
}

ストライキの種類

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
}

福利厚生の要求

また、ゲームではストライキシステム以外の福利厚生の要求が発生することもあります。

直接給付

if(Year < 2021)
{
    yearAdj = 0.0095*((year-1899)/5);
    minimumRequest = 0.009*((year-1900));
}
else
{
    yearAdj = 0.0095*((121)/5);
    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;
 
 
}

年金

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;
 
}

組合との交渉

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/100.0))
}
 
if(negotiations < 1)
{
    if(negotiations < 0.65)
    {
        negotiations = 0.65;
    }
 
    DCWant = DCWant * negotiations;
    DBWant = DBWant * negotiations;
 
}
 
 
DBWant = DBWant + (DBFeeSlider*(1.0-(0.2 * (AdministrationSkill/100.0))));
 
 
 
if(DCSlider >= DCWant AND DBSlider >= DBWant)
{
    The Union Approves!
}

ストライキを止めるタイミング

if(CurrentWages > RequestedWage)
  Stop Striking
 
if Successful Benefits Negotiation
  Stop Striking