Yes, seems like that function is handled internally. player:GetArtifactAcquisitionRate(artifactCategoryType) most certainly calls a function that takes all the modifiers into account and then gives out the final number.
Not sure where exactly the problem is though, the XML-Table works just fine.
If you change the XML like this...
Code:
<ArtifactCategories>
<Update>
<Where Type="ARTIFACT_CATEGORY_OLD_EARTH"/>
<Set BaseAcquisitionRate="100"
AcquisitionRateChange="0"/>
</Update>
</ArtifactCategories>
...then Resource Pods give an Old Earth Artifact 100% of the time. So it works exactly as one would expect - the first number is the percent chance at the very beginning of the game, the second number is some sort of modifier that reduces the chance - haven't done some long-time testing to see the actual numbers, but I'd assume it's just a %-decrease of the base-Rate (So if the BaseAcquisitionRate is 40 and AcquisitionRateChange is 25, then the new AcquisitionRate after getting the first Artifact is 30 - then 22.5 and so on). More testing would need to be done to verify what effect Modifiers like Xenoanthopology have to find out the actual math behind it. Of course that could easily be done with simple print-statements.
Either way, the Lua doesn't force you to use those internal Calculations. This part here...
Code:
local recieveArtifactRoll : number = Game.Rand(100, "rolling to recieve Old Earth Artifact");
if(recieveArtifactRoll <= acquisitionRate) then
(Did you note the spelling error? "recieve"?
)
...can just be edited to use your own method. But of course that doesn't tell us anything about the current system and would go offtopic.
/edit:
Oh, and the AcquisitionRate is also increased if you have a chance to get an Artifact but don't get it. So the whole process is somewhat normalized.