Open main menu

Modding events

The event system was introduced with the release of Europa Universalis II, and has been continually improved with EU2 patches and the expansions made for the Hearts of Iron release. For Victoria the system has been further adapted and expanded, and is now also used for inventions.

Contents

Alternative Choices

Most events have two or more alternative outcomes which the user or the AI is able to select. The accepted convention is to place the historically chosen alternative as the first one. The first choice will be selected by the AI in most games (but not all), in order to ensure that the AI acts in as historically accurate of a manner as possible.

Some events deal with countries being incorporated into other. The important thing to remember here is to always leave a backdoor for a human player. Imagine playing your game, implementing the plan which you have designed, only to suddenly get the message "You've been annexed (Game Over)"... The correct design choice is to include an event for the country going to be annexed, where the AI in most cases will accept, but the human player will refuse. A good example from the standard Grand Campaign scenario in Victoria is Texas, which has the opportunity to join the USA. The second alternative available in the event leaves a backdoor available for a human player:

event = { 
 id = 14400
 random = no
 country = TEX

 trigger = {
  random = 2
 }

 name = "EVT_14400_NAME"
 desc = "EVT_14100_DESC"
 style = 0
 date = { day = 1 month = january year = 1836 }
 offset = 30
 deathdate = { day = 30 month = december year = 1845 }

 action_a = {
  name = "ACTIONNAME14400A" # Apply for statehood in the USA.
  command = { type = trigger which = 14100 } # USA
 }

 action_b = {
  name = "ACTIONNAME14400B" # Follow a line of strict independence
  command = {  }
 }
}

In this event the AI will most likely choose to join USA. The human player has a backdoor to avoid this undesired outcome, however.

Randomness

You can target random countries, provinces, leaders and ministers in an event by replacing the id number with -1, -2 (refer to the particular command to find the significance of a -2 reference) or -3 in a command. -1 is a random id, while -2 is a special reference (for example, a minority culture). -3 can be used to make several things happen to the same random id. Note however that random references in triggers do not work.

Event Files

The event files are plain text files located in the Victoria\db\events subfolder. They can be given any file name, but it is advisable to use meaningful names. To have the events included in the scenario they need to be linked, or included. In the Victoria\db folder is the file events.txt. This file is linked to in the scenario file and holds a list of which event files the game should include in the scenario.

Example Event File Inclusion

event = "db\events\spain.txt"
event = "db\events\goldevents.txt"

The first line links the file with Spanish events to the scenario, while the second line is a file with specific events dealing with gold rushes.

Technology Files

The definitions of the technology inventions which occur in the game are plane text files which are written in a similar fashion to the event files. The files are included in the scenario definition in the same manner as the event files and are located in the Victoria\db\tech\ folder.

Example Technology File Inclusion

event = "db\tech\army_invetions.txt"
event = "db\tech\commerce_inventions.txt"

For more about inventions, please refer to Inventions below.

Event Structure

The structure in which events in Victoria are written is similar to that of Europa Universalis 2 and Hearts Of Iron.

Example Event

event = {         #Put in comments after a '#' sign. The 
                  #rest of the line will not be read a code
   id = [id]
   trigger = {
      [trigger conditions]
   }
   random = no

   country = [country tag]
   name = "[event name]"
   desc = "[event description]"
   style = 0
     
   date = { day = 1 month = march year = 1837 } 
   offset = 30
   deathdate = { day = 12 month = march year = 1845 }
      
   action_a = {
      name = "[action name]" # The text displayed for this option
      command = { [commands] }
   }

   action_b = {
      name = "[action name]" # The text displayed for this option
      command = { [commands] }
   }
}

The event definition always begins with the event = { line, and must end with a matching closing brace at the end of the event. In order for the event to work correctly, all opening braces must have a matching closing brace. The various remaining individual components which create an event are described in the sections below.

Event Ids

The event id is an integer number, and must be unique for each event. Valid ids are from 1 up to around 4 billions.

Id Example

[code]id = 3001[/code]

Victoria uses event ids between ??? and ???. Event IDs below 1000 are used for inventions. Any ids above ??? should be available for custom events.

Event Triggers

  • See Event Triggers for a reference to all available Event Trigger conditions and operators.

Triggers are used to set conditions for when, in what circumstances and to whom an event should happen. For a complete reference to all of the valid trigger conditions which are available, see: Conditions. Trigger conditions can be combined using the AND, OR and NOT logical operators. When adding more than one condition for a trigger, the default operator is AND. For a complete reference on Trigger Operators, please see Operators

Random

This declaration tells whether the event should be random or not. For country specific events, this is usually no. Note that you can set a probability (percentage) for a non-random event to occur by using the 'random = [percentage]' trigger instead of creating a random event. See Randomness, above. Random and persistent events are the only events which can occur more than once.

Random Example

random = no

Picture

In Victoria it is possible to include a picture with the event message. The picture must be a bitmap (BMP) file which is 408 pixels wide and 149 pixels high. The file must be located in the folder Victoria\gfx\Interface\events.In that folder there is also a Photoshop template named events_template.bmp, which is available to assist in making your own event pictures.

Picture Example

picture = example

This example uses the file Victoria\gfx\Interface\events\example.bmp. If omitted, the Victoria\gfx\Interface\events\default.bmp file is used. Note that the file suffix (.bmp) is not required.

Country

This declaration tells which country the event should happen to. This must be set to a valid country tag. The country declaration may be omitted if the event is a random event.

Country Example

country = GER

Name

This specifies the name of the event that appears in the event window. The name may be entered directly here, however like most text which is to be displayed in game it should be localized. Localized text is presented to the user in their native language, which is set by the operating system. For Victoria, all localized text is contained in the Victoria\config\event_text.csv file. For more detailed information, please see Event Text.

Name Example (using localized text)

name = "EVT_23000_NAME"

Name Example (using non-localized text)

name = "Example Event"

AI_EVENT

Using the name "AI_EVENT" on an event will cause it to not be displayed in the event log. This is useful for AI only events, for example events which switch AI definition files or other events you want the AI to get without notifying the player.

Desc

This is the main event text that appears to users in the event window. The event description may be entered directly here, however like most text which is to be displayed in game it should be localized. Localized text is presented to the user in their native language, which is set by the operating system. For Victoria, all localized text is contained in the Victoria\config\event_text.csv file. For more detailed information, please see Event Text.

Desc Example (using localized text)

desc = "EVT_23000_DESC"

Desc Example (using non-localized text)

desc = "This is an example event."

Style

This specifies the look of the event window depending on the time period when the event appears. For Victoria, style = 0 is used for all events.

Date, offset and deathdate

This is the date when the event will happen, specified in Day, Month, Year format as shown in the example below. If this directive is used alone (no offset given), the event will happen on the exact date given if the event triggers are satisfied. The offset is a random variation, specified in days, which the event may fire on. Offset is always used in conjunction with the date statement, and is used to indicate that the event may happen on any of the days from the time specified in date going forward. If the event has triggers it will begin testing those triggers every day from the date which has been specified. Note that offsets are reset every time the game is loaded, so if you use very long offsets, the events might not be checked in games that are frequently saved/re-loaded. The deathdate is the deadline for 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 and offset parameters. If triggers are not valid on the date provided by the date declaration then the event will never fire, but if you would like the event to keep looking for triggers then you need to define a deathdate. Note that the deathdate declaration works differently for inventions; for them, the deathdate indicates when the chance of that invention firing increases significantly, rather than de-activating that invention.

Date Example

date = { day = 1 month = october year = 1838 }

Offset Example

offset = 300

In this example the event will start checking for triggers on a random date within 300 days from the date specified.

Deathdate Example

deathdate = { day = 1 month = october year = 1843 }

Action

  • See Commands for a reference to all available Event Action commands.

The action statements are the responses to the event being offered to the player. Sometimes it is appropriate to include only a single action, such as an "Ok" action. Events may include up to four actions which will be available to the user. Action statements must always contain a name statement and any number of command statements, including no commands (a command = { } statement) . The name statement may be entered directly here, however like most text which is to be displayed in game it should be localized. Localized text is presented to the user in their native language, which is set by the operating system. For Victoria, all localized text is contained in the Victoria\config\event_text.csv file. For more detailed information, please see Event Text.

When the AI receives an event the first action, action_a in the examples below, has approximately an 85% to 95% chance of being selected by the AI. For more information on the selections which the AI will make on an event, see [[#Event AI Action Selection|]] below. Due to the default behavior and users expectations from events you should always put the historic choice as the first action available.

Action OK Example (using localized text)

action_a ={ name = "ACTIONNAME3704A" command = { } } #OK

Action OK Example (using non-localized text)

action_a ={ name = "OK" command = { } }

Event AI Action Selection

As mentioned above, there is between a 94.5% and 85% chance of the AI selecting the first choice available in an event. This chance is influenced by the total number of options which the event includes. The specific chances of the AI selecting a specific option are given in the table below.

Option Ratio Percentage
Two options action_a 85/90 94,4%
action_b 5/90 5,6%
 
Three options action_a 85/95 89,4%
action_b 5/95 5,3%
action_c 5/95 5,3%
 
Four options action_a 85/100 85%
action_b 5/100 5%
action_c 5/100 5%
action_d 5/100 5%

Event Flags

One of the new features made available in Hearts of Iron was the ability to set flags, which are useful in order to trigger events. In Victoria the flag system has been expanded in order to include two types of flags: local and global flags. A local flag can be predefined in an AI file, or it can be set with an event. Global flags are defined in the scenario definition file or through events. When loading a new AI file, using the 'ai' event command, any local flag set in that AI file will overwrite existing flags.

The syntax is described above, but a short summary won't hurt: The trigger 'flag' checks if the specified global flag is set, and is true if the flag value is equal to or higher than the one defined by the 'value =' field. The event commands 'clrflag', 'incflag' and 'setflag', are used to remove, change or set global flags. Similarly the trigger 'local_flag' and commands 'local_clrflag', 'local_incflag' and 'local_setflag', are used for local flags.

The value of the flag is always an integer number. By using the 'incflag' or 'local_incflag' command you can use the event selections from several events (and by using global flags you can also include several countries) in order to raise or lower a specific flag value, and the value can be used as a trigger for further events.

For example: Two countries, Freedonia and Albanania, are neighbors. You want to model a tension between the countries, where each country can raise or lower the tension between them through their responses to certain events. You can use a global flag; let's call it flg_frealb_tension, and define it in the globaldata section of the scenario definition:

# wars and alliances
globaldata = {
   flags = {
     flg_frealb_tension = 1
   }
}

The flag is defined, and set to 1. Let's say now that over a 20 years period you have three events for each of the countries, letting you raise or lower the tension:

event = {
    id = 9991
    random = no
    country = U01 #Freedonia
    name = "Tension with Albanania"
    desc = "Some description here"
    style = 0
       
    date = { day = 1 month = march year = 1837 } 
    offset = 30
    deathdate = { day = 1 month = april year = 1837 }
       
    action_a = {
        name = "We won't stand down!" # 
        command = { type = incflag  which = flg_frealb_tension  value = 1 }
        command = { type = relation  which = U02  value = -20 }
    }
    action_b = {
        name = "Can't we all just get along?" # 
        command = { type = relation  which = U02  value = 20 }
    }
}

If action_a is chosen here the flag value will be increased from 1 to 2. The entire series of six events has the possibility of driving the value up to 7. Now let's add the final straw:

event = {
    id = 9997
    random = no
    country = U01 #Freedonia
    name = "Tension with Albanania"
    desc = "Some desription here"
    style = 0
       
    date = { day = 1 month = march year = 1857 } 
    offset = 30
    deathdate = { day = 1 month = april year = 1857 }
       
    trigger = {
       flag = { name = flg_frealb_tension  value = 6 }
    }

    action_a = {
        name = "This means war!" # 
        command = { type = war  which = U02 }
    }
}

This will trigger a war if the flag value is 6 or higher. In other words, unless action_b is selected in at least two of the six events this event will cause a war to be started between the countries when the value of flg_frealb_tension becomes 6, on or around March 1, 1857.

Inventions

In Victoria the various tech levels open the possibilities of inventions. For example, the invention "Daimler's Automobile" - ID 500 - requires technology ID 5005, "Combustion Engine":

event = {

    id = 500
    random = no
    invention = yes

    picture = 500

    trigger = {
        technology = 5005
    }

    name = "EVT_500_NAME"
    desc = "EVT_500_DESC"
    style = 0

    date = { day = 1 month = january year = 1876 }
    offset = 60 # Check for trigger conditions every 60 days
    deathdate = { day = 30 month = december year = 1886 }

    action_a = {
        name = "OK" # Excellent!
        command = { type = activate_building_type which = automobile_factory }
    }
}

As you can see, the invention definition looks just like a standard event, with one exception: Inventions have the line 'invention = yes'. If this line is in, it is counted as an invention. If not, the default is 'off'.

Examples

The following chapter will show a few practical examples of event scripting.

Using triggers - AND NOT just easy, OR what?

One of the most important features of the event engine is the trigger system. The triggers decide if an event should happen, depending on the circumstances. Usually there are conditions we want to be fulfilled, and other conditions we want to not be fulfilled, in order for an event to occur. This can make for complicated triggers.

An example from the Grand Campaign scenario in Victoria: This is the trigger for the Hungarian event 2503, The Vienna Diktat - Claim Transylvania with German blessing:

  trigger = {

    exists = GER                               # Condition 1
    exists = ROM                               # Condition 2

    NOT = {                                    # Condition 3
      war = { country = HUN country = ROM  }   # Condition 3, part1
      OR = {                                   # Condition 3, part 2
        control = { province = 728 data = -1 } # Condition 3, part 2, sub part 1
        control = { province = 729 data = -1 } # Condition 3, part 2, sub part 2
        control = { province = 730 data = -1 } # Condition 3, part 2, sub part 3
      }
    }
  }

The base rule of thumb is that when nothing else is said, and you have more than one condition, the default operator is AND. In other words, all conditions must be fulfilled. In this example there are three main conditions that all have to be fulfilled:

  • Germany has to exist (Condition 1)
  • Romania has to exist (Condition 2)
  • The NOT = { } condition must be true (Condition 3). So, when is the NOT true? As mentioned in the article on Trigger Operators, the trigger is only valid if all of the listed conditions are false. So for this NOT condition both of the two conditions given must be untrue:
    • Hungary and Romania are at war (Condition 3.1)
    • The OR = { } condition has to be true (Condition 3.2) What about the OR condition? Again, the trigger is valid if any one of the listed conditions are true. So for this OR condition any one of these three must be true:
      • Hungary controls province 728 (Condition 3.2.1)
      • Hungary controls province 729 (Condition 3.2.2)
      • Hungary controls province 730 (Condition 3.2.3)

In plain language, this event will trigger if: Germany and Romania exists, Hungary is at peace with Romania, and Hungary controls at least one of the three provinces given.

Linked Event Chains

Linked event chains are like chain reactions - when it starts rolling it might go on for some time, or they may stop early. The path the chain goes depends on the events themselves. There are two ways of linking events: by using the trigger command or by using the event trigger itself. These two methods have different usage, as explained below.

Linking with the trigger command

The trigger command is used to fire another event immediately, based on the choice made in an event. As an example we'll take a look at the Hungarian event 2503 which we used above.

event = { 

  id = 2503
  random = no
  country = HUN

  trigger = {
    #see above#
  }

  name = "EVT_2503_NAME"
  desc = "EVT_2503_DESC"
  style = 0

  date = { day = 4 month = september year = 1940 }

  action_a = {
    name = "ACTIONNAME2503A" # Press the issue
    command = { type = trigger which = 2019 } # GER
  }

  action_b = {
    name = "ACTIONNAME2503B" # Refrain
    command = { }
  }
}

Chosing action_a in this event will immediately trigger event 2019, which happens to be a German event:

event = {

  id = 2019

  random = no

  country = GER
  # Triggered by HUN 2503

  name = "EVT_2019_NAME"
  desc = "EVT_2019_DESC"
  style = 0

  action_a = {
    name = "ACTIONNAME2019A" # Force Romanian acceptance
    command = { type = trigger which = 2701 } # ROM
  }

  action_b = {
    name = "ACTIONNAME2019B" # Deny the Hungarian request
    command = { type = trigger which = 2504 } # HUN
    command = { type = trigger which = 2702 } # ROM
  }
}

There is one thing worth mentioning here. The event is very simple, and as you can see there is no date/deathdate defined. Because the event is intended on only being triggered from another event, the dates can (and should) be dropped. The event will in turn trigger one Romanian event if you select action_a, and one Hungarian and one (different) Romanian event if you go for action_b. The chain continues...

Linking with an event trigger

The above is a way of firing dependant events quickly, and at any time when the conditions are met. The option presented here is more suitable if you want things to happen at a set time, and still be based on earlier or later events.

An example of an event outline:

  • The first event (1) has certain conditions, and will fire on 6 January, 1942 if conditions are met.
  • The second event (2) will fire on 29 January, 1942, but this event will only occur if event 1 has occurred.
  • The third event (3) will fire on 17 February, but this event will only occur if action_a was selected in event 2.
  • The fourth event (4) will fire on 17 Feb, but this event will only occur if action_b was selected in event 2.
  • The fifth event (5) will fire on 17 Feb, but this event will only occur if the first event never happened.

Let's take a look at the events:

# The first event
event = {         

    id = 1        

    trigger = {
        [trigger conditions here]
    }
    random = no

    country = [country tag]

    name = "The first event"
    desc = "[event description]"
    style = 0
       
    date = { day = 6 month = january year = 1942 } 
       
    action_a = {
        name = "Ok" 
        command = {  }
    }
}
# The second event
event = {         

    id = 2

    trigger = {
        event = 1      # Will only happend if event 1 has happened
    }
    random = no

    country = [country tag]

    name = "The second event"
    desc = "[event description]"
    style = 0
       
    date = { day = 29 month = january year = 1942 } 
       
    action_a = {     # Since both event 3 and 4 have the same trigger
        name = "Yes" # the one not supposed to happend must be slept:
        command = { sleepevent = 4 }
    }
    action_b = {     # Ditto
        name = "No" 
        command = { sleepevent = 3 }
    }
}
# The third event
event = {         

    id = 3

    trigger = {
        event = 2 # Will only happend if event 2 has happened
    }
    random = no

    country = [country tag]

    name = "The third event"
    desc = "[event description]"
    style = 0
       
    date = { day = 17 month = february year = 1942 } 
       
    action_a = {
        name = "Yes" 
        command = {  }
    }
    action_b = {
        name = "No" 
        command = {  }
    }
}
# The fourth event
event = {         

    id = 4

    trigger = {
        event = 2 # The same trigger as above!
    }
    random = no

    country = [country tag]

    name = "The fourth event"
    desc = "[event description]"
    style = 0
       
    date = { day = 17 month = february year = 1942 } 
       
    action_a = {
        name = "Yes" 
        command = {  }
    }
    action_b = {
        name = "No" 
        command = {  }
    }
}
# The fifth event
event = {         

    id = 5

    trigger = {
        NOT { event = 1 }
        # Will only happend if event 1 has not happened
    }
    random = no

    country = [country tag]

    name = "The fifth event"
    desc = "[event description]"
    style = 0
       
    date = { day = 17 month = february year = 1942 } 
       
    action_a = {
        name = "Yes" 
        command = {  }
    }
    action_b = {
        name = "No" 
        command = {  }
    }
}

What is worth noticing here is that:

  • Events can be conditional of other events without firing immediately.
  • You can use the event trigger and date/deathdate.
  • Instead of triggering the later events directly, you are able to remove events which should not happen by using the sleepevent command.

Note however that it is not possible to have an event trigger a set time period after another event.

Event ID list

This is a list of the event id's which are used in the Grand Campaign scenario which is included with Victoria. Note that there is an overlap for the first five entries, since inventions also have their IDs in those ranges

ALBANIA 100 BOSNIA_HERZEGOVINA 200 BULGARIA 300
CROATIA 400 CYPRUS 500 GREECE 600
MOLDAVIA 700 MONTENEGRO 800 ROMANIA 900
SERBIA 1000 OTTOMAN_EMPIRE 1100 WALLACHIA 1200
SWITZERLAND 1300 SLOVENIA 1400 AUSTRIA 1500
BOHEMIA_MORAWIA 1600 DANZIG 1700 KRAKOW 1800
CRIMEA 1900 ESTONIA 2000 HUNGARY 2100
LITHUANIA 2200 LIVONIA 2300 POLAND 2400
RUSSIA 2500 SLOVAKIA 2600 RUTHENIA 2700
SIEBENBURGEN 2800 UKRAINE 2900 GERMANY 3000
NORTH_GERMAN_FEDERATION 3100 SOUTH_GERMAN_FEDERATION 3200 BADEN 3300
BAVARIA 3400 BRAUNSCHWEIG 3500 BREMEN 3600
FRANKFURT_AM_MAIN 3700 HAMBURG 3800 HANOVER 3900
HESSE_DARMSTADT 4000 HESSE_KASSEL 4100 HOLSTEIN 4200
LUBECK 4300 LUXEMBURG 4400 OLDENBURG 4500
PRUSSIA 4600 SAXONY 4700 SCHLESWIG 4800
WURTTEMBERG 4900 COBURG_GOTHA 5000 LIPPE_DETMOLD 5100
MECKLENBURG 5200 ITALY 5300 LOMBARDIA 5400
PARMA 5500 MODENA 5600 PAPAL_STATES 5700
SARDINIA_PIEMONT 5800 SICILIES 5900 TUSCANY 6000
VENICE 6100 DENMARK 6200 FINLAND 6300
NORWAY 6400 SCANDINAVIA 6500 SWEDEN 6600
BELGIUM 6700 CATALONIA 6800 UNITED_KINGDOM 6900
FLANDERS 7000 WALLONIA 7100 FRANCE 7200
IRELAND 7300 NETHERLANDS 7400 PORTUGAL 7500
SCOTLAND 7600 SPAIN 7700 PERSIA 7800
NEJD 7900 AFGHANISTAN 8000 EGYPT 8100
KHIVA 8200 BUKKHARA 8300 KOKAND 8400
OMAN 8500 ADEN 8600 ABU_DHABI 8700
TRAVANCORE 8800 MYSORE 8900 HYDERABAD 9000
NAGPUR 9100 BASTAR 9200 ORISSA 9300
BUNDELKHAND 9400 AWADH 9500 GWAILOR 9600
BHOPAL 9700 INDORE 9800 JAIPUR 9900
MEWAR 10000 JODHPUR 10100 BERODA 10200
KUTCH 10300 SIND 10400 MAKRAN 10500
KALAT 10600 JAISALMER 10700 BIKANER 10800
PANJAB 10900 SEMLA 11000 LADAKH 11100
KASHMIR 11200 NEPAL 11300 SIKKIM 11400
BHUTAN 11500 ETHIOPIA 11600 LIBERIA 11700
ALDJAZAIR 11800 MOROCCO 11900 TRIPOLI 12000
SOKOTO 12100 ZULU 12200 SOUTH_AFRICA 12300
HOWA 12400 CHINA 12500 JAPAN 12600
KOREA 12700 TIBET 12800 SIAM 12900
ANNAM 13000 CAMBODIA 13100 BURMA 13200
DAI_VIET 13300 BRUNEI 13400 BALI 13500
MALACCA 13600 JAVA 13700 AUSTRALIA 13800
NEW_ZEALAND 13900 HAWAII 14000 USA 14100
CSA 14200 CANADA 14300 TEXAS 14400
CALIFORNIAN_REPUBLIC 14500 COLUMBIA 14600 NEW_ENGLAND 14700
MEXICO 14800 CUBA 14900 DOMINICAN_REPUBLIC 15000
HAITI 15100 UNITED_STATES_OF_CENTRAL_AMERICA 15200 PANAMA 15300
HONDURAS 15400 EL_SALVADOR 15500 GUATEMALA 15600
NICARAGUA 15700 COSTA_RICA 15800 DESERET 15900
QUEBEC 16000 METIS_CONFEDERACY 16100 VENEZUELA 16200
BRAZIL 16300 URUGUAY 16400 PARAGUAY 16500
ARGENTINA 16600 CHILE 16700 PERU 16800
BOLIVIA 16900 COLOMBIA 17000 ATJEH 17100
HEDJAZ 17200 ECUADOR 17300 TUNIS 17400
NATAL 17500 ORANJE 17600 TRANSVAAL 17700
LUANG_PRABANG 17800 VIENTIANE 17900 NEWFOUNDLAND 18000
ZANZIBAR 18100 NASSAU 18200 ANHALT 18300
WEIMAR_EISENACH 18400 MEINEGEN 18500 MANHATTAN 18600
CRETE 18700 IONIAN_ISLANDS 18800 TRIEST 18900
ARMENIA 19000 GEORGIA 19100 CHEROKEE 19200
MUGHALISTAN 19300 LUCCA 19400