Team Fortress 2 Halloween Bosses: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
mNo edit summary
m (Finished ghost tutorial.)
Line 3: Line 3:
<br>
<br>
[[Team Fortress 2]] have a variety of '''halloween bosses''' that can be used in a map. These are special entities that acts like [[NPC]]s. Most of them requires a [[Navigation Meshes|nav mesh]] to work.
[[Team Fortress 2]] have a variety of '''halloween bosses''' that can be used in a map. These are special entities that acts like [[NPC]]s. Most of them requires a [[Navigation Meshes|nav mesh]] to work.
== List of Bosses ==
== Ghost ==
=== Ghost ===
[[File:Harvest-ghost.png|200|thumb|right|The ghost (click to enlarge)]]
[[File:Harvest-ghost.png|200|thumb|right|The ghost (click to enlarge)]]
The '''ghost''' appears in Harvest Event, Moonshine and a couple of other maps. It's a blue ghost wearing a Ghastly Gibus on it's head. It will roam around the map for a while, stunning any players that come to close to it.
The '''ghost''' appears in Harvest Event, Moonshine and a couple of other maps. It's a blue ghost wearing a Ghastly Gibus on it's head. It will roam around the map for a while, stunning any players that come to close to it.
==== Tutorial ====
=== Tutorial ===
This tutorial will show how to set up a ghost to periodically appear and roam around the map, like in Harvest Event.
This tutorial will show how to set up a ghost to periodically appear and roam around the map, like in Harvest Event.
:1. First, create a [[func_tracktrain]] about 48w*48l*80h textured with [[Tool textures#nodraw|nodraw]] where you want the ghost to be when it's inactive. This is what will make the ghost actually move around in the map. In Harvest Event, this is a small room underneath the map. Give it a name. For this tutorial, it will be ''ghost_train''.
:1. First, create a [[func_tracktrain]] about 48w*48l*80h textured with <code>[[Tool textures#nodraw|tools/toolsnodraw]]</code> where you want the ghost to be when it's inactive. This is what will make the ghost actually move around in the map. In Harvest Event, this is a small room underneath the map. Give it a name. For this tutorial, it will be ''ghost_train''.
<br>
:2. Set the rest of the train's keyvalues to the following
:2. Set the rest of the train's keyvalues to the following
:{| class="wikitable"
:{| class="wikitable"
Line 35: Line 35:
| Damage on Crush || 1000
| Damage on Crush || 1000
|}
|}
:3. Next, create a [[path_track]] at the same place as the <code>func_tracktrain</code> and name it ''ghost_path_home''. This will serve as the starting point for the ghost when it's not in use.
: Also set the following spawn flags to be on, ''No User Control'', ''Passable'', ''Is unblockable by player'' and leave the rest off.
 
<br>
:3. Next, create a <code>[[path_track]]</code> at the same place as the <code>func_tracktrain</code> and name it ''ghost_path_home''. This will serve as the starting point for the ghost when it's not in use.
<br>
:4. Create a 255l*256w*72h brush textured with <code>tools/toolstrigger</code>. Make this brush a <code>[[trigger_stun]]</code> and name it ''ghost_stun''. Set it's [[parent]] to ''ghost_train''. Also set it's ''Trigger Delay'' to <code>.5</code>, ''Duration'' to <code>3</code>, ''Stun Type'' to ''Loser State + Controls + Movement'' and enable ''Stun Effects''. Add the following output to it:
:{|class="wikitable"
|-
! Output !! Target Entity !! Input !! Parameter !! Delay !! Only Once
|-
| OnStartTouch || ghost_sound_boo || PlaySound || <code><none></code> || 0.00 || No
|}
<br>
:5. Create three <code>[[ambient_generic]]</code> entities. Name one of them ''ghost_sound_boo'', and the other two ''ghost_sound_haunted''. Make sure that the ''Start Silent'' and ''Is NOT Looped'' spawnflags are enabled on all of them. Set the ''SourceEntityName'' to ''ghost_train'' for all of them.
<br>
:6. Set ''ghost_sound_boo''<nowiki>'</nowiki>s ''Sound Name'' to <code>Halloween.GhostBoo</code>, and it's ''Max Audible Distance'' to <code>1944</code>.
<br>
:7. For one of the ''ghost_sound_haunting'' entities, set the ''Sound Name'' to <code>Halloween.GhostMoan</code> and the ''Max Audible Distance'' to <code>1352</code>. For the second ''ghost_sound_haunting'', set the ''Sound Name'' to <code>Halloween.Haunted</code> and the ''Max Audible Distance'' to <code>1944</code>.
<br>
:8. Next, create a <code>[[prop_dynamic]]</code>, set its model to <code>models/props_halloween/ghost.mdl</code> and position it within the ''ghost_train''. Disable its shadows, set collision to ''Not Solid'' and set its ''Default Animation'' to <code>idle</code>. Finally, set its parent to ''ghost_train''.
<br>
:9. Create an <code>[[info_particle_system]]</code> slightly underneath the ghost model. Name it ''ghost_teleport_effect'' and set its parent to ''ghost_train''. Set its ''Particle System Name'' to <code>ghost_appearation</code>.
<br>
:10. Create a <code>path_track</code> entity where you want the first path the ghost will follow to start 48 units above the ground and name it ''ghost_path1_1''. No other options or spawn flags should be set.
<br>
:11. Shift-drag ''ghost_path1_0'' to copy it. The previous <code>path_track</code> will automaticly be linked to the new one. Continue doing this until you have track of <code>path_track</code> entities that the ghost will follow. Optionally, you can create a different path named ''ghost_path2_*'' (where * is replaced by a number, starting with 0) and clone it to create a separate track that the ghost also can follow.
<br>
:12. In the first <code>path_track</code> entity in each track, add the following outputs:
:{|class="wikitable"
|-
! Output !! Target Entity !! Input !! Parameter !! Delay !! Only Once
|-
| OnTeleport || ghost_train || StartForward || <code><none></code> || 0.00 || No
|-
| OnTeleport || ghost_teleport_effect || Start || <code><none></code> || 0.00 || No
|-
| OnTeleport || ghost_sound_haunting || PlaySound || <code><none></code> || 0.00 || No
|}
:And in the last <code>path_track</code> entity in each track, add the following outputs:
:{|class="wikitable"
|-
! Output !! Target Entity !! Input !! Parameter !! Delay !! Only Once
|-
| OnPass || ghost_train || TeleportToPathTrack || ghost_path_home || 0.00 || No
|-
| OnPass || ghost_teleport_effect || Stop || <code><none></code> || 0.00 || No
|}
<br>
:13. Next, create a <code>[[logic_timer]]</code> and a <code>[[logic_case]]</code>. Name the <code>logic_timer</code> ''ghost_timer'' and the <code>logic_case</code> ''ghost_case''. Set ''Minimum Random Interval'' on ''ghost_timer'' to <code>14</code> and ''Maximum Random Interval'' to <code>20</code>. Also enable ''Use Random Time''. Add the following output to it:
:{|class="wikitable"
|-
! Output !! Target Entity !! Input !! Parameter !! Delay !! Only Once
|-
| OnTimer || ghost_case || PickRandomShuffle || <code><none></code> || 0.00 || No
|}
<br>
:14. Add the following outputs to ''ghost_case''. Replace ''ghost_path*_0'' with whatever you named the first points in each of your tracks respectively.
:{|class="wikitable"
|-
! Output !! Target Entity !! Input !! Parameter !! Delay !! Only Once
|-
| OnCase01 || ghost_train || TeleportToPathTrack || ghost_path1_0 || 0.00 || No
|-
| OnCase02 || ghost_train || TeleportToPathTrack || ghost_path2_0 || 0.00 || No
|-
| OnCase03 || ghost_train || TeleportToPathTrack || ghost_path3_0 || 0.00 || No
|}
:15. Compile the map and test if everything works. The ghost should occasinally appear and follow the paths until it reaches the end and disappears.


== Horseless Headless Horsemann ==
== Horseless Headless Horsemann ==

Revision as of 10:22, 24 November 2016

Under construction.png
This page is actively undergoing a major edit.
As a courtesy, please do not edit this while this message is displayed.
If this page has not been edited for at least several hours to a few days, please remove this template. This message is intended to help reduce edit conflicts; please remove it between editing sessions to allow others to edit the page.

The person who added this notice will be listed in its edit history should you wish to contact them.

Draft for Team Fortress 2 Halloween Bosses.
Team Fortress 2 have a variety of halloween bosses that can be used in a map. These are special entities that acts like NPCs. Most of them requires a nav mesh to work.

Ghost

The ghost (click to enlarge)

The ghost appears in Harvest Event, Moonshine and a couple of other maps. It's a blue ghost wearing a Ghastly Gibus on it's head. It will roam around the map for a while, stunning any players that come to close to it.

Tutorial

This tutorial will show how to set up a ghost to periodically appear and roam around the map, like in Harvest Event.

1. First, create a func_tracktrain about 48w*48l*80h textured with tools/toolsnodraw where you want the ghost to be when it's inactive. This is what will make the ghost actually move around in the map. In Harvest Event, this is a small room underneath the map. Give it a name. For this tutorial, it will be ghost_train.


2. Set the rest of the train's keyvalues to the following
Key Value
Render Mode Don't Render
Disable Recieving Shadows Yes
Disable Shadows Yes
First Stop Target ghost_path_home
Max Speed (units / second) 90
Change Velocity Linear blend
Change angles Ease in/ease out
Distance Between the Wheels 20
Height above track 0
Damage on Crush 1000
Also set the following spawn flags to be on, No User Control, Passable, Is unblockable by player and leave the rest off.


3. Next, create a path_track at the same place as the func_tracktrain and name it ghost_path_home. This will serve as the starting point for the ghost when it's not in use.


4. Create a 255l*256w*72h brush textured with tools/toolstrigger. Make this brush a trigger_stun and name it ghost_stun. Set it's parent to ghost_train. Also set it's Trigger Delay to .5, Duration to 3, Stun Type to Loser State + Controls + Movement and enable Stun Effects. Add the following output to it:
Output Target Entity Input Parameter Delay Only Once
OnStartTouch ghost_sound_boo PlaySound <none> 0.00 No


5. Create three ambient_generic entities. Name one of them ghost_sound_boo, and the other two ghost_sound_haunted. Make sure that the Start Silent and Is NOT Looped spawnflags are enabled on all of them. Set the SourceEntityName to ghost_train for all of them.


6. Set ghost_sound_boo's Sound Name to Halloween.GhostBoo, and it's Max Audible Distance to 1944.


7. For one of the ghost_sound_haunting entities, set the Sound Name to Halloween.GhostMoan and the Max Audible Distance to 1352. For the second ghost_sound_haunting, set the Sound Name to Halloween.Haunted and the Max Audible Distance to 1944.


8. Next, create a prop_dynamic, set its model to models/props_halloween/ghost.mdl and position it within the ghost_train. Disable its shadows, set collision to Not Solid and set its Default Animation to idle. Finally, set its parent to ghost_train.


9. Create an info_particle_system slightly underneath the ghost model. Name it ghost_teleport_effect and set its parent to ghost_train. Set its Particle System Name to ghost_appearation.


10. Create a path_track entity where you want the first path the ghost will follow to start 48 units above the ground and name it ghost_path1_1. No other options or spawn flags should be set.


11. Shift-drag ghost_path1_0 to copy it. The previous path_track will automaticly be linked to the new one. Continue doing this until you have track of path_track entities that the ghost will follow. Optionally, you can create a different path named ghost_path2_* (where * is replaced by a number, starting with 0) and clone it to create a separate track that the ghost also can follow.


12. In the first path_track entity in each track, add the following outputs:
Output Target Entity Input Parameter Delay Only Once
OnTeleport ghost_train StartForward <none> 0.00 No
OnTeleport ghost_teleport_effect Start <none> 0.00 No
OnTeleport ghost_sound_haunting PlaySound <none> 0.00 No
And in the last path_track entity in each track, add the following outputs:
Output Target Entity Input Parameter Delay Only Once
OnPass ghost_train TeleportToPathTrack ghost_path_home 0.00 No
OnPass ghost_teleport_effect Stop <none> 0.00 No


13. Next, create a logic_timer and a logic_case. Name the logic_timer ghost_timer and the logic_case ghost_case. Set Minimum Random Interval on ghost_timer to 14 and Maximum Random Interval to 20. Also enable Use Random Time. Add the following output to it:
Output Target Entity Input Parameter Delay Only Once
OnTimer ghost_case PickRandomShuffle <none> 0.00 No


14. Add the following outputs to ghost_case. Replace ghost_path*_0 with whatever you named the first points in each of your tracks respectively.
Output Target Entity Input Parameter Delay Only Once
OnCase01 ghost_train TeleportToPathTrack ghost_path1_0 0.00 No
OnCase02 ghost_train TeleportToPathTrack ghost_path2_0 0.00 No
OnCase03 ghost_train TeleportToPathTrack ghost_path3_0 0.00 No
15. Compile the map and test if everything works. The ghost should occasinally appear and follow the paths until it reaches the end and disappears.

Horseless Headless Horsemann

[Todo]

Monoculus

[Todo]

Merasmus

[Todo]

Skeleton

[Todo]