Brad Wardell's site for talking about the customization of Windows.

image

Fallen Enchantress has random events. It’s just that there aren’t many and the odds of one showing up in a given turn are in 1/10,000.

So as we get ready for Beta 5, which is all about bug fixing, polish, and balance, we are finally starting to add a lot of new random events.

image

 

image

 

This is the part I should probably mention that any monkey can make a quest. You do need the powerful tool known as notepad. That’s how I’m doing it. It’s just XML and it’s pretty straight forward to make a fairly simple quest or random event (i.e. kill fooz or fetch me a holy hand grenade or escort my goat, etc.).  But there’s nothing stopping you from making a massive, epic quest.

In this random event, I set it so that after turn 50 there is a 0.1% chance of the event being triggered each turn. So odds are, you will rarely get this event (maybe once every 4 or 5 games).  But in addition to spawning a nasty cave with these nasty monsters in it, I also had it spam the world with a bunch of escaped darklings.

What’s nice about this is that modders (and guys like me) can control the “experience” of the game through the use of the turn trigger.

I’m thinking about coding in a power based trigger. That is, if the player is just dominating (or alternatively, getting really hurt) I could have the game trigger some interesting events to whoever is winning (or losing) to mix things up. I did this with Galactic Civilizations with quite a bit of success in keeping things moving.

Of course, with GalCiv, only I could make this stuff. With Fallen Enchantress, not only can a stupid monkey like myself crank this out, but you guys could too.

Below is the complete XML for this particular quest (90% of which is copy and paste):

   1:   <QuestDef InternalName="RandomEvent_AdventureProblem_2">
   2:      <DisplayName>Troublesome Adventerers</DisplayName>
   3:      <Description>
   4:        Into the throne room comes three very sad looking adventurers. They explain, at considerable length, that they met at a local pub and decided to go on a quest together. Unfortunately, this quest brought them to the ancient dungeon of Orilinor, Curgen's jailer.
   5:   
   6:        This dungeon was thought to be lost and, frankly, it would have been better had it stayed lost because upon opening it, a couple centuries worth of monster breeding has now been unleashed into the country side.
   7:   
   8:        "And, a demon known as Anithan is still there," he says.
   9:   
  10:        What do you want to do?
  11:      </Description>
  12:      <ShortTextAccept>Sigh. Can't you people get real jobs? You'll be helping clean up this mess.</ShortTextAccept>
  13:      <AllowQuestRejection>0</AllowQuestRejection>
  14:      <RewardText>Book of Demon Summoning</RewardText>
  15:      <RewardImage>Tech_Third_Book.png</RewardImage>
  16:      <SuccessText>
  17:        Anithan is defeated and the book is yours. Using the books of your private study to translate the runes in the book, you are able to summon a demon to do your bidding. Unfortunately, the book disintegrates upon use.
  18:      </SuccessText>
  19:      <QuestClass>Minor</QuestClass>
  20:      <Repeatable>0</Repeatable>
  21:      <TriggerType>TurnNumber</TriggerType>
  22:      <TriggerData>50</TriggerData>
  23:      <TriggerChance>10</TriggerChance>
  24:      <PostTriggerChance>10</PostTriggerChance>
  25:      <SpawnRating>1</SpawnRating>
  26:      <Image>BG18_Dark.png</Image>
  27:      <Treasure>
  28:        <GameModifier InternalName="Reward1">
  29:          <ModType>Unit</ModType>
  30:          <Attribute>GiveExperience</Attribute>
  31:          <Value>30</Value>
  32:        </GameModifier>
  33:      </Treasure>
  34:      <Treasure>
  35:        <GameModifier InternalName="Reward2">
  36:          <ModType>Unit</ModType>
  37:          <Attribute>UnitJoinArmy</Attribute>
  38:          <StrVal>DeathDemon</StrVal>
  39:          <StrVal2>Pox the Demon</StrVal2>
  40:          <UnitClass>Unit</UnitClass>
  41:        </GameModifier>
  42:      </Treasure>
  43:      <QuestObjectiveDef>
  44:        <ObjectiveID>0</ObjectiveID>
  45:        <NextObjectiveID>1</NextObjectiveID>
  46:        <Description>Find and defeat Anithan.</Description>
  47:        <Treasure>
  48:          <GameModifier>
  49:            <ModType>Map</ModType>
  50:            <Attribute>CreateGoodieHut</Attribute>
  51:            <StrVal>Orilinor's Dungeon</StrVal>
  52:            <Unitclass>GH_Quest_Cave</Unitclass>
  53:            <Radius>12</Radius>
  54:          </GameModifier>
  55:          <GameModifier>
  56:            <ModType>Map</ModType>
  57:            <Attribute>SpawnMonster</Attribute>
  58:            <Value>24</Value>
  59:            <Unitclass>Darkling</Unitclass>
  60:            <StrVal>Escaped Darklings</StrVal>
  61:            <Radius>12</Radius>
  62:          </GameModifier>
  63:          <GameModifier InternalName="Join">
  64:            <ModType>Unit</ModType>
  65:            <Attribute>UnitJoinArmy</Attribute>
  66:            <StrVal>Iru</StrVal>
  67:            <StrVal2>Amanda</StrVal2>
  68:            <UnitClass>Unit</UnitClass>
  69:            <Level>6</Level>
  70:          </GameModifier>
  71:          <GameModifier InternalName="Join">
  72:            <ModType>Unit</ModType>
  73:            <Attribute>UnitJoinArmy</Attribute>
  74:            <StrVal>Syndicate_SpyMaster</StrVal>
  75:            <StrVal2>Lucila</StrVal2>
  76:            <UnitClass>Unit</UnitClass>
  77:            <Level>6</Level>
  78:          </GameModifier>
  79:          <GameModifier InternalName="Join">
  80:            <ModType>Unit</ModType>
  81:            <Attribute>UnitJoinArmy</Attribute>
  82:            <StrVal>Mercenary</StrVal>
  83:            <StrVal2>Kelen</StrVal2>
  84:            <UnitClass>Unit</UnitClass>
  85:            <Level>6</Level>
  86:          </GameModifier>
  87:        </Treasure>
  88:        <QuestConditionDef>
  89:          <Objective>
  90:            <Icon>Mana_32.png</Icon>
  91:            <Text>Find the cave that leads to the dungeon, defeat Anithan.</Text>
  92:            <IsOptional>0</IsOptional>
  93:          </Objective>
  94:          <Class>Success</Class>
  95:          <Type>ClearGoodieHut</Type>
  96:          <TextData>GH_Quest_Cave</TextData>
  97:          <Flag>RevealTarget</Flag>
  98:        </QuestConditionDef>
  99:        <ChoiceText>You manage to cause a cave in, sealing off the entrance to the vast lambrynth underneath but not before Anithan and his servants confront you.</ChoiceText>
 100:        <ChoiceMedallion>F_Domination_Full.png</ChoiceMedallion>
 101:        <ChoiceMedallionFrame>Medallion_Frame_17.png</ChoiceMedallionFrame>
 102:        <QuestChoiceDef>
 103:          <Description>Defeat Anithan</Description>
 104:          <NextObjectiveID>1</NextObjectiveID>
 105:          <Encounter>
 106:            <Liklihood>100</Liklihood>
 107:            <BattleIdentifier>Anithan</BattleIdentifier>
 108:            <WillRespawn>0</WillRespawn>
 109:            <WanderingRadius>0</WanderingRadius>
 110:            <UnitInstance>
 111:              <UnitType>DeathDemon</UnitType>
 112:              <UnitName>Anithan</UnitName>
 113:              <Level>1</Level>
 114:            </UnitInstance>
 115:            <UnitInstance>
 116:              <UnitType>Juggernaut_Escaped</UnitType>
 117:              <UnitName>Failed prototype</UnitName>
 118:              <Level>1</Level>
 119:            </UnitInstance>
 120:            <UnitInstance>
 121:              <UnitType>DarklingWarrior</UnitType>
 122:              <UnitName>Darkling Horde</UnitName>
 123:              <UnitGroupingType>UnitGroupingType_Squad</UnitGroupingType>
 124:              <Level>1</Level>
 125:            </UnitInstance>
 126:          </Encounter>
 127:        </QuestChoiceDef>
 128:        <QuestChoiceDef>
 129:          <Description>Ah. Yes...well..quite. We will just be leaving you to your cave.</Description>
 130:          <NextObjectiveID>0</NextObjectiveID>
 131:        </QuestChoiceDef>
 132:      </QuestObjectiveDef>
 133:      <QuestObjectiveDef>
 134:        <ObjectiveID>1</ObjectiveID>
 135:        <NextObjectiveID>2</NextObjectiveID>
 136:        <PopupObjectiveMsg>0</PopupObjectiveMsg>
 137:        <QuestConditionDef>
 138:          <Objective>
 139:            <Icon>Mana_32.png</Icon>
 140:            <Text>Defeat Anithan</Text>
 141:            <IsOptional>0</IsOptional>
 142:          </Objective>
 143:          <Class>Success</Class>
 144:          <Type>BattleFinished</Type>
 145:          <TextData>Anithan</TextData>
 146:          <MoreTextData>Victory</MoreTextData>
 147:        </QuestConditionDef>
 148:        <QuestConditionDef>
 149:          <Objective>
 150:            <Icon></Icon>
 151:            <Text>Battle Lost</Text>
 152:            <IsOptional>0</IsOptional>
 153:          </Objective>
 154:          <Class>Failure</Class>
 155:          <Type>BattleFinished</Type>
 156:          <TextData>Anithan</TextData>
 157:          <MoreTextData>Defeat</MoreTextData>
 158:        </QuestConditionDef>
 159:      </QuestObjectiveDef>
 160:      <QuestObjectiveDef>
 161:        <ObjectiveID>2</ObjectiveID>
 162:        <NextObjectiveID>3</NextObjectiveID>
 163:        <Description>Return to your capital with the untranslated book of demons.</Description>
 164:        <QuestConditionDef>
 165:          <Objective>
 166:            <Icon>Mana_32.png</Icon>
 167:            <Text>Return to the capital with the untranslated book of demon summoning.</Text>
 168:            <IsOptional>0</IsOptional>
 169:          </Objective>
 170:          <Class>Success</Class>
 171:          <Type>UnitEntersCapital</Type>
 172:        </QuestConditionDef>
 173:      </QuestObjectiveDef>
 174:      <QuestObjectiveDef>
 175:        <ObjectiveID>3</ObjectiveID>
 176:        <QuestEnd>1</QuestEnd>
 177:      </QuestObjectiveDef>
 178:    </QuestDef>

Comments (Page 1)
6 Pages1 2 3  Last
on Aug 30, 2012

Love it!

on Aug 30, 2012

I think you should proofread before posting Froglord - Adventerers?

on Aug 30, 2012

ea6527
I think you should proofread before posting Froglord - Adventerers?

see above where frogboy refers to himself as a "stupid monkey". You want to spell things right in your quest, Mr Fancy High School diploma. go right ahead.

on Aug 30, 2012
Awesome. Random events are a great way to keep the game interesting. Just one request: would it be possible to increase their frequency? I keep hearing about these neat random events, but I've never seen one! I'd like to be guaranteed at least 1 random event per game. And I love the idea of power based triggers. If I'm dominating the AI in the late game, it would be thrilling to have some massive, epic event disrupt my game plan, such as a portal opening to another world and a Titan comes through with an army, intent on devastating the countryside. Would be great to have events that involve some unique and super-powerful monsters on par with the wildland bosses. That would go a long way towards making the late game more exciting and challenging.
on Aug 30, 2012

You do need the powerful tool known as notepad.

 

Pff, low-level garbage. Tremble before my Notepad++!

 

Now if only I could get a Flaming Notepad+++.

on Aug 30, 2012

ea6527
I think you should proofread before posting Froglord - Adventerers?

You say something, college boy?

on Aug 30, 2012

Is that a random event in your proverbial pocket?

on Aug 30, 2012

Madcatter

You do need the powerful tool known as notepad.

 

Pff, low-level garbage. Tremble before my Notepad++!

 

Now if only I could get a Flaming Notepad+++.

How to make a Flaming Notepad+++ (note- the + signs indicate levels. Notepad++ is better than notepad due to correct grammar)

Step 1: Buy a license for Notepad++ and install it. Using unlicensed, notepad, will yield in flaming notepad+.

Step 2: Run Notepad++.

Step 3: Pour Benzine++ on screen. It's advised to take the computer as far as possible at this stage.

Step 4: Light said Benzine++ using a Match++ (using a match will yield the same effect). You now have a Flaming Notepad+++ for the next minute.

*Disclaimer++: We do not take any responsibility for any kind of damaged goods or injury.

 

 

Well, now that we ended ruining (or burning) somebody's day (seriously, the price on oil is skyrocketing...), here is the question:

From what I can see, we can mod so far:

Random events; Quests; Buildings; Techs; Spells; Items.

 

A few questions, since I'm not sure if it'll be moddable, and if not I believe it should:

Amount of abilities, ability effect and race effect/name on faction/sovereign creation.

Amount of different stuff that can be given to a custom unit (for example, making a Juggernaut use two weapons, or 5 rings, or two duplicate items, or train more than 3 abilities.

Randomizing techs- I am not sure what is the correct system, but allowing players to random starting techs, and if possible able to link them to parameters (for example, a random tech allowing to summon demons, only available if you got death magic, or another that allows researching book of water if you do NOT start with the book). Allow techs to open on certain conditions (completing a quest that opens a tech, for example).

City and population way of work- changing the 3 turn production cap, changing the amount of effect population has on resources, city level up times, taxes effects, city level up buildings.

Adjusting group sizes, and option to change the amount of them (maybe with python instead of normal xml), or allowing (I assume it's possible, but really not sure) the use of population as a resource in custom gear.

These are the things I believe will make modders life easier making mods for a game (which also means more replayability and sales)

 

That's all for now. Keep up the good work!

on Aug 30, 2012

Look at what I just made:

Code: xml
  1. <QuestDef InternalName="Quest_Counterstrike">
  2. <DisplayName>Counterstrike</DisplayName>
  3. <Description>
  4. Set to strike on the anniversary of Curgen's death, a series of previously hidden redoubts opens up and releases a horde of Abominations onto the land. Beware.
  5. </Description>
  6. <AllowQuestRejection>0</AllowQuestRejection>
  7. <FullscreenMovie>Movies\Minicut_Event_Eclipse.bik</FullscreenMovie>
  8. <QuestClass>Minor</QuestClass>
  9. <Repeatable>0</Repeatable>
  10. <TriggerType>TurnNumber</TriggerType>
  11. <TriggerData>5</TriggerData>
  12. <TriggerOrigin>EventLocation</TriggerOrigin>
  13. <TriggerChance>10000</TriggerChance>
  14. <PostTriggerChance>10</PostTriggerChance>
  15. <Treasure>
  16. <GameModifier InternalName="OhCrapWeAreGonnaDie">
  17. <ModType>Map</ModType>
  18. <Attribute>SpawnMonster</Attribute>
  19. <Value>8</Value>
  20. <Unitclass>Juggernaut_Escaped</Unitclass>
  21. <StrVal>Released Abomination</StrVal>
  22. <Radius>16</Radius>
  23. </GameModifier>
  24. </Treasure>
  25. <QuestObjectiveDef>
  26. <ObjectiveID>0</ObjectiveID>
  27. <QuestEnd>1</QuestEnd>
  28. </QuestObjectiveDef>
  29. </QuestDef>

 

This spawns 8 really nasty creatures around the victim player for a radius of 16 around their capital.

on Aug 30, 2012


*cheers wildly* 

on Aug 30, 2012

Frogboy
Look at what I just made:


This spawns 8 really nasty creatures around the victim player for a radius of 16 around their capital.

 

Rabbits?  Can players hope to find a Holy Hand Grenade?

 

Seriously, Brad, that's nice.  Though I'd like to see these kinds of things linked to tree-based outcomes from quests and AI player conversations.  Not rabbit abominations specifically, but an event that places a blessing/curse on your capitol, or causes two of your neighbors to promptly invade a third, or reveals an ancient library archive where it was previously buried deep in your own territory, or unleashes a giant Obsidian Rabbit Golem on your people...

 

I really need to stop thinking about rabbits.   Would it be possible though for modders to script tree-based messaging with choices with AI Players, and launch events as a result?

on Aug 30, 2012


Yeah, random events and the ability to make them happen in game I love it.

on Aug 30, 2012

Raledon
A few questions, since I'm not sure if it'll be moddable, and if not I believe it should:

Amount of abilities, ability effect and race effect/name on faction/sovereign creation. - Already is

Amount of different stuff that can be given to a custom unit (for example, making a Juggernaut use two weapons, or 5 rings, or two duplicate items, or train more than 3 abilities. - Not for specific units I believe

Randomizing techs- I am not sure what is the correct system, but allowing players to random starting techs, and if possible able to link them to parameters (for example, a random tech allowing to summon demons, only available if you got death magic, or another that allows researching book of water if you do NOT start with the book). Allow techs to open on certain conditions (completing a quest that opens a tech, for example). - I don't think random techs are possible

City and population way of work- changing the 3 turn production cap, changing the amount of effect population has on resources, city level up times, taxes effects, city level up buildings. - Yes

Adjusting group sizes, and option to change the amount of them (maybe with python instead of normal xml), or allowing (I assume it's possible, but really not sure) the use of population as a resource in custom gear. - Definitely yes for the first bit, not sure if city resources can be added as a cost

These are the things I believe will make modders life easier making mods for a game (which also means more replayability and sales)

 

About half of these are already there. The game is open to modding if you go to the files, although messing with Core Files atm means you need to reinstall with every new patch since changed files will be ignored.

on Aug 30, 2012

I’m thinking about coding in a power based trigger

Don't just think this.  DO IT PLEASE IT WOULD BE AWESOME AWESOME AWESOME!!!!!!

on Aug 30, 2012

Raledon, the game already have 4 random techs.

Some book of fire/earth/wind/water appearing in the magic tree.

Sincerely
~ Kongdej

6 Pages1 2 3  Last