private int GetChanceForDiscovery(TechField whichField)
{
//Only items being currently researched have a chance of being discovered
switch (whichField)
{
case TechField.COMPUTER:
{
if (ComputerPercentage > 0 && WhichComputerBeingResearched != null)
{
int researchPointsRequired = (int)(WhichComputerBeingResearched.ResearchPoints * COST_MODIFIER * RaceModifiers[TechField.COMPUTER]);
if (ComputerResearchAmount > researchPointsRequired) //We now have a chance of discovering it
{
return (int)(((ComputerResearchAmount - researchPointsRequired) / (researchPointsRequired * 2)) * 100);
}
}
} break;
case TechField.CONSTRUCTION:
{
if (ConstructionPercentage > 0 && WhichConstructionBeingResearched != null)
{
int researchPointsRequired = (int)(WhichConstructionBeingResearched.ResearchPoints * COST_MODIFIER * RaceModifiers[TechField.CONSTRUCTION]);
if (ConstructionResearchAmount > researchPointsRequired) //We now have a chance of discovering it
{
return (int)(((ConstructionResearchAmount - researchPointsRequired) / (researchPointsRequired * 2)) * 100);
}
}
} break;
case TechField.FORCE_FIELD:
{
if (ForceFieldPercentage > 0 && WhichForceFieldBeingResearched != null)
{
int researchPointsRequired = (int)(WhichForceFieldBeingResearched.ResearchPoints * COST_MODIFIER * RaceModifiers[TechField.FORCE_FIELD]);
if (ForceFieldResearchAmount > researchPointsRequired) //We now have a chance of discovering it
{
return (int)(((ForceFieldResearchAmount - researchPointsRequired) / (researchPointsRequired * 2)) * 100);
}
}
} break;
case TechField.PLANETOLOGY:
{
if (PlanetologyPercentage > 0 && WhichPlanetologyBeingResearched != null)
{
int researchPointsRequired = (int)(WhichPlanetologyBeingResearched.ResearchPoints * COST_MODIFIER * RaceModifiers[TechField.PLANETOLOGY]);
if (PlanetologyResearchAmount > researchPointsRequired) //We now have a chance of discovering it
{
return (int)(((PlanetologyResearchAmount - researchPointsRequired) / (researchPointsRequired * 2)) * 100);
}
}
} break;
case TechField.PROPULSION:
{
if (PropulsionPercentage > 0 && WhichPropulsionBeingResearched != null)
{
int researchPointsRequired = (int)(WhichPropulsionBeingResearched.ResearchPoints * COST_MODIFIER * RaceModifiers[TechField.PROPULSION]);
if (PropulsionResearchAmount > researchPointsRequired) //We now have a chance of discovering it
{
return (int)(((PropulsionResearchAmount - researchPointsRequired) / (researchPointsRequired * 2)) * 100);
}
}
} break;
case TechField.WEAPON:
{
if (WeaponPercentage > 0 && WhichWeaponBeingResearched != null)
{
int researchPointsRequired = (int)(WhichWeaponBeingResearched.ResearchPoints * COST_MODIFIER * RaceModifiers[TechField.WEAPON]);
if (WeaponResearchAmount > researchPointsRequired) //We now have a chance of discovering it
{
return (int)(((WeaponResearchAmount - researchPointsRequired) / (researchPointsRequired * 2)) * 100);
}
}
} break;
}
return 0;
}