Thalassicus / cep-bnw

Civ V Communitas Expansion Pack
32 stars 22 forks source link

Promotion removal from list if effect is already granted. Possible? #250

Open GrantSP opened 10 years ago

GrantSP commented 10 years ago

Certain promotion effects are granted by Wonders or other means, e.g. Pentagon grants the March effect of healing when other activities are chosen. Is it possible to remove these promotions from showing in the selection panel IF the effect is already in place?

Thalassicus commented 10 years ago

This happens because there is not just one March promotion - there are actually 4.

Firaxis made a critical mistake with promotion prerequisites. They did not create a table to store the information. Instead, every promotion has a hardcoded limit of 6 possible prerequisites within its UnitPromotions entry (previously a limit of 4). The game requires many more than just 6 prerequisites for March, leading to the many redundant nearly-identical promotions.

The Pentagon gives one of those four March promotions, which may be different from the variant the unit can normally acquire.

It's possible to work-around the issue by checking what March promotion the unit should normally have access to, and replacing any other versions with the intended copy. This check should probably occur at the end of each turn.

GrantSP commented 10 years ago

hmm... Well the problem with the multiple March promotions is our doing. We renamed/created some promotions and now have March, March_II, March_III & March_IV. (I have always wanted to rename these back to something more meaningful, bombers shouldn't be getting a March promotion) Pentagon gives the March promotion, with the prerequisites of Shock_3, Drill_3 or Blitz. From what I understand these are the promotions that your average melee unit would get, and the units that would benefit the most from the Pentagon. In the game where I noticed this issue I am 95% sure I saw it on those types of units. Meaning the same promotion, not just the same name, was offered even when the units had it.

(the hard-coded limit you mention, is this different again to the 9 PromotionPrereqOr columns in the UnitPromotions table? Seems weird to setup 9 columns and limit it to only 6 in the C++)

Thalassicus commented 10 years ago

Ideally the always-heal effect should be a single promotion with the "<+" icon. It doesn't matter what it's called. We can rename it to "Supply" if that sounds better.

It's easy to test things by giving a 10xp warrior the Drill 1 promotion with the tuner, and see if the promotion panel updates its offers. I don't think a promotion can be offered for selection when a unit already has it.

The prereq limit is 9 now? That's great! They must have expanded it in the fall patch. It won't entirely solve the issue though, since we need 16 prerequisites for AlwaysHeal. Honestly that data just needs to be in a table like Unit_FreePromotions, so promotions can have a whole list of prerequisites of any quantity.