{"id":1920,"date":"2024-04-05T14:11:53","date_gmt":"2024-04-05T13:11:53","guid":{"rendered":"https:\/\/www.katsbits.com\/site\/?p=1920"},"modified":"2024-04-05T14:11:53","modified_gmt":"2024-04-05T13:11:53","slug":"make-a-steam-jet-effect","status":"publish","type":"post","link":"https:\/\/www.katsbits.com\/site\/make-a-steam-jet-effect\/","title":{"rendered":"RtCW target_smoke Steam Effect"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_80 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.katsbits.com\/site\/make-a-steam-jet-effect\/#Brushwork_Setup\" >Brushwork Setup<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.katsbits.com\/site\/make-a-steam-jet-effect\/#Entity_Setup\" >Entity Setup<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.katsbits.com\/site\/make-a-steam-jet-effect\/#Steam_Effect_In-Game\" >Steam Effect In-Game<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.katsbits.com\/site\/make-a-steam-jet-effect\/#Using_%22trigger_hurt%22_to_%E2%80%98Burn_Player\" >Using &quot;trigger_hurt&quot; to &#8216;Burn&#8217; Player<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.katsbits.com\/site\/make-a-steam-jet-effect\/#Conclusion\" >Conclusion<\/a><\/li><\/ul><\/nav><\/div>\n\n<p>Using &quot;<b>target_smoke<\/b>&quot; to create &#8216;steam&#8217;. Although there are a couple of entities we could use to create this effect they don&#8217;t quite do what we want in this case; a plain old jet of steam, each entity having it&#8217;s own particular properties giving different results in game. <\/p>\n<blockquote style=\"background-color: #ddecf3; color: #000;\"><p><b>Download<\/b>: <a href=\"https:\/\/www.katsbits.com\/files\/tutorials\/tute_steameffect.zip\" title=\"Download the RtCW steam jet sample map file\">Steam effect source file<\/a> (c. 200 KB | *.map, *.bsp)<\/p><\/blockquote>\n<p>The best one to use for this effect is the <b>target_smoke<\/b> entity as it&#8217;s settings can be changed quite easily to get different results &#8211; see entity properties inspector below <i>[keyboard &#8216;N&#8217;]<\/i>.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Brushwork_Setup\"><\/span> Brushwork Setup <span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The most straight forward way of creating a jet of steam is to place a couple of entities around some brushwork and have the effect &#8216;active&#8217; (starts in the &#8216;on&#8217; state) when the game loads. <\/p>\n<p>It also means there are no fancy entity connections \/ trigger calls which keeps things nice and simple (also in theory means the effect works in both SP &amp; MP).<\/p>\n<div class=\"content_images\"><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/rtcw_steam_effect\/settings_single.gif\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/rtcw_steam_effect\/settings_single.gif\" alt=\"Entity inspector setup for steam effects\" width=\"500\" height=\"581\" border=\"0\" \/><\/a><\/p>\n<p>Entity inspector setup for steam effects<\/p>\n<\/p><\/div>\n<p>In the image below some pipes have been placed into position, note the pipe support just before the bend, in this case the pipes have been made from both brushes and patch mesh cylinders. It&#8217;s important to note that any brushwork in something like this is &#8216;<b>detail<\/b>&#8216; flagged (patch meshes are &#8216;detail&#8217; flagged by default) <i>[select a brush &gt; right-click &gt; make detail]<\/i>, if it isn&#8217;t the entity will get corrupted and the effect won&#8217;t work (this is because the brush will cut into the entity).<\/p>\n<div class=\"content_images\"><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/rtcw_steam_effect\/target_smoke-brushwork.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/rtcw_steam_effect\/target_smoke-brushwork_sml.jpg\" alt=\"Example brushwork\" width=\"428\" height=\"247\" border=\"0\" \/><\/a><\/p>\n<p>Example brushwork around which the entities will be set up to create the steam jet effect<\/p>\n<\/p><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Entity_Setup\"><\/span>Entity Setup<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The image below shows the entity setup for the jet of steam. A <b>target_speaker<\/b>, <b>target_smoke<\/b> and an <b>info_notnull<\/b>.<\/p>\n<ul>\n<li>   <b>target_speaker<\/b> the noise the steam is to make, positioned relative to the effect.  <\/li>\n<li>   <b>target_smoke<\/b> is the steam jet itself. The settings can be changed so the smoke plum has a very small start size.  <\/li>\n<li>   <b>info_notnull<\/b> the target for the smoke &#8211; it gives us the angle \/ direction which the smoke will jet &#8211; this can be set using the angle keys in the property inspective but this isn&#8217;t quite as versatile as using a targeted entity.  <\/li>\n<\/ul>\n<p>A couple of things to remember;<\/p>\n<ul>\n<li>   The target for the smoke <b>must be<\/b> an <i>info_notnull<\/i> &#8211; it won&#8217;t work otherwise.  <\/li>\n<li>   If you have the notnull below the smoke you need to have the &#8216;<b>gravity<\/b>&#8216; flag checked in the property inspector (see image top) otherwise the smoke won&#8217;t pitch down.  <\/li>\n<li>   Remember to place the smoke so it&#8217;s <i>centre of origin<\/i> (dead centre) is where the jet of steam will come from, it&#8217;s easier to visualise this using the x,y,z views. Try not to hide or bury it in brushwork though as the brushwork that&#8217;s doing that will block the smoke effect and nothing will appear to be happening.  <\/li>\n<\/ul>\n<div class=\"content_images\"><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/rtcw_steam_effect\/rtcw-target_smoke-steam-effect.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/rtcw_steam_effect\/rtcw-target_smoke-steam-effect_sml.jpg\" alt=\"Entity placement relative to brushwork\" width=\"428\" height=\"241\" border=\"0\" \/><\/a><\/p>\n<p>Entity placement relative to brushwork<\/p>\n<p>   <a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/rtcw_steam_effect\/target_smoke-entity-placement.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/rtcw_steam_effect\/target_smoke-entity-placement_sml.jpg\" alt=\"Entity position is important\" width=\"428\" height=\"247\" border=\"0\" \/><\/a><\/p>\n<p>Entity placement relative to brushwork &#8211; entity centre should not be buried in <i>any<\/i> brush volumes so positioning needs to allow for this<\/p>\n<\/p><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Steam_Effect_In-Game\"><\/span>Steam Effect In-Game<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The entity set up described above (an in the sample *.map file) produces a very &#8216;slow&#8217; steam jet, just one or two puffs of smoke per second. You can see the angle the smoke follows is similar to the one described by the entity setup (shown above) incidentally the steam looks a bit funny because we&#8217;ve managed to capture a single &#8216;frame&#8217; which tends to isolate the individual &#8216;sprites&#8217; the constitute the smoke itself..!<\/p>\n<div class=\"content_images\"><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/rtcw_steam_effect\/ingame_1.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/rtcw_steam_effect\/ingame_1.jpg\" alt=\"Effect in game\" width=\"500\" height=\"375\" border=\"0\" title=\"Effect in game\" \/><\/a><\/p>\n<p>Effect in game<\/p>\n<\/p><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Using_%22trigger_hurt%22_to_%E2%80%98Burn_Player\"><\/span>Using &quot;trigger_hurt&quot; to &#8216;Burn&#8217; Player<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>A nifty trick; place a <b>trigger_hurt<\/b> brush covering the approximate area of the steam jet and it creates a &#8216;hotspot&#8217;; players get hurt by the hot jet of steam.<\/p>\n<p>Trigger setup for this &#8211; check &#8216;<b>silent<\/b>&#8216; (de-activates the frying sound) and &#8216;<b>slow<\/b>&#8216; (means hurt value is per second not per server frame which makes it happen faster) and give the trigger a low &#8216;<b>dmg<\/b>&#8216; (damage) value.<\/p>\n<div class=\"content_images\"><a href=\"https:\/\/www.katsbits.com\/images\/tutorials\/rtcw_steam_effect\/trigger_hurt-effect.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.katsbits.com\/images\/tutorials\/rtcw_steam_effect\/trigger_hurt-effect_sml.jpg\" alt=\"Trigger hurt placement\" width=\"428\" height=\"241\" border=\"0\" \/><\/a><\/p>\n<p>Using trigger_hurt to create the effect of damage from steam &#8211; brush volume placement covers angle of projection between target_smoke and info_notnull<\/p>\n<\/p><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>This first process is the least problematic, for some reason the entity starts to get a little bit temperamental when you alter it&#8217;s start state (it&#8217;s trigger &#8216;alerted&#8217; rather than &#8216;on&#8217; all the time) which is compounded the more you try to do or entities you try to use. For more complex usage it&#8217;s best to script an event like this rather than have it active physically in a map.<\/p>\n<p>The key to this setup is the &#8216;<b>delay<\/b>&#8216; flag on the target_smoke as this effects how much smoke is actually emitted; the lower the number (the default value is 100) the shorter the spawn time on each of the little sprites used to physically make the smoke clouds, so setting it at 20 gives you a pretty dense jet, 500 on the other hand gives a very &#8216;thin&#8217; one with few clouds (see the example map for this). Keep in mind as well the distance between the target_smoke entity and the info_notnull will also greatly effect the speed of the ejecting smoke, it&#8217;ll start to thin out the greater the distance.<\/p>\n<p>As well as brushes corrupting the target_smoke other entities can do this as well so watch the placement of other items around it.<\/p>\n<div class=\"subNav\">\n<p>[1: <a href=\"https:\/\/www.katsbits.com\/site\/make-a-steam-jet-effect\/\" title=\"target_smoke as a steam jet effect in RtCW\" target=\"_self\" rel=\"noopener\">Steam Setup<\/a> | 2: <a href=\"https:\/\/www.katsbits.com\/site\/make-a-double-steam-jet-effect\/\" title=\"Setting up multiple steam jets using target_smoke\" target=\"_self\" rel=\"noopener\">Multiple Jets<\/a>]<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":1921,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[327,488,331,328,109,108,23,191,483],"class_list":["post-1920","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-map","tag-brush-volumes","tag-bsp","tag-entities","tag-level-design","tag-level-editing","tag-rtcw","tag-source-files","tag-trigger"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/posts\/1920","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/comments?post=1920"}],"version-history":[{"count":1,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/posts\/1920\/revisions"}],"predecessor-version":[{"id":1923,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/posts\/1920\/revisions\/1923"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/media\/1921"}],"wp:attachment":[{"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/media?parent=1920"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/categories?post=1920"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.katsbits.com\/site\/wp-json\/wp\/v2\/tags?post=1920"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}