![]() |
|
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Disclaimer: Neither Paradox Entertainment not I am
responsible for any crash & burn experiences from meddling with the
EU2 files. Always take backups before you alter the files installed by
EU2. Have fun Things marked like this are triggers or commands that are somewhat buggy in the latest patch released (1.09), or not working at all. Important notice: You should know that altering ANY of the files in the EU2 folders will cause errors when applying patches. Please keep a "clean" copy of the files for use when patching. To go back to the Table of Content just find the nearest box in the left margin marked ToC (just like the one to the left here.). Content1. Introduction. 2. The Event Files 3 Event Structure Diplomatic conditions | Religious & cultural conditions | Conditions based on leaders or monarchs | Conditions based on countries and provinces | Conditions based on domestic affairs 3.3 Random Diplomatic commands| Religious & cultural commands| Commands for leaders or monarchs | Commands for countries and provinces| Domestic affairs – politics, research & finance | Domestic affairs – stability & revolts| Domestic affairs – buildings | Different unit commands | Other commands Appendix A - Continents, regions and areas Appendix B - Religions and Cultures 1. IntroductionIn EU 2, it is possible to implement complicated events by using a custom script language. The events can be set to happen for a certain country at or between certain dates, with optional condition triggers. 1.1 Events and alternativesMost events have two or more alternatives. The basic convention is to place the historically chosen alternative as the first one. The first choice will be selected by the AI with a 85% probability for each event. This is to ensure that the AI acts as "correct" as possible. (after all, this is a history game). Some events deal with countries being incorporated in other. The important thing to remember here is to always leave a backdoor for a human player! Imagin playing away, doing fine, just to suddenly get the message "you got annexed"... What you do is to include a event for the country going to be annexed, where the AI with about 85% probability (see here) will acept, but the human player will refuse. A good example of this is the "Succession in Luxembourg"-event, where Burgundy in most games inherit Luxembourg. This is the event for Lux:
id = 3605
trigger = {
exists = BUR
atwar = no
}
random = no
country = LUX
name = "EVENTNAME3605"
desc = "EVENTHIST3605"
style = 1
date = { day = 1 month = august year = 1451 }
offset = 0
deathdate = { day = 2 month = august year = 1500 }
action_a ={ #Let us be a part of Great Burgundy#
name = "ACTIONNAME3605A"
command = { type = trigger which = 3598 }
}
action_b ={ #Let the Burgundian monarch become our Duke#
name = "ACTIONNAME3605B"
command = { type = trigger which = 3599 }
command = { type = dynastic which = BUR }
command = { type = alliance which = BUR }
command = { type = stability value = 3 }
}
action_c ={ #Let us elect a local Count as Duke#
name = "ACTIONNAME3605C"
command = { type = trigger which = 3600 }
command = { type = stability value = -3 }
command = { type = revolt which = -1 }
}
}
The first action trigger the inherit event for Burgundy. The second one trigger a vassalage event for Burgundy, where Luxembourg becomes vassals of Burgundy. The last option is a clear break and trigger a "retaliation"-event for Burgundy where they get a CB on Luxembourg. 1.2 Random/nonspecific provincesYou can target random provinces in the country receiving the event by replacing the province number with '-1', '-2', '-3' or '-4'. -1 is one random province from a set depending on command (see below) and -2 is your capital. -3 can be used to make several things happend in the same random province. Example of event commands using these random selectors:
command = { type = INF which = -1 value = 8000 }
command = { type = CAV which = -3 value = 6000 }
command = { type = ART which = -3 value = 20 }
The commands above will select a random province, put 8000 infantry there, and proceed wth 6000 cavalry and 20 artillery in the same random province. Province '-4' is used to target events to colonies, or to be more specific: A province with 700+ population on the American Continent. An example of this is the "Colonial defense"-events for England: action_b ={ #Invest in expensive Perimeter Defense#
name = "ACTIONNAME3343B"
command = { type = sleepevent which = 3346 }
command = { type = treasury value = -600 }
command = { type = fortress which = -4 value = 1 }
command = { type = fortress which = -4 value = 1 }
}
Subsets of provinces used for random targetting:
1.3 Random/nonspecific countriesAs for provinces above, you can also target random countries. This is dome by replacing the country tag with '-1' or '-6'. -1 is a random country. -6 is the Holy Roman Emperor.
2. The Event FilesEvents are separated into major and flavour events. Although they are scripted exactly the same way, the convention is to place minor events, such as cultural personalities, in the flavour event files, whereas major events go in the major event files. This is just a convention; the event files can be called anything as long as they are included in db\events.txt (whose name is also a convention - it is just included in all of the scenario .EUG files). Random events are added in special files. 2.1 Major event pathMajor events should be scripted in the files called: db\events\major_xxx.txt (Where XXX is the country tag.) 2.2 Flavour event pathFlavour events should be scripted in the files called: db\events\flavor_xxx.txt (Where XXX is the country tag.) 2.3 Random EventsThe random events reside in two files: db\events\randomevents.txt and db\events\randomreligiousevents.txt 2.4 Huge eventsSome events affect all countries in the world. Examples are the reformation and the Treaty of Tortesillas. These are stored in: db\events\hugeevents.txt and db\events\religiousevents.txt 2.5 Event textsThe texts for the events reside in the file called: config\text.csv This is a comma-separated resource file containing all the in-game text. You may also insert the texts directly into the events between the ""s. 3 Event StructureExample:
event = {
id = 3704
trigger = {}
random = no
country = CHI
name = "EVENTNAME3704"
desc = "EVENTHIST3704"
style = 1
date = { day = 1 month = october year = 1773 }
offset = 150
deathdate = { day = 2 month = may year = 1820 }
action_a ={
name = "ACTIONNAME3704A"
command = { }
command = { }
command = { }
}
action_b ={
name = "ACTIONNAME3704B"
command = { }
command = { }
command = { }
}
action_c ={
name = "ACTIONNAME3704C"
command = { }
command = { }
command = { }
}
action_d ={
name = "ACTIONNAME3704D"
command = { }
command = { }
command = { }
}
}
This is an empty event that will do nothing, but it will happen to China sometime from Oct 1, 1773 and 150 days forward. We will now go through each of the commands outlined in the example, in order. 3.1 IdEvery event in the game must have a unique id. It is
very important that there are no id conflicts. Event ids 0-100000 are
reserved for Paradox use. The allowed range for add-on ids is 100000 -
4294967296. Yup, that's a looot of events Example : id = 31001 3.2 TriggerThe trigger condition statement is optional. If left out the event will happen on the dates specified, or if directly triggered by another event. Example: trigger = {
atwar = yes
}
It is also possible to set several conditions for the trigger. Example : trigger = {
exists = TUR
event = 3549
atwar = no
}
In this case, all three conditions must be true; the default Boolean operator is AND. However, it is also possible to use OR and NOT. Example: trigger = {
OR = {
owned = { province = 110 data = -1 }
owned = { province = 86 data = -1 }
owned = { province = 47 data = -1 }
}
NOT = {
event = 3301
}
}
This trigger is true if province 110 OR 86 OR 47 is owned by the country this event affects AND event 3301 has NOT happened. If more than one trigger is listed within a NOT statement, the event will only trigger if ALL of the listed conditions are untrue. Example: trigger = {
NOT = {
religion = catholic
religion = counterreformed
}
}
This event will trigger if the country are of any other religion than the two listed; if ANY of them is true, then the not is false. 3.2.1 Trigger Conditionsai = yes / no Checks if the country receiving the event is AI controlled or not. event = xxxx Checks if event with id xxxx has happened. flag = flag name Checks if the country flag with the specified name is set. year = x Checks if the year is x or later. This is equivalent to using the date statement. See section 3.8. Diplomatic conditions:alliance = { country = aaa country = bbb } Checks if aaa and bbb are in the same military alliance. atwar = yes / no Checks if the country is at war. dynastic = { country = aaa country = bbb } Checks if aaa and bbb have a royal marriage. vassal = { country =aaa country = bbb } Checks if country bbb is a vassal of aaa. war = { country = aaa country = bbb } Checks if country aaa is at war with country bbb. Religious & cultural conditions:provinceculture = { prov = x data = y } Is true if province x have culture y. provincereligion = { province = x data = y } Is true if province x have religion y. religion = catholic / counterreform / protestant / reformed / orthodox / sunni / shiite / confucianism / buddhism / hinduism / pagan Checks the state religion of the country. Conditions based on leaders or monarchs:leader = xxxx Is true if leader with id xxxx is alive in any country. monarch = xxxx Is true if monarch with id xxxx is ruling the country receiving the event. Conditions based on countries and provinces:badboy = x Is true if badboy is x or higher. continent = europe / america / asia / africa / oceania Checks on which continent the capital of the country getting the event lies. control = { province = x data = aaa } Is true if province x is controlled by country aaa (if data = -1 then it is for the country receiving the event) core = { province = x data = aaa } Is true if province x is a core province of country aaa (if data = -1 then it is for the country receiving the event). cot = x Is true if there is a centre of trade in province x. countrysize = x Is true if the receiving country have x provinces or more. Cities and colonies are counted. From 1.07 TPs no longer count. discovered = x Is true if province x has been discovered by the country receiving the event. elector = yes / no Checks if the country receiving the event is an Elector of the HRE or not. emperor = yes / no Checks if the ruler of the country receiving the event is Holy Roman Emperor or not. exists = aaa Is true if country aaa exists. (Where aaa is the three letter tag of the country.) neighbour = x Is true if the receiving country is neighbour with country x. owned = { province = x data = aaa } Is true if province x is owned by country aaa (if data = -1 then it is for the country receiving the event) relation = { country = aaa data = x } Is true if the receiving country have relation x or better with country aaa. Conditions based on domestic affairs:domestic = { type = aristocracy / centralization / innovative / mercantilism / land / offensive / quality / serfdom value = x } Checks if a domestic policy slider is at value x or higher. (Use NOT to negate.) infra = x Checks if the infra tech level is at x or higher. (0 to 10) land = x Checks if the land tech level is at x or higher. (0 to 60) naval = x Checks if the naval tech level is at x or higher. (0 to 60) stability = x Checks if stability is at x or higher. (-3 to 3) trade = x Checks if the trade tech level is at x or higher. (0 to 10) 3.3 RandomThis directive tells whether the event should be random or not. For country events, this is usually no. Example: random = no Random events are the only event that can happend more than once. Date, offset and deathdate are not taken in account in random events. Any start and final years has to be set using the year trigger. Random events can be nation specific. A random event cannot trigger another event. 3.4 CountryThis statement tells which country the event should affect. This must be set to a valid country tag. If this statement is left out, the event will happen for all countries! Example: country = CHI The country can be omitted if the event is a random event (see 3.3) or if you have other triggers deciding the country affected, like owned or control (see 3.5 below). If you have an event that is not specified directed to a country or province, this will trigger for the human player(s) in the game once the triggers are valid for any country. 3.5 ProvinceAn alternative to using the country statement, this means that the event should happen for whoever owning a certain province. Example: province= 357 This event will happend, if other triggers are met, to the country owning province 357. 3.6 NameThis specifies the name of the event that appears in the event window. This is language specific and thus kept in the file text.csv. Example: name = "EVENTNAME3704" The eventname can also be inserted right into the event file. Note: This will not allow translation! Example: name = "The peasants are revolting!" A new feature in 1.06 is the possibility to "stealth" events happending to the AI. You do this by using name = "AI_EVENT". This will cause the event to not show in the game log as it happends. It's effects might though... The feature is tailored for use together with the new ai = yes/no trigger (above). 3.7 DescThis is the main event text that appears in the event window. This is language specific and thus kept in the file text.csv. Example: desc = "EVENTHIST3704" The eventdescription can also be inserted right into the event file. Note: This will not allow translation! Example: desc = "Upset by the religious intolerance of the government the peasants are rallying to the rebel flag!" 3.8 StyleThis specifies the look of the event window depending on the time period when the event appears. (1=15th century, 5=19th.) Example: style = 1 Note: Style isn't used in EU2. 3.9 DateThis is the date when the event may first happen. If this directive is used alone (no offset), the event will happen on this exact date if triggers are valid. If triggers are not valid the event will never happend! Example:
date = { day = 1 month = october year = 1773 }
3.10 OffsetThis is a random offset in days, always used in conjunction with the date statement. It means that the event may happen on any of these days from the time specified in date. If the event has triggers it will start searching for triggers on this date. Note: After the first trigger check after a random number of days the triggers are checked again at intervalls defined by the offset. This means that for an 'offset = 360' the event will first check the triggers on a random day the first year after the set date, and then once every year! Example: offset = 30 In this case the event will start checking for triggers on a random date within 30 days from the date specified. If no valid triggers are found on that date it will check again each month (30 days) until triggers are met, or until event deathdate is reached. If a game is saved/reloaded in the middle of an offset, the event is checked at reload (which explains why you so often get certain events on reload). 3.11 DeathdateThis is the deadline of an event, after which it may no longer be triggered. The deathdate statement is only useful if the event has a trigger condition. Events without a deathdate will fire if other triggers are valid on the date specified by the date/offset parameters. If triggers are not valid on that date the event will never fire. If you want the event to keep looking for triggers you need to define a deathdate. Example:
deathdate = { day = 1 month = october year = 1820 }
3.12 ActionThe action statements are the responses to the event offered to the player. Sometimes it is appropriate with a single one, "Ok", other times there may be up to four different responses. Action statements always contain a name statement and any number of command statements. Example:
action_a ={ #Ok
name = "ACTIONNAME3704A"
command = { }
}
This is a simple ok action. The name statement points to a text in text.csv. Even an action that does nothing must contain a command statement. As for name and description the actionname can be entered right into the event: Example:
action_a ={ #Ok
name = "Crush the rebellion!"
command = { }
}
When the AI get an event there is always the largest chance it will select the first action, action_a. In an event with two options the AI will select action_a most of the time (se below). This means that you should always put the historic choice as the first one. 3.12.1 Exact AI event selection percentagesAs mention above there is about 85% chance for the AI selecting the first choice in an event. The exact percentages are:
3.12.2 CommandsSome general rules and problems with commands:
Not that if all commands in an action are ignored, the button will not show. If all commands in all events are ignored, the event will not appear at all. The list of valid commands: Diplomatic commands:command = { type = alliance which = aaa } Adds nation with tag aaa to military alliance of the country affected by the event. Note that this will only happend is: The country receiving the event is alliance leader or unallied and country aaa is unallied. command = { type = breakdynastic which = aaa } Is supposed to break royal marriage with country aaa. Appears to not work at all. command = { type = breakvassal which = aaa } Break vassalage with country aaa. This command does not work if invoked in an events for the liege country or if the vassalage was created after the game was last loaded from save. Also note that if a vassalage is broken in event, a new vassalisation for that tag cannot be created by an event triggered from that same event. command = { type = casusbelli which = x value = y } Gain casus belli against country x for y months. command = { type = dynastic which = aaa } Creates a royal marriage to nation with tag aaa. command = { type = independence which = aaa } Create country aaa as a vassal. This will release a country and give them all the provinces specified in revolt.txt as "minimum" that the country recieving the event owns. command = { type = inherit which = aaa } Inherit country with tag aaa (political annexation). Each inherited province gives 0.25 badboy point. command = { type = relation which = aaa value = x } Modify diplomatic relation with country aaa with value x. command = { type = vassal which = aaa } Make country aaa a vassal of teh receiving country. Note: This will create a vassalage whatever situation The scripter should take precautions (triggers etc) to avoid use when countries are at war, or to avoid a country becoming a vassal of it's own vassal... command = { type = war which = aaa } Declares war on country aaa Religion & culture commands:command = { type = conversion which = x } Religion in province in province x (-1 is a random province, -2 is the capital) changes to the state religion. command = { type = heretic which = x } Religion in province x (-1 is a random province, -2 is the capital) changes from the state religion. command = { type = provincereligion which = x value = catholic / counterreform / protestant / reformed / orthodox / sunni / shiite / confucianism / buddhism / hinduism / pagan } Changes the province religion in province x (-1 is a random province, -2 is the capital.) command = { type = religion which = catholic / counterreform / protestant / reformed / orthodox / sunni / shiite / confucianism / buddhism / hinduism / pagan } Changes the state religion. Has no other effects. command = { type = religiousrevolt which = x } Starts a religious revolt in province x. (-1 is a random province, -2 is the capital.) command = { type = add_countryculture which = culture_name } Add culture_name to the state cultures. For a list of valid culture names see Appendix B. command = { type = remove_countryculture which = culture_name } Remove culture_name from the state cultures. For a list of valid culture names see Appendix B. command = { type = provinceculture which = x value = culture_name } Changes the province culture in province x (-1 is a random province, -2 is the capital.) For valid names, look in db\province.csv (culture_name = -1 means the state culture.) For a list of valid culture names see Appendix B. Commands for leaders or monarchs:command = { type = conquistador which = x } Have a conquistador appear in province x (-1 is a random province, -2 is the capital.) command = { type = explorer which = x } Have an explorer appear in province x (-1 is a random province, -2 is the capital.) command = { type = leader which = x } Leader with id x becomes active. Same as wakeleader. command = { type = monarch which = x } Monarch with id x becomes ruler. Same as wakemonarch. command = { type = sleepleader which = x } Deactivates (makes dormant) leader with id x. This will also work on leaders for other countries. Note: Does not work if the leader is living. command = { type = sleepmonarch which = x } Deactivates (makes dormant) monarch with id x. Note: Does not work if the monarch is living. command = { type = wakeleader which = x } Activate leader with id x. (No longer dormant.) command = { type = wakemonarch which = x } Activate monarch with id x. (No longer dormant.) command = { type = ADM which = x value = y } Modifies the ADM value of the regent with x for y months. (Yes, a little backwards syntax.) Note: When changed by -1 the effect of this command is not shown in the event effect text or mouseover. command = { type = MIL which = x value = y } Modifies the MIL value of the regent with x for y months. (Yes, a little backwards syntax.) Note: When changed by -1 the effect of this command is not shown in the event effect text or mouseover. command = { type = DIP which = x value = y } Modifies the DIP value of the regent with x for y months. (Yes, a little backwards syntax.) Note: When changed by -1 the effect of this command is not shown in the event effect text or mouseover. Commands for countries and provinces:command = { type = addcore which = x } Make x a core province. command = { type = badboy value = x } Changes the badboy value with x. command = { type = capital which = x } Move capital to province x. command = { type = cot which = x } Add a centre of trade to province x. command = { type = country which = aaa } Change tag to aaa. Used for example when Castile or Aragon becomes Spain or when Russia forms. command = { type = manpower value = x } Add x to manpower pool. (Does not raise the maximum manpower-use provincemanpower for that.) May also be negative. command = { type = mine which = x value = y } Adds y production to mine in province x. This work only if province x produces gold. command = { type = natives which = x value = y } Change the aggression level of any natives in province x to value y (range 0 (none) to 9 (furious)). command = { type = population which = x value = y } Modify population level in province x (-1 is a random province, -2 is the capital) with y. command = { type = province_revoltrisk which = x value = y } Modify the revolt risk in province x with value y indefinitely, until lowered by another event, or until the province is in the hands of another nation - i.e. revoltrisk is unaltered if the nation change tags. Province revoltrisk can not be negative - no matter mow much you lower it, it will stop at zero. command = { type = provincemanpower which = x value = y } Modify the manpower in province x (-1 is a random province, -2 is the capital) with y. command = { type = provincetax which = x value = y } Modify the province tax in province x (-1 is a random province, -2 is the capital) with y. Be aware that the province tax also affects the supply value of the province. command = { type = removecore which = x } Remove x as core province. command = { type = secedeprovince which = aaa value = x } Secede province x to country aaa. Note: If a country's capital is ceded this way, the game will crash. command = { type = technology which = latin /torthodox/ muslim/ china/ exotic } Changes tech-group for a country. Note the inconsistency with the orthodox tech. group. Domestic affairs – politics, research & finance:command = { type = domestic which = aristocracy / centralization / innovative / mercantilism / land / offensive / quality / serfdom value = x } Modifies a domestic policy slider with value x. command = { type = infra value = x } Invests x gold in infra research. May also be negative. command = { type = trade value = x } Invests x gold in trade research. May also be negative. command = { type = land value = x } Invests x gold in land research. May also be negative. command = { type = naval value = x } Invests x gold in naval research. May also be negative. command = { type = treasury value = x } Adds x gold to the treasury. May also be negative. command = { type = cash value = x } Adds x gold to the treasury. May also be negative. command = { type = loansize which = x } Adjust the size of the state loans. command = { type = inflation value = x } Changes inflation rate with x percents. May also be negative. Domestic affairs – stability & revolts:command = { type = stability value = x } Adds x to the stability. May also be negative. command = { type = revolt which = x } Starts a revolt in province x. (-1 is a random province, -2 is the capital.) There is no guarantee that a fort in the province will fall into rebel hands. command = { type = colonialrevolt which = x } Starts a colonial revolt in province x. (-1 is a random colonial province.) command = { type = revoltrisk which = x value = y } Raises the nation's revoltrisk for x months with y percents. May also be negative. If which is omitted, default is 12 months. Domestic affairs – buildings:command = { type = fortress which = x value = y } Modify fortress level in province x (-1 is a random province, -2 is the capital etc.) with y. The fortress command is not limited by landtech. Note: Use of fortress and population commands in same action and for the same province: For fortifications increase, population (increase or decrease) command must be placed before the fortress command. For fortifications decrease, population (increase or decrease) command must be placed after the fortress command. Otherwise, the fortress command won't work. command = { type = gainbuilding which = x value = shipyard / barrack / bailiff / courthouse / cityrights } Gain a building in province x (-1 is a random province, -2 is the capital etc.) command = { type = losebuilding which = x value = shipyard / barrack / bailiff / courthouse } Lose a building in province x (-1 is a random province, -2 is the capital etc.) command = { type = gainmanufactory which = x value = navalequipment / luxury / goods / refinery / weapons } Gain a manufactory in province x (-1 is a random province, -2 is the capitaletc.) command = { type = losemanufactory which = x } Lose a manufactory in province x (-1 is a random province, -2 is the capital etc.) Different unit commands:command = { type = diplomats value = x } Adds x diplomats. May also be negative. command = { type = colonists value = x } Adds x colonists. May also be negative. command = { type = merchants value = x } Adds x merchants. May also be negative. command = { type = missionaries value = x } Adds x missionaries. May also be negative. command = { type = desertion which = x value = y } Have y men desert in province x (-1 is a random province, -2 is the capital.) command = { type = INF which = x value = y } Add y infantry in province x (-1 is a random province, -2 is the capital). command = { type = CAV which = x value = y } Add y cavalry in province x (-1 is a random province, -2 is the capital). command = { type = ART which = x value = y } Add y artillery in province x (-1 is a random province, -2 is the capital). command = { type = warships which = x value = y } Add y warships in province x (-1 is a random province, -2 is the capital). command = { type = galleys which = x value = y } Add y galleys in province x (-1 is a random province, -2 is the capital). command = { type = transports which = x value = y } Add y cargo ships in province x (-1 is a random province, -2 is the capital). Other commands:command = { type = ai which = "filename.ai" } Change the AI definition file used for the receiving country. The new AI file must be located in the AI folder with the other files - no path is needed in the event. command = { type = clrflag which = [flag name] } Clears the specified user country flag (flag is set to 'no'). command = { type = flag which = x } Set game flag x to true. command = { type = flagname which = "x" } Using this command, you can change the graphic flag and shield of the country receiving the event. It is important that the new graphic files are named flag_TAGx.bmp, shield_TAGx.bmp, shieldsilver_TAGx.bmp and smallshield_TAGx.bmp. All four files must be present. To change back, use 'which = ""'. command = { type = removecot which = x } Removes the CoT in province x, even if x is not a province of the country receiving the event. command = { type = setflag which = [flag name] } Sets the specified user country flag (flag is set to 'yes'). The flag can be triggered upon with the flag trigger. command = { type = trigger which = xxxx } Triggers event xxxx immediately if the event's triggering conditions are met. command = { type = sleepevent which = xxxx } Prevents event xxxx from happending. command = { type = vp value = x } Adjust victory points with x
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Europa
Universalis and Europa Universalis II are registred trademarks of Paradox
Interactive. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||