[Tutorial]Osprey and rapelling grunts

Using the Osprey needs some extra entities to work properly. Here is how it is done:

  1. Create a large outdoor map. The osprey needs lots of space to function properly.

  2. Put in the npc_osprey.
    Name: osprey
    Name of template NPC 1: osprey_grunt1
    Name of template NPC 2: osprey_grunt2
    Name of template NPC 3: osprey_grunt3
    Name of template NPC 4: osprey_grunt4

The osprey can reinforce up to 8 grunts. For this tutorial we’ll limit it to 4 grunts.

  1. Create 9 path_tracks. Name them “osprey_m1” up to “osprey_m9”. Do not use “Next Stop Target” in this case. We’re going to connect the paths together with the Output. Go to “osprey_m1” and enter the Output:
    OnPass > osprey > FlyToSpecificTrackViaPath > osprey_m2

Using that output, connect m1 to m2, m2 to m3, etc. m9 should connect back to m1. Set up the paths in a circle like so:

  1. Now pick 1 path to serve as your entry point and one path to be the drop-off point, where the grunts rappel down. In my example the [COLOR=‘SeaGreen’]green circle (osprey_m5) is the [COLOR=‘SeaGreen’]entry point. Ideally this point should be out of the player’s view. The [COLOR=‘Red’]red circle (osprey_m1) the [COLOR=‘Red’]drop-off point. Make sure this point is a bit lower than the other points, so the osprey makes a small descent when approaching.

You’ll need to tell the osprey which points is the [COLOR=‘SeaGreen’]entry point and which is the [COLOR=‘Red’]drop-off point. Go into the npc_osprey and enter this into it’s output:
OnReadyToMoveDeployZone > osprey_m5 > FireUser1
OnReadyToRetreat > osprey_m1 > FireUser1

Go to your [COLOR=‘SeaGreen’]entry path (osprey_m5) and change the “OnPass” output to “OnUser1”. Also add:
OnPass > osprey > WaitHereTillReady

Go to your [COLOR=‘red’]drop-off path (osprey_m1) and change “OnPass” output to “OnUser1”. Also add:
OnPass > osprey> BeginRappellingGrunts

  1. Time to set up the grunts. Create a npc_human_grunt:
    name: osprey_grunt1
    squad name: grunt_squad
    Tag Flags: Fall to the Ground, Template NPC.

In the same fashion create osprey_grunt2, osprey_grunt3 and osprey_grunt4. You can use npc_human_commander and npc_human_medic for some variation.

  1. Compile the map and wait for the osprey to drop the grunts. When you kill 2 out of 4 grunts, the osprey will return and reinforce the squad. The sequence works, but after rappelling the grunts just stand around. We want them take up tactical positions after insertion. Here is how that is done:

  2. At the drop-off point, create an assault_rallypoint.
    Name: osprey_grunt1_rally
    Assault point: osprey_grunt1_assault
    Urgent: Yes

Also create an assault_assaultpoint.
Name: osprey_grunt1_assault
Allow Diversion: Yes
Diversion Proximity: 512
Attack Tolerance: Medium (6).

Find “osprey_grunt1” and enter this in his Output field:
OnRappelTouchdown > !self > Assault > osprey_grunt1_rally

(Note that !self is displayed red. Ignore that error)

Do the same for the other 3 grunts. Each grunt should have his own !self output, rallypoint and assaultpoint. So osprey_grunt2 goes to osprey_grunt2_rally and osprey_grunt2_assault, etc.

Now set up some static objects and drag the assaultpoints there. You can set the grunts to Force Crouch behind the objects if you want. Make sure their line of movement is clear so grunts don’t bump into eachother. Also add some info_nodes or info_hints for AI navigation. It could look like this:

  1. All done! Compile and watch the action! :slight_smile:

UPDATE

The osprey will keep dropping grunts untill it is destroyed. If you want it to retreat after dropping a certain number of grunts, you can set up the following sequence (this is not included in the example VMF):

  1. Create a new path_track called “osprey_retreat”. Put it somewhere where you want the osprey to retreat to. Preferably there where players can no longer see it. In the Output enter:
    OnPass > osprey > Kill.

This will make the osprey disappear once it hits this path_track.

  1. Add a math_counter:
    Name: osprey_grunt_counter
    Maximum Legal Value: 10

This will trigger once 10 grunts have spawned. In it’s Output add:
OnHitMax > osprey > FlyToSpecificTrackViaPath > osprey_retreat

  1. In all grunt templates (osprey_grunt1 to 4) add the following output:
    OnRappelTouchdown > osprey_grunt_counter > Add > 1

And you’re done. Every time a grunt rappels down, it add 1 point to the math_counter. Once it hits 10 points, it will trigger the Ospreys retreat.

Example VMF can be downloaded here.

Awesome tutorial.

Shouldn’t this be in help and support or something, though?

Thanks!

Not sure about where to put mapping tutorials. I’ve send a PM to a moderator a while ago about creating a mapping forum, but never got any reply.

Why would you want an infinite-grunt-osprey, though? I thought that that was one of the things people disliked about BM’s Surface Tension.

Because that is how the gameplay mechanic was meant to work. The Osprey will keep dropping grunts into the area, so if the player wants to beat the map he has to cut off the source, aka take that motha down.

If you want the Osprey to only drop a limited amount of grunts you can set up a math_counter. I’ll add that to the tutorial later.

Actually, this is being looked into.

That would be awesome :slight_smile: A forum for mapping related questions, guides, tutorials and show-off threads would be really nice. You can be sure a lot of Source and older Goldsource mappers will try making singeplayer and multiplayer maps with your content.

I’ve moderated mapping forums for years, so if you need any help or suggestions, let me know!

Tutorial updated as per Dr. Maxwell’s request.

Founded in 2004, Leakfree.org became one of the first online communities dedicated to Valve’s Source engine development. It is more famously known for the formation of Black Mesa: Source under the 'Leakfree Modification Team' handle in September 2004.