WiseNPC06: NPC Helicopter
This tutorial was originally created by wisemx. It was originally posted on SDKnuts.net.
Events in this project:
- Helicopter takes off.
- Begins patrol of the area.
- Drops a single bomb.
- Begins shooting at Rebel Citizen.
- Citizen fires Rocket and destroys Chopper.
From my experience
npc_helicopter takes trial and error to get it performing the way you want. On the other hand it’s loaded with options. With its extensive IO commands you have a lot of control over this beast. Experiment with the sample file below, add more inputs for it, get it to make a bombing run, etc.
Navigation for the
npc_helicopter is done with
info_node_air entities. It has a nice AI system that will allow it to patrol the area where you place these entities. Navigation for the
npc_citizen is done by placing
info_node entities on the ground. Some of the aspects of the Chopper that I don’t cover in this project are the avoidance and target systems you can use.
In this project I simply added one
path_track gave it a name and then with it selected held and I would drag a clone to a new location. The process was repeated until all four were created then for the forth I added the name of the first
as its Next Stop Target. The whole process only takes a few seconds. The
info_node_air entities are placed randomly around the map to give the Chopper a running path away from the tracks. It will drift along the combination of these entities.
These are the properties for each of the entities used in this project.
- Name: heli01
- Flags: Loud Rotor wash sound, Helicopter lights, More aggressive attacks, Await input, Fall to ground, Long Visibility
My Output Target Entity Target Input Parameter Delay Only Once OnDamaged heli01 Break 0.25 Yes
Once the Citizen fires a rocket at the Chopper, and hits it, the Chopper will break apart 0.25 seconds later. Remove this behavior for the normal effect; it will take around 20 rockets to destroy it. (Porter's note: Exactly what difficulty setting are you ON?)
- Name: cit01
- Damage filter: damagefilter1
- Weapons: RPG
- Type: Rebel
- Model: Female 1
- Flags: Random Head, Not commandable, Random female head, Fall to ground, Long Visibility, Fade corpse
By adding this damage filter the Chopper will not be able to hurt our Citizen.
- Class: filter_damage_type
- Name: damagefilter1
- Filter mode: Allow entities that match criteria
- Damage type: GENERIC
Each of the key players in this project has an
- Name: ai01, ai02 and ai03
- Subject: cit01, heli01 and heli01
- Target: heli01, cit01 and !player
- Disposition: Hate, Like and Neutral
- Radius for subject: 0
- Disposition priority: 100, 5 and 5
- Start active: No, Yes and Yes
- Reciprocal: No
Notice that all of the work is done from this one trigger. The key is getting the timing right. By adding a few scripted sequences this scene could really come to life.