Scream Fortress and you: A guide to all things spooky

Discussion in 'Tutorials & Resources' started by Sandwhip, Aug 20, 2019.

  1. Sandwhip

    aa Sandwhip

    Messages:
    242
    Positive Ratings:
    169
    Introduction
    It's that time of year again, where people are struggling to come up with a good gimmick for their halloween maps. Well don't worry; i'm here to make your job just a little easier.

    In this guide i'll go over the many, MANY entities which are useful for scream fortress maps, as well as some general design tips.
    Do note that while these entities can be fun, don't use too many in the same map. Gimmicks can go overboard. Sometimes it's best to keep it simple.


    The Essentials
    tf_logic_holiday
    The lifeblood of any halloween map. This entity enables crumpkins to be
    dropped on death, and changes health-kits into their tasty candy counterparts. It also allows players to freely wear halloween-locked cosmetics.
    For the most part, you can just set the 'Holiday' value to halloween and be on your way, but there are a couple of inputs I would like to quickly address as they can be important.
    • HalloweenSetUsingSpells - In order to have the spellbook HUD enabled, this input must be sent to the tf_logic_holiday with the value of 1. Highly recommended if you choose to implements spellbooks in your map.
    • Halloween2013TeleportToHell - If you want an end-of-round fight similar to the one seen in helltower, you'll need to send this input to the tf_logic_holiday. However you also need several other entities set up for this to work properly, so take caution when using it.
    entity_spawn_manager + entity_spawn_point
    Every halloween map has pumpkin bombs, what makes a good halloween map is how you place them. FIrstly, don't place them near spawn doors, for obvious reasons. Secondly, you're going to want to place them adjacent to where you expect players will be walking, such as the corners of hallways. If you want to be a little more creative, you can also place them in areas players can't actually access, but can still be used to damage players, such as shelves or window frames.

    For setting up the entity itself, you may have thought, "wait, can't I just use tf_pumkin_bomb?" the answer to that is yes, but I would highly recommend you don't. By using an entity spawn manager, you can set a specific respawn time and choose how many are active at one time. For smaller maps, I recommend you use these settings for the entity_spawn_manager. Of course the 'Count' and 'Respawn Time' should be tweaked based on your own judgement.

    The entity_spawn_point entity is very simple. Just set the spawn manager name to whatever is in control of the pumpkin bombs (usually named 'pumpkin_manager') and copy+paste around the map to your leisure.
    tf_halloween_gift_spawn_location

    These entities are soul gargoyle spawn locations, and are very simple. Just place them wherever you want, and gargoyles will periodically spawn in those locations. Do note the locations are random, to try placing these in areas both teams can easily access. If your map isn't symmetrical, you'll need to disable/enable groups of these at a time as players move through the map.​


    Bosses
    Bosses are spawned quite easily. All you need in order for them to appear on the map (with the exception of skeletons) is 4 separate entities: ​
    1. The entity of the boss in question (meramus, headless_hatman, eyeball_boss)
    2. point_template
    3. env_entity_maker
    4. logic_relay (or any other triggerable logic entity)
    Just add the boss entity into the template, have the template referenced in the env_entity_maker, then send a 'forcespawn' input to the entity maker using logic. You'll also need your map to have a functional navigation mesh for the bosses to work properly.
    Note: the boss will spawn from the env_entity_maker​
    Monoculus and Mermasmus are able to have a truce called when they spawn, but this is entirely optional.
    To enable truces, send the input 'SetMapForcedTruceDuringBossFight 1' to the maps' tf_gamerules.

    Note that truces will not deactivate objectives, they will only disable player damage.
    To deactivate objectives, you can use 'OnTruceStart' and 'OnTruceEnd' outputs from tf_gamerules.​

    HHH
    You don't need anything else for this boy aside from the entities listed above, however there's one very important thing you need to know before implementing him into your map.
    The HHH will set a 'default' point to whichever currently capturable team_control_point entity has the lowest index number. The 'hide and seek' radius will originate from that control point.
    Because of this, it's best not to use the HHH on maps with multiple points active at once, like PLR or gavelpit-styled CP.
    If there are no team_control_point entities on a map (such as in CTF), the HHH will set the default point to its spawn location.​

    Monoculus
    To start off, you need to set the locations you want Monoculus to periodically teleport to. You can do this by placing an info_target entity named 'spawn_boss_alt' in the chosen destination.

    The portals that Monoculus leaves behind when teleporting will teleport players who enter it to any info_targets named spawn_purgatory. You don't need to have this send players to an underworld though, anywhere is good!​

    Merasmus
    Merasmus is definitely the trickiest of the bunch, and to be honest I still haven't completely figured him out.

    In order for players to receive pumpkin-bomb heads, have Merasmus teleport and hide, and stop Merasmus from moving outside of areas you want him to, create a func_nav_prefer brush that covers the entire area you want him to move around in, and name it 'boss_nav_prefer'.

    If you want Merasmus to also throw books out of the bombinomicon, you'll need two info_targets, one named boss_start and the other named boss_end. Make sure the angles on both are set to face each other, and merasmus will move around in an area between the two, spewing bombs out of the bombinomicon.
    (As a side note, i've never managed to get this working as it does in ghost fort, but you can get pretty close with enough tweaking, mess around with height and the distance between the two info_targets until you get something good.) ​

    Skeletons
    Skeletons are super easy. Unlike the other bosses, all you'll need is a tf_zombie_spawner. The properties listed within the entity itself are mostly self-explanatory, just don't spawn too many at once.

    If you need any more information on bosses (including ghosts) i'd recommend taking a look at this VDC page, it's full of useful information.


    General Gimmicks

    halloween_fortune_teller/wheel_of_doom
    These two entities are very similar, so i'll be grouping them together here. One thing you'll need for both entities (and the only one you need for halloween_fortune_teller) are 32 info_targets. These are used to teleport players when the entity is triggered. If you're using halloween_fortune_teller, these can be named whatever you like. However for wheel_of_doom they need to be named dance_teleport_red(1-15) and dance_teleport_blue(1-15). wheel_of_doom also needs a func_brush in the sky named 'spawn_cloud' to enable jarate rain, and 'allowHaunting' enabled in the tf_logic_holiday entity to enable ghosts.​

    tf_spell_pickup
    These are super-super-simple. You can just place these entites around the map to your liking, you don't need anything else in order to make them work. However to make the spell HUD appear, you'll need to follow the instructions listed in the tf_logic_holiday section above.

    teleport_vortex/hightower_teleport_vortex
    These two entities are very similar, but fulfil different uses.
    The teleport_vortex entity lasts 5 seconds, and functions identically to the portals left behind by Monoculus (see above for info on that). However this entity has no particle, essentially just working as a spooky magnet.
    This lets you use any particle you want in its place.
    Meanwhile, hightower_teleport_vortex teleports players to an info_target named 'destinationname_loser' and allows you to customise its lifetime and even change its destination, with a bit of logic. The downside is that it uses the monoulus vortex particle by default, disallowing custom particles.
    You can set both of entites up in a similar manner to bosses, using the power of templates.
    Read this thread for more information on both these entities​

    Bumper-cars/Bumper-car Minigames
    I'm gonna be honest with you, these are a real pain to set up and it's probably better you don't do it at all; as doing it incorrectly results in the infamous 'double-shot bug' and can even crash servers/clients.
    If you really want to implement bumper-cars, here's a short explanation of the end-of-round bumper-car race in gravestone by ICS, so you can thank them for that.

    Lighting
    It's no secret that most halloween take place in the middle of the night, which often doesn't provide much in the way of natural light. So how do you effectively light these maps while still keeping it atmospheric? The secret is a few key techniques. (which I don't really know the names of so i'm gonna use my own terms)

    Ground lights
    Ground lights are primarily used to stylise an area while not drawing a player's attention. These lights are going to be used the most frequently, but are least important. These are small, 'light' entites that you should only really be using in beta onwards. These should be positioned near any piece of detail at, or near, ground level that you think should recieve specialty lighting, such as light sources like candles or lamps. While these do help light an area, you not absolutely not rely on these. For best results, use a light colour which is different from the area lighting. Even if it's only slightly different, it can get some great results.

    Area lights
    Area lights are the main source of lighting for your map, outside of environmental lighting. These should be large light_spot entities, positioned so that they light the majority of the gameplay space. If they are positioned optimally, they should light a gameplay space well without lighting areas outside of the gameplay space, maintaining the illusion of it being nighttime. You should colour these according to the location in which these lights are placed. For example, one placed outside should be a colour that compliments the environmental lighting settings, while one placed inside should do the same, but for other light sources nearby. Please, don't just colour them white. That's boring and not nice to look at.

    Guide lights
    Guide lights are quite flexible, require the most thought behind where you place them. Since the map, even when properly lit, is likely to still be quite dark, it's very important to let players know where they should and shouldn't be walking. This is the job of guide lights. They are usually small light_spot entities, and placed so that they light areas of importance such as doorways and pickups. For example, to light a doorway you should position the light on the side which players are most likely to enter from, and angle it at 45 degrees so that the doorway as well as the area immediately around it is properly lit. If your map has objectives, you'll also want to use these for that as well. These should be coloured similarly to ground lights, but with the intention of drawing attention.

    And that's that. In the end it's best to come up with your own gimmicks rather than re-using ones that already exist in other maps; but hopefully this can give you a start.
    If you're still curious about entities, take a look at the full list
    here
    (If there's anything here that needs updating, just let me know and i'll do a quick edit.)
     
    • Like Like x 7
    • Thanks Thanks x 2
    Last edited: Jul 27, 2020
  2. Sandwhip

    aa Sandwhip

    Messages:
    242
    Positive Ratings:
    169
    Edited formatting and added lighting section.
    Also corrected some errors and provided additional information in some areas.