Events, as they are now, feels a bit lackluster and unpolished as a system.
We would need some new functions/tags:
EventTrigger:
•Requirement that the plot has been revealed for the event to trigger. Let's call it bRevealed (and be set to TRUE as default as most events don't make sense in a plot that isn't revealed)
this requirement is meant to be used for player (also AI) specific events. Some considerations would be needed for how to handle this tag when used with the already existing bGlobal which make the event be considered triggered for all civs no matter what civ actually triggered it. bGlobal should perhaps just make the event-trigger ignore the bRevealed tag, OR preferably, make the event trigger only for the civs that have revealed the trigger plot.
•Latitude/longitude tags.
• bNoMessage (bSilent? - default = FALSE) Some events may not warrant a message at all, like forests aging through new→regular→Ancient. WorldNewsTexts would still be visible if defined.
•Neutral/Hostile/Friendly/Foreign/Native cultural plot requirements
Currently, an Event-Trigger defines what events happens through an array like this:
When there are more than 1 event you get a choice between which one will happen.
Maybe it would be better if it was like this:
Where EVENT_FOREST_FIRE_4 is the event triggered outside borders and 1-3 the events triggered inside borders.
•bCoast & bRiver (e.g. for adding and removing flood plains along rivers.)
•bPrereqEventPlot (already existing) makes a continuation event (an event that require another event to have occurred) happen in the same plot as the required event happened in.
bPrereqEventPlotAdjacent (suggestion) would make the continuation event occur in one of the eight neighboring plots to the plot that the required event happened in.
Alternatively a tag called iPrereqEventPlotDistance (suggestion) could be made to set the amount of plots away, from the plot the required event happened in, that the continuation event will be at (default to 0, at the same plot). This could also be made as two tags, one maximum and another minimum distance, that defines a range it can happen in.
Events:
•Gamespeed should influence events that grants/penalize a constant amount of commerce or yield - No more "Happy Hunting" event giving 8 food to 1 city on all gamespeeds.
We would need some new functions/tags:
EventTrigger:
•Requirement that the plot has been revealed for the event to trigger. Let's call it bRevealed (and be set to TRUE as default as most events don't make sense in a plot that isn't revealed)
this requirement is meant to be used for player (also AI) specific events. Some considerations would be needed for how to handle this tag when used with the already existing bGlobal which make the event be considered triggered for all civs no matter what civ actually triggered it. bGlobal should perhaps just make the event-trigger ignore the bRevealed tag, OR preferably, make the event trigger only for the civs that have revealed the trigger plot.
•Latitude/longitude tags.
• bNoMessage (bSilent? - default = FALSE) Some events may not warrant a message at all, like forests aging through new→regular→Ancient. WorldNewsTexts would still be visible if defined.
•Neutral/Hostile/Friendly/Foreign/Native cultural plot requirements
Currently, an Event-Trigger defines what events happens through an array like this:
Code:
<Events>
<Event>EVENT_FOREST_FIRE_1</Event>
<Event>EVENT_FOREST_FIRE_2</Event>
<Event>EVENT_FOREST_FIRE_3</Event>
</Events>
Maybe it would be better if it was like this:
Code:
<EventsNative>
<Event>EVENT_FOREST_FIRE_1</Event>
<Event>EVENT_FOREST_FIRE_2</Event>
<Event>EVENT_FOREST_FIRE_3</Event>
</EventsNative>
<EventsForeign>
<Event>EVENT_FOREST_FIRE_4</Event>
</EventsForeign>
<bNoMessageForeign>1</bNoMessageForeign>
<bShowPlotNative>1</bShowPlotNative>
•bCoast & bRiver (e.g. for adding and removing flood plains along rivers.)
•bPrereqEventPlot (already existing) makes a continuation event (an event that require another event to have occurred) happen in the same plot as the required event happened in.
bPrereqEventPlotAdjacent (suggestion) would make the continuation event occur in one of the eight neighboring plots to the plot that the required event happened in.
Alternatively a tag called iPrereqEventPlotDistance (suggestion) could be made to set the amount of plots away, from the plot the required event happened in, that the continuation event will be at (default to 0, at the same plot). This could also be made as two tags, one maximum and another minimum distance, that defines a range it can happen in.
Events:
•Gamespeed should influence events that grants/penalize a constant amount of commerce or yield - No more "Happy Hunting" event giving 8 food to 1 city on all gamespeeds.
Spoiler :
So these tags - "iFood, iGold, iRandomGold, iCulture and iEspionagePoints" - should be possible to define in this fashion:
• iFloodPlainChange
•<FeatureType>Z</FeatureType>; <iFeatureChange>1</iFeatureChange>
Should automatically replace any feature (except for flood plains) with a Z. [Now we need 2 events, one that removes and then a continuation event that adds]
•<iFeatureChange>-1</iFeatureChange>
If this is used without defining the features with one or more <FeatureType>X</FeatureType> it should remove any features except for flood plains.
•The same kind of logic should be applied for <iBonusChange>, <iRouteChange> & <iImprovementChange>
Other:
•Get the EraInfos tag iEventChancePerTurn (event frequency) to scale by game speed.
Hopefully, we can expand this list through discussions in this thread
Code:
<Yields>
<iYield>
<Adapt>
<ID>ADAPT_DEFAULT</ID>
<Constant>10</Constant>
</Adapt>
</iYield>
</Yields>
•<FeatureType>Z</FeatureType>; <iFeatureChange>1</iFeatureChange>
Should automatically replace any feature (except for flood plains) with a Z. [Now we need 2 events, one that removes and then a continuation event that adds]
•<iFeatureChange>-1</iFeatureChange>
If this is used without defining the features with one or more <FeatureType>X</FeatureType> it should remove any features except for flood plains.
•The same kind of logic should be applied for <iBonusChange>, <iRouteChange> & <iImprovementChange>
Other:
•Get the EraInfos tag iEventChancePerTurn (event frequency) to scale by game speed.
Hopefully, we can expand this list through discussions in this thread