Unique Goodies

historix69

Emperor
Joined
Sep 30, 2008
Messages
1,402
According to CIV4GoodyInfo.xml there are 4 unique Goody Events :
- GOODY_RUMORS_EL_DORADO
- GOODY_RUMORS_FOUNTAIN_OF_YOUTH
- GOODY_RUMORS_PIRATE_TREASURE
- GOODY_DESERTED_SHIP

When new to wtp I started several new games to improve my playing and casually I noticed that in some starts I got a free caravel from the 1st sea goody while in other games I collected dozens to a hundred goodies and never got this event.

Save scamming showed that you either get the event rather quickly (ca. 25% chance) or never, so my conclusion is that unique goodies can happen only once in the game and only one of the players can get them. The free caravel with ca. 25% chance is usually found during the very first turn by one of the 8 players and if you play a nation which is last to make its turn your chance is very low to ever see it.

Since those "unique" goodies add a lot to the atmosphere and also economically help the player, I would suggest to change the "unique" handling so that each player can find the events in his game. (If you play a long game of 100+ (?) hours and never get Fountain of Youth, it feels disappointing.)
After finding one of the unique goodies, the goody probably should be blocked for that player for maybe 100 turns or longer (depending on gamespeed) to avoid exploitation and keep the unique feeling. After the pause the player should have the chance to find this goody again (if there are still goodies left.)
 
I would suggest to change the "unique" handling so that each player can find the events in his game.
  1. They are indeed intended to be unique. (So yes only once a game and only for one player.) :dunno:
  2. I can easily change it so these Goodies may not be acquired in the early game (first 50 turns * Gamespeed Mod) :dunno:
Generally:
No to changing 1 because it destroys atmosphere.
Yes to 2 if community really wants it for balancing.
 
Is there a way to set the likeliness for different goodies in general as I guess can be done in "iCityGoodyWeight" for the native city rewards?
 
Last edited:
I would be very much in favour of holding the free ship back - as OP said, this goody will be popped most of the times in the first few rounds.

For the land based ones, I do not think they should be locked behind turn numbers.

Regards
XSamatan
 
I can easily change it so these Goodies may not be acquired in the early game (first 50 turns * Gamespeed Mod)
Just add an int to EventTrigger and set it to default at 0. This could be useful for tutorial messages too. Randomly tell stuff as the game progresses (possibly combined with other triggers) to avoid flooding the player at turn 1 or 2.
 
side note :
The balancing could be improved to some part without changing the dll by adding some more goodies, e.g. by cloning the common goodies for gold, servants, experience, etc. If the chance for a unique event is smaller, the chance that it is still available at the end of 1st turn is bigger. This would lessen the advantage of the starting nations and strengthen the players who come last in the turn order.

Filling the goody list up to 100 entries using clones would allow to set probabilities in percentage : goody is only once in the list equals 1% chance, goody is twice in the list equals 2%, etc. (Effects of unique one-time goodies neglected.)

However this is just a (theoretical) workaround for people who don't want to touch the dll.

Edit :
Maybe we could also use the Goody Weight parameter as used for Burial Grounds :
Spoiler :

<GoodyInfo>
<Type>GOODY_BURIAL_GROUNDS</Type>
<Description>TXT_KEY_GOODY_BURIAL_GROUNDS</Description>
<Sound>AS2D_GOODY_HOSTILE</Sound>
<AnnounceText>TXT_KEY_GOODY_ANNOUNCE_BURIAL_GROUNDS</AnnounceText>
<ChiefText>TXT_KEY_CHIEF_GOODY_BURIAL_GROUNDS</ChiefText>
<iGold>0</iGold>
<iGoldRand1>0</iGoldRand1>
<iGoldRand2>0</iGoldRand2>
<iImmigration>0</iImmigration>
<iMapOffset>0</iMapOffset>
<iMapRange>0</iMapRange>
<iMapProb>0</iMapProb>
<iExperience>0</iExperience>
<iHealing>0</iHealing>
<iDamagePrereq>0</iDamagePrereq>
<bBad>0</bBad>
<bWar>0</bWar>
<UnitClass>NONE</UnitClass>
<TeachUnitClass>NONE</TeachUnitClass>
<iCityGoodyWeight>0</iCityGoodyWeight>
<bWaterGoody>0</bWaterGoody>
<bUnique>0</bUnique>
<GoodyWeights>
<GoodyWeight>
<Type>GOODY_WAR</Type>
<iWeight>25</iWeight>
</GoodyWeight>
<GoodyWeight>
<Type>GOODY_TREASURE</Type>
<iWeight>75</iWeight>
</GoodyWeight>
</GoodyWeights>

</GoodyInfo>
 
Last edited:
Goodies are controlled in Assets\XML\GameInfo\CIV4HandicapInfo.xml. Handicap is the internal name for difficulty level.

Each level has a list called Goodies. When a goodie is explored, the game will pick a random one with equal chance for each of them. If you want to make one more likely, add that one multiple times. (A, A, A, B) has 75% chance of picking A.
 
The balancing could be improved to some part without changing the dll by adding some more goodies,
I know, that is what I had done and that is the only real way to do it currently. :)
(You basically need to increase the amount to balance the likelyhood in the Goody System like that.)

But holding back "Unique Goodies" for e.g. the first 50 turns (by XML Balancing Variabile) * Gamespeed is just a few lines of code in DLL. :)
(Really no effort at all.)

Summary:
I will improve the balancing of this a bit. :thumbsup:
(Reduce likelyhood of triggering "Unique Goodies" and only allow them later in game - all balanced in XML)
 
The list with ca 40 entries in CIV4HandicapInfo.xml actually is misleading since it contains all kind of goodies, but when exploring the ocean only a few of those goodies can trigger, so they still have a high percentage each. There are goodies for land, sea, burial grounds and native village presents ... all in one list.
 
The list with ca 40 entries in CIV4HandicapInfo.xml actually is misleading since it contains all kind of goodies, but when exploring the ocean only a few of those goodies can trigger, so they still have a high percentage each. There are goodies for land, sea, burial grounds and native village presents ... all in one list.
Do not worry, I know about all of that and I can balance it properly again. :thumbsup:
I have implemented the "Water Goodies" and all other changes to the Goody System currently in WTP (since Vanilla).

When I implemented the recent changes e.g. for "Shipwrecks" and "CampFires", I simply had no time to test and balance yet.
(I did not even have time to play ...)
 
More unique goodies events can balance them as well: more to choose from/ more chance to have an unique, but keep the present sytem (once/ map, and just one player).

I will think about possible events -> todo list. :mischief:
 
Maybe we could also use the Goody Weight parameter as used for Burial Grounds :
This does not work as you might imagine ... :dunno:
Basically a Goody "Burial Ground" is just a "Placeholder Goody" that randomly triggers other "Real Goodies".
We can not just work with "Placeholer Goodies" because the Texts will not really match the "story" we want to tell.
 
Guys, if you want to create more Goodies, do it. :thumbsup:
(Post Screenshots here and we will integrate them into WTP, if they sound like nice immersive stories.)
 
I could imagine finding all kind of colonists (besides the typical missionars and free colonists) and some of the smaller units, allthough the better ones with a very low chance.
On land there could also be a small chance to find an abandoned waggon train and maybe a settler.

Colonist specialisation could depend on terrain, so e.g. you would find colonists with maritim speciality like fisher in sea goodies and near coast while miners would be found more likely near peaks.

And there could be 7 unique goodies for the 7 cities of gold/cibola giving treasures.
 
Last edited:
Colonist specialisation could depend on terrain, so e.g. you would find colonists with maritim speciality like fisher in sea goodies and near coast while miners would be found more likely near peaks.

The near - not sure about.

@Nightinggale
Are InfoArray implemented for events/ goodies as well (the part of detect "if a terrain is within the 5x5 catchment area")?


On plot types yes (but those are still numbers) -> better to use <FeaturesRequired/> as trigger.
 
Are InfoArray implemented for events/ goodies as well (the part of detect "if a terrain is within the 5x5 catchment area")?
Yes and no. InfoArray is a data container intended to read lists from xml and it's available everywhere. It's optimized for only having a single or a few non-default values in an otherwise long list as it can loop though a list and skip all default values. While it works fine for searching for 1-2 terrains in a list of 12, it's really intended for the really long lists like 97 promotions, 81 professions or 183 units.

The name InfoArray is a reference to it being an array (list), which is intended to be used in the info classes (contains the xml data). It can be used for any list from xml, including 2D and 3D lists. Not sure if we will ever have 3D lists, but the code supports it.

Searching for terrain is a function in the plot class and it takes an InfoArray as argument to know what to search for. The current code can search for bonus, feature, improvement, plottype, route(road) or terrain.

Those two somewhat independent DLL features have been combined for building improvements.

However currently only buildings make use of this and only feature, terrain and plot types. Nothing else makes use of it yet, but it can be added if needed. All it takes is an idea, which is good enough to convince me it should be coded. I expect it will be used more and more over time as it is a tool, which is designed to be fast to code and fast at runtime.
 
Ok, will work on this now a bit. :)
(I have a bit of spare time this morning, it is easy and I should be able to finish it today.)

I will
  • I will give Goodies a "minturn" (to be used in Unique Goodies)
  • I might also expand Goodies to allow to spawn Unit for Barbarians (e.g. Hostile Natives) - allowing to create new Types of Goodies
  • Then I will implement some Goodies that use "spawn Units for Barbarians".
  • After that I will rebalance the Goodies.
Comment:

I have more ideas what Goodies could do, but at the moment that should be enough for now. :thumbsup:
Once we have "Social Progress" we will have to heavily rework the System anyways.
 
Ahh, this is so great ... the Goodies we can create with this are so funny. :lol:

Just trying out my new "Hostile Goodies":
(Still prototype versions.)
  • Crazy Sect of Hostile Jesuit Missionaries ...
  • Crazy Ranger in the Wildernes ...
  • Criminal Ambush
  • Raging Wolf Pack
  • ...
 
Last edited:
@historix69
This should be taken care of. :thumbsup:
(Added it together with the Goody System Enhancement.)

1. All Unique Goodies now have a "min turn" and cannot appear before that.
2. List of Goodies for randomization (in Handicap Infos) has been massively expanded.
3. 30 new Unique Goodies already added and chances are high that community and supporters will create even more ...

Summary:

I may not have solved it as originally requested but I should have solved it non the less. :)
(There should defintitely be no balancing issue with Unique Goodies anymore.)

----

All balancing options for personal customization are of course still there in XML.
(And even more than the original System had.)
 
Top Bottom