> For the complete documentation index, see [llms.txt](https://slashin8r.gitbook.io/universal-monster/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://slashin8r.gitbook.io/universal-monster/features/monsters/character-blueprint/interface.md).

# BPI\_UniversalMonster

**Universal Monster** utilizes interface functions for easy integration with other **non-UM** systems. Any character that will be using **Universal Monster** will also need to implement the **BPI\_UniversalMonster** interface and setup its functions.

## Add the BPI\_UniversalMonster interface to your Character

![Click on Class Settings](https://2501426749-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbsB8IAdQC_jVeRoJ70%2F-Mh-IPw76VqvBs-9_xLc%2F-Mh-JDUHmEQdLhECIw-W%2Fimage.png?alt=media\&token=bc0beee0-38d8-48f7-b4a5-8f644e5f9b67)

![Under Interfaces, click Add](https://2501426749-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbsB8IAdQC_jVeRoJ70%2F-Mh-IPw76VqvBs-9_xLc%2F-Mh-JPcUJycRO20CZcBH%2Fimage.png?alt=media\&token=9b91f1c7-8d57-42eb-96d0-32b518fddf86)

![Search for UniversalMonster and select BPI\_UniversalMonster](https://2501426749-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbsB8IAdQC_jVeRoJ70%2F-Mh-IPw76VqvBs-9_xLc%2F-Mh-Jb0aku1SVKo3BAA6%2Fimage.png?alt=media\&token=a47d03b0-62e5-4002-bd45-adf726e909f6)

![Your Character will now show BPI\_UniversalMonster as an Implemented Interface](https://2501426749-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbsB8IAdQC_jVeRoJ70%2F-Mh-IPw76VqvBs-9_xLc%2F-Mh-JnkSH4wSN-oDMXp8%2Fimage.png?alt=media\&token=630e1a2b-6e71-4fe4-a2fb-6f1565fa7e2d)

![Your Character will now have UM interface functions to setup](https://2501426749-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbsB8IAdQC_jVeRoJ70%2F-Mh-IPw76VqvBs-9_xLc%2F-Mh-K0EsTH-yJSGROuFP%2Fimage.png?alt=media\&token=22c33272-79e0-48a8-b9fa-19614dba98b3)

## Stats/Attributes System

**UM** does not come with a built-in **Stats/Attributes System**, it does have a basic health system, but it is not recommended for you to use this. You will need to create your own **Stats/Attributes System** or use one you have purchased from the **Unreal Engine Marketplace**. **UM** intentionally leaves this system out because there is no way for the **UM** system to know which types of stats and/or attributes you wish to use in your project. **Universal Monster**, however, is capable of using the information from any other stats/attributes system for its decision making. Below are examples of setting up the **Get Stat** and **Set Stat** interface functions to grant **UM** access to their values.

![Example of the Get Stat interface function for integration with Survival Game Kit v2](https://2501426749-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbsB8IAdQC_jVeRoJ70%2F-Mgg0ViWpWDOhiXuMY2F%2F-MggENWhWf_syJ_9YkFK%2Fimage.png?alt=media\&token=40721bec-ce0c-43e0-a9f9-f23c07f3443a)

![Example of the Set Stat interface function for integration with Survival Game Kit v2](https://2501426749-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbsB8IAdQC_jVeRoJ70%2F-Mgg0ViWpWDOhiXuMY2F%2F-MggEaono0MCVdnKHw51%2Fimage.png?alt=media\&token=81e26a96-0c8c-4734-a872-dffa84511f5a)

### Stat Names

All of the **Stat Names** are stored in **E\_StatName** which can be edited to add or remove more **Stat/Attribute** types.

![](https://2501426749-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbsB8IAdQC_jVeRoJ70%2F-MkiOdYm7fP7An85XJnb%2F-MkiP7A3CKUt1U1VbqFZ%2Fimage.png?alt=media\&token=d02a5bbd-9c16-4f9d-b3d8-fcd0ee3bde1b)

## Save System

**Universal Monster** uses its own save game to keep track of the faction system data and it needs a way to link the current faction data to the current save game slot. **UM** will still store its information in a separate file, but it will use the current slot name as its prefix and "\_UM" as its postfix. For example, save game named "New Game" will have its own save file called "New Game.sav" and a Universal Monster save file called "New Gam&#x65;*\_*&#x55;M.sav".

![Example of the Get Slot Name interface function for integration with Survival Game Kit v2](https://2501426749-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbsB8IAdQC_jVeRoJ70%2F-Mgg0ViWpWDOhiXuMY2F%2F-MggGWQ6XMe9LbTJ2j0T%2Fimage.png?alt=media\&token=a24851b2-c7fc-40fa-942b-029d02cc1a4e)

## Damage System

**Universal Monster** handles when to trigger hits based on its melee, projectile, and special attack hit detection, but it technically does not know what to do with the hits it generates. This is where you would tie in your damage system. As stated above in **Stats/Attributes**, **UM** does come with a basic health system, but this is meant for demonstration purposes only. More than likely you will be using a more robust damage system and will need to be able to utilize hits determined by **Universal Monster**. The **UMHit** interface function is specifically for this purpose. Every single successful hit generated by **UM** will call this interface function and you can use it to call your own damage system's functions.

![Basic example of the UMHit interface function that comes with Universal Monster](https://2501426749-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbsB8IAdQC_jVeRoJ70%2F-MggHzrpXW-7uKM3SvdV%2F-MggKBtbHNkn_GYR5L6L%2Fimage.png?alt=media\&token=c5b4d919-2fe6-46c0-9bb9-9e076aa12613)

![The Apply Damage macro uses all the provided information needed to call the Apply Damage function](https://2501426749-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbsB8IAdQC_jVeRoJ70%2F-MggHzrpXW-7uKM3SvdV%2F-MggLXa1mCD0EUg85ERP%2Fimage.png?alt=media\&token=4d14efe8-e846-4a06-a389-b897684da187)

## Custom Events

### Hit Effect

With **Universal Monster** you can provide custom hit effects for any attack. When the target is hit, and that target is using **UM**, it will call the **Hit Effect** interface function for all custom hit effects listed in the attack. Each custom hit effect will be given a name in which you can use to call custom logic. You can also pass along custom information that you can input into the provided arrays. You will need to know what each index of the arrays represents, but since it is your own custom code, that should be no problem.

![Example of creating a Camera Shake effect using two floats](https://2501426749-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbsB8IAdQC_jVeRoJ70%2F-MggHzrpXW-7uKM3SvdV%2F-MggLuSmlw5gU5QXEO_W%2Fimage.png?alt=media\&token=218acc72-1b20-4733-9fb6-6a219d608e1d)

### Task Event

**Universal Monster** can also trigger custom events for any behavior task. This function is called at the beginning of every task and also during the **Find Task** at the moment it finds what it was searching for.

![Example of using a switch on task type to determine the custom code to run](https://2501426749-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbsB8IAdQC_jVeRoJ70%2F-MggHzrpXW-7uKM3SvdV%2F-MggN90yiieJO86N1CiQ%2Fimage.png?alt=media\&token=302ba187-5378-4eb7-a44a-72dc4a66dedc)

## Bullets

**Universal Monster** also has its own **Bullet** trace system which takes into account gravity, drag (air resistance) and wind. Every weapon and/or **Bullet** can have its own settings, such as velocity, accuracy, number of traces and for how many seconds of travel it will calculate those traces (the trace is still instant, but this setting will make it trace the distance the **Bullet** would have travelled in the chosen seconds). How you get and setup your **Bullet** info is up to you, but I recommend a map of mesh/string/name to **Bullet** info struct so that you can use the equipped weapon, or the bullets used the weapon, to determine the **Bullet** info being used. You can then setup the starting location (usually the end of the gun barrel), the direction (usually the direction the gun barrel is facing), the gravity and the wind.

![Example of the Get Bullet Info interface function for integration with Easy Survival RPG](https://2501426749-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MbsB8IAdQC_jVeRoJ70%2F-MggPtsjZfFdmiLPqzFK%2F-MggScourtE7ITr4SHgd%2Fimage.png?alt=media\&token=77fdad8b-8870-498f-970e-133e1266e246)
