public void RecruitmentMilitary(Military military, float scale) { if ((((this.MilitaryPopulation != 0) && (this.Population != 0) && (!GlobalVariables.PopulationRecruitmentLimit || (this.ArmyQuantity <= this.Population))) && ((this.Domination >= Parameters.RecruitmentDomination) && (this.Morale >= Parameters.RecruitmentMorale))) && (military.Quantity < military.Kind.MaxScale)) { int decrement = (int)(military.Kind.MinScale * scale); int populationDecrement; if ((decrement + military.Quantity) > military.Kind.MaxScale) { decrement = military.Kind.MaxScale - military.Quantity; } if ((decrement * military.Kind.PointsPerSoldier) > military.BelongedFaction.TechniquePoint) { if (!(((this.BelongedSection == null) || (this.BelongedSection.AIDetail == null)) || this.BelongedSection.AIDetail.AutoRun)) { military.BelongedFaction.DepositTechniquePointForTechnique(decrement * military.Kind.PointsPerSoldier); } decrement = military.BelongedFaction.TechniquePoint / military.Kind.PointsPerSoldier; } populationDecrement = decrement; if (!base.Scenario.IsPlayer(this.BelongedFaction)) { decrement = (int)(decrement * Parameters.AIRecruitmentSpeedRate); } if (decrement > 0) { if (populationDecrement > this.MilitaryPopulation) { populationDecrement = this.MilitaryPopulation; decrement = populationDecrement; } if (populationDecrement > this.Population) { populationDecrement = this.Population; decrement = populationDecrement; } this.DecreaseMilitaryPopulation(populationDecrement); this.DecreasePopulation(populationDecrement); int scales = military.Scales; military.IncreaseQuantity(decrement, this.MoraleOfRecruitment, this.CombativityOfRecruitment, 0, 0); if (this.HasSpy && ((military.Scales / 10) > (scales / 10))) { this.AddMessageToTodayMilitaryScaleSpyMessage(military); } if (this.Population < this.RecruitmentPopulationBoundary) { this.DecreaseDomination(GameObject.Random(6)); this.DecreaseMorale(GameObject.Random(6) * 2); } else { this.DecreaseDomination(GameObject.Random(2)); this.DecreaseMorale(GameObject.Random(2) * 2); } this.BelongedFaction.DecreaseTechniquePoint(decrement * military.Kind.PointsPerSoldier); int randomValue = StaticMethods.GetRandomValue(decrement * 10, military.Kind.MinScale); if (randomValue > 0) { military.BelongedFaction.IncreaseReputation(randomValue * 2); military.BelongedFaction.IncreaseTechniquePoint(randomValue * 100); } } } }
private void RecruitmentMilitary(Military military) { if ((((this.MilitaryPopulation != 0) && (this.Population != 0) && (!GlobalVariables.PopulationRecruitmentLimit || (this.ArmyQuantity <= this.Population))) && ((this.Fund >= (Parameters.RecruitmentFundCost * this.AreaCount * (this.CanRecruitMilitary(military.Kind) ? 1 : 10))) && (this.Domination >= Parameters.RecruitmentDomination))) && (((this.Morale >= Parameters.RecruitmentMorale) && ((military.RecruitmentPerson != null) && (military.RecruitmentPerson.BelongedFaction != null))) && (military.Quantity < military.Kind.MaxScale)) && (military.BelongedFaction != null)) { int randomValue = StaticMethods.GetRandomValue((int)((military.RecruitmentPerson.RecruitmentAbility * military.Kind.MinScale) * Parameters.RecruitmentRate), 0x7d0); int populationDecrement; if ((randomValue + military.Quantity) > military.Kind.MaxScale) { randomValue = military.Kind.MaxScale - military.Quantity; } if ((randomValue * military.Kind.PointsPerSoldier) > military.BelongedFaction.TechniquePoint && military.Kind.PointsPerSoldier != 0) { if (!(((this.BelongedSection == null) || (this.BelongedSection.AIDetail == null)) || this.BelongedSection.AIDetail.AutoRun)) { military.BelongedFaction.DepositTechniquePointForTechnique(randomValue * military.Kind.PointsPerSoldier); } randomValue = military.BelongedFaction.TechniquePoint / military.Kind.PointsPerSoldier; } populationDecrement = randomValue; if (!base.Scenario.IsPlayer(this.BelongedFaction)) { randomValue = (int)(randomValue * Parameters.AIRecruitmentSpeedRate); } if (randomValue > 0) { this.DecreaseFund(Parameters.RecruitmentFundCost * this.AreaCount * (this.CanRecruitMilitary(military.Kind) ? 1 : 10)); if (populationDecrement > this.MilitaryPopulation) { populationDecrement = this.MilitaryPopulation; randomValue = populationDecrement; } if (populationDecrement > this.Population) { populationDecrement = this.Population; randomValue = populationDecrement; } this.DecreaseMilitaryPopulation(populationDecrement); this.DecreasePopulation(populationDecrement); int scales = military.Scales; military.IncreaseQuantity(randomValue, this.MoraleOfRecruitment, this.CombativityOfRecruitment, 0, 0); if (this.HasSpy && ((military.Scales / 10) > (scales / 10))) { this.AddMessageToTodayMilitaryScaleSpyMessage(military); } if (this.Population < this.RecruitmentPopulationBoundary) { this.DecreaseDomination(GameObject.Random(6)); this.DecreaseMorale(GameObject.Random(6) * 2); } else { this.DecreaseDomination(GameObject.Random(2)); this.DecreaseMorale(GameObject.Random(2) * 2); } this.BelongedFaction.DecreaseTechniquePoint(randomValue * military.Kind.PointsPerSoldier); int increment = StaticMethods.GetRandomValue(randomValue * 10, military.Kind.MinScale); if (increment > 0) { military.RecruitmentPerson.AddRecruitmentExperience(increment); military.RecruitmentPerson.AddCommandExperience(increment); military.RecruitmentPerson.AddGlamourExperience(increment); military.RecruitmentPerson.IncreaseReputation(increment * 4); military.RecruitmentPerson.BelongedFaction.IncreaseReputation(increment * 2); military.RecruitmentPerson.BelongedFaction.IncreaseTechniquePoint(increment * 100); } } } else { if (military.RecruitmentPerson != null) { military.StopRecruitment(); } } }