Browse Source

CGHeroInstance::nextPrimarySkill: don't use GS RNG directly

Code used from both GS and CGameHandler.
Arseniy Shestakov 9 years ago
parent
commit
ca819b3cda
3 changed files with 5 additions and 5 deletions
  1. 3 3
      lib/mapObjects/CGHeroInstance.cpp
  2. 1 1
      lib/mapObjects/CGHeroInstance.h
  3. 1 1
      server/CGameHandler.cpp

+ 3 - 3
lib/mapObjects/CGHeroInstance.cpp

@@ -1337,10 +1337,10 @@ std::vector<SecondarySkill> CGHeroInstance::getLevelUpProposedSecondarySkills()
 	return skills;
 }
 
-PrimarySkill::PrimarySkill CGHeroInstance::nextPrimarySkill() const
+PrimarySkill::PrimarySkill CGHeroInstance::nextPrimarySkill(CRandomGenerator & rand) const
 {
 	assert(gainsLevel());
-	int randomValue = cb->gameState()->getRandomGenerator().nextInt(99), pom = 0, primarySkill = 0;
+	int randomValue = rand.nextInt(99), pom = 0, primarySkill = 0;
 	const auto & skillChances = (level > 9) ? type->heroClass->primarySkillLowLevel : type->heroClass->primarySkillHighLevel;
 
 	for(; primarySkill < GameConstants::PRIMARY_SKILLS; ++primarySkill)
@@ -1456,7 +1456,7 @@ void CGHeroInstance::levelUpAutomatically()
 {
 	while(gainsLevel())
 	{
-		const auto primarySkill = nextPrimarySkill();
+		const auto primarySkill = nextPrimarySkill(cb->gameState()->getRandomGenerator());
 		setPrimarySkill(primarySkill, 1, false);
 
 		auto proposedSecondarySkills = getLevelUpProposedSecondarySkills();

+ 1 - 1
lib/mapObjects/CGHeroInstance.h

@@ -163,7 +163,7 @@ public:
 	bool gainsLevel() const;
 
 	/// Returns the next primary skill on level up. Can only be called if hero can gain a level up.
-	PrimarySkill::PrimarySkill nextPrimarySkill() const;
+	PrimarySkill::PrimarySkill nextPrimarySkill(CRandomGenerator & rand) const;
 
 	/// Returns the next secondary skill randomly on level up. Can only be called if hero can gain a level up.
 	boost::optional<SecondarySkill> nextSecondarySkill() const;

+ 1 - 1
server/CGameHandler.cpp

@@ -204,7 +204,7 @@ void CGameHandler::levelUpHero(const CGHeroInstance * hero)
 
 	// give primary skill
 	logGlobal->trace("%s got level %d", hero->name, hero->level);
-	auto primarySkill = hero->nextPrimarySkill();
+	auto primarySkill = hero->nextPrimarySkill(getRandomGenerator());
 
 	SetPrimSkill sps;
 	sps.id = hero->id;