Essentials Series/Tikis and Enemies

This page is part of the Essential Series modding tutorials. It will cover how to use Industrial Park to place tikis and enemies in a level, and cover use of the Import HIP function (which is also useful for things other than tikis and enemies).

Placing Tikis and Enemies
You can simply use one of the templates to place the tiki or enemy you want in the level. Enemies and tikis are VIL assets. Place them in the Default layer of the HIP. If an object of that type already existed in the level (such as a Fodder or Floating Tiki in JF01), they will function immediately. However, if you're adding a new one (such as a Chuck in JF01, or anything to a new level which you made starting from the blank HIP/HOP as detailed in ../Custom Models/), you must import the HIP of the enemy to the level's HOP, otherwise the game will crash!

Other Games
Placing enemies and crates in Movie Game is very similar to BFBB, with the difference that they are DYNA assets and not VIL. In Scooby, enemies are NPC assets. The rest of the information should apply similarly.

Importing HIPs
If you haven't yet, click on Download IndustrialPark-EditorFiles, under the Tools tool strip menu. This downloads the contents of the IndustrialPark-EditorFiles repository to your Resources folder. It contains the HIP archives for enemies and many other objects. This might take a bit depending on your connection as the repository is currently around 17 MB and it might increase as we add new files to it. The repository is often updated with more files and newer versions, so you can use the Check For Updates on EditorFiles button to see if there have been any changes to it and download it again. If you spot a mistake or want to contribute to the repository (any new useful HIP is welcome!) talk to us in the Modding Discord.

With the repository downloaded, you can use Edit -> Import HIP Archive in the Archive Editor to choose a HIP, HOP or Settings.ini file (from HipHopTool-style exported archive) to import. All layers and assets from the selected file will be added to the current one. Layers will be ordered by the default order used in the game. If an asset with the same ID is already present, you will be prompted whether to overwrite it or not, except for COLL, JAW, LODT, PIPT, SHDW and SNDI, all of which will be merged into one single asset. It is recommended to do this to the stage's HOP, not the HIP, as the files in the EditorFiles repository sometimes contain sounds, which should be all in the HOP.

Importing HIPs is useful not only for enabling enemy and tiki types in your level, but also items such as the button, pressure plate, bus stop, Texas hitch, throw fruits, and even Patrick and Sandy themselves (you must import their HIPs to be able to use them in a level). Importing too many HIPs, however, will cause the game to crash as it cannot handle too many different things in the same level at once (it's very unlikely that the game will work with one of each enemy type placed in the level).

Move Points
You already know how to place any enemy in any level now. Each of the enemy templates will place two assets: the enemy itself and a MVPT. The MVPT is a move point, an asset which defines how the enemy will move. If you open the move point in an Asset Data Editor, you'll be able to edit two important properties: the ZoneRadius, which defines the radius of the area the enemy will move in, and the ArenaRadius, which acts similar to a trigger and defines the distance the enemy can see you.

Chuck, Monsoon and Slick
These enemies have two templates each, one with a trigger and one without. Unlike other enemies, which use move points to detect the player, these only use the move points to move, and detect the player through events, which can be sent by triggers or even other assets. If you place the template that doesn't include a trigger, you have to create the events for the enemies yourself in other assets, otherwise the enemy might be targetting the player 100% of the time!

Moving along a path
Many of the enemies in the original game do not move simply inside the radius of a move point, but rather follow a set path. This behavior is replicable using a different type of move point. To do this, you must use the Point_MVPT template.
 * 1) Place as many Point_MVPT a you need to create the path that the enemy should follow (and try to give them descriptive names in the Asset Header Editor).
 * 2) In the Asset Data Editor for each MVPT, set the NextMVPTs so that each one will lead to the following (the first NextMVPT of the first MVPT should be the second one, and so on), creating a chain.
 * 3) You can create a path of as little as 2 points which lead to each other, or as many as you want.
 * 4) The last one should lead back to the first one, otherwise the enemy will simply stop at it.
 * 5) After the path is done, you must still define the radius of the area which the enemy can see you. You can use the Area_MVPT template to create the area MVPT (or just use the MVPT that came with the enemy template if you haven't deleted it).
 * 6) Make sure the second NextMVPT of each MVPT in the chain is set to the Area one.
 * 7) The enemy VIL should be placed close to the fist point of the chain and, in the VIL asset editor, the MovePoint_AssetID field should be set to this first point (not the Area one!).
 * 8) The Area MVPT needs no NextMVPTs.

Note: under Tools, activate Templates: Chain Point MVPTs. This will automatically create a chain, linking each point MVPT to the previous one once you place a template. Double-check the connections (specially on the first and last points) to make sure they are correct after creating your chain.

Events
Many events can be sent to or received by enemies. These are some of them:


 * Kill: send this to a VIL to kill them. They will act as if killed by the player, making an explosion and giving shiny objects. If you want it silent, use NPCSetActiveOff.
 * Death: the VIL sends this event to itself when it's killed.
 * Respawn: send this event to a VIL to make it respawn at its original position.
 * NPCSetActiveOn: this will turn the enemy on, making it appear.
 * NPCSetActiveOff: this will turn off the enemy, making it disappear.
 * DetectPlayerOn: this will cause the enemy to "see" the player and begin attacking. The Chuck, Monsoon and Slick triggers from the templates use this, but it works on any enemy.
 * DetectPlayerOff: this will cause the enemy to "unsee" the player and stop attacking. The Chuck, Monsoon and Slick triggers from the templates use this, but it works on any enemy.
 * Connect_IOwnYou: this event is used by Arfs and Tubelets to connect to their Arf Dawgs or the two slave Tubelets. When placing the templates, Industrial Park will set these events automatically, but you can use this if you want to give the Arf more Dawgs, for example. Tubelets must have exactly two slaves, though.