Artifact Combos

I've tested it further myself and what I've said earlier doesn't work.
The only thing that is clear is that you will get the preferred reward of an item and that some rewards are just general bonuses that you can get with many different combinations.

What I currently don't get is that I have a case where
Battered Ross weed (A) + Pristine Models of Entropy (P) + Worn Senior Caffeine (O)
are giving me the Drone Command reward preffered by the Caffeine
while
Battered Ross weed (A) + Pristine Models of Entropy (P) + Worn Hull Repair Suit (O)
are giving me the Tessaract targeting which is one of those general bonus rather than what would be preffered by the Repair Suit: the Frontier Stadium

One way I can make the Stadium appear is by using the Worn Hull Repair Suit (O) with:
Worn Caffeine (O) + Prisine Polypeptor Organic (O)
or
Battered Ross weed (A) + Prisine Polypeptor Organic (O)

If I put
Worn Repair Suite (O) + Battered Ross Weed (A) + Worn Senor Caffeine (O)
I get the preferred reward for the Ross Weed: Zygotic Engineering

I'm out of ideas. That would be solved in 10 min if there was a source.
 
Temporal Calculus:
(Wonder Unlocked)
all units gain +2 visibility
(Pristine Deviation Fork (P), Pristine Fixed Position Locator (P), Worn Auratic Magnet (P))

+38.4 Production, +120 Energy, +13.5 Science

Relativistic Data Bank:
(Wonder Unlocked)
-1 Intrigue per turn in all cities
(Pristine Deviation Fork (P), Pristine Fixed Position Locator (P), Pristine Macroelectrons (A))

+38.4 Production, +216 Energy, +12 Science
 
So from that list posted in the other thread, my understanding is the rewards are divided into four categories. 3 old earth gives a building, 3 alien gives a unit buff, 3 progenitor gives a (super powerful) wonder, and mixed gives a general buff like Tesseract Targeting. (However as Acken says the Caffeine example seems to contradict the last category.)

Acken, one thing to test as far as preferences might be what happens when you pop a triple artifact combo and then try to pop the exact same combo again. Do you get the same bonus or does it default to another preference in the set? Also, have we determined whether it's possible for two players to have the same bonus? (I'm assuming the artifact system is ignored by the AI, so this would mainly come up in MP)

I'm thinking it would really suck to pop 3 progenitor relics and then discover that the wonder has been built by someone else.
 
Vapor Shield:
All units gain +100% Defense when embarked
(worn Soap Seed (A), Pristine Carnivorous Hive Eels (A), Pristine Macroelectrons (A))

+38.4 Food, +150 Energy, +6 Science
 
Machine Assisted Free will:
(Wonder Unlocked)
Technologies cost 30% less science
(Battered Void Spectre (P), Worn Auratic Magnet (P), Pristine Fixed Position Locator (P))

+96 Energy, +13.5 Science

Projected Chassis Construction:
+2 worker movement speed
(Battered Cocoon Flies (A), Battered Carbon Hail (A), Worn Soap Seed (A))

+30 Energy
 
Counter-Battery Fire:
Siege Unit Ability Unlocked:
Lower an enemy unit's defense by 20% for the remainder of your turn.
(Pristine Zero Point Soil (A), Battered Isotopic Decay 3 (O), Pristine Impossible Drive (O))

+38.4 Food, +24 Energy, +30 science

Quantum Politics:
(Wonder Unlocked)
+100% Virtue Acquisition Speed
(Worn Superposition Containment Device (P), Worn Auratic Magnet (P), Battered Carbon Hail (A))

+2.4 Production, +13.5 Science
 
Ok, I've done a game hunting down artifacts for 109 turns, running my empire into the ground while i try to grab as many as i can.

Attached save file has a bunch of artifacts to play with - probably going to lose the game in a few turns as PAC eats the capital :D

Just intended to give people a chance to play around with the combinations a bit, the empire itself is garbage.

(I have used the electromagnetic sensor/tiny islands map unlocks from starships, so unsure if it will work if you dont have that)

16 artifacts sitting in the inventory to play with (3 old earth, 7 alien, 6 progenitor)
 

Attachments

  • Lots of Artifacts.rar
    862.6 KB · Views: 165
Based on lua files it looks like reward is partially random.
At the end of GetArtifactReward function located in ArtifactUtilities, there is included some randomness using seed.
First all possible reward IDs are gathered based on artifacts categories/rewards preferences and then from all gathered IDs one reward is choosen.
Randomness by seed guarantes that for the same gathered reward IDs, always the same reward will be choosen.
You can find category and prefered rewards in following files: CivBEArtifacts.xml and CivBEArtifactRewards.xml.

Unfortunetly player can get the same reward only once per game and that means variable "rewardIDs" may change for the same input artifacts,
because variable "rewardIDs" will not contain already owned rewards.
Based on above findings my theory is following:
1. First combination of artifacts will result always in the same reward.
2. If player has got any reward already, than for some of combinations (not all) different reward will be resulted (because rewardIDs will contain one less reward -> diffrent seed).
3. Modyfing CivBEArtifacts.xml may result in differents rewards for the same combination, because ID of artifacts is autoincremented based on sequence in file.
This is only my temporary thoery and I am not sure if its true. I will try to check this ingame. :)

Maybe good idea would be to run GetArtifactReward function for all possible combination of 3 artifacts? What do you think? :)
I am not sure yet how, but I will try to do some more investigations.

Function GetArtifactReward for reference:
Spoiler :

Code:
function ArtifactUtilities.GetArtifactReward(playerType : number, artifactIndices : table)
	local player : table = Players[playerType];
	if(player == nil) then
		error("ArtifactUtilities: player is nil.");
		return;
	end
	
	local sameCategory : boolean = ArtifactUtilities.AreArtifactsInSameCategory(player, artifactIndices);
	if(sameCategory == nil) then
		error("sameCategory was nil.");
	end


	local rewardIDs : table = {};
	if(sameCategory == false) then
		local mixedRewardIDs = ArtifactUtilities.GetAvailableMixedRewards(player);
		local preferedRewardIDs = ArtifactUtilities.GetAvailablePreferedRewards(player, artifactIndices);

		for _,rewardID in ipairs(mixedRewardIDs) do
			table.insert(rewardIDs, rewardID);
		end

		for _,rewardID in ipairs(preferedRewardIDs) do
			table.insert(rewardIDs, rewardID);
		end
	end

	if(table.count(rewardIDs) == 0) then
		rewardIDs = ArtifactUtilities.GetAvailablePreferedRewards(player, artifactIndices);
	end
	
	if(table.count(rewardIDs) == 0) then
		rewardIDs = ArtifactUtilities.GetAvailableRewardsInArtifactCategories(player, artifactIndices);
	end

	if(table.count(rewardIDs) == 0) then
		rewardIDs = ArtifactUtilities.GetAllAvailableRewards(player);
	end
	if(rewardIDs == nil) then
		error("ArtifactUtilities: rewardIDs is nil.");
		return;
	end

	if(table.count(rewardIDs) == 0) then
		error("ArtifactUtilities: The player has run out of available Artifact Rewards!");
		return;
	end

	-- find seed
	local seed : number = 1;
	for _,index : number in ipairs(artifactIndices) do
		seed = seed * (index + 47);
	end

	math.randomseed(seed);
	local roll : number = math.random(table.count(rewardIDs));
	return rewardIDs[roll];
end
 
How to calculate flat reward:

1) If Just using 1 or 2 items: base value*speed modifier*reward percent*grade modifier

speed modifier: 1/1.2/1.5/3 (yes, 1.2 on standard speed)

All artifacts have base value percent, defined in CivBEArtifacts.xml.
e. g. Isotopic decay 3 gives 100% culture, Sporadic listener gives 80% energy and 20% science.

Worn Isotopic decay 3 will give 40*1.2*1*0.75 = 36 culture
Pristine Sporadic listener will give 100*1.2*0.8*2 = 192 energy and 25*1.2*0.8*2 = 48 Science.

Base values: (Defined in GlobalDefines.xml)
Energy: 100
Science: 25
Culture: 40
Food: 40
Production: 40

Grade modifiers: (Defined in CivBEArtifactValues.xml)
Battered: 0.75
Worn: 1
Pristine: 2

2) If making something with 3 items: Calculate rewards for each item then add all of them. But use different grade modifier.

Grade modifier when making something: (Defined in CivBEArtifactValues.xml)
Battered: 0 (0.75*0)
Worn: 0.25 (1*0.25)
Pristine: 1 (2*0.5)
 
Unfortunetly player can get the same reward only once per game and that means variable "rewardIDs" may change for the same input artifacts,
because variable "rewardIDs" will not contain already owned rewards.
Based on above findings my theory is following:
1. First combination of artifacts will result always in the same reward.
2. If player has got any reward already, than for some of combinations (not all) different reward will be resulted (because rewardIDs will contain one less reward -> diffrent seed).
3. Modyfing CivBEArtifacts.xml may result in differents rewards for the same combination, because ID of artifacts is autoincremented based on sequence in file.
This is only my temporary thoery and I am not sure if its true. I will try to check this ingame. :)

Any idea if that holds for ALL players? So can two players each get a reward once, or is the rewardID universal for every human playing, so as soon as one is taken it's unavailable to everyone else afterward?
 
It looks like the same reward can be taken by many players.

Good to know. I also just checked the BuildingClasses file and it appears the artifact wonders are set as wonders using MaxPlayerInstances rather than MaxGlobalInstances. So they are technically national wonders that multiple players can get.

That's a relief... I can't imagine how pissed I'd be if I unlocked Machine-Assisted Free Will only to discover someone else had already built it...
 
Good to know. I also just checked the BuildingClasses file and it appears the artifact wonders are set as wonders using MaxPlayerInstances rather than MaxGlobalInstances. So they are technically national wonders that multiple players can get.

That's a relief... I can't imagine how pissed I'd be if I unlocked Machine-Assisted Free Will only to discover someone else had already built it...
True, they are not instantly built with PAC trait.
 
Based on lua files it looks like reward is partially random.
At the end of GetArtifactReward function located in ArtifactUtilities, there is included some randomness using seed.
First all possible reward IDs are gathered based on artifacts categories/rewards preferences and then from all gathered IDs one reward is choosen.
Randomness by seed guarantes that for the same gathered reward IDs, always the same reward will be choosen.
You can find category and prefered rewards in following files: CivBEArtifacts.xml and CivBEArtifactRewards.xml.

Unfortunetly player can get the same reward only once per game and that means variable "rewardIDs" may change for the same input artifacts,
because variable "rewardIDs" will not contain already owned rewards.
Based on above findings my theory is following:
1. First combination of artifacts will result always in the same reward.
2. If player has got any reward already, than for some of combinations (not all) different reward will be resulted (because rewardIDs will contain one less reward -> diffrent seed).
3. Modyfing CivBEArtifacts.xml may result in differents rewards for the same combination, because ID of artifacts is autoincremented based on sequence in file.
This is only my temporary thoery and I am not sure if its true. I will try to check this ingame. :)

Maybe good idea would be to run GetArtifactReward function for all possible combination of 3 artifacts? What do you think? :)
I am not sure yet how, but I will try to do some more investigations.

Function GetArtifactReward for reference:
Spoiler :

Code:
function ArtifactUtilities.GetArtifactReward(playerType : number, artifactIndices : table)
	local player : table = Players[playerType];
	if(player == nil) then
		error("ArtifactUtilities: player is nil.");
		return;
	end
	
	local sameCategory : boolean = ArtifactUtilities.AreArtifactsInSameCategory(player, artifactIndices);
	if(sameCategory == nil) then
		error("sameCategory was nil.");
	end


	local rewardIDs : table = {};
	if(sameCategory == false) then
		local mixedRewardIDs = ArtifactUtilities.GetAvailableMixedRewards(player);
		local preferedRewardIDs = ArtifactUtilities.GetAvailablePreferedRewards(player, artifactIndices);

		for _,rewardID in ipairs(mixedRewardIDs) do
			table.insert(rewardIDs, rewardID);
		end

		for _,rewardID in ipairs(preferedRewardIDs) do
			table.insert(rewardIDs, rewardID);
		end
	end

	if(table.count(rewardIDs) == 0) then
		rewardIDs = ArtifactUtilities.GetAvailablePreferedRewards(player, artifactIndices);
	end
	
	if(table.count(rewardIDs) == 0) then
		rewardIDs = ArtifactUtilities.GetAvailableRewardsInArtifactCategories(player, artifactIndices);
	end

	if(table.count(rewardIDs) == 0) then
		rewardIDs = ArtifactUtilities.GetAllAvailableRewards(player);
	end
	if(rewardIDs == nil) then
		error("ArtifactUtilities: rewardIDs is nil.");
		return;
	end

	if(table.count(rewardIDs) == 0) then
		error("ArtifactUtilities: The player has run out of available Artifact Rewards!");
		return;
	end

	-- find seed
	local seed : number = 1;
	for _,index : number in ipairs(artifactIndices) do
		seed = seed * (index + 47);
	end

	math.randomseed(seed);
	local roll : number = math.random(table.count(rewardIDs));
	return rewardIDs[roll];
end

Good find I didn't think about checking the LUA and thought it was done in the dll :blush:

Now that's disapointing.
 
Unfortunetly player can get the same reward only once per game...

Based on some of the rewards, I'm not sure it would make sense to get them more than once. Buildings/Wonders are unlocked for all of my cities. The Perks/Abilities/Buffs seem to affect all of a specific unit, or affect the game at the Sponsor level, so I'm not sure we would actually gain anything by getting them more than once.

Maybe some of the % based buffs could stack, but that might get out of hand fast (Machine Assisted Free Will x 3 :p ).
 
Yes, you are right. It is fine also for me that each reward is get only once.
I meant only that this lead to "more randomness" for next rewards.
I still learn english, and sometimes express myself not correctly ;)
 
So, from what has been said, it doesn't matter if I had 1 pristine mixed with 2 worns etc? I.e, it's not considered a waste of a pristine to combine it with a battered/worm artifact?
 
I'm still not sure how the system works, really.

Does every artifact have a preferred reward with one getting chosen somehow with three of them?

However they unlock, the system needs a serious balance pass to buff or rework weak bonuses and nerf the very strongest ones, which get kind of crazy.
 
So, from what has been said, it doesn't matter if I had 1 pristine mixed with 2 worns etc? I.e, it's not considered a waste of a pristine to combine it with a battered/worm artifact?

Yes, it sounds like battered/worn/pristine only affects the yield, not the unlockable, which is determined by the specific artifact + random seed. (Edit: actually that might be wrong, pristine artifacts may have a higher weighting when determining which preference to take for the unlockable.)

Galgus said:
]I'm still not sure how the system works, really.

Does every artifact have a preferred reward with one getting chosen somehow with three of them?

However they unlock, the system needs a serious balance pass to buff or rework weak bonuses and nerf the very strongest ones, which get kind of crazy.

It definitely needs a balance pass, some of the unlockables are absurdly powerful. At the very least we need the option to turn off artifacts in the game setup, esp. for multiplayer games.
 
The only big offenders I would definitely nerf are Machine Assisted Free will and Quantum politics, which respectively provide a 30% technology discount and halved virtue costs.

(Machine Assisted Free Will isn't even that interesting or fun despite being overpowered. Something like one free tech/ one time science boost or 2-3 random free techs/ tech discounts would be much less powerful, but much more interesting to play with.)

My ideal balance models would be Warp Spire and Drone Command, which respectively provide +50% yields from domestic trade routes and the ability to work two more tiles than a city has population.

They are both very strong and somewhat specialized while not being completely gamebreaking.

Ideally I'd like to see bonuses correspond to that power level.
 
Top Bottom