In Star Wars: Empire at War, players controlled an entire war for the Star Wars galaxy as the Rebel Alliance or the Galactic Empire. Now, they will face off against both of them in Forces of Corruption as a brand new third faction. As Tyber Zann, players will stop at nothing as they seek to further the sinister agenda of the Zann Consortium and become the most notorious criminal leader since Jabba the Hutt. With all new tactics like piracy, kidnapping, and bribery, players can control the shadowy forces of corruption in their attempt to rule the Star Wars underworld.

Post tutorial Report RSS A guide to campaign scripting

A complete guide that explains how to create your own Empire at War story campaign.

Posted by on - Advanced Client Side Coding

Hey everyone!
I felt like it was time to redo my old event scripting tutorials and add some more context.
This guide is supposed to give you all the information you need to create your own story campaign. Moreover, if you have completely understood everything I'm going to teach you here you will be able to add your own unique gameplay features to Empire at War.
However, I am assuming that you have good knowledge of all of EaW's XML structures, so if you are still struggling with adding units, or creating
custom Galactic Conquests this guide is not for you, yet.

Anyway let's get started!

Chapter 1 - basic terminology
1.1 What is a story campaign?

A story campaign is basically a simple galactic conquest(GC). The difference between a normal GC and a story campaign are

story events that are triggered troughout the course of the GC.

1.2 What is a story event?

A story event is a piece of XML code that triggers when certain conditions are met and then performs a specified action
(for example spawning a unit, changing planet control etc.)

1.3 Plot files, Story files and LUA files

Plot files:
Plot files are XML files that create the links between the GC, the story files and LUA files.

Story files:
Story files are XML files that contain story events.

LUA files:
LUA is a scripting language that is often used as a support language in games.
So, LUA files contain LUA scripts that can support story events in GCs or during missions.
Moreover, LUA allows more control over the game, since it is not entirely limited by premade
commands like XML.


Chapter 2 - story scripting basics

2.1 GC implementation and Plot file structure

The first step to start a story campaign (or even a simple GC if you want to spawn heroes) is to
create a plot file.
So, let's create a XML file and call it "Story_Plot_Example.XML".
Now open the XML file and add the following the code:<!--?xml version="1.0" ?-->

<?xml version="1.0" ?>

		<Story_Mode_Plots>
			<Lua_Script></Lua_Script>
			<Active_Plot></Active_Plot>

		</Story_Mode_Plots>

Tag Explanation:
Lua_Script and Active_Plot hold the names of the Lua script or story files.
It is important that the Lua_Script tag is always ABOVE the Active_Plot tag, otherwise the game
will not connect the two files.
Moreover, you must NOT add the file extension ".lua" in the tag. However, the tag
requires you to add the file extension ".XML".

A complete plot file looks like this:

<?xml version="1.0" ?>

		<Story_Mode_Plots>
			<Lua_Script>Example_Script</Lua_Script> <!-- no file extension here! -->
			<Active_Plot>Story_Example.XML</Active_Plot> <!-- added .xML here! -->

		</Story_Mode_Plots>

Now we still need to create the link between the GC and your plot file. This is done by
referencing your plot file in
the GC code (found in Campaigns_Underworld_GC.xml if you aren't using a custom GC file) with
these three tags:

<Rebel_Story_Name></Rebel_Story_Name>
<Empire_Story_Name></Empire_Story_Name>
<Underworld_Story_Name></Underworld_Story_Name>

To link your plot file to one of the three main factions simply put the name of the plot file in the
tag:

<Rebel_Story_Name>Story_Plot_Example.XML</Rebel_Story_Name>

Only the three main factions can use plot files, since there are only the three tags mentioned
above. If you have created a
fourth faction you cannot use plot files and therefore no story events with it.


2.2 Story files and Events

First step: Let's create our story file "Story_Example.XML" and set up the basic XML structures:

<?xml version="1.0" ?>
<Story>


</Story>


Now that we are done with that we can talk about the story events we are going to add.
A basic story event consists of an Event Type, Event Parameters, a Reward Type and Reward
Parameters.
As XML code it looks like this:

<Event Name="Your_Event_Name">
	<Event_Type></Event_Type>
	<Event_Param1></Event_Param1>
	<Reward_Type></Reward_Type>
	<Reward_Param1></Reward_Param1>
</Event>

The Event Type and Reward Type tags contain commands that determine the general behavior of
the Event.
These commands can be looked up in Petroglyph's Story Scripting Tutorial that comes with the
map editor.

The Event Type always checks IF something has happened THEN the Reward Type performs a
specified action.
Event and Reward Parameters hold more specific details about Event and Reward Type.
Both amount and function of parameters vary from every Event and Reward Type.

Let's use an example to make things more clear:

We want to create an event that triggers when the planet Coruscant is conquered by the player
and then spawn a Calamari Cruiser
as reward.

So, first we have to pick the required Event and Reward Types. A look into the Story Scripting
Guide tells us that we should use
the Event Type "STORY_CONQUER" and the Reward Type "UNIQUE_UNIT".

STORY_CONQUER triggers when certain planet is conquered and UNIQUE_UNIT spawns a specific
unit.

<Event Name="Conquer_Coruscant">
	<Event_Type>STORY_CONQUER</Event_Type> <!-- triggers this event when a planet is conquered -->
	<Event_Param1>Coruscant</Event_Param1> <!-- limit the trigger to Coruscant -->
	<Event_Param3>FILTER_FRIENDLY_ONLY</Event_Param3> <!-- limit the trigger to the faction the plot file is attached to -->
	<Reward_Type>UNIQUE_UNIT</Reward_Type> <!-- spawns something -->
	<Reward_Param1>Calamari_Cruiser</Reward_Param1> <!-- specifies what is spawned -->
	<Reward_Param2>Coruscant</Reward_Param2> <!-- sets the spawning location -->
</Event>	

2.3 Additional Event tags

There are three more tags that can be used in Events.
Prereq, Perpetual and Branch.

Prereq is the abbreviation of Prerequisite and does exactly what it says.
In this tag you can specify the name of another Story Event that must have already been triggered,
before the event with the prereq tag can be executed.

As an example we are going to display a screen text message after the "Conquer_Coruscant" Event
that we created in the last example.

<!-- STORY_CONQUER event from before -->
<Event Name="Conquer_Coruscant"> 
	<Event_Type>STORY_CONQUER</Event_Type> 
	<Event_Param1>Coruscant</Event_Param1> 
	<Event_Param3>FILTER_FRIENDLY_ONLY</Event_Param3> 
	<Reward_Type>UNIQUE_UNIT</Reward_Type> 
	<Reward_Param1>Calamari_Cruiser</Reward_Param1> 
	<Reward_Param2>Coruscant</Reward_Param2> 
</Event>

<Event Name="Display_Text">
	<!-- STORY_TRIGGER only triggers if the event in the prereq tag has been triggered -->
	<Event_Type>STORY_TRIGGER</Event_Type> <!-- no event parameters! -->
	<Reward_Type>SCREEN_TEXT</Reward_Type> <!-- SCREEN_TEXT displays a text entry from the master text  file -->
    <Reward_Param1>TEXT_CONQUER_CORUSCANT</Reward_Param1>  
<!-- the entry that gets displayed -->
    <Reward_Param2>5</Reward_Param2> <!-- display time -->
    <Prereq>Conquer_Coruscant</Prereq> <!-- Conquer_Coruscant must have been triggered before -->
</Event>

Perpetual allows the event to trigger everytime the condition of the Event Type is met. For
example we are going to give a Calamari Cruiser to the player EVERYTIME he conquers Coruscant.

<Event Name="Conquer_Coruscant"> <!-- STORY_CONQUER event from before -->
        <Event_Type>STORY_CONQUER</Event_Type> 
	<Event_Param1>Coruscant</Event_Param1> 
	<Event_Param3>FILTER_FRIENDLY_ONLY</Event_Param3> 
	<Reward_Type>UNIQUE_UNIT</Reward_Type> 
	<Reward_Param1>Calamari_Cruiser</Reward_Param1> 
	<Reward_Param2>Coruscant</Reward_Param2>
	<Perpetual>true</Perpetual> <!-- if set to true the event will be triggered everytime when Coruscant is conquered -->
</Event>


The Branch tag allows you to group Events together, so you can easily disable or reset them at the same time.

<Event Name="Conquer_Coruscant"> 
	<Event_Type>STORY_CONQUER</Event_Type> 
	<Event_Param1>Coruscant</Event_Param1> 
	<Event_Param3>FILTER_FRIENDLY_ONLY</Event_Param3> 
	<Reward_Type>UNIQUE_UNIT</Reward_Type> 
	<Reward_Param1>Calamari_Cruiser</Reward_Param1> 
	<Reward_Param2>Coruscant</Reward_Param2> 
	<Branch>Branch_01</Branch>	<!-- Branch tag -->
	</Event>

<Event Name="Display_Text">
	<Event_Type>STORY_TRIGGER</Event_Type> 
	<Reward_Type>SCREEN_TEXT</Reward_Type> 
     <Reward_Param1>TEXT_CONQUER_CORUSCANT</Reward_Param1> 
	<Reward_Param2>5</Reward_Param2> 
	<Prereq>Conquer_Coruscant</Prereq> 
	<Branch>Branch_01</Branch>	<!-- Branch tag -->
</Event>

<Event Name="Disable_Branch_01">  <!-- this event disables both of the events above! -->
	<Event_Type>STORY_ELAPSED</Event_Type> <!-- triggers after a certain amount of time -->
	<Event_Param1>0</Event_Param1> 		<!-- in this case 0 seconds -->
	<Reward_Type>DISABLE_BRANCH</Reward_Type> <!-- disables/enables a branch -->
	<Reward_Param1>Branch_01</Reward_Param1>  <!-- which branch do we want to enable/disable -->
	<Reward_Param2>1</Reward_Param2>	  <!-- 1 disables a branch; 0 enables a branch -->
</Event>

2.4 Filters

Filters are used to limit Event and Reward Types to certain factions or to Space/Land combat.
We have used one in the "Conquer_Coruscant" event before to make it only trigger when the
player conquers Coruscant.
This is the list of filters that can be used with story events:

FILTER_NEUTRAL_ONLY
FILTER_ENEMY_ONLY
FILTER_FRIENDLY_AND_NEUTRAL
FILTER_ENEMY_AND_NEUTRAL
FILTER_FRIENDLY_AND_ENEMY
SPACE
LAND

Which filters you can use depends on the Event/Reward Type!


2.5 Common Event scripting techniques

1. Game Start
A really common thing is to set a starting event that triggers after 0 seconds to mark the starting
point of the game.
This event is then used as prereq for most following events.

<Event Name="Universal_Story_Start">
	<Event_Type>STORY_ELAPSED</Event_Type>
	<Event_Param1>0</Event_Param1>
</Event>


2. Ending Screen Text and Holo messages simultaneously
With the MULTIMEDIA reward type it is possible to display screen text and holo messages. However,
the holo messages are "videos" that don't always run exactly as long as you want to display the
text, they will most times end earlier or later. To make both disappear simultaneously both screen
text and the holo message are displayed indefinitely and then get removed by two seperate events
at the same time.

<Event Name="Display_Text_and_Holo"> <!-- this event displays a screen text and a holo video -->
	<Event_Type>STORY_TRIGGER</Event_Type>
	<Reward_Type>MULTIMEDIA</Reward_Type>
	<Reward_Param1>TEXT_EXAMPLE</Reward_Param1> <!-- text from mastertext file -->
	<Reward_Param2>-1</Reward_Param2> <!-- display time; -1 means indefinitely -->
	<Reward_Param9>Boba_Fett_Loop</Reward_Param9> <!-- name of the holo from Movies.xml -->
	<Reward_Param10>1</Reward_Param10> <!-- 1: the video gets looped indefinitely; 0: the video is only played once -->
	<Prereq>Universal_Story_Start</Prereq>
</Event>


<Event Name="Remove_Screen_Text">	<!-- this event removes the screen text -->
	<Event_Type>STORY_ELAPSED</Event_Type>	<!-- triggers 10 seconds after "Display_Text_and_Holo" (see prereq!) -->
	<Event_Param1>10</Event_Param1> 
	<Reward_Type>SCREEN_TEXT</Reward_Type> <!--  the screen text reward type can be used to display or remove text -->
	<Reward_Param1>TEXT_EXAMPLE</Reward_Param1> <!-- text to display/remove -->
	<Reward_Param4>remove</Reward_Param4> <!-- with reward param 4 set to "remove" the text from reward param 1 gets removed -->
	<Prereq>Display_Text_and_Holo</Prereq>
</Event>


<Event Name="Remove_Holo"> <!-- this event removes the holo -->
	<Event_Type>STORY_TRIGGER</Event_Type> <!-- triggers immediately after "Remove_Screen_Text" (see prereq) -->
	<Reward_Type>STOP_COMMANDBAR_MOVIE</Reward_Type> <!-- this reward type removes all kinds of movies and videos -->
	<Prereq>Remove_Screen_Text</Prereq>
</Event>


3. Starting a scripted tactical battle
LINK_TACTICAL is a reward type that allows you to initiate tactical land or space battles with
custom story plots on any planet on the GC map.

<Event Name="Initiate_Scripted_Battle">
	<Event_Type>STORY_TRIGGER</Event_Type>
	<Reward_Type>LINK_TACTICAL</Reward_Type>
	<Reward_Param1>Coruscant</Reward_Param1> <!-- the planet -->
	<Reward_Param2>SPACE</Reward_Param2> <!-- LAND or SPACE, MUST be capitalized -->
	<Reward_Param3>Rebel</Reward_Param3> <!-- attacking faction -->
	<Reward_Param4>Coruscant_Map.ted</Reward_Param4> <!-- the map you want to load for your mission -->
	<Reward_Param5>Empire</Reward_Param5> <!-- defending faction -->
 <Reward_Param7>Story_Plot_Coruscant_Tactical.xml</Reward_Param7> <!-- the story plot file -->
	<Reward_Param8>1</Reward_Param8> <!-- explained below -->
	<Reward_Param13>1</Reward_Param13> <!-- 1: displays the "Launch Battle" dialog before battle; 0: skips the dialog and launches battle without asking the player -->
	<Prereq>Universal_Story_Start</Prereq>
</Event>

Additional information:
Reward_Param7:
The plot file in reward param 7 always counts only for the attacking faction! Therefor it is hard
to create missions where the player is in the defending position.
The file also follows the same structure as the GC plot file.

Reward_Param8:
If set to 1 you are allowed to use the units you brought with you to the planet, if set to 0 you
will not be able to use them during the battle, they won't spawn at the beginning nor can you
call them in from the reinforcement pool.


4. How to determine the winner of a scripted battle
To determine the winner of a battle you need to use flags. Flags are integer variables holding a
certain start value that can be increased or decreased.
First we need to set up a flag in our GC story file by using the reward type SET_FLAG:

<Event Name="Set_Flag">
	<Event_Type>STORY_TRIGGER</Event_Type>
	<Reward_Type>SET_FLAG</Reward_Type>
	<Reward_Param1>VICTORY_CHECK</Reward_Param1>	<!-- set the name of your flag -->
	<Reward_Param2>0</Reward_Param2>		<!-- the start value of the flag -->
	<Prereq>Universal_Story_Start</Prereq>
</Event>


Now we need to add these events to the story file linked in the LINK_TACTICAL event:

<Event Name="Increment_flag">	<!-- increments the flag VICTORY_CHECK by 1 if the rebel faction wins -->
	<Event_Type>STORY_VICTORY</Event_Type>
	<Event_Param1>Rebel</Event_Param1>	<!-- checks if the rebel faction has won; assuming the player plays the rebels -->
	<Reward_Type>INCREMENT_FLAG</Reward_Type>	<!-- increments a flag -->
	<Reward_Param1>VICTORY_CHECK</Reward_Param1> 	<!-- flag to increment -->
	<Reward_Param2>1</Reward_Param2>		<!-- amount to increment -->
</Event>



Then we need to open up our GC story file again and add this event:

<Event Name="Check_Victory">
	<Event_Type>STORY_FLAG</Event_Type>	<!-- story flag checks if a flag has reached a certain value -->	
	<Event_Param1>VICTORY_CHECK<Event_Param1>	<!-- flag to check -->
	<Event_Param2>1</Event_Param2>			<!-- value -->
	<Event_Param3>EQUAL_TO</Event_Param3>		<!-- comparison method; in this case the event triggers if VICTORY_CHECK == 1 -->
</Event>

Chapter
3. - LUA Scripting

(NOTE: This chapter assumes you have basic programming knowledge, I am NOT going to teach you programming)

3.1 What can I do with LUA?

As mentioned before LUA gives you a lot more control over the game. LUA scripts are capable of
enabling/disabling AI, affect certain unit behaviors, spawn units during tactical battles, creating custom cinematics etc. So, you can see compared to XML it's a really powerful tool.

3.2 General LUA Basics and Syntax

Comments:

-- this text will be ignored!
--[[ this is a
     multiline comment]]

if statement:

 if condition then
      --block
 end

for statement:
iterative for statement:

 for i, j in pairs(my_table) do
      --block
 end

(with i being the index and j the object at index i)

numeric for statement:

for i=1,5,1 do
     --block
end

while statement:

while condition do
      --block
end

repeat statement:

repeat
     --block
until condition

functions:

function MyFunc(param)
     --block
end

unequal sign:

3 ~= 5

tables (basically arrays):

my_table = { 1, 2, 3}

some operations with tables:

determining the length of a table:
table.getn(my_table)

inserting elements into tables:
table.insert(my_table, position, value)

removing elements from a table:
table.remove(my_table, position)

accessing elements at a certain index:
first_element = my_table[1]

note: even though it's unusual LUA starts counting the index from 1, contrary to most other
programming languages starting at 0

3.3 Basic Empire at War specific LUA

Script structure:

require("PGStateMachine")
require("PGStoryMode")

function Definitions()
     DebugMessage("%s -- In Definitions", tostring(Script))


end

The function Definitions is always called first in every EaW/FoC LUA script. You cannot use any
operations on objects in this function, since it's purpose is just to set up the script.

StoryModeEvents:

require("PGStateMachine")
require("PGStoryMode")

function Definitions()
     DebugMessage("%s -- In Definitions", tostring(Script))

     StoryModeEvents = { Event1 = State1,
                         Event2 = State2
                    }


end

StoryModeEvents is a table that links events from your story file to certain LUA functions, so
called "states".
In this case the script enters State1 when Event1 is triggered and then moves on to State2
when Event2 triggers.
Upon entering State2, State1 will no longer be executed.

It is common to set Universal_Story_Start as Event1 and use State1 to set up all required
variables for the script.

States:

require("PGStateMachine")
require("PGStoryMode")

function Definitions()
     DebugMessage("%s -- In Definitions", tostring(Script))

StoryModeEvents = { Event1 = State1,
                    Event2 = State2
                  }


end


function State1(message)
      if message == OnEnter then
                --block


      elseif message == OnUpdate then
                --block

      end
end

States use the message parameter which determines how the function is run.
The block below message == OnEnter will only be executed once, while the block following
message == OnUpdate will be repeated.
Only states can use the message parameter, therefor it is important to differ between functions
and states even though they both
appear to be the same.

3.4 Useful EaW LUA commands

Finding Objects:
Find_First_Object("object")
will return the first object of the specified type.

ex.:
sd = Find_First_Object("Star_Destroyer")

Find_All_Objects_Of_Type("object")
returns a table of all objects of the specified type that are currently on the battle field

ex.:
sd_table = Find_All_Objects_Of_Type("Star_Destroyer")

FindPlanet("planet")
returns the specified planet object

ex.:
coruscant = FindPlanet("Coruscant")

Find_Player("player")
returns the specified player object
ex.:
empire = Find_Player("Empire")

Some operations on objects:

Unit objects:

object.Stop()
unit performs stop command.

object.Attack(target_obj)
unit performs attack command at target object.

object.Move_To(position)
unit performs move command to location.

object.Attack_Move(position)
unit performs attack move command.

object.Guard_Target(target_obj)
unit performs guard command on target object.

object.Suspend_Locomotor(true/false)
if set to true prevents all movement.

object.Change_Owner(player)
changes object's affiliation to given player object.

object.Take_Damage(amount)
unit takes given amount of damage.

object.Despawn()
despawns object.

object.Activate_Ability(ability, true)
activates the object's ability.

object.Get_Owner()
returns the owner of object.

object.Get_Type()
returns the unit type of object.

ex.:
sd = Find_First_Object("Star_Destroyer")

return sd.Get_Type() == Find_Object_Type("Star_Destroyer")
--returns true

object.Get_Health()
returns health of object.

object.Get_Shield()
returns shield points of object.

object.Get_Distance(target_obj)
returns distance to target_obj.

Player objects:

object.Make_Ally(player_object)
makes object an ally of player_object.
has to be used on both factions!

ex.:
rebel = Find_Player("Rebel")
empire = Find_Player("Empire")

rebel.Make_Ally(empire)
empire.Make_Ally(rebel)

object.Make_Enemy(player_object)
makes object an enemy of player_object.
has to be used on both factions!

object.Give_Money(amount)
gives the player object the give amount of money

object.Is_Human()
returns true if object is controlled by the human player.

ex.:
if rebel.Is_Human() then
--block
end



Spawning Units:

Spawn_Unit(unit_type, entry_marker, faction)
spawns a unit of the given unit_type at entry_marker for faction.

SpawnList(type_list, entry_marker, faction, allow_ai_usage, delete_after_scenario)
type_list: table containing unit types
entry_marker: spawn position
faction: faction that will own the units
allow_ai_usage: if set to true AI is able to use the units, if false not
delete_after_scenario: if true the units will be removed after the battle is over, if false
the player keeps them in GC

ex.:

unit_list = {"Star_Destroyer", "Star_Destroyer", "Victory_Destroyer"}

spawn_pos = Find_First_Object("STORY_TRIGGER_ZONE_00")

player = Find_Player("Rebel")

SpawnList(unit_list, spawn_pos, player, false, true)
--spawns 2 Star Destroyers and a Victory Destroyer at STORY_TRIGGER_ZONE_00 for the
Rebels

ReinforceList(type_list, entry_marker, faction, allow_ai_usage, delete_after_scenario)
for parameters see SpawnList
ReinforceList will call in the given unit list from hyperspace

NOTE: It is common to place markers(from Markers.XML) on your tactical map and use them
as spawning locations.

Other:
Sleep(x)
function is interrupted for x seconds.

GameRandom(min, max)
generates a random number within the given borders.

Create_Thread(function)
creates a thread that runs seperately from the current function.


These are only a few commands that can be used. There are many more and I am not going to
list and explain all of them here.
I suggest you study the original Empire at War campaign scripts(they are installed with the
Empire at War map editor; NOT the FoC map editor!)

3.5 Triggering an event from a LUA script

The command Story_Event("MY_EVENT") allows you to trigger a story event from your LUA script.
However, the event hast to use the event type STORY_AI_NOTIFICATION in order for that to work.

Example:

in your LUA:
--trigger event
Story_Event("MY_EVENT")

in your story file:

<Event Name="EventName">
	<Event_Type>STORY_AI_NOTIFICATION</Event_Type>
        <Event_Param2>MY_EVENT</Event_Param2>
</Event>

As you can see Event_Param2 in the event is the same as the parameter given to the Story_Event
command.

This is it for now. I hope it gives people some insight in event and especially LUA scripting.

P.S.: I might expand this tutorial with a few more functions in the future.<!--?xml version="1.0" ?--><!-- no file extension here! --><!-- added .xML here! --><!--?xml version="1.0" ?--><!-- triggers this event when a planet is conquered --><!-- limit the trigger to Coruscant --><!-- limit the trigger to the faction the plot file is attached to --><!-- spawns something --><!-- specifies what is spawned --><!-- sets the spawning location --><!-- STORY_CONQUER event from before --><!-- STORY_TRIGGER only triggers if the event in the prereq tag has been triggered --><!-- no event parameters! --><!-- SCREEN_TEXT displays a text entry from the master text file --><!-- the entry that gets displayed --><!-- display time --><!-- Conquer_Coruscant must have been triggered before --><!-- STORY_CONQUER event from before --><!-- if set to true the event will be triggered everytime when Coruscant is conquered --><!-- Branch tag --><!-- Branch tag --><!-- this event disables both of the events above! --><!-- triggers after a certain amount of time --><!-- in this case 0 seconds --><!-- disables/enables a branch --><!-- which branch do we want to enable/disable --><!-- 1 disables a branch; 0 enables a branch --><!-- this event displays a screen text and a holo video --><!-- text from mastertext file --><!-- display time; -1 means indefinitely --><!-- name of the holo from Movies.xml --><!-- 1: the video gets looped indefinitely; 0: the video is only played once --><!-- this event removes the screen text --><!-- triggers 10 seconds after "Display_Text_and_Holo" (see prereq!) --><!-- the screen text reward type can be used to display or remove text --><!-- text to display/remove --><!-- with reward param 4 set to "remove" the text from reward param 1 gets removed --><!-- this event removes the holo --><!-- triggers immediately after "Remove_Screen_Text" (see prereq) --><!-- this reward type removes all kinds of movies and videos --><!-- the planet --><!-- LAND or SPACE, MUST be capitalized --><!-- attacking faction --><!-- the map you want to load for your mission --><!-- defending faction --><!-- the story plot file --><!-- explained below --><!-- 1: displays the "Launch Battle" dialog before battle; 0: skips the dialog and launches

battle without asking the player --><!-- set the name of your flag --><!-- the start value of the flag --><!-- increments the flag VICTORY_CHECK by 1 if the rebel faction wins --><!-- checks if the rebel faction has won; assuming the player plays the rebels --><!-- increments a flag --><!-- flag to increment --><!-- amount to increment --><!-- story flag checks if a flag has reached a certain value --><!-- flag to check --><!-- value --><!-- comparison method; in this case the event triggers if VICTORY_CHECK == 1 -->

Post comment Comments
Firespray31
Firespray31 - - 114 comments

A W E S O M E !
Thanks for putting your freetime in it to explain it in detail!

Reply Good karma Bad karma+5 votes
AnakinRaW
AnakinRaW - - 1,191 comments

good stuff pox. this will give people a little overview how to create a story. it is still a bit basic but in combination with your event-tool and the documents comming with the map editor this is a good tutorial

Reply Good karma Bad karma+2 votes
Bobthetomato
Bobthetomato - - 4 comments

Help Me!!! can you help me mod empire at war with Republic at War v1.1.5

Reply Good karma Bad karma0 votes
1Lincoln45
1Lincoln45 - - 4 comments

Hello I have a question, how do you change the affiliation of a planet in GC? example i want to change Anaxes starting affiliation from rebel to empire, any suggestions? point me in the right direction?

Reply Good karma Bad karma+2 votes
Darkymodding
Darkymodding - - 56 comments

Nice tutorial. Can anyone please make a tutorial on PC AI, in skirmish or/and Conquest mode? There is not a single tutorial on that :(

Reply Good karma Bad karma+1 vote
Tom_the_Amaran
Tom_the_Amaran - - 8 comments

Hy, I need some help. How can I add a new intro text in the mission holocron?

Reply Good karma Bad karma+1 vote
jgardu-o777
jgardu-o777 - - 11 comments

Can someone please help me?? I wan to to make the game harder, Is there a way that the I.A. chooses better ships, so that it’s harder to win??

Reply Good karma Bad karma+1 vote
Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: