C2C - Event Ideas

Say what:eek: So in definition then what "we" have really is a "Standalone Mod?"
No, what we have courtesy of Koshling is a better save game format that does not break at certain changes. But it still depends on the order of XML entries to get the right IDs. Adding an event or a unit in the middle of the XML changes that order. Luckily Koshling already stores the order of many such info XMLs. Not the event one yet though.
Since adding at the end of the XML does not change the order, you can still add events, they just need to be added there.
Once Koshling stores the order of the event info XML in the save game, he can remap the IDs properly (like for the others like units) and adding in the mid of the XML will be fine.
 
No, what we have courtesy of Koshling is a better save game format that does not break at certain changes. But it still depends on the order of XML entries to get the right IDs. Adding an event or a unit in the middle of the XML changes that order. Luckily Koshling already stores the order of many such info XMLs. Not the event one yet though.
Since adding at the end of the XML does not change the order, you can still add events, they just need to be added there.
Once Koshling stores the order of the event info XML in the save game, he can remap the IDs properly (like for the others like units) and adding in the mid of the XML will be fine.

ahhhh ok, i get it, nice info, thx. I am glad you said the word "courtesy" very elegant wording.;)


EDIT: @ DH

Isn't Leaping Bull, QUITE a bit many in turns:eek: Especially so EARLY on in-game?
 
EDIT: @ DH
Isn't Leaping Bull, QUITE a bit many in turns:eek: Especially so EARLY on in-game?

I agree. Also why doesn't it require cows or bison? I know you have it build faster with them, but if you don't have cows or bison, what are they leaping over?

I think it should require Herd - Cow OR Herd - Bison OR Bison Hunter's Camp OR Cow Farm OR Myth of the Bull. This way you could use city vicinity buildings or subdued animals.
 
I agree. Also why doesn't it require cows or bison? I know you have it build faster with them, but if you don't have cows or bison, what are they leaping over?

I think it should require Herd - Cow OR Herd - Bison OR Bison Hunter's Camp OR Cow Farm OR Myth of the Bull. This way you could use city vicinity buildings or subdued animals.

Cost is wrong, I had it in the ancient era and forgot to change it back to the first era.

They (Labyrinth and Bull leaping) do require The Myth of the Bull, just not in the city. And because of that it does not show up as a requirement. If I change it so it shows up then you need two Myth of the Bull which can't be done.

The game is crashing almost constantly now so I can't to any testing.
 
Cost is wrong, I had it in the ancient era and forgot to change it back to the first era.

They (Labyrinth and Bull leaping) do require The Myth of the Bull, just not in the city. And because of that it does not show up as a requirement. If I change it so it shows up then you need two Myth of the Bull which can't be done.

The game is crashing almost constantly now so I can't to any testing.

Ah ok. Cool then.
 
I'll chabge the Iditarod event to sled dogs expiring at globalization today then and will do some of the xml only ones proposed so far.
Re: Music of Gods: any idea about a tech for the third option (as long as steam punk is not done yet)?
Re: Syphilis outbreak: there already are quite a few disease events in the game, though they mostly just kill population outright. Health for x turns is not terribly easy to do, there is one event for ffh that someone did that does that but they used a temporary building for the effect - this is actually the easiest thing to code: create an outbreak building with all the necessary effects and then trigger a second event x turns later that removes it. I can add unhealth directly to the city and x turns later add health to it, but it will likely then simply add both :health: and :yuck: to the city screen, so you'll get to see the effects of both events after the fact, while the building route could be removed without trace. Will see what looks better.
Re: Blizzard: the current Itidarod trigger works well for that event so I'll simply rename it :mischief: but it along with the Strike event proposed has one problem: its not terribly difficult to remove trade routes and production from the city - but to add that back after a few turns ends up being tricky if I want to be sure I don't add more than I removed initially, right now I'd rather do something else...
 
I'll chabge the Iditarod event to sled dogs expiring at globalization today then and will do some of the xml only ones proposed so far.

Thank you.

Re: Music of Gods: any idea about a tech for the third option (as long as steam punk is not done yet)?

Maybe Electricity or Electronics as a temp tech. Steampunk and all the other alternative timeline techs have not been worked out yet. So it may be awhile.

Re: Syphilis outbreak: there already are quite a few disease events in the game, though they mostly just kill population outright. Health for x turns is not terribly easy to do, there is one event for ffh that someone did that does that but they used a temporary building for the effect - this is actually the easiest thing to code: create an outbreak building with all the necessary effects and then trigger a second event x turns later that removes it. I can add unhealth directly to the city and x turns later add health to it, but it will likely then simply add both and to the city screen, so you'll get to see the effects of both events after the fact, while the building route could be removed without trace. Will see what looks better.

You may want to see what Dancing Hoskuld has in mind for his Disease Mod. He may already cover this. However perhaps you guys could work together in linking diseases to events.

Re: Blizzard: the current Itidarod trigger works well for that event so I'll simply rename it but it along with the Strike event proposed has one problem: its not terribly difficult to remove trade routes and production from the city - but to add that back after a few turns ends up being tricky if I want to be sure I don't add more than I removed initially, right now I'd rather do something else...

Whatever your comfortable doing. Thanks so much for your help. :D
 
Here's my El Dorado event, written from scratch and thus not tested. It has to be converted to C2C-format.
It gives any unit on a jungle tile a chance to discover El Dorado which gives the tile the Lost Civilization bonus and 1000 + (random 500) gold and 5 turns happiness empire wide to the player who discovers it.
Spoiler :
PHP:
Trigger in CIV4EventTriggerInfos.xml

<!-- EL DORADO -->

		<EventTriggerInfo>
			<Type>EVENTTRIGGER_DORADO</Type>
			<WorldNewsTexts>
				<Text>TXT_KEY_EVENTTRIGGER_DORADO_1</Text>
			</WorldNewsTexts>
			<TriggerTexts>
				<TriggerText>
					<Text>TXT_KEY_EVENT_TRIGGER_DORADO_1</Text>
					<Era>NONE</Era>
				</TriggerText>
			</TriggerTexts>
			<EventArt>Art/EventImages/DoradoEvent.dds</EventArt>
			<bSinglePlayer>0</bSinglePlayer>
			<iPercentGamesActive>100</iPercentGamesActive>
			<iWeight>100</iWeight>
			<bProbabilityUnitMultiply>0</bProbabilityUnitMultiply>
			<bProbabilityBuildingMultiply>0</bProbabilityBuildingMultiply>
			<Civic>NONE</Civic>
			<iMinTreasury>0</iMinTreasury>
			<iMinPopulation>0</iMinPopulation>
			<iMaxPopulation>0</iMaxPopulation>
			<iMinMapLandmass>0</iMinMapLandmass>
			<iMinOurLandmass>0</iMinOurLandmass>
			<iMaxOurLandmass>-1</iMaxOurLandmass>
			<MinDifficulty>NONE</MinDifficulty>
			<iAngry>0</iAngry>
			<iUnhealthy>0</iUnhealthy>
			<UnitsRequired></UnitsRequired>
			<iNumUnits>1</iNumUnits>
			<iNumUnitsGlobal>0</iNumUnitsGlobal>
			<iUnitDamagedWeight>0</iUnitDamagedWeight>
			<iUnitDistanceWeight>0</iUnitDistanceWeight>
			<iUnitExperienceWeight>0</iUnitExperienceWeight>
			<bUnitsOnPlot>1</bUnitsOnPlot>
			<BuildingsRequired></BuildingsRequired>
			<iNumBuildings>0</iNumBuildings>
			<iNumBuildingsGlobal>0</iNumBuildingsGlobal>
			<iNumPlotsRequired>1</iNumPlotsRequired>
			<bOwnPlot>0</bOwnPlot>
			<iPlotType>-1</iPlotType>
			<FeaturesRequired>
				<FeatureType>FEATURE_JUNGLE</FeatureType>
			</FeaturesRequired>
			<TerrainsRequired></TerrainsRequired>
			<ImprovementsRequired></ImprovementsRequired>
			<BonusesRequired></BonusesRequired>
			<RoutesRequired></RoutesRequired>
			<ReligionsRequired></ReligionsRequired>
			<iNumReligions>0</iNumReligions>
			<CorporationsRequired/>
			<iNumCorporations>0</iNumCorporations>
			<bPickReligion>0</bPickReligion>
			<bStateReligion>0</bStateReligion>
			<bHolyCity>0</bHolyCity>
			<bPickCorporation>0</bPickCorporation>
			<bHeadquarters>0</bHeadquarters>
			<Events>
				<Event>EVENT_DORADO_1</Event>
			</Events>
			<PrereqEvents/>
			<bPrereqEventPlot>0</bPrereqEventPlot>
			<OrPreReqs></OrPreReqs>
			<AndPreReqs>
				<PrereqTech>TECH_HUNTING</PrereqTech>
			</AndPreReqs>
			<ObsoleteTechs>
				<ObsoleteTech>TECH_SCIENTIFIC_METHOD</ObsoleteTech>
			</ObsoleteTechs>
			<bRecurring>0</bRecurring>
			<bTeam>0</bTeam>
			<bGlobal>1</bGlobal>
			<bPickPlayer>0</bPickPlayer>
			<bOtherPlayerWar>0</bOtherPlayerWar>
			<bOtherPlayerHasReligion>0</bOtherPlayerHasReligion>
			<bOtherPlayerHasOtherReligion>0</bOtherPlayerHasOtherReligion>
			<bOtherPlayerAI>0</bOtherPlayerAI>
			<iOtherPlayerShareBorders>0</iOtherPlayerShareBorders>
			<OtherPlayerHasTech>NONE</OtherPlayerHasTech>
			<bPickCity>0</bPickCity>
			<bPickOtherPlayerCity>0</bPickOtherPlayerCity>
			<bShowPlot>1</bShowPlot>
			<iCityFoodWeight>0</iCityFoodWeight>
			<PythonCanDo>canTriggerDorado</PythonCanDo>
			<PythonCanDoCity></PythonCanDoCity>
			<PythonCanDoUnit/>
			<PythonCallback/>
		</EventTriggerInfo>

Event in CIV4EventInfos.xml

<!-- EL DORADO -->

		<EventInfo>
			<Type>EVENT_DORADO_1</Type>
			<Description>TXT_KEY_EVENT_DORADO_1</Description>
			<LocalInfoText/>
			<WorldNewsTexts/>
			<OtherPlayerPopup/>
			<QuestFailText/>
			<bQuest>0</bQuest>
			<bGlobal>0</bGlobal>
			<bTeam>0</bTeam>
			<bPickCity>0</bPickCity>
			<bPickOtherPlayerCity>0</bPickOtherPlayerCity>
			<bDeclareWar>0</bDeclareWar>
			<iGold>1000</iGold>
			<bGoldToPlayer>0</bGoldToPlayer>
			<iRandomGold>500</iRandomGold>
			<iCulture>0</iCulture>
			<iEspionagePoints>0</iEspionagePoints>
			<bGoldenAge>0</bGoldenAge>
			<iFreeUnitSupport>0</iFreeUnitSupport>
			<iInflationMod>0</iInflationMod>
			<iSpaceProductionMod>0</iSpaceProductionMod>
			<Tech>NONE</Tech>
			<TechFlavors/>
			<iTechPercent>0</iTechPercent>
			<iTechCostPercent>0</iTechCostPercent>
			<iTechMinTurnsLeft>0</iTechMinTurnsLeft>
			<PrereqTech>NONE</PrereqTech>
			<UnitClass>NONE</UnitClass>
			<iNumFreeUnits>0</iNumFreeUnits>
			<bDisbandUnit>0</bDisbandUnit>
			<iUnitExperience>0</iUnitExperience>
			<iUnitImmobileTurns>0</iUnitImmobileTurns>
			<UnitPromotion/>
			<UnitName></UnitName>
			<UnitCombatPromotions></UnitCombatPromotions>
			<UnitClassPromotions></UnitClassPromotions>
			<BuildingClass></BuildingClass>
			<iBuildingChange></iBuildingChange>
			<BuildingExtraYields/>
			<BuildingExtraCommerces></BuildingExtraCommerces>
			<BuildingExtraHappies></BuildingExtraHappies>
			<BuildingExtraHealths/>
			<iHappy>0</iHappy>
			<iHealth>0</iHealth>
			<iHurryAnger>0</iHurryAnger>
			<iHappyTurns>5</iHappyTurns>
			<iRevoltTurns>0</iRevoltTurns>
			<iMinPillage>0</iMinPillage>
			<iMaxPillage>0</iMaxPillage>
			<iFood>0</iFood>
			<iFoodPercent>0</iFoodPercent>
			<FreeSpecialistCounts/>
			<FeatureType>NONE</FeatureType>
			<iFeatureChange>0</iFeatureChange>
			<ImprovementType>NONE</ImprovementType>
			<iImprovementChange>0</iImprovementChange>
			<BonusType>NONE</BonusType>
			<iBonusChange>0</iBonusChange>
			<RouteType>NONE</RouteType>
			<iRouteChange>0</iRouteChange>
			<BonusRevealed></BonusRevealed>
			<BonusGift>NONE</BonusGift>
			<PlotExtraYields/>
			<iConvertOwnCities>0</iConvertOwnCities>
			<iConvertOtherCities>0</iConvertOtherCities>
			<iMaxNumReligions>-1</iMaxNumReligions>
			<iOurAttitudeModifier>0</iOurAttitudeModifier>
			<iAttitudeModifier>0</iAttitudeModifier>
			<iTheirEnemyAttitudeModifier>0</iTheirEnemyAttitudeModifier>
			<iPopulationChange>0</iPopulationChange>
			<AdditionalEvents/>
			<EventTimes/>
			<ClearEvents/>
			<PythonCallback>ApplyDorado</PythonCallback>
			<PythonExpireCheck/>
			<PythonCanDo></PythonCanDo>
			<PythonHelp/>
			<Button>,Art/Interface/Buttons/Process/Blank.dds,Art/Interface/Buttons/Beyond_the_Sword_Atlas.dds,8,5</Button>
			<iAIValue>1000</iAIValue>
		</EventInfo>

Text entries

<!-- EL DORADO -->

	<TEXT>
		<Tag>TXT_KEY_EVENTTRIGGER_DORADO_1</Tag>
		<English>%s1_civ_adjective explorers have found the lost city of El Dorado!</English>
	</TEXT>
	<TEXT>
		<Tag>TXT_KEY_EVENT_TRIGGER_DORADO_1</Tag>
		<English>Our explorers have found the city of El Dorado!!</English>
	</TEXT>
	<TEXT>
		<Tag>TXT_KEY_EVENT_DORADO_1</Tag>
		<English>Wealth and riches are ours!</English>
	</TEXT>
	<TEXT>
		<Tag>TXT_KEY_DISCOVERED_DORADO</Tag>
		<English>You have discovered the lost city of El Dorado!</English>
	</TEXT>
	<TEXT>
		<Tag>TXT_KEY_SIGN_EVENT_DORADO_1</Tag>
		<English>El Dorado</English>
	</TEXT>

Python in CvRandomEventInterface.py

####### EL DORADO #####
# Plot requirements

def canTriggerDorado(argsList):
	kTriggeredData = argsList[0]

	pPlot = gc.getMap().plot(kTriggeredData.iPlotX, kTriggeredData.iPlotY)
	
	# Plot cannot be peak	
	if pPlot.isPeak(): return false

	# Plot cannot be hills
	#if pPlot.isHills(): return false

	# Plot cannot have any bonus
	if (pPlot.getBonusType(-1) != -1 ): return false

	return true

def ApplyDorado(argsList):
	iEvent = argsList[0]
	kTriggeredData = argsList[1]

	# EventSigns start -- setup
	event = gc.getEventInfo(iEvent)
	sEventType = event.getType()
	# EventSigns end

	plot = gc.getMap().plot(kTriggeredData.iPlotX, kTriggeredData.iPlotY)
		
	iBonus = CvUtil.findInfoTypeNum(gc.getBonusInfo,gc.getNumBonusInfos(),'BONUS_LOSTCIV')
	plot.setBonusType(iBonus)

	# EventSigns start -- Add landmark for initial plot
	placeLandmark(plot, sEventType, 0, 0, 0, True, -1)
	# EventSigns end

	szBuffer = localText.getText("TXT_KEY_DISCOVERED_DORADO", () )
	CyInterface().addMessage(kTriggeredData.ePlayer, false, gc.getEVENT_MESSAGE_TIME(), szBuffer, "AS2D_BUILD_FIRAXIS", InterfaceMessageTypes.MESSAGE_TYPE_MINOR_EVENT, gc.getBonusInfo(iBonus).getButton(), gc.getInfoTypeForString("COLOR_WHITE"), plot.getX(), plot.getY(), true, true)
I hope you ppl like it :)
 
:hmm:

the bonus lost civ that the cando code looks for what is that?
I am not sure how well events go with a cantrigger code and a cando code if there is only one option - I'd rather not have an event screen trigger with no way to close it because the only choice is greyed out...
Personally I'd not have such an event active in all games, but rather set the percentgamesactive to something less than 100, it should not be an event that triggers in every single game, especially since the prereqs are very easy to meet.
Also of course the techs should be changed - I'd have something like this in the age of exploration not in stone age...

Do you have an idea for an event image?
 
:hmm:

the bonus lost civ that the cando code looks for what is that?
I am not sure how well events go with a cantrigger code and a cando code if there is only one option - I'd rather not have an event screen trigger with no way to close it because the only choice is greyed out...
Personally I'd not have such an event active in all games, but rather set the percentgamesactive to something less than 100, it should not be an event that triggers in every single game, especially since the prereqs are very easy to meet.
Also of course the techs should be changed - I'd have something like this in the age of exploration not in stone age...

Do you have an idea for an event image?

It's a positive event thus no need to have more than one option but you can make more options.

Less than 100 and techs is up to C2C modders imo.

Event image that can be used, see bottom row, second from left.
Spoiler :
otherevents08_riL.jpg


@Arian

We have an Eldorado Wonder under Andeaism religion. I am not sure if we need your vent if we have that. Or maybe we should possibly should try to link the wonder to the event.

I'm not that familiar with C2C.
 
It's a positive event thus no need to have more than one option but you can make more options.


What I meant is what happens if the cando returns false while the cantrigger returns true - I am not sure about that but would expect the event to trigger but the option to be greyed out.
 
What I meant is what happens if the cando returns false while the cantrigger returns true - I am not sure about that but would expect the event to trigger but the option to be greyed out.

The canTrigger checks for a valid plot, the canApply only puts the bonus on that (valid) spot :)
 
Yeah I had these errors, corrected them in my work copy and then pushed the old version :blush: corrected now :)


ahahahahaha, i cant tell you how MANY times i have done the same thing(s).:p
 
ahahahahaha, i cant tell you how MANY times i have done the same thing(s).:p

Tip - before doing a commit right-click and do a 'SVN diff' on every file marked as changed before you commit to verify the chnages are what you expect them to be.
 
Looks great!

If I can make a small suggestion:

Make the :) or :mad: apply to the chicken coop instead of the city? If the building goes obsolete or gets destroyed you don't want to have the :mad: still around without gaining any of the :gold: or :culture:.

sorry, wanted to reply earlier but then got sidetracked :mischief:

I *could* do that easily, but I do believe that there should be some events every now and then that have lasting effects - especially with the ability to remove buildings through user intervention, so I am torn between doing that and not doing that. Will think about it when I do the next event push though (simply forgot to right now since I was so glad to get the volcanoes out there ;))
 
Back
Top Bottom