Skip to content

Commit

Permalink
fix base detection odds a little.
Browse files Browse the repository at this point in the history
don't count incomplete facilities.
  • Loading branch information
Warboy1982 committed May 8, 2013
1 parent a7d19d4 commit dd521e8
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion src/Savegame/Base.cpp
Expand Up @@ -1124,6 +1124,24 @@ bool isMindShield::operator()(const BaseFacility *facility) const
return (facility->getRules()->isMindShield());
}

/**
* Functor to check for completed facilities.
*/
struct isCompleted: public std::unary_function<BaseFacility*, bool>
{
/// Check isMindShield() for @a facility.
bool operator()(const BaseFacility *facility) const;
};

/**
* Only fully operational facilities are checked.
* @param facility Pointer to the facility to check.
* @return If @a facility can act as a mind shield.
*/
bool isCompleted::operator()(const BaseFacility *facility) const
{
return (facility->getBuildTime() == 0);
}
/**
* Calculate the detection chance of this base.
* Big bases without mindshields are easier to detect.
Expand All @@ -1132,7 +1150,8 @@ bool isMindShield::operator()(const BaseFacility *facility) const
unsigned Base::getDetectionChance() const
{
unsigned mindShields = std::count_if(_facilities.begin(), _facilities.end(), isMindShield());
return (_facilities.size()/6 + 16) / (mindShields + 1);
unsigned completedFacilities = std::count_if(_facilities.begin(), _facilities.end(), isCompleted());
return (completedFacilities / 6 + 16) / (mindShields + 1);
}

int Base::getGravShields() const
Expand Down

0 comments on commit dd521e8

Please sign in to comment.