This tutorial will explain how to add new interactable points to AC6 maps. These are places where the player can use the F key to start a 'connection' and after the connection is complete, something may occur. In vanilla, these are normally the ACCESS points that you interact with.

Tools

You will need the following tools:

  • Smithbox: to edit the params and the maps. You can find that here.
  • DarkScript: you will need to a release specific build of DarkScript, which has support for AC6 EMEVD. You can find that here.

Adding the Interaction Point

Load the map you want to add the interaction point to.

To create a interaction point, you will need to create a new Enemy map object with these attributes:
- Entity ID: set to an unique ID you can refer to in EMEVD.
- Action Button ID: set to the Action Button Param row you want to cover this interaction. Row 20100010 is an example of one used for an ACCESS point.
- NPC Param ID: set to any NpcParam row. However, if you want to be idiomatic, you should duplicate an existing one in the 99800000 range.
- Think Param ID: set to 99800000.
- Talk ID: set to 510 (this is the interaction ESD script).

Note, if the NpcParam row you used has the row 9994847 SpEffect already added within it, you can ignore the EMEVD instruction regarding it.

Tweaking the Interaction Point

Assuming you have followed the previous instructions correctly, you should now see the interaction marker in-game.

You will likely want to tweak how the point is displayed, depending on what you are using it with.
The key component here is the ActionButtonParam row, which determines how the marker appears and can be interacted with.

Fields of note;

  • leftRightOffset: determines part of the horizontal location of the marker from the associated enemy map object's origin. Positive values are to the right of the origin, negative to the left.
  • frontBackOffset: determines part of the horizontal location of the marker from the associated enemy map object's origin. Positive values are to the front of the origin, negative to the back.
  • verticalOffset: determines part of the vertical location of the marker from the associated enemy map object's origin. Positive values are above the origin, negative below.

Adding the EMEVD Script

You now have an interactable point, but now you need to add the logic that is executed after it is used. This is fairly simple. Load the EMEVD file for the map you have placed the interactable point in in DarkScript.

In the Event 0 function, place the following:

InitializeEvent(0, 3000, 0);

This will call the event with the ID of 3000, which will will create shortly.

Below the rest of the code, place the following:

Event(3000, Default, function() {
    IfEnemyActionButton(MAIN, 0, 0, 275);

    // Your own logic here
});

This will wait until the enemy map object with the Entity ID of 275 has been interacted with. This entity ID should be the same as the one you used early when setting up the enemy.

Notes

Note, the interaction script requires the 9994847 SpEffect to be present on the interaction map object for the interaction ESD script to work. By default the dummy marker NpcParam rows have this, but if you don't want to always allow usage of the interaction map object, for example if you want it to unlock after a specific point, you can add the SpEffect yourself in EMEVD, allowing you to control when the interaction point appears.

It would look like this:

SetSpEffect(275, 9994847);

Conclusion

This tutorial covers the basic implementation details for adding in a new interaction point. However, the full extent of what you can do is much more, and is up to you to discover.