Editing the Objectives

To add new objectives, you must register these codes in the appropriate sections:

They must be first added in the MANUAL_LIBRETA_MissionName.MSB file, for example, kill all enemies:

[
.NOMBRE MATA_TODOS 
.FLITXT 0007
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 2 .ZOOM 0.7 ] .INFOVISORSECUNDARIO [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 1 .ZOOM 0.4 ]
          # .TARGET [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) ]
  
The Property .FLITXT indicates the name of the objectives description; the coordinates (all of them) indicate where the camera will place itself to show you where the objective must be completed. 
The .INFOVISORPRINCIPAL and .INFOVISORSECUNDARIO are the positions the camera will zoom to better show you where the objectives are held.
The .TARGET Property indicates the position of the arrow that will guide you to the objective. In our case there is the # that nullifies its effect (by commenting it).

This string of code can be used for the insides is, with an example:

  [
.NOMBRE COGE_LLAVE
.FLITXT 0008
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO SHI02 .POS ( 0 0 0 ) .INCLINACION 0 .GIRO 0 .ZOOM 1 ]
.INFOVISORSECUNDARIO [ .ESCENARIO SHI02 .POS ( 0 0 0 ) .INCLINACION 0 .GIRO 0 .ZOOM 1.5 ]
            .TARGET [ .ESCENARIO SHI02 .POS ( 0 0 0 ) ]
]

The one for the outside is:

[
.NOMBRE COGE_LLAVE 
.FLITXT 0007
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 2 .ZOOM 0.7 ]
.INFOVISORSECUNDARIO [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 0 .ZOOM 2 ]
            .TARGET [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) ]
]

Also you must insert a description of the objective in the MissionName.str file, for example:

0007 Neutralize all the Enemies.

this is what the player will see when he will go lookup his objectives.

NOTE: 0007 is the name of the .FLITXT Property found in the MANUAL_LIBRETA_MissionName.MSB file, you can change it to anything you like, just make sure each objective's name is correctly aligned.

Objectives Details

The objective explanation which pops out instead of showing the map is coordinated through a text file, which must be named missionname_OBJETIVOS.TXT and it's body should look like this:

textnamehere
BLOQUEA

TEXTFMT ---- 0 0
"description here"
ENDTEXTFMT

TEXTFMT ---- 1 0
"description here"
ENDTEXTFMT

TEXTFMT ---- 2 0
"description here"
ENDTEXTFMT

TEXTFMT ---- 3 0
"description here"
ENDTEXTFMT

TEXTFMT ---- 4 0
"description here"
ENDTEXTFMT

ENDTOKEN


textnamehere2
BLOQUEA

TEXTFMT ---- 0 0
"description here"
ENDTEXTFMT 
 
TEXTFMT ---- 1 0
"description here"
ENDTEXTFMT

TEXTFMT ---- 2 0
"description here"
ENDTEXTFMT

ENDTOKEN

We considered two description ampliations in this case, one made of five lines, while the other of three. As you can see, the two numbers indicate the line on which the description will be displayed. Also you must indicate an opening (TEXTFMT) and a closing (ENDTEXTFMT) for each description, which by itself is held inside the explanations (text) holders: beginning (BLOQUEA) and end (ENDTOKEN).

NOTE: You will have to add this string at the beginning of the mission MANUAL_LIBRETA_missionname.MSB:

[
  .VIOLETA 0
  .TIENE_TEXTOS_ESPECIFICOS 1
.LIBRETA

Primary Objectives

Let's see how to insert an Objective inside a mission:
  • First part of the code goes in here for Primary Objectives:
                .OBJETIVOS 
                (

For example, in this case the objective, if completed, will launch an event.

                   [
                        .NOMBRE MATA_TODOS 
                        .VISINI  1.0 
                        .EVCON eventname 
                    ] 

In this other example, the objective will be visible only when an event has been launched:

                   [
                        .NOMBRE MATA_TODOS 
                        .VISINI  0  
                        .EVVIS eventname
                    ] 

NOTE: primary objectives must be also inserted in the .NOMBRE TODO_CONSEGUIDO list otherwise even if you do not complete one primary objective the mission will be considered passed. The part of code that must be inserted is the last part of the thirrd code:

                        (
                            OperInfoJug 
                            [
                                .INFOJUG MATA_FRANCOTIRADOR 
                                .ACCION CONSEGUIDO 
                            ]
                        )

Secondary Objectives

Secondary Objectives go in here:

                .OBJETIVOS_SEC 
                (

Clues go in here:

                .PISTAS 
                (

NOTE: You can also insert clues like "kill all enemies", if you do kill them it will count as a completed clue (you will not receive points for that).

Second part goes in here:

            .LISTAS_BICHOS 
            (

And third and final part goes in here:

            .REGLAS
            ( 

By adding this code inside .OPERACIONES at the completion of that objective, an event will be launched:

                        (
                            OperLanzaEvento 
                            [
                                .EVENTO eventname 
                            ]
                        )

This is useful if you want to add the invasion button (but not only). The invasion button must be put inside .INTERFAZ:

    .INTERFAZ 
    [
        .SUPRAINTERFAZ 
        [
            .ELEMENTOS 
            (
                
                [
                    .ELEM RADIO_RYAN
                    .EVENTO_INICIALIZA eventnamestart
                    .EVENTO_LANZA eventnamelaunch 
                ]
            )
        ]

.EVENTO_INICIALIZA says when the invasion button will be visible and .EVENTO_LANZA defines what the invasion button will do (usually launch invasion).

Adding a Timer

You can also add a timer in .SUPRAINTERFAZ:

            .ELEMENTOS 
            (
                
                [
                    .ELEM CONTADOR 
                    .EVENTO_INICIALIZA eventnamestart 
                    .EVENTO_LANZA eventnamelaunch
                    .EVENTO_FINALIZA eventnamestopcountdown
                    .TIEMPO_NIVEL_FACIL 180.0 
                    .TIEMPO_NIVEL_NORMAL 90.0 
                    .TIEMPO_NIVEL_DIFICIL 60.0 
                ]
            )

the three .EVENTO are, of course, the events that have to do something with the countdown:
.EVENTO_INICIALIZA says when the countdown will start
.EVENTO_LANZA indicateswhat event the countdown will launch itself (at the end of the countdown)
.EVENTO_FINALIZA indicates what event will make the countdown stop.
The other numbers indicate the time in seconds that the countdown will last according to the 3 difficulty levels.
NOTE: If instead of putting the three difficulty levels you want the time to be the same for all the difficulties, simply put this one string (after deleting the three others):

                    .TIEMPO x.0

It will consider the same x seconds for every difficulty level.

Possible Objectives

Neutralize All the enemies

[
.NOMBRE MATA_TODOS 
.FLITXT 0000
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 2 .ZOOM 0.7 ]
          # .TARGET [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) ]
            .TEXTO_EXPLICATIVO textnamehere

                   # 1st part 
                 [
                     .NOMBRE MATA_TODOS 
                     .VISINI  1.0 
                 ] 

                   # 2nd part
                 [
                    .NOMBRE LOS_MALOS 
                    .ESPECIAL TODOS_LOS_ALEMANES 
                 ]

                   # 3rd part

                 [
                    .NOMBRE MATAR_TODOS
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .CONDICIONES 
                    (
                        
                        (
                            CondBichosMuertos 
                            [
                                .BICHOS LOS_MALOS
                                .INCAPACITADOS_SON_MUERTOS  1.0 
                            ]
                        )
                    )
                    .OPERACIONES 
                    (
                        
                        (
                            OperInfoJug 
                            [
                                .INFOJUG MATA_TODOS
                                .ACCION CONSEGUIDO 
                            ]
                        )
                    )
                ]

NOTE: It will not work on the main missions, because there are other enemies called COMANDO_GHOST used for the briefings that are hidden, so even if you kill all the normal enemies you find in a map, the objective will never tick off; while if you try it on the bonus missions you will see that it will always work (exept on Bonus Mission 7). Also, .TEXTO_EXPLICATIVO is a useful string which can be added to objectives that do not show on the map (with a # in front of .POSMAPA), so to avoid showing a blank screen when pressing on the objective, you will be shown a text that tells more concretely what must be done (For more info scroll to bottom).

To neutalize a group of enemies this is the code that must be registered:

    [
.NOMBRE MATA_TARGETS
.FLITXT 0
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 0 .ZOOM 1 ]
.INFOVISORSECUNDARIO [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 0 .ZOOM 2 ]
.TARGET [ .ESCENARIO EXTERIOR  .POS ( 0 0 0 ) ]
    ] 

1st part:

                    [
                        .NOMBRE MATA_TARGETS 
                        .VISINI  1.0 
                    ]

2nd part:

                [
                    .NOMBRE TARGETS 
                    .BICHOS 
                    (
                        targets_names_here_separated_by_at_least_one_space_each 
                    )
                ] 

3rd part:

                [
                    .NOMBRE MATAR_TARGETS 
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .CONDICIONES 
                    (
                        
                        (
                            CondBichosMuertos 
                            [
                                .BICHOS TARGETS 
                                .INCAPACITADOS_SON_MUERTOS  1.0 
                            ]
                        )
                    )
                    .OPERACIONES 
                    (
                        
                        (
                            OperInfoJug 
                            [
                                .INFOJUG MATA_TARGETS 
                                .ACCION CONSEGUIDO 
                            ]
                        )
                    )
                ]

NOTE: works also for one soldier. Also, by deleting the .INCAPACITADOS_SON_MUERTOS  1.0 string, you will be forced to kill the targets and not simply tie them.

Pick up an item 

    [
.NOMBRE COGE_ITEM
.FLITXT 0
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 1 .ZOOM 1 ]
.INFOVISORSECUNDARIO [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 1 .ZOOM 2 ]
        .TARGET [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) ]
    ]

1st part:

                    [
                        .NOMBRE COGE_ITEM 
                        .VISINI  1.0 
                    ]

2nd part:

                [
                    .NOMBRE people_who_need_to_collect_the_item 
                    .BICHOS 
                    (
                        peoples_names_here_separated_by_at_least_one_space_each  
                    )
                ]

3rd part:

                [
                    .NOMBRE COGER_ITEM 
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .CONDICIONES 
                    (
                        
                        (
                            CondTipoBichoEnBichos 
                            [
                                .BICHOS people_who_need_to_collect_the_item 
                                .TIPO_BICHO TPB_itemtypehere 
                            ]
                        )
                    )
                    .OPERACIONES 
                    (
                        
                        (
                            OperInfoJug 
                            [
                                .INFOJUG COGE_ITEM 
                                .ACCION CONSEGUIDO 
                            ]
                        )
                    )
                ]

NOTE: You must put the generic item name encoded. That means that you need to put it in Spanish; easy way to find out how to write it is to look it up in the Items page and search for itemname.ani, delete the .ani and you have the item name encoded in spanish. But beware that some items cannot be specified, for instance, if you want a bazooka ammo to be picked up you must put only CARGADOR and not CARGADORBAZOKA otherwise the game will crash (unfortunately if a rifle ammo is picked up, the objective will tick off anyway).

Pick up specific item

    [
.NOMBRE COGE_ITEMSPEC
.FLITXT 0
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 1 .ZOOM 1 ]
.INFOVISORSECUNDARIO [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 1 .ZOOM 2 ]
        .TARGET [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) ]
    ]

1st part:

                    [
                        .NOMBRE COGE_ITEMSPEC 
                        .VISINI  1.0 
                    ]

2nd part:

# nothing needed

3rd part:

                [
                    .NOMBRE COGER_ITEMSPEC 
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .CONDICIONES 
                    (
                        
                        (
                            CondBichosEnBichos 
                            [
                                .BICHO itemnamehere
                                .BICHO_CONTENEDOR containernamehere
                            ]
                        )
                    )
                    .OPERACIONES 
                    (
                        
                        (
                            OperInfoJug 
                            [
                                .INFOJUG COGE_ITEMSPEC 
                                .ACCION CONSEGUIDO
                            ]
                        )
                    )
                ]

NOTE: Of course you can mix the three codes here, for example: one item needs to be picked up by a group, or a group of generic items needs to be picked up by one man, etc.

Pick up multiple spcific items

  [
.NOMBRE COGE_ITEMSPEC
.FLITXT 0
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 1 .ZOOM 1 ]
.INFOVISORSECUNDARIO [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 1 .ZOOM 2 ]
        .TARGET [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) ]
    ]

1st part:

                    [
                        .NOMBRE COGE_ITEMSPEC 
                        .VISINI  1.0 
                    ]

2nd part:

                [
                    .NOMBRE people_who_need_to_collect_the_items 
                    .BICHOS 
                    (
                        peoples_names_here_separated_by_at_least_one_space_each  
                    )
                ]
                [
                    .NOMBRE items_group_name_here 
                    .BICHOS 
                    (
                        items_names_here_separated_by_at_least_one_space_each  
                    )
                ]

3rd part:

                [
                    .NOMBRE COGER_ITEMSPECGROUP 
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .CONDICIONES 
                    (
                        
                        (
                            CondBichosEnBichos 
                            [
                                .BICHOS itemgroupnamehere 
                                .BICHOS_CONTENEDORES containergroupnamehere 
                                .NECESARIO_TODOS 0 
                            ]
                        )
                    )
                    .OPERACIONES 
                    (
                        
                        (
                            OperInfoJug 
                            [
                                .INFOJUG COGE_ITEMSPEC  
                                .ACCION CONSEGUIDO
                            ]
                        )
                    )
                ]

NOTE: by putting .NECESARIO_TODOS to 1 you will have to pick all the items to let the objective tick off, otherwise even one will do.

Destroy a vehicle

  [
.NOMBRE DESTROYVEHICLE
.FLITXT 0
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 3 .ZOOM 1 ]
        .TARGET [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) ]
    ]

1st part:

                    [
                        .NOMBRE DESTROYVEHICLE 
                        .VISINI  1.0 
                    ]

2nd part:
# nothing needed

3rd part:

                [
                    .NOMBRE VEHICULODESTRUIDO 
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .CONDICIONES 
                    (
                        
                        (
                            CondBichoMuerto 
                            [
                                .BICHO vehiclenamehere 
                            ]
                        )
                    )
                    .OPERACIONES 
                    (
                        
                        (
                            OperInfoJug
                            [
                                .INFOJUG DESTROYVEHICLE
                                .ACCION CONSEGUIDO
                            ]
                        )
                    )
                ]

Escape on a vehicle

  [
.NOMBRE ESCAPA
.FLITXT 0
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 3 .ZOOM 1 ]     .TARGET [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) ]
    

1st part:

                    [
                        .NOMBRE ESCAPA 
                        .VISINI  1.0 
                    ]

2nd part:
# nothing needed

3rd part:

                [
                    .NOMBRE VEHICULO_HUIDA_DESTRUIDO 
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .CONDICIONES 
                    (
                        
                        (
                            CondBichoMuerto 
                            [
                                .BICHO vehiclenamehere 
                            ]
                        )
                    )
                    .OPERACIONES 
                    (
                        
                        (
                            OperCambiaFlagIntendencia 
                            [
                                .NOMBREFLAG objectiveflagnamehere 
                                .SETALVALOR  1.0 
                            ]
                        )
                    )
                ]
                [
                    .NOMBRE FIN_MISION 
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .CONDICIONES 
                    (
                        
                        (
                            CondMisionNoAbortada 
                            [
                            ]
                        )
                        (
                            CondBichosEnBichos 
                            [
                                .BICHOS alliesthatneedtobeinvehicle 
                                .BICHO_CONTENEDOR vehiclenamehere 
                                .NECESARIO_TODOS  1.0 
                            ]
                        )
                        (
                            CondBichoEnZona 
                            [
                                .BICHO vehiclenamehere 
                                .ZONA sensitivezonenamehere 
                            ]
                        )
                    )
                    .OPERACIONES 
                    (
                        
                        (
                            OperCambiaFlagIntendencia 
                            [
                                .NOMBREFLAG FL_OBES_CONSEGUIDOS 
                                .SETALVALOR  1.0 
                            ]
                        )
                    )
                ]

NOTE: It's also considered the possibility that the vehicle got destroyed, for more info scroll to the bottom.

Go to place

(this string is optional, you can use the Go To Place as an internal parameter, no need to forcely use it as an objective or clue)

  [
.NOMBRE GOTOPLACE
.FLITXT 0
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 3 .ZOOM 1 ]     .TARGET [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) ]

1st part:

                    [
                        .NOMBRE GOTOPLACE 
                        .VISINI  1.0 
                    ]

2nd part:

                [
                    .NOMBRE groupnamehere 
                    .BICHOS 
                    (
                        peoples_names_here_separated_by_at_least_one_space_each 
                    )
                ]

3rd part:

                [
                    .NOMBRE GOTOPLACE 
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .CONDICIONES 
                    (
                        
                        (
                            CondBichosEnZona 
                            [
                                .BICHOS groupnamehere
                                .ZONA sensitivezonename 
                                .NECESARIO_TODOS 0 
                            ]
                        )
                    )
                    .OPERACIONES 
                    (
                        
                        (
                            OperLanzaEvento 
                            [
                                .EVENTO eventname 
                            ]
                        )
                    )
                ]

NOTE: If you only need on person to go in a specific place, instead of .BICHOS, put .BICHO followed by the name of the person that has to go in that zone.
Of course you will have to delete .NECESARIO_TODOS 0 string. That string is useful when you want a group or someone of a group to go in that specific place; if set to 0, anyone of the .BICHOS group will be ok, if set to 1 the event will not be launched unless all people of the group will be in that place.
Also, instead of putting .NECESARIO_TODOS if you are considering a group that could have losses, you have to put .SOLO_VIVOS  1.0. By doing so, the game will consider the objective completed only when the survivors go to that place and it will automatically exclude the dead ones. 

Deactivate Mines

  [
.NOMBRE DESACTIVA_MINAS
.FLITXT 0
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 1 .ZOOM 1 ]
.INFOVISORSECUNDARIO [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 1 .ZOOM 2 ]
        .TARGET [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) ]
]

1st part:

                    [
                        .NOMBRE DESACTIVA_MINAS 
                        .VISINI  1.0 
                    ]

2nd part:

# nothing needed

3rd part:

                [
                    .NOMBRE DESACTIVA_MINAS 
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .CONDICIONES 
                    (
                        
                        (
                            CondEvento 
                            [
                                .EVENTO FDMT 
                                .NUM_MINIMO  x.0 
                            ]
                        )
                    )
                    .OPERACIONES 
                    (
                        
                        (
                            OperInfoJug 
                            [
                                .INFOJUG DESACTIVA_MINAS 
                                .ACCION CONSEGUIDO 
                            ]
                        )
                    )
                ]

NOTE: in place of x put the minimum number of mines that need to be deactivated.

Contact someone

   [
.NOMBRE Contacta_Aliado
.FLITXT 0
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 1 .ZOOM 1 ]
.INFOVISORSECUNDARIO [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 1 .ZOOM 2 ]
        .TARGET [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) ]

1st part:

                    [
                        .NOMBRE Contacta_Aliado
                        .VISINI  1.0 
                        .EVCON eventname 
                    ]

2nd part:

# nothing needed

3rd part:

# nothing needed

NOTE: to make the objective tick off correctly you need to use the events (see Editing .mis Files for more info).

Also, you can make an ally do something when contacted, this must be done through the .gsc files:

in the .gsc file add this code:

        [
            .NOMBRE groupname
            .MIEMBROS 
            (
                allyscriptnamehere ally_contacted_script_name_here
            )
            .SCRIPTS 
            (
                [
                    .NOMBRE allyscriptnamehere
                    .CRISELBI 
                    (
                        BICHO allynamehere
                    )
                    .FLAGS_REACTIVIDAD 
                    (
                        REACTIVO_VER_ENEMIGOS REACTIVO_OIR_SONIDOS SALIR_DEL_SITIO ATENDER_CADAVERES 
                    )
                    .SIMPLE  1.0 
                    .ORDENES 
                    (
                        # orders here
                    )
                ]
                [
                    .NOMBRE ally_contacted_script_name_here
                    .CRISELBI 
                    (
                        BICHO allynamehere
                    )
                    .FLAGS_REACTIVIDAD
                    (
                        REACTIVO_VER_ENEMIGOS REACTIVO_OIR_SONIDOS SALIR_DEL_SITIO ATENDER_CADAVERES 
                    )
                    .SIMPLE  1.0
                    .ORDENES 
                    (
                        # orders here
                    )
                ]
            )
            .SCRIPT_DE_GRUPO
            [
                .ORDENES 
                (
                    ! LANZAR_SCRIPT allyscriptnamehere
                    ! ESPERAR_CONDICION ( EVENTO eventnamehere )
                    ! LANZAR_SCRIPT ally_contacted_script_name_here
                )
            ]
        ] 

NOTE: The two scripts must be indicated in the same group, otherwise if declared in different groups, when the ally will be contacted he will not do what he was supposed to in the second script.

Show an item's location by zooming on the object

(used as clue only because will not tick off)

    [
.NOMBRE VISUAL_LOCATION 
.FLITXT 0
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 2 .ZOOM 1 ]
.INFOVISORSECUNDARIO [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 0 .ZOOM 2 ]
      # .TARGET [ .ESCENARIO EXTERIOR .XYZ ( 0 0 0 ) ]
]

1st part:

                    [
                        .NOMBRE VISUAL_LOCATION 
                        .VISINI  1.0 
                    ]

2nd part:

# nothing needed

3rd part:

# nothing needed

Take EVERYTHING from a container (box, furniture, crate, etc.)

    [
.NOMBRE Consiguecaja
.FLITXT 0
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 1 .ZOOM 1 ]
.INFOVISORSECUNDARIO [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 3 .ZOOM 1 ]
.TARGET [ .ESCENARIO EXTERIOR  .POS ( 0 0 0 ) ]

1st part:

                    [
                        .NOMBRE Consiguecaja 
                        .VISINI  1.0 
                    ]

2nd part:

# nothing needed

3rd part:

                [
                    .NOMBRE CONSEGUIR_CONTENIDO_CAJAS 
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .CONDICIONES 
                    (
                        
                        (
                            CondBichoVacio 
                            [
                                .BICHO containernamehere 
                            ]
                        )
                        (
                            CondBichoVacio 
                            [
                                .BICHO containernamehere
                            ]
                        )

                    )
                    .OPERACIONES 
                    (
                        
                        (
                            OperInfoJug 
                            [
                                .INFOJUG Consiguecaja
                                .ACCION CONSEGUIDO 
                            ]
                        )
                    )
                ]

Take away a particular item from a container

    [
.NOMBRE PIKA_ITEM
.FLITXT 0
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 1 .ZOOM 1 ]
.INFOVISORSECUNDARIO [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 3 .ZOOM 1 ]
.TARGET [ .ESCENARIO EXTERIOR  .POS ( 0 0 0 ) ]

1st part:

                    [
                        .NOMBRE PIKA_ITEM 
                        .VISINI  1.0 
                    ]

2nd part:

# nothing needed

3rd part:

                [
                    .NOMBRE PIKA_ITEM  
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .CONDICIONES 
                    (
                        
                        (
                            CondBichosEnBichos 
                            [
                                .BICHO itemnamehere 
                                .BICHO_CONTENEDOR containerholdingtheitem 
                                .NEGADA  1.0 
                            ]
                        )
                    )
                    .OPERACIONES 
                    (
                        
                        (
                            OperLanzaEvento 
                            [
                                .EVENTO eventnametolaunch 
                            ]
                        )
                        (
                            OperCambiaFlagIntendencia 
                            [
                                .NOMBREFLAG flagnameobjectivecomplete 
                            ]
                        )
                    )
                ]

Steal a Vehicle

    [
.NOMBRE ROBA_VEHICULO
.FLITXT 0
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 1 .ZOOM 1 ]
.INFOVISORSECUNDARIO [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 3 .ZOOM 1 ]
.TARGET [ .ESCENARIO EXTERIOR  .POS ( 0 0 0 ) ]

1st part:

                    [
                        .NOMBRE ROBA_VEHICULO 
                        .VISINI  1.0 
                    ]

2nd part:

                [
                    .NOMBRE groupnamehere 
                    .BICHOS 
                    (
                        peoples_names_here_separated_by_at_least_one_space_each 
                    )
                ]

3rd part:

                [
                    .NOMBRE VEHICULO_ROBADO 
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .CONDICIONES 
                    (
                        
                        (
                            CondBichosEnBichos 
                            [
                                .BICHOS groupnamehere 
                                .BICHO_CONTENEDOR vehiclenamehere 
                            ]
                        )
                    )
                    .OPERACIONES 
                    (
                        
                        (
                            OperInfoJug 
                            [
                                .INFOJUG ROBA_VEHICULO 
                                .ACCION CONSEGUIDO 
                            ]
                        )
                    )
                ]

Leave place

    [
.NOMBRE ABANDONO_PERICULO
.FLITXT 0
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 3 .ZOOM 1 ]
.INFOVISORSECUNDARIO [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 2 .ZOOM 1  ]
.TARGET [ .ESCENARIO EXTERIOR  .POS ( 0 0 0 ) ]
]

1st part:

                    [
                        .NOMBRE ABANDONO_PERICULO 
                        .VISINI  1.0 
                    ]

2nd part:

# nothing needed

3rd part:

                [
                    .NOMBRE REGLA_ABANDONO_PERICULO
                    .OPERACIONES 
                    (
                        
                        (
                            OperLanzaEvento 
                            [
                                .EVENTO eventnamehere 
                            ]
                        )
                    )
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .TIPOANDOR AND 
                    .CONDICIONES 
                    (
                        
                        (
                            CondZonaConSoldados 
                            [
                                .NEGADA  1.0 
                                .CUANDOCOMPROBAR SIEMPRE 
                                .ZONA senstitivezonenametoleave
                                .BANDO ALIADOS 
                            ]
                        )
                    )
                ]

NOTE: This code is useful if you want to make somebody leave a place; this somebody can be an enemy or ally. To decide who, simply put .BANDO ALIADOS for allies and .BANDO ALEMANES for enemies.
Also note that: .TIPOANDOR can be of two types, AND or OR, the difference between the two is that with AND , by putting more conditions, all of them need to be completed to make the objective be declared completed, while with OR, satisfying only one of the conditions will make the objective completed.

Hide Somewhere

    [
.NOMBRE ESCONDETE_EN_MALEZA
.FLITXT 0
.POSMAPA ( 0 0 0 )
.INFOVISORPRINCIPAL  [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 3 .ZOOM 1 ]
.INFOVISORSECUNDARIO [ .ESCENARIO EXTERIOR .POS ( 0 0 0 ) .CAMARA 2 .ZOOM 1  ]
.TARGET [ .ESCENARIO EXTERIOR  .POS ( 0 0 0 ) ]
]

1st part:

                    [
                        .NOMBRE ESCONDETE_EN_MALEZA 
                        .VISINI  1.0 
                    ]

2nd part:

                [
                    .NOMBRE ESCONDITES 
                    .BICHOS 
                    (
                        # all the hiding places names here ex.  ESCONDITE_01 ESCONDITE_02 
                    )
                ]

3rd part:

                [
                    .NOMBRE ESCONDERSE_EN_MALEZA 
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .CONDICIONES 
                    (
                        
                        (
                            CondBichosEnBichos 
                            [
                                .BICHOS groupnamehere 
                                .BICHOS_CONTENEDORES ESCONDITES 
                                .NECESARIO_TODOS 0 
                            ]
                        )
                    )
                    .OPERACIONES 
                    (
                        
                        (
                            OperInfoJug 
                            [
                                .INFOJUG ESCONDETE_EN_MALEZA 
                                .ACCION CONSEGUIDO 
                            ]
                        )
                    )
                ]

End of Mission Conditions

You can also put end of mission conditions, if one of them becomes true, then the mission will be aborted.
First of all, search for .OBJETIVOS_ESPECIALES and add to this part of code .FLAGS_ABORTADOS:

                .OBJETIVOS_ESPECIALES 
                [
                    .FLAGS_ABORTADOS 
                    (

                    )

For ecample, Allied Soldiers died:

Inside .FLAGS_ABORTADOS you must write the condition for which the mission will be aborted, here is an example:

                .OBJETIVOS_ESPECIALES 
                [
                    .FLAGS_ABORTADOS 
                    (
                        FL_CHUSMA_MUERTOS MUCH
                    )

NOTE: MUCH is the name of the phrase that will come out on your screen if the condition becomes true and will abort the mission, it must be written in the mission .str file. For example:

MUCH Too many allied soldiers have died.

After that, inside .FLAGS add this code:

            .FLAGS 
            (
               FL_CHUSMA_MUERTOS
            )

and in REGLAS this one:

               [
                    .NOMBRE CHUSMAS_MUERTOS 
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .CONDICIONES 
                    (
                        
                        (
                            CondBichosMuertos 
                            [
                                .BICHOS CHUSMA 
                                .CANTIDAD  5.0
                            ]
                        )
                    )
                    .OPERACIONES 
                    (
                        
                        (
                            OperCambiaFlagIntendencia 
                            [
                                .NOMBREFLAG FL_CHUSMA_MUERTOS
                                .SETALVALOR  1.0 
                            ]
                        )
                    )
                ] 

NOTE: .CANTIDAD  5.0 is the number of allies that must die to make the mission abort.

You must put this code in LISTAS_BICHOS:

                [
                    .NOMBRE CHUSMA 
                    .BICHOS 
                    (
                        Chusma_01 Chusma_02 Chusma_03 Chusma_04 Chusma_05 Chusma_06 Chusma_07 Chusma_08 Chusma_09
                    )
                ]

Chusma_01, Chusma_02, etc. are the names of your allies (which you can modify as you wish). 

Here is the code for one person:

                [
                    .NOMBRE REGLA_MUERTE_ALIADO 
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .TIPOANDOR AND 
                    .CONDICIONES 
                    (
                        
                        (
                            CondBichoMuerto 
                            [
                                .CUANDOCOMPROBAR SOLOHASTAPRIMERTRUE 
                                .BICHO allynamehere 
                            ]
                        )
                    )
                    .OPERACIONES 
                    (
                        
                        (
                            OperCambiaFlagIntendencia 
                            [
                                .NOMBREFLAG FL_MUERTO_ALIADO 
                            ]
                        )
                    )
                ]

This can also be used to make missions complete or simply, when an objective is complete, to make it tick off without using the events, you must first put in the objective, then in the 3rd part inside .OPERACIONES this code:

                    .OPERACIONES 
                    (
                        
                        (
                            OperInfoJug 
                            [
                                .INFOJUG objectivenamehere 
                                .ACCION CONSEGUIDO 
                            ]
                        )
                    )

By doing this, the game will go check if that objective has been declared before inside.FLAGS:

            .FLAGS 
            (
                objectivenamehere 
            )

If the game finds it, upon completion, that objective will tick off.
NOTE: Usually to end a mission, you will call the objective FIN_MISSION (or anyway you like) and inside .FINMISION you will add the flag that declares the mission complete:

            .FINMISION
            [
                .BICHOSVIP 
                (
                    
                    [
                        .BICHO ARTIFICIERO 
                    ]
                    [
                        .BICHO COMANDO 
                    ]
                    [
                        .BICHO CONDUCTOR 
                    ]
                )
                .OBJETIVOS_ESPECIALES 
                [
                    .FLAG_CONSEGUIDO FL_OBES_CONSEGUIDOS 
                ]

in our case the flags name is FL_OBES_CONSEGUIDOS  and we must call it like that at the end of any final objective:

                    .OPERACIONES 
                    (
                        
                        (
                            OperInfoJug 
                            [
                                .INFOJUG FL_OBES_CONSEGUIDOS  
                                .ACCION CONSEGUIDO 
                            ]
                        )
                    )

Message Notification
(check Editing the Briefings Tutorial for more info)

                [
                    .NOMBRE LANZAR_BRIEFING_ALIADOS 
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .CONDICIONES 
                    (
                        
                        (
                            CondEvento 
                            [
                                .EVENTO eventnametostartthis 
                            ]
                        )
                    )
                    .OPERACIONES 
                    (
                        
                        (
                            OperNotificaBriefing 
                            [
                                .MSG messagename 
                            ]
                        )
                    )
                ]

NOTE: It's used to notify the briefing that an event has been triggered.

You can use multiple events to make an event be launched only after several events have been completed:

                [
                    .NOMBRE multipleevents 
                    .OPERACIONES 
                    (
                        
                        (
                            OperLanzaEvento 
                            [
                                .EVENTO maineventnamehere 
                            ]
                        )
                    )
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .TIPOANDOR AND 
                    .CONDICIONES 
                    (
                        
                        (
                            CondEvento 
                            [
                                .EVENTO 1steventnamehere 
                                .CUANDOCOMPROBAR SOLOHASTAPRIMERTRUE 
                            ]
                        )
                        (
                            CondEvento 
                            [
                                .EVENTO 2ndeventnamehere 
                                .CUANDOCOMPROBAR SOLOHASTAPRIMERTRUE 
                            ]
                        )
                        (
                            CondEvento 
                            [
                                .EVENTO 3rdeventnamehere 
                                .CUANDOCOMPROBAR SOLOHASTAPRIMERTRUE 
                            ]
                        )
                    )
                ]

NOTE: Of course you can add more than three but no use to add less than two, I hope you agree.
You can use .TIPOANDOR in all the objectives.

Launch Event upon somebodies death

                [
                    .NOMBRE If_Death_Then_Do 
                    .CUANDOEJECUTAR SOLOLAPRIMERAVEZ 
                    .TIPOANDOR OR 
                    .CONDICIONES 
                    (

                        (
                            CondBichosMuertos 
                            [
                                .CUANDOCOMPROBAR SOLOHASTAPRIMERTRUE 
                                .BICHOS gropunamehere 
                                .CANTIDAD  x.0 
                            ]
                        )
                    )
                    .OPERACIONES 
                    (
                        
                        (
                            OperLanzaEvento 
                            [
                                .EVENTO eventnamehere 
                            ]
                        )
                    )
                ]

Comments