• We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.

EU4 - Development Diary - 18th of April 2017

Hello everyone and welcome to this Development Diary! For those that don’t know me, I am Trin Tragula, Content Designer of Europa Universalis, and today I will be the one writing the Tuesday Development Diary. As a Content Designer I am the one who plans and writes the events, decisions, maps, and similar things for the game. The subject of this diary will be the added content in the 1.21 “Hungary” Patch.

load_19.jpg


Background:

Hungary is in many ways a vital country to the period the game depicts. It is at the center of many events that came right before our start date, and these events are also the reason we start the game on the 11th of November in 1444.

As the only remaining major kingdom between the Ottomans and the larger Christian world Hungary nonetheless thrived in the 15th century, only to be reduced to a battleground for stronger powers after the defeat at Mohacs and up to the end of the era our game covers.

As you know, in the years leading up to 1444 Hungary has just emerged from a civil war between the supporters of the posthumous son of their last king, Ladislaus von Habsburg, and the dynamic young king of Poland, Wladyslaw Jagiellon. Wladyslaw’s supporters won this conflict and it is under Jagiellon leadership that Hungary, Bohemia, Poland, Lithuania and many others invaded the Ottoman Empire in 1443. This invasion was abruptly ended at Varna on the 10th of November in 1444 with the death of Wladyslaw and many others.

When the game opens Europe is recovering from the shocking defeat at Varna. Hungary is once again without king and powerful forces are aligning for or against the boy King, Ladislaus the Posthumous.

In Hungary patch we’ve tried to better capture the quite complicated situation of 1444 in Central and Southeastern Europe (one I have just barely touched in the short lines above). In order to do this we have both added new content and reworked some the old content related to Hungary, Austria and Bohemia.


Hungary:

Hungary has been the main focus of this patch and has received about 20 new events as well as a rework of a number of their old existing events.

eu4_292.jpg


Map Changes:

Hoping to both make Hungary more influential in the early game and to make the region more realistic and interesting to wage war in we have added a small number of provinces to Hungary in the 1.21 patch.
  1. Slovakia/Upper Hungary has been redrawn and the new province of Trencin now guards the northern border of the Kingdom. Development and trade goods of the area in general has been revised a bit to better reflect reality.

  2. The province of Fejér has been added between Sopron and Pest. The Hungarian capital in Pest is also now an inland center of trade, which both allows Hungary itself better control over the flow of trade, and makes the conquest of Pest more important for any invader.

  3. In the southern part of the kingdom we have added what was perhaps the most important of all Hungarian fortresses in 1444, Belgrade. The Hungarian kingdom had spent no small amount of energy acquiring the banate of Belgrade prior to our start date and its position at the confluence of the Sava and the Danube will make it a key province to control in the region from now on.

Events:

Hungary has received new events as well as reworks of their existing events. This is a broad (but not quite complete) overview of what we have added and why:

  • Early events will focus on recreating the rise of the Hunyadi family, allowing the player to partake in the Corvinian renaissance, with good advisors, opportunities to increase the wealth of the country and kick-starting institution spread in Budapest.
  • One of the more unique things about Hungary in this period was the so called ‘Black Army’, a very expensive, permanent, mercenary force that on numerous occasions was able to beat numerically superior armies. In the game you will be able to create the Black Army, allowing you to hire much stronger mercenaries at the cost of reducing your force limit and higher maintenance costs. Your nobility will remain skeptical of this mercenary force and will ask new kings to abolish it. The mercenaries may also mutiny if they don’t feel they are paid enough. If you are willing to pay the price however, you can enjoy mercenaries at +10% discipline up to the age of Reformation.
  • If Hussites are in power in Bohemia the Catholic estates can now turn to Hungary for protection. Should you help your brothers of faith they may offer you to be their king, giving you permanent claims on parts of their country.
  • There are a number of events dealing with the advance of the Turks, the establishment of a fortified frontier and the resettling of fleeing Balkan Christians within these lands.
  • The old “Advance of the Turks” event has been expanded upon and given follow-up events relating to the election of two different Hungarian monarchs, one with Austrian, western Hungarian and Croatian support and one with the support of Eastern Hungary. This could happen in a situation when the kingdom has been soundly defeated by the Ottomans.
  • There are now events dealing with the other peoples in the Hungarian realm such as Slovaks, Croats and Vlachs/Romanians and the development of their respective national movements as the game progresses.
  • The spread of the Protestant and Reformed faiths in the Hungarian realm now has dedicated events allowing the Hungarian player to encourage the reformation or invite the jesuits to help them work against it.
  • While the Hungarian Kingdom in our timeline was divided between Turks, Austrians and the Principality of Transylvania from the mid 16th century, we have added events based on the fate of the Hungarian people during these years to provide a continued interesting experience throughout the timeline.
Bohemia:

eu4_291.jpg


Map Changes:

In order to add more depth of maneuver and historical detail we have now split the province of Moravia into Brno and Olomouc and added a Moravia as a revolter country.

In Silesia we have added the province of Leignitz/Legnica and revised starting development values and trade goods a bit to better represent the importance of this area.


Events:
While the Hussite wars are a thing of the past in 1444, the Bohemian people are still largely heretics to Catholic Europe. Ladislaus the Posthumous is the presumed King of Bohemia as well as Hungary but the de facto government of Bohemia lies with the Hussite factions under George of Poděbrady.

Even prior to Hungary patch you could choose to support the Catholic or Hussite party but now this choice has a bigger impact than it used to:

With the Hussites in power you will now be less liked in Europe but enjoy stronger support internally. You will benefit from the tactical experience of the Hussite soldiers but the Catholic estates may offer the Bohemian crown to a foreign monarch willing to defend them.

Unless the pope acts against the continued heresy in Bohemia a strong Hussite movement could also make the Reformation trigger earlier than it otherwise would.

Minor Additions:

The Vistula Spit:

Prior to 1.21 Königsberg and Danzig have been connected by a strait at the end of the Vistula lagoon. This had the unfortunate side effect that the fort in Königsberg could prevent movement between Danzig and Marienburg. Something that was impossible to get around without a fleet. The strait was also unhistorical as by 1444 the Vistula spit was no longer open and the ports inside the Vistula lagoon did not have access to the Baltic sea.

In 1.21 the Vistula spit has been extended all the way to Königsberg, this means that you can now get to the fort there (though it will count as crossing a river) and that Marienburg and Ermland now start without ports.


Austria:

Austria has had a number of their existing events modified and can now also get new events relating to Hungary if they should come to control the country. Most importantly the advance of the Turks event now gives Austria permanent claims on Royal Hungary and Hungary itself is more likely to elect Hunyadi candidates to their throne, severely hurting relations with the Austrian monarchy.


Serbia:

Serbia was not the main focus of this patch but together with the addition of the province of Belgrade we have added a decision for the Serbian state to make Belgrade their capital if they are able to retake it from the Hungarians.

Moddability:
That is not all that is new in the Hungary patch however. I will now leave the word to @Gnivom who, aside from programming the AI, has also been working on improving the moddability:

variable_arithmetic_trigger

Ever wished you could add or multiply values in triggers? You now can! Sort of, at least. The variable_arithmetic_trigger (VAT) allows you to use export_to_variable to a local variable, that only exists within the current trigger and its children. The following effects have been modified to be usable within the VAT (as well as, as mentioned, export_to_variable):
  • set_variable

  • change_variable

  • subtract_variable

  • multiply_variable

  • divide_variable
When used within a VAT, they can only modify variables created in a VAT, as triggers are not allowed to modify the game state. The triggers that evaluate variables can also evaluate local variables.

A VAT has the following members:
  • 1 custom_tooltip: It would be too complicated to generate a tooltip automatically, so all VATs need a custom tooltip.

  • Any number of export_to_variable

  • Any number of other effects, among the ones listed above

  • Any number of triggers
When the VAT is evaluated, it will first execute the export_to_variable effects, then go through the other effects and triggers in the order they are listed. Whenever it comes to an effect, it executes that effect. Whenever it comes to a trigger, if that trigger evaluates false so does the VAT, otherwise it continues. If it gets past all the triggers, it evaluates true. In that sense it is like the AND trigger. When the trigger is done with its evaluation it destroys all variables created in its export_to_variable effects.

A simple example:
Code:
variable_arithmetic_trigger = {

custom_tooltip = HAS_HALF_THEIR_MANPOWER

    export_to_variable = {

        variable_name = my_manpower

        value = manpower

    }

    export_to_variable = {

        variable_name = their_manpower

        value = manpower

        who = FROM

    }

    multiply_variable = {

        which = my_manpower

        value = 2

    }

    check_variable = {

        which = my_manpower

        value = their_manpower

    }

}

One of the smart things with this design is that you can create conditional statements by utilizing the fact that AND and OR triggers stop evaluation when one child returns false and true, respectively. Check the following, more advanced, example:

Code:
variable_arithmetic_trigger = {

custom_tooltip = HAS_MORE_MANPOWER_OR_HALF_IF_CATHOLIC

    export_to_variable = {

        variable_name = my_manpower

        value = manpower

    }

    export_to_variable = {

        variable_name = their_manpower

        value = manpower

        who = FROM

    }

    OR =

    {

        NOT =  { religion = catholic }

        variable_arithmetic_trigger =

        {

            multiply_variable = {

                which = my_manpower

                value = 2

            }

            always = yes # This line is superfluous

        }

    }

    check_variable = {

        which = my_manpower

        value = their_manpower

    }

}


In pseudo code, this is equivalent to:

float my_manpower = GetManpower(THIS)

float their_manpower = GetManpower(FROM)

if religion == catholic

    My_manpower *= 2

Return my_manpower >= their_manpower

Although the syntax is horrible, this can be nested as much as you want to create really complicated logical conditions. It should be noted that variables are performance heavy, especially the export_to_variable, although that has been significantly improved in 1.20 and 1.21.

Scriptable Subject Types

Some modders may have noticed in 1.20 that we moved most of the differences between subject types to a script file. As of 1.21, entirely new subject types can be added just by adding entries in common/subject_types. The old subject types are still referred to in the code however, and can’t be removed. Just adding them there won’t make them visible in the game however. For that I added scriptable diplomatic actions.

Scriptable Diplomatic Action

In 1.21 you will be able to see a new folder in common called new_diplomatic_actions. This system is currently independent of what happens in diplomatic_actions, and they can’t be combined. One diplomatic action has been added there, and it might be easiest to learn how it works by checking that example, which asks someone to become your Dummy. Two things should be noted though. First, the AI will as it is never send these actions. I’m thinking of a way to make that work for a future patch. Second there is an entry called ai_acceptance. This is how it works:
  • It only accepts one type of entry, called add_entry

  • Each add_entry is a simplified/modified version of the variable_arithmetic_trigger. Namely, it doesn’t accept triggers, instead it has a “limit” entry that gets evaluated before even the export_to_variables are executed; and it has a “name” instead of “custom_tooltip”.

  • Each add_entry must define one local variable called “ai_value”. That variable will be evaluated after all effects have been executed.

As 1.21 is not yet available to you, I’ll paste the relevant script here for reference:

In subject_types I added this:
Code:
dummy =
{

    copy_from = default

}

In new_diplomatic_actions, this:

demand_dummy = {

    category = influence

 

    alert_index = 40

    alert_tooltip = demand_dummy_alert_tooltip

 

    require_acceptance = yes # Whether the recipient gets an option to decline

 

    is_visible = {

        religion_group = christian

        is_subject = no

        FROM = {

            is_subject = no

        }

    }

    is_allowed = {

        variable_arithmetic_trigger = {

            custom_tooltip = HAS_MORE_MANPOWER

            export_to_variable = {

                variable_name = my_manpower

                value = manpower

            }

            export_to_variable = {

                variable_name = their_manpower

                value = manpower

                who = FROM

            }

            subtract_variable = {

                which = my_manpower

                which = their_manpower

            }

            check_variable = {

                which = my_manpower

                value = 0

            }

        }

        religion = catholic

    }

    on_accept = {

        add_trust = {

            who = FROM

            value = 20

            mutual = yes

        }

        create_subject = {

            subject_type = dummy

            subject = FROM

        }

    }

    on_decline =

    {

        add_trust = {

            who = FROM

            value = -100

            mutual = no

        }

    }

 

    ai_acceptance = {

        add_entry = {

            name = ALWAYS_TEN

            export_to_variable = {

                variable_name = ai_value # Mandatory to use this name

                value = 10

            }

        }

        add_entry = {

            name = OPINION

            export_to_variable = {

                variable_name = ai_value

                #value = opinion who = FROM with = THIS # This is supposed to work in the future

                value = 10 # Temporary value until then

            }

            divide_variable = {

                which = ai_value

                value = 4

            }

        }

    }

}

The result looks like this (I didn’t bother localizing ALWAYS_TEN):

Capture.jpg


Scriptable diplomatic actions will be in the 1.21 patch when it releases, but it is a feature we plan to improve and expand upon in the future.

Last but not least our Mod Coordinator @Divine has also been working on a couple of additions to the 1.21 patch. This is a small list of those from the changelog.

Code:
- Added defines BANKRUPTCY_BUILDING_DESTRUCTION_THRESHOLD, BANKRUPTCY_PROVINCE_DEVASTATION_GAIN.
- Added the attribute "indestructible" to buildings, setting it to yes will exempt that type of building from being destroyed by bankruptcy.
- Added add_adm_tech, add_dip_tech, add_mil_tech effects.
- Added revanchism trigger.
- Added log effect and trigger.
- Added add_active_policy and had_active_policy effect and trigger.
- Added scripted function can_declare_bankruptcy.
- Added scripted function can_colonize_province.
- Added add_next_institution_embracement = <int> province effect.

Have fun!

That was all for today about the Hungary patch and the content related to to Hungary and its European surroundings. Next Tuesday we will be sharing the complete changelist for the upcoming patch, which will be released in late april.
 
This is great!

In the case of Hungary getting permanent claims on Bohemian land, will they still have to fight the emperor if they choose to attack?

Will Hungary still be locked out of declaring wars for the first 10~ years due to the regent?
 
Good stuff! I'll definitely be doing a Hungary campaign once 1.21 hits.

Slovakia/Upper Hungary has been redrawn and the new province of Trencin now guards the northern border of the Kingdom. Development and trade goods of the area in general has been revised a bit to better reflect reality.

Do they still keep their gold mine in Szepes?
 
@Trin Tragula
Does Moravia have its own NI set? If so, I hope they include one for their famous wine, their strict catholicism and maybe even the Přemyslids.
BTW, one of the biggest dev diaries for a long time :eek:
 
Last edited:
Wow. Huge DD, and all for a relatively small patch, that will be out within a month of the last patch? Bravo!