Respawning Items
This is a tutorial for creating respawning items that can be either placed at a position, or dropped from the sky.
Step by step
First, create your room however you want it, or open up an existing map.
Entities
The following entities will be used:
- point_template - makes copies of the item to spawn.
- env_entity_maker - spawns the item in the game.
- logic_case - used to trigger
the env_entity_maker
. - logic_timer - used to trigger the
logic_case
and select a random spawner.
Item templates
Now, place into the level the item you want to spawn (e.g., item_healthkit) and name it spawned1
.
Place near this a point_template, name it template1
and set the Template 1 property to spawned1
.
Repeat this process for every other item you want to be able to spawn, remembering to use different names (e.g., spawned1
becomes spawned2
and template1
becomes template2
).
Add your entity makers
Place around your map a number of env_entity_maker entities. The first one should be named spawner1
and each should be named in a consecutive manner (i.e., spawner1
, spawner2
, spawner3
and so forth).
Each of these should have their Point_template To Spawn property set to the template you want to spawn (e.g., template1
).
Add your logic_case
The logic_case entity will contain a list of all the env_entity_maker entities, and will be used to make the entities spawn.
Begin by naming your logic_case logic_spawner
and giving a value to each Case xx property. You can simply put a number in each, counting upwards. Only put as many values in as you have env_entity_maker entities though.
On the Output tab, add an output for each env_entity_maker you have. Set each to a different OnCaseXX output, and put the name of the env_entity_maker you want to spawn in the target field (e.g., spawner1
) and set the input to be ForceSpawn.
Add your timer
The logic_timer will be used to make each item spawn. It works by using the PickRandomShuffle input of the logic_case.
Add your logic_timer and set Start Disabled to No
. Under Refire Interval set the delay (in seconds) of how often you would like your items to spawn. For testing purposes, I used a value of 2.
Add the following output to your logic_timer:
- My output named:
OnTimer
- Target entities named:
logic_spawner
- Via this input:
PickRandomShuffle
Test your map
Compile and test your map. If something does not work, try downloading the sample map and see if you missed anything.
Respawning a destroyed prop
If you follow the steps provided above your prop will respawn on a timer, as you may have noticed, regardless of whether or not the prop was destroyed... this could be problamatic. If you only want the prop to respawn once it has been destroyed, for example: an explosive oildrum... you don't want 500 of them on your map, you only want a number corresponding to the number of env_entity_maker which you placed.
To make a prop respawn once it has been destroyed:
1) Select a particular env_entity_maker press "alt+enter" to bring up the entity's properties
2) Click on the "flags" tab at the top
3) Check "autospawn: wait for entity destruction"
4) Check "force spawn: only if there's room"
5) Click "apply"
6) After saving your map it's now ready to compile... a note: you may also want to check "autospawn: even if the player is looking" so that you can see it happen.
A few final notes:
1) You WILL still need the logic_timer as it controls how long the env_entity_maker waits after the prop's destruction before recreating it.
2) This portion of the tutorial is not in the sample map.
Samples
A sample map demonstrating this tutorial is available for download.