<!-- Events sent when terraforming occurs (v33) -->
<!-- GameEvents.TerraformingMap.Add(function(iEvent, iLoad) end) -->
<!-- GameEvents.TerraformingPlot.Add(function(iEvent, iPlotX, iPlotY, iInfo, iNewValue, iOldValue, iNewExtra, iOldExtra) end) -->
<!-- See also: "Trait - River Connection" -->
<Row Class="3" Name="EVENTS_TERRAFORMING" Value="0"/>
<!-- Events sent when plots change from worker actions (v44) -->
<!-- GameEvents.TileFeatureChanged.Add(function(iPlotX, iPlotY, iOwner, iOldFeature, iNewFeature) end) -->
<!-- GameEvents.TileImprovementChanged.Add(function(iPlotX, iPlotY, iOwner, iOldImprovement, iNewImprovement, bPillaged) end) -->
<!-- GameEvents.TileRouteChanged.Add(function(iPlotX, iPlotY, iOwner, iOldRoute, iNewRoute, bPillaged) end) -->
<Row Class="3" Name="EVENTS_TILE_IMPROVEMENTS" Value="0"/>
<!-- Event sent when a team circumnavigates the globe (v19) -->
<!-- GameEvents.CircumnavigatedGlobe.Add(function(iTeam) end) -->
<!-- Requires a mod to actually enable the feature in-game -->
<!-- See also: "Global - Enable Magellan" -->
<Row Class="3" Name="EVENTS_CIRCUMNAVIGATION" Value="0"/>
<!-- Event sent when the player enters a new era, see also NewEraPopup.lua and BUTTONPOPUP_NEW_ERA (v19) -->
<!-- GameEvents.TeamSetEra.Add(function(eTeam, eEra, bFirst) end) -->
<!-- See also: "Global - Espionage Race" -->
<Row Class="3" Name="EVENTS_NEW_ERA" Value="0"/>
<!-- Event sent when the team discovers a new Natural Wonder (v19) -->
<!-- GameEvents.NaturalWonderDiscovered.Add(function(iTeam, iFeature, iX, iY, bFirst) end) -->
<!-- See also: "Religion - Natural Wonder Epiphany" -->
<Row Class="3" Name="EVENTS_NW_DISCOVERY" Value="0"/>
<!-- Event sent during Game.DoFromUIDiploEvent, see also DiscussionDialog.lua (v19) -->
<!-- GameEvents.UiDiploEvent.Add(function(eEvent, eAIPlayer, iArg1, iArg2) end) -->
<!-- See also: "UI - Diary" -->
<Row Class="3" Name="EVENTS_DIPLO_EVENTS" Value="0"/>
<!-- Events sent on status change with City States (v19) -->
<!-- GameEvents.MinorFriendsChanged.Add(function(iMinor, iMajor, bIsFriend, iOldFriendship, iNewFriendship) end) -->
<!-- GameEvents.MinorAlliesChanged.Add(function(iMinor, iMajor, bIsAlly, iOldFriendship, iNewFriendship) end) -->
<!-- See also: "Global - City State Airbases" -->
<Row Class="3" Name="EVENTS_MINORS" Value="0"/>
<!-- Event sent when a Goody Hut is entered (v33) -->
<!-- GameEvents.GoodyHutCanNotReceive.Add(function(iPlayer, iUnit, eGoody, bPick) return false end) -->
<!-- See also: "Goody Huts - No Auto-Mapping" -->
<Row Class="3" Name="EVENTS_GOODY_CHOICE" Value="0"/>
<!-- Events sent if a Goody Hut is giving a tech (v30) -->
<!-- GameEvents.GoodyHutCanResearch.Add(function(iPlayer, eTech) return true end) -->
<!-- GameEvents.GoodyHutTechResearched.Add(function(iPlayer, eTech) end) -->
<!-- See also: "Goody Huts - Tech Refund" -->
<Row Class="3" Name="EVENTS_GOODY_TECH" Value="0"/>
<!-- Event sent to allow Lua to override the AI's choice of tech (v19) -->
<!-- GameEvents.AiOverrideChooseNextTech.Add(function(iPlayer, bFreeTech) return iChoosenTech end) -->
<Row Class="3" Name="EVENTS_AI_OVERRIDE_TECH" Value="0"/>
<!-- Events sent by Great People actions (v19) -->
<!-- GameEvents.GreatPersonExpended.Add(function(iPlayer, iUnit, iUnitType, iX, iY) end) -->
<Row Class="3" Name="EVENTS_GREAT_PEOPLE" Value="0"/>
<!-- Events sent when a player is about to found a religion (v19) -->
<!-- GameEvents.PlayerCanFoundPantheon.Add(function(iPlayer) return true end) -->
<!-- GameEvents.PlayerCanFoundReligion.Add(function(iPlayer, iCity) return true end) -->
<!-- GameEvents.GetReligionToFound.Add(function(iPlayer, iPreferredReligion, bIsAlreadyFounded) return iPreferredReligion end) -->
<!-- GameEvents.PantheonFounded.Add(function(iPlayer, iCapitalCity, iReligion, iBelief1) end) -->
<!-- GameEvents.ReligionFounded.Add(function(iPlayer, iHolyCity, iReligion, iBelief1, iBelief2, iBelief3, iBelief4, iBelief5) end) -->
<!-- GameEvents.ReligionEnhanced.Add(function(iPlayer, iReligion, iBelief1, iBelief2) end) -->
<!-- See also: "Religion - Civ Specific Religions" -->
<Row Class="3" Name="EVENTS_FOUND_RELIGION" Value="0"/>
<!-- Events sent when choosing beliefs (v19) -->
<!-- GameEvents.PlayerCanHaveBelief.Add(function(iPlayer, iBelief) return true end) -->
<!-- GameEvents.ReligionCanHaveBelief.Add(function(iPlayer, iReligion, iBelief) return true end) -->
<!-- See also: "Religion - Civ Specific Religions" -->
<Row Class="3" Name="EVENTS_ACQUIRE_BELIEFS" Value="0"/>
<!-- Events sent to see if religion missions are valid (v46) -->
<!-- GameEvents.PlayerCanSpreadReligion.Add(function(iPlayer, iUnit, iPlotX, iPlotY) return true end) -->
<!-- GameEvents.PlayerCanRemoveHeresy.Add(function(iPlayer, iUnit, iPlotX, iPlotY) return true end) -->
<Row Class="3" Name="EVENTS_RELIGION" Value="0"/>
<!-- Events sent by plots (v30) -->
<!-- GameEvents.PlayerCanBuild.Add(function(iPlayer, iUnit, iX, iY, iBuild) return true end) -->
<!-- GameEvents.PlotCanImprove.Add(function(iX, iY, iImprovement) return true end) -->
<!-- GameEvents.PlayerBuilding.Add(function(iPlayer, iUnit, iX, iY, iBuild, bStarting) end) (v46) -->
<!-- GameEvents.PlayerBuilt.Add(function(iPlayer, iUnit, iX, iY, iBuild) end) (v46) -->
<!-- See also: "Improvement - Pontoon Bridge" -->
<Row Class="3" Name="EVENTS_PLOT" Value="0"/>
<!-- Events sent after a city produces/buys/sells something (v19) -->
<!-- GameEvents.CityTrained.Add(function(iPlayer, iCity, iUnit, bGold, bFaith) end) -->
<!-- GameEvents.CityConstructed.Add(function(iPlayer, iCity, iBuilding, bGold, bFaith) end) -->
<!-- GameEvents.CityCreated.Add(function(iPlayer, iCity, iProject, bGold, bFaith) end) -->
<!-- GameEvents.CityPrepared.Add(function(iPlayer, iCity, iSpecialist, bGold, bFaith) end) (v33) -->
<!-- GameEvents.CityBoughtPlot.Add(function(iPlayer, iCity, iPlotX, iPlotY, bGold, bCulture) end) -->
<!-- GameEvents.CitySoldBuilding.Add(function(iPlayer, iCity, iBuilding) end) -->
<Row Class="3" Name="EVENTS_CITY" Value="0"/>
<!-- Event sent to ascertain if a city can acquire a plot (v20) -->
<!-- GameEvents.CityCanAcquirePlot.Add(function(iPlayer, iCity, iPlotX, iPlotY) return true end) -->
<!-- See also: "Global - Coastal Waters Only" -->
<Row Class="3" Name="EVENTS_CITY_BORDERS" Value="0"/>
<!-- Event sent to ascertain if a player can over-ride the standard razing rules for the specified city and raze it anyway (v20) -->
<!-- GameEvents.PlayerCanRaze.Add(function(iPlayer, iCity) return false end) -->
<!-- See also: "Global - Raze Major Capitals" -->
<Row Class="3" Name="EVENTS_CITY_RAZING" Value="0"/>
<!-- Event sent to ascertain the bombard range for a city, and if indirect fire is allowed (v32) -->
<!-- Return a negative range if indirect fire is permitted -->
<!-- GameEvents.GetBombardRange.Add(function(iPlayer, iCity) return (-1 * GameDefines.CITY_ATTACK_RANGE) end) -->
<!-- See also: "Global - City Bombard Range" -->
<Row Class="3" Name="EVENTS_CITY_BOMBARD" Value="0" DbUpdates="1"/>
<!-- Events sent to ascertain if one city is connected to another (v33) -->
<!-- GameEvents.CityConnections.Add(function(iPlayer, bDirect) return false end) -->
<!-- GameEvents.CityConnected.Add(function(iPlayer, iCityX, iCityY, iToCityX, iToCityY, bDirect) return false end) -->
<!-- See also: "Trait - River Connection" -->
<!-- See also: "Global - Air Routes" -->
<Row Class="3" Name="EVENTS_CITY_CONNECTIONS" Value="0"/>
<!-- Events sent to ascertain if an area can have civ specific resources and to place those resources (v20) -->
<!-- GameEvents.AreaCanHaveAnyResource.Add(function(iPlayer, iArea) return true end) -->
<!-- GameEvents.PlaceResource.Add(function(iPlayer, iResource, iCount, iPlotX, iPlotY) end) -->
<!-- See also: "Global - Spice Islands" -->
<Row Class="3" Name="EVENTS_AREA_RESOURCES" Value="0"/>
<!-- Event sent to ascertain if a unit can rebase to a specific plot (either a city or a carrier) (v19) -->
<!-- GameEvents.CanLoadAt.Add(function(iPlayer, iUnit, iPlotX, iPlotY) return false end) -->
<!-- GameEvents.CanRebaseInCity.Add(function(iPlayer, iUnit, iPlotX, iPlotY) return false end) -->
<!-- GameEvents.CanRebaseTo.Add(function(iPlayer, iUnit, iPlotX, iPlotY, bIsCity) return false end) -->
<!-- GameEvents.RebaseTo.Add(function(iPlayer, iUnit, iPlotX, iPlotY) end) -->
<!-- See also: "Improvement - Airbases" -->
<!-- See also: "Global - City State Airbases" -->
<Row Class="3" Name="EVENTS_REBASE" Value="0"/>
<!-- Events sent before and after a paradrop (v19) -->
<!-- GameEvents.CanParadropFrom.Add(function(iPlayer, iUnit, iPlotX, iPlotY) return false end) -->
<!-- GameEvents.CannotParadropFrom.Add(function(iPlayer, iUnit, iPlotX, iPlotY) return false end) -->
<!-- GameEvents.ParadropAt.Add(function(iPlayer, iUnit, iFromX, iFromY, iToX, iToY) end) -->
<!-- See also: "Units - Paratroop Enhancements" -->
<Row Class="3" Name="EVENTS_PARADROPS" Value="0"/>
<!-- Event sent when a unit is created (v46) -->
<!-- GameEvents.UnitCreated.Add(function(iPlayer, iUnit, iUnitType, iPlotX, iPlotY, bTestVisible) end) -->
<Row Class="3" Name="EVENTS_UNIT_CREATED" Value="0"/>
<!-- Event sent just before a unit is killed (via CvUnit::kill()) (v22) -->
<!-- GameEvents.UnitPrekill.Add(function(iPlayer, iUnit, iUnitType, iX, iY, bDelay, iByPlayer) end) -->
<!-- See also: "UI - Antiquity Site Tooltips" -->
<Row Class="3" Name="EVENTS_UNIT_PREKILL" Value="0"/>
<!-- Event sent as a unit is captured (v46) -->
<!-- GameEvents.UnitCaptureType.Add(function(iPlayer, iUnit, iUnitType, iByCiv) return iCaptureUnitType; end) -->
<Row Class="3" Name="EVENTS_UNIT_CAPTURE" Value="0"/>
<!-- Events sent as units are promoted/upgraded (v19) -->
<!-- GameEvents.CanHavePromotion.Add(function(iPlayer, iUnit, iPromotionType) return true end) -->
<!-- GameEvents.UnitPromoted.Add(function(iPlayer, iUnit, iPromotionType) end) -->
<!-- GameEvents.CanHaveAnyUpgrade.Add(function(iPlayer, iUnit) return true end) -->
<!-- GameEvents.CanHaveUpgrade.Add(function(iPlayer, iUnit, iUnitClassType, iUnitType) return true end) -->
<!-- GameEvents.UnitUpgraded.Add(function(iPlayer, iOldUnit, iNewUnit, bGoodyHut) end) -->
<Row Class="3" Name="EVENTS_UNIT_UPGRADES" Value="0"/>
<!-- Events sent about war and peace (v19) -->
<!-- GameEvents.IsAbleToDeclareWar.Add(function(iPlayer, iAgainstTeam) return true end) -->
<!-- GameEvents.DeclareWar.Add(function(iPlayer, iAgainstTeam) end) -->
<!-- GameEvents.IsAbleToMakePeace.Add(function(iPlayer, iAgainstTeam) return true end) -->
<!-- GameEvents.MakePeace.Add(function(iPlayer, iAgainstTeam) end) -->
<Row Class="3" Name="EVENTS_WAR_AND_PEACE" Value="0"/>
<!-- Event sent when a nuke is fired (v19) -->
<!-- GameEvents.NuclearDetonation.Add(function(iPlayer, iX, iY, bWar, bBystanders) end) -->
<Row Class="3" Name="EVENTS_NUCLEAR_DETONATION" Value="0"/>
<!-- Event sent to see if a command is valid (v46) -->
<!-- GameEvents.PlayerCanDoCommand.Add(function(iPlayer, iUnit, iCommand, iData1, iData2, iPlotX, iPlotY, bTestVisible) return true end) -->
<Row Class="3" Name="EVENTS_COMMAND" Value="0"/>
<!-- Events sent for custom missions (v46) -->
<!-- CUSTOM_MISSION_NO_ACTION = 0 -->
<!-- CUSTOM_MISSION_ACTION = 1 -->
<!-- CUSTOM_MISSION_DONE = 2 -->
<!-- CUSTOM_MISSION_ACTION_AND_DONE = 3 -->
<!-- GameEvents.CustomMissionPossible.Add(function(iPlayer, iUnit, iMission, iData1, iData2, iFlags=0, iTurn=-1, iPlotX, iPlotY, bTestVisible) return false end) -->
<!-- GameEvents.CustomMissionStart.Add(function(iPlayer, iUnit, iMission, iData1, iData2, iFlags, iTurn) return CUSTOM_MISSION_ACTION end) -->
<!-- GameEvents.CustomMissionSetActivity.Add(function(iPlayer, iUnit, iMission, iData1, iData2, iFlags, iTurn) return CUSTOM_MISSION_ACTION_AND_DONE end) -->
<!-- GameEvents.CustomMissionDoStep.Add(function(iPlayer, iUnit, iMission, iData1, iData2, iFlags, iTurn) return CUSTOM_MISSION_ACTION_AND_DONE end) -->
<!-- GameEvents.CustomMissionCompleted.Add(function(iPlayer, iUnit, iMission, iData1, iData2, iFlags, iTurn) return false end) -->
<!-- GameEvents.CustomMissionTargetPlot.Add(function(iPlayer, iUnit, iMission, iData1, iData2, iFlags, iTurn) return iPlotIndex end) -->
<!-- GameEvents.CustomMissionCycleTime.Add(function(iPlayer, iUnit, iMission, iData1, iData2, iFlags, iTurn) return iCameraTime end) - iCameraTime is 0, 1, 5 or 10 -->
<!-- GameEvents.CustomMissionTimerInc.Add(function(iPlayer, iUnit, iMission, iData1, iData2, iFlags, iTurn) return iTimerInc end) -->
<Row Class="3" Name="EVENTS_CUSTOM_MISSIONS" Value="0"/>
<!-- Events generated by the RED (by Gedemon) dll mod code (v19) -->
<!-- Turn ==> PlayerEndTurnInitiated, PlayerEndTurnCompleted, TurnComplete -->
<!-- Combat ==> PushingMissionTo, MustAbortAttack, CombatResult, CombatEnded -->
<Row Class="3" Name="EVENTS_RED_TURN" Value="0"/>
<Row Class="3" Name="EVENTS_RED_COMBAT" Value="0"/>
<Row Class="3" Name="EVENTS_RED_COMBAT_MISSION" Value="0"/>
<Row Class="3" Name="EVENTS_RED_COMBAT_ABORT" Value="0"/>
<Row Class="3" Name="EVENTS_RED_COMBAT_RESULT" Value="0"/>
<Row Class="3" Name="EVENTS_RED_COMBAT_ENDED" Value="0"/>
<!-- Event sent to ascertain if a unit can move into a given plot (v19) -->
<!-- GameEvents.CanMoveInto.Add(function(iPlayer, iUnit, iPlotX, iPlotY, bAttack, bDeclareWar) return true end) -->
<!-- Also requires each unit type to receive the event to be enabled via the new SendCanMoveIntoEvent column in the Units table -->
<!-- See also: "Units - Railroad Artillery" -->
<Row Class="3" Name="EVENTS_CAN_MOVE_INTO" Value="0" DbUpdates="1"/>