<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.thedarkmod.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fidcal</id>
	<title>The DarkMod Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.thedarkmod.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fidcal"/>
	<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Special:Contributions/Fidcal"/>
	<updated>2026-05-02T01:47:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Missing_assets_by_map&amp;diff=17041</id>
		<title>Missing assets by map</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Missing_assets_by_map&amp;diff=17041"/>
		<updated>2013-06-24T08:50:59Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Thief&amp;#039;s Den (Fidcal) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a list of missing assets by map.  My plan is to go through these map by map to find which assets need to be added.&lt;br /&gt;
&lt;br /&gt;
I will not include warnings that also show up in 1.08, as these aren&#039;t standalone issues:    [[list of pre 2.0 warnings]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= READY FOR 2.0 RELEASE =&lt;br /&gt;
These are maps that have been tested under TDM 2.0 and deemed ready for release.  Missions that have an updated .pk4 will be noted.&lt;br /&gt;
&lt;br /&gt;
== Tears of St. Lucia (jdude/Springheel) ==&lt;br /&gt;
&lt;br /&gt;
==Reap as you sow (Fieldmedic) ==&lt;br /&gt;
&lt;br /&gt;
== Betrayal (Fieldmedic) ==&lt;br /&gt;
&lt;br /&gt;
== Awaiting the Storm (HappyCheeze)- new .pk4 ==&lt;br /&gt;
&lt;br /&gt;
== House of Theo (Theothesnopp) ==&lt;br /&gt;
&lt;br /&gt;
== Rake Off (Jesps) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== A Score to Settle (Springheel) - new .pk4  ==&lt;br /&gt;
&lt;br /&gt;
== The Phrase Book (Sotha) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== WS1: In the North (grayman) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Lockdown Part 1 (GameDevGoro Bikerdude Fidcal) == &lt;br /&gt;
&lt;br /&gt;
==Dark Mod Training Mission, The ==&lt;br /&gt;
&lt;br /&gt;
== A Night to Remember (Fieldmedic) ==&lt;br /&gt;
&lt;br /&gt;
== Beleagured Fence (Sotha) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Builder Roads (Obsttorte) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== The Transaction (Sotha) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Patently Dangerous (demagogue) - new .pk4 ==&lt;br /&gt;
&lt;br /&gt;
== Trapped! (RailGun) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Swing (Komag ) ==&lt;br /&gt;
&lt;br /&gt;
==Illusionist&#039;s Tower (stumpy) ==&lt;br /&gt;
&lt;br /&gt;
== Sons of Baltona Part 1 (Carnage) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Rightful Property (jysk) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Living Expenses (Sonosuke) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Builder&#039;s Influence (Railgun, Springheel) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== A Special Delivery (Silencium18) ==&lt;br /&gt;
&lt;br /&gt;
== Mad&#039;s Mountain (Jesps) ==&lt;br /&gt;
&lt;br /&gt;
== Parcel, The (Xonze)- complete! ==&lt;br /&gt;
&lt;br /&gt;
==Chalice of Kings (Fidcal) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Somewhere Above the City (grayman) - new .pk4 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;on FTP site&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Crown of Penitence, The (Jesps) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Return to the City (Melan/Bikderdude) - new .pk4 ==&lt;br /&gt;
&#039;&#039;on FTP site&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Knighton&#039;s Manor (Sotha) - complete! ==&lt;br /&gt;
== Sneak and Destroy (SeriousToni) - complete! ==&lt;br /&gt;
== Fiasco at Fauchard Street (Melan) - complete! ==&lt;br /&gt;
== The Thieves (Silencium, RailGun, Fidcal) - complete! ==&lt;br /&gt;
== Pandora&#039;s Box (Jesps, Fidcal) ==&lt;br /&gt;
== The Outpost (angua/greebo) - complete! ==&lt;br /&gt;
== Too Late (Nielsen74) - complete! ==&lt;br /&gt;
== Let Sleeping Thieves Lie (Sir Taffsalot, Bikerdude)- complete! ==&lt;br /&gt;
== Vengeance for a Thief Part I (Sir Taffsalot) - new .pk4 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;on ftp&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= READY FOR MAPPER FIXES =&lt;br /&gt;
&lt;br /&gt;
These are maps that require fixes by a mapper, or are waiting to be beta-tested to make everything works properly.  Once they are corrected or confirmed working, they will be removed from this category.  Updated .pk4s should be given to the development team for release after 2.0.&lt;br /&gt;
&lt;br /&gt;
== Glenham Tower (Sotha) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;New .pk4 just needs to be beta-tested.  I&#039;ll test it.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/mapobjects/hell/site3/archviletemple/candle&lt;br /&gt;
_a&lt;br /&gt;
&lt;br /&gt;
== Old Habits (1) (Obsttorte) ==&lt;br /&gt;
&lt;br /&gt;
recyc_pipedrip10  &#039;&#039;&amp;lt;-- still listed as missing, but the particle ISN&#039;T missing.  It&#039;s in tdm_water.prt.  Huh?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/blamplighttile  &#039;&#039;&amp;lt;--mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/floorvent01x  &#039;&#039;&amp;lt;--mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Obsttorte will be making any necessary updates to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Alchemist, The (Sotha, Fidcal) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;stone_sliding.wav&#039; using default  &#039;&#039;&amp;lt;-- mapper fix; cannot find any such file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/tdm_sky_skyfadebiground1  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/misc/rope_dark_noshadows  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures//priestbottom_black_d   &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/darkmod/nature/skybox/starry1_moon  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/bacteria_4  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/metal1  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/wood1  &amp;lt;-- mapper fix; replace with &amp;quot;textures/darkmod/wood/boards/old_worn_black&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I will look at this map when I can (but if anyone wants to volunteer then great - but check with me first in case I&#039;ve started!) - Fidcal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Dragon&#039;s Claw (Bikerdude, Flanders) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/squarelight2  &#039;&#039;&amp;lt;-- mapper fix; cannot find such a light in D3&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:ConvertLWOToModelSurfaces: model &#039;models/darkmod/decorative/jack-o-lant&lt;br /&gt;
ern.lwo&#039; has too many verts for a poly! Make sure you triplet it down  &#039;&#039;&amp;lt;-- mapper fix; use models/darkmod/lights/non-extinguishable/jack-o-lantern.lwo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== House in Blackbog Hollow (Stumpy) ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;blooddrippy&amp;quot; particle apparently used, but the &amp;quot;textures/particlesbloodstream4&amp;quot; in the particle does not seem to exist anywhere  &#039;&#039;&amp;lt;-- mapper fix;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;stumpy will make necessary fixes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== St. Alban&#039;s Cathedral (Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part lloarm in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- these are looking for joints that no longer exist; is there a def file in the .pk4 with old character definitions?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part lloleg in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- these are looking for joints that no longer exist; is there a def file in the .pk4 with old character definitions?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part rloarm in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- these are looking for joints that no longer exist; is there a def file in the .pk4 with old character definitions?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caverock1.ASE&#039; (nor the f&lt;br /&gt;
allback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caverock5.ASE&#039; (nor the f&lt;br /&gt;
allback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caverock6.ASE&#039; (nor the f&lt;br /&gt;
allback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caves1_7.ASE&#039; (nor the fa&lt;br /&gt;
llback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caves2_5c.ASE&#039; (nor the f&lt;br /&gt;
allback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Remembrance of Him (RPGista) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;conversations broken in 1.08...might be a good time to fix them&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Deceptive Shadows (ShadowHide) ==&lt;br /&gt;
&lt;br /&gt;
NO MISSING ASSETS&lt;br /&gt;
&lt;br /&gt;
==The Caduceus of St. Alban (Bikderdude)==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/decals/stainwallfadered  &#039;&#039;&amp;lt;-- mapper fix; typo?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/rock1  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/mcity/mcityplain6  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/items/shells_ammo/shells_large.lwo&#039; (nor t&lt;br /&gt;
he fallback to ASE)  &#039;&#039;&amp;lt;-- mapper fix&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crystal Grave (ERH+ Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
NO MISSING ASSETS&lt;br /&gt;
&lt;br /&gt;
== Business as Usual (Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/mcity/mcityplain6  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Rift (Baddcog) - complete!==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Has been beta-tested:  http://forums.thedarkmod.com/topic/14768-the-rift-baddcog/page__pid__311580#entry311580&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Will need a new pk4.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Alberic&#039;s Curse (Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
*D 200: aboutpostiilightdustbig  &#039;&#039;&amp;lt;-- mapper fix; cannot find any particle with this name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part lloarm in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part lloleg in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part rloarm in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Winter Harvest (Shadowhide) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/mapobjects/hell/site3/archviletemple/candle&lt;br /&gt;
_a   &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Will need new .pk4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Thief&#039;s Den (Fidcal) ==&lt;br /&gt;
&lt;br /&gt;
Beta-tested: http://forums.thedarkmod.com/topic/14731-thiefs-den-fidcal/&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/base_trim/dangertrim01  &#039;&#039;&amp;lt;-- mapper fix.  Used on lift&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/tables/bunkbed/mattress.lwo&#039; (n&lt;br /&gt;
or the fallback to ASE)  &#039;&#039;&amp;lt;-- mapper fix; replace with darkmod/furniture/beds/mattress.lwo&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I will look at this map when I can (but if anyone wants to volunteer then great - but check with me first in case I&#039;ve started!) - Fidcal&lt;br /&gt;
&lt;br /&gt;
==Closemouthed Shadows (LordSavage, Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
Beta-tested:  http://forums.thedarkmod.com/topic/14742-closemouthed-shadows-lordsavage-bikerdude/&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/base_trim/dangertrim01  &#039;&#039;&amp;lt;-- mapper fix; could easily be replaced with rope texture&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Seige Shop (PranQster) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contains its own outdated version of tdm_ai_commoners.mtr and tdm_heads_dev.mtr, so is trying to load all kinds of files that no longer exist, and may not even be used in map.&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/characters/scientist/head02/hair  &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/builders/forger/forgerbottom_shad&lt;br /&gt;
ows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/builders/forger/forgertop_shadows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/heads/beard_black &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/heads/beard_black_s &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/heads/npcs/beard_black_local &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: new_average_jack_texture &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: replacement_head06 &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: replacement_head08 &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: shoulder_cowl &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_brown &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_brown_shadows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_light_tan_shadows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_ragged &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_ragged_shadows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= REPLACEMENT ASSETS NEEDED =&lt;br /&gt;
&lt;br /&gt;
These are maps that still need to have assets replaced by the development team.  They are not ready for mapper fixes or beta-testing yet.&lt;br /&gt;
&lt;br /&gt;
== The Creeps (Mortem Desino) ==&lt;br /&gt;
&lt;br /&gt;
*D 206: kpillar_celingdust1&lt;br /&gt;
&lt;br /&gt;
*D 207: recyc_hexdrip3&lt;br /&gt;
&lt;br /&gt;
*D 208: recyc_hexdrip1&lt;br /&gt;
&lt;br /&gt;
*D 209: recyc_hexdrip2&lt;br /&gt;
&lt;br /&gt;
*D 210: recyc_hexdrip4&lt;br /&gt;
&lt;br /&gt;
*D 211: mcu_minifalldust&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/Leaf_1_s  &#039;&#039;&amp;lt;-- not in either set of material files&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/Leaf_5_s  &#039;&#039;&#039;&#039;&#039;Note from MD:&#039;&#039;&#039; These three &amp;quot;leaf&amp;quot; specularmaps are not crucial (i.e. they probably should just be 100% black images, anyways).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/Leaf_6_s&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;MD:&#039;&#039;&#039; I think most of these light textures could be replaced with another TDM-2.0-ready light texture in DR. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/hellgate1  &#039;&#039;&#039;&#039;&#039;MD:&#039;&#039;&#039; The one bound to revenant_spirit_chase; Could be replaced in DR by any red-colored light.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/hellgate1_colorme &#039;&#039;&#039;&#039;&#039;MD:&#039;&#039;&#039; Present in a lot of ambient lights. I think if there were a suitable replacement for squareishlight, that could double as a suitable replacement for hellgate1_colorme.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/redcircuit &#039;&#039;&#039;&#039;&#039;MD:&#039;&#039;&#039; AKA: redlight01, the light bound to revenant_spirit_shadow; could be replaced in DR by any red-colored light&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/squareishlight &#039;&#039;&#039;&#039;&#039;MD:&#039;&#039;&#039; See note on hellgate1_colorme.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/vivlight &#039;&#039;&#039;&#039;&#039;MD:&#039;&#039;&#039; Present, I think, only on light_25 in the catacombs. Replace in DR with any turquoise-ish square light?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/items/flashlight/dust&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/items/lantern/lanternflare&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally, I&#039;ve made up a quick drag-n-drop [https://dl.dropboxusercontent.com/u/12230253/tdm/thecreeps_oggrepl.zip replacement for one SFX], so the mission plays nice with iD copyright. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Mortem would like a volunteer to update .pk4&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= NOT CURRENTLY WORKING =&lt;br /&gt;
These are missions that won&#039;t load under 2.0 for whatever reason.  Could be related to missing assets, or could be something about my local copy.  Either way I&#039;ll be leaving these for last.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Samhain Night on Bone Hill (PranQster) ==&lt;br /&gt;
&#039;&#039;&#039;runs, but needs fully working werebeast to be playable&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*D 168: tels_firearrow_explosion  &#039;&#039;&amp;lt;-- Mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*D 169: tels_waterarrow_trail  &#039;&#039;&amp;lt;-- Mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:ConvertLWOToModelSurfaces: model &#039;models/darkmod/decorative/jack-o-lant&lt;br /&gt;
ern.lwo&#039; has too many verts for a poly! &#039;&#039;&amp;lt;-- mapper fix; use models/darkmod/lights/non-extinguishable/jack-o-lantern.lwo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;monster_zombie_maint_footstep.wav&#039; using default&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;sound/ambient/environmental/steelswing_01.wav&#039; usi&lt;br /&gt;
ng default&lt;br /&gt;
&lt;br /&gt;
==Mandrasola (Sotha) ==&lt;br /&gt;
&lt;br /&gt;
Will probably run, but will not be playable without working animations for missing character (you know who you are)&lt;br /&gt;
&lt;br /&gt;
== Flakebridge Monastery (Jesps) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crashes with error:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ERROR:Joint &#039;Rhand&#039; not found for bind on &#039;func_static_212&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is due to the new zombie having different joint names.  It will require fixing the .pk4.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;stone_impact.wav&#039; using default&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;paper_impact.wav&#039; using default&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;book_impact.wav&#039; using default&lt;br /&gt;
&lt;br /&gt;
==Heart of Lone Salvation, The (Fidcal)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crashes with error:&lt;br /&gt;
 ERROR:idMoveable &#039;sheet_paper6&#039;: cannot load collision model models/mapobjects/&lt;br /&gt;
 filler/paperwad1.lwo&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/filler/paperwad1.lwo&#039; (nor the&lt;br /&gt;
fallback to ASE)&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/tables/bunkbed/mattress.lwo&#039; (n&lt;br /&gt;
or the fallback to ASE)  &#039;&#039;&amp;lt;-- mapper fix; use models/darkmod/furniture/beds/mattress.lwo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Obstortte has volunteered to fix this.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= NOT TESTED =&lt;br /&gt;
&lt;br /&gt;
== Old Habits II (Obsttorte) ==&lt;br /&gt;
&lt;br /&gt;
== The Lich Queen&#039;s Demise (Sotha) ==&lt;br /&gt;
&lt;br /&gt;
==Lord Dufford&#039;s (stumpy)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;stumpy will make necessary fixes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Q4 Conversion: Yan&#039;s Test (Bikerdude) ==&lt;br /&gt;
== No Honour Among Theives: episode 1 (goldchocobo) ==&lt;br /&gt;
&lt;br /&gt;
This was crashing at map start, but should be retested with at least SVN revision 13442.&lt;br /&gt;
&lt;br /&gt;
That revision fixes the crash, which was unrelated to the presence or absence of D3 assets.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; Since an update to this is due to be released shortly, I will wait before testing the NHAT maps.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==No Honor Among Thieves Part 2 (goldchocobo) ==&lt;br /&gt;
==No Honor Among Thieves Part 3 (goldchocobo)==&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Missing_assets_by_map&amp;diff=16981</id>
		<title>Missing assets by map</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Missing_assets_by_map&amp;diff=16981"/>
		<updated>2013-06-06T09:59:39Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Heart of Lone Salvation, The (Fidcal) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a list of missing assets by map.  My plan is to go through these map by map to find which assets need to be added.&lt;br /&gt;
&lt;br /&gt;
I will not include warnings that also show up in 1.08, as these aren&#039;t standalone issues:    [[list of pre 2.0 warnings]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= READY FOR 2.0 RELEASE =&lt;br /&gt;
These are maps that have been tested under TDM 2.0 and deemed ready for release.  Missions that have an updated .pk4 will be noted.&lt;br /&gt;
&lt;br /&gt;
== Lockdown Part 1 (GameDevGoro Bikerdude Fidcal) == &lt;br /&gt;
&lt;br /&gt;
==Dark Mod Training Mission, The ==&lt;br /&gt;
&lt;br /&gt;
== A Night to Remember (Fieldmedic) ==&lt;br /&gt;
&lt;br /&gt;
== Beleagured Fence (Sotha) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Builder Roads (Obsttorte) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== The Transaction (Sotha) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Patently Dangerous (demagogue) - new .pk4 ==&lt;br /&gt;
&lt;br /&gt;
== Trapped! (RailGun) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Swing (Komag ) ==&lt;br /&gt;
&lt;br /&gt;
==Illusionist&#039;s Tower (stumpy) ==&lt;br /&gt;
&lt;br /&gt;
== Sons of Baltona Part 1 (Carnage) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Rightful Property (jysk) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Living Expenses (Sonosuke) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Builder&#039;s Influence (Railgun, Springheel) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== A Special Delivery (Silencium18) ==&lt;br /&gt;
&lt;br /&gt;
== Mad&#039;s Mountain (Jesps) ==&lt;br /&gt;
&lt;br /&gt;
== Parcel, The (Xonze)- complete! ==&lt;br /&gt;
&lt;br /&gt;
==Chalice of Kings (Fidcal) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Somewhere Above the City (grayman) - new .pk4 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;on FTP site&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Crown of Penitence, The (Jesps) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Return to the City (Melan/Bikderdude) - new .pk4 ==&lt;br /&gt;
&#039;&#039;on FTP site&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Knighton&#039;s Manor (Sotha) - complete! ==&lt;br /&gt;
== Sneak and Destroy (SeriousToni) - complete! ==&lt;br /&gt;
== Fiasco at Fauchard Street (Melan) - complete! ==&lt;br /&gt;
== The Thieves (Silencium, RailGun, Fidcal) - complete! ==&lt;br /&gt;
== Pandora&#039;s Box (Jesps, Fidcal) ==&lt;br /&gt;
== The Outpost (angua/greebo) - complete! ==&lt;br /&gt;
== Too Late (Nielsen74) - complete! ==&lt;br /&gt;
== Let Sleeping Thieves Lie (Sir Taffsalot, Bikerdude)- complete! ==&lt;br /&gt;
== Vengeance for a Thief Part I (Sir Taffsalot) - new .pk4 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;on ftp&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= READY FOR MAPPER FIXES =&lt;br /&gt;
&lt;br /&gt;
These are maps that require fixes by a mapper, or are waiting to be beta-tested to make everything works properly.  Once they are corrected or confirmed working, they will be removed from this category.  Updated .pk4s should be given to the development team for release after 2.0.&lt;br /&gt;
&lt;br /&gt;
== Old Habits (1) (Obsttorte) ==&lt;br /&gt;
&lt;br /&gt;
recyc_pipedrip10  &#039;&#039;&amp;lt;-- still listed as missing, but the particle ISN&#039;T missing.  It&#039;s in tdm_water.prt.  Huh?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/blamplighttile  &#039;&#039;&amp;lt;--mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/floorvent01x  &#039;&#039;&amp;lt;--mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Obsttorte will be making any necessary updates to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Alchemist, The (Sotha, Fidcal) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;stone_sliding.wav&#039; using default  &#039;&#039;&amp;lt;-- mapper fix; cannot find any such file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/tdm_sky_skyfadebiground1  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/misc/rope_dark_noshadows  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures//priestbottom_black_d   &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/darkmod/nature/skybox/starry1_moon  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/bacteria_4  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/metal1  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/wood1  &amp;lt;-- mapper fix; replace with &amp;quot;textures/darkmod/wood/boards/old_worn_black&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I will look at this map when I can (but if anyone wants to volunteer then great - but check with me first in case I&#039;ve started!) - Fidcal&lt;br /&gt;
&lt;br /&gt;
==Dragon&#039;s Claw (Bikerdude, Flanders) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/squarelight2  &#039;&#039;&amp;lt;-- mapper fix; cannot find such a light in D3&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:ConvertLWOToModelSurfaces: model &#039;models/darkmod/decorative/jack-o-lant&lt;br /&gt;
ern.lwo&#039; has too many verts for a poly! Make sure you triplet it down  &#039;&#039;&amp;lt;-- mapper fix; use models/darkmod/lights/non-extinguishable/jack-o-lantern.lwo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== House in Blackbog Hollow (Stumpy) ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;blooddrippy&amp;quot; particle apparently used, but the &amp;quot;textures/particlesbloodstream4&amp;quot; in the particle does not seem to exist anywhere  &#039;&#039;&amp;lt;-- mapper fix;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;stumpy will make necessary fixes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== St. Alban&#039;s Cathedral (Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part lloarm in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- these are looking for joints that no longer exist; is there a def file in the .pk4 with old character definitions?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part lloleg in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- these are looking for joints that no longer exist; is there a def file in the .pk4 with old character definitions?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part rloarm in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- these are looking for joints that no longer exist; is there a def file in the .pk4 with old character definitions?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caverock1.ASE&#039; (nor the f&lt;br /&gt;
allback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caverock5.ASE&#039; (nor the f&lt;br /&gt;
allback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caverock6.ASE&#039; (nor the f&lt;br /&gt;
allback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caves1_7.ASE&#039; (nor the fa&lt;br /&gt;
llback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caves2_5c.ASE&#039; (nor the f&lt;br /&gt;
allback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Remembrance of Him (RPGista) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;conversations broken in 1.08...might be a good time to fix them&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Betrayal (Fieldmedic) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/decals/floor_drain  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:sound shader &#039;beam_fall_1&#039; has shakes and uses OGG file &#039;sound/ambient/&lt;br /&gt;
ambience/beam_impact_1.wav&#039;  &#039;&#039;&amp;lt;-- mapper fix; sound not found&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:sound shader &#039;beam_fall_2&#039; has shakes and uses OGG file &#039;sound/ambient/&lt;br /&gt;
ambience/beam_impact_2.wav&#039;  &#039;&#039;&amp;lt;-- mapper fix; sound not found&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Deceptive Shadows (ShadowHide) ==&lt;br /&gt;
&lt;br /&gt;
NO MISSING ASSETS&lt;br /&gt;
&lt;br /&gt;
== Awaiting the Storm (HappyCheeze) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/wood1  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/darkmod/architecture/buildings/wooden_shed&lt;br /&gt;
.lwo&#039; (nor the fallback to ASE)  &#039;&#039;&amp;lt;-- mapper fix; no such model&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/tables/bunkbed/mattress.lwo&#039; (n&lt;br /&gt;
or the fallback to ASE) &#039;&#039;&amp;lt;-- mapper fix; replace with models/furniture/bed/mattress.lwo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;unable to contact HappyCheeze about modifying this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The Caduceus of St. Alban (Bikderdude)==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/decals/stainwallfadered  &#039;&#039;&amp;lt;-- mapper fix; typo?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/rock1  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/mcity/mcityplain6  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/items/shells_ammo/shells_large.lwo&#039; (nor t&lt;br /&gt;
he fallback to ASE)  &#039;&#039;&amp;lt;-- mapper fix&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crystal Grave (ERH+ Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
NO MISSING ASSETS&lt;br /&gt;
&lt;br /&gt;
== Tears of St. Lucia (jdude/Springheel) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;sound/xian/roomtones2/dangerlow_01.wav&#039; using defa&lt;br /&gt;
ult &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;sound/xian/suspense/loop_suspense_07.wav&#039; using de&lt;br /&gt;
fault &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Springheel has signed up for any updates needed to this map.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reap as you sow (Fieldmedic) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;tdm_impact_small_soft_object.wav&#039; using default  &#039;&#039;&amp;lt;-- mapper fix; no such sounds exists&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Rake Off (Jesps) - complete! ==&lt;br /&gt;
&lt;br /&gt;
Beta-tested: http://forums.thedarkmod.com/topic/14757-rake-off-jesps/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;easter egg objective fires after 9 instead of 10?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
NO MISSING ASSETS&lt;br /&gt;
&lt;br /&gt;
== Business as Usual (Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/mcity/mcityplain6  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Rift (Baddcog) - complete!==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Has been beta-tested:  http://forums.thedarkmod.com/topic/14768-the-rift-baddcog/page__pid__311580#entry311580&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Will need a new pk4.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== A Score to Settle (Springheel) ==&lt;br /&gt;
&lt;br /&gt;
In DR, following textures not being found:&lt;br /&gt;
sqsky&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Springheel has signed up for any updates needed to this map.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Alberic&#039;s Curse (Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
*D 200: aboutpostiilightdustbig  &#039;&#039;&amp;lt;-- mapper fix; cannot find any particle with this name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part lloarm in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part lloleg in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part rloarm in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== The Phrase Book (Sotha) - complete! ==&lt;br /&gt;
&lt;br /&gt;
NO MISSING ASSETS!&lt;br /&gt;
&lt;br /&gt;
== WS1: In the North (grayman) - complete! ==&lt;br /&gt;
&lt;br /&gt;
NO MISSING ASSETS!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;grayman will be making any necessary updates to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Winter Harvest (Shadowhide) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/mapobjects/hell/site3/archviletemple/candle&lt;br /&gt;
_a   &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Will need new .pk4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Thief&#039;s Den (Fidcal) ==&lt;br /&gt;
&lt;br /&gt;
Beta-tested: http://forums.thedarkmod.com/topic/14731-thiefs-den-fidcal/&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/base_trim/dangertrim01  &#039;&#039;&amp;lt;-- mapper fix.  Used on lift&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/tables/bunkbed/mattress.lwo&#039; (n&lt;br /&gt;
or the fallback to ASE)  &#039;&#039;&amp;lt;-- mapper fix; replace with darkmod/furniture/beds/mattress.lwo&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
I will look at this map when I can (but if anyone wants to volunteer then great - but check with me first in case I&#039;ve started!) - Fidcal&lt;br /&gt;
&lt;br /&gt;
== House of Theo (Theothesnopp) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Could not find anim idle_sit_2 on entity atdm_ai_townsfolk_commoner_3  &#039;&#039;&amp;lt;-- mapper fix; should be idle_sit2 (not 2.0 related)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Closemouthed Shadows (LordSavage, Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
Beta-tested:  http://forums.thedarkmod.com/topic/14742-closemouthed-shadows-lordsavage-bikerdude/&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/base_trim/dangertrim01  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Seige Shop (PranQster) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contains its own outdated version of tdm_ai_commoners.mtr and tdm_heads_dev.mtr, so is trying to load all kinds of files that no longer exist, and may not even be used in map.&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/characters/scientist/head02/hair  &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/builders/forger/forgerbottom_shad&lt;br /&gt;
ows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/builders/forger/forgertop_shadows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/heads/beard_black &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/heads/beard_black_s &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/heads/npcs/beard_black_local &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: new_average_jack_texture &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: replacement_head06 &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: replacement_head08 &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: shoulder_cowl &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_brown &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_brown_shadows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_light_tan_shadows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_ragged &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_ragged_shadows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= REPLACEMENT ASSETS NEEDED =&lt;br /&gt;
&lt;br /&gt;
These are maps that still need to have assets replaced by the development team.  They are not ready for mapper fixes or beta-testing yet.&lt;br /&gt;
&lt;br /&gt;
= NOT CURRENTLY WORKING =&lt;br /&gt;
These are missions that won&#039;t load under 2.0 for whatever reason.  Could be related to missing assets, or could be something about my local copy.  Either way I&#039;ll be leaving these for last.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Samhain Night on Bone Hill (PranQster) ==&lt;br /&gt;
&#039;&#039;&#039;runs, but needs fully working werebeast to be playable&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*D 168: tels_firearrow_explosion  &#039;&#039;&amp;lt;-- Mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*D 169: tels_waterarrow_trail  &#039;&#039;&amp;lt;-- Mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:ConvertLWOToModelSurfaces: model &#039;models/darkmod/decorative/jack-o-lant&lt;br /&gt;
ern.lwo&#039; has too many verts for a poly! &#039;&#039;&amp;lt;-- mapper fix; use models/darkmod/lights/non-extinguishable/jack-o-lantern.lwo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;monster_zombie_maint_footstep.wav&#039; using default&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;sound/ambient/environmental/steelswing_01.wav&#039; usi&lt;br /&gt;
ng default&lt;br /&gt;
&lt;br /&gt;
== Glenham Tower (Sotha) ==&lt;br /&gt;
&lt;br /&gt;
Haven&#039;t tried to load it, but I know it will crash with an error about zombie joints.  Will need mapper fix to replace old joints with joints that exist on new skeleton.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Sotha is looking for volunteers to fix this map.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Mandrasola (Sotha) ==&lt;br /&gt;
&lt;br /&gt;
Will probably run, but will not be playable without working animations for missing character (you know who you are)&lt;br /&gt;
&lt;br /&gt;
== The Creeps (Mortem Desino) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fails to load with error:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ERROR:Joint &#039;Head&#039; not found for attachment position &#039;velvetcap_1&#039; on entity &#039;i&lt;br /&gt;
 dAFAttachment_atdm:ai_headbox_zombie_646&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load anim: &#039;models/md5/characters/npcs/zheads/z1idle.md5anim&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:file def/tdm_ai_heads.def, line 274: Couldn&#039;t load anim &#039;models/md5/cha&lt;br /&gt;
racters/npcs/zheads/z1idle.md5anim&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE FROM MD:&#039;&#039;&#039; I anticipated this problem. The solution for this is already in the FM package:&lt;br /&gt;
on entity revenant_spirit_shadow set &amp;quot;def_head&amp;quot; &amp;quot;atdm:ai_head_rev_spirit&amp;quot;&lt;br /&gt;
on entity revenant_spirit_chase set &amp;quot;def_head&amp;quot; &amp;quot;atdm:ai_head_rev_spirit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now, I think all that is left are a bunch of missing particle assets (mostly water drips and dust falling from ceiling) as well as light textures (you&#039;ll notice that many of the FM&#039;s saturated colored ambient lights are missing, leaving you with only the very dim ambient_world)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Mortem would like a volunteer to update .pk4&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Flakebridge Monastery (Jesps) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crashes with error:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ERROR:Joint &#039;Rhand&#039; not found for bind on &#039;func_static_212&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is due to the new zombie having different joint names.  It will require fixing the .pk4.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;stone_impact.wav&#039; using default&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;paper_impact.wav&#039; using default&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;book_impact.wav&#039; using default&lt;br /&gt;
&lt;br /&gt;
==Heart of Lone Salvation, The (Fidcal)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crashes with error:&lt;br /&gt;
 ERROR:idMoveable &#039;sheet_paper6&#039;: cannot load collision model models/mapobjects/&lt;br /&gt;
 filler/paperwad1.lwo&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/filler/paperwad1.lwo&#039; (nor the&lt;br /&gt;
fallback to ASE)&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/tables/bunkbed/mattress.lwo&#039; (n&lt;br /&gt;
or the fallback to ASE)  &#039;&#039;&amp;lt;-- mapper fix; use models/darkmod/furniture/beds/mattress.lwo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Obstortte has volunteered to fix this.&lt;br /&gt;
&lt;br /&gt;
= NOT TESTED =&lt;br /&gt;
&lt;br /&gt;
== Old Habits II (Obsttorte) ==&lt;br /&gt;
&lt;br /&gt;
== The Lich Queen&#039;s Demise (Sotha) ==&lt;br /&gt;
&lt;br /&gt;
==Lord Dufford&#039;s (stumpy)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;stumpy will make necessary fixes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Q4 Conversion: Yan&#039;s Test (Bikerdude) ==&lt;br /&gt;
== No Honour Among Theives: episode 1 (goldchocobo) ==&lt;br /&gt;
&lt;br /&gt;
This was crashing at map start, but should be retested with at least SVN revision 13442.&lt;br /&gt;
&lt;br /&gt;
That revision fixes the crash, which was unrelated to the presence or absence of D3 assets.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; Since an update to this is due to be released shortly, I will wait before testing the NHAT maps.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==No Honor Among Thieves Part 2 (goldchocobo) ==&lt;br /&gt;
==No Honor Among Thieves Part 3 (goldchocobo)==&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Missing_assets_by_map&amp;diff=16980</id>
		<title>Missing assets by map</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Missing_assets_by_map&amp;diff=16980"/>
		<updated>2013-06-06T09:58:46Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Thief&amp;#039;s Den (Fidcal) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a list of missing assets by map.  My plan is to go through these map by map to find which assets need to be added.&lt;br /&gt;
&lt;br /&gt;
I will not include warnings that also show up in 1.08, as these aren&#039;t standalone issues:    [[list of pre 2.0 warnings]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= READY FOR 2.0 RELEASE =&lt;br /&gt;
These are maps that have been tested under TDM 2.0 and deemed ready for release.  Missions that have an updated .pk4 will be noted.&lt;br /&gt;
&lt;br /&gt;
== Lockdown Part 1 (GameDevGoro Bikerdude Fidcal) == &lt;br /&gt;
&lt;br /&gt;
==Dark Mod Training Mission, The ==&lt;br /&gt;
&lt;br /&gt;
== A Night to Remember (Fieldmedic) ==&lt;br /&gt;
&lt;br /&gt;
== Beleagured Fence (Sotha) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Builder Roads (Obsttorte) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== The Transaction (Sotha) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Patently Dangerous (demagogue) - new .pk4 ==&lt;br /&gt;
&lt;br /&gt;
== Trapped! (RailGun) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Swing (Komag ) ==&lt;br /&gt;
&lt;br /&gt;
==Illusionist&#039;s Tower (stumpy) ==&lt;br /&gt;
&lt;br /&gt;
== Sons of Baltona Part 1 (Carnage) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Rightful Property (jysk) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Living Expenses (Sonosuke) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Builder&#039;s Influence (Railgun, Springheel) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== A Special Delivery (Silencium18) ==&lt;br /&gt;
&lt;br /&gt;
== Mad&#039;s Mountain (Jesps) ==&lt;br /&gt;
&lt;br /&gt;
== Parcel, The (Xonze)- complete! ==&lt;br /&gt;
&lt;br /&gt;
==Chalice of Kings (Fidcal) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Somewhere Above the City (grayman) - new .pk4 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;on FTP site&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Crown of Penitence, The (Jesps) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Return to the City (Melan/Bikderdude) - new .pk4 ==&lt;br /&gt;
&#039;&#039;on FTP site&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Knighton&#039;s Manor (Sotha) - complete! ==&lt;br /&gt;
== Sneak and Destroy (SeriousToni) - complete! ==&lt;br /&gt;
== Fiasco at Fauchard Street (Melan) - complete! ==&lt;br /&gt;
== The Thieves (Silencium, RailGun, Fidcal) - complete! ==&lt;br /&gt;
== Pandora&#039;s Box (Jesps, Fidcal) ==&lt;br /&gt;
== The Outpost (angua/greebo) - complete! ==&lt;br /&gt;
== Too Late (Nielsen74) - complete! ==&lt;br /&gt;
== Let Sleeping Thieves Lie (Sir Taffsalot, Bikerdude)- complete! ==&lt;br /&gt;
== Vengeance for a Thief Part I (Sir Taffsalot) - new .pk4 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;on ftp&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= READY FOR MAPPER FIXES =&lt;br /&gt;
&lt;br /&gt;
These are maps that require fixes by a mapper, or are waiting to be beta-tested to make everything works properly.  Once they are corrected or confirmed working, they will be removed from this category.  Updated .pk4s should be given to the development team for release after 2.0.&lt;br /&gt;
&lt;br /&gt;
== Old Habits (1) (Obsttorte) ==&lt;br /&gt;
&lt;br /&gt;
recyc_pipedrip10  &#039;&#039;&amp;lt;-- still listed as missing, but the particle ISN&#039;T missing.  It&#039;s in tdm_water.prt.  Huh?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/blamplighttile  &#039;&#039;&amp;lt;--mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/floorvent01x  &#039;&#039;&amp;lt;--mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Obsttorte will be making any necessary updates to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Alchemist, The (Sotha, Fidcal) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;stone_sliding.wav&#039; using default  &#039;&#039;&amp;lt;-- mapper fix; cannot find any such file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/tdm_sky_skyfadebiground1  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/misc/rope_dark_noshadows  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures//priestbottom_black_d   &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/darkmod/nature/skybox/starry1_moon  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/bacteria_4  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/metal1  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/wood1  &amp;lt;-- mapper fix; replace with &amp;quot;textures/darkmod/wood/boards/old_worn_black&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I will look at this map when I can (but if anyone wants to volunteer then great - but check with me first in case I&#039;ve started!) - Fidcal&lt;br /&gt;
&lt;br /&gt;
==Dragon&#039;s Claw (Bikerdude, Flanders) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/squarelight2  &#039;&#039;&amp;lt;-- mapper fix; cannot find such a light in D3&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:ConvertLWOToModelSurfaces: model &#039;models/darkmod/decorative/jack-o-lant&lt;br /&gt;
ern.lwo&#039; has too many verts for a poly! Make sure you triplet it down  &#039;&#039;&amp;lt;-- mapper fix; use models/darkmod/lights/non-extinguishable/jack-o-lantern.lwo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== House in Blackbog Hollow (Stumpy) ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;blooddrippy&amp;quot; particle apparently used, but the &amp;quot;textures/particlesbloodstream4&amp;quot; in the particle does not seem to exist anywhere  &#039;&#039;&amp;lt;-- mapper fix;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;stumpy will make necessary fixes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== St. Alban&#039;s Cathedral (Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part lloarm in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- these are looking for joints that no longer exist; is there a def file in the .pk4 with old character definitions?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part lloleg in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- these are looking for joints that no longer exist; is there a def file in the .pk4 with old character definitions?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part rloarm in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- these are looking for joints that no longer exist; is there a def file in the .pk4 with old character definitions?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caverock1.ASE&#039; (nor the f&lt;br /&gt;
allback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caverock5.ASE&#039; (nor the f&lt;br /&gt;
allback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caverock6.ASE&#039; (nor the f&lt;br /&gt;
allback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caves1_7.ASE&#039; (nor the fa&lt;br /&gt;
llback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caves2_5c.ASE&#039; (nor the f&lt;br /&gt;
allback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Remembrance of Him (RPGista) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;conversations broken in 1.08...might be a good time to fix them&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Betrayal (Fieldmedic) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/decals/floor_drain  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:sound shader &#039;beam_fall_1&#039; has shakes and uses OGG file &#039;sound/ambient/&lt;br /&gt;
ambience/beam_impact_1.wav&#039;  &#039;&#039;&amp;lt;-- mapper fix; sound not found&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:sound shader &#039;beam_fall_2&#039; has shakes and uses OGG file &#039;sound/ambient/&lt;br /&gt;
ambience/beam_impact_2.wav&#039;  &#039;&#039;&amp;lt;-- mapper fix; sound not found&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Deceptive Shadows (ShadowHide) ==&lt;br /&gt;
&lt;br /&gt;
NO MISSING ASSETS&lt;br /&gt;
&lt;br /&gt;
== Awaiting the Storm (HappyCheeze) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/wood1  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/darkmod/architecture/buildings/wooden_shed&lt;br /&gt;
.lwo&#039; (nor the fallback to ASE)  &#039;&#039;&amp;lt;-- mapper fix; no such model&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/tables/bunkbed/mattress.lwo&#039; (n&lt;br /&gt;
or the fallback to ASE) &#039;&#039;&amp;lt;-- mapper fix; replace with models/furniture/bed/mattress.lwo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;unable to contact HappyCheeze about modifying this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The Caduceus of St. Alban (Bikderdude)==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/decals/stainwallfadered  &#039;&#039;&amp;lt;-- mapper fix; typo?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/rock1  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/mcity/mcityplain6  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/items/shells_ammo/shells_large.lwo&#039; (nor t&lt;br /&gt;
he fallback to ASE)  &#039;&#039;&amp;lt;-- mapper fix&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crystal Grave (ERH+ Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
NO MISSING ASSETS&lt;br /&gt;
&lt;br /&gt;
== Tears of St. Lucia (jdude/Springheel) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;sound/xian/roomtones2/dangerlow_01.wav&#039; using defa&lt;br /&gt;
ult &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;sound/xian/suspense/loop_suspense_07.wav&#039; using de&lt;br /&gt;
fault &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Springheel has signed up for any updates needed to this map.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reap as you sow (Fieldmedic) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;tdm_impact_small_soft_object.wav&#039; using default  &#039;&#039;&amp;lt;-- mapper fix; no such sounds exists&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Rake Off (Jesps) - complete! ==&lt;br /&gt;
&lt;br /&gt;
Beta-tested: http://forums.thedarkmod.com/topic/14757-rake-off-jesps/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;easter egg objective fires after 9 instead of 10?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
NO MISSING ASSETS&lt;br /&gt;
&lt;br /&gt;
== Business as Usual (Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/mcity/mcityplain6  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Rift (Baddcog) - complete!==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Has been beta-tested:  http://forums.thedarkmod.com/topic/14768-the-rift-baddcog/page__pid__311580#entry311580&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Will need a new pk4.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== A Score to Settle (Springheel) ==&lt;br /&gt;
&lt;br /&gt;
In DR, following textures not being found:&lt;br /&gt;
sqsky&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Springheel has signed up for any updates needed to this map.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Alberic&#039;s Curse (Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
*D 200: aboutpostiilightdustbig  &#039;&#039;&amp;lt;-- mapper fix; cannot find any particle with this name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part lloarm in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part lloleg in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part rloarm in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== The Phrase Book (Sotha) - complete! ==&lt;br /&gt;
&lt;br /&gt;
NO MISSING ASSETS!&lt;br /&gt;
&lt;br /&gt;
== WS1: In the North (grayman) - complete! ==&lt;br /&gt;
&lt;br /&gt;
NO MISSING ASSETS!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;grayman will be making any necessary updates to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Winter Harvest (Shadowhide) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/mapobjects/hell/site3/archviletemple/candle&lt;br /&gt;
_a   &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Will need new .pk4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Thief&#039;s Den (Fidcal) ==&lt;br /&gt;
&lt;br /&gt;
Beta-tested: http://forums.thedarkmod.com/topic/14731-thiefs-den-fidcal/&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/base_trim/dangertrim01  &#039;&#039;&amp;lt;-- mapper fix.  Used on lift&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/tables/bunkbed/mattress.lwo&#039; (n&lt;br /&gt;
or the fallback to ASE)  &#039;&#039;&amp;lt;-- mapper fix; replace with darkmod/furniture/beds/mattress.lwo&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
I will look at this map when I can (but if anyone wants to volunteer then great - but check with me first in case I&#039;ve started!) - Fidcal&lt;br /&gt;
&lt;br /&gt;
== House of Theo (Theothesnopp) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Could not find anim idle_sit_2 on entity atdm_ai_townsfolk_commoner_3  &#039;&#039;&amp;lt;-- mapper fix; should be idle_sit2 (not 2.0 related)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Closemouthed Shadows (LordSavage, Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
Beta-tested:  http://forums.thedarkmod.com/topic/14742-closemouthed-shadows-lordsavage-bikerdude/&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/base_trim/dangertrim01  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Seige Shop (PranQster) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contains its own outdated version of tdm_ai_commoners.mtr and tdm_heads_dev.mtr, so is trying to load all kinds of files that no longer exist, and may not even be used in map.&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/characters/scientist/head02/hair  &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/builders/forger/forgerbottom_shad&lt;br /&gt;
ows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/builders/forger/forgertop_shadows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/heads/beard_black &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/heads/beard_black_s &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/heads/npcs/beard_black_local &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: new_average_jack_texture &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: replacement_head06 &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: replacement_head08 &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: shoulder_cowl &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_brown &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_brown_shadows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_light_tan_shadows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_ragged &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_ragged_shadows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= REPLACEMENT ASSETS NEEDED =&lt;br /&gt;
&lt;br /&gt;
These are maps that still need to have assets replaced by the development team.  They are not ready for mapper fixes or beta-testing yet.&lt;br /&gt;
&lt;br /&gt;
= NOT CURRENTLY WORKING =&lt;br /&gt;
These are missions that won&#039;t load under 2.0 for whatever reason.  Could be related to missing assets, or could be something about my local copy.  Either way I&#039;ll be leaving these for last.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Samhain Night on Bone Hill (PranQster) ==&lt;br /&gt;
&#039;&#039;&#039;runs, but needs fully working werebeast to be playable&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*D 168: tels_firearrow_explosion  &#039;&#039;&amp;lt;-- Mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*D 169: tels_waterarrow_trail  &#039;&#039;&amp;lt;-- Mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:ConvertLWOToModelSurfaces: model &#039;models/darkmod/decorative/jack-o-lant&lt;br /&gt;
ern.lwo&#039; has too many verts for a poly! &#039;&#039;&amp;lt;-- mapper fix; use models/darkmod/lights/non-extinguishable/jack-o-lantern.lwo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;monster_zombie_maint_footstep.wav&#039; using default&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;sound/ambient/environmental/steelswing_01.wav&#039; usi&lt;br /&gt;
ng default&lt;br /&gt;
&lt;br /&gt;
== Glenham Tower (Sotha) ==&lt;br /&gt;
&lt;br /&gt;
Haven&#039;t tried to load it, but I know it will crash with an error about zombie joints.  Will need mapper fix to replace old joints with joints that exist on new skeleton.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Sotha is looking for volunteers to fix this map.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Mandrasola (Sotha) ==&lt;br /&gt;
&lt;br /&gt;
Will probably run, but will not be playable without working animations for missing character (you know who you are)&lt;br /&gt;
&lt;br /&gt;
== The Creeps (Mortem Desino) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fails to load with error:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ERROR:Joint &#039;Head&#039; not found for attachment position &#039;velvetcap_1&#039; on entity &#039;i&lt;br /&gt;
 dAFAttachment_atdm:ai_headbox_zombie_646&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load anim: &#039;models/md5/characters/npcs/zheads/z1idle.md5anim&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:file def/tdm_ai_heads.def, line 274: Couldn&#039;t load anim &#039;models/md5/cha&lt;br /&gt;
racters/npcs/zheads/z1idle.md5anim&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE FROM MD:&#039;&#039;&#039; I anticipated this problem. The solution for this is already in the FM package:&lt;br /&gt;
on entity revenant_spirit_shadow set &amp;quot;def_head&amp;quot; &amp;quot;atdm:ai_head_rev_spirit&amp;quot;&lt;br /&gt;
on entity revenant_spirit_chase set &amp;quot;def_head&amp;quot; &amp;quot;atdm:ai_head_rev_spirit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now, I think all that is left are a bunch of missing particle assets (mostly water drips and dust falling from ceiling) as well as light textures (you&#039;ll notice that many of the FM&#039;s saturated colored ambient lights are missing, leaving you with only the very dim ambient_world)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Mortem would like a volunteer to update .pk4&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Flakebridge Monastery (Jesps) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crashes with error:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ERROR:Joint &#039;Rhand&#039; not found for bind on &#039;func_static_212&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is due to the new zombie having different joint names.  It will require fixing the .pk4.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;stone_impact.wav&#039; using default&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;paper_impact.wav&#039; using default&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;book_impact.wav&#039; using default&lt;br /&gt;
&lt;br /&gt;
==Heart of Lone Salvation, The (Fidcal)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crashes with error:&lt;br /&gt;
 ERROR:idMoveable &#039;sheet_paper6&#039;: cannot load collision model models/mapobjects/&lt;br /&gt;
 filler/paperwad1.lwo&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/filler/paperwad1.lwo&#039; (nor the&lt;br /&gt;
fallback to ASE)&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/tables/bunkbed/mattress.lwo&#039; (n&lt;br /&gt;
or the fallback to ASE)  &#039;&#039;&amp;lt;-- mapper fix; use models/darkmod/furniture/beds/mattress.lwo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= NOT TESTED =&lt;br /&gt;
&lt;br /&gt;
== Old Habits II (Obsttorte) ==&lt;br /&gt;
&lt;br /&gt;
== The Lich Queen&#039;s Demise (Sotha) ==&lt;br /&gt;
&lt;br /&gt;
==Lord Dufford&#039;s (stumpy)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;stumpy will make necessary fixes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Q4 Conversion: Yan&#039;s Test (Bikerdude) ==&lt;br /&gt;
== No Honour Among Theives: episode 1 (goldchocobo) ==&lt;br /&gt;
&lt;br /&gt;
This was crashing at map start, but should be retested with at least SVN revision 13442.&lt;br /&gt;
&lt;br /&gt;
That revision fixes the crash, which was unrelated to the presence or absence of D3 assets.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; Since an update to this is due to be released shortly, I will wait before testing the NHAT maps.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==No Honor Among Thieves Part 2 (goldchocobo) ==&lt;br /&gt;
==No Honor Among Thieves Part 3 (goldchocobo)==&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Missing_assets_by_map&amp;diff=16979</id>
		<title>Missing assets by map</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Missing_assets_by_map&amp;diff=16979"/>
		<updated>2013-06-06T09:57:50Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Alchemist, The (Sotha, Fidcal) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a list of missing assets by map.  My plan is to go through these map by map to find which assets need to be added.&lt;br /&gt;
&lt;br /&gt;
I will not include warnings that also show up in 1.08, as these aren&#039;t standalone issues:    [[list of pre 2.0 warnings]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= READY FOR 2.0 RELEASE =&lt;br /&gt;
These are maps that have been tested under TDM 2.0 and deemed ready for release.  Missions that have an updated .pk4 will be noted.&lt;br /&gt;
&lt;br /&gt;
== Lockdown Part 1 (GameDevGoro Bikerdude Fidcal) == &lt;br /&gt;
&lt;br /&gt;
==Dark Mod Training Mission, The ==&lt;br /&gt;
&lt;br /&gt;
== A Night to Remember (Fieldmedic) ==&lt;br /&gt;
&lt;br /&gt;
== Beleagured Fence (Sotha) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Builder Roads (Obsttorte) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== The Transaction (Sotha) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Patently Dangerous (demagogue) - new .pk4 ==&lt;br /&gt;
&lt;br /&gt;
== Trapped! (RailGun) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Swing (Komag ) ==&lt;br /&gt;
&lt;br /&gt;
==Illusionist&#039;s Tower (stumpy) ==&lt;br /&gt;
&lt;br /&gt;
== Sons of Baltona Part 1 (Carnage) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Rightful Property (jysk) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Living Expenses (Sonosuke) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Builder&#039;s Influence (Railgun, Springheel) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== A Special Delivery (Silencium18) ==&lt;br /&gt;
&lt;br /&gt;
== Mad&#039;s Mountain (Jesps) ==&lt;br /&gt;
&lt;br /&gt;
== Parcel, The (Xonze)- complete! ==&lt;br /&gt;
&lt;br /&gt;
==Chalice of Kings (Fidcal) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Somewhere Above the City (grayman) - new .pk4 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;on FTP site&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Crown of Penitence, The (Jesps) - complete! ==&lt;br /&gt;
&lt;br /&gt;
== Return to the City (Melan/Bikderdude) - new .pk4 ==&lt;br /&gt;
&#039;&#039;on FTP site&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Knighton&#039;s Manor (Sotha) - complete! ==&lt;br /&gt;
== Sneak and Destroy (SeriousToni) - complete! ==&lt;br /&gt;
== Fiasco at Fauchard Street (Melan) - complete! ==&lt;br /&gt;
== The Thieves (Silencium, RailGun, Fidcal) - complete! ==&lt;br /&gt;
== Pandora&#039;s Box (Jesps, Fidcal) ==&lt;br /&gt;
== The Outpost (angua/greebo) - complete! ==&lt;br /&gt;
== Too Late (Nielsen74) - complete! ==&lt;br /&gt;
== Let Sleeping Thieves Lie (Sir Taffsalot, Bikerdude)- complete! ==&lt;br /&gt;
== Vengeance for a Thief Part I (Sir Taffsalot) - new .pk4 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;on ftp&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= READY FOR MAPPER FIXES =&lt;br /&gt;
&lt;br /&gt;
These are maps that require fixes by a mapper, or are waiting to be beta-tested to make everything works properly.  Once they are corrected or confirmed working, they will be removed from this category.  Updated .pk4s should be given to the development team for release after 2.0.&lt;br /&gt;
&lt;br /&gt;
== Old Habits (1) (Obsttorte) ==&lt;br /&gt;
&lt;br /&gt;
recyc_pipedrip10  &#039;&#039;&amp;lt;-- still listed as missing, but the particle ISN&#039;T missing.  It&#039;s in tdm_water.prt.  Huh?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/blamplighttile  &#039;&#039;&amp;lt;--mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/floorvent01x  &#039;&#039;&amp;lt;--mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Obsttorte will be making any necessary updates to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Alchemist, The (Sotha, Fidcal) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;stone_sliding.wav&#039; using default  &#039;&#039;&amp;lt;-- mapper fix; cannot find any such file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/tdm_sky_skyfadebiground1  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/misc/rope_dark_noshadows  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures//priestbottom_black_d   &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/darkmod/nature/skybox/starry1_moon  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/bacteria_4  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/metal1  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/wood1  &amp;lt;-- mapper fix; replace with &amp;quot;textures/darkmod/wood/boards/old_worn_black&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I will look at this map when I can (but if anyone wants to volunteer then great - but check with me first in case I&#039;ve started!) - Fidcal&lt;br /&gt;
&lt;br /&gt;
==Dragon&#039;s Claw (Bikerdude, Flanders) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: lights/squarelight2  &#039;&#039;&amp;lt;-- mapper fix; cannot find such a light in D3&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:ConvertLWOToModelSurfaces: model &#039;models/darkmod/decorative/jack-o-lant&lt;br /&gt;
ern.lwo&#039; has too many verts for a poly! Make sure you triplet it down  &#039;&#039;&amp;lt;-- mapper fix; use models/darkmod/lights/non-extinguishable/jack-o-lantern.lwo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== House in Blackbog Hollow (Stumpy) ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;blooddrippy&amp;quot; particle apparently used, but the &amp;quot;textures/particlesbloodstream4&amp;quot; in the particle does not seem to exist anywhere  &#039;&#039;&amp;lt;-- mapper fix;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;stumpy will make necessary fixes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== St. Alban&#039;s Cathedral (Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part lloarm in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- these are looking for joints that no longer exist; is there a def file in the .pk4 with old character definitions?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part lloleg in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- these are looking for joints that no longer exist; is there a def file in the .pk4 with old character definitions?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part rloarm in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- these are looking for joints that no longer exist; is there a def file in the .pk4 with old character definitions?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caverock1.ASE&#039; (nor the f&lt;br /&gt;
allback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caverock5.ASE&#039; (nor the f&lt;br /&gt;
allback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caverock6.ASE&#039; (nor the f&lt;br /&gt;
allback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caves1_7.ASE&#039; (nor the fa&lt;br /&gt;
llback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/caves/caves2_5c.ASE&#039; (nor the f&lt;br /&gt;
allback to LWO)  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Remembrance of Him (RPGista) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;conversations broken in 1.08...might be a good time to fix them&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Betrayal (Fieldmedic) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/decals/floor_drain  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:sound shader &#039;beam_fall_1&#039; has shakes and uses OGG file &#039;sound/ambient/&lt;br /&gt;
ambience/beam_impact_1.wav&#039;  &#039;&#039;&amp;lt;-- mapper fix; sound not found&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:sound shader &#039;beam_fall_2&#039; has shakes and uses OGG file &#039;sound/ambient/&lt;br /&gt;
ambience/beam_impact_2.wav&#039;  &#039;&#039;&amp;lt;-- mapper fix; sound not found&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Deceptive Shadows (ShadowHide) ==&lt;br /&gt;
&lt;br /&gt;
NO MISSING ASSETS&lt;br /&gt;
&lt;br /&gt;
== Awaiting the Storm (HappyCheeze) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/wood1  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/darkmod/architecture/buildings/wooden_shed&lt;br /&gt;
.lwo&#039; (nor the fallback to ASE)  &#039;&#039;&amp;lt;-- mapper fix; no such model&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/tables/bunkbed/mattress.lwo&#039; (n&lt;br /&gt;
or the fallback to ASE) &#039;&#039;&amp;lt;-- mapper fix; replace with models/furniture/bed/mattress.lwo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;unable to contact HappyCheeze about modifying this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The Caduceus of St. Alban (Bikderdude)==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/decals/stainwallfadered  &#039;&#039;&amp;lt;-- mapper fix; typo?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/hell/rock1  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/mcity/mcityplain6  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/items/shells_ammo/shells_large.lwo&#039; (nor t&lt;br /&gt;
he fallback to ASE)  &#039;&#039;&amp;lt;-- mapper fix&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crystal Grave (ERH+ Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
NO MISSING ASSETS&lt;br /&gt;
&lt;br /&gt;
== Tears of St. Lucia (jdude/Springheel) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;sound/xian/roomtones2/dangerlow_01.wav&#039; using defa&lt;br /&gt;
ult &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;sound/xian/suspense/loop_suspense_07.wav&#039; using de&lt;br /&gt;
fault &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Springheel has signed up for any updates needed to this map.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reap as you sow (Fieldmedic) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;tdm_impact_small_soft_object.wav&#039; using default  &#039;&#039;&amp;lt;-- mapper fix; no such sounds exists&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Rake Off (Jesps) - complete! ==&lt;br /&gt;
&lt;br /&gt;
Beta-tested: http://forums.thedarkmod.com/topic/14757-rake-off-jesps/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;easter egg objective fires after 9 instead of 10?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
NO MISSING ASSETS&lt;br /&gt;
&lt;br /&gt;
== Business as Usual (Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/mcity/mcityplain6  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Rift (Baddcog) - complete!==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Has been beta-tested:  http://forums.thedarkmod.com/topic/14768-the-rift-baddcog/page__pid__311580#entry311580&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Will need a new pk4.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== A Score to Settle (Springheel) ==&lt;br /&gt;
&lt;br /&gt;
In DR, following textures not being found:&lt;br /&gt;
sqsky&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Springheel has signed up for any updates needed to this map.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Alberic&#039;s Curse (Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
*D 200: aboutpostiilightdustbig  &#039;&#039;&amp;lt;-- mapper fix; cannot find any particle with this name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part lloarm in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part lloleg in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Unknown body part rloarm in articulated figure guard_base_newskel  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Biker will make any necessary changes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== The Phrase Book (Sotha) - complete! ==&lt;br /&gt;
&lt;br /&gt;
NO MISSING ASSETS!&lt;br /&gt;
&lt;br /&gt;
== WS1: In the North (grayman) - complete! ==&lt;br /&gt;
&lt;br /&gt;
NO MISSING ASSETS!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;grayman will be making any necessary updates to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Winter Harvest (Shadowhide) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/mapobjects/hell/site3/archviletemple/candle&lt;br /&gt;
_a   &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Will need new .pk4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Thief&#039;s Den (Fidcal) ==&lt;br /&gt;
&lt;br /&gt;
Beta-tested: http://forums.thedarkmod.com/topic/14731-thiefs-den-fidcal/&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/base_trim/dangertrim01  &#039;&#039;&amp;lt;-- mapper fix.  Used on lift&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/tables/bunkbed/mattress.lwo&#039; (n&lt;br /&gt;
or the fallback to ASE)  &#039;&#039;&amp;lt;-- mapper fix; replace with darkmod/furniture/beds/mattress.lwo&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== House of Theo (Theothesnopp) ==&lt;br /&gt;
&lt;br /&gt;
WARNING:Could not find anim idle_sit_2 on entity atdm_ai_townsfolk_commoner_3  &#039;&#039;&amp;lt;-- mapper fix; should be idle_sit2 (not 2.0 related)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Closemouthed Shadows (LordSavage, Bikerdude) ==&lt;br /&gt;
&lt;br /&gt;
Beta-tested:  http://forums.thedarkmod.com/topic/14742-closemouthed-shadows-lordsavage-bikerdude/&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: textures/base_trim/dangertrim01  &#039;&#039;&amp;lt;-- mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Seige Shop (PranQster) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contains its own outdated version of tdm_ai_commoners.mtr and tdm_heads_dev.mtr, so is trying to load all kinds of files that no longer exist, and may not even be used in map.&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/characters/scientist/head02/hair  &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/builders/forger/forgerbottom_shad&lt;br /&gt;
ows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/builders/forger/forgertop_shadows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/heads/beard_black &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/heads/beard_black_s &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: models/md5/chars/heads/npcs/beard_black_local &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: new_average_jack_texture &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: replacement_head06 &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: replacement_head08 &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: shoulder_cowl &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_brown &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_brown_shadows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_light_tan_shadows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_ragged &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load image: tdm_commoner_tunic_ragged_shadows &#039;&#039;&amp;lt;-- mapper fix; outdated file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= REPLACEMENT ASSETS NEEDED =&lt;br /&gt;
&lt;br /&gt;
These are maps that still need to have assets replaced by the development team.  They are not ready for mapper fixes or beta-testing yet.&lt;br /&gt;
&lt;br /&gt;
= NOT CURRENTLY WORKING =&lt;br /&gt;
These are missions that won&#039;t load under 2.0 for whatever reason.  Could be related to missing assets, or could be something about my local copy.  Either way I&#039;ll be leaving these for last.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Samhain Night on Bone Hill (PranQster) ==&lt;br /&gt;
&#039;&#039;&#039;runs, but needs fully working werebeast to be playable&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*D 168: tels_firearrow_explosion  &#039;&#039;&amp;lt;-- Mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*D 169: tels_waterarrow_trail  &#039;&#039;&amp;lt;-- Mapper fix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:ConvertLWOToModelSurfaces: model &#039;models/darkmod/decorative/jack-o-lant&lt;br /&gt;
ern.lwo&#039; has too many verts for a poly! &#039;&#039;&amp;lt;-- mapper fix; use models/darkmod/lights/non-extinguishable/jack-o-lantern.lwo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;monster_zombie_maint_footstep.wav&#039; using default&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;sound/ambient/environmental/steelswing_01.wav&#039; usi&lt;br /&gt;
ng default&lt;br /&gt;
&lt;br /&gt;
== Glenham Tower (Sotha) ==&lt;br /&gt;
&lt;br /&gt;
Haven&#039;t tried to load it, but I know it will crash with an error about zombie joints.  Will need mapper fix to replace old joints with joints that exist on new skeleton.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Sotha is looking for volunteers to fix this map.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Mandrasola (Sotha) ==&lt;br /&gt;
&lt;br /&gt;
Will probably run, but will not be playable without working animations for missing character (you know who you are)&lt;br /&gt;
&lt;br /&gt;
== The Creeps (Mortem Desino) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fails to load with error:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ERROR:Joint &#039;Head&#039; not found for attachment position &#039;velvetcap_1&#039; on entity &#039;i&lt;br /&gt;
 dAFAttachment_atdm:ai_headbox_zombie_646&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load anim: &#039;models/md5/characters/npcs/zheads/z1idle.md5anim&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:file def/tdm_ai_heads.def, line 274: Couldn&#039;t load anim &#039;models/md5/cha&lt;br /&gt;
racters/npcs/zheads/z1idle.md5anim&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE FROM MD:&#039;&#039;&#039; I anticipated this problem. The solution for this is already in the FM package:&lt;br /&gt;
on entity revenant_spirit_shadow set &amp;quot;def_head&amp;quot; &amp;quot;atdm:ai_head_rev_spirit&amp;quot;&lt;br /&gt;
on entity revenant_spirit_chase set &amp;quot;def_head&amp;quot; &amp;quot;atdm:ai_head_rev_spirit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now, I think all that is left are a bunch of missing particle assets (mostly water drips and dust falling from ceiling) as well as light textures (you&#039;ll notice that many of the FM&#039;s saturated colored ambient lights are missing, leaving you with only the very dim ambient_world)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Mortem would like a volunteer to update .pk4&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Flakebridge Monastery (Jesps) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crashes with error:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ERROR:Joint &#039;Rhand&#039; not found for bind on &#039;func_static_212&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is due to the new zombie having different joint names.  It will require fixing the .pk4.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;stone_impact.wav&#039; using default&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;paper_impact.wav&#039; using default&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load sound &#039;book_impact.wav&#039; using default&lt;br /&gt;
&lt;br /&gt;
==Heart of Lone Salvation, The (Fidcal)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crashes with error:&lt;br /&gt;
 ERROR:idMoveable &#039;sheet_paper6&#039;: cannot load collision model models/mapobjects/&lt;br /&gt;
 filler/paperwad1.lwo&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/filler/paperwad1.lwo&#039; (nor the&lt;br /&gt;
fallback to ASE)&lt;br /&gt;
&lt;br /&gt;
WARNING:Couldn&#039;t load model: &#039;models/mapobjects/tables/bunkbed/mattress.lwo&#039; (n&lt;br /&gt;
or the fallback to ASE)  &#039;&#039;&amp;lt;-- mapper fix; use models/darkmod/furniture/beds/mattress.lwo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= NOT TESTED =&lt;br /&gt;
&lt;br /&gt;
== Old Habits II (Obsttorte) ==&lt;br /&gt;
&lt;br /&gt;
== The Lich Queen&#039;s Demise (Sotha) ==&lt;br /&gt;
&lt;br /&gt;
==Lord Dufford&#039;s (stumpy)==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;stumpy will make necessary fixes to this map&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Q4 Conversion: Yan&#039;s Test (Bikerdude) ==&lt;br /&gt;
== No Honour Among Theives: episode 1 (goldchocobo) ==&lt;br /&gt;
&lt;br /&gt;
This was crashing at map start, but should be retested with at least SVN revision 13442.&lt;br /&gt;
&lt;br /&gt;
That revision fixes the crash, which was unrelated to the presence or absence of D3 assets.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; Since an update to this is due to be released shortly, I will wait before testing the NHAT maps.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==No Honor Among Thieves Part 2 (goldchocobo) ==&lt;br /&gt;
==No Honor Among Thieves Part 3 (goldchocobo)==&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Rescaling,_Resizing,_Models_in_Dark_Radiant&amp;diff=15898</id>
		<title>Rescaling, Resizing, Models in Dark Radiant</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Rescaling,_Resizing,_Models_in_Dark_Radiant&amp;diff=15898"/>
		<updated>2013-02-23T23:18:38Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Shadow Problems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;written by Fidcal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Size matters! With some restrictions, most models (not AI) can be rescaled in three directions independantly in Dark Radiant. This provides for a large amount of extra variety and realism without needing extra models of different dimensions. Bowls, Plates, books, pictures, and plants do not exist in a limited size in the real world so why not vary them? How tall is a candle is like asking how long is a piece of string. Some furniture such as shelf units and tables can be stretched in one or all directions (watch that texture though), and an almost endless list of other objects can add interest to your game. A statue can be a statuette and vice versa. A building can become a doll&#039;s house; in fact most objects can be reduced to playthings for a nursery. The only limit is your imagination - so enlarge it!&lt;br /&gt;
&lt;br /&gt;
== Method of Rescaling Models ==&lt;br /&gt;
How is it done? There is a rescaling value included in the rotation property (not to be confused with the &#039;&#039;rotate&#039;&#039; or &#039;&#039;angle&#039;&#039; properties.) There is a problem if rotation itself is needed as well as rescaling so study the [[#Rotating Rescaled Models]] section before proceeding with it.&lt;br /&gt;
&lt;br /&gt;
Put simply, the rotation property default values are 1 0 0 0 1 0 0 0 1 where the first, fifth, and ninth (the &#039;1&#039;s in the default values) are the XYZ rescale values. As you can see in the default they are all a scale of 1. It is not simple once rotated so generally only rescale the unrotated model then rotate after if needed (see [[#Rotating Rescaled Models]] section.)&lt;br /&gt;
&lt;br /&gt;
The XYZ are absolute map directions so changing Y for example will affect the North/South length (top and bottom of the grid in Dark Radiant) no matter which way the object is conceptually facing. Just change the value of the 1 to that needed where 2 is double the length and .5 is half. Examples:&lt;br /&gt;
&lt;br /&gt;
1 0 0 0 1 0 0 0 2 = the object is double the height. Nothing else is changed.&lt;br /&gt;
&lt;br /&gt;
2 0 0 0 2 0 0 0 2 = the object is double the size in all directions.&lt;br /&gt;
&lt;br /&gt;
.2 0 0 0 .2 0 0 0 .2 = the object is only one fifth scale in all planes.&lt;br /&gt;
&lt;br /&gt;
== Rotating Rescaled Models ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t pretend to understand the rotation values I only report some observations:&lt;br /&gt;
&lt;br /&gt;
* Rescaling ALL lengths equally then rotating should be problem-free.&lt;br /&gt;
* Rotating 180 degrees should be problem-free no matter what lengths are rescaled or how.&lt;br /&gt;
* Rescaling a length not in the plane of rotation should be problem-free, so a table of lowered height that is turned sideways against another wall should be fine. Tip it over though and there is likely to be distortion of the shape.&lt;br /&gt;
* Rescaling and rotating (other than 180 degrees) in the same plane is likely to produce shape distortion. It might be slight if the rotation and/or the rescaling are small but it will be there.&lt;br /&gt;
* It should be possible to calculate &#039;&#039;any&#039;&#039; scale with any rotation but it is just not obvious so anyone who can provide a means then please post it here!&lt;br /&gt;
&lt;br /&gt;
== Collision Model ==&lt;br /&gt;
&lt;br /&gt;
The collision model is not created for the rescaled model so this method is not suitable for moveable items. In addition, objects, AI, and the player would pass right through a static rescaled model. Not only is this (usually) unrealistic but it can sometimes be fatal to the player character. If you really need some kind of phantom object then also add the property noclipmodel 1 and this seems to cure the sudden death problem.&lt;br /&gt;
&lt;br /&gt;
But in most cases where you &#039;&#039;do&#039;&#039; need solidity, put your own unrendered brush(es) inside the model&#039;s volume using the texture : common &amp;gt; nodrawsolid to make the model seem solid. Consider not bothering for some items such as inaccessible objects out of reach of all activity.&lt;br /&gt;
&lt;br /&gt;
Do not be too easily tempted to think that small items like a book on a table do not need any &#039;solidity&#039;. True, if the player climbs on the table then the book&#039;s lack of solidity might not be noticed but try placing another object such as a candlestick holder on top of the book and it will sink through it to the table top.&lt;br /&gt;
&lt;br /&gt;
== Problems ==&lt;br /&gt;
&lt;br /&gt;
=== Texture Problems ===&lt;br /&gt;
&lt;br /&gt;
When a model is rescaled then its texture is rescaled with it so take care to examine the texture is not ridiculously stretched. An outline of a large, inacessible, gargoyle, hidden in shadows, is not so critical as a table of three times its normal length! Probably reducing the size of models is generally &#039;safer&#039; but be aware in all rescaling of the problem and examine the results!&lt;br /&gt;
&lt;br /&gt;
=== Shadow Problems ===&lt;br /&gt;
&lt;br /&gt;
You may get a problem with a wrong shadow - more likely if the model is reduced. In particular test moving around near the rescaled model using the player light. I saw rectangles of shadow surrounding objects with the player light even when the room light shadow looked reasonable.&lt;br /&gt;
&lt;br /&gt;
If there is a problem then add the property noshadows to the object with a value of 1 and then you will get no shadow at all. If that looks odd consider a concealed brush behind the object to cast a shadow.&lt;br /&gt;
&lt;br /&gt;
=== Possible Fix ===&lt;br /&gt;
&lt;br /&gt;
RPGista proposed the following: you can give a model the &amp;quot;inline&amp;quot; &amp;quot;1&amp;quot; spawnarg and recompile the map, it will appearently turn a model into world brush triangles. It can have certain side effects (changing the smoothing groups, for example), but might be worth a shot.&lt;br /&gt;
&lt;br /&gt;
{{darkradiant}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Moveables&amp;diff=15805</id>
		<title>Moveables</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Moveables&amp;diff=15805"/>
		<updated>2012-12-12T09:33:48Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Create a Collision Model (CM) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Original_Reference|SneaksieDave &amp;amp; Ishtvan|3968}}&lt;br /&gt;
&lt;br /&gt;
Physics fans rejoice! If you want an object (whether a model or multi-brush/patch) to be moveable (pick up and carry, push, float, shoot, etc.), even though it wasn&#039;t designed to be used that way, there is a way to do it anyway, and all within the editor.&lt;br /&gt;
&lt;br /&gt;
==Models==&lt;br /&gt;
&lt;br /&gt;
You should read the article about [[Models]] first to get some understanding of the topic. &lt;br /&gt;
&lt;br /&gt;
In summary you need to create the model, make it moveable, and make sure a collision model exists for it.&lt;br /&gt;
&lt;br /&gt;
=== Create a Moveable ===&lt;br /&gt;
&lt;br /&gt;
# Create a brush, convert it to a moveable_base entity, and assign it the model you want to use.&lt;br /&gt;
# You only need one collision model file no matter how many instances of this moveable you make in your map so check if it has already been created (a .cm file of the same name as the model and in the same folder.) If not:&lt;br /&gt;
&lt;br /&gt;
=== Create a [[Collision Models|Collision Model]] (CM) ===&lt;br /&gt;
&lt;br /&gt;
In DarkRadiant:&lt;br /&gt;
# &#039;&#039;&#039;Important&#039;&#039;&#039;: Make sure the model is not rotated in any way.&lt;br /&gt;
# Drag a new temporary brush over the model, roughly covering it.&lt;br /&gt;
# Clip the shape if necessary, or convert it eg, to pyramid or whatever to best fit the model.&lt;br /&gt;
# Any texture will do on any surface.&lt;br /&gt;
# Convert to func_static (any entity will do)&lt;br /&gt;
# Check the origin of the brush entity is in the same place as the model&#039;s origin because that is where its origin will be in-game. If they do not coincide then either move the brush so it coincides and resize the brush or key V and drag the origin into position.&lt;br /&gt;
# Use the {{menu|File|Save selection as collision model}} menu entry:&lt;br /&gt;
# The model selector dialog appears, Select the correct model. Click {{ok}}.&lt;br /&gt;
# A .cm should have now been saved in the same folder as the model and with the same name as the model. (I&#039;ve done these before but recently in 1.08 it failed so I used the script menu to export as .ase and that worked! Note - in this case you must give it the common - collision texture.)&lt;br /&gt;
# You can now delete the temporary collision model brush entity.&lt;br /&gt;
&lt;br /&gt;
Important: The shape must be very simple, not having more than say 16 faces! (I now think this is a max of 12. - Fidcal)&lt;br /&gt;
&lt;br /&gt;
In DoomEd:&lt;br /&gt;
&lt;br /&gt;
# Drag a new temporary brush over the model, roughly covering it. This will be the collision hull, so get it as close as you can.&lt;br /&gt;
# Clip the shape if necessary, or convert it eg, to pyramid or whatever to best fit the model.&lt;br /&gt;
# Convert that brush to &#039;&#039;&#039;func_clipmodel&#039;&#039;&#039;.&lt;br /&gt;
# Check the origin of the brush entity is in the same place as the model&#039;s origin because that is where its origin will be in-game.&lt;br /&gt;
# Texture it with &#039;&#039;&#039;common/collision&#039;&#039;&#039;.&lt;br /&gt;
# With that brush still selected, do &#039;&#039;&#039;Selected-&amp;gt;Export-&amp;gt;To CM&#039;&#039;&#039;. Locate the model for which it will stand as a clipmodel, and save with the same name. The path and name are vital. Don&#039;t worry, DoomEd will automatically name it .cm instead by of your model&#039;s extension, so it shouldn&#039;t overwrite anything.&lt;br /&gt;
# You can now delete the temporary collision model brush entity.&lt;br /&gt;
&lt;br /&gt;
==Brush/Patch Moveables==&lt;br /&gt;
&lt;br /&gt;
You can make virtually any brush/patch construction into a moveable. At its core must be a simple brush to form the collision shape. I&#039;ve had a brush with 12 surfaces as a moveable OK. I don&#039;t know if there is a limit but it&#039;s my belief that it won&#039;t work if too complicated a shape. However, we can get round that and produce very complex moveables such as a stepladder with multiple steps and ladder surface. We do that by binding the construction to a single central collision shape brush which is the actual moveable entity.&lt;br /&gt;
&lt;br /&gt;
===Simple brush moveables===&lt;br /&gt;
&lt;br /&gt;
First let&#039;s take the simplest of brush moveables: a stone block. It is not uncommon in FMs to have a hole in a wall filled with stone blocks or rubble the player can move or push out of the way. So first make your brush stone block from the same texture as your wall so it will match perfectly (if desired.) If it is a broken block (rubble) then you can cut pieces off the basic rectangular block but I would get it all working first and save it then gradually cut piecess off and save the early versions. You might find if you have too many surfaces it might not work. (I am still unsure about this.) I have not tried with patches but it should work. In any event you can certainly bind a patch to an unrendered block to get what you want.&lt;br /&gt;
&lt;br /&gt;
* Make the brush an atdm:moveable_base entity. Later a proper entity inheriting from atdm:moveable_base might be made up with the following spawnargs to save time. (I couldn&#039;t get this to work with the custom entities which have to use a model.)&lt;br /&gt;
* Give it mass (in kilos)&lt;br /&gt;
* No need to give it density as this is now calculated from its volume and mass.&lt;br /&gt;
* Give it friction (0 to 1) I usually aim low about 0.1 else it can be &#039;sticky&#039;&lt;br /&gt;
* Give it snd_bounce as the sound it will make on impact. Example: med_metal_impact. I suggest you look at what some already existing moveable of a similar size and material is using.&lt;br /&gt;
* Give it an alert size and hardness. This determines how AI will react to its sound. If you don&#039;t then it will default to medium size and hard so if your object is about that then you need do nothing. Otherwise, give it these two spawnargs/values. These are the possibles:&lt;br /&gt;
** spr_object_hardness - can be soft, medium, or hard&lt;br /&gt;
** spr_object_size - can be small, medium, or large&lt;br /&gt;
&lt;br /&gt;
By default, the above will highlight and can be pushed about, frobbed and picked up, carried, and manipulated by the player.&lt;br /&gt;
&lt;br /&gt;
If you want it only to be pushed but not picked up then give it frobable 0.&lt;br /&gt;
&lt;br /&gt;
If you want it to go in the inventory:&lt;br /&gt;
* Give it inv_category. This can be eg, Special, Tools, Keys. (look at currentsimilar objects)&lt;br /&gt;
* Give it inv_name with the value of whatever name you want it show in the inventory.&lt;br /&gt;
* Give it inv_icon with the value guis/assets/hud/inventory_icons/default which will show blank (otherwise you get a black square.) If you can create your own icon then even better.&lt;br /&gt;
* Give it snd_acquire with the value tool_pickup is a good default (the sound it makes when the player gets it.)&lt;br /&gt;
&lt;br /&gt;
===Remake the map cm file if console error===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT!&#039;&#039;&#039; This caused me a lot of headaches over a couple of years until I realized so memorize this even if you forget everything else. When you first make a brush moveable it might work fine but later you get a console error: &#039;cannot load collision model&#039;. You might get this if you rename the entity or import it as a prefab into another map. What you must do is DELETE the map cm file (in maps folder mymap.cm) then DMAP again. Dmap doesn&#039;t know if you changed anything so you need to force it to recreate the map collision file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===More complex brush and patch moveables===&lt;br /&gt;
&lt;br /&gt;
To make complex brush moveables like a stepladder you first create a simple brush moveable as described above and texture it with textures/common/collision. Size and shape this brush to approximate the basic size and shape of the object you are making. Try to avoid over-complexity of this shape; it only needs to determine collisions. For example, for the stepladder I made an upright right-angled triangle shape. This is the core of the stepladder; the actual moveable entity as described in the above section. You then make your more complex shape(s) into func_static(s) and bind to the collision shape to get the best fit. The collision shape is what the player picks up but it is not visible of course.&lt;br /&gt;
&lt;br /&gt;
==== Making frobable ====&lt;br /&gt;
&lt;br /&gt;
The above is OK for pushing around but if you want to be able to pick up the object it needs to be frobable. At this point only the invisible collision moveable is frobable but its highlight is invisible! To make the visible object frobable do the following:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To the invisible moveable add the property/value:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;frob_peer&#039;&#039; &amp;lt;name of visible object&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To the visible object add the properties/vaues:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;frobable&#039;&#039; 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;frob_distance&#039;&#039; 1 (do NOT use 0 or it defaults to the normal distance.) &lt;br /&gt;
&lt;br /&gt;
What the above does is allow the visible object to highlight but not directly frobable. Instead when it highlights it means you are focused on the invisible moveable which is what you want - and it highlights the visible object through the frob_peer.&lt;br /&gt;
&lt;br /&gt;
===Model/Brush hybrid===&lt;br /&gt;
&lt;br /&gt;
In the earlier sections on making a moveable model is described how to make an external model cm file. In some situations you might instead bind a static model to a brush moveable as described above. In some cases you might make the brush moveable visible or some surfaces visible. An example makes it easier to understand: I took a model chest body. Made a rectangular brush moveable to completely fill it. I textured it with textures/common/collision but the top surface I gave it the texture that the chest used. When aligned carefully it complete sealed the top so it looks like a new luggable crate. Then bind the chest model to the brush moveable. To make it frobable see above [[#Making frobable]]&lt;br /&gt;
&lt;br /&gt;
== Complete List of Default Key/Values for Moveable entities==&lt;br /&gt;
 &amp;quot;Moveable object. Will drop to the floor and rest until activated.&amp;quot;&lt;br /&gt;
 &amp;quot;The visual model set with the &#039;model&#039; key can also be used for&amp;quot;&lt;br /&gt;
 &amp;quot;collision detection. However the model may not be too complex.&amp;quot;&lt;br /&gt;
 &amp;quot;max vertices = 32&amp;quot;&lt;br /&gt;
 &amp;quot;max edges = 32&amp;quot;&lt;br /&gt;
 &amp;quot;max polygons = 16&amp;quot;&lt;br /&gt;
 &amp;quot;&amp;quot;max edges per polygon = 16&amp;quot;&lt;br /&gt;
 &amp;quot;The collision model must be an enclosed hull. Dangling polygons or&amp;quot;&lt;br /&gt;
 &amp;quot;edges are not allowed. If the visual model is too complex or does&amp;quot;&lt;br /&gt;
 &amp;quot;not meet these requirements it can be contained in a less complex&amp;quot;&lt;br /&gt;
 &amp;quot;model for collision detection. Such a collision model is specified with the&amp;quot;&lt;br /&gt;
 &amp;quot;&#039;clipmodel&#039; key.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var density&amp;quot;          &amp;quot;Volume of the object times the density is the mass.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var friction&amp;quot;         &amp;quot;Friction with contacting surfaces in the range [0-1] where 0 is no friction.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var bouncyness&amp;quot;       &amp;quot;How much the object bounces in the range [0-1] where 0 is no bounce.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var mass&amp;quot;             &amp;quot;Mass of the object (overrides density).&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_model clipmodel&amp;quot;      &amp;quot;Model to be used for collision detection.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var clipshrink&amp;quot;       &amp;quot;Shrink the visual model with an epsilon and use it as a clip model.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var allowStep&amp;quot;        &amp;quot;Set to 0 to prevent monsters from ever walking over this object.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var nonsolid&amp;quot;         &amp;quot;Make the object non-solid.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_bool nodrop&amp;quot;          &amp;quot;Do not drop to the floor.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_bool noimpact&amp;quot;        &amp;quot;Do not activate by the impact of other objects.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_bool notpushable&amp;quot;     &amp;quot;Do not allow to be pushed.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_bool unbindondeath&amp;quot;   &amp;quot;Unbind entity when health drops down to or below zero.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var health&amp;quot;           &amp;quot;If set the visual model changes to &#039;broken&#039; when the health drops down to or below zero.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_model broken&amp;quot;         &amp;quot;Visual model to be used when the health drops down to or below zero.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_bool explode&amp;quot;         &amp;quot;If set to 1 the moveable explodes and is removed when the health drops down to or below zero.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var init_velocity&amp;quot;    &amp;quot;Initial linear velocity set when activated.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var init_avelocity&amp;quot;   &amp;quot;Initial angular velocity set when activated.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var init_velocityDelay&amp;quot;   &amp;quot;Delay in seconds before the initial linear velocity is set after being activated.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var init_avelocityDelay&amp;quot;  &amp;quot;Delay in seconds before the initial angular velocity is set after being activated.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var initialSplineTime&amp;quot;    &amp;quot;Number of milliseconds the moveable should follow the initial spline path.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var damage&amp;quot;               &amp;quot;Damage definition if it damages things it collides with&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var damageWhenActive&amp;quot;     &amp;quot;Only damage when active ( currently for the vagary and influence stuff )&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var fx_collide&amp;quot;           &amp;quot;FX system to start at impact position when object collides.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Default Settings ==&lt;br /&gt;
 &amp;quot;density&amp;quot;           &amp;quot;0.5&amp;quot;&lt;br /&gt;
 &amp;quot;friction&amp;quot;          &amp;quot;0.05&amp;quot;&lt;br /&gt;
 &amp;quot;bouncyness&amp;quot;        &amp;quot;0.6&amp;quot;&lt;br /&gt;
 &amp;quot;explode&amp;quot;           &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;unbindondeath&amp;quot;     &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;health&amp;quot;            &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;nodrop&amp;quot;            &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;noimpact&amp;quot;          &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;notPushable&amp;quot;       &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;clipshrink&amp;quot;        &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;allowStep&amp;quot;         &amp;quot;1&amp;quot;&lt;br /&gt;
 &amp;quot;snd_bounce&amp;quot;        &amp;quot;smallpanel_impact &amp;quot;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Pushing]] of moveables.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Moveables&amp;diff=15804</id>
		<title>Moveables</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Moveables&amp;diff=15804"/>
		<updated>2012-12-12T09:26:46Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Create a Collision Model (CM) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Original_Reference|SneaksieDave &amp;amp; Ishtvan|3968}}&lt;br /&gt;
&lt;br /&gt;
Physics fans rejoice! If you want an object (whether a model or multi-brush/patch) to be moveable (pick up and carry, push, float, shoot, etc.), even though it wasn&#039;t designed to be used that way, there is a way to do it anyway, and all within the editor.&lt;br /&gt;
&lt;br /&gt;
==Models==&lt;br /&gt;
&lt;br /&gt;
You should read the article about [[Models]] first to get some understanding of the topic. &lt;br /&gt;
&lt;br /&gt;
In summary you need to create the model, make it moveable, and make sure a collision model exists for it.&lt;br /&gt;
&lt;br /&gt;
=== Create a Moveable ===&lt;br /&gt;
&lt;br /&gt;
# Create a brush, convert it to a moveable_base entity, and assign it the model you want to use.&lt;br /&gt;
# You only need one collision model file no matter how many instances of this moveable you make in your map so check if it has already been created (a .cm file of the same name as the model and in the same folder.) If not:&lt;br /&gt;
&lt;br /&gt;
=== Create a [[Collision Models|Collision Model]] (CM) ===&lt;br /&gt;
&lt;br /&gt;
In DarkRadiant:&lt;br /&gt;
# &#039;&#039;&#039;Important&#039;&#039;&#039;: Make sure the model is not rotated in any way.&lt;br /&gt;
# Drag a new temporary brush over the model, roughly covering it.&lt;br /&gt;
# Clip the shape if necessary, or convert it eg, to pyramid or whatever to best fit the model.&lt;br /&gt;
# Any texture will do on any surface.&lt;br /&gt;
# Convert to func_static (any entity will do)&lt;br /&gt;
# Check the origin of the brush entity is in the same place as the model&#039;s origin because that is where its origin will be in-game. If they do not coincide then either move the brush so it coincides and resize the brush or key V and drag the origin into position.&lt;br /&gt;
# Use the {{menu|File|Save selection as collision model}} menu entry:&lt;br /&gt;
# The model selector dialog appears, Select the correct model. Click {{ok}}.&lt;br /&gt;
# A .cm should have now been saved in the same folder as the model and with the same name as the model. (I&#039;ve done these before but recently in 1.08 it failed so I used the script menu to export as .ase and that worked!)&lt;br /&gt;
# You can now delete the temporary collision model brush entity.&lt;br /&gt;
&lt;br /&gt;
Important: The shape must be very simple, not having more than say 16 faces! (I now think this is a max of 12. - Fidcal)&lt;br /&gt;
&lt;br /&gt;
In DoomEd:&lt;br /&gt;
&lt;br /&gt;
# Drag a new temporary brush over the model, roughly covering it. This will be the collision hull, so get it as close as you can.&lt;br /&gt;
# Clip the shape if necessary, or convert it eg, to pyramid or whatever to best fit the model.&lt;br /&gt;
# Convert that brush to &#039;&#039;&#039;func_clipmodel&#039;&#039;&#039;.&lt;br /&gt;
# Check the origin of the brush entity is in the same place as the model&#039;s origin because that is where its origin will be in-game.&lt;br /&gt;
# Texture it with &#039;&#039;&#039;common/collision&#039;&#039;&#039;.&lt;br /&gt;
# With that brush still selected, do &#039;&#039;&#039;Selected-&amp;gt;Export-&amp;gt;To CM&#039;&#039;&#039;. Locate the model for which it will stand as a clipmodel, and save with the same name. The path and name are vital. Don&#039;t worry, DoomEd will automatically name it .cm instead by of your model&#039;s extension, so it shouldn&#039;t overwrite anything.&lt;br /&gt;
# You can now delete the temporary collision model brush entity.&lt;br /&gt;
&lt;br /&gt;
==Brush/Patch Moveables==&lt;br /&gt;
&lt;br /&gt;
You can make virtually any brush/patch construction into a moveable. At its core must be a simple brush to form the collision shape. I&#039;ve had a brush with 12 surfaces as a moveable OK. I don&#039;t know if there is a limit but it&#039;s my belief that it won&#039;t work if too complicated a shape. However, we can get round that and produce very complex moveables such as a stepladder with multiple steps and ladder surface. We do that by binding the construction to a single central collision shape brush which is the actual moveable entity.&lt;br /&gt;
&lt;br /&gt;
===Simple brush moveables===&lt;br /&gt;
&lt;br /&gt;
First let&#039;s take the simplest of brush moveables: a stone block. It is not uncommon in FMs to have a hole in a wall filled with stone blocks or rubble the player can move or push out of the way. So first make your brush stone block from the same texture as your wall so it will match perfectly (if desired.) If it is a broken block (rubble) then you can cut pieces off the basic rectangular block but I would get it all working first and save it then gradually cut piecess off and save the early versions. You might find if you have too many surfaces it might not work. (I am still unsure about this.) I have not tried with patches but it should work. In any event you can certainly bind a patch to an unrendered block to get what you want.&lt;br /&gt;
&lt;br /&gt;
* Make the brush an atdm:moveable_base entity. Later a proper entity inheriting from atdm:moveable_base might be made up with the following spawnargs to save time. (I couldn&#039;t get this to work with the custom entities which have to use a model.)&lt;br /&gt;
* Give it mass (in kilos)&lt;br /&gt;
* No need to give it density as this is now calculated from its volume and mass.&lt;br /&gt;
* Give it friction (0 to 1) I usually aim low about 0.1 else it can be &#039;sticky&#039;&lt;br /&gt;
* Give it snd_bounce as the sound it will make on impact. Example: med_metal_impact. I suggest you look at what some already existing moveable of a similar size and material is using.&lt;br /&gt;
* Give it an alert size and hardness. This determines how AI will react to its sound. If you don&#039;t then it will default to medium size and hard so if your object is about that then you need do nothing. Otherwise, give it these two spawnargs/values. These are the possibles:&lt;br /&gt;
** spr_object_hardness - can be soft, medium, or hard&lt;br /&gt;
** spr_object_size - can be small, medium, or large&lt;br /&gt;
&lt;br /&gt;
By default, the above will highlight and can be pushed about, frobbed and picked up, carried, and manipulated by the player.&lt;br /&gt;
&lt;br /&gt;
If you want it only to be pushed but not picked up then give it frobable 0.&lt;br /&gt;
&lt;br /&gt;
If you want it to go in the inventory:&lt;br /&gt;
* Give it inv_category. This can be eg, Special, Tools, Keys. (look at currentsimilar objects)&lt;br /&gt;
* Give it inv_name with the value of whatever name you want it show in the inventory.&lt;br /&gt;
* Give it inv_icon with the value guis/assets/hud/inventory_icons/default which will show blank (otherwise you get a black square.) If you can create your own icon then even better.&lt;br /&gt;
* Give it snd_acquire with the value tool_pickup is a good default (the sound it makes when the player gets it.)&lt;br /&gt;
&lt;br /&gt;
===Remake the map cm file if console error===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT!&#039;&#039;&#039; This caused me a lot of headaches over a couple of years until I realized so memorize this even if you forget everything else. When you first make a brush moveable it might work fine but later you get a console error: &#039;cannot load collision model&#039;. You might get this if you rename the entity or import it as a prefab into another map. What you must do is DELETE the map cm file (in maps folder mymap.cm) then DMAP again. Dmap doesn&#039;t know if you changed anything so you need to force it to recreate the map collision file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===More complex brush and patch moveables===&lt;br /&gt;
&lt;br /&gt;
To make complex brush moveables like a stepladder you first create a simple brush moveable as described above and texture it with textures/common/collision. Size and shape this brush to approximate the basic size and shape of the object you are making. Try to avoid over-complexity of this shape; it only needs to determine collisions. For example, for the stepladder I made an upright right-angled triangle shape. This is the core of the stepladder; the actual moveable entity as described in the above section. You then make your more complex shape(s) into func_static(s) and bind to the collision shape to get the best fit. The collision shape is what the player picks up but it is not visible of course.&lt;br /&gt;
&lt;br /&gt;
==== Making frobable ====&lt;br /&gt;
&lt;br /&gt;
The above is OK for pushing around but if you want to be able to pick up the object it needs to be frobable. At this point only the invisible collision moveable is frobable but its highlight is invisible! To make the visible object frobable do the following:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To the invisible moveable add the property/value:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;frob_peer&#039;&#039; &amp;lt;name of visible object&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To the visible object add the properties/vaues:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;frobable&#039;&#039; 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;frob_distance&#039;&#039; 1 (do NOT use 0 or it defaults to the normal distance.) &lt;br /&gt;
&lt;br /&gt;
What the above does is allow the visible object to highlight but not directly frobable. Instead when it highlights it means you are focused on the invisible moveable which is what you want - and it highlights the visible object through the frob_peer.&lt;br /&gt;
&lt;br /&gt;
===Model/Brush hybrid===&lt;br /&gt;
&lt;br /&gt;
In the earlier sections on making a moveable model is described how to make an external model cm file. In some situations you might instead bind a static model to a brush moveable as described above. In some cases you might make the brush moveable visible or some surfaces visible. An example makes it easier to understand: I took a model chest body. Made a rectangular brush moveable to completely fill it. I textured it with textures/common/collision but the top surface I gave it the texture that the chest used. When aligned carefully it complete sealed the top so it looks like a new luggable crate. Then bind the chest model to the brush moveable. To make it frobable see above [[#Making frobable]]&lt;br /&gt;
&lt;br /&gt;
== Complete List of Default Key/Values for Moveable entities==&lt;br /&gt;
 &amp;quot;Moveable object. Will drop to the floor and rest until activated.&amp;quot;&lt;br /&gt;
 &amp;quot;The visual model set with the &#039;model&#039; key can also be used for&amp;quot;&lt;br /&gt;
 &amp;quot;collision detection. However the model may not be too complex.&amp;quot;&lt;br /&gt;
 &amp;quot;max vertices = 32&amp;quot;&lt;br /&gt;
 &amp;quot;max edges = 32&amp;quot;&lt;br /&gt;
 &amp;quot;max polygons = 16&amp;quot;&lt;br /&gt;
 &amp;quot;&amp;quot;max edges per polygon = 16&amp;quot;&lt;br /&gt;
 &amp;quot;The collision model must be an enclosed hull. Dangling polygons or&amp;quot;&lt;br /&gt;
 &amp;quot;edges are not allowed. If the visual model is too complex or does&amp;quot;&lt;br /&gt;
 &amp;quot;not meet these requirements it can be contained in a less complex&amp;quot;&lt;br /&gt;
 &amp;quot;model for collision detection. Such a collision model is specified with the&amp;quot;&lt;br /&gt;
 &amp;quot;&#039;clipmodel&#039; key.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var density&amp;quot;          &amp;quot;Volume of the object times the density is the mass.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var friction&amp;quot;         &amp;quot;Friction with contacting surfaces in the range [0-1] where 0 is no friction.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var bouncyness&amp;quot;       &amp;quot;How much the object bounces in the range [0-1] where 0 is no bounce.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var mass&amp;quot;             &amp;quot;Mass of the object (overrides density).&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_model clipmodel&amp;quot;      &amp;quot;Model to be used for collision detection.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var clipshrink&amp;quot;       &amp;quot;Shrink the visual model with an epsilon and use it as a clip model.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var allowStep&amp;quot;        &amp;quot;Set to 0 to prevent monsters from ever walking over this object.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var nonsolid&amp;quot;         &amp;quot;Make the object non-solid.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_bool nodrop&amp;quot;          &amp;quot;Do not drop to the floor.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_bool noimpact&amp;quot;        &amp;quot;Do not activate by the impact of other objects.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_bool notpushable&amp;quot;     &amp;quot;Do not allow to be pushed.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_bool unbindondeath&amp;quot;   &amp;quot;Unbind entity when health drops down to or below zero.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var health&amp;quot;           &amp;quot;If set the visual model changes to &#039;broken&#039; when the health drops down to or below zero.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_model broken&amp;quot;         &amp;quot;Visual model to be used when the health drops down to or below zero.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_bool explode&amp;quot;         &amp;quot;If set to 1 the moveable explodes and is removed when the health drops down to or below zero.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var init_velocity&amp;quot;    &amp;quot;Initial linear velocity set when activated.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var init_avelocity&amp;quot;   &amp;quot;Initial angular velocity set when activated.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var init_velocityDelay&amp;quot;   &amp;quot;Delay in seconds before the initial linear velocity is set after being activated.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var init_avelocityDelay&amp;quot;  &amp;quot;Delay in seconds before the initial angular velocity is set after being activated.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var initialSplineTime&amp;quot;    &amp;quot;Number of milliseconds the moveable should follow the initial spline path.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var damage&amp;quot;               &amp;quot;Damage definition if it damages things it collides with&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var damageWhenActive&amp;quot;     &amp;quot;Only damage when active ( currently for the vagary and influence stuff )&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var fx_collide&amp;quot;           &amp;quot;FX system to start at impact position when object collides.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Default Settings ==&lt;br /&gt;
 &amp;quot;density&amp;quot;           &amp;quot;0.5&amp;quot;&lt;br /&gt;
 &amp;quot;friction&amp;quot;          &amp;quot;0.05&amp;quot;&lt;br /&gt;
 &amp;quot;bouncyness&amp;quot;        &amp;quot;0.6&amp;quot;&lt;br /&gt;
 &amp;quot;explode&amp;quot;           &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;unbindondeath&amp;quot;     &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;health&amp;quot;            &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;nodrop&amp;quot;            &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;noimpact&amp;quot;          &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;notPushable&amp;quot;       &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;clipshrink&amp;quot;        &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;allowStep&amp;quot;         &amp;quot;1&amp;quot;&lt;br /&gt;
 &amp;quot;snd_bounce&amp;quot;        &amp;quot;smallpanel_impact &amp;quot;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Pushing]] of moveables.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Moveables&amp;diff=15803</id>
		<title>Moveables</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Moveables&amp;diff=15803"/>
		<updated>2012-12-12T09:25:15Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Create a Collision Model (CM) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Original_Reference|SneaksieDave &amp;amp; Ishtvan|3968}}&lt;br /&gt;
&lt;br /&gt;
Physics fans rejoice! If you want an object (whether a model or multi-brush/patch) to be moveable (pick up and carry, push, float, shoot, etc.), even though it wasn&#039;t designed to be used that way, there is a way to do it anyway, and all within the editor.&lt;br /&gt;
&lt;br /&gt;
==Models==&lt;br /&gt;
&lt;br /&gt;
You should read the article about [[Models]] first to get some understanding of the topic. &lt;br /&gt;
&lt;br /&gt;
In summary you need to create the model, make it moveable, and make sure a collision model exists for it.&lt;br /&gt;
&lt;br /&gt;
=== Create a Moveable ===&lt;br /&gt;
&lt;br /&gt;
# Create a brush, convert it to a moveable_base entity, and assign it the model you want to use.&lt;br /&gt;
# You only need one collision model file no matter how many instances of this moveable you make in your map so check if it has already been created (a .cm file of the same name as the model and in the same folder.) If not:&lt;br /&gt;
&lt;br /&gt;
=== Create a [[Collision Models|Collision Model]] (CM) ===&lt;br /&gt;
&lt;br /&gt;
In DarkRadiant:&lt;br /&gt;
# &#039;&#039;&#039;Important&#039;&#039;&#039;: Make sure the model is not rotated in any way.&lt;br /&gt;
# Drag a new temporary brush over the model, roughly covering it.&lt;br /&gt;
# Clip the shape if necessary, or convert it eg, to pyramid or whatever to best fit the model.&lt;br /&gt;
# Any texture will do on any surface.&lt;br /&gt;
# Convert to func_static (any entity will do)&lt;br /&gt;
# Check the origin of the brush entity is in the same place as the model&#039;s origin because that is where its origin will be in-game. If they do not coincide then either move the brush so it coincides and resize the brush or key V and drag the origin into position.&lt;br /&gt;
# Use the {{menu|File|Save selection as collision model}} menu entry:&lt;br /&gt;
# The model selector dialog appears, Select the correct model. Click {{ok}}.&lt;br /&gt;
# A .cm should have now been saved in the same folder as the model and with the same name as the model.&lt;br /&gt;
# You can now delete the temporary collision model brush entity.&lt;br /&gt;
&lt;br /&gt;
Important: The shape must be very simple, not having more than say 16 faces! (I now think this is a max of 12. - Fidcal)&lt;br /&gt;
&lt;br /&gt;
In DoomEd:&lt;br /&gt;
&lt;br /&gt;
# Drag a new temporary brush over the model, roughly covering it. This will be the collision hull, so get it as close as you can.&lt;br /&gt;
# Clip the shape if necessary, or convert it eg, to pyramid or whatever to best fit the model.&lt;br /&gt;
# Convert that brush to &#039;&#039;&#039;func_clipmodel&#039;&#039;&#039;.&lt;br /&gt;
# Check the origin of the brush entity is in the same place as the model&#039;s origin because that is where its origin will be in-game.&lt;br /&gt;
# Texture it with &#039;&#039;&#039;common/collision&#039;&#039;&#039;.&lt;br /&gt;
# With that brush still selected, do &#039;&#039;&#039;Selected-&amp;gt;Export-&amp;gt;To CM&#039;&#039;&#039;. Locate the model for which it will stand as a clipmodel, and save with the same name. The path and name are vital. Don&#039;t worry, DoomEd will automatically name it .cm instead by of your model&#039;s extension, so it shouldn&#039;t overwrite anything.&lt;br /&gt;
# You can now delete the temporary collision model brush entity.&lt;br /&gt;
&lt;br /&gt;
==Brush/Patch Moveables==&lt;br /&gt;
&lt;br /&gt;
You can make virtually any brush/patch construction into a moveable. At its core must be a simple brush to form the collision shape. I&#039;ve had a brush with 12 surfaces as a moveable OK. I don&#039;t know if there is a limit but it&#039;s my belief that it won&#039;t work if too complicated a shape. However, we can get round that and produce very complex moveables such as a stepladder with multiple steps and ladder surface. We do that by binding the construction to a single central collision shape brush which is the actual moveable entity.&lt;br /&gt;
&lt;br /&gt;
===Simple brush moveables===&lt;br /&gt;
&lt;br /&gt;
First let&#039;s take the simplest of brush moveables: a stone block. It is not uncommon in FMs to have a hole in a wall filled with stone blocks or rubble the player can move or push out of the way. So first make your brush stone block from the same texture as your wall so it will match perfectly (if desired.) If it is a broken block (rubble) then you can cut pieces off the basic rectangular block but I would get it all working first and save it then gradually cut piecess off and save the early versions. You might find if you have too many surfaces it might not work. (I am still unsure about this.) I have not tried with patches but it should work. In any event you can certainly bind a patch to an unrendered block to get what you want.&lt;br /&gt;
&lt;br /&gt;
* Make the brush an atdm:moveable_base entity. Later a proper entity inheriting from atdm:moveable_base might be made up with the following spawnargs to save time. (I couldn&#039;t get this to work with the custom entities which have to use a model.)&lt;br /&gt;
* Give it mass (in kilos)&lt;br /&gt;
* No need to give it density as this is now calculated from its volume and mass.&lt;br /&gt;
* Give it friction (0 to 1) I usually aim low about 0.1 else it can be &#039;sticky&#039;&lt;br /&gt;
* Give it snd_bounce as the sound it will make on impact. Example: med_metal_impact. I suggest you look at what some already existing moveable of a similar size and material is using.&lt;br /&gt;
* Give it an alert size and hardness. This determines how AI will react to its sound. If you don&#039;t then it will default to medium size and hard so if your object is about that then you need do nothing. Otherwise, give it these two spawnargs/values. These are the possibles:&lt;br /&gt;
** spr_object_hardness - can be soft, medium, or hard&lt;br /&gt;
** spr_object_size - can be small, medium, or large&lt;br /&gt;
&lt;br /&gt;
By default, the above will highlight and can be pushed about, frobbed and picked up, carried, and manipulated by the player.&lt;br /&gt;
&lt;br /&gt;
If you want it only to be pushed but not picked up then give it frobable 0.&lt;br /&gt;
&lt;br /&gt;
If you want it to go in the inventory:&lt;br /&gt;
* Give it inv_category. This can be eg, Special, Tools, Keys. (look at currentsimilar objects)&lt;br /&gt;
* Give it inv_name with the value of whatever name you want it show in the inventory.&lt;br /&gt;
* Give it inv_icon with the value guis/assets/hud/inventory_icons/default which will show blank (otherwise you get a black square.) If you can create your own icon then even better.&lt;br /&gt;
* Give it snd_acquire with the value tool_pickup is a good default (the sound it makes when the player gets it.)&lt;br /&gt;
&lt;br /&gt;
===Remake the map cm file if console error===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT!&#039;&#039;&#039; This caused me a lot of headaches over a couple of years until I realized so memorize this even if you forget everything else. When you first make a brush moveable it might work fine but later you get a console error: &#039;cannot load collision model&#039;. You might get this if you rename the entity or import it as a prefab into another map. What you must do is DELETE the map cm file (in maps folder mymap.cm) then DMAP again. Dmap doesn&#039;t know if you changed anything so you need to force it to recreate the map collision file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===More complex brush and patch moveables===&lt;br /&gt;
&lt;br /&gt;
To make complex brush moveables like a stepladder you first create a simple brush moveable as described above and texture it with textures/common/collision. Size and shape this brush to approximate the basic size and shape of the object you are making. Try to avoid over-complexity of this shape; it only needs to determine collisions. For example, for the stepladder I made an upright right-angled triangle shape. This is the core of the stepladder; the actual moveable entity as described in the above section. You then make your more complex shape(s) into func_static(s) and bind to the collision shape to get the best fit. The collision shape is what the player picks up but it is not visible of course.&lt;br /&gt;
&lt;br /&gt;
==== Making frobable ====&lt;br /&gt;
&lt;br /&gt;
The above is OK for pushing around but if you want to be able to pick up the object it needs to be frobable. At this point only the invisible collision moveable is frobable but its highlight is invisible! To make the visible object frobable do the following:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To the invisible moveable add the property/value:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;frob_peer&#039;&#039; &amp;lt;name of visible object&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To the visible object add the properties/vaues:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;frobable&#039;&#039; 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;frob_distance&#039;&#039; 1 (do NOT use 0 or it defaults to the normal distance.) &lt;br /&gt;
&lt;br /&gt;
What the above does is allow the visible object to highlight but not directly frobable. Instead when it highlights it means you are focused on the invisible moveable which is what you want - and it highlights the visible object through the frob_peer.&lt;br /&gt;
&lt;br /&gt;
===Model/Brush hybrid===&lt;br /&gt;
&lt;br /&gt;
In the earlier sections on making a moveable model is described how to make an external model cm file. In some situations you might instead bind a static model to a brush moveable as described above. In some cases you might make the brush moveable visible or some surfaces visible. An example makes it easier to understand: I took a model chest body. Made a rectangular brush moveable to completely fill it. I textured it with textures/common/collision but the top surface I gave it the texture that the chest used. When aligned carefully it complete sealed the top so it looks like a new luggable crate. Then bind the chest model to the brush moveable. To make it frobable see above [[#Making frobable]]&lt;br /&gt;
&lt;br /&gt;
== Complete List of Default Key/Values for Moveable entities==&lt;br /&gt;
 &amp;quot;Moveable object. Will drop to the floor and rest until activated.&amp;quot;&lt;br /&gt;
 &amp;quot;The visual model set with the &#039;model&#039; key can also be used for&amp;quot;&lt;br /&gt;
 &amp;quot;collision detection. However the model may not be too complex.&amp;quot;&lt;br /&gt;
 &amp;quot;max vertices = 32&amp;quot;&lt;br /&gt;
 &amp;quot;max edges = 32&amp;quot;&lt;br /&gt;
 &amp;quot;max polygons = 16&amp;quot;&lt;br /&gt;
 &amp;quot;&amp;quot;max edges per polygon = 16&amp;quot;&lt;br /&gt;
 &amp;quot;The collision model must be an enclosed hull. Dangling polygons or&amp;quot;&lt;br /&gt;
 &amp;quot;edges are not allowed. If the visual model is too complex or does&amp;quot;&lt;br /&gt;
 &amp;quot;not meet these requirements it can be contained in a less complex&amp;quot;&lt;br /&gt;
 &amp;quot;model for collision detection. Such a collision model is specified with the&amp;quot;&lt;br /&gt;
 &amp;quot;&#039;clipmodel&#039; key.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var density&amp;quot;          &amp;quot;Volume of the object times the density is the mass.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var friction&amp;quot;         &amp;quot;Friction with contacting surfaces in the range [0-1] where 0 is no friction.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var bouncyness&amp;quot;       &amp;quot;How much the object bounces in the range [0-1] where 0 is no bounce.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var mass&amp;quot;             &amp;quot;Mass of the object (overrides density).&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_model clipmodel&amp;quot;      &amp;quot;Model to be used for collision detection.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var clipshrink&amp;quot;       &amp;quot;Shrink the visual model with an epsilon and use it as a clip model.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var allowStep&amp;quot;        &amp;quot;Set to 0 to prevent monsters from ever walking over this object.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var nonsolid&amp;quot;         &amp;quot;Make the object non-solid.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_bool nodrop&amp;quot;          &amp;quot;Do not drop to the floor.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_bool noimpact&amp;quot;        &amp;quot;Do not activate by the impact of other objects.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_bool notpushable&amp;quot;     &amp;quot;Do not allow to be pushed.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_bool unbindondeath&amp;quot;   &amp;quot;Unbind entity when health drops down to or below zero.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var health&amp;quot;           &amp;quot;If set the visual model changes to &#039;broken&#039; when the health drops down to or below zero.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_model broken&amp;quot;         &amp;quot;Visual model to be used when the health drops down to or below zero.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_bool explode&amp;quot;         &amp;quot;If set to 1 the moveable explodes and is removed when the health drops down to or below zero.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var init_velocity&amp;quot;    &amp;quot;Initial linear velocity set when activated.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var init_avelocity&amp;quot;   &amp;quot;Initial angular velocity set when activated.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var init_velocityDelay&amp;quot;   &amp;quot;Delay in seconds before the initial linear velocity is set after being activated.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var init_avelocityDelay&amp;quot;  &amp;quot;Delay in seconds before the initial angular velocity is set after being activated.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var initialSplineTime&amp;quot;    &amp;quot;Number of milliseconds the moveable should follow the initial spline path.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var damage&amp;quot;               &amp;quot;Damage definition if it damages things it collides with&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var damageWhenActive&amp;quot;     &amp;quot;Only damage when active ( currently for the vagary and influence stuff )&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var fx_collide&amp;quot;           &amp;quot;FX system to start at impact position when object collides.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Default Settings ==&lt;br /&gt;
 &amp;quot;density&amp;quot;           &amp;quot;0.5&amp;quot;&lt;br /&gt;
 &amp;quot;friction&amp;quot;          &amp;quot;0.05&amp;quot;&lt;br /&gt;
 &amp;quot;bouncyness&amp;quot;        &amp;quot;0.6&amp;quot;&lt;br /&gt;
 &amp;quot;explode&amp;quot;           &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;unbindondeath&amp;quot;     &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;health&amp;quot;            &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;nodrop&amp;quot;            &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;noimpact&amp;quot;          &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;notPushable&amp;quot;       &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;clipshrink&amp;quot;        &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;allowStep&amp;quot;         &amp;quot;1&amp;quot;&lt;br /&gt;
 &amp;quot;snd_bounce&amp;quot;        &amp;quot;smallpanel_impact &amp;quot;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Pushing]] of moveables.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Swimmable_Water&amp;diff=13425</id>
		<title>Swimmable Water</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Swimmable_Water&amp;diff=13425"/>
		<updated>2011-10-08T21:07:36Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Troubleshooting Problems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;written by angua&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Create some walls ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Watertutorial1.jpg]]&lt;br /&gt;
&lt;br /&gt;
In this example, I made this little rectangular pool, but you can also use differently shaped structures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fill in your water ==&lt;br /&gt;
&lt;br /&gt;
Draw a brush that is going to be your water volume and texture it with common/nodraw&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Watertutorial2.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Create the entity ==&lt;br /&gt;
&lt;br /&gt;
In [[DarkRadiant]]: Select your brush, {{RMB}} -&amp;gt; Create Entity -&amp;gt; &#039;&#039;&#039;atdm:liquid_water&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Watertutorial5.jpg]]&lt;br /&gt;
&lt;br /&gt;
In the Entity Inspector you can see that the classname is now &#039;&#039;&#039;atdm:liquid_water&#039;&#039;&#039;, and the name &#039;&#039;&#039;atdm:liquid_water_1&#039;&#039;&#039; (or similiar). It should also have a blue outline in the orthographic view (The XZ Front in this case).&lt;br /&gt;
&lt;br /&gt;
Note: If you use &amp;quot;func_liquid&amp;quot; instead of &amp;quot;atdm:liquid_water&amp;quot;, your water will not function correctly. It will f.i. not extinguish flames.&lt;br /&gt;
&lt;br /&gt;
== Texture the surface ==&lt;br /&gt;
&lt;br /&gt;
Select the face that is going to be the surface ({{key|CTRL}} + {{key|SHIFT}} + {{LMB}}) and texture it with a nice water texture, for example &#039;&#039;&#039;water_source/water_clear&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Watertutorial6.jpg]]&lt;br /&gt;
&lt;br /&gt;
Do not assign the water texture to the whole brush, or you will see this: (You can also get rid of that z-fighting by dragging the brush into the wall so that it insersects with it.)&lt;br /&gt;
&lt;br /&gt;
[[Image:Watertutorial4.jpg]]&lt;br /&gt;
&lt;br /&gt;
However, if you don&#039;t want clear water then you need to choose another surface, say water_green or water_colored, include an extra overlay plus an underwater overlay. For this, see the next section.&lt;br /&gt;
&lt;br /&gt;
==Coloured and Murky Water==&lt;br /&gt;
&lt;br /&gt;
This is a method for providing water that is coloured or murky underwater and a surface that matches.&lt;br /&gt;
&lt;br /&gt;
You can use this with different water surfaces but I recommend you first try:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;textures/water_source/water_colored.&#039;&#039; (this can be coloured but by default it is not so won&#039;t confuse the issue - the colour will be added by the overlay below.)&lt;br /&gt;
&lt;br /&gt;
To your water entity give the property:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;underwater_gui&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Now give the property the name of one of the overlay guis. The names are fairly descriptive so you can choose which type you want suitable for a river, a cave pool, or a sewer, etc.:&lt;br /&gt;
&lt;br /&gt;
 underwater_green_midmurk.gui&lt;br /&gt;
 underwater_green_thickmurk.gui&lt;br /&gt;
 underwater_green_thinmurk.gui&lt;br /&gt;
&lt;br /&gt;
 underwater_blue_midmurk.gui&lt;br /&gt;
 underwater_blue_thickmurk.gui&lt;br /&gt;
 underwater_blue_thinmurk.gui&lt;br /&gt;
&lt;br /&gt;
 underwater_bluegrey_midmurk.gui&lt;br /&gt;
 underwater_bluegrey_thickmurk.gui&lt;br /&gt;
 underwater_bluegrey_thinmurk.gui&lt;br /&gt;
&lt;br /&gt;
 underwater_greengrey_midmurk.gui&lt;br /&gt;
 underwater_greengrey_thickmurk.gui&lt;br /&gt;
 underwater_greengrey_thinmurk.gui&lt;br /&gt;
&lt;br /&gt;
Now with the water entity still selected:&lt;br /&gt;
&lt;br /&gt;
* Choose Top view in Dark Radiant&#039;s orthoview&lt;br /&gt;
* Create a simple patch from the patch menu.&lt;br /&gt;
* Move this up flush with the surface of the water.&lt;br /&gt;
* Give it the texture that matches the gui you chose above. For example, if you chose &#039;&#039; underwater_bluegrey_thinmurk.gui&#039;&#039; from the above then give the overlay the texture: &#039;&#039;textures/water_source/bluegrey_plain_flat_thinmurk&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Using the above method you should find the surface opacity and colour matches how it looks when the players goes underwater.&lt;br /&gt;
&lt;br /&gt;
== Underwater fog ==&lt;br /&gt;
&lt;br /&gt;
Your water looks much more believable if it has an underwater fog. Create a light, select as texture &amp;quot;fog/basicfog&amp;quot;, give it a very dark color and resize the light so it covers the entire underwater area. This will make your water darker the deeper it is, just like in real-life!&lt;br /&gt;
&lt;br /&gt;
== Test your water ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Watertutorial3.jpg]]&lt;br /&gt;
&lt;br /&gt;
And there it is!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Current Flow==&lt;br /&gt;
&lt;br /&gt;
There is at least one flowing stream surface texture at the time of writing. If you want to create your own variations then just examine that material shader, copy and modify it. Probably it can be used with other existing surface texture images or you can create new ones.&lt;br /&gt;
&lt;br /&gt;
==Flow Force==&lt;br /&gt;
&lt;br /&gt;
A force field can be placed in water to apply a tangible flow, eg, to push the player and/or other objects along.&lt;br /&gt;
&lt;br /&gt;
See [[Func Forcefields]]&lt;br /&gt;
&lt;br /&gt;
==Wave Frequency and Direction== &lt;br /&gt;
&lt;br /&gt;
You can set the frequency of the surface waves from tiny undulations to large slow ones just by changing the surface texture scale in Surface Inspector. Flowing surfaces such as stream textures can of course be rotated to get the direction you want.&lt;br /&gt;
&lt;br /&gt;
A better way to influence the wave speed and wave hight is via [[List_of_shaderParm_variables|shaderParms]]. Set the following spawnargs on your water entity:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
shaderParm5 0.05&lt;br /&gt;
shaderParm6 0.75&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
parm5 controls the wave speed, parm6 the wave height. The defaults are 0.1 and 1.5, respectively. Experiment a bit, values lower than the defaults look more believable for still waterbodies, higher values for when you have a lot of wind.&lt;br /&gt;
&lt;br /&gt;
==Sound==&lt;br /&gt;
&lt;br /&gt;
If the water level is less than 1, you get normal footsteps.&lt;br /&gt;
&lt;br /&gt;
Between 1 and 34, you get splash sounds.&lt;br /&gt;
&lt;br /&gt;
Between 34 and 77, you get wading sounds.&lt;br /&gt;
&lt;br /&gt;
If 77 or more, you get swimming sounds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting Problems==&lt;br /&gt;
&lt;br /&gt;
===Visible Joints Between Water Brushes===&lt;br /&gt;
&lt;br /&gt;
If you place brushes of water against one another, eg, along a channel, round corners, to form a canal, etc. and you can &#039;see the joins&#039; then the most likely cause of the problem is that the surface textures do not align. We are used to aligning static textures but it is not so obvious with the dynamic translucent surface of water that we might not think of it. Just copy and paste shader one of the surface textures to all the others to get the same scroll and scale alignment and it should be OK.&lt;br /&gt;
&lt;br /&gt;
NOTE: If you want to use the NoDraw Solid texture, be sure NOT to use it between water entities, otherwise you won&#039;t be able to swim between them.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-water}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Doors&amp;diff=13402</id>
		<title>Doors</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Doors&amp;diff=13402"/>
		<updated>2011-09-22T16:51:42Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* AI Door management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{todo}}&lt;br /&gt;
&#039;&#039;Written by Fidcal&#039;&#039; &#039;&#039;edit Baddcog&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Quick way to get an unlocked door in your map:&lt;br /&gt;
&lt;br /&gt;
* Insert one of the prefab doors complete with handles and select its skin property and click the button to change its skin appearance to whatever you want. Set any other properties you need.&lt;br /&gt;
&lt;br /&gt;
Alternatively,&lt;br /&gt;
&lt;br /&gt;
* Create a door from the entity list&lt;br /&gt;
* Use the &amp;quot;skin&amp;quot; spawnarg on the door to change its appearance. &lt;br /&gt;
* Create a handle from the entity list&lt;br /&gt;
* Add the &#039;&#039;door_handle&#039;&#039; property to the door and give it the name of the handle&lt;br /&gt;
* To the door handle add the value frob_peer and use the name of the door.&lt;br /&gt;
* To open clockwise, change the &#039;&#039;rotate&#039;&#039; property from &amp;lt;code&amp;gt;0 90 0&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0 -90 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This tutorial explains how to put doors into your map using Dark Radiant, as well as adjust them and their properties.&lt;br /&gt;
&lt;br /&gt;
The rest of this tutorial assumes that you have a basic understanding of using DarkRadiant. If you haven&#039;t done so, please go read the [[Dark Radiant Must Know Basic Intro]] article first.&lt;br /&gt;
&lt;br /&gt;
Additionally:&lt;br /&gt;
&lt;br /&gt;
* Up, down, left, and right in Dark Radiant&#039;s &#039;&#039;top&#039;&#039; orthoview are regarded here as the standard map directions of North, South, East, and West where useful for clarity.&lt;br /&gt;
* Where the term &#039;&#039;brush&#039;&#039; is used with a door it mostly also applies to a door made up of a group of brushes and/or patches.&lt;br /&gt;
* Where the term &#039;&#039;door&#039;&#039; is used it often will also apply to any object you wish to rotate when frobbed, for instance an openable window, box lid, or even more exotic objects that the imaginative mapper might conceive like a signal, engine part, toy, or whatever. So long as it needs to turn or slide just a fixed amount when frobbed then return when frobbed again then the following applies.&lt;br /&gt;
&lt;br /&gt;
==Door types==&lt;br /&gt;
&lt;br /&gt;
All tangible objects in Dark Mod are &#039;&#039;entities&#039;&#039;, having either a pre-made model shape or else brush/patch(es). So there are two ways to create a door in Dark Radiant: as a model door or a textured brush door (or a hybrid of the two).&lt;br /&gt;
&lt;br /&gt;
Models are ready made door objects but cannot within Dark Radiant (at the time of writing) be resized, rescaled, cropped or clipped whereas brushes are very flexible in that respect and can be worked into custom shapes for your map, including secret doors that blend into walls and other surfaces.&lt;br /&gt;
&lt;br /&gt;
Most of the current door models are found in two places along with the door handles.&lt;br /&gt;
*Model Viewer: doors created from here will be static in the world and have no props other than material type.&lt;br /&gt;
You can add any props to them to make them working doors. If nothing else it is a good place to view the different size and skin options for the doors.&lt;br /&gt;
*Entity List: most of the door models can be found here. These doors have properties already assigned so they are ready to be used. Only one base door of each type is listed, create the size/hinge count door you want (2 hinge doors have a &#039;no hinge&#039; skin). You can choose a skin for the door once it has been created in the editor with the &amp;quot;skin&amp;quot; spawnarg (use the model name of the door you want, taken from the model list, as its value). This is the easiest way to create a door. The same goes for door handles.&lt;br /&gt;
&lt;br /&gt;
Remember also that door functions may be applied to objects other than doors for instance to openable windows, drawbridges, gates, in fact anything that needs a partial rotation or slide when frobbed then return when frobbed again such as a signal device. Lockboxes and chests use similar properties.&lt;br /&gt;
&lt;br /&gt;
Door/handle prefabs seem to crash Doom3 when trying to reload a map so far now just create and link each door/handle. You can create one set and copy/paste them, but you need to take great care that all the name props are changed to match each clone. Otherwise you get handles that fly off with a distant door and handles that don&#039;t move.&lt;br /&gt;
&lt;br /&gt;
==Creating a Door==&lt;br /&gt;
&lt;br /&gt;
Put simply, to make a door you will be creating an &#039;entity with model&#039; or &#039;entity with brush&#039; or some variation thereof.&lt;br /&gt;
&lt;br /&gt;
===Creating a Model Door===&lt;br /&gt;
&lt;br /&gt;
There are several approaches to making a model door; the simplest is to create a door from the entity list; or create a door from the model viewer (good for static unusable prop doors).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Entity List&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
*Deselect everything in editor by hitting the Esc button&lt;br /&gt;
*Right-click an ortho view and select Create Entity&lt;br /&gt;
*Navigate to darkmod/movers/&#039;&#039;atdm:door_...&#039;&#039;, choose the door you want&lt;br /&gt;
*Click Add&lt;br /&gt;
*To change its appearance, add a &amp;quot;skin&amp;quot; spawnarg to the door, with the value being the model name of the door you want.&lt;br /&gt;
&lt;br /&gt;
You now have a workable door in your level.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Model Viewer&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Right click in the orthoview, select &#039;&#039;Create Model&#039;&#039; then &amp;lt;code&amp;gt;darkmod&amp;lt;/code&amp;gt; and select a door.&lt;br /&gt;
* Note that you can left drag the image in the &#039;&#039;Choose Model&#039;&#039; dialog to rotate it around.&lt;br /&gt;
* Click [[Image:Button ok.png]] and you have a static door.&lt;br /&gt;
* If you want to make it work (openable, frobbable) then:&lt;br /&gt;
** Select the entity inspector,&lt;br /&gt;
** Select the top classname line so it highlights&lt;br /&gt;
** Select the func_static line in the input box &#039;&#039;below&#039;&#039; the properties window.&lt;br /&gt;
** Edit &amp;lt;code&amp;gt;func_static&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt;&lt;br /&gt;
** Click {{check}} or press {{key-enter}}&lt;br /&gt;
&lt;br /&gt;
Alternatively you can do it the old way:&lt;br /&gt;
&lt;br /&gt;
* Create any temporary brush&lt;br /&gt;
* Right click in orthoview and select &amp;lt;code&amp;gt;Create Entity&amp;lt;/code&amp;gt; then &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Left lick the model name line in the entity inspector.&lt;br /&gt;
* Below it on the &#039;&#039;Entity Inspector&#039;&#039; panel you should now see a button &#039;Choose Model&#039;&lt;br /&gt;
* Left click it, select a door model from the darkmod group.&lt;br /&gt;
* Note that you can left drag the image in the &#039;&#039;Choose Model&#039;&#039; dialog to rotate it around.&lt;br /&gt;
* The temporary brush was deleted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In all three instances, you now have a working door with default properties. &lt;br /&gt;
&lt;br /&gt;
Name your door by adding the prop (or modifing it) to name &#039;&#039;My_Door_1&#039;&#039;. You can use any name that you feel is appropriate but all doors with handles attached &#039;&#039;must&#039;&#039; have their own specific name. Use the name My_Door_1 for your first attempt as it will be referenced when you get around to attaching handles (see below).&lt;br /&gt;
&lt;br /&gt;
To add a handle and other adjustments, see [[#Customising and Adjusting Door Properties]] below.&lt;br /&gt;
&lt;br /&gt;
===Creating a Textured Brush Door===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tip:&#039;&#039;&#039; If unsure of size then you might insert a temporary human AI first to get a sense of height.&lt;br /&gt;
&lt;br /&gt;
==== The simplest brush door: ====&lt;br /&gt;
&lt;br /&gt;
* Drag out a new brush to the size required, eg, a seven foot high door is 84&amp;quot; x 1.1 = about 90 units in Dark Radiant.&lt;br /&gt;
* Give it a door texture from the texture browser (or wall texture for a secret door)&lt;br /&gt;
* Right click in orthoview and select &#039;&#039;Create Entity&#039;&#039; then &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt;&lt;br /&gt;
* You now have a default door that rotates around its center.&lt;br /&gt;
&lt;br /&gt;
To move the rotation point to the door edge and other adjustments, see [[#Customising and Adjusting Door Properties]] below.&lt;br /&gt;
&lt;br /&gt;
==== Multi-brush doors: ====&lt;br /&gt;
&lt;br /&gt;
More complex multi-brush doors can be created using the [[Clipper]] tool, CSG, etc. - this is not covered in this tutorial. Then assign &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; for that whole brush structure. Also you can collect various brushes positioned together in relation to one another as needed, select them all, then assign &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; for the group. All the brushes will be children of the &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; entity and will rotate and be frobbable, etc. as one unit, as one door. To add further brushes or even model shapes later see the section on [[#Adding handles and other items to doors]].&lt;br /&gt;
&lt;br /&gt;
Name your door by adding the prop (or modifing it) to name My_Door_1. You can use any name that you feel is appropriate but all doors with handles attached must have their own specific name. Use the name My_Door_1 for your first attempt as it will be referenced when you get around to attaching handles (see below). (repeated from above in case you didn&#039;t choose to create a model door)&lt;br /&gt;
&lt;br /&gt;
=== Double Doors ===&lt;br /&gt;
Double doors are automatically recognised by the code when the doors are spawned. The prerequisite is that both doors are sharing/touching the same visportal. The spawnarg &#039;&#039;auto_setup_double_door&#039;&#039; (which defaults to &amp;quot;1&amp;quot;) will take care of setting up the open/lock peer relationship between the two doors. The doors will open/close and lock/unlock along with each other as a result.&lt;br /&gt;
&lt;br /&gt;
What happens behind the scenes: the doors are adding each other to their internal open_peer and lock_peer list, which causes the double doors to perform the same action when frobbed or used.&lt;br /&gt;
&lt;br /&gt;
Note that &#039;&#039;auto_setup_double_door&#039;&#039; will not set the frob_peer relationship, i.e. each door will frob-highlight on its own without highlighting the other door. You&#039;ll need to add that spawnarg manually if you want to highlight the entire double door as one.&lt;br /&gt;
&lt;br /&gt;
==Customising and Adjusting Door Properties==&lt;br /&gt;
&lt;br /&gt;
Handles, lockplates, etc. can be added to doors and door properties can be adjusted for rotation, sliding, locking, and more.&lt;br /&gt;
&lt;br /&gt;
Some of the door models have hinge plates and lockboxes that are reskinnable with a good variety of skins.&lt;br /&gt;
&lt;br /&gt;
===Door handles and other door attachments===&lt;br /&gt;
&lt;br /&gt;
 Summary: just add the property &#039;&#039;bind&#039;&#039; with the door&#039;s name to the attachment and position it where you want it on the door. If it&#039;s a &#039;&#039;atdm:mover_door_handle&#039;&#039; then it automatically will work as a handle but you can bind virtually anything.&lt;br /&gt;
You can add handles and other items to doors such that they move correctly with the door whether rotating, sliding, or both and even if the door is not vertical such as a skylight or trapdoor.&lt;br /&gt;
Handle models come in two types, &#039;&#039;single handles&#039;&#039; and &#039;&#039;double handles&#039;&#039;. A single handle is one sided, this means the handle will be inside the door or outside the door, but not both. A double handle has a lever on the inside of the door and a handle on the outside of the door. Each has benefits.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Single door handles&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
Single door handles can be used on a static door, a door that&#039;s just for show that no AI&#039;s or the player can use. In this case you should just create a door handle from the model viewer, it will be static and have no properties such as scripts. It is for looks only.&lt;br /&gt;
&lt;br /&gt;
Single handles can also be used inside AND outside of the same door to save on rendering. Unlike the double handles the handle on the inside of a portal won&#039;t render. The curved handle is only about 130 polys per side, but if you have a large area and 10 handles you can save 1,000 polys from being rendered. Everything counts when it comes to performance.&lt;br /&gt;
I will call this &#039;&#039;multiple handles&#039;&#039;, see more below.&lt;br /&gt;
&lt;br /&gt;
These can also be useful on brush doors created in the editor that may be very thin or very wide.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Double door handles&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
These are models have have a handle inside and outside. The bonus is that they only use one entity. Maps are limited to about 4,000 entities but when you count lights, AI, sound speakers, ect... you can run out of entities quickly on a large map. If you plan on building a large map this is the way to go, even in a small map they have benefits, namely that you only have to attach one handle per door.&lt;br /&gt;
&lt;br /&gt;
Whether you decide to use a single handle or a double handle you must first follow the instructions below and attach one handle first. If you choose a double handle, follow the instructions below and you are done. If you choose a single handle type follow the instructions then also follow the &#039;&#039;multiple handle&#039;&#039; instructions for the second handle.&lt;br /&gt;
&lt;br /&gt;
Both single and double handle types can be found in two places. The model viewer which will create a static model good for show, you can manually add props to make them work OR you can look in the entity browser.&lt;br /&gt;
Using a handle from the entity browser saves you a little bit of time as some props are already added, you just need to add the frob_peer names for the doors/handles and the door_handle name to the door.&lt;br /&gt;
&lt;br /&gt;
=== Adding a working model door handle===&lt;br /&gt;
&lt;br /&gt;
Quick summary:&lt;br /&gt;
* Create a model or brush handle and make it an &#039;&#039;atdm:mover_door_handle&#039;&#039; entity.&lt;br /&gt;
* Position it on your door.  Use the opposite side from the door&#039;s multicolor X-Y-Z indicator (highlight the door to see it) if it&#039;s not obvious which side it goes on.  &lt;br /&gt;
* &#039;&#039;&#039;Bind&#039;&#039;&#039; the handle to the door (bind &amp;lt;doorname&amp;gt;)&lt;br /&gt;
* It should now be a working handle though may need adjustments of rotation etc. see later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Important: read preceding section on door handle types and performance issues first.&lt;br /&gt;
&lt;br /&gt;
This works with both a model door and a brush door:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rotation&#039;&#039;&#039;:&lt;br /&gt;
* By default the door handle entity rotates &#039;&#039;anti-clockwise&#039;&#039; (looked at from the front) then springs back. A &#039;&#039;double handle&#039;&#039; model is OK but two singles (see &#039;&#039;Multiple door handles&#039;&#039; below) need more care as only one is the functioning entity and the other is just attached to it. So anti-clockwise is fine for a door with its hinge on the left and the handle on the right - the handle will rotate down then spring back. If you put the functioning door handle on the other side you will have to change the default &#039;&#039;rotate&#039;&#039; property from -45 0 0 to 45 0 0. &#039;&#039;&#039;&#039;&#039;Therefore it is easier to generally put this handle on the side of the door where the hinge is on the left and the non-functioning attachment handle on the other side.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*If your door only needs one handle, eg, a cupboard door, and from outside its hinge is on the right then you will need to change the &#039;&#039;rotate&#039;&#039; property of the handle as described above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;The functioning handle entity:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* Create an entity door handle (movers folder) or create a brush or model handle and assign it the entity &#039;&#039;atdm:mover_door_handle&#039;&#039;.&lt;br /&gt;
* Position it where you wish on your door.&lt;br /&gt;
* &#039;&#039;&#039;Bind&#039;&#039;&#039; the handle to the door, by adding the &amp;quot;bind&amp;quot; spawnarg to the handle.&lt;br /&gt;
&lt;br /&gt;
You now have a working door handle with default properties.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Multiple door handles&#039;&#039;&#039;:&lt;br /&gt;
Now that you&#039;ve got a handle attached to one side of the door it is time to add one to the other side (unless you used a double handle).&lt;br /&gt;
* Create the new handle. The single handles come in left and right persuasions. A door needs a left facing handle on one side and a right facing handle on the other, so if you have already added the left handle create a right handle and line it up on the other side of the door.&lt;br /&gt;
* Name this handle. I prefer to keep a naming convention for each door and it&#039;s respective handles, it makes things alot easier. The door is named &#039;&#039;&#039;My_Door_1&#039;&#039;&#039;, the first handle is named &#039;&#039;&#039;My_Handle_1&#039;&#039;&#039; so name the second handle &#039;&#039;&#039;My_Handle_1_1&#039;&#039;&#039;. This will make it stay with the first handle in the entity list. This is important to keep organized. If you name it My_Handle_2 then when you get to another door named My_Door_2 you&#039;ll be confused.&lt;br /&gt;
* Place and &#039;&#039;&#039;bind&#039;&#039;&#039; that handle to your door.&lt;br /&gt;
&lt;br /&gt;
You now have two single door handles on either side of the door that rotate together as if they were physically attached.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To add a brush to a brush door&#039;&#039;&#039;:&lt;br /&gt;
* Select the new brush &#039;&#039;and&#039;&#039; the brush door all together; &#039;&#039;the entity &#039;&#039;&#039;must&#039;&#039;&#039; be selected &#039;&#039;&#039;last&#039;&#039;&#039;.&#039;&#039;&lt;br /&gt;
* Use {{menu|Edit|Reparent primitives}}. This ensures the parent entity adopts the new item(s).&lt;br /&gt;
* If you have trouble selecting them in the orthoview because other brushes, etc. get selected then try in the camera view or as a last resort move them temporarily to an open area (but keep them in the same positions relative to each other.) Use {{key-shift}}+{{LMB}} on new item(s) then {{key-shift}}+{{LMB}} on main entity. Once they are all selected, use the {{menu|Edit|Reparent primitives}}.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To add &#039;&#039;model&#039;&#039; static items&#039;&#039;&#039;: knockers, hinges, static handles etc. to a &#039;&#039;Model Door&#039;&#039;:&lt;br /&gt;
* Select item&lt;br /&gt;
* Right click in orthoview and select &#039;&#039;Create Entity&#039;&#039; then &amp;lt;code&amp;gt;entity func_static&amp;lt;/code&amp;gt;&lt;br /&gt;
* Position it where you wish on your door.&lt;br /&gt;
* To synchronize this with your particular door you need to add the property &#039;&#039;bind&#039;&#039; and the individual door name to the brush entity. To do this...&lt;br /&gt;
** Select the model door.&lt;br /&gt;
** In the entity inspector, select the &#039;&#039;name&#039;&#039; line&lt;br /&gt;
** Select the bottom line in the input box &#039;&#039;below&#039;&#039; the properties window.&lt;br /&gt;
** Copy the name&lt;br /&gt;
** Deselect the door with {{key-esc}}&lt;br /&gt;
** Select the brush entity&lt;br /&gt;
** Add a property &amp;quot;bind&amp;quot; to it.&lt;br /&gt;
** Change the value of the property by pasting in the door name&lt;br /&gt;
** Click {{check}} or press {{key-enter}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To add &#039;&#039;brush&#039;&#039; static items&#039;&#039;&#039;: knockers, hinges, static handles to a Model Door:&lt;br /&gt;
* This method is not ideal but it seems to work OK.&lt;br /&gt;
* Select the brush.&lt;br /&gt;
* Right click in orthoview and select Create Entity then &#039;&#039;atdm:mover_door_handle&#039;&#039;&lt;br /&gt;
* Position it where you wish on your door.&lt;br /&gt;
&lt;br /&gt;
To synchronize this with your particular door you need to add the property &#039;&#039;door_handle&#039;&#039; on the door, and give as the value the name of the brush you just created.&lt;br /&gt;
&lt;br /&gt;
This brush turns like a handle. To stop it:&lt;br /&gt;
&lt;br /&gt;
* Adding &#039;&#039;rotate 0 0 0&#039;&#039; or disabling the handle script won&#039;t help.&lt;br /&gt;
* Add a real working handle (as in the section above &#039;&#039;To add a working model door handle...&#039;&#039; and it must be added LAST.)&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want too see a real working handle added maybe try another tiny brush with the handle function and hide it inside the door?&lt;br /&gt;
&lt;br /&gt;
===Locking Doors===&lt;br /&gt;
&lt;br /&gt;
To lock a door check the &#039;&#039;show inherited properties&#039;&#039; in the entity inspector for a &#039;&#039;atdm:mover_door&#039;&#039; entity and you should see the &#039;&#039;locked&#039;&#039; property. Select it and in the input box below the properties you can change its value:&lt;br /&gt;
&lt;br /&gt;
* 0 = unlocked (default)&lt;br /&gt;
* 1 = locked&lt;br /&gt;
&lt;br /&gt;
If locked it will require an entity that is associated with it to be able to act as a key to unlock it.&lt;br /&gt;
&lt;br /&gt;
Currently door handles on locked doors will rotate when frobbed, they will bounce back though and the door will stay locked until unlocked.&lt;br /&gt;
&lt;br /&gt;
===Keys===&lt;br /&gt;
&lt;br /&gt;
Assigning specific keys to specific doors is simple.&lt;br /&gt;
&lt;br /&gt;
* It is recommended that you create an existing key entity. These keys have all required props, they just need to be named.&lt;br /&gt;
&lt;br /&gt;
Alternatively you can create a key from the Model Viewer and want it to be useable&lt;br /&gt;
* Make sure it has the properties:&lt;br /&gt;
 useable 1 [so it can be used by the door]&lt;br /&gt;
 frobable 1&lt;br /&gt;
 inv_name &amp;lt;unique name&amp;gt;&lt;br /&gt;
 inv_category Keys&lt;br /&gt;
 inv_target player1&lt;br /&gt;
 inv_icon guis/assets/hud/inventory_icons/&amp;lt;icon name&amp;gt;&lt;br /&gt;
 inv_stackable 0 or 1 where 1 can be used on all copies of the same key so they show as one entry in the inventory with a total.&lt;br /&gt;
&lt;br /&gt;
Add to the door the property &amp;lt;code&amp;gt;used_by&amp;lt;/code&amp;gt; with the name of the key as the value. Multiple keys can open the same door by using several &amp;lt;tt&amp;gt;used_by&amp;lt;/tt&amp;gt; spawnargs:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;used_by&amp;quot;  &amp;quot;doorkey_1&amp;quot;&lt;br /&gt;
 &amp;quot;used_by1&amp;quot; &amp;quot;doorkey_2&lt;br /&gt;
&lt;br /&gt;
==== Keys carried by AI ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So you have a door and you have a guard Ai and you want the guard to be able to open/close/lock the door but you also want the player to be able to pickpocket the key. For more info on attaching key, props etc - see [[Attaching Props to AI]].&lt;br /&gt;
&lt;br /&gt;
*&amp;quot;def_attach6&amp;quot; &amp;quot;atdm:prop_silverkey&amp;quot; //the entity to spawn - in this case a key.&lt;br /&gt;
*&amp;quot;pos_attach6&amp;quot; &amp;quot;belt_back_right&amp;quot; //where the key will spawn on the Ai.&lt;br /&gt;
*&amp;quot;name_attach6&amp;quot; &amp;quot;door_key&amp;quot; //this gives &#039;attach6&#039; arg the name &amp;quot;door_key&amp;quot; and is the name the arg &amp;quot;used_by&amp;quot; will need, eg: &amp;quot;used_by&amp;quot; &amp;quot;door_key&amp;quot;&lt;br /&gt;
*&amp;quot;set inv_name on door_key&amp;quot; &amp;quot;Door key&amp;quot; //The name the key get when the play adds it to their inventory.&lt;br /&gt;
*&amp;quot;set name on door_key&amp;quot; &amp;quot;door_key&amp;quot; //here it gets a name to be used in the map in general.&lt;br /&gt;
&lt;br /&gt;
updated by bikerdude.&lt;br /&gt;
&lt;br /&gt;
====Master Key for Testing====&lt;br /&gt;
&lt;br /&gt;
By default, ALL locks can be opened by any key named &#039;&#039;key_master&#039;&#039;. Just create a key in your map, name it &#039;&#039;key_master&#039;&#039; and it becomes a master key for use while testing. Add inv_map_start 1 to it so it is in the player inventory at game start. Remember to delete it when your mission is finished.&lt;br /&gt;
&lt;br /&gt;
===Lockpicks===&lt;br /&gt;
&#039;&#039;by Baddcog&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are two lock pick types.&lt;br /&gt;
*&#039;&#039;&#039;s&#039;&#039;&#039;=snake&lt;br /&gt;
*&#039;&#039;&#039;t&#039;&#039;&#039;=triangular&lt;br /&gt;
&lt;br /&gt;
A lock can be set with many pins. Each pin has a click sequence and each needs a designated lockpick type (see above). Keep in mind that the lockpicking in The Darkmod is much more involved than in T2 or T3. The player has to listen to sounds or watch a handle or lockbar to know when a lock is pin is picked.&lt;br /&gt;
&lt;br /&gt;
This means that authors can be very evil and really frustrate the player, in which case their missions will probably not be played. So be nice to the player and don&#039;t waste your time. Use simple locks for the most part and save complicated locks for important sections and to build tension. Don&#039;t make the player have 20 pins to pick all with different lockpicks. In most cases 1 or 2 pins will suffice and it isn&#039;t necessary to use both lockpicks on every lock.&lt;br /&gt;
Also try to include a lock lever on lockboxes or chests, door handles will rotate as the pins are being picked. This gives the player visual clues to help with the picking (and essential in noisy environments where you can&#039;t hear the clicks.)&lt;br /&gt;
IMO this system is a huge leap foward for lockpicking but also has the ability to completely frustrate the player as stated above. Keep this in mind when designing your lockpick systems.&lt;br /&gt;
&lt;br /&gt;
These props go on the door itself, or the lid of a chest, eg,&lt;br /&gt;
*&#039;&#039;&#039;lock_pins&#039;&#039;&#039; 1327&lt;br /&gt;
*&#039;&#039;&#039;lock_picktype&#039;&#039;&#039; stts&lt;br /&gt;
&lt;br /&gt;
The lock_pins property specifies how many pins each lockpicktype has.&lt;br /&gt;
The lockpick_type property specifies how many times the player has to switch picks and which pick they have to use. You can see there must always be an equal number of lock_pins and lock_picktypes specified&lt;br /&gt;
&lt;br /&gt;
So looking at the example above we have lockpick_type s(snake), t(triangular), t(triangular), and s(snake). The player will have to use these lockpicks in this order. Once the snake lockpick&#039;s pins are open the player can advance to the triangular pick and so forth.&lt;br /&gt;
5 is added to every click sequence so 5 is the minimum click pattern even if you set it to 0.&lt;br /&gt;
In the example above the lockpins specify in order which pick types have how many pins, so the s pick has 1 + 5 = 6 clicks, the t pick has 8 and so on.&lt;br /&gt;
The above is a difficult lock and to avoid annoying the player it is best only used rarely on a special lock like an important big vault door. Ordinary footlockers and common doors can be just 1 or 2 click sequences, eg, lock_pins 2 and lock_picktype t means the player uses one pick and listens for the end of one sequence of 7 clicks.&lt;br /&gt;
&lt;br /&gt;
lockpick_rotate - is placed on the door. It is the amount the visible rotating handle or pin rotates while picking. For a rotating handle or lockbar normally ignore this and leave the default. During lockpicking it oscillates and progresses to the normal full turn of the handle. Example 0 45 0.&lt;br /&gt;
&lt;br /&gt;
lockpick_translate - is placed on the door. It is the amount the visible handle or pin moves in a straight line while picking. Use this if you have eg, a lockbar that you want to move in a straight line and not rotate, eg sliding catch. Example 0 -5 0&lt;br /&gt;
&lt;br /&gt;
By default, doors are pickable. If you don&#039;t set up the above lockpick spawnargs then it can&#039;t be picked. So there is normally no need to enable lockpicking - just set up the above spawnargs. There is a &#039;&#039;pickable&#039;&#039; spawnarg set to 1 by default. If set to 0 then the door becomes unpickable. But hard to think of an application except in testing or perhaps a special custom situation where it is switched by script perhaps.&lt;br /&gt;
&lt;br /&gt;
===Open, Partially Open, or Closed Door at Game Start===&lt;br /&gt;
&lt;br /&gt;
By default, doors are closed at game start. If you want a door to be already open or partially open then do the following.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note well: Create all doors in their &#039;&#039;closed&#039;&#039; position. Adjust as follows and they will automatically be at the open position when game starts.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Already Open Rotating Door:&lt;br /&gt;
* Select the door.&lt;br /&gt;
* Select the entity inspector&lt;br /&gt;
* Check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Select the &#039;&#039;open&#039;&#039; property&lt;br /&gt;
* Edit the value to 1 in the input box below and tick the check button&lt;br /&gt;
* The door will now be fully open at game start.&lt;br /&gt;
&lt;br /&gt;
* If you want it only partly open:&lt;br /&gt;
* Make sure its &#039;&#039;open&#039;&#039; property is set to 1 as above.&lt;br /&gt;
* Right click the entity inspector and select &#039;&#039;add property&#039;&#039; &lt;br /&gt;
* Click the + sign on the left of the top line where atdm:mover_door is listed to open the folder. (if atdm:mover_door is not listed then the entity was likely changed from eg, func_static. If so, save the map and reload to update the add property list)&lt;br /&gt;
*  scroll down, select &#039;&#039;start_rotate&#039;&#039; then click {{ok}}&lt;br /&gt;
* This adds it to the property list.&lt;br /&gt;
* Now select &#039;&#039;start_rotate&#039;&#039; in the property list.&lt;br /&gt;
* Edit the bottom line of the input box &#039;&#039;below&#039;&#039; the properties window to the angle you want in the same form as described in the &#039;&#039;Rotate Direction and Open Angle&#039;&#039; section. So for example, to have a door that has a fully open default &#039;&#039;rotate&#039;&#039; value of 0 90 0 to start only half open you would give it a &#039;&#039;start_rotate&#039;&#039; value of 0 45 0. &lt;br /&gt;
* In a similar way add the property &#039;&#039;first_frob_open&amp;quot;.&lt;br /&gt;
* Set it to 1 and a partly open door should then open fully on the first frob.&lt;br /&gt;
* Set it to 0 and a partly open door should close on the first frob.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Already Open Sliding Door:&lt;br /&gt;
* Select the door.&lt;br /&gt;
* Select the entity inspector&lt;br /&gt;
* Check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Select the &#039;&#039;open&#039;&#039; property&lt;br /&gt;
* Edit the value to 1 in the input box below and click {{check}} or press {{key-enter}}&lt;br /&gt;
* The door will now be fully open at game start.&lt;br /&gt;
&lt;br /&gt;
* If you want it only partly open:&lt;br /&gt;
* Right click the entity inspector and select &#039;&#039;add property&#039;&#039; &lt;br /&gt;
* Make sure its &#039;&#039;open&#039;&#039; property is set to 1&lt;br /&gt;
* Click the + sign on the left of the top line where atdm:mover_door is listed to open the folder.&lt;br /&gt;
*  scroll down, select &#039;&#039;start_position&#039;&#039; then click OK. (if atdm:mover_door is not listed then the entity was likely changed from eg, func_static. If so, save the map and reload to update the add property list)&lt;br /&gt;
* This adds it to the property list.&lt;br /&gt;
* Now select &#039;&#039;start_position&#039;&#039; in the property list.&lt;br /&gt;
* Edit the bottom line of the input box &#039;&#039;below&#039;&#039; the properties window to the position you want in the same form as described in the &#039;&#039;Sliding (Translation) Amount and Direction&#039;&#039; section. So for example, to have a door that has a fully open default &#039;&#039;translate&#039;&#039; value of 0 50 0 to start only half open you would give it a &#039;&#039;start_position&#039;&#039; value of 0 25 0.&lt;br /&gt;
* In a similar way add the property &#039;&#039;first_frob_open&amp;quot;.&lt;br /&gt;
* Set it to 1 and a partly open door should then open fully on the first frob.&lt;br /&gt;
* Set it to 0 and a partly open door should close on the first frob.&lt;br /&gt;
&lt;br /&gt;
===Rotation Centre, Pivot, Hinge point===&lt;br /&gt;
&lt;br /&gt;
The centre of rotation of a door is at the origin point of its entity and the door rotates with reference to the orientation of that origin point, not the world map. See &#039;&#039;Rotate Direction...&#039;&#039; for more about that. This section only deals with the &#039;&#039;position&#039;&#039; of the rotation centre in the door.&lt;br /&gt;
&lt;br /&gt;
Model Door Centre of Rotation:&amp;lt;br&amp;gt;&lt;br /&gt;
The centre of rotation of a model door cannot be changed within Dark Radiant. Because a model door rotates around the centre &#039;spine&#039; of its back edge this will cause clipping (penetration into solid) as in this example (where the door is set to open to 89 degrees for clarity):&amp;lt;BR&amp;gt;[[Image:modelClipping.jpg]]&amp;lt;BR&amp;gt; So care is needed with placement. You will not normally position a door right next to a wall as in the example but against a shallow frame so clipping will barely be noticeable but either way it can be fixed. You can correct it by adding a translation (see &#039;&#039;Sliding (Translation) Directions&#039;&#039;) value of half the door width in the direction of the door handle. This will gently move the door out as it rotates to clear any solid on that side as in this diagram:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:DoorClip.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Half a door width will typically be about 2. Any &#039;attachments&#039; such as door handles will still synchronize with the door movement whether the door is rotating, sliding, or both.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Brush Door Centre of Rotation:&amp;lt;br&amp;gt;&lt;br /&gt;
The centre of rotation of a brush door &#039;&#039;can&#039;&#039; be changed. The default origin point of a brush is at its centre. Therefore a default rotating brush door will rotate around its centre when you first create it. So, mappers will commonly need to move that rotation point to a corner or even to some other offset position for example, for an openable window using the door function.&lt;br /&gt;
&lt;br /&gt;
Put simply, to move the rotation point of a brush door you need to move the entity origin relative to the brush(es.)&lt;br /&gt;
&lt;br /&gt;
Moving the entity origin (centre of rotation) relative to a brush door:&lt;br /&gt;
&lt;br /&gt;
* Select the brush door&lt;br /&gt;
* Select &#039;&#039;Vertices mode&#039;&#039; (default shortcut key is {{key|name=V}} or button on top toolbar &#039;Select Vertices&#039;)&lt;br /&gt;
* Drag the door&#039;s entity origin to the point where you want the door to rotate. This should be on the corner on the leading edge side (the side to where the door is opening.) to avoid clipping as in this diagram....&lt;br /&gt;
[[Image:getCorner.jpg]]&lt;br /&gt;
* You should now find that door rotates around that point.&lt;br /&gt;
&lt;br /&gt;
===Rotate Direction and Open Angle===&lt;br /&gt;
&lt;br /&gt;
By default, rotating doors open anti-clockwise (viewed from above) by 90 degrees from the start orientation. If you want to change this edit the &#039;&#039;rotate&#039;&#039; property in the entity inspector. Don&#039;t confuse this &#039;&#039;rotate&#039;&#039; property with the &#039;&#039;rotation&#039;&#039; property. In the entity inspector remember that to see the inherited rotate property you must check the box &#039;Show inherited properties&#039;.&lt;br /&gt;
&lt;br /&gt;
The three values shown in the rotate property are degrees from the closed position around Y Z X (absolute map axes Front, Top, Side views in DR&#039;s ortho view.)&lt;br /&gt;
&lt;br /&gt;
* Positive Y = Open clockwise (Dark Radiant grid front view, looking north)&lt;br /&gt;
* Negative Y = Open anti-clockwise (Dark Radiant grid front view, looking north)&lt;br /&gt;
&lt;br /&gt;
* Positive Z = Open anti-clockwise (Dark Radiant grid top view, looking down)&lt;br /&gt;
* Negative Z = Open clockwise (Dark Radiant grid top view, looking down)&lt;br /&gt;
&lt;br /&gt;
* Positive X = Open anti-clockwise (Dark Radiant grid side view, looking west)&lt;br /&gt;
* Negative X = Open clockwise (Dark Radiant grid side view, looking west)&lt;br /&gt;
&lt;br /&gt;
There is a problem when you come to rotations that are not around the main Y Z X axes of the map, for instance a drawbridge that lowers down to the south east. You might think you can combine Y Z X values to get the result you want - and this can be done (for south east use 45 45 90) but it is a bit of a kludge and the drawbridge twists eccentrically as it lowers (though it arrives correctly!)&lt;br /&gt;
&lt;br /&gt;
The values are in the range -179 to +180. Positive values give an anti-clockwise opening rotation (looking down from above) and negative values give a clockwise opening rotation. The value 180 is unique in that it continues in an anti-clockwise rotation when closing rather than returning clockwise so might be used if you can think of some object that might need such a motion when frobbed!&lt;br /&gt;
&lt;br /&gt;
Edit the rotate value by selecting it and using the input box at the bottom and clicking the check(tick) button. That will change the angle the door will open to. Note that the line with the original default of 0 90 0 will still be there but your new entry will be added on a separate line and that is the one that will work in the game. CAUTION: when adjusting later make sure you have your new line selected and not the original! If you do it will appear to change but your first setting will remain unaltered.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
* 0 90 0 = Opens anti-clockwise round the entity&#039;s &#039;vertical&#039; to 90 degrees - typical default vertical door.&lt;br /&gt;
* 0 0 90 = Lowers a drawbridge from the entity &#039;vertical&#039; to horizontal.&lt;br /&gt;
* 0 0 -45 = Opens clockwise by 45 degrees viewed from the east side. This might suit a skylight in a sloping roof.&lt;br /&gt;
&lt;br /&gt;
&#039;rotate&#039; cannot be combined with translate motions (see [[#Sliding (Translation) Amount and Direction]]) in one door; you need to bind one door to another and link they by targetting one to the other. By that means you can produce exotic and useful motions. A door opening against an upward-sloping floor can thus have a &#039;&#039;lifting hinge&#039;&#039; and raise up slightly to clear the floor; a door can rotate towards you and slide back to one side very effectively.&lt;br /&gt;
&lt;br /&gt;
===Sliding (Translation) Amount and Direction===&lt;br /&gt;
&lt;br /&gt;
By default a Dark Mod door will rotate open. For most sliding doors you want to stop them rotating as well as make them slide. You cannot delete (remove) the &#039;&#039;rotate&#039;&#039; property - you have to set the &#039;&#039;rotate&#039;&#039; property to 0 0 0 to stop a door rotating (see &#039;&#039;Rotate Direction and Open Angle&#039;&#039;.)&lt;br /&gt;
&lt;br /&gt;
Now edit the &#039;&#039;translate&#039;&#039; property value by selecting it (remember to have inherited properties box checked) and using the input box at the bottom and clicking the check(tick) button. That will change the distance the door will slide to. Note that the line with the original default of 0 0 0 will still be there but your new entry will be added on a separate line and that is the one that will work in the game. CAUTION: when adjusting later make sure you have your new line selected and not the original! If you do it will appear to change but your first setting will remain unaltered.&lt;br /&gt;
&lt;br /&gt;
Typically (but not always) you will want your sliding door to slide the width of the door. The three values in the translate property by default are 0 0 0 and are X Y Z &#039;&#039;absolute map&#039;&#039; values (irrespective of door orientation) where:&lt;br /&gt;
&lt;br /&gt;
* Positive X = Slide East (Right side of Dark Radiant grid in top view)&lt;br /&gt;
* Negative X = Slide West (Left side of Dark Radiant grid in top view)&lt;br /&gt;
* Positive Y = Slide North (top of Dark Radiant grid in top view)&lt;br /&gt;
* Negative Y = Slide South (bottom of Dark Radiant grid in top view)&lt;br /&gt;
* Positive Z = Slide Up (Top of Dark Radiant grid in side views)&lt;br /&gt;
* Negative Z = Slide Down (Bottom of Dark Radiant grid in side views)&lt;br /&gt;
&lt;br /&gt;
So for a 50 unit wide door you want to slide fully to the east you would use 50 0 0 for the translate property values. A 100 unit portcullis sliding vertically up would need 0 0 100 to be fully raised.&lt;br /&gt;
&lt;br /&gt;
=== Doors Collision/Push Behaviour ===&lt;br /&gt;
Doors are pushing all entities by default, except for the player. Doors will also stop moving when anything blocks their movement. However, this default behaviour can be changed by setting the according spawnargs:&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;push_player&#039;&#039;&#039; to &#039;&#039;&#039;1&#039;&#039;&#039; to let the player be pushed by this door:&lt;br /&gt;
 &amp;quot;push_player&amp;quot;  &amp;quot;1&amp;quot;  // Push the player too (default is off)&lt;br /&gt;
&lt;br /&gt;
By default &#039;&#039;&#039;stop_when_blocked&#039;&#039;&#039; is set to 1 and if a door is blocked by an entity then even if the entity is removed afterwards, the door stays still. The next frob will close the door.&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;stop_when_blocked&#039;&#039;&#039; to &#039;&#039;&#039;0&#039;&#039;&#039; to prevent the door from ending the opening sequence when anything blocks its way. It will still pause - but continue to open if the block is removed.&lt;br /&gt;
 &amp;quot;stop_when_blocked&amp;quot;   &amp;quot;0&amp;quot;  // door keeps moving after being blocked (default is off)&lt;br /&gt;
With this setting, doors will still stop at blocking entities (the player, for instance), but will continue to move when the entity clears the way.&lt;br /&gt;
&lt;br /&gt;
There is another spawnarg which stops a door pushing a moveable. Apply this to the &#039;&#039;moveable&#039;&#039; not the door...&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;notPushable&amp;quot;   &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Door Sounds===&lt;br /&gt;
&lt;br /&gt;
The sound of doors opening and closing is set in the snd_open and snd_close properties. You can silence them by setting the following properties as shown:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_open nosound&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;snd_close nosound&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t just use a dash - as it seems to cause a sound of its own.&lt;br /&gt;
&lt;br /&gt;
The above sounds are triggered as the door begins to open (eg, unlatch sound) and when it finally closed (eg, slam.) For special doors that need an on-going sound, eg, a big stone slab that moves slowly, then use:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_move&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_locked&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The sound played when a player tries to open a locked door.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_unlock string&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The sound played when a player unlocks a door.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sound Propagation through Doors and Doorways===&lt;br /&gt;
&lt;br /&gt;
The sound volume reduction to the player (ie, the sound the player hears) is fixed and constant in a cvar which adds a distance factor to the original sound. It is recommended that you do not change that because it will affect other FMs. Currently there is no way to change the way that sound to the player is reduced through doors and doorways.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sound propagation to AI, eg, impact sounds or guard yells is treated separately:&lt;br /&gt;
&lt;br /&gt;
Sound propagation to AI relies on visportals. For details study [[Sound Propagation: Part 1]] and [[Sound Propagation: Part 2]] as well as [[Visportals]] This tutorial will just cover the relevant sound and sound propagation &#039;&#039;properties&#039;&#039; of doors. If you set the &#039;&#039;show inherited properties&#039;&#039; box in the entity inspector you can see them as described here.&lt;br /&gt;
&lt;br /&gt;
Remember, the following have no effect on what the player hears through a door or doorway.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;loss_open&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Drop in sound volume in dB propagated to AI (not player) when going through an open door. (default 1dB)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;loss_closed&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Drop in sound volume in dB propagated to AI (not player) when going through a closed door. (default 15dB) You would want to set this very high to block all sound with a thick door but very low for a barred gate for example.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;loss_double_open&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Drop in sound volume in dB propagated to AI (not player) when going through double doors when only one is open. (default 1dB)&lt;br /&gt;
&lt;br /&gt;
There are also various sound properties for lockpicking:&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;snd_lockpick_pin_1 through 14&#039;&#039; and &#039;&#039;snd_lockpick_pin_success&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Speed of Door Opening and Closing===&lt;br /&gt;
&lt;br /&gt;
Rotating Door Speed:&amp;lt;br&amp;gt;&lt;br /&gt;
At the time of writing, the time a rotating door takes to open or close is set in the &#039;&#039;move_time&#039;&#039; property whatever its maximum open angle. So with rotation set at say 150 degrees the door just opens faster than at say 80 degrees. This is likely to be changed to a constant angular velocity so check to see if there a new property added if the following no longer works. The problem is that if an interruptable (see Extra Notes) door is frobbed while in motion it stops; another frob will reverse the motion - so even if the door is only open a crack it will still take the full time to close and vice versa.&lt;br /&gt;
&lt;br /&gt;
To change the time a rotating door takes to open or close, make sure the door is selected then...&lt;br /&gt;
&lt;br /&gt;
* Right click the entity inspector and check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Scroll down, select &#039;&#039;move_time&#039;&#039;&lt;br /&gt;
* Edit the second line of the input box &#039;&#039;below&#039;&#039; the properties window to the time you want.&lt;br /&gt;
* The time is in seconds and decimal fractions can be used.&lt;br /&gt;
* The default is 1 second and if set to this then the door opens and closes in one second whatever the maximum open angle, great or small.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sliding Door Speed:&amp;lt;br&amp;gt;&lt;br /&gt;
The speed of a sliding door is set in the &#039;&#039;translate_speed&#039;&#039; property. To add this, make sure the door is selected then...&lt;br /&gt;
&lt;br /&gt;
* Right click the entity inspector and check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Scroll down, select &#039;&#039;translate_speed&#039;&#039;&lt;br /&gt;
* Edit the second line of the input box &#039;&#039;below&#039;&#039; the properties window to the speed you want.&lt;br /&gt;
* The speed is in Dark Radiant grid units per second.&lt;br /&gt;
* The default is 0 and if set to this then the door slides open in one second whatever the distance, great or small.&lt;br /&gt;
* CAUTION: If you later change the door back to a rotating door then delete the &#039;&#039;translate_speed&#039;&#039; property or ensure it is set to 0 as (at the time of writing but this will be fixed) a bug makes rotating doors open and close instantly. (Note: you can still mix sliding with rotating but check - this bug might only be if &#039;&#039;translate&#039;&#039; is set to 0 0 0)&lt;br /&gt;
&lt;br /&gt;
===Visportals and Doors===&lt;br /&gt;
&lt;br /&gt;
A visportal face surrounded by solid at its edges and in contact with a door is closed when the door is closed and enabled when the door is open. In most cases you will place a visportal in contact with a working door unless you can see through the door (such as a true glass door or barred gate.) For full details see [[Visportals]].&lt;br /&gt;
&lt;br /&gt;
==Auto-Closing/Opening Doors==&lt;br /&gt;
Doors that automatically close after being open for some time are easy to setup: Each frobmover entity supports these spawnargs:&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;auto_close_time&amp;quot;:Set this to something &amp;gt;= 0 to let the mover automatically close (again) after this time when being fully opened (measured in seconds). Defaults to -1, which means &#039;do not autoclose&#039;. The event is also activated when the mover starts at the open position at map start.&lt;br /&gt;
;&amp;quot;auto_open_time&amp;quot;:&amp;quot;Set this to something &amp;gt;= 0 to let the mover automatically open (again) after this time when being fully closed (measured in seconds). Defaults to -1, which means &#039;do not autoopen&#039;. The event is also activated when the mover starts at the closed position at map start.&lt;br /&gt;
&lt;br /&gt;
Old text:&lt;br /&gt;
&lt;br /&gt;
Note that auto-closing doors and AI closing doors behind them, is very much work in progress at the time of writing, so for now, this is another method that works. Check first if true AI closing of doors is working yet before bothering with this!&lt;br /&gt;
&lt;br /&gt;
I have one door that I particularly want the AI to close as there is a bit of frame lag inside if not. So I set this up and it works good as an auto-closing door - not as good as a true AI closing door as it will auto close when the player goes through as well but it does look very effective to see AI going through and closing the door behind them. Not tested exhaustively so I don&#039;t know if there could be any downside. Here&#039;s what to do....&lt;br /&gt;
&lt;br /&gt;
First a quick summary to make it more clear:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;A trigger_relay is used both as a relay AND carries a stim. We put the trigger_relay with its stim in the path of the open door. The door has a response property. When it opens and contacts the stim its response is to send a signal back to the relay. The relay pauses then closes the door...&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* First, optionally give your door a suitable name like autodoor1, whatever.&lt;br /&gt;
* Copy that name to the clipboard.&lt;br /&gt;
&lt;br /&gt;
Next we need a relay with a delay:&lt;br /&gt;
&lt;br /&gt;
* Create entity &amp;gt; darkmod &amp;gt; trigger_relay&lt;br /&gt;
&lt;br /&gt;
* Place it roughly at the position the door will be at when open and to be on the safe side 3/4th of the way to the far end of the door (not the hinge end) to give max distance from the close door.&lt;br /&gt;
&lt;br /&gt;
* Add the property &#039;target&#039; and paste in the door name you just copied.&lt;br /&gt;
&lt;br /&gt;
* Give the relay itself a name, eg, autoDoor_relay_1, and copy that name to the clipboard, you&#039;ll need that too in a bit.&lt;br /&gt;
&lt;br /&gt;
* Add the property delay and the value 3 - this is the delay in seconds before the door will close; 3 seems about right but 2 might be worth a try because to that 3 is added a random value between 0 to 0.5 seconds from the Time Interval we entered for the stim firings.&lt;br /&gt;
&lt;br /&gt;
* Add the property &#039;wait&#039; and the value 3. This is the time before it can work again in seconds. If you set it too low then in theory the door might trigger again but in this situation I don&#039;t think it&#039;s possible. Too long, eg, one minute, and it won&#039;t work if the AI goes back through the door before then. If this value is -1 then the whole thing will only work ONCE so might be used for an AI who goes through once, closes it behind him, but you don&#039;t want it to be an autodoor thereafter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That&#039;s the relay, now we add a stim to it:&lt;br /&gt;
&lt;br /&gt;
* Still with the trigger relay selected, go to {{menu|Entity|Stim/Response}}&lt;br /&gt;
&lt;br /&gt;
* Custom stim tab.&lt;br /&gt;
&lt;br /&gt;
* Click Add stim type, select the new custom stim type you just made at the bottom of the list and type in eg, autoDoorStim at top right in the input box.&lt;br /&gt;
&lt;br /&gt;
* Click the stim tab and the little drop down arrow against the &#039;type&#039; selector at bottom left and you should see your new custom stim name. Select it.&lt;br /&gt;
&lt;br /&gt;
* Select the new autoDoorStim in the list and on the right you need only type in the radius box 15.0 There is quite a lot of room for error. I had it working on 10 and also on 25. The value should be less than the distance to the closed door else it will trigger open! But no so small that the door might not reach it.&lt;br /&gt;
&lt;br /&gt;
* Select the check box for Time Interval and enter 500 (millisecs.) This is so it doesn&#039;t keep firing more frequently than is necessary. This stim will be firing all through your mission whether the door is used or not so if you had dozens of these then maybe it would affect performance. Too big a number and there may be a long delay before the door shuts - but it will be random depending on the next time the stim happens to fire. We&#039;ll control the delay we want more precisely later.&lt;br /&gt;
&lt;br /&gt;
* Click {{ok}} to confirm it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That&#039;s the stim set up, now for the response to it which is put on the door....&lt;br /&gt;
&lt;br /&gt;
* Select the doorm, then use {{menu|Entity|Stim/response}} and select the response tab.&lt;br /&gt;
&lt;br /&gt;
* Click the little drop down arrow against the &#039;type&#039; selector at bottom left and you should see your new custom stim name. Select it.&lt;br /&gt;
&lt;br /&gt;
* Right click in the big &#039;&#039;Response Effects&#039;&#039; box on the bottom right of the panel.&lt;br /&gt;
&lt;br /&gt;
* Add New Effect and you should get a default &#039;Activate Response&#039; response added to the list. Double click it.&lt;br /&gt;
&lt;br /&gt;
* In the Effect selector at the stop select &#039;Trigger&#039;&lt;br /&gt;
&lt;br /&gt;
* in the Target box, paste in the name of the relay you copied or you can select it from the list at the little arrow.&lt;br /&gt;
&lt;br /&gt;
* Leave the Activator box empty.&lt;br /&gt;
&lt;br /&gt;
* Click {{apply}} and then {{ok}} on the main S &amp;amp; R panel bottom right.&lt;br /&gt;
&lt;br /&gt;
It should now work. No need to wait for an AI, just frob the door and watch it close itself. If not, check the position of the stim brush is close to where the door stops when open.&lt;br /&gt;
&lt;br /&gt;
==AI Door management==&lt;br /&gt;
&lt;br /&gt;
See also [[#Keys_carried_by_AI]] above.&lt;br /&gt;
&lt;br /&gt;
By default AI will open doors and close them behind them. Here are some spawnargs the mapper can use to modify that behaviour:&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;ai_should_not_handle&amp;quot; :If set to 1, AI will not attempt to handle it and add it to the forbidden areas when closed (so that it doesn&#039;t try to path through). They might still walk through the door when it is open though. Useful if you have some special use door that you don&#039;t want the AI to operate.&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;ai_should_not_close&amp;quot; :If set to 1, AI will not close the door behind them unless it obstructs them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To get AI to unlock/relock specific doors there are two methods currently:&lt;br /&gt;
&lt;br /&gt;
1. add the following spawnarg/value to the AI:&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;can_unlock1&amp;quot; &#039;&#039;&amp;lt;doorname&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do NOT use can_unlock_1.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For additional doors on the same AI use &#039;&#039;can_unlock2 doorname&#039;&#039; etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. In the editor position an actual key that works for that door on the AI and also add to the key bind &amp;lt;AIname&amp;gt; and also bindToJoint LeftHips_Dummy (see other joints names elsewhere in wiki.) Currently, if the player pickpockets the key then the AI seeks an alternate route but otherwise does nothing (?) This may be upgraded in the future to better strategies.&lt;br /&gt;
&lt;br /&gt;
3. There is the possibility in the future of an additional method which would just use special attach spawnargs to make the above easier. The key would spawn at the correct position at game start. Watch this space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Door handling positions===&lt;br /&gt;
&lt;br /&gt;
It is also possible to set custom door handling positions for the AI. This is especially useful when the standard routine that lets the AI choose their standing positions while opening and closing the door fails, leaving them circling around in front of the door helplessly.&lt;br /&gt;
&lt;br /&gt;
Place a movers &amp;gt; atdm:door_handling_position entity where you want the AI to stand while opening/closing the door from this side.(it can be found in the movers folder in the entity chooser)&lt;br /&gt;
&lt;br /&gt;
On the door, you need to set the spawn arg &amp;quot;door_handle_position&amp;quot; &amp;quot;name_of_door_handling_position&amp;quot; You can also place a door handling position on each side of the door, the AI should automatically choose the right one. In this case, you need to set spawn args with &amp;quot;door_handle_position_1&amp;quot; etc and the corresponding names of the door handling position entities on the door.&lt;br /&gt;
&lt;br /&gt;
The door handling positions can also carry spawn args that define the behaviour of the AI, which are useful for example for doors that can only be openend or locked from one side:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_open&amp;quot;&#039;&#039;&#039; If set to true, the AI will not try to open the door from this side (but still walk through when the door is already open)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_close&amp;quot;&#039;&#039;&#039; If set to true, the AI will not attempt to close the door from this side&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_unlock&amp;quot;&#039;&#039;&#039; If set true, the AI will not be able to unlock the door from this side, but still use it when it is not locked.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_lock&amp;quot;&#039;&#039;&#039; If this is set true, the AI will not lock the door from this side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AI locking doors behind them===&lt;br /&gt;
&lt;br /&gt;
If one AI is involved (no one else is in the queue), he&#039;ll lock it behind him if he had to unlock it in the first place.&lt;br /&gt;
&lt;br /&gt;
 If more than one AI is using the door at the same time (there&#039;s a queue), the first AI unlocks the door, and the last AI through will only lock it if it&#039;s marked &amp;quot;should_always_be_locked&amp;quot; AND they have a &amp;quot;can_unlock&amp;quot; for that door or they have a key for that door. The last AI to use the door doesn&#039;t know that the first AI found it locked, because that info is kept per AI, and not per door. &lt;br /&gt;
&lt;br /&gt;
In the rare case where a door is set up to use door-handling position entities (necessary for AI to use sliding doors), either or both of those entities can have the &amp;quot;ai_no_lock&amp;quot; spawnarg, which means AI aren&#039;t allowed to lock the door from that side.&lt;br /&gt;
&lt;br /&gt;
==Doors as Triggers==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;by Ishtvan &amp;amp; greebo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Doors (or any binary frob mover, buttons, levers, etc) now have the option to trigger their target on closing or opening. (For definition purposes, a button is defined as &amp;quot;closed&amp;quot; in the state when it starts out and &amp;quot;open&amp;quot; in the state you press it down to. I know that&#039;s a little non-intuitive, but it came from deriving from doors).&lt;br /&gt;
&lt;br /&gt;
New spawnargs on frob movers:&lt;br /&gt;
;&amp;quot;trigger_on_open&amp;quot; :If set to 1, this binary mover will trigger its targets when it starts out completely closed and is opened.&lt;br /&gt;
;&amp;quot;trigger_when_opened&amp;quot;:If set to 1, this binary mover will trigger its targets when it is completely opened. Code defaults to 0.&lt;br /&gt;
;&amp;quot;trigger_on_close&amp;quot;:If set to 1, this binary mover will trigger its targets when it completely closes after being open.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Skins: A Wide Variety of Door Textures==&lt;br /&gt;
&lt;br /&gt;
This is to remind you that as with many Dark Mod models, there is a wide range of extras skins (textures) available for door models. There are now several basic door entities of different sizes so choose your size first. Then enter the spawnarg: skin with any temporary value. Now select it and click the skin button at the bottom of Dark Radiant&#039;s Entity Inspector and you will find a large of range of skin textures from which to select to give you a choice of appearances for your door.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Extra Notes==&lt;br /&gt;
The property &#039;&#039;interruptable&#039;&#039; determines whether a door can be stopped by frobbing while it is opening or closing. So by frobbing then frobbing again, the player can open a door to any position, eg, slightly ajar to peek through.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;func_darkmod_door&#039;&#039; is no longer used (just in case you come across it in the Dark Mod forums or wiki.) The Doom func_door is still available but for Dark Mod, but &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; is the entity to use.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Error_Messages&amp;diff=13266</id>
		<title>Error Messages</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Error_Messages&amp;diff=13266"/>
		<updated>2011-07-18T07:35:27Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Leaked */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;begun by Fidcal&#039;&#039;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This is a list of  Dark Mod (doom3) console dmap error and warning messages, what they mean and what to do about them. Please add any that you know.&lt;br /&gt;
&lt;br /&gt;
== Errors and Warnings ==&lt;br /&gt;
&lt;br /&gt;
=== ChopWindingWithBrush ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;WARNING: idCollisionModelManagerLocal::ChopWindingWithBrush: primitive [N] more than 128 windings&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The ChopWindingWithBrush error means you have too many small brushes placed against a large brush.&lt;br /&gt;
&lt;br /&gt;
* Note the brush number in the message where it says primitive [N]&lt;br /&gt;
* In Dark Radiant, press Esc to deselect all.&lt;br /&gt;
* Select Find Brush in the Map menu.&lt;br /&gt;
* Delete the 0 in the entity input so it is blank&lt;br /&gt;
* Enter the value from the error message (represented above as [N])&lt;br /&gt;
* Click the Find button and your problem brush should be selected&lt;br /&gt;
* Select the clipper tool (see [[Dark Radiant Controls, Keys &amp;amp; Mouse|DR Controls]] for details) and cut the brush in two or more pieces making sure the cut divides up the touching brushes area. No point in just splitting it in a blank area. You obviously need to use the option to divide the brush in two not clip and discard!&lt;br /&gt;
* Save with a new name ideally then test dmap again and it should be OK.&lt;br /&gt;
&lt;br /&gt;
=== Entity 1 has surfaces, but no name key ===&lt;br /&gt;
&lt;br /&gt;
This error &amp;quot;Entity 1 has surfaces, but no name key&amp;quot; seems to occur if entity 0 is not worldspawn. Somehow the first entity 0 is some other entity and worldspawn was entity 1 so had no name key. I couldn&#039;t reproduce this but it has happened. Possibly there might be other circumstances where an entity has no name key but normally Dark Radiant would not permit that. &lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
&lt;br /&gt;
* In Dark Radiant:&lt;br /&gt;
* Make a backup copy of your map using menu &amp;gt; file &amp;gt; save copy as.&lt;br /&gt;
* Deselect all with Esc.&lt;br /&gt;
* Menu &amp;gt; find brush &amp;gt; set brush and entity to 0&lt;br /&gt;
* Click OK&lt;br /&gt;
* Entity 0 is normally worldspawn.&lt;br /&gt;
* If it is some other entity not worldspawn, clone it then delete the original. This will rename the entity so you might need to check if this affects anything targetting it or bind to it, or script ref. etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Leaked ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Warning: ************leaked**************&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
See this [[Performance: Essential Must-Knows#How to detect and fix leaks|must know]] for details of how to deal with leaks.&lt;br /&gt;
&lt;br /&gt;
=== Node without a volume ===&lt;br /&gt;
&lt;br /&gt;
This indicates a brush/entity/patch that is either infinite, or not properly closed. You need to delete these brushes and redo them.&lt;br /&gt;
&lt;br /&gt;
To find these brushes, note the entity ID which Doom prints on the console:&lt;br /&gt;
&lt;br /&gt;
 ############### entity &#039;&#039;&#039;32&#039;&#039;&#039; ###############&lt;br /&gt;
 --- FaceBSP ---&lt;br /&gt;
     0 faces&lt;br /&gt;
     1 leafs&lt;br /&gt;
   0.0 seconds faceBsp&lt;br /&gt;
 ----- MakeTreePortals -----&lt;br /&gt;
 WARNING: node without a volume&lt;br /&gt;
&lt;br /&gt;
In this case it is 32, so go to &#039;&#039;&#039;Map -&amp;gt; Find Brush&#039;&#039;&#039; in DarkRadiant, and enter this number into the &#039;&#039;&#039;Entity number&#039;&#039;&#039; box and press &#039;&#039;Find&#039;&#039;. The entity in question will be highlighted in the editor.&lt;br /&gt;
&lt;br /&gt;
===Too many verts for a poly===&lt;br /&gt;
&lt;br /&gt;
If you notice warnings in the console like the following:&lt;br /&gt;
&lt;br /&gt;
 WARNING: ConvertLWOToModelSurfaces: model models/darkmod/props/decorative/statuette_priest_torso.lwo has too many verts for a poly!&lt;br /&gt;
 Make sure you triplet it down&lt;br /&gt;
 WARNING: ConvertLWOToModelSurfaces: model models/darkmod/props/decorative/statuette_priest_torso.lwo has too many verts for a poly!&lt;br /&gt;
 Make sure you triplet it down&lt;br /&gt;
 WARNING: ConvertLWOToModelSurfaces: model models/darkmod/props/decorative/statuette_priest_torso.lwo has too many verts for a poly!&lt;br /&gt;
 Make sure you triplet it down&lt;br /&gt;
&lt;br /&gt;
It means one of two things.  One, you forgot to Triple your model (you cannot have 4 sided polys in D3).  In Lightwave, you  do this by using the &amp;quot;Triple&amp;quot; command (shift-t).&lt;br /&gt;
&lt;br /&gt;
Or two, there are leftover 1 or 2 sided polys.  In Lightwave, you can check this by checking the &amp;quot;statistics&amp;quot; window (w).  It will list the number of 1 or 2 sided polys, and you can select them by hitting the (+) sign beside the name.  If you delete them and save the model it should solve the problem.&lt;br /&gt;
&lt;br /&gt;
Technically, this is just a warning, not an error, so your map will still work.  But for the sake of less garbage in the console you should try and fix it.&lt;br /&gt;
&lt;br /&gt;
== Useful Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.map-center.com/forums/viewtopic.php?t=331 map-center.com post] with good explanations&lt;br /&gt;
* [http://www.doom3world.org/phpbb2/viewtopic.php?f=1&amp;amp;t=7439&amp;amp;view=previous doom3world forum]&lt;br /&gt;
* [http://www.katsbits.com/htm/tutorials/common_error_messages.php quake3 errors]&lt;br /&gt;
&lt;br /&gt;
{{troubleshooting}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Combined_light_entities&amp;diff=13090</id>
		<title>Combined light entities</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Combined_light_entities&amp;diff=13090"/>
		<updated>2011-06-08T13:04:30Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Setting spawnargs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Many complex objects in game are build from more than one entity. Others consist of only one entity, but represent different things at the same time.&lt;br /&gt;
&lt;br /&gt;
For instance, a candle consists of two entity: the candle stub, and an attached flame object. &lt;br /&gt;
&lt;br /&gt;
The flame object itself consists of only one entity, but this entity both emits light, sound and particles as well as reacts to stimuli like fire and water. &lt;br /&gt;
&lt;br /&gt;
This article deals with the complex entities consisting of more than one entity.&lt;br /&gt;
&lt;br /&gt;
=== Two ways ===&lt;br /&gt;
&lt;br /&gt;
There are two ways to attach two entities together:&lt;br /&gt;
&lt;br /&gt;
* the entityDef (inside a .def file) can specify to spawn and attach a new entity when the first entity is spawned. This typical happens at map loading time, but can also happen later in game when a new base entity is spawned. This is from here one called &amp;quot;def_attached&amp;quot; due to the spawnarg being responsible: [[def_attach]].&lt;br /&gt;
* the mapper can manually add both entities in the map, and then arrange them in the editor so they look bound together. Additionally, one can use the &amp;quot;bind&amp;quot; or &amp;quot;bindToJoint&amp;quot; spawnargs to make f.i. a key bound to a moving AI. We refer to these ways from here on as &amp;quot;the manual way&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The manual way has several disadvantages but also advantages:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disadvantages:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# manually arranging the entities is error prone, f.i. often candle flames would hover over the candle, or be slightly offset&lt;br /&gt;
# Moving the entities in the map must always move both in sync, or 1. happens.&lt;br /&gt;
# when creating a moveable entity, the mapper must also take care that the second entity moves with the first by binding them together manually&lt;br /&gt;
# Changing the color of all attached flames is cumbersome, as you need to modify each of them. With the def_attached method, you can simple edit the entityDef file or overwrite this entity with your own definition.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advantages:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Both entities are present in the editor, and can thus be seen. (For combined entities, DR will hopefully later automatically show a dashed outline for any automatically attached entities, making this point moot).&lt;br /&gt;
# Since the attached entity is already in the editor, its name is known, so it can be easily targeted by scripts and have spawnargs set on it. This is the main disadvantage of def_attaching entities and we see later how we can overcome it.&lt;br /&gt;
&lt;br /&gt;
This article, deals primarily with the def_attach method.&lt;br /&gt;
&lt;br /&gt;
== Example entities ==&lt;br /&gt;
&lt;br /&gt;
=== Candle and Flame ===&lt;br /&gt;
&lt;br /&gt;
Here is an example how a flame is attached to a candle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    // attach the light, so the candle can be re-lit by fire stims&lt;br /&gt;
    &amp;quot;def_attach&amp;quot;            &amp;quot;light_candleflame_unlit&amp;quot;&lt;br /&gt;
    &amp;quot;pos_attach&amp;quot;            &amp;quot;flame&amp;quot;         // At the attach point called &amp;quot;flame&amp;quot;...&lt;br /&gt;
    &amp;quot;attach_pos_name_1&amp;quot;     &amp;quot;flame&amp;quot;         // ... which is defined here.&lt;br /&gt;
    &amp;quot;name_attach&amp;quot;           &amp;quot;flame&amp;quot;         // Set a name to pass along spawnargs&lt;br /&gt;
    &amp;quot;attach_pos_origin_1&amp;quot;   &amp;quot;0 0 15&amp;quot;        // Offset the flame X units in the Z direction&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;name_attach&#039;&#039;&#039; is the name of the attachment, which will be important for later when setting spawnargs.&lt;br /&gt;
&lt;br /&gt;
=== Holder and Candle (and Flame) ===&lt;br /&gt;
&lt;br /&gt;
Here is an example entity attaching a candle (which itself has an attached flame) to a candle holder:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* skinny tall */&lt;br /&gt;
&lt;br /&gt;
entityDef atdm:moveable_candle_holder_plus_skinny_tall_candle&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;inherit&amp;quot;               &amp;quot;atdm:moveable_candle_holder_base&amp;quot;&lt;br /&gt;
    &amp;quot;mass&amp;quot;                  &amp;quot;1.5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;editor_usage&amp;quot;          &amp;quot;A candle holder with an unlit tall &amp;amp; skinny candle.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    // attach the candle&lt;br /&gt;
    &amp;quot;def_attach&amp;quot;            &amp;quot;atdm:moveable_candle_skinny_tall&amp;quot;&lt;br /&gt;
    &amp;quot;pos_attach&amp;quot;            &amp;quot;candle&amp;quot;        // At the attach point called &amp;quot;candle&amp;quot;...&lt;br /&gt;
    &amp;quot;attach_pos_name_1&amp;quot;     &amp;quot;candle&amp;quot;        // ... which is defined here.&lt;br /&gt;
    &amp;quot;name_attach&amp;quot;           &amp;quot;candle&amp;quot;        // Set a name to pass along spawnargs&lt;br /&gt;
    &amp;quot;attach_pos_origin_1&amp;quot;   &amp;quot;0 0 17.5&amp;quot;      // Offset the candle X units in the Z direction&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modifying the attached entity/entities ==&lt;br /&gt;
&lt;br /&gt;
When you place a combined entity (f.i. candle+flame) in your map, you only see the base entity, in this case the candle. However, to switch the candle off or on, you would need to link some entity (like a switch or trigger) to the candle flame entity. Likewise, if you want to change the color of the flame, you would need to set the &amp;quot;_color&amp;quot; spawnarg on the flame.&lt;br /&gt;
&lt;br /&gt;
But since the candle flame does not exist yet, you can&#039;t. Here is how you can overcome this:&lt;br /&gt;
&lt;br /&gt;
=== Linking from the holder entity ===&lt;br /&gt;
&lt;br /&gt;
If you want, for instance, a second light to go on/off, or a door to open when a candle is extinguished, simply select the candle holder, and the second entity and press {{key|CTRL}} + {{key|K}} to link them. The holder will rely on/off signals from itself to the linked entity when the flames are extinguished or relit.&lt;br /&gt;
&lt;br /&gt;
=== Targeting the (invisible) entity ===&lt;br /&gt;
&lt;br /&gt;
Simple target the base entity, like the holder or the candle. When triggered, these know how to extingusish or light all attached flames (even tho they don&#039;t exist at map load). The holder will then rely the signal to any targeted (either by the holder or by the flames) entities.&lt;br /&gt;
&lt;br /&gt;
=== Turning lights off/on ===&lt;br /&gt;
&lt;br /&gt;
Since the attached light entity is not present in your map, you do not know its name, and thus it could be difficult to do simple things like turning the lights on or off. To make this easier, three methods exist to help you:&lt;br /&gt;
&lt;br /&gt;
==== Script Object ====&lt;br /&gt;
&lt;br /&gt;
Each base entity has a script object attached, that features the three following methods:&lt;br /&gt;
&lt;br /&gt;
# LightsOn();&lt;br /&gt;
# LightsOff();&lt;br /&gt;
# LightsToggle();&lt;br /&gt;
&lt;br /&gt;
You can use them in two ways:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Write a script:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  entity my_holder = sys.getEntity(&amp;quot;Name_of_the_light_holder&amp;quot;);&lt;br /&gt;
  my_holder.LightsOn();&lt;br /&gt;
  sys.wait(500);&lt;br /&gt;
  my_holder.LightsOff();&lt;br /&gt;
  sys.wait(500);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Use an atdm:target_callobjectfunction entity:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create an &#039;&#039;&#039;atdm:target_callobjectfunction&#039;&#039;&#039; entity and give it the following spawnargs:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;call&amp;quot; &amp;quot;LightsOff&amp;quot;&lt;br /&gt;
 &amp;quot;target0&amp;quot; &amp;quot;Name_of_the_light_holder&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then just trigger that entity with a trigger of your choosing, or target it from a lever etc.&lt;br /&gt;
&lt;br /&gt;
See the [[atdm:target_callobjectfunction|article about atdm:target_callobjectfunction]] about for more details.&lt;br /&gt;
&lt;br /&gt;
==== Global functions ====&lt;br /&gt;
&lt;br /&gt;
Es a last resort, there are three special global script functions that you can use to manipulate attached light entities when you only know the base entity:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  frob_light_holder_light( holder );         # turn the light on&lt;br /&gt;
  frob_light_holder_ext( holder );           # turn the light off&lt;br /&gt;
  frob_light_holder_toggle_light( holder );  # toggle light (if on =&amp;gt; off, if off =&amp;gt; on)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; These functions are called without an object and take as first argument the base entity.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void light_on( entity zone )&lt;br /&gt;
  {&lt;br /&gt;
  entity holder = sys.getEntity( &amp;quot;stone_room_light&amp;quot; );&lt;br /&gt;
  if (holder)&lt;br /&gt;
    {&lt;br /&gt;
    // We need to tell the holder to turn off the bound light (as we do&lt;br /&gt;
    // not know what the bound light entity is named)&lt;br /&gt;
    frob_light_holder_light( holder );&lt;br /&gt;
    }&lt;br /&gt;
  // better, shorter and more clean, object-oriented way:&lt;br /&gt;
  if (holder) { holder.LightsOff(); }&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Don&#039;t call these functions this way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  holder.frob_light_holder_light(); # WRONG!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting spawnargs ===&lt;br /&gt;
&lt;br /&gt;
Setting a spawnarg on the attached entity is simply done by setting the spawnarg &#039;&#039;&#039;set SPAWNARGNAME on ATTACHMENTNAME&#039;&#039;&#039; on the base entity. &#039;&#039;&#039;SPAWNARGNAME&#039;&#039;&#039; is the name of the spawnarg, while the attachment name can be looked up in the entityDef for the base entity, e.g. in DR by checking the &amp;quot;Show inherited&amp;quot; in the entity inspector.&lt;br /&gt;
&lt;br /&gt;
Here is an example, changing the color of the attached flame:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;quot;set _color on flame&amp;quot; &amp;quot;0.2 0.2 0.9&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In DR, enter the spawnarg name and value without the quotes. The above setting will set the spawnarg &#039;_color&#039; on any entity attached that has the attachement name &#039;flame&#039; to &amp;quot;0.2 0.2 09&amp;quot;, thus coloring the light blue.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;ATTACHMENTNAME&#039;&#039;&#039; is defined as &#039;&#039;&#039;name_attach&#039;&#039;&#039; spawnarg on either the base entity or one of its attached entities.&lt;br /&gt;
&lt;br /&gt;
=== noshadows_lit ===&lt;br /&gt;
&lt;br /&gt;
All entities that use the &amp;quot;tdm_light_holder&amp;quot; [[script object]] can use the following combination of spawnargs:&lt;br /&gt;
&lt;br /&gt;
For starting lit entities:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;noshadows_lit&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
 &amp;quot;noshadows&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
 &amp;quot;extinguished&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and for starting as unlit entites:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;noshadows_lit&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
 &amp;quot;noshadows&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;extinguished&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This makes the entity only cast a shadow when the light is off, the switch is done by the light holder script object. This has the effect that when the player turns on the light, or lights the torch/candle, that the model itself does not cast a shadow, preventing it from casting ugly shadows from its own light. However, if the light is off, then other light sources still cast a shadow from the candle holder. This is a compromise between having no shadows or shadows all the time and looks a lot better than just setting &amp;quot;noshadows&amp;quot; to &amp;quot;1&amp;quot; all the time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Changing attached entities ===&lt;br /&gt;
&lt;br /&gt;
Sometimes you want to change the actual attached entity for another variant, but the specific combination does either not exist yet, or you have made a new entity that you want to attach instead.&lt;br /&gt;
&lt;br /&gt;
Now you could create the combination entity from scratch, but that can be cumbersome and error prone. Instead, just swap the attached entity.&lt;br /&gt;
&lt;br /&gt;
Here is how you take a normal combined walltorch+flame and swap the flame for a green variant: Just override the spawnarg &amp;quot;def_attach&amp;quot; with your own version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;quot;def_attach&amp;quot;  &amp;quot;light_torchflame_green&amp;quot;  // note: the green torch only exists from TDM 1.01 on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All the other spawnargs have already the right value and can thus be left alone.&lt;br /&gt;
&lt;br /&gt;
{{lighting}} {{editing}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Pathfinding&amp;diff=13089</id>
		<title>Pathfinding</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Pathfinding&amp;diff=13089"/>
		<updated>2011-06-06T20:42:03Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* monster_clip : Adding AI pathfinding to Horizontal Surfaces */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Written by Fidcal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For information on using path entities, see [[Path Nodes]].&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This tutorial covers AI pathfinding. By &#039;AI&#039; is meant any non-player character in the game such as a guard, spider, belcher, etc.&lt;br /&gt;
&lt;br /&gt;
Plain worldspawn brush terrain (not assigned to entities) is &#039;&#039;collidable&#039;&#039; and also correctly affects pathfinding so AI &#039;recognize&#039; it either as a barrier to avoid or as a surface on which they can walk. But all patches as well as brushes and models that &#039;&#039;are&#039;&#039; assigned to entities are not recognized by AI as a barrier and they will walk mindlessly forever against such obstacles unless diverted. Nor can they walk over their surface (although the player can.) This is because pathfinding does not take such surfaces into account so will not guide AI around or over them. Yet AI  will &#039;&#039;collide&#039;&#039; with them so an AI may try to walk right through a model pillar but refuse to walk over a solid bridge made of static entity brush. This can be put to good use (see &#039;&#039;Preventing and Reducing Pathfinding in selected locations&#039;&#039;) but first we shall look at assisting pathfinding...&lt;br /&gt;
&lt;br /&gt;
==Enabling and Improving Pathfinding in Select Locations==&lt;br /&gt;
&lt;br /&gt;
The mappers&#039; most important AI pathfinding control is &#039;&#039;monster_clip&#039;&#039; - it is essential in good map building. &#039;&#039;monster_clip&#039;&#039; is an &#039;&#039;&#039;invisible&#039;&#039;&#039; material used to guide AI around obstacles and over surfaces they otherwise could not traverse. It is not applied directly to existing terrain but placed invisibly around it &#039;&#039;on its own brush&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;monster_clip&#039;&#039; is a texture; find it in the entity inspector under:&lt;br /&gt;
&lt;br /&gt;
Media &amp;gt; textures &amp;gt; common &amp;gt; monster_clip&lt;br /&gt;
&lt;br /&gt;
* It must ONLY be applied to a worldspawn brush&lt;br /&gt;
* It must NOT be applied to an entity.&lt;br /&gt;
* It must be applied to ALL surfaces of the brush.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;monster_clip&#039;&#039;-textured &#039;&#039;&#039;brush&#039;&#039;&#039; is then placed around an entity brush or model to either guide AI away from it or let them walk upon it. It can also be used on its own as an invisible collidable vertical barrier or as an invisible surface to walk upon.&lt;br /&gt;
&lt;br /&gt;
Although substantial to the AI, &#039;&#039;monster_clip&#039;&#039; is completely invisible and intangible to the player so the player can pass right through it and be unsupported by it. For an invisible barrier or bridge for the player (but not to AI) use &#039;&#039;player_clip&#039;&#039; (also in textures &amp;gt; common.) &#039;&#039;player_clip&#039;&#039; is also useful to cover areas where the player might tend to get stuck.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;monster_clip&#039;&#039; : Vertical Barriers to AI Pathfinding==&lt;br /&gt;
&lt;br /&gt;
All entity-based terrain and models that lie in the path of AI should be surrounded with a brush wholly textured with &#039;&#039;monster_clip&#039;&#039; or the AI are likely to just blunder into them. They might slide off if there is an angle but they are just as likely to get stuck walking blindly against such a barrier forever. Examples are pillars, statues, railings, anything that is assigned to an entity and is not a plain worldspawn brush should be considered. This does not apply to everything wholesale; anything that will not be in the path of AI should not be surrounded by monster_clip or it will make pathfinding more complex than it needs to be (see &#039;&#039;Preventing and Reducing Pathfinding in Select Locations&#039;&#039;.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;monster_clip&#039;&#039; brushes around vertical barriers should fully surround them or they might not work properly. In the case of irregular shapes then extend the &#039;&#039;monster_clip&#039;&#039; brush to include the outermost protrusions. In fact in some cases you might wish to be extra generous and make the &#039;&#039;monster_clip&#039;&#039; signficantly bigger if you want the AI to steer well clear for any reason.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;monster_clip&#039;&#039; brushes can also be used completely on their own as invisible barriers to obstruct or divert AI for whatever reason you wish though obviously you need to keep in mind how the AI&#039;s behaviour will look to the player. Remember, the player can move freely through these invisible barriers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;monster_clip&#039;&#039; : Adding AI pathfinding to Horizontal Surfaces==&lt;br /&gt;
&lt;br /&gt;
To enable AI to move over horizontal entity surfaces - whether brush or model - you need to surround the object with &#039;&#039;monster_clip or the AI will refuse to go there.&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;monster_clip&#039;&#039; brush should vertically surround the object &#039;&#039;but just below the surface and no more than roughly 16 units below (not tested, some say 48)&#039;&#039; else they may fail to pathfind over it. Note that if top of the monster clip is above the surface it will still work but AI footstep sounds will be stone no matter what the surface so generally keep below.&lt;br /&gt;
* When walking over a &#039;&#039;monster_clip&#039;&#039; brush surface, AI may stray up to around 18 units out of the &#039;corridor&#039; of &#039;&#039;monster_clip&#039;&#039;. It may be that the edge is calculated for the centre of the AI and not its outer width. For this reason you should reduce the horizontal width by around 18 to keep the AI pathfinding away from the edges where appropriate. For example on a bridge without side rails or walls, if an AI is to turn left or right at the end it will likely move over to one side or other of the bridge as it walks across and is likely to have one leg over the edge! By reducing the &#039;&#039;monster_clip&#039;&#039; width you will keep the AI in a corridor down the middle. If there were a side rail or wall of course then that would have its own &#039;&#039;monster_clip&#039;&#039; so that would keep them on the straight and narrow.&lt;br /&gt;
* AI walking over a lone &#039;&#039;monster_clip&#039;&#039; brush that has no entity core will sink into it by about 28 units. This means that if you make an invisible AI-only bridge of &#039;&#039;monster_clip&#039;&#039; then it needs to be 28 units higher than where you want the AI&#039;s feet to touch. So a channel with side walls with top surfaces at 100 will need a bridge whose top surface is at 128 in order for the AI to walk smoothly across flush with the side walls. Because 14 to 16 is the maximum step height for an AI you will need a short step of &#039;&#039;monster_clip&#039;&#039; at the entrance and exit for the AI to get on. So this step might be 14 units high but can and should be very shallow - even one unit deep is enough for the AI to pass smoothly on to the main bridge.&lt;br /&gt;
&lt;br /&gt;
==Preventing and Reducing Pathfinding Complexity in Select Locations==&lt;br /&gt;
&lt;br /&gt;
In areas where there are a great many entity surfaces at about the same level for the AI to walk upon then one large &#039;&#039;monster_clip&#039;&#039; brush can be exended around the lot (see all about &#039;&#039;monster_clip&#039;&#039; in  the &#039;&#039;Enabling and Improving Pathfinding in Select Locations&#039;&#039; section.) This will simplify pathfinding and make it more efficient.&lt;br /&gt;
&lt;br /&gt;
AI will refuse to move over models and brushes assigned to entities unless surrounded by a &#039;&#039;monster_clip&#039;&#039; brush so this is a good method of preventing and reducing pathfinding where needed. This reduces pathfinding complexity and stops AI stepping up on to places such as skirting boards (baseboards.) So...&lt;br /&gt;
&lt;br /&gt;
Avoid using plain worldspawn brushwork but instead assign them to func_static or some other entity if that is appropriate on...&lt;br /&gt;
&lt;br /&gt;
* Any area out of reach of AI such as rooftops, balconies, ledges, etc. and especially steep slopes as these can generate complex pathfinding.&lt;br /&gt;
* Areas that AI should not or will not walk on such as shallow building trim and decoration, etc.&lt;br /&gt;
* And do &#039;&#039;&#039;not&#039;&#039;&#039; surround them with &#039;&#039;monster_clip&#039;&#039; brushes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Steep Steps, Slopes, and Extreme Pathfinding!==&lt;br /&gt;
&lt;br /&gt;
The maximum slope for an AI is approximately 40 degrees from the horizontal but varies upon the situation and the AI. The maximum step height for AI and player is 16 though some AI cannot step up over 14 and perhaps less. But the minimum depth from front to back of a step is only 1 and this can be used to get extreme slopes and very steep steps - even near vertical walls! So, by making a flight of steps each 16 units higher but making each alternate one only one unit deep the overall stair is very steep. The shallow step is near invisible especially if it falls on a join in the texture and anyway it can be made invisible with texture &amp;gt; common &amp;gt; nodrawsolid. Yet AI can step up both this shallow step and the normal step in one convincing motion so this is useful for getting very steep steps where needed. The player can walk up these too with ease and without mantling or jumping.&lt;br /&gt;
&lt;br /&gt;
Taking the above method to great extremes, once can have the entire stair made with shallow steps no deeper than one unit and this looks like a vertical wall. If made invisible it could really be placed against a visible vertical wall if needed. Both AI and the player will shoot up these extreme steps effortlessly. This is not so natural so not easy to think of an application but mappers are very imaginative and no doubt will use it here and there! Most particularly, keep this shallow step idea in mind when you want the player to cross very rough terrain without struggling or getting stuck. The occasional hidden step here and there and the player can scamper over a boulder field or rough debris without having to keep stopping except where mantling makes better sense.&lt;br /&gt;
&lt;br /&gt;
One caveat, I set up some ladder brushes as extreme steps. The AI went up and down the ladder (albeit virtually one huge jump with no animation) BUT pathfinding went strange in another part of the mission. Not conclusive but watch for that. (If you try the ladder thing, when you have made the steps, then tilt the whole lot forward so the steps still form a vertical but jagged wall.)&lt;br /&gt;
&lt;br /&gt;
With all the above, complexity of pathfinding should be kept in mind but mapping is often about balancing the advantage of one thing over another and each situation must be evaluated on its own merits.&lt;br /&gt;
&lt;br /&gt;
==AI Pathfinding around dynamic obstacles like dropped crates==&lt;br /&gt;
&lt;br /&gt;
There is code for handling pathfinding around dynamic obstacles (such as moveables, crates, etc.) so there should be no need for the mapper to be concerned with those as AI should automatically avoid them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Viewing Pathfinding==&lt;br /&gt;
&lt;br /&gt;
You can view where pathfinding is enabled in-game by binding _impulse27 to a key and pressing it in game. You can do this in the console as a temporary measure or bind it permanently in doomconfig.cfg, eg, to bind it to the keypad asterisk key...&lt;br /&gt;
&lt;br /&gt;
bind &amp;quot;KP_STAR&amp;quot; &amp;quot;_impulse27&amp;quot;&lt;br /&gt;
&lt;br /&gt;
When you press the key then the pathfinding areas are shown in wireframe. This is temporary and the display will time out after a few seconds. It also changes colour but the signifcance of the colours I do not know.&lt;br /&gt;
&lt;br /&gt;
==Why &#039;&#039;func_static&#039;&#039; Brushes Anyway?==&lt;br /&gt;
&lt;br /&gt;
If you need to surround static entity brushes with separate &#039;&#039;monster_clip&#039;&#039; brushes for AI pathfinding then why not just leave them as plain worldspawn brushes?&lt;br /&gt;
&lt;br /&gt;
Often you do, but if you do convert a brush to func_static...&lt;br /&gt;
&lt;br /&gt;
* You can add the property noshadows = 1 so that it doesn&#039;t cast shadows, improving frame rates. &lt;br /&gt;
* It avoids creation of millions of polys in certain situations where the engine converts a brush into loads.&lt;br /&gt;
* It reduces pathfinding complexity (see &#039;&#039;Preventing and Reducing Pathfinding Complexity in Select Locations&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Problems, Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
One mapper reported pathfinding broke down due to some monsterclip penetrating a visportal. Split in two either side cured the problem.&lt;br /&gt;
&lt;br /&gt;
Others have said unsealed non-working visportals or ones crossed by func_statics also might cause pathfinding problems.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=TDM_Material_Batch_Conversion&amp;diff=13074</id>
		<title>TDM Material Batch Conversion</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=TDM_Material_Batch_Conversion&amp;diff=13074"/>
		<updated>2011-05-30T07:53:10Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: added new commands to handle single files and materials&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
Some of the ambient rendering methods available in TDM require ambient stages in all the material definitions (see [[Virtual Ambient Light Textures]]). Since TDM 1.03, there are console commands that automatically converts materials to be compatible with all the ambient methods. &#039;&#039;&#039;tdm_batchConvertMaterials&#039;&#039;&#039; is used to convert batches of material files.&lt;br /&gt;
&#039;&#039;&#039;tdm_convertMaterialsFromFile&#039;&#039;&#039; converts all materials in one .mtr file.&lt;br /&gt;
&#039;&#039;&#039;tdm_convertMaterial&#039;&#039;&#039; converts one material within a file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Converting a single material=&lt;br /&gt;
&lt;br /&gt;
To convert a single material use the command:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;tdm_convertMaterial&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
tdm_convertMaterial &amp;lt;mtr-name&amp;gt; [forceUpdate] &lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
Converts specified material to support new ambient lighting. &lt;br /&gt;
Supports auto-complete for material name.&lt;br /&gt;
forceUpdate is an optional parameter, if provided, material with valid ambient blocks is forcefully updated again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Converting a single file=&lt;br /&gt;
&lt;br /&gt;
To convert a single file use the command:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;tdm_convertMaterialsFromFile &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
tdm_convertMaterialsFromFile &amp;lt;mtr-filename&amp;gt; [forceUpdateAll] &lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
Converts all materials from a specified file to support new ambient lighting. &lt;br /&gt;
Supports auto-complete for filename.&lt;br /&gt;
forceUpdateAll is an optional parameter, if provided, materials with valid ambient blocks are forcefully updated again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Converting multiple files=&lt;br /&gt;
&lt;br /&gt;
The command &#039;&#039;tdm_batchConvertMaterials&#039;&#039; analyses a defined number of materials and alters them according to the requirements imposed by TDM 1.03. Its console explanation reads:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Usage: tdm_batchConvertMaterials &amp;lt;StartIndex&amp;gt; &amp;lt;nMaterials&amp;gt; [forceUpdateAll]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;StartIndex&#039;&#039; is a number that defines at what material the command is supposed to start processing and &#039;&#039;nMaterials&#039;&#039; defines how many successive materials should be processed. TDM currently consists of about 9000+ materials, so one would probably go ahead and just run the command with the parameters: tdm_batchConvertMaterials 0 10000. The problem is that all materials are parsed into RAM which will eventually lead to &#039;&#039;&#039;malloc errors, when the RAM is full&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;forceUpdateAll&#039;&#039; is also set, the command will update all materials, independent of the results of the analysis.&lt;br /&gt;
&lt;br /&gt;
The results of the command are stored in the folder of the currently installed FM, e.g. &#039;&#039;.../Doom3/thiefs_den/materials&#039;&#039;, or in &#039;&#039;.../Doom3/darkmod/materials&#039;&#039; if no FM is installed. And in case you wonder, the materials don&#039;t need to be extracted from the pk4 archives prior to processing.&lt;br /&gt;
&lt;br /&gt;
==Proper usage of the command==&lt;br /&gt;
In order to run the command without running into malloc errors, one has to successively execute it on different partitions of the materials. If you choose &#039;&#039;nMaterials=1000&#039;&#039; (which appears to be a good value), you&#039;ll have to start the command multiple times while increasing the &#039;&#039;StartIndex&#039;&#039; and restarting TDM after each execution (in order to free the memory again). Here is an example:&lt;br /&gt;
&lt;br /&gt;
 tdm_batchConvertMaterials 0 1000&lt;br /&gt;
 &amp;lt;i&amp;gt;*Wait for finish and restart TDM*&amp;lt;/i&amp;gt;&lt;br /&gt;
 tdm_batchConvertMaterials 1000 1000&lt;br /&gt;
 &amp;lt;i&amp;gt;*Wait for finish and restart TDM*&amp;lt;/i&amp;gt;&lt;br /&gt;
 tdm_batchConvertMaterials 2000 1000&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eventually the console will say &amp;quot;0 Materials processed and changed in total.&amp;quot;, which means you&#039;re done.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=I followed the above instructions but still ran into malloc errors=&lt;br /&gt;
It may occur that you run into malloc errors, although the first executions of the command were successful. This is due to the fact that some materials are more complex than others and require more RAM for that reason. Remember the last &#039;&#039;StartIndex&#039;&#039; and re-execute the command with that index, but a decreased &#039;&#039;nMaterials&#039;&#039;. Say for example, you received a malloc error after executing &amp;quot;tdm_batchConvertMaterials 4000 1000&amp;quot;. You would now go ahead and do the following:&lt;br /&gt;
 tdm_batchConvertMaterials 4000 &amp;lt;b&amp;gt;500&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;lt;i&amp;gt;*Wait for finish and restart TDM*&amp;lt;/i&amp;gt;&lt;br /&gt;
 tdm_batchConvertMaterials &amp;lt;b&amp;gt;4500 500&amp;lt;/b&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
After those two executions, you can actually try to raise &#039;&#039;nMaterials&#039;&#039; again to a higher value, in order to reduce the required user-input.&lt;br /&gt;
&lt;br /&gt;
=Known issues=&lt;br /&gt;
* Can result in malloc errors. See section [[#Proper Usage of the command|Proper Usage of the command]].&lt;br /&gt;
* Can produce undesired results on [[DrVertexBlend (tutorial)|vertex blended materials]], e.g. one of the old ambient stages is not removed. Please double check respective materials.&lt;br /&gt;
&lt;br /&gt;
{{textures}}&lt;br /&gt;
{{Texture Tutorials}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Doors&amp;diff=12932</id>
		<title>Doors</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Doors&amp;diff=12932"/>
		<updated>2011-04-27T05:54:47Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: model doors now rotate relative to world axes. translate can no longer be used in combination with rotate.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{todo}}&lt;br /&gt;
&#039;&#039;Written by Fidcal&#039;&#039; &#039;&#039;edit Baddcog&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Quick way to get an unlocked door in your map:&lt;br /&gt;
&lt;br /&gt;
* Insert one of the prefab doors complete with handles and select its skin property and click the button to change its skin appearance to whatever you want. Set any other properties you need.&lt;br /&gt;
&lt;br /&gt;
Alternatively,&lt;br /&gt;
&lt;br /&gt;
* Create a door from the entity list&lt;br /&gt;
* Use the &amp;quot;skin&amp;quot; spawnarg on the door to change its appearance. &lt;br /&gt;
* Create a handle from the entity list&lt;br /&gt;
* Add the &#039;&#039;door_handle&#039;&#039; property to the door and give it the name of the handle&lt;br /&gt;
* To the door handle add the value frob_peer and use the name of the door.&lt;br /&gt;
* To open clockwise, change the &#039;&#039;rotate&#039;&#039; property from &amp;lt;code&amp;gt;0 90 0&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0 -90 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This tutorial explains how to put doors into your map using Dark Radiant, as well as adjust them and their properties.&lt;br /&gt;
&lt;br /&gt;
The rest of this tutorial assumes that you have a basic understanding of using DarkRadiant. If you haven&#039;t done so, please go read the [[Dark Radiant Must Know Basic Intro]] article first.&lt;br /&gt;
&lt;br /&gt;
Additionally:&lt;br /&gt;
&lt;br /&gt;
* Up, down, left, and right in Dark Radiant&#039;s &#039;&#039;top&#039;&#039; orthoview are regarded here as the standard map directions of North, South, East, and West where useful for clarity.&lt;br /&gt;
* Where the term &#039;&#039;brush&#039;&#039; is used with a door it mostly also applies to a door made up of a group of brushes and/or patches.&lt;br /&gt;
* Where the term &#039;&#039;door&#039;&#039; is used it often will also apply to any object you wish to rotate when frobbed, for instance an openable window, box lid, or even more exotic objects that the imaginative mapper might conceive like a signal, engine part, toy, or whatever. So long as it needs to turn or slide just a fixed amount when frobbed then return when frobbed again then the following applies.&lt;br /&gt;
&lt;br /&gt;
==Door types==&lt;br /&gt;
&lt;br /&gt;
All tangible objects in Dark Mod are &#039;&#039;entities&#039;&#039;, having either a pre-made model shape or else brush/patch(es). So there are two ways to create a door in Dark Radiant: as a model door or a textured brush door (or a hybrid of the two).&lt;br /&gt;
&lt;br /&gt;
Models are ready made door objects but cannot within Dark Radiant (at the time of writing) be resized, rescaled, cropped or clipped whereas brushes are very flexible in that respect and can be worked into custom shapes for your map, including secret doors that blend into walls and other surfaces.&lt;br /&gt;
&lt;br /&gt;
Most of the current door models are found in two places along with the door handles.&lt;br /&gt;
*Model Viewer: doors created from here will be static in the world and have no props other than material type.&lt;br /&gt;
You can add any props to them to make them working doors. If nothing else it is a good place to view the different size and skin options for the doors.&lt;br /&gt;
*Entity List: most of the door models can be found here. These doors have properties already assigned so they are ready to be used. Only one base door of each type is listed, create the size/hinge count door you want (2 hinge doors have a &#039;no hinge&#039; skin). You can choose a skin for the door once it has been created in the editor with the &amp;quot;skin&amp;quot; spawnarg (use the model name of the door you want, taken from the model list, as its value). This is the easiest way to create a door. The same goes for door handles.&lt;br /&gt;
&lt;br /&gt;
Remember also that door functions may be applied to objects other than doors for instance to openable windows, drawbridges, gates, in fact anything that needs a partial rotation or slide when frobbed then return when frobbed again such as a signal device. Lockboxes and chests use similar properties.&lt;br /&gt;
&lt;br /&gt;
Door/handle prefabs seem to crash Doom3 when trying to reload a map so far now just create and link each door/handle. You can create one set and copy/paste them, but you need to take great care that all the name props are changed to match each clone. Otherwise you get handles that fly off with a distant door and handles that don&#039;t move.&lt;br /&gt;
&lt;br /&gt;
==Creating a Door==&lt;br /&gt;
&lt;br /&gt;
Put simply, to make a door you will be creating an &#039;entity with model&#039; or &#039;entity with brush&#039; or some variation thereof.&lt;br /&gt;
&lt;br /&gt;
===Creating a Model Door===&lt;br /&gt;
&lt;br /&gt;
There are several approaches to making a model door; the simplest is to create a door from the entity list; or create a door from the model viewer (good for static unusable prop doors).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Entity List&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
*Deselect everything in editor by hitting the Esc button&lt;br /&gt;
*Right-click an ortho view and select Create Entity&lt;br /&gt;
*Navigate to darkmod/movers/&#039;&#039;atdm:door_...&#039;&#039;, choose the door you want&lt;br /&gt;
*Click Add&lt;br /&gt;
*To change its appearance, add a &amp;quot;skin&amp;quot; spawnarg to the door, with the value being the model name of the door you want.&lt;br /&gt;
&lt;br /&gt;
You now have a workable door in your level.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Model Viewer&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Right click in the orthoview, select &#039;&#039;Create Model&#039;&#039; then &amp;lt;code&amp;gt;darkmod&amp;lt;/code&amp;gt; and select a door.&lt;br /&gt;
* Note that you can left drag the image in the &#039;&#039;Choose Model&#039;&#039; dialog to rotate it around.&lt;br /&gt;
* Click [[Image:Button ok.png]] and you have a static door.&lt;br /&gt;
* If you want to make it work (openable, frobbable) then:&lt;br /&gt;
** Select the entity inspector,&lt;br /&gt;
** Select the top classname line so it highlights&lt;br /&gt;
** Select the func_static line in the input box &#039;&#039;below&#039;&#039; the properties window.&lt;br /&gt;
** Edit &amp;lt;code&amp;gt;func_static&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt;&lt;br /&gt;
** Click {{check}} or press {{key-enter}}&lt;br /&gt;
&lt;br /&gt;
Alternatively you can do it the old way:&lt;br /&gt;
&lt;br /&gt;
* Create any temporary brush&lt;br /&gt;
* Right click in orthoview and select &amp;lt;code&amp;gt;Create Entity&amp;lt;/code&amp;gt; then &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Left lick the model name line in the entity inspector.&lt;br /&gt;
* Below it on the &#039;&#039;Entity Inspector&#039;&#039; panel you should now see a button &#039;Choose Model&#039;&lt;br /&gt;
* Left click it, select a door model from the darkmod group.&lt;br /&gt;
* Note that you can left drag the image in the &#039;&#039;Choose Model&#039;&#039; dialog to rotate it around.&lt;br /&gt;
* The temporary brush was deleted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In all three instances, you now have a working door with default properties. &lt;br /&gt;
&lt;br /&gt;
Name your door by adding the prop (or modifing it) to name &#039;&#039;My_Door_1&#039;&#039;. You can use any name that you feel is appropriate but all doors with handles attached &#039;&#039;must&#039;&#039; have their own specific name. Use the name My_Door_1 for your first attempt as it will be referenced when you get around to attaching handles (see below).&lt;br /&gt;
&lt;br /&gt;
To add a handle and other adjustments, see [[#Customising and Adjusting Door Properties]] below.&lt;br /&gt;
&lt;br /&gt;
===Creating a Textured Brush Door===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tip:&#039;&#039;&#039; If unsure of size then you might insert a temporary human AI first to get a sense of height.&lt;br /&gt;
&lt;br /&gt;
==== The simplest brush door: ====&lt;br /&gt;
&lt;br /&gt;
* Drag out a new brush to the size required, eg, a seven foot high door is 84&amp;quot; x 1.1 = about 90 units in Dark Radiant.&lt;br /&gt;
* Give it a door texture from the texture browser (or wall texture for a secret door)&lt;br /&gt;
* Right click in orthoview and select &#039;&#039;Create Entity&#039;&#039; then &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt;&lt;br /&gt;
* You now have a default door that rotates around its center.&lt;br /&gt;
&lt;br /&gt;
To move the rotation point to the door edge and other adjustments, see [[#Customising and Adjusting Door Properties]] below.&lt;br /&gt;
&lt;br /&gt;
==== Multi-brush doors: ====&lt;br /&gt;
&lt;br /&gt;
More complex multi-brush doors can be created using the [[Clipper]] tool, CSG, etc. - this is not covered in this tutorial. Then assign &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; for that whole brush structure. Also you can collect various brushes positioned together in relation to one another as needed, select them all, then assign &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; for the group. All the brushes will be children of the &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; entity and will rotate and be frobbable, etc. as one unit, as one door. To add further brushes or even model shapes later see the section on [[#Adding handles and other items to doors]].&lt;br /&gt;
&lt;br /&gt;
Name your door by adding the prop (or modifing it) to name My_Door_1. You can use any name that you feel is appropriate but all doors with handles attached must have their own specific name. Use the name My_Door_1 for your first attempt as it will be referenced when you get around to attaching handles (see below). (repeated from above in case you didn&#039;t choose to create a model door)&lt;br /&gt;
&lt;br /&gt;
=== Double Doors ===&lt;br /&gt;
Double doors are automatically recognised by the code when the doors are spawned. The prerequisite is that both doors are sharing/touching the same visportal. The spawnarg &#039;&#039;auto_setup_double_door&#039;&#039; (which defaults to &amp;quot;1&amp;quot;) will take care of setting up the open/lock peer relationship between the two doors. The doors will open/close and lock/unlock along with each other as a result.&lt;br /&gt;
&lt;br /&gt;
What happens behind the scenes: the doors are adding each other to their internal open_peer and lock_peer list, which causes the double doors to perform the same action when frobbed or used.&lt;br /&gt;
&lt;br /&gt;
Note that &#039;&#039;auto_setup_double_door&#039;&#039; will not set the frob_peer relationship, i.e. each door will frob-highlight on its own without highlighting the other door. You&#039;ll need to add that spawnarg manually if you want to highlight the entire double door as one.&lt;br /&gt;
&lt;br /&gt;
==Customising and Adjusting Door Properties==&lt;br /&gt;
&lt;br /&gt;
Handles, lockplates, etc. can be added to doors and door properties can be adjusted for rotation, sliding, locking, and more.&lt;br /&gt;
&lt;br /&gt;
Some of the door models have hinge plates and lockboxes that are reskinnable with a good variety of skins.&lt;br /&gt;
&lt;br /&gt;
===Door handles and other door attachments===&lt;br /&gt;
&lt;br /&gt;
 Summary: just add the property &#039;&#039;bind&#039;&#039; with the door&#039;s name to the attachment and position it where you want it on the door. If it&#039;s a &#039;&#039;atdm:mover_door_handle&#039;&#039; then it automatically will work as a handle but you can bind virtually anything.&lt;br /&gt;
You can add handles and other items to doors such that they move correctly with the door whether rotating, sliding, or both and even if the door is not vertical such as a skylight or trapdoor.&lt;br /&gt;
Handle models come in two types, &#039;&#039;single handles&#039;&#039; and &#039;&#039;double handles&#039;&#039;. A single handle is one sided, this means the handle will be inside the door or outside the door, but not both. A double handle has a lever on the inside of the door and a handle on the outside of the door. Each has benefits.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Single door handles&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
Single door handles can be used on a static door, a door that&#039;s just for show that no AI&#039;s or the player can use. In this case you should just create a door handle from the model viewer, it will be static and have no properties such as scripts. It is for looks only.&lt;br /&gt;
&lt;br /&gt;
Single handles can also be used inside AND outside of the same door to save on rendering. Unlike the double handles the handle on the inside of a portal won&#039;t render. The curved handle is only about 130 polys per side, but if you have a large area and 10 handles you can save 1,000 polys from being rendered. Everything counts when it comes to performance.&lt;br /&gt;
I will call this &#039;&#039;multiple handles&#039;&#039;, see more below.&lt;br /&gt;
&lt;br /&gt;
These can also be useful on brush doors created in the editor that may be very thin or very wide.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Double door handles&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
These are models have have a handle inside and outside. The bonus is that they only use one entity. Maps are limited to about 4,000 entities but when you count lights, AI, sound speakers, ect... you can run out of entities quickly on a large map. If you plan on building a large map this is the way to go, even in a small map they have benefits, namely that you only have to attach one handle per door.&lt;br /&gt;
&lt;br /&gt;
Whether you decide to use a single handle or a double handle you must first follow the instructions below and attach one handle first. If you choose a double handle, follow the instructions below and you are done. If you choose a single handle type follow the instructions then also follow the &#039;&#039;multiple handle&#039;&#039; instructions for the second handle.&lt;br /&gt;
&lt;br /&gt;
Both single and double handle types can be found in two places. The model viewer which will create a static model good for show, you can manually add props to make them work OR you can look in the entity browser.&lt;br /&gt;
Using a handle from the entity browser saves you a little bit of time as some props are already added, you just need to add the frob_peer names for the doors/handles and the door_handle name to the door.&lt;br /&gt;
&lt;br /&gt;
=== Adding a working model door handle===&lt;br /&gt;
&lt;br /&gt;
Quick summary:&lt;br /&gt;
* Create a model or brush handle and make it an &#039;&#039;atdm:mover_door_handle&#039;&#039; entity.&lt;br /&gt;
* Position it on your door.  Use the opposite side from the door&#039;s multicolor X-Y-Z indicator (highlight the door to see it) if it&#039;s not obvious which side it goes on.  &lt;br /&gt;
* &#039;&#039;&#039;Bind&#039;&#039;&#039; the handle to the door (bind &amp;lt;doorname&amp;gt;)&lt;br /&gt;
* It should now be a working handle though may need adjustments of rotation etc. see later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Important: read preceding section on door handle types and performance issues first.&lt;br /&gt;
&lt;br /&gt;
This works with both a model door and a brush door:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rotation&#039;&#039;&#039;:&lt;br /&gt;
* By default the door handle entity rotates &#039;&#039;anti-clockwise&#039;&#039; (looked at from the front) then springs back. A &#039;&#039;double handle&#039;&#039; model is OK but two singles (see &#039;&#039;Multiple door handles&#039;&#039; below) need more care as only one is the functioning entity and the other is just attached to it. So anti-clockwise is fine for a door with its hinge on the left and the handle on the right - the handle will rotate down then spring back. If you put the functioning door handle on the other side you will have to change the default &#039;&#039;rotate&#039;&#039; property from -45 0 0 to 45 0 0. &#039;&#039;&#039;&#039;&#039;Therefore it is easier to generally put this handle on the side of the door where the hinge is on the left and the non-functioning attachment handle on the other side.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*If your door only needs one handle, eg, a cupboard door, and from outside its hinge is on the right then you will need to change the &#039;&#039;rotate&#039;&#039; property of the handle as described above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;The functioning handle entity:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* Create an entity door handle (movers folder) or create a brush or model handle and assign it the entity &#039;&#039;atdm:mover_door_handle&#039;&#039;.&lt;br /&gt;
* Position it where you wish on your door.&lt;br /&gt;
* &#039;&#039;&#039;Bind&#039;&#039;&#039; the handle to the door, by adding the &amp;quot;bind&amp;quot; spawnarg to the handle.&lt;br /&gt;
&lt;br /&gt;
You now have a working door handle with default properties.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Multiple door handles&#039;&#039;&#039;:&lt;br /&gt;
Now that you&#039;ve got a handle attached to one side of the door it is time to add one to the other side (unless you used a double handle).&lt;br /&gt;
* Create the new handle. The single handles come in left and right persuasions. A door needs a left facing handle on one side and a right facing handle on the other, so if you have already added the left handle create a right handle and line it up on the other side of the door.&lt;br /&gt;
* Name this handle. I prefer to keep a naming convention for each door and it&#039;s respective handles, it makes things alot easier. The door is named &#039;&#039;&#039;My_Door_1&#039;&#039;&#039;, the first handle is named &#039;&#039;&#039;My_Handle_1&#039;&#039;&#039; so name the second handle &#039;&#039;&#039;My_Handle_1_1&#039;&#039;&#039;. This will make it stay with the first handle in the entity list. This is important to keep organized. If you name it My_Handle_2 then when you get to another door named My_Door_2 you&#039;ll be confused.&lt;br /&gt;
* Place and &#039;&#039;&#039;bind&#039;&#039;&#039; that handle to your door.&lt;br /&gt;
&lt;br /&gt;
You now have two single door handles on either side of the door that rotate together as if they were physically attached.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To add a brush to a brush door&#039;&#039;&#039;:&lt;br /&gt;
* Select the new brush &#039;&#039;and&#039;&#039; the brush door all together; &#039;&#039;the entity &#039;&#039;&#039;must&#039;&#039;&#039; be selected &#039;&#039;&#039;last&#039;&#039;&#039;.&#039;&#039;&lt;br /&gt;
* Use {{menu|Edit|Reparent primitives}}. This ensures the parent entity adopts the new item(s).&lt;br /&gt;
* If you have trouble selecting them in the orthoview because other brushes, etc. get selected then try in the camera view or as a last resort move them temporarily to an open area (but keep them in the same positions relative to each other.) Use {{key-shift}}+{{LMB}} on new item(s) then {{key-shift}}+{{LMB}} on main entity. Once they are all selected, use the {{menu|Edit|Reparent primitives}}.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To add &#039;&#039;model&#039;&#039; static items&#039;&#039;&#039;: knockers, hinges, static handles etc. to a &#039;&#039;Model Door&#039;&#039;:&lt;br /&gt;
* Select item&lt;br /&gt;
* Right click in orthoview and select &#039;&#039;Create Entity&#039;&#039; then &amp;lt;code&amp;gt;entity func_static&amp;lt;/code&amp;gt;&lt;br /&gt;
* Position it where you wish on your door.&lt;br /&gt;
* To synchronize this with your particular door you need to add the property &#039;&#039;bind&#039;&#039; and the individual door name to the brush entity. To do this...&lt;br /&gt;
** Select the model door.&lt;br /&gt;
** In the entity inspector, select the &#039;&#039;name&#039;&#039; line&lt;br /&gt;
** Select the bottom line in the input box &#039;&#039;below&#039;&#039; the properties window.&lt;br /&gt;
** Copy the name&lt;br /&gt;
** Deselect the door with {{key-esc}}&lt;br /&gt;
** Select the brush entity&lt;br /&gt;
** Add a property &amp;quot;bind&amp;quot; to it.&lt;br /&gt;
** Change the value of the property by pasting in the door name&lt;br /&gt;
** Click {{check}} or press {{key-enter}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To add &#039;&#039;brush&#039;&#039; static items&#039;&#039;&#039;: knockers, hinges, static handles to a Model Door:&lt;br /&gt;
* This method is not ideal but it seems to work OK.&lt;br /&gt;
* Select the brush.&lt;br /&gt;
* Right click in orthoview and select Create Entity then &#039;&#039;atdm:mover_door_handle&#039;&#039;&lt;br /&gt;
* Position it where you wish on your door.&lt;br /&gt;
&lt;br /&gt;
To synchronize this with your particular door you need to add the property &#039;&#039;door_handle&#039;&#039; on the door, and give as the value the name of the brush you just created.&lt;br /&gt;
&lt;br /&gt;
This brush turns like a handle. To stop it:&lt;br /&gt;
&lt;br /&gt;
* Adding &#039;&#039;rotate 0 0 0&#039;&#039; or disabling the handle script won&#039;t help.&lt;br /&gt;
* Add a real working handle (as in the section above &#039;&#039;To add a working model door handle...&#039;&#039; and it must be added LAST.)&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want too see a real working handle added maybe try another tiny brush with the handle function and hide it inside the door?&lt;br /&gt;
&lt;br /&gt;
===Locking Doors===&lt;br /&gt;
&lt;br /&gt;
To lock a door check the &#039;&#039;show inherited properties&#039;&#039; in the entity inspector for a &#039;&#039;atdm:mover_door&#039;&#039; entity and you should see the &#039;&#039;locked&#039;&#039; property. Select it and in the input box below the properties you can change its value:&lt;br /&gt;
&lt;br /&gt;
* 0 = unlocked (default)&lt;br /&gt;
* 1 = locked&lt;br /&gt;
&lt;br /&gt;
If locked it will require an entity that is associated with it to be able to act as a key to unlock it.&lt;br /&gt;
&lt;br /&gt;
Currently door handles on locked doors will rotate when frobbed, they will bounce back though and the door will stay locked until unlocked.&lt;br /&gt;
&lt;br /&gt;
===Keys===&lt;br /&gt;
&lt;br /&gt;
Assigning specific keys to specific doors is simple.&lt;br /&gt;
&lt;br /&gt;
* It is recommended that you create an existing key entity. These keys have all required props, they just need to be named.&lt;br /&gt;
&lt;br /&gt;
Alternatively you can create a key from the Model Viewer and want it to be useable&lt;br /&gt;
* Make sure it has the properties:&lt;br /&gt;
 useable 1 [so it can be used by the door]&lt;br /&gt;
 frobable 1&lt;br /&gt;
 inv_name &amp;lt;unique name&amp;gt;&lt;br /&gt;
 inv_category Keys&lt;br /&gt;
 inv_target player1&lt;br /&gt;
 inv_icon guis/assets/hud/inventory_icons/&amp;lt;icon name&amp;gt;&lt;br /&gt;
 inv_stackable 0 or 1 where 1 can be used on all copies of the same key so they show as one entry in the inventory with a total.&lt;br /&gt;
&lt;br /&gt;
Add to the door the property &amp;lt;code&amp;gt;used_by&amp;lt;/code&amp;gt; with the name of the key as the value. Multiple keys can open the same door by using several &amp;lt;tt&amp;gt;used_by&amp;lt;/tt&amp;gt; spawnargs:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;used_by&amp;quot;  &amp;quot;doorkey_1&amp;quot;&lt;br /&gt;
 &amp;quot;used_by1&amp;quot; &amp;quot;doorkey_2&lt;br /&gt;
&lt;br /&gt;
==== Keys carried by AI ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So you have a door and you have a guard Ai and you want the guard to be able to open/close/lock the door but you also want the player to be able to pickpocket the key. For more info on attaching key, props etc - see [[Attaching Props to AI]].&lt;br /&gt;
&lt;br /&gt;
*&amp;quot;def_attach6&amp;quot; &amp;quot;atdm:prop_silverkey&amp;quot; //the entity to spawn - in this case a key.&lt;br /&gt;
*&amp;quot;pos_attach6&amp;quot; &amp;quot;belt_back_right&amp;quot; //where the key will spawn on the Ai.&lt;br /&gt;
*&amp;quot;name_attach6&amp;quot; &amp;quot;door_key&amp;quot; //this gives &#039;attach6&#039; arg the name &amp;quot;door_key&amp;quot; and is the name the arg &amp;quot;used_by&amp;quot; will need, eg: &amp;quot;used_by&amp;quot; &amp;quot;door_key&amp;quot;&lt;br /&gt;
*&amp;quot;set inv_name on door_key&amp;quot; &amp;quot;Door key&amp;quot; //The name the key get when the play adds it to their inventory.&lt;br /&gt;
*&amp;quot;set name on door_key&amp;quot; &amp;quot;door_key&amp;quot; //here it gets a name to be used in the map in general.&lt;br /&gt;
&lt;br /&gt;
updated by bikerdude.&lt;br /&gt;
&lt;br /&gt;
====Master Key for Testing====&lt;br /&gt;
&lt;br /&gt;
By default, ALL locks can be opened by any key named &#039;&#039;key_master&#039;&#039;. Just create a key in your map, name it &#039;&#039;key_master&#039;&#039; and it becomes a master key for use while testing. Add inv_map_start 1 to it so it is in the player inventory at game start. Remember to delete it when your mission is finished.&lt;br /&gt;
&lt;br /&gt;
===Lockpicks===&lt;br /&gt;
&#039;&#039;by Baddcog&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are two lock pick types.&lt;br /&gt;
*&#039;&#039;&#039;s&#039;&#039;&#039;=snake&lt;br /&gt;
*&#039;&#039;&#039;t&#039;&#039;&#039;=triangular&lt;br /&gt;
&lt;br /&gt;
A lock can be set with many pins. Each pin has a click sequence and each needs a designated lockpick type (see above). Keep in mind that the lockpicking in The Darkmod is much more involved than in T2 or T3. The player has to listen to sounds or watch a handle or lockbar to know when a lock is pin is picked.&lt;br /&gt;
&lt;br /&gt;
This means that authors can be very evil and really frustrate the player, in which case their missions will probably not be played. So be nice to the player and don&#039;t waste your time. Use simple locks for the most part and save complicated locks for important sections and to build tension. Don&#039;t make the player have 20 pins to pick all with different lockpicks. In most cases 1 or 2 pins will suffice and it isn&#039;t necessary to use both lockpicks on every lock.&lt;br /&gt;
Also try to include a lock lever on lockboxes or chests, door handles will rotate as the pins are being picked. This gives the player visual clues to help with the picking (and essential in noisy environments where you can&#039;t hear the clicks.)&lt;br /&gt;
IMO this system is a huge leap foward for lockpicking but also has the ability to completely frustrate the player as stated above. Keep this in mind when designing your lockpick systems.&lt;br /&gt;
&lt;br /&gt;
These props go on the door itself, or the lid of a chest, eg,&lt;br /&gt;
*&#039;&#039;&#039;lock_pins&#039;&#039;&#039; 1327&lt;br /&gt;
*&#039;&#039;&#039;lock_picktype&#039;&#039;&#039; stts&lt;br /&gt;
&lt;br /&gt;
The lock_pins property specifies how many pins each lockpicktype has.&lt;br /&gt;
The lockpick_type property specifies how many times the player has to switch picks and which pick they have to use. You can see there must always be an equal number of lock_pins and lock_picktypes specified&lt;br /&gt;
&lt;br /&gt;
So looking at the example above we have lockpick_type s(snake), t(triangular), t(triangular), and s(snake). The player will have to use these lockpicks in this order. Once the snake lockpick&#039;s pins are open the player can advance to the triangular pick and so forth.&lt;br /&gt;
5 is added to every click sequence so 5 is the minimum click pattern even if you set it to 0.&lt;br /&gt;
In the example above the lockpins specify in order which pick types have how many pins, so the s pick has 1 + 5 = 6 clicks, the t pick has 8 and so on.&lt;br /&gt;
The above is a difficult lock and to avoid annoying the player it is best only used rarely on a special lock like an important big vault door. Ordinary footlockers and common doors can be just 1 or 2 click sequences, eg, lock_pins 2 and lock_picktype t means the player uses one pick and listens for the end of one sequence of 7 clicks.&lt;br /&gt;
&lt;br /&gt;
lockpick_rotate - is placed on the door. It is the amount the visible rotating handle or pin rotates while picking. For a rotating handle or lockbar normally ignore this and leave the default. During lockpicking it oscillates and progresses to the normal full turn of the handle. Example 0 45 0.&lt;br /&gt;
&lt;br /&gt;
lockpick_translate - is placed on the door. It is the amount the visible handle or pin moves in a straight line while picking. Use this if you have eg, a lockbar that you want to move in a straight line and not rotate, eg sliding catch. Example 0 -5 0&lt;br /&gt;
&lt;br /&gt;
By default, doors are pickable. If you don&#039;t set up the above lockpick spawnargs then it can&#039;t be picked. So there is normally no need to enable lockpicking - just set up the above spawnargs. There is a &#039;&#039;pickable&#039;&#039; spawnarg set to 1 by default. If set to 0 then the door becomes unpickable. But hard to think of an application except in testing or perhaps a special custom situation where it is switched by script perhaps.&lt;br /&gt;
&lt;br /&gt;
===Open, Partially Open, or Closed Door at Game Start===&lt;br /&gt;
&lt;br /&gt;
By default, doors are closed at game start. If you want a door to be already open or partially open then do the following.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note well: Create all doors in their &#039;&#039;closed&#039;&#039; position. Adjust as follows and they will automatically be at the open position when game starts.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Already Open Rotating Door:&lt;br /&gt;
* Select the door.&lt;br /&gt;
* Select the entity inspector&lt;br /&gt;
* Check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Select the &#039;&#039;open&#039;&#039; property&lt;br /&gt;
* Edit the value to 1 in the input box below and tick the check button&lt;br /&gt;
* The door will now be fully open at game start.&lt;br /&gt;
&lt;br /&gt;
* If you want it only partly open:&lt;br /&gt;
* Make sure its &#039;&#039;open&#039;&#039; property is set to 1 as above.&lt;br /&gt;
* Right click the entity inspector and select &#039;&#039;add property&#039;&#039; &lt;br /&gt;
* Click the + sign on the left of the top line where atdm:mover_door is listed to open the folder. (if atdm:mover_door is not listed then the entity was likely changed from eg, func_static. If so, save the map and reload to update the add property list)&lt;br /&gt;
*  scroll down, select &#039;&#039;start_rotate&#039;&#039; then click {{ok}}&lt;br /&gt;
* This adds it to the property list.&lt;br /&gt;
* Now select &#039;&#039;start_rotate&#039;&#039; in the property list.&lt;br /&gt;
* Edit the bottom line of the input box &#039;&#039;below&#039;&#039; the properties window to the angle you want in the same form as described in the &#039;&#039;Rotate Direction and Open Angle&#039;&#039; section. So for example, to have a door that has a fully open default &#039;&#039;rotate&#039;&#039; value of 0 90 0 to start only half open you would give it a &#039;&#039;start_rotate&#039;&#039; value of 0 45 0. &lt;br /&gt;
* In a similar way add the property &#039;&#039;first_frob_open&amp;quot;.&lt;br /&gt;
* Set it to 1 and a partly open door should then open fully on the first frob.&lt;br /&gt;
* Set it to 0 and a partly open door should close on the first frob.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Already Open Sliding Door:&lt;br /&gt;
* Select the door.&lt;br /&gt;
* Select the entity inspector&lt;br /&gt;
* Check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Select the &#039;&#039;open&#039;&#039; property&lt;br /&gt;
* Edit the value to 1 in the input box below and click {{check}} or press {{key-enter}}&lt;br /&gt;
* The door will now be fully open at game start.&lt;br /&gt;
&lt;br /&gt;
* If you want it only partly open:&lt;br /&gt;
* Right click the entity inspector and select &#039;&#039;add property&#039;&#039; &lt;br /&gt;
* Make sure its &#039;&#039;open&#039;&#039; property is set to 1&lt;br /&gt;
* Click the + sign on the left of the top line where atdm:mover_door is listed to open the folder.&lt;br /&gt;
*  scroll down, select &#039;&#039;start_position&#039;&#039; then click OK. (if atdm:mover_door is not listed then the entity was likely changed from eg, func_static. If so, save the map and reload to update the add property list)&lt;br /&gt;
* This adds it to the property list.&lt;br /&gt;
* Now select &#039;&#039;start_position&#039;&#039; in the property list.&lt;br /&gt;
* Edit the bottom line of the input box &#039;&#039;below&#039;&#039; the properties window to the position you want in the same form as described in the &#039;&#039;Sliding (Translation) Amount and Direction&#039;&#039; section. So for example, to have a door that has a fully open default &#039;&#039;translate&#039;&#039; value of 0 50 0 to start only half open you would give it a &#039;&#039;start_position&#039;&#039; value of 0 25 0.&lt;br /&gt;
* In a similar way add the property &#039;&#039;first_frob_open&amp;quot;.&lt;br /&gt;
* Set it to 1 and a partly open door should then open fully on the first frob.&lt;br /&gt;
* Set it to 0 and a partly open door should close on the first frob.&lt;br /&gt;
&lt;br /&gt;
===Rotation Centre, Pivot, Hinge point===&lt;br /&gt;
&lt;br /&gt;
The centre of rotation of a door is at the origin point of its entity and the door rotates with reference to the orientation of that origin point, not the world map. See &#039;&#039;Rotate Direction...&#039;&#039; for more about that. This section only deals with the &#039;&#039;position&#039;&#039; of the rotation centre in the door.&lt;br /&gt;
&lt;br /&gt;
Model Door Centre of Rotation:&amp;lt;br&amp;gt;&lt;br /&gt;
The centre of rotation of a model door cannot be changed within Dark Radiant. Because a model door rotates around the centre &#039;spine&#039; of its back edge this will cause clipping (penetration into solid) as in this example (where the door is set to open to 89 degrees for clarity):&amp;lt;BR&amp;gt;[[Image:modelClipping.jpg]]&amp;lt;BR&amp;gt; So care is needed with placement. You will not normally position a door right next to a wall as in the example but against a shallow frame so clipping will barely be noticeable but either way it can be fixed. You can correct it by adding a translation (see &#039;&#039;Sliding (Translation) Directions&#039;&#039;) value of half the door width in the direction of the door handle. This will gently move the door out as it rotates to clear any solid on that side as in this diagram:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:DoorClip.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Half a door width will typically be about 2. Any &#039;attachments&#039; such as door handles will still synchronize with the door movement whether the door is rotating, sliding, or both.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Brush Door Centre of Rotation:&amp;lt;br&amp;gt;&lt;br /&gt;
The centre of rotation of a brush door &#039;&#039;can&#039;&#039; be changed. The default origin point of a brush is at its centre. Therefore a default rotating brush door will rotate around its centre when you first create it. So, mappers will commonly need to move that rotation point to a corner or even to some other offset position for example, for an openable window using the door function.&lt;br /&gt;
&lt;br /&gt;
Put simply, to move the rotation point of a brush door you need to move the entity origin relative to the brush(es.)&lt;br /&gt;
&lt;br /&gt;
Moving the entity origin (centre of rotation) relative to a brush door:&lt;br /&gt;
&lt;br /&gt;
* Select the brush door&lt;br /&gt;
* Select &#039;&#039;Vertices mode&#039;&#039; (default shortcut key is {{key|name=V}} or button on top toolbar &#039;Select Vertices&#039;)&lt;br /&gt;
* Drag the door&#039;s entity origin to the point where you want the door to rotate. This should be on the corner on the leading edge side (the side to where the door is opening.) to avoid clipping as in this diagram....&lt;br /&gt;
[[Image:getCorner.jpg]]&lt;br /&gt;
* You should now find that door rotates around that point.&lt;br /&gt;
&lt;br /&gt;
===Rotate Direction and Open Angle===&lt;br /&gt;
&lt;br /&gt;
By default, rotating doors open anti-clockwise (viewed from above) by 90 degrees from the start orientation. If you want to change this edit the &#039;&#039;rotate&#039;&#039; property in the entity inspector. Don&#039;t confuse this &#039;&#039;rotate&#039;&#039; property with the &#039;&#039;rotation&#039;&#039; property. In the entity inspector remember that to see the inherited rotate property you must check the box &#039;Show inherited properties&#039;.&lt;br /&gt;
&lt;br /&gt;
The three values shown in the rotate property are degrees from the closed position around Y Z X (absolute map axes Front, Top, Side views in DR&#039;s ortho view.)&lt;br /&gt;
&lt;br /&gt;
* Positive Y = Open clockwise (Dark Radiant grid front view, looking north)&lt;br /&gt;
* Negative Y = Open anti-clockwise (Dark Radiant grid front view, looking north)&lt;br /&gt;
&lt;br /&gt;
* Positive Z = Open anti-clockwise (Dark Radiant grid top view, looking down)&lt;br /&gt;
* Negative Z = Open clockwise (Dark Radiant grid top view, looking down)&lt;br /&gt;
&lt;br /&gt;
* Positive X = Open anti-clockwise (Dark Radiant grid side view, looking west)&lt;br /&gt;
* Negative X = Open clockwise (Dark Radiant grid side view, looking west)&lt;br /&gt;
&lt;br /&gt;
There is a problem when you come to rotations that are not around the main Y Z X axes of the map, for instance a drawbridge that lowers down to the south east. You might think you can combine Y Z X values to get the result you want - and this can be done (for south east use 45 45 90) but it is a bit of a kludge and the drawbridge twists eccentrically as it lowers (though it arrives correctly!)&lt;br /&gt;
&lt;br /&gt;
The values are in the range -179 to +180. Positive values give an anti-clockwise opening rotation (looking down from above) and negative values give a clockwise opening rotation. The value 180 is unique in that it continues in an anti-clockwise rotation when closing rather than returning clockwise so might be used if you can think of some object that might need such a motion when frobbed!&lt;br /&gt;
&lt;br /&gt;
Edit the rotate value by selecting it and using the input box at the bottom and clicking the check(tick) button. That will change the angle the door will open to. Note that the line with the original default of 0 90 0 will still be there but your new entry will be added on a separate line and that is the one that will work in the game. CAUTION: when adjusting later make sure you have your new line selected and not the original! If you do it will appear to change but your first setting will remain unaltered.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
* 0 90 0 = Opens anti-clockwise round the entity&#039;s &#039;vertical&#039; to 90 degrees - typical default vertical door.&lt;br /&gt;
* 0 0 90 = Lowers a drawbridge from the entity &#039;vertical&#039; to horizontal.&lt;br /&gt;
* 0 0 -45 = Opens clockwise by 45 degrees viewed from the east side. This might suit a skylight in a sloping roof.&lt;br /&gt;
&lt;br /&gt;
&#039;rotate&#039; cannot be combined with translate motions (see [[#Sliding (Translation) Amount and Direction]]) in one door; you need to bind one door to another and link they by targetting one to the other. By that means you can produce exotic and useful motions. A door opening against an upward-sloping floor can thus have a &#039;&#039;lifting hinge&#039;&#039; and raise up slightly to clear the floor; a door can rotate towards you and slide back to one side very effectively.&lt;br /&gt;
&lt;br /&gt;
===Sliding (Translation) Amount and Direction===&lt;br /&gt;
&lt;br /&gt;
By default a Dark Mod door will rotate open. For most sliding doors you want to stop them rotating as well as make them slide. You cannot delete (remove) the &#039;&#039;rotate&#039;&#039; property - you have to set the &#039;&#039;rotate&#039;&#039; property to 0 0 0 to stop a door rotating (see &#039;&#039;Rotate Direction and Open Angle&#039;&#039;.)&lt;br /&gt;
&lt;br /&gt;
Now edit the &#039;&#039;translate&#039;&#039; property value by selecting it (remember to have inherited properties box checked) and using the input box at the bottom and clicking the check(tick) button. That will change the distance the door will slide to. Note that the line with the original default of 0 0 0 will still be there but your new entry will be added on a separate line and that is the one that will work in the game. CAUTION: when adjusting later make sure you have your new line selected and not the original! If you do it will appear to change but your first setting will remain unaltered.&lt;br /&gt;
&lt;br /&gt;
Typically (but not always) you will want your sliding door to slide the width of the door. The three values in the translate property by default are 0 0 0 and are X Y Z &#039;&#039;absolute map&#039;&#039; values (irrespective of door orientation) where:&lt;br /&gt;
&lt;br /&gt;
* Positive X = Slide East (Right side of Dark Radiant grid in top view)&lt;br /&gt;
* Negative X = Slide West (Left side of Dark Radiant grid in top view)&lt;br /&gt;
* Positive Y = Slide North (top of Dark Radiant grid in top view)&lt;br /&gt;
* Negative Y = Slide South (bottom of Dark Radiant grid in top view)&lt;br /&gt;
* Positive Z = Slide Up (Top of Dark Radiant grid in side views)&lt;br /&gt;
* Negative Z = Slide Down (Bottom of Dark Radiant grid in side views)&lt;br /&gt;
&lt;br /&gt;
So for a 50 unit wide door you want to slide fully to the east you would use 50 0 0 for the translate property values. A 100 unit portcullis sliding vertically up would need 0 0 100 to be fully raised.&lt;br /&gt;
&lt;br /&gt;
=== Doors Collision/Push Behaviour ===&lt;br /&gt;
Doors are pushing all entities by default, except for the player. Doors will also stop moving when anything blocks their movement. However, this default behaviour can be changed by setting the according spawnargs:&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;push_player&#039;&#039;&#039; to &#039;&#039;&#039;1&#039;&#039;&#039; to let the player be pushed by this door:&lt;br /&gt;
 &amp;quot;push_player&amp;quot;  &amp;quot;1&amp;quot;  // Push the player too (default is off)&lt;br /&gt;
&lt;br /&gt;
By default &#039;&#039;&#039;stop_when_blocked&#039;&#039;&#039; is set to 1 and if a door is blocked by an entity then even if the entity is removed afterwards, the door stays still. The next frob will close the door.&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;stop_when_blocked&#039;&#039;&#039; to &#039;&#039;&#039;0&#039;&#039;&#039; to prevent the door from ending the opening sequence when anything blocks its way. It will still pause - but continue to open if the block is removed.&lt;br /&gt;
 &amp;quot;stop_when_blocked&amp;quot;   &amp;quot;0&amp;quot;  // door keeps moving after being blocked (default is off)&lt;br /&gt;
With this setting, doors will still stop at blocking entities (the player, for instance), but will continue to move when the entity clears the way.&lt;br /&gt;
&lt;br /&gt;
There is another spawnarg which stops a door pushing a moveable. Apply this to the &#039;&#039;moveable&#039;&#039; not the door...&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;notPushable&amp;quot;   &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Door Sounds===&lt;br /&gt;
&lt;br /&gt;
The sound of doors opening and closing is set in the snd_open and snd_close properties. You can silence them by setting the following properties as shown:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_open nosound&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;snd_close nosound&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t just use a dash - as it seems to cause a sound of its own.&lt;br /&gt;
&lt;br /&gt;
The above sounds are triggered as the door begins to open (eg, unlatch sound) and when it finally closed (eg, slam.) For special doors that need an on-going sound, eg, a big stone slab that moves slowly, then use:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_move&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_locked&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The sound played when a player tries to open a locked door.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_unlock string&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The sound played when a player unlocks a door.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sound Propagation through Doors and Doorways===&lt;br /&gt;
&lt;br /&gt;
The sound volume reduction to the player (ie, the sound the player hears) is fixed and constant in a cvar which adds a distance factor to the original sound. It is recommended that you do not change that because it will affect other FMs. Currently there is no way to change the way that sound to the player is reduced through doors and doorways.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sound propagation to AI, eg, impact sounds or guard yells is treated separately:&lt;br /&gt;
&lt;br /&gt;
Sound propagation to AI relies on visportals. For details study [[Sound Propagation: Part 1]] and [[Sound Propagation: Part 2]] as well as [[Visportals]] This tutorial will just cover the relevant sound and sound propagation &#039;&#039;properties&#039;&#039; of doors. If you set the &#039;&#039;show inherited properties&#039;&#039; box in the entity inspector you can see them as described here.&lt;br /&gt;
&lt;br /&gt;
Remember, the following have no effect on what the player hears through a door or doorway.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;loss_open&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Drop in sound volume in dB propagated to AI (not player) when going through an open door. (default 1dB)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;loss_closed&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Drop in sound volume in dB propagated to AI (not player) when going through a closed door. (default 15dB) You would want to set this very high to block all sound with a thick door but very low for a barred gate for example.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;loss_double_open&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Drop in sound volume in dB propagated to AI (not player) when going through double doors when only one is open. (default 1dB)&lt;br /&gt;
&lt;br /&gt;
There are also various sound properties for lockpicking:&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;snd_lockpick_pin_1 through 14&#039;&#039; and &#039;&#039;snd_lockpick_pin_success&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Speed of Door Opening and Closing===&lt;br /&gt;
&lt;br /&gt;
Rotating Door Speed:&amp;lt;br&amp;gt;&lt;br /&gt;
At the time of writing, the time a rotating door takes to open or close is set in the &#039;&#039;move_time&#039;&#039; property whatever its maximum open angle. So with rotation set at say 150 degrees the door just opens faster than at say 80 degrees. This is likely to be changed to a constant angular velocity so check to see if there a new property added if the following no longer works. The problem is that if an interruptable (see Extra Notes) door is frobbed while in motion it stops; another frob will reverse the motion - so even if the door is only open a crack it will still take the full time to close and vice versa.&lt;br /&gt;
&lt;br /&gt;
To change the time a rotating door takes to open or close, make sure the door is selected then...&lt;br /&gt;
&lt;br /&gt;
* Right click the entity inspector and check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Scroll down, select &#039;&#039;move_time&#039;&#039;&lt;br /&gt;
* Edit the second line of the input box &#039;&#039;below&#039;&#039; the properties window to the time you want.&lt;br /&gt;
* The time is in seconds and decimal fractions can be used.&lt;br /&gt;
* The default is 1 second and if set to this then the door opens and closes in one second whatever the maximum open angle, great or small.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sliding Door Speed:&amp;lt;br&amp;gt;&lt;br /&gt;
The speed of a sliding door is set in the &#039;&#039;translate_speed&#039;&#039; property. To add this, make sure the door is selected then...&lt;br /&gt;
&lt;br /&gt;
* Right click the entity inspector and check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Scroll down, select &#039;&#039;translate_speed&#039;&#039;&lt;br /&gt;
* Edit the second line of the input box &#039;&#039;below&#039;&#039; the properties window to the speed you want.&lt;br /&gt;
* The speed is in Dark Radiant grid units per second.&lt;br /&gt;
* The default is 0 and if set to this then the door slides open in one second whatever the distance, great or small.&lt;br /&gt;
* CAUTION: If you later change the door back to a rotating door then delete the &#039;&#039;translate_speed&#039;&#039; property or ensure it is set to 0 as (at the time of writing but this will be fixed) a bug makes rotating doors open and close instantly. (Note: you can still mix sliding with rotating but check - this bug might only be if &#039;&#039;translate&#039;&#039; is set to 0 0 0)&lt;br /&gt;
&lt;br /&gt;
===Visportals and Doors===&lt;br /&gt;
&lt;br /&gt;
A visportal face surrounded by solid at its edges and in contact with a door is closed when the door is closed and enabled when the door is open. In most cases you will place a visportal in contact with a working door unless you can see through the door (such as a true glass door or barred gate.) For full details see [[Visportals]].&lt;br /&gt;
&lt;br /&gt;
==Auto-Closing/Opening Doors==&lt;br /&gt;
Doors that automatically close after being open for some time are easy to setup: Each frobmover entity supports these spawnargs:&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;auto_close_time&amp;quot;:Set this to something &amp;gt;= 0 to let the mover automatically close (again) after this time when being fully opened (measured in seconds). Defaults to -1, which means &#039;do not autoclose&#039;. The event is also activated when the mover starts at the open position at map start.&lt;br /&gt;
;&amp;quot;auto_open_time&amp;quot;:&amp;quot;Set this to something &amp;gt;= 0 to let the mover automatically open (again) after this time when being fully closed (measured in seconds). Defaults to -1, which means &#039;do not autoopen&#039;. The event is also activated when the mover starts at the closed position at map start.&lt;br /&gt;
&lt;br /&gt;
Old text:&lt;br /&gt;
&lt;br /&gt;
Note that auto-closing doors and AI closing doors behind them, is very much work in progress at the time of writing, so for now, this is another method that works. Check first if true AI closing of doors is working yet before bothering with this!&lt;br /&gt;
&lt;br /&gt;
I have one door that I particularly want the AI to close as there is a bit of frame lag inside if not. So I set this up and it works good as an auto-closing door - not as good as a true AI closing door as it will auto close when the player goes through as well but it does look very effective to see AI going through and closing the door behind them. Not tested exhaustively so I don&#039;t know if there could be any downside. Here&#039;s what to do....&lt;br /&gt;
&lt;br /&gt;
First a quick summary to make it more clear:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;A trigger_relay is used both as a relay AND carries a stim. We put the trigger_relay with its stim in the path of the open door. The door has a response property. When it opens and contacts the stim its response is to send a signal back to the relay. The relay pauses then closes the door...&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* First, optionally give your door a suitable name like autodoor1, whatever.&lt;br /&gt;
* Copy that name to the clipboard.&lt;br /&gt;
&lt;br /&gt;
Next we need a relay with a delay:&lt;br /&gt;
&lt;br /&gt;
* Create entity &amp;gt; darkmod &amp;gt; trigger_relay&lt;br /&gt;
&lt;br /&gt;
* Place it roughly at the position the door will be at when open and to be on the safe side 3/4th of the way to the far end of the door (not the hinge end) to give max distance from the close door.&lt;br /&gt;
&lt;br /&gt;
* Add the property &#039;target&#039; and paste in the door name you just copied.&lt;br /&gt;
&lt;br /&gt;
* Give the relay itself a name, eg, autoDoor_relay_1, and copy that name to the clipboard, you&#039;ll need that too in a bit.&lt;br /&gt;
&lt;br /&gt;
* Add the property delay and the value 3 - this is the delay in seconds before the door will close; 3 seems about right but 2 might be worth a try because to that 3 is added a random value between 0 to 0.5 seconds from the Time Interval we entered for the stim firings.&lt;br /&gt;
&lt;br /&gt;
* Add the property &#039;wait&#039; and the value 3. This is the time before it can work again in seconds. If you set it too low then in theory the door might trigger again but in this situation I don&#039;t think it&#039;s possible. Too long, eg, one minute, and it won&#039;t work if the AI goes back through the door before then. If this value is -1 then the whole thing will only work ONCE so might be used for an AI who goes through once, closes it behind him, but you don&#039;t want it to be an autodoor thereafter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That&#039;s the relay, now we add a stim to it:&lt;br /&gt;
&lt;br /&gt;
* Still with the trigger relay selected, go to {{menu|Entity|Stim/Response}}&lt;br /&gt;
&lt;br /&gt;
* Custom stim tab.&lt;br /&gt;
&lt;br /&gt;
* Click Add stim type, select the new custom stim type you just made at the bottom of the list and type in eg, autoDoorStim at top right in the input box.&lt;br /&gt;
&lt;br /&gt;
* Click the stim tab and the little drop down arrow against the &#039;type&#039; selector at bottom left and you should see your new custom stim name. Select it.&lt;br /&gt;
&lt;br /&gt;
* Select the new autoDoorStim in the list and on the right you need only type in the radius box 15.0 There is quite a lot of room for error. I had it working on 10 and also on 25. The value should be less than the distance to the closed door else it will trigger open! But no so small that the door might not reach it.&lt;br /&gt;
&lt;br /&gt;
* Select the check box for Time Interval and enter 500 (millisecs.) This is so it doesn&#039;t keep firing more frequently than is necessary. This stim will be firing all through your mission whether the door is used or not so if you had dozens of these then maybe it would affect performance. Too big a number and there may be a long delay before the door shuts - but it will be random depending on the next time the stim happens to fire. We&#039;ll control the delay we want more precisely later.&lt;br /&gt;
&lt;br /&gt;
* Click {{ok}} to confirm it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That&#039;s the stim set up, now for the response to it which is put on the door....&lt;br /&gt;
&lt;br /&gt;
* Select the doorm, then use {{menu|Entity|Stim/response}} and select the response tab.&lt;br /&gt;
&lt;br /&gt;
* Click the little drop down arrow against the &#039;type&#039; selector at bottom left and you should see your new custom stim name. Select it.&lt;br /&gt;
&lt;br /&gt;
* Right click in the big &#039;&#039;Response Effects&#039;&#039; box on the bottom right of the panel.&lt;br /&gt;
&lt;br /&gt;
* Add New Effect and you should get a default &#039;Activate Response&#039; response added to the list. Double click it.&lt;br /&gt;
&lt;br /&gt;
* In the Effect selector at the stop select &#039;Trigger&#039;&lt;br /&gt;
&lt;br /&gt;
* in the Target box, paste in the name of the relay you copied or you can select it from the list at the little arrow.&lt;br /&gt;
&lt;br /&gt;
* Leave the Activator box empty.&lt;br /&gt;
&lt;br /&gt;
* Click {{apply}} and then {{ok}} on the main S &amp;amp; R panel bottom right.&lt;br /&gt;
&lt;br /&gt;
It should now work. No need to wait for an AI, just frob the door and watch it close itself. If not, check the position of the stim brush is close to where the door stops when open.&lt;br /&gt;
&lt;br /&gt;
==AI Door management==&lt;br /&gt;
&lt;br /&gt;
See also [[#Keys_carried_by_AI]] above.&lt;br /&gt;
&lt;br /&gt;
By default AI will open doors and close them behind them. Here are some spawnargs the mapper can use to modify that behaviour:&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;ai_should_not_handle&amp;quot; :If set to 1, AI will not attempt to handle it and add it to the forbidden areas when closed (so that it doesn&#039;t try to path through). They might still walk through the door when it is open though. Useful if you have some special use door that you don&#039;t want the AI to operate.&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;ai_should_not_close&amp;quot; :If set to 1, AI will not close the door behind them unless it obstructs them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To get AI to unlock/relock specific doors there are two methods currently:&lt;br /&gt;
&lt;br /&gt;
1. add the following spawnarg/value to the AI:&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;can_unlock1&amp;quot; &#039;&#039;&amp;lt;doorname&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do NOT use can_unlock_1.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For additional doors on the same AI use &#039;&#039;can_unlock2 doorname&#039;&#039; etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. In the editor position an actual key that works for that door on the AI and also add to the key bind &amp;lt;AIname&amp;gt; and also bindToJoint LeftHips_Dummy (see other joints names elsewhere in wiki.) Currently, if the player pickpockets the key then the AI seeks an alternate route but otherwise does nothing (?) This may be upgraded in the future to better strategies.&lt;br /&gt;
&lt;br /&gt;
3. There is the possibility in the future of an additional method which would just use special attach spawnargs to make the above easier. The key would spawn at the correct position at game start. Watch this space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Door handling positions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is also possible to set custom door handling positions for the AI. This is especially useful when the standard routine that lets the AI choose their standing positions while opening and closing the door fails, leaving them circling around in front of the door helplessly.&lt;br /&gt;
&lt;br /&gt;
Place a movers &amp;gt; atdm:door_handling_position entity where you want the AI to stand while opening/closing the door from this side.(it can be found in the movers folder in the entity chooser)&lt;br /&gt;
&lt;br /&gt;
On the door, you need to set the spawn arg &amp;quot;door_handle_position&amp;quot; &amp;quot;name_of_door_handling_position&amp;quot; You can also place a door handling position on each side of the door, the AI should automatically choose the right one. In this case, you need to set spawn args with &amp;quot;door_handle_position_1&amp;quot; etc and the corresponding names of the door handling position entities on the door.&lt;br /&gt;
&lt;br /&gt;
The door handling positions can also carry spawn args that define the behaviour of the AI, which are useful for example for doors that can only be openend or locked from one side:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_open&amp;quot;&#039;&#039;&#039; If set to true, the AI will not try to open the door from this side (but still walk through when the door is already open)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_close&amp;quot;&#039;&#039;&#039; If set to true, the AI will not attempt to close the door from this side&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_unlock&amp;quot;&#039;&#039;&#039; If set true, the AI will not be able to unlock the door from this side, but still use it when it is not locked.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_lock&amp;quot;&#039;&#039;&#039; If this is set true, the AI will not lock the door from this side.&lt;br /&gt;
&lt;br /&gt;
==Doors as Triggers==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;by Ishtvan &amp;amp; greebo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Doors (or any binary frob mover, buttons, levers, etc) now have the option to trigger their target on closing or opening. (For definition purposes, a button is defined as &amp;quot;closed&amp;quot; in the state when it starts out and &amp;quot;open&amp;quot; in the state you press it down to. I know that&#039;s a little non-intuitive, but it came from deriving from doors).&lt;br /&gt;
&lt;br /&gt;
New spawnargs on frob movers:&lt;br /&gt;
;&amp;quot;trigger_on_open&amp;quot; :If set to 1, this binary mover will trigger its targets when it starts out completely closed and is opened.&lt;br /&gt;
;&amp;quot;trigger_when_opened&amp;quot;:If set to 1, this binary mover will trigger its targets when it is completely opened. Code defaults to 0.&lt;br /&gt;
;&amp;quot;trigger_on_close&amp;quot;:If set to 1, this binary mover will trigger its targets when it completely closes after being open.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Skins: A Wide Variety of Door Textures==&lt;br /&gt;
&lt;br /&gt;
This is to remind you that as with many Dark Mod models, there is a wide range of extras skins (textures) available for door models. There are now several basic door entities of different sizes so choose your size first. Then enter the spawnarg: skin with any temporary value. Now select it and click the skin button at the bottom of Dark Radiant&#039;s Entity Inspector and you will find a large of range of skin textures from which to select to give you a choice of appearances for your door.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Extra Notes==&lt;br /&gt;
The property &#039;&#039;interruptable&#039;&#039; determines whether a door can be stopped by frobbing while it is opening or closing. So by frobbing then frobbing again, the player can open a door to any position, eg, slightly ajar to peek through.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;func_darkmod_door&#039;&#039; is no longer used (just in case you come across it in the Dark Mod forums or wiki.) The Doom func_door is still available but for Dark Mod, but &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; is the entity to use.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Conversion_of_Game_Units&amp;diff=12700</id>
		<title>Conversion of Game Units</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Conversion_of_Game_Units&amp;diff=12700"/>
		<updated>2011-04-12T14:49:12Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: I removed my tip section because it was totally wrong&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Things-To-Remember|1=1.1 Doom units = 1 inch}}&lt;br /&gt;
&lt;br /&gt;
See also: [[Limits, Max, Min, Stats, etc]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Blender ==&lt;br /&gt;
To match Blender&#039;s grid with the Radiant grid, go to &amp;quot;View&amp;quot;-&amp;gt;&amp;quot;View Properties&amp;quot;-&amp;gt;&amp;quot;Grid:Spacing&amp;quot; and set it to &#039;&#039;&#039;10&#039;&#039;&#039;. This matches the DarkRadiant grid set to &amp;quot;1&amp;quot;. Usually it&#039;s better to just turn on the edge length rendering: (Buttons view: &#039;&#039;&#039;Mesh Tools 1 &amp;gt; Edge Length&#039;&#039;&#039;) to see how large the objects really are.&lt;br /&gt;
&lt;br /&gt;
== Discussion notes ==&lt;br /&gt;
&lt;br /&gt;
{{Original_Reference|Fingernail, Ishtvan, Demigod|1774}}&lt;br /&gt;
&lt;br /&gt;
* 1 DromEd unit is roughly 1 foot.&lt;br /&gt;
* 1 DromEd unit is roughly 12 UnrealEd units.&lt;br /&gt;
* 1 Doom Unit is approximately an inch.&lt;br /&gt;
&lt;br /&gt;
Demigod found that 90 doom units = 8 dromed units. It may feel slightly to small height wise but in third person looks spot on.&lt;br /&gt;
&lt;br /&gt;
The average dromed door being 8 by 4 units or 90/45 doom3 units. All the conversion I&#039;ve done on this map so far uses 90/8*dromedsize = doom3 size.&lt;br /&gt;
&lt;br /&gt;
Note by Ishtvan:&lt;br /&gt;
* 1 Doom unit is supposed to be exactly 1 inch (I&#039;ve seen in the code where it says &amp;quot;Doom to meters: 0.0254&amp;quot;). &lt;br /&gt;
* 1 DromEd unit is I guess approximately 1 foot, so it should be approximately 12 Doom units to 1 DromEd unit.&lt;br /&gt;
&lt;br /&gt;
Note by Springheel:&lt;br /&gt;
* Despite what it says in the code, the agreed upon standard is that 1.1 Doom units basically equals 1 inch. This and looks best in game.&lt;br /&gt;
&lt;br /&gt;
This scale makes 1 Doom unit equal to 2.309 cm.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=AI_Relations_(Editing)&amp;diff=12484</id>
		<title>AI Relations (Editing)</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=AI_Relations_(Editing)&amp;diff=12484"/>
		<updated>2011-03-10T08:53:03Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Changing Team Relationship Info in the Editor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Original_Reference|Ishtvan|1636}}, &#039;&#039;additions by greebo &amp;amp; fidcal 2009-03-13&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==AI Types (Teams)==&lt;br /&gt;
&lt;br /&gt;
Different AI types are defined by their &#039;&#039;&#039;&#039;&#039;team&#039;&#039;&#039;&#039;&#039; property. Put simply, AI on one team will generally be friendly to each other and antagonistic to AI on some other teams and tolerate yet others. Some AI teams are passive and will flee; others will attack. These are the default values for the &#039;&#039;&#039;&#039;&#039;team&#039;&#039;&#039;&#039;&#039; property and their team type:&lt;br /&gt;
&lt;br /&gt;
* 0 = player&lt;br /&gt;
* 1 = builders&lt;br /&gt;
* 2 = city watch, houseguards&lt;br /&gt;
* 3 = nobility, commoners&lt;br /&gt;
* 4 = inventors/engineers&lt;br /&gt;
* 5 = street people, beggars&lt;br /&gt;
* 6 = criminals&lt;br /&gt;
* 7 = pagans&lt;br /&gt;
* 8 = mages&lt;br /&gt;
* 9 = revenants, zombies, skeletons&lt;br /&gt;
* 10 = ghosts&lt;br /&gt;
* 11 = werebeasts&lt;br /&gt;
* 12 = spiders &amp;amp; spider queen&lt;br /&gt;
* 13 = belchers&lt;br /&gt;
* 14 = rats &amp;amp; other passive animals&lt;br /&gt;
* 15 = elementals&lt;br /&gt;
* 16 = steambots&lt;br /&gt;
&lt;br /&gt;
Mappers can change the team of individual AI entities by setting the &#039;&#039;team&#039;&#039; property to a new value but this is generally for special situations where for example, an individual(s) from one team is meant to have &#039;joined&#039; another group. But to change the relationship &#039;&#039;between&#039;&#039; teams, eg, two normally friendly teams become enemies or vice versa, see the following sections.&lt;br /&gt;
&lt;br /&gt;
== Definition of Relationship Types ==&lt;br /&gt;
&lt;br /&gt;
The three types of relationships are &#039;&#039;Friends, enemies, and neutrals&#039;&#039;. When assigning relations they take the values 1, -1, and 0.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;1: Friends&#039;&#039;&#039;&#039;&#039; will&lt;br /&gt;
** come to the aid of another friend who is alerted.&lt;br /&gt;
** commence searching or attacking in that friend&#039;s vicinity or flee depending on AI type.&lt;br /&gt;
** Be alerted if finding a body of a friend.&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;-1: Enemies&#039;&#039;&#039;&#039;&#039; will&lt;br /&gt;
** Attack other enemies they become aware of.&lt;br /&gt;
** Ignore other enemy and neutral bodies&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;0: Neutrals&#039;&#039;&#039;&#039;&#039; will&lt;br /&gt;
** ignore calls of distress from those they are neutral to.&lt;br /&gt;
** Ignore all bodies they are neutral to.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Default Relationships ==&lt;br /&gt;
Even if you&#039;re starting your map from scratch, at map start the game will always load a set of default relationships from the entityDef &#039;&#039;&#039;atdm:team_relations_default&#039;&#039;&#039;. Any relationships not defined in there are automatically made enemies &#039;&#039;between&#039;&#039; teams and friends &#039;&#039;within&#039;&#039; teams (members of Team 2 are friendly to other members of Team 2).&lt;br /&gt;
&lt;br /&gt;
In addition, any relations defined within &#039;&#039;&#039;atdm:team_relations_default&#039;&#039;&#039; work both ways. So if Team 1 is set to regard Team 2 as friendly then Team 2 also regards Team 1 as friendly. &#039;&#039;&#039;&#039;&#039;Note that this only true for these definitions that are read in from the default file and not for any custom definitions.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can view this set by opening the &amp;lt;tt&amp;gt;tdm_team_relations.def&amp;lt;/tt&amp;gt; file, but &#039;&#039;&#039;do not alter&#039;&#039;&#039; these values. See the next section about how to specify custom team relations.&lt;br /&gt;
&lt;br /&gt;
Here is a summary of default Dark Mod team relationships:&lt;br /&gt;
* All are friendly to others within their own team.&lt;br /&gt;
* Builders are friends to &#039;normal&#039; humans but neutral to beggars, criminals, pagans, mages.&lt;br /&gt;
* Guards are friends to &#039;normal&#039; humans, pagans, and mages but neutral to beggars, criminals.&lt;br /&gt;
* Other &#039;normal&#039; humans are friends back to builders and guards&lt;br /&gt;
* Beggars are neutral to all including the player but not monsters.&lt;br /&gt;
* Criminals, pagans, and mages are neutral to all except the player and monsters.&lt;br /&gt;
* All monster teams are neutral to each other.&lt;br /&gt;
* Rats and any other passive animals are neutral to all.&lt;br /&gt;
* Elementals are enemies of all.&lt;br /&gt;
&lt;br /&gt;
== Changing Team Relationship Info in the Editor ==&lt;br /&gt;
The default Dark Mod team relationships cover normal situations so the mapper usually need do nothing about them. In special situations you might need to change relationships between teams. This can be done both at map start and dynamically (see [[#Changing Relationships during the Game]]) changed during play.&lt;br /&gt;
&lt;br /&gt;
To specify changes to the default relationships at the start of your own mission, create an entity &#039;&#039;&#039;internal &amp;gt; atdm:team_relations&#039;&#039;&#039; in your map. (A small rectangular entity will show up.) Override certain default relationships by adding spawnargs to this entity in the following way:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;rel 0,2&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The left-hand key holds a pair of numbers defining the team numbers the relationship refers to, the right-hand value holds the type of relationship. Read this spawnarg like this: &lt;br /&gt;
 &#039;&#039;Team &#039;&#039;&#039;0&#039;&#039;&#039; considers Team &#039;&#039;&#039;2&#039;&#039;&#039; as &#039;&#039;&#039;friendly&#039;&#039;&#039;.&#039;&#039; &lt;br /&gt;
As you might suspect, the right-hand value has the following convention:&lt;br /&gt;
* Negative (value &amp;lt; 0): &#039;&#039;&#039;hostile&#039;&#039;&#039;&lt;br /&gt;
* 0 is &#039;&#039;&#039;neutral&#039;&#039;&#039;&lt;br /&gt;
* Positive (value &amp;gt; 0): &#039;&#039;&#039;values&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Important|headline=Important|text=The above spawnarg does &#039;&#039;&#039;not&#039;&#039;&#039; imply that team 2 regards team 0 as friendly too. This has to be specified explicitly, defining the asymmetric matrix element.}}&lt;br /&gt;
To define the relationship for the reverse (team 2 =&amp;gt; team 0), add a spawnarg like this:&lt;br /&gt;
 &amp;quot;rel 2,0&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
Note that it is indeed possible to define a different relationship for 0 =&amp;gt; 2 than for 2 =&amp;gt; 0. Also, it&#039;s possible to define the relationship between members within a team itself, like &lt;br /&gt;
 &amp;quot;rel 2,2&amp;quot; &amp;quot;-1&amp;quot;&lt;br /&gt;
This lets members of team 2 consider all members of the same team as hostile (see [[#Why change relations within a team?]]&lt;br /&gt;
&lt;br /&gt;
One small note about the &#039;&#039;&#039;atdm:team_relations&#039;&#039;&#039; entity: this entity will pass its spawnargs to the relationship manager at spawn time and remove itself immediately afterwards, so that you don&#039;t have an unnecessary entity floating around your map.&lt;br /&gt;
&lt;br /&gt;
== Why change relations &#039;&#039;within&#039;&#039; a team? ==&lt;br /&gt;
It might seem weird to define a team&#039;s relationship with itself by setting &amp;quot;rel 1,1&amp;quot; to something, but later on we might want to have a &amp;quot;rogue team,&amp;quot; like beasts that attack everyone, even other members of the &amp;quot;beast&amp;quot; team (eg, a cannibalistic predator or something). Also, the team&#039;s relationship with itself can be thought of as &amp;quot;morale,&amp;quot; and we can maybe check this number to see how likely they are to come to each other&#039;s aid in combat and stuff like that.&lt;br /&gt;
&lt;br /&gt;
Just to emphasize, you don&#039;t normally change the default friendliness of team members for each other but only in very special situations. If you want team X &amp;quot;every man for himself&amp;quot; and attack its own members, set &amp;quot;rel X,X&amp;quot; explicitly to a negative value.&lt;br /&gt;
&lt;br /&gt;
== Changing Relationships during the Game ==&lt;br /&gt;
To let relationships change during runtime, you can use triggers or scripts. There is a trigger entity called &#039;&#039;&#039;target_tdm_setrelations&#039;&#039;&#039; which can hold the same type of relationship spawnargs as described above. To activate these settings, just trigger this entity. Note that you can even trigger this entity multiple times, so you can re-use it, if you ever wanted to.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re switching teams to friendly, remember to define both directions of the relationship on these types of entities (&amp;quot;0,2&amp;quot; as well as &amp;quot;2,0&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== What happens if a Team is not mentioned at all? ==&lt;br /&gt;
If an AI is present in the map (or maybe is spawned by script later during the game), whose team is not mentioned in the matrix (like, say, team 60), the relationship code will handle this gracefully and consider this team as hostile to all the other teams. Still, members of team 60 are friendly to all other members of team 60 by default.&lt;br /&gt;
&lt;br /&gt;
== Debugging Relationships ==&lt;br /&gt;
Use the following console command to dump the current values of the relationship matrix to the console:&lt;br /&gt;
 tdm_ai_rel_print&lt;br /&gt;
This will produce a rather long list, so you might want to use the &amp;lt;tt&amp;gt;condump&amp;lt;/tt&amp;gt; command to write the console output to a file for later studying.&lt;br /&gt;
&lt;br /&gt;
Also, watch out for console warnings during map start, which might indicate syntax errors of your spawnargs. Finally, it&#039;s also possible to use the log file. Activate the AI log class to see any messages coming from the relationship code.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[AI Relations (Scripting)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:AI]]&lt;br /&gt;
[[Category:Editing]]&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Grass_Edges&amp;diff=12430</id>
		<title>Grass Edges</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Grass_Edges&amp;diff=12430"/>
		<updated>2011-02-22T19:07:49Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Basic grass edge for all three grass types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Introduction===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;written by Fidcal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is about the grass edges, patches, and paths textures in update 1.03. &lt;br /&gt;
&lt;br /&gt;
These are all textures under nature &amp;gt; grass &amp;gt; grass_edge.&lt;br /&gt;
&lt;br /&gt;
I&#039;ve not done prefabs at this time and I&#039;m not sure it&#039;s worth it. The final versions consist of three types:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Basic grass edge for all three grass types===&lt;br /&gt;
&lt;br /&gt;
This is an endless 2-sided grass strip that you overlay over the hard join between grass and any other surface. You need to scale it approximately to the same as the grass but it does not need to be aligned with the grass particularly as its grass edge side blends in. You only need align the visible grass edge where you want it. There is a lot of space on this 1024 x 1024 tile, virtually half. This makes it easier to align (I tried using a 1024 x 512 tile without the space but however I adjusted and tweaked it was a nuisance to align.) You can also use this edge up against a wall by bevelling that edge a tiny amount up the wall. You can see many examples in the little courtyard in Biker&#039;s St. Alban&#039;s cathedral.&lt;br /&gt;
&lt;br /&gt;
It&#039;s simple but hard to explain. Here is a guide: A summary would be create a long north south patch the same scale and alignment as your grass and give it the grass edge decal texture you want (making sure the white grass runs down the middle of the patch) then turn and move it to overlap the edge between your grass and any other surface. The patch needs to be a func_static with the property shaderparm3 and value 0.01 (thin) to 0.99 (thick) (0.5 is normally fine.)&lt;br /&gt;
&lt;br /&gt;
* You start with a grass-textured surface and any other surface side by side, let&#039;s use dirt and dark grass as an example.&lt;br /&gt;
* So you have a straight hard edge between them.&lt;br /&gt;
* Select one of the surfaces.&lt;br /&gt;
* Menu &amp;gt; Brush &amp;gt; Create Decal Patches&lt;br /&gt;
* If this is flush with the surface (depends on your setting) set grid size 0.125 and raise the patch just clear.&lt;br /&gt;
* Leave the texture as _default or any texture for now.&lt;br /&gt;
* Move the patch so it overlaps the join between the grass surface and the dirt and covers the length you want to cover.&lt;br /&gt;
* The width depends on the texture scale. For 0.25 it is roughly between 48 and 64.&lt;br /&gt;
* 64 is the width of one tile of the grass edge texture at that scale.&lt;br /&gt;
* About half of that is blank to give you plent of room to manoeuvre.&lt;br /&gt;
* If your patch is bigger than 64 then you will get part of the next tile so that is the max.&lt;br /&gt;
* If you go too small, say 32 or less then you won&#039;t get all the texture.&lt;br /&gt;
* So keep the patch width between 48 and 64 for texture scale 0.25&lt;br /&gt;
* Rotate the patch temporarily so it lies north south length-wise&lt;br /&gt;
* Copy and paste from the dark grass surface to the patch.&lt;br /&gt;
* It should now be textured the same texture and scale as the grass and blend in perfectly with the grass.&lt;br /&gt;
* Now give the patch the texture: textures/darkmod/nature/grass/grass_edge/short_dry_grass_dark_edge&lt;br /&gt;
* You should see a long strip of white grass on black.&lt;br /&gt;
* All the white should be within the patch and not overlap the edge (so there is full black on both the east and west edges with the white in the middle.)&lt;br /&gt;
* If the white overlaps either edge then move the patch along and repeat the paste texture and retexture.&lt;br /&gt;
* Now move and rotate the patch to overlap the grass and dirt edge you want to blend.&lt;br /&gt;
* The full white centre should go over the centre join.&lt;br /&gt;
* The blurred edge normally goes on the grass side and the grass blade edge over the dirt but you can do it the other way for a softer edge.&lt;br /&gt;
* When in position it is OK to make slight adjustments of resizing but not large.&lt;br /&gt;
* You need to make the patch a func_static&lt;br /&gt;
* Then give it the property shaderparm3 with value 0.5&lt;br /&gt;
* The value can be anywhere between 0.01 (thin) to 0.99 (thick)&lt;br /&gt;
* When you first change it to func_static you need to dmap again.&lt;br /&gt;
* Once dmapped you don&#039;t need to dmap again if you just change the shaderparm3 value&lt;br /&gt;
* In game, the white parts should show as grass that blends with your brush grass and the black is transparent.&lt;br /&gt;
&lt;br /&gt;
===Grass patch===&lt;br /&gt;
&lt;br /&gt;
This is like a woolly bath mat. Place it over alignment errors, path ends, or just as a stand-alone grass patch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Instant paths===&lt;br /&gt;
&lt;br /&gt;
These are endless 2-sided strips but they are the reverse of the above. They consist of many dirt and stone textures with grass blade alpha edges that blend into any grass texture. Just drop a patch onto any grass surface and give it one of these path textures and you&#039;ve got a path with a soft edge. Width is limited to texture scale is the downside but at least once you&#039;ve made the path you can stretch it sideways somewhat within reason. The long ends of these paths are hard so either you end them at some other surface like another path or doorstep or alternatively drop a grass patch over the end. I have provided all that seemed appropriate of our current dirt and cobble floor textures but it is relatively easy to copy one of those and make a new type if you need it. This path type might also work with materials other than grass to soften the edges but they are not random crumb; they are rough grass blade alpha. But you find dirt on straw or dirt on dirt stone on dirt might work I don&#039;t know.&lt;br /&gt;
&lt;br /&gt;
When would you use one rather than another? The edges are more versatile and are not limited to just paths whereas the path types are quicker.&lt;br /&gt;
&lt;br /&gt;
You can bend and twist both in all 3 directions so you can have a winding concave path with a dip in the middle up a curving hill. But the path type you cannot really make them go narrower or wider because the patch itself is the path whereas with the edge type they form a path by surrounding some other surface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Grass_Edges&amp;diff=12429</id>
		<title>Grass Edges</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Grass_Edges&amp;diff=12429"/>
		<updated>2011-02-22T19:05:45Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Basic grass edge for all three grass types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Introduction===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;written by Fidcal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is about the grass edges, patches, and paths textures in update 1.03. &lt;br /&gt;
&lt;br /&gt;
These are all textures under nature &amp;gt; grass &amp;gt; grass_edge.&lt;br /&gt;
&lt;br /&gt;
I&#039;ve not done prefabs at this time and I&#039;m not sure it&#039;s worth it. The final versions consist of three types:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Basic grass edge for all three grass types===&lt;br /&gt;
&lt;br /&gt;
This is an endless 2-sided grass strip that you overlay over the hard join between grass and any other surface. You need to scale it approximately to the same as the grass but it does not need to be aligned with the grass particularly as its grass edge side blends in. You only need align the visible grass edge where you want it. There is a lot of space on this 1024 x 1024 tile, virtually half. This makes it easier to align (I tried using a 1024 x 512 tile without the space but however I adjusted and tweaked it was a nuisance to align.) You can also use this edge up against a wall by bevelling that edge a tiny amount up the wall. You can see many examples in the little courtyard in Biker&#039;s St. Alban&#039;s cathedral.&lt;br /&gt;
&lt;br /&gt;
It&#039;s simple but hard to explain. Here is a guide: A summary would be create a long north south patch the same scale and alignment as your grass and give it the grass edge decal texture you want (making sure the white grass runs down the middle of the patch) then turn and move it to overlap the edge between your grass and any other surface.&lt;br /&gt;
&lt;br /&gt;
* You start with a grass-textured surface and any other surface side by side, let&#039;s use dirt and dark grass as an example.&lt;br /&gt;
* So you have a straight hard edge between them.&lt;br /&gt;
* Select one of the surfaces.&lt;br /&gt;
* Menu &amp;gt; Brush &amp;gt; Create Decal Patches&lt;br /&gt;
* If this is flush with the surface (depends on your setting) set grid size 0.125 and raise the patch just clear.&lt;br /&gt;
* Leave the texture as _default or any texture for now.&lt;br /&gt;
* Move the patch so it overlaps the join between the grass surface and the dirt and covers the length you want to cover.&lt;br /&gt;
* The width depends on the texture scale. For 0.25 it is roughly between 48 and 64.&lt;br /&gt;
* 64 is the width of one tile of the grass edge texture at that scale.&lt;br /&gt;
* About half of that is blank to give you plent of room to manoeuvre.&lt;br /&gt;
* If your patch is bigger than 64 then you will get part of the next tile so that is the max.&lt;br /&gt;
* If you go too small, say 32 or less then you won&#039;t get all the texture.&lt;br /&gt;
* So keep the patch width between 48 and 64 for texture scale 0.25&lt;br /&gt;
* Rotate the patch temporarily so it lies north south length-wise&lt;br /&gt;
* Copy and paste from the dark grass surface to the patch.&lt;br /&gt;
* It should now be textured the same texture and scale as the grass and blend in perfectly with the grass.&lt;br /&gt;
* Now give the patch the texture: textures/darkmod/nature/grass/grass_edge/short_dry_grass_dark_edge&lt;br /&gt;
* You should see a long strip of white grass on black.&lt;br /&gt;
* All the white should be within the patch and not overlap the edge (so there is full black on both the east and west edges with the white in the middle.)&lt;br /&gt;
* If the white overlaps either edge then move the patch along and repeat the paste texture and retexture.&lt;br /&gt;
* Now move and rotate the patch to overlap the grass and dirt edge you want to blend.&lt;br /&gt;
* The full white centre should go over the centre join.&lt;br /&gt;
* The blurred edge normally goes on the grass side and the grass blade edge over the dirt but you can do it the other way for a softer edge.&lt;br /&gt;
* When in position it is OK to make slight adjustments of resizing but not large.&lt;br /&gt;
* You need to make the patch a func_static&lt;br /&gt;
* Then give it the property shaderparm3 with value 0.5&lt;br /&gt;
* The value can be anywhere between 0.01 (thin) to 0.99 (thick)&lt;br /&gt;
* When you first change it to func_static you need to dmap again.&lt;br /&gt;
* Once dmapped you don&#039;t need to dmap again if you just change the shaderparm3 value&lt;br /&gt;
* In game, the white parts should show as grass that blends with your brush grass and the black is transparent.&lt;br /&gt;
&lt;br /&gt;
===Grass patch===&lt;br /&gt;
&lt;br /&gt;
This is like a woolly bath mat. Place it over alignment errors, path ends, or just as a stand-alone grass patch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Instant paths===&lt;br /&gt;
&lt;br /&gt;
These are endless 2-sided strips but they are the reverse of the above. They consist of many dirt and stone textures with grass blade alpha edges that blend into any grass texture. Just drop a patch onto any grass surface and give it one of these path textures and you&#039;ve got a path with a soft edge. Width is limited to texture scale is the downside but at least once you&#039;ve made the path you can stretch it sideways somewhat within reason. The long ends of these paths are hard so either you end them at some other surface like another path or doorstep or alternatively drop a grass patch over the end. I have provided all that seemed appropriate of our current dirt and cobble floor textures but it is relatively easy to copy one of those and make a new type if you need it. This path type might also work with materials other than grass to soften the edges but they are not random crumb; they are rough grass blade alpha. But you find dirt on straw or dirt on dirt stone on dirt might work I don&#039;t know.&lt;br /&gt;
&lt;br /&gt;
When would you use one rather than another? The edges are more versatile and are not limited to just paths whereas the path types are quicker.&lt;br /&gt;
&lt;br /&gt;
You can bend and twist both in all 3 directions so you can have a winding concave path with a dip in the middle up a curving hill. But the path type you cannot really make them go narrower or wider because the patch itself is the path whereas with the edge type they form a path by surrounding some other surface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Grass_Edges&amp;diff=12427</id>
		<title>Grass Edges</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Grass_Edges&amp;diff=12427"/>
		<updated>2011-02-21T19:23:45Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Introduction===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;written by Fidcal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is about the grass edges, patches, and paths textures in update 1.03. &lt;br /&gt;
&lt;br /&gt;
These are all textures under nature &amp;gt; grass &amp;gt; grass_edge.&lt;br /&gt;
&lt;br /&gt;
I&#039;ve not done prefabs at this time and I&#039;m not sure it&#039;s worth it. The final versions consist of three types:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Basic grass edge for all three grass types===&lt;br /&gt;
&lt;br /&gt;
This is an endless 2-sided grass strip that you overlay over the hard join between grass and any other surface. You need to scale it approximately to the same as the grass but it does not need to be aligned with the grass particularly as its grass edge side blends in. You only need align the visible grass edge where you want it. There is a lot of space on this 1024 x 1024 tile, virtually half. This makes it easier to align (I tried using a 1024 x 512 tile without the space but however I adjusted and tweaked it was a nuisance to align.) You can also use this edge up against a wall by bevelling that edge a tiny amount up the wall. You can see many examples in the little courtyard in Biker&#039;s St. Alban&#039;s cathedral.&lt;br /&gt;
&lt;br /&gt;
It&#039;s simple but hard to explain. Here is a guide: A summary would be create a long north south patch the same scale and alignment as your grass and give it the grass edge decal texture you want (making sure the white grass runs down the middle of the patch) then turn and move it to overlap the edge between your grass and any other surface.&lt;br /&gt;
&lt;br /&gt;
* You start with a grass-textured surface and any other surface side by side, let&#039;s use dirt and dark grass as an example.&lt;br /&gt;
* So you have a straight hard edge between them.&lt;br /&gt;
* Select one of the surfaces.&lt;br /&gt;
* Menu &amp;gt; Brush &amp;gt; Create Decal Patches&lt;br /&gt;
* If this is flush with the surface (depends on your setting) set grid size 0.125 and raise the patch just clear.&lt;br /&gt;
* Leave the texture as _default or any texture for now.&lt;br /&gt;
* Move the patch so it overlaps the join between the grass surface and the dirt and covers the length you want to cover.&lt;br /&gt;
* The width depends on the texture scale. For 0.25 it is roughly between 48 and 64.&lt;br /&gt;
* 64 is the width of one tile of the grass edge texture at that scale.&lt;br /&gt;
* About half of that is blank to give you plent of room to manoeuvre.&lt;br /&gt;
* If your patch is bigger than 64 then you will get part of the next tile so that is the max.&lt;br /&gt;
* If you go too small, say 32 or less then you won&#039;t get all the texture.&lt;br /&gt;
* So keep the patch width between 48 and 64 for texture scale 0.25&lt;br /&gt;
* Rotate the patch temporarily so it lies north south length-wise&lt;br /&gt;
* Copy and paste from the dark grass surface to the patch.&lt;br /&gt;
* It should now be textured the same texture and scale as the grass and blend in perfectly with the grass.&lt;br /&gt;
* Now give the patch the texture: textures/darkmod/nature/grass/grass_edge/short_dry_grass_dark_edge&lt;br /&gt;
* You should see a long strip of white grass on black.&lt;br /&gt;
* All the white should be within the patch and not overlap the edge (so there is full black on both the east and west edges with the white in the middle.)&lt;br /&gt;
* If the white overlaps either edge then move the patch along and repeat the paste texture and retexture.&lt;br /&gt;
* Now move and rotate the patch to overlap the grass and dirt edge you want to blend.&lt;br /&gt;
* The full white centre should go over the centre join.&lt;br /&gt;
* The blurred edge normally goes on the grass side and the grass blade edge over the dirt but you can do it the other way for a softer edge.&lt;br /&gt;
* When in position it is OK to make slight adjustments of resizing but not large.&lt;br /&gt;
* In game, the white parts should show as grass that blends with your brush grass and the black is transparent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Grass patch===&lt;br /&gt;
&lt;br /&gt;
This is like a woolly bath mat. Place it over alignment errors, path ends, or just as a stand-alone grass patch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Instant paths===&lt;br /&gt;
&lt;br /&gt;
These are endless 2-sided strips but they are the reverse of the above. They consist of many dirt and stone textures with grass blade alpha edges that blend into any grass texture. Just drop a patch onto any grass surface and give it one of these path textures and you&#039;ve got a path with a soft edge. Width is limited to texture scale is the downside but at least once you&#039;ve made the path you can stretch it sideways somewhat within reason. The long ends of these paths are hard so either you end them at some other surface like another path or doorstep or alternatively drop a grass patch over the end. I have provided all that seemed appropriate of our current dirt and cobble floor textures but it is relatively easy to copy one of those and make a new type if you need it. This path type might also work with materials other than grass to soften the edges but they are not random crumb; they are rough grass blade alpha. But you find dirt on straw or dirt on dirt stone on dirt might work I don&#039;t know.&lt;br /&gt;
&lt;br /&gt;
When would you use one rather than another? The edges are more versatile and are not limited to just paths whereas the path types are quicker.&lt;br /&gt;
&lt;br /&gt;
You can bend and twist both in all 3 directions so you can have a winding concave path with a dip in the middle up a curving hill. But the path type you cannot really make them go narrower or wider because the patch itself is the path whereas with the edge type they form a path by surrounding some other surface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Text_Decals_for_Signs_etc.&amp;diff=12422</id>
		<title>Text Decals for Signs etc.</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Text_Decals_for_Signs_etc.&amp;diff=12422"/>
		<updated>2011-02-21T15:29:17Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* The Decal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This article describes how to add non-graphic simple text to signs, signposts, walls etc. using gui decals. In this image you can see some examples. This method only provides the application of the text itself (ie, does not include the signs, signposts etc.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:text_decals.jpg]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The assets used are provided from Dark Mod update 1.03 onward. But that is just a convenience; you can create your own easily (see [[#Customising and Making your own]] below.)&lt;br /&gt;
&lt;br /&gt;
For other types of in-game text see [[Text]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ready-made Prefabs==&lt;br /&gt;
&lt;br /&gt;
This is by far the easiest method. You simply insert a prefab and change the default text and size to what you want:&lt;br /&gt;
&lt;br /&gt;
* This is described for the Dark Radiant editor.&lt;br /&gt;
* For general use all you need do is to find or make your blank wall, sign, etc.&lt;br /&gt;
* RMB in grid view and select insert prefab&lt;br /&gt;
* Select eg, prefabs/readables/sign_text_decals/sign_text_carleton.pfb&lt;br /&gt;
* The font choices are shown in [[Fonts Screenshots]]. Note that not all Dark Mod fonts are set up for this but see [[#Customising and Making your own]] below for how to do this.&lt;br /&gt;
&lt;br /&gt;
* You now have a working text decal.&lt;br /&gt;
* To set your text change the spawnarg value gui_parm1 in Entity Inspector to whatever you want.&lt;br /&gt;
* To change the size of the text;&lt;br /&gt;
* just resize the patch. To do this, first press the TAB key. Remember to press it again to get back.&lt;br /&gt;
* An alternative is to rescale the texture in Surface Inspector&lt;br /&gt;
* It is important to note that by default the full surface may hold several lines of text so if your text is eg, just a street sign then it may only use the top line so you will need to drag resize the patch to cover a larger area than the visible sign. The decal patch is non-solid and invisible except for the text itself so can overlap any visible surface with no problem.&lt;br /&gt;
* The defaults are all black text with 66% transparency so they blend well onto most surfaces but see [[#Customising and Making your own]] below for how to change this.&lt;br /&gt;
&lt;br /&gt;
==Customising and Making your own==&lt;br /&gt;
&lt;br /&gt;
To make your own text decals or customise the ones provided:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The Decal===&lt;br /&gt;
&lt;br /&gt;
* Create a patch and give it the texture: textures/darkmod/decals/signs/decal_gui . This is only available fromDark Mod update 1.03 onward but if you want it earlier this is what to do:&lt;br /&gt;
** Use textures/common/entityGui instead if it doesn&#039;t matter if the decal is solid.&lt;br /&gt;
** Create the custom texture listed below at [[#Custom Texture]]&lt;br /&gt;
* In Surface Inspector, use these in order: natural, fit, flip horizontal, rotate left 180 degrees.&lt;br /&gt;
* You should now see a single occurrence of the words Entity GUI on the patch and the words should be upright and not mirrored. If not, adjust, rotate, until they do.&lt;br /&gt;
* Note that the text size will be affected by the size of the patch&lt;br /&gt;
* Convert the patch to a func_static entity&lt;br /&gt;
* Give it the spawnarg gui with the path and name of your gui (see [[#The Gui]] below as its value.&lt;br /&gt;
* Give it the spawnarg gui_parm1 with your own text as its value.&lt;br /&gt;
&lt;br /&gt;
===The Gui===&lt;br /&gt;
&lt;br /&gt;
This is the gui file that defines the font. If you have Dark Mod update 1.03 you can modify an existing one. Alternatively, just  copy and paste the one below into a text file and save it with your map in a guis folder as eg, my_stone_text.gui. You will need to add that path and name to the gui spawnarg of the decal entity above, eg, gui guis/my_stone_text.gui&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 windowDef Desktop&lt;br /&gt;
 {&lt;br /&gt;
 	rect 0, 0, 640, 480&lt;br /&gt;
 	backcolor 0, 0, 0, 0&lt;br /&gt;
 &lt;br /&gt;
 	windowDef SignText&lt;br /&gt;
 	{&lt;br /&gt;
 		rect 0, 0, 640,480&lt;br /&gt;
 		backcolor 0, 0, 0, 0&lt;br /&gt;
 		text	&amp;quot;gui::gui_parm1&amp;quot;&lt;br /&gt;
 		font &amp;quot;fonts/stone&amp;quot;&lt;br /&gt;
 		textscale 2&lt;br /&gt;
 		forecolor 0, 0, 0, 0.8&lt;br /&gt;
 		visible 1&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
In the above definition, these are some of the things you can change:&lt;br /&gt;
&lt;br /&gt;
* Set your font in the font line as shown. It must be in quotation marks as above. Font choices are shown in [[Fonts Screenshots]]. &lt;br /&gt;
* Change the font size in textscale. Fractions can be used, eg, 1.5 but remember, resizing the patch or texture scale in Dark Radiant also changes the font size.&lt;br /&gt;
* Change the colour and transparency of the text in the forecolor line. Because of the way Doom 3 blends imagery, for all practical purposes this is limited to very dark colours because they do not react to local game lighting. If you choose lighter colours then they will glow in the dark. (it might be possible to match a colour to a static light situation.) The forecolor values are:&lt;br /&gt;
** red, green, blue, transparency; each in the range 0 to 1.&lt;br /&gt;
** For colours, 0 to 1 is zero to full intensity; for transparency it is invisible (0) to fully opaque (1)&lt;br /&gt;
** For example:&lt;br /&gt;
*** 0.9, 0.9, 0, 1 would be high red, high green, no blue, and fully opaque. Red and green light make yellow so this would give glowing yellow text that would not blend well with its background.&lt;br /&gt;
*** 0.1, 0, 0, 0.66 This is more practical and would give a dark red that blends well onto its background with 66% opacity.&lt;br /&gt;
* A background colour can be set with the backcolor line exactly the same as for forecolor but is probably of limited use for our purposes. 0.9, 0.9, 0, 1 would have the text on a solid bright yellow background that glows in the dark. 0, 0.1,0, 0.33 would give a faint green background of 33% opacity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The Texture===&lt;br /&gt;
&lt;br /&gt;
This is the non-solid decal gui texture. Copy and paste it into a text file and save it with your map in a materials folder as eg, mymap.mtr. You will need to reload shaders if you already have Dark Radiant running before you can select it.&lt;br /&gt;
&lt;br /&gt;
 textures/mymap/decals/signs/decal_gui&lt;br /&gt;
 {&lt;br /&gt;
 	qer_editorimage	textures/editor/entityGui.tga&lt;br /&gt;
 	DECAL_MACRO&lt;br /&gt;
 	noShadows&lt;br /&gt;
 	nonsolid&lt;br /&gt;
 	noimpact&lt;br /&gt;
 	discrete&lt;br /&gt;
 	guiSurf	entity&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Material_Files&amp;diff=12296</id>
		<title>Material Files</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Material_Files&amp;diff=12296"/>
		<updated>2011-02-04T18:15:34Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Add the Ambient Light Stage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Original_Reference|Fingernail &amp;amp; greebo|127}}&lt;br /&gt;
&lt;br /&gt;
== What the Heck is a Material File? ==&lt;br /&gt;
The material files (.mtr) contain lists of &#039;material definitions&#039; that tell the engine where to find the source files for the specified textures and what features it should have. All material files should be located in the &#039;&#039;&#039;darkmod/materials&#039;&#039;&#039; folder and have the extension &#039;&#039;&#039;.mtr&#039;&#039;&#039;.  &lt;br /&gt;
&lt;br /&gt;
In fact, it&#039;s the material (=shader) which gets applied to surfaces of brushes, patches and models, not the actual TGA/DDS texture image. A TGA file cannot be applied to surfaces, it&#039;s the shader name which gets used.&lt;br /&gt;
&lt;br /&gt;
 Polygons ==&amp;gt; Shader ==&amp;gt; Image(s) + Processing =&amp;gt; Appearance&lt;br /&gt;
&lt;br /&gt;
Material definitions apply to a single &#039;texture&#039;, though it may be made up of multiple texture files blended together.  A simple material definition looks like this:&lt;br /&gt;
&lt;br /&gt;
 textures/darkmod/stone/brick/redbrick_with_mortar&lt;br /&gt;
 {&lt;br /&gt;
    qer_editorimage  textures/darkmod/custom/redbrick_ed&lt;br /&gt;
    diffusemap       textures/darkmod/custom/redbrick     &lt;br /&gt;
    bumpmap          textures/darkmod/custom/redbrick_local  &lt;br /&gt;
    specularmap      textures/darkmod/custom/redbrick_s     &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using the &#039;&#039;material&#039;&#039; called &#039;&#039;&#039;textures/darkmod/stone/brick/redbrick_with_mortar&#039;&#039;&#039; in your map, Doom looks up the name in the material definition and loads the according image files (as specified by the [[Map Expressions]]). Note that you &#039;&#039;&#039;don&#039;t&#039;&#039;&#039; need to specify the file extension, the engine is automatically adding it (depending on your quality setting) and finds the according texture file. You also don&#039;t need to include the &#039;&#039;&#039;dds/&#039;&#039;&#039; prefix in the path, this is also added automatically.&lt;br /&gt;
&lt;br /&gt;
A single material file contains lots of material definitions. This is useful as textures that logically belong to each other are summarized in one material file (e.g. &#039;&#039;&#039;materials/tdm_stone_brick.mtr&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
The .mtr files are read upon launching Doom 3 - changing your material file therefore requires either restarting Doom or typing &#039;&#039;&#039;reloadDecls&#039;&#039;&#039; in the console.&lt;br /&gt;
&lt;br /&gt;
== Create a new Texture Definition ==&lt;br /&gt;
Provided you already saved your texture source file (the .tga or .dds) in the appropriate folder, you can go on and create your texture definition.  You cannot use your textures without this step.&lt;br /&gt;
&lt;br /&gt;
Open up or create your personal material file with a text editor.  There are existing guidelines for where texture definitions should go, for the sake of organization, but the engine doesn&#039;t care what the filename is as long as it&#039;s in the materials folder and has a .mtr extension.   &lt;br /&gt;
&lt;br /&gt;
First, specify the name of your new material. If it is not a model texture, then the name should include the path to the texture files used.  Example:&lt;br /&gt;
&lt;br /&gt;
 textures/darkmod/stone/brick/redbrick_with_mortar&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Do not use special characters for your shader name or the Doom 3 parser might complain (e.g. no &amp;amp; characters)&lt;br /&gt;
&lt;br /&gt;
Then, open up a squiggly bracket ({), and start to fill in the texture paths as below, changing the paths and names for your texture.&lt;br /&gt;
&lt;br /&gt;
 textures/darkmod/stone/brick/redbrick_with_mortar&lt;br /&gt;
 {&lt;br /&gt;
     qer_editorimage  textures/darkmod/stone/brick/redbrick_with_mortar_ed      // editor image&lt;br /&gt;
     diffusemap       textures/darkmod/stone/brick/redbrick_with_mortar         // diffuse map&lt;br /&gt;
     bumpmap        textures/darkmod/stone/brick/redbrick_with_mortar_local     // normal map&lt;br /&gt;
     specularmap      textures/darkmod/stone/brick/redbrick_with_mortar_s       // specular map&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Close the definition with a close squiggly bracket (}).&lt;br /&gt;
&lt;br /&gt;
Save the file. Now you can load your new texture in DoomEdit or [[DarkRadiant]] provided you did it all correctly.&lt;br /&gt;
&lt;br /&gt;
Alternatively you can also have a look a the existing material files and learn from them.&lt;br /&gt;
&lt;br /&gt;
== Add the Ambient Light Stage ==&lt;br /&gt;
&lt;br /&gt;
This should go on all Dark Mod textures (see [[Virtual Ambient Light Textures]])&lt;br /&gt;
&lt;br /&gt;
 note that if there is no specular map then substitute _black&lt;br /&gt;
 and if there is no bumpmap then use _flat&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        // TDM Ambient Method Related&lt;br /&gt;
        {&lt;br /&gt;
                if (global5 == 1)&lt;br /&gt;
                blend add&lt;br /&gt;
                map                             &amp;lt;mappath/name&amp;gt;&lt;br /&gt;
                scale                   1, 1&lt;br /&gt;
                red                             global2&lt;br /&gt;
                green                   global3&lt;br /&gt;
                blue                    global4&lt;br /&gt;
        }&lt;br /&gt;
        {&lt;br /&gt;
                if (global5 == 2)&lt;br /&gt;
                blend add&lt;br /&gt;
                program ambientEnvironment.vfp&lt;br /&gt;
                vertexParm              0               1, 1, 1, 1              // UV Scales for Diffuse and Bump&lt;br /&gt;
                vertexParm              1               1, 1, 1, 1      // (X,Y) UV Scale for specular&lt;br /&gt;
                vertexParm              2               global2, global3, global4, 1&lt;br /&gt;
&lt;br /&gt;
                fragmentMap             0               cubeMap env/gen1&lt;br /&gt;
                fragmentMap             1               &amp;lt;mappath/name&amp;gt;_local                  // Bump&lt;br /&gt;
                fragmentMap             2               &amp;lt;mappath/name&amp;gt;                        // Diffuse&lt;br /&gt;
                fragmentMap             3               _black                  // Specular&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add the Frob Highlight Stage ==&lt;br /&gt;
&lt;br /&gt;
All materials need to have a conditional shader stage added to let the material highlight when the objects are frobbed. The technical details are of minor interest here, just copy and paste such a stage from other materials and adjust the diffusemap and bumpmap references.&lt;br /&gt;
&lt;br /&gt;
== Full example ==&lt;br /&gt;
&lt;br /&gt;
Here is the full example with the final material definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
textures/darkmod/stone/brick/redbrick_with_mortar&lt;br /&gt;
 {&lt;br /&gt;
    // Use on of the predefined surface types like stone, glass, wood&lt;br /&gt;
    stone&lt;br /&gt;
 &lt;br /&gt;
    qer_editorimage  textures/darkmod/stone/brick/redbrick_with_mortar_ed&lt;br /&gt;
    bumpmap          textures/darkmod/stone/brick/redbrick_with_mortar_local&lt;br /&gt;
    diffusemap       textures/darkmod/stone/brick/redbrick_with_mortar&lt;br /&gt;
    specularmap      textures/darkmod/stone/brick/redbrick_with_mortar_s&lt;br /&gt;
 &lt;br /&gt;
    // This is the code required for frob highlighting this texture&lt;br /&gt;
    {&lt;br /&gt;
        if ( parm11 &amp;gt; 0 )&lt;br /&gt;
        blend       gl_dst_color, gl_one&lt;br /&gt;
        map         _white.tga&lt;br /&gt;
        rgb         0.40 * parm11&lt;br /&gt;
    }&lt;br /&gt;
    {&lt;br /&gt;
        if ( parm11 &amp;gt; 0 )&lt;br /&gt;
        blend       add&lt;br /&gt;
        map         textures/darkmod/stone/brick/redbrick_with_mortar&lt;br /&gt;
        rgb         0.15 * parm11&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
        // TDM Ambient Method Related&lt;br /&gt;
        {&lt;br /&gt;
                if (global5 == 1)&lt;br /&gt;
                blend add&lt;br /&gt;
                map                             textures/darkmod/stone/brick/redbrick_with_mortar&lt;br /&gt;
                scale                   1, 1&lt;br /&gt;
                red                             global2&lt;br /&gt;
                green                   global3&lt;br /&gt;
                blue                    global4&lt;br /&gt;
        }&lt;br /&gt;
        {&lt;br /&gt;
                if (global5 == 2)&lt;br /&gt;
                blend add&lt;br /&gt;
                program ambientEnvironment.vfp&lt;br /&gt;
                vertexParm              0               1, 1, 1, 1              // UV Scales for Diffuse and Bump&lt;br /&gt;
                vertexParm              1               1, 1, 1, 1      // (X,Y) UV Scale for specular&lt;br /&gt;
                vertexParm              2               global2, global3, global4, 1&lt;br /&gt;
&lt;br /&gt;
                fragmentMap             0               cubeMap env/gen1&lt;br /&gt;
                fragmentMap             1               textures/darkmod/stone/brick/redbrick_with_mortar_local                  // Bump&lt;br /&gt;
                fragmentMap             2               textures/darkmod/stone/brick/redbrick_with_mortar                        // Diffuse&lt;br /&gt;
                fragmentMap             3               _black                  // Specular&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Texture Guidelines]]&lt;br /&gt;
* [[How to add Textures to The Dark Mod]]&lt;br /&gt;
* [[Texture Creation - Basic Tutorial]]&lt;br /&gt;
&lt;br /&gt;
{{tutorial-textures|sort=Material}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Doors&amp;diff=12249</id>
		<title>Doors</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Doors&amp;diff=12249"/>
		<updated>2011-02-02T10:31:15Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Sounds and Sound Propagation through Doors and Doorways */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{todo}}&lt;br /&gt;
&#039;&#039;Written by Fidcal&#039;&#039; &#039;&#039;edit Baddcog&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Quick way to get an unlocked door in your map:&lt;br /&gt;
&lt;br /&gt;
* Insert one of the prefab doors complete with handles and select its skin property and click the button to change its skin appearance to whatever you want. Set any other properties you need.&lt;br /&gt;
&lt;br /&gt;
Alternatively,&lt;br /&gt;
&lt;br /&gt;
* Create a door from the entity list&lt;br /&gt;
* Use the &amp;quot;skin&amp;quot; spawnarg on the door to change its appearance. &lt;br /&gt;
* Create a handle from the entity list&lt;br /&gt;
* Add the &#039;&#039;door_handle&#039;&#039; property to the door and give it the name of the handle&lt;br /&gt;
* To the door handle add the value frob_peer and use the name of the door.&lt;br /&gt;
* To open clockwise, change the &#039;&#039;rotate&#039;&#039; property from &amp;lt;code&amp;gt;0 90 0&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0 -90 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This tutorial explains how to put doors into your map using Dark Radiant, as well as adjust them and their properties.&lt;br /&gt;
&lt;br /&gt;
The rest of this tutorial assumes that you have a basic understanding of using DarkRadiant. If you haven&#039;t done so, please go read the [[Dark Radiant Must Know Basic Intro]] article first.&lt;br /&gt;
&lt;br /&gt;
Additionally:&lt;br /&gt;
&lt;br /&gt;
* Up, down, left, and right in Dark Radiant&#039;s &#039;&#039;top&#039;&#039; orthoview are regarded here as the standard map directions of North, South, East, and West where useful for clarity.&lt;br /&gt;
* Where the term &#039;&#039;brush&#039;&#039; is used with a door it mostly also applies to a door made up of a group of brushes and/or patches.&lt;br /&gt;
* Where the term &#039;&#039;door&#039;&#039; is used it often will also apply to any object you wish to rotate when frobbed, for instance an openable window, box lid, or even more exotic objects that the imaginative mapper might conceive like a signal, engine part, toy, or whatever. So long as it needs to turn or slide just a fixed amount when frobbed then return when frobbed again then the following applies.&lt;br /&gt;
&lt;br /&gt;
==Door types==&lt;br /&gt;
&lt;br /&gt;
All tangible objects in Dark Mod are &#039;&#039;entities&#039;&#039;, having either a pre-made model shape or else brush/patch(es). So there are two ways to create a door in Dark Radiant: as a model door or a textured brush door (or a hybrid of the two).&lt;br /&gt;
&lt;br /&gt;
Models are ready made door objects but cannot within Dark Radiant (at the time of writing) be resized, rescaled, cropped or clipped whereas brushes are very flexible in that respect and can be worked into custom shapes for your map, including secret doors that blend into walls and other surfaces.&lt;br /&gt;
&lt;br /&gt;
Most of the current door models are found in two places along with the door handles.&lt;br /&gt;
*Model Viewer: doors created from here will be static in the world and have no props other than material type.&lt;br /&gt;
You can add any props to them to make them working doors. If nothing else it is a good place to view the different size and skin options for the doors.&lt;br /&gt;
*Entity List: most of the door models can be found here. These doors have properties already assigned so they are ready to be used. Only one base door of each type is listed, create the size/hinge count door you want (2 hinge doors have a &#039;no hinge&#039; skin). You can choose a skin for the door once it has been created in the editor with the &amp;quot;skin&amp;quot; spawnarg (use the model name of the door you want, taken from the model list, as its value). This is the easiest way to create a door. The same goes for door handles.&lt;br /&gt;
&lt;br /&gt;
Remember also that door functions may be applied to objects other than doors for instance to openable windows, drawbridges, gates, in fact anything that needs a partial rotation or slide when frobbed then return when frobbed again such as a signal device. Lockboxes and chests use similar properties.&lt;br /&gt;
&lt;br /&gt;
Door/handle prefabs seem to crash Doom3 when trying to reload a map so far now just create and link each door/handle. You can create one set and copy/paste them, but you need to take great care that all the name props are changed to match each clone. Otherwise you get handles that fly off with a distant door and handles that don&#039;t move.&lt;br /&gt;
&lt;br /&gt;
==Creating a Door==&lt;br /&gt;
&lt;br /&gt;
Put simply, to make a door you will be creating an &#039;entity with model&#039; or &#039;entity with brush&#039; or some variation thereof.&lt;br /&gt;
&lt;br /&gt;
===Creating a Model Door===&lt;br /&gt;
&lt;br /&gt;
There are several approaches to making a model door; the simplest is to create a door from the entity list; or create a door from the model viewer (good for static unusable prop doors).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Entity List&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
*Deselect everything in editor by hitting the Esc button&lt;br /&gt;
*Right-click an ortho view and select Create Entity&lt;br /&gt;
*Navigate to darkmod/movers/&#039;&#039;atdm:door_...&#039;&#039;, choose the door you want&lt;br /&gt;
*Click Add&lt;br /&gt;
*To change its appearance, add a &amp;quot;skin&amp;quot; spawnarg to the door, with the value being the model name of the door you want.&lt;br /&gt;
&lt;br /&gt;
You now have a workable door in your level.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Model Viewer&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Right click in the orthoview, select &#039;&#039;Create Model&#039;&#039; then &amp;lt;code&amp;gt;darkmod&amp;lt;/code&amp;gt; and select a door.&lt;br /&gt;
* Note that you can left drag the image in the &#039;&#039;Choose Model&#039;&#039; dialog to rotate it around.&lt;br /&gt;
* Click [[Image:Button ok.png]] and you have a static door.&lt;br /&gt;
* If you want to make it work (openable, frobbable) then:&lt;br /&gt;
** Select the entity inspector,&lt;br /&gt;
** Select the top classname line so it highlights&lt;br /&gt;
** Select the func_static line in the input box &#039;&#039;below&#039;&#039; the properties window.&lt;br /&gt;
** Edit &amp;lt;code&amp;gt;func_static&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt;&lt;br /&gt;
** Click {{check}} or press {{key-enter}}&lt;br /&gt;
&lt;br /&gt;
Alternatively you can do it the old way:&lt;br /&gt;
&lt;br /&gt;
* Create any temporary brush&lt;br /&gt;
* Right click in orthoview and select &amp;lt;code&amp;gt;Create Entity&amp;lt;/code&amp;gt; then &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Left lick the model name line in the entity inspector.&lt;br /&gt;
* Below it on the &#039;&#039;Entity Inspector&#039;&#039; panel you should now see a button &#039;Choose Model&#039;&lt;br /&gt;
* Left click it, select a door model from the darkmod group.&lt;br /&gt;
* Note that you can left drag the image in the &#039;&#039;Choose Model&#039;&#039; dialog to rotate it around.&lt;br /&gt;
* The temporary brush was deleted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In all three instances, you now have a working door with default properties. &lt;br /&gt;
&lt;br /&gt;
Name your door by adding the prop (or modifing it) to name &#039;&#039;My_Door_1&#039;&#039;. You can use any name that you feel is appropriate but all doors with handles attached &#039;&#039;must&#039;&#039; have their own specific name. Use the name My_Door_1 for your first attempt as it will be referenced when you get around to attaching handles (see below).&lt;br /&gt;
&lt;br /&gt;
To add a handle and other adjustments, see [[#Customising and Adjusting Door Properties]] below.&lt;br /&gt;
&lt;br /&gt;
===Creating a Textured Brush Door===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tip:&#039;&#039;&#039; If unsure of size then you might insert a temporary human AI first to get a sense of height.&lt;br /&gt;
&lt;br /&gt;
==== The simplest brush door: ====&lt;br /&gt;
&lt;br /&gt;
* Drag out a new brush to the size required, eg, a seven foot high door is 84&amp;quot; x 1.1 = about 90 units in Dark Radiant.&lt;br /&gt;
* Give it a door texture from the texture browser (or wall texture for a secret door)&lt;br /&gt;
* Right click in orthoview and select &#039;&#039;Create Entity&#039;&#039; then &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt;&lt;br /&gt;
* You now have a default door that rotates around its center.&lt;br /&gt;
&lt;br /&gt;
To move the rotation point to the door edge and other adjustments, see [[#Customising and Adjusting Door Properties]] below.&lt;br /&gt;
&lt;br /&gt;
==== Multi-brush doors: ====&lt;br /&gt;
&lt;br /&gt;
More complex multi-brush doors can be created using the [[Clipper]] tool, CSG, etc. - this is not covered in this tutorial. Then assign &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; for that whole brush structure. Also you can collect various brushes positioned together in relation to one another as needed, select them all, then assign &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; for the group. All the brushes will be children of the &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; entity and will rotate and be frobbable, etc. as one unit, as one door. To add further brushes or even model shapes later see the section on [[#Adding handles and other items to doors]].&lt;br /&gt;
&lt;br /&gt;
Name your door by adding the prop (or modifing it) to name My_Door_1. You can use any name that you feel is appropriate but all doors with handles attached must have their own specific name. Use the name My_Door_1 for your first attempt as it will be referenced when you get around to attaching handles (see below). (repeated from above in case you didn&#039;t choose to create a model door)&lt;br /&gt;
&lt;br /&gt;
=== Double Doors ===&lt;br /&gt;
Double doors are automatically recognised by the code when the doors are spawned. The prerequisite is that both doors are sharing/touching the same visportal. The spawnarg &#039;&#039;auto_setup_double_door&#039;&#039; (which defaults to &amp;quot;1&amp;quot;) will take care of setting up the open/lock peer relationship between the two doors. The doors will open/close and lock/unlock along with each other as a result.&lt;br /&gt;
&lt;br /&gt;
What happens behind the scenes: the doors are adding each other to their internal open_peer and lock_peer list, which causes the double doors to perform the same action when frobbed or used.&lt;br /&gt;
&lt;br /&gt;
Note that &#039;&#039;auto_setup_double_door&#039;&#039; will not set the frob_peer relationship, i.e. each door will frob-highlight on its own without highlighting the other door. You&#039;ll need to add that spawnarg manually if you want to highlight the entire double door as one.&lt;br /&gt;
&lt;br /&gt;
==Customising and Adjusting Door Properties==&lt;br /&gt;
&lt;br /&gt;
Handles, lockplates, etc. can be added to doors and door properties can be adjusted for rotation, sliding, locking, and more.&lt;br /&gt;
&lt;br /&gt;
Some of the door models have hinge plates and lockboxes that are reskinnable with a good variety of skins.&lt;br /&gt;
&lt;br /&gt;
===Door handles and other door attachments===&lt;br /&gt;
&lt;br /&gt;
 Summary: just add the property &#039;&#039;bind&#039;&#039; with the door&#039;s name to the attachment and position it where you want it on the door. If it&#039;s a &#039;&#039;atdm:mover_door_handle&#039;&#039; then it automatically will work as a handle but you can bind virtually anything.&lt;br /&gt;
You can add handles and other items to doors such that they move correctly with the door whether rotating, sliding, or both and even if the door is not vertical such as a skylight or trapdoor.&lt;br /&gt;
Handle models come in two types, &#039;&#039;single handles&#039;&#039; and &#039;&#039;double handles&#039;&#039;. A single handle is one sided, this means the handle will be inside the door or outside the door, but not both. A double handle has a lever on the inside of the door and a handle on the outside of the door. Each has benefits.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Single door handles&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
Single door handles can be used on a static door, a door that&#039;s just for show that no AI&#039;s or the player can use. In this case you should just create a door handle from the model viewer, it will be static and have no properties such as scripts. It is for looks only.&lt;br /&gt;
&lt;br /&gt;
Single handles can also be used inside AND outside of the same door to save on rendering. Unlike the double handles the handle on the inside of a portal won&#039;t render. The curved handle is only about 130 polys per side, but if you have a large area and 10 handles you can save 1,000 polys from being rendered. Everything counts when it comes to performance.&lt;br /&gt;
I will call this &#039;&#039;multiple handles&#039;&#039;, see more below.&lt;br /&gt;
&lt;br /&gt;
These can also be useful on brush doors created in the editor that may be very thin or very wide.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Double door handles&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
These are models have have a handle inside and outside. The bonus is that they only use one entity. Maps are limited to about 4,000 entities but when you count lights, AI, sound speakers, ect... you can run out of entities quickly on a large map. If you plan on building a large map this is the way to go, even in a small map they have benefits, namely that you only have to attach one handle per door.&lt;br /&gt;
&lt;br /&gt;
Whether you decide to use a single handle or a double handle you must first follow the instructions below and attach one handle first. If you choose a double handle, follow the instructions below and you are done. If you choose a single handle type follow the instructions then also follow the &#039;&#039;multiple handle&#039;&#039; instructions for the second handle.&lt;br /&gt;
&lt;br /&gt;
Both single and double handle types can be found in two places. The model viewer which will create a static model good for show, you can manually add props to make them work OR you can look in the entity browser.&lt;br /&gt;
Using a handle from the entity browser saves you a little bit of time as some props are already added, you just need to add the frob_peer names for the doors/handles and the door_handle name to the door.&lt;br /&gt;
&lt;br /&gt;
=== Adding a working model door handle===&lt;br /&gt;
&lt;br /&gt;
Quick summary:&lt;br /&gt;
* Create a model or brush handle and make it an &#039;&#039;atdm:mover_door_handle&#039;&#039; entity.&lt;br /&gt;
* Position it on your door.  Use the opposite side from the door&#039;s multicolor X-Y-Z indicator (highlight the door to see it) if it&#039;s not obvious which side it goes on.  &lt;br /&gt;
* &#039;&#039;&#039;Bind&#039;&#039;&#039; the handle to the door (bind &amp;lt;doorname&amp;gt;)&lt;br /&gt;
* It should now be a working handle though may need adjustments of rotation etc. see later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Important: read preceding section on door handle types and performance issues first.&lt;br /&gt;
&lt;br /&gt;
This works with both a model door and a brush door:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rotation&#039;&#039;&#039;:&lt;br /&gt;
* By default the door handle entity rotates &#039;&#039;anti-clockwise&#039;&#039; (looked at from the front) then springs back. A &#039;&#039;double handle&#039;&#039; model is OK but two singles (see &#039;&#039;Multiple door handles&#039;&#039; below) need more care as only one is the functioning entity and the other is just attached to it. So anti-clockwise is fine for a door with its hinge on the left and the handle on the right - the handle will rotate down then spring back. If you put the functioning door handle on the other side you will have to change the default &#039;&#039;rotate&#039;&#039; property from -45 0 0 to 45 0 0. &#039;&#039;&#039;&#039;&#039;Therefore it is easier to generally put this handle on the side of the door where the hinge is on the left and the non-functioning attachment handle on the other side.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*If your door only needs one handle, eg, a cupboard door, and from outside its hinge is on the right then you will need to change the &#039;&#039;rotate&#039;&#039; property of the handle as described above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;The functioning handle entity:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* Create an entity door handle (movers folder) or create a brush or model handle and assign it the entity &#039;&#039;atdm:mover_door_handle&#039;&#039;.&lt;br /&gt;
* Position it where you wish on your door.&lt;br /&gt;
* &#039;&#039;&#039;Bind&#039;&#039;&#039; the handle to the door, by adding the &amp;quot;bind&amp;quot; spawnarg to the handle.&lt;br /&gt;
&lt;br /&gt;
You now have a working door handle with default properties.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Multiple door handles&#039;&#039;&#039;:&lt;br /&gt;
Now that you&#039;ve got a handle attached to one side of the door it is time to add one to the other side (unless you used a double handle).&lt;br /&gt;
* Create the new handle. The single handles come in left and right persuasions. A door needs a left facing handle on one side and a right facing handle on the other, so if you have already added the left handle create a right handle and line it up on the other side of the door.&lt;br /&gt;
* Name this handle. I prefer to keep a naming convention for each door and it&#039;s respective handles, it makes things alot easier. The door is named &#039;&#039;&#039;My_Door_1&#039;&#039;&#039;, the first handle is named &#039;&#039;&#039;My_Handle_1&#039;&#039;&#039; so name the second handle &#039;&#039;&#039;My_Handle_1_1&#039;&#039;&#039;. This will make it stay with the first handle in the entity list. This is important to keep organized. If you name it My_Handle_2 then when you get to another door named My_Door_2 you&#039;ll be confused.&lt;br /&gt;
* Place and &#039;&#039;&#039;bind&#039;&#039;&#039; that handle to your door.&lt;br /&gt;
&lt;br /&gt;
You now have two single door handles on either side of the door that rotate together as if they were physically attached.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To add a brush to a brush door&#039;&#039;&#039;:&lt;br /&gt;
* Select the new brush &#039;&#039;and&#039;&#039; the brush door all together; &#039;&#039;the entity &#039;&#039;&#039;must&#039;&#039;&#039; be selected &#039;&#039;&#039;last&#039;&#039;&#039;.&#039;&#039;&lt;br /&gt;
* Use {{menu|Edit|Reparent primitives}}. This ensures the parent entity adopts the new item(s).&lt;br /&gt;
* If you have trouble selecting them in the orthoview because other brushes, etc. get selected then try in the camera view or as a last resort move them temporarily to an open area (but keep them in the same positions relative to each other.) Use {{key-shift}}+{{LMB}} on new item(s) then {{key-shift}}+{{LMB}} on main entity. Once they are all selected, use the {{menu|Edit|Reparent primitives}}.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To add &#039;&#039;model&#039;&#039; static items&#039;&#039;&#039;: knockers, hinges, static handles etc. to a &#039;&#039;Model Door&#039;&#039;:&lt;br /&gt;
* Select item&lt;br /&gt;
* Right click in orthoview and select &#039;&#039;Create Entity&#039;&#039; then &amp;lt;code&amp;gt;entity func_static&amp;lt;/code&amp;gt;&lt;br /&gt;
* Position it where you wish on your door.&lt;br /&gt;
* To synchronize this with your particular door you need to add the property &#039;&#039;bind&#039;&#039; and the individual door name to the brush entity. To do this...&lt;br /&gt;
** Select the model door.&lt;br /&gt;
** In the entity inspector, select the &#039;&#039;name&#039;&#039; line&lt;br /&gt;
** Select the bottom line in the input box &#039;&#039;below&#039;&#039; the properties window.&lt;br /&gt;
** Copy the name&lt;br /&gt;
** Deselect the door with {{key-esc}}&lt;br /&gt;
** Select the brush entity&lt;br /&gt;
** Add a property &amp;quot;bind&amp;quot; to it.&lt;br /&gt;
** Change the value of the property by pasting in the door name&lt;br /&gt;
** Click {{check}} or press {{key-enter}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To add &#039;&#039;brush&#039;&#039; static items&#039;&#039;&#039;: knockers, hinges, static handles to a Model Door:&lt;br /&gt;
* This method is not ideal but it seems to work OK.&lt;br /&gt;
* Select the brush.&lt;br /&gt;
* Right click in orthoview and select Create Entity then &#039;&#039;atdm:mover_door_handle&#039;&#039;&lt;br /&gt;
* Position it where you wish on your door.&lt;br /&gt;
&lt;br /&gt;
To synchronize this with your particular door you need to add the property &#039;&#039;door_handle&#039;&#039; on the door, and give as the value the name of the brush you just created.&lt;br /&gt;
&lt;br /&gt;
This brush turns like a handle. To stop it:&lt;br /&gt;
&lt;br /&gt;
* Adding &#039;&#039;rotate 0 0 0&#039;&#039; or disabling the handle script won&#039;t help.&lt;br /&gt;
* Add a real working handle (as in the section above &#039;&#039;To add a working model door handle...&#039;&#039; and it must be added LAST.)&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want too see a real working handle added maybe try another tiny brush with the handle function and hide it inside the door?&lt;br /&gt;
&lt;br /&gt;
===Locking Doors===&lt;br /&gt;
&lt;br /&gt;
To lock a door check the &#039;&#039;show inherited properties&#039;&#039; in the entity inspector for a &#039;&#039;atdm:mover_door&#039;&#039; entity and you should see the &#039;&#039;locked&#039;&#039; property. Select it and in the input box below the properties you can change its value:&lt;br /&gt;
&lt;br /&gt;
* 0 = unlocked (default)&lt;br /&gt;
* 1 = locked&lt;br /&gt;
&lt;br /&gt;
If locked it will require an entity that is associated with it to be able to act as a key to unlock it.&lt;br /&gt;
&lt;br /&gt;
Currently door handles on locked doors will rotate when frobbed, they will bounce back though and the door will stay locked until unlocked.&lt;br /&gt;
&lt;br /&gt;
===Keys===&lt;br /&gt;
&lt;br /&gt;
Assigning specific keys to specific doors is simple.&lt;br /&gt;
&lt;br /&gt;
* It is recommended that you create an existing key entity. These keys have all required props, they just need to be named.&lt;br /&gt;
&lt;br /&gt;
Alternatively you can create a key from the Model Viewer and want it to be useable&lt;br /&gt;
* Make sure it has the properties:&lt;br /&gt;
 useable 1 [so it can be used by the door]&lt;br /&gt;
 frobable 1&lt;br /&gt;
 inv_name &amp;lt;unique name&amp;gt;&lt;br /&gt;
 inv_category Keys&lt;br /&gt;
 inv_target player1&lt;br /&gt;
 inv_icon guis/assets/hud/inventory_icons/&amp;lt;icon name&amp;gt;&lt;br /&gt;
 inv_stackable 0 or 1 where 1 can be used on all copies of the same key so they show as one entry in the inventory with a total.&lt;br /&gt;
&lt;br /&gt;
Add to the door the property &amp;lt;code&amp;gt;used_by&amp;lt;/code&amp;gt; with the name of the key as the value. Multiple keys can open the same door by using several &amp;lt;tt&amp;gt;used_by&amp;lt;/tt&amp;gt; spawnargs:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;used_by&amp;quot;  &amp;quot;doorkey_1&amp;quot;&lt;br /&gt;
 &amp;quot;used_by1&amp;quot; &amp;quot;doorkey_2&lt;br /&gt;
&lt;br /&gt;
==== Keys carried by AI ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So you have a door and you have a guard Ai and you want the guard to be able to open/close/lock the door but you also want the player to be able to pickpocket the key. For more info on attaching key, props etc - see [[Attaching Props to AI]].&lt;br /&gt;
&lt;br /&gt;
*&amp;quot;def_attach6&amp;quot; &amp;quot;atdm:prop_silverkey&amp;quot; //the entity to spawn - in this case a key.&lt;br /&gt;
*&amp;quot;pos_attach6&amp;quot; &amp;quot;belt_back_right&amp;quot; //where the key will spawn on the Ai.&lt;br /&gt;
*&amp;quot;name_attach6&amp;quot; &amp;quot;door_key&amp;quot; //this gives &#039;attach6&#039; arg the name &amp;quot;door_key&amp;quot; and is the name the arg &amp;quot;used_by&amp;quot; will need, eg: &amp;quot;used_by&amp;quot; &amp;quot;door_key&amp;quot;&lt;br /&gt;
*&amp;quot;set inv_name on door_key&amp;quot; &amp;quot;Door key&amp;quot; //The name the key get when the play adds it to their inventory.&lt;br /&gt;
*&amp;quot;set name on door_key&amp;quot; &amp;quot;door_key&amp;quot; //here it gets a name to be used in the map in general.&lt;br /&gt;
&lt;br /&gt;
updated by bikerdude.&lt;br /&gt;
&lt;br /&gt;
====Master Key for Testing====&lt;br /&gt;
&lt;br /&gt;
By default, ALL locks can be opened by any key named &#039;&#039;key_master&#039;&#039;. Just create a key in your map, name it &#039;&#039;key_master&#039;&#039; and it becomes a master key for use while testing. Add inv_map_start 1 to it so it is in the player inventory at game start. Remember to delete it when your mission is finished.&lt;br /&gt;
&lt;br /&gt;
===Lockpicks===&lt;br /&gt;
&#039;&#039;by Baddcog&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are two lock pick types.&lt;br /&gt;
*&#039;&#039;&#039;s&#039;&#039;&#039;=snake&lt;br /&gt;
*&#039;&#039;&#039;t&#039;&#039;&#039;=triangular&lt;br /&gt;
&lt;br /&gt;
A lock can be set with many pins. Each pin has a click sequence and each needs a designated lockpick type (see above). Keep in mind that the lockpicking in The Darkmod is much more involved than in T2 or T3. The player has to listen to sounds or watch a handle or lockbar to know when a lock is pin is picked.&lt;br /&gt;
&lt;br /&gt;
This means that authors can be very evil and really frustrate the player, in which case their missions will probably not be played. So be nice to the player and don&#039;t waste your time. Use simple locks for the most part and save complicated locks for important sections and to build tension. Don&#039;t make the player have 20 pins to pick all with different lockpicks. In most cases 1 or 2 pins will suffice and it isn&#039;t necessary to use both lockpicks on every lock.&lt;br /&gt;
Also try to include a lock lever on lockboxes or chests, door handles will rotate as the pins are being picked. This gives the player visual clues to help with the picking (and essential in noisy environments where you can&#039;t hear the clicks.)&lt;br /&gt;
IMO this system is a huge leap foward for lockpicking but also has the ability to completely frustrate the player as stated above. Keep this in mind when designing your lockpick systems.&lt;br /&gt;
&lt;br /&gt;
These props go on the door itself, or the lid of a chest, eg,&lt;br /&gt;
*&#039;&#039;&#039;lock_pins&#039;&#039;&#039; 1327&lt;br /&gt;
*&#039;&#039;&#039;lock_picktype&#039;&#039;&#039; stts&lt;br /&gt;
&lt;br /&gt;
The lock_pins property specifies how many pins each lockpicktype has.&lt;br /&gt;
The lockpick_type property specifies how many times the player has to switch picks and which pick they have to use. You can see there must always be an equal number of lock_pins and lock_picktypes specified&lt;br /&gt;
&lt;br /&gt;
So looking at the example above we have lockpick_type s(snake), t(triangular), t(triangular), and s(snake). The player will have to use these lockpicks in this order. Once the snake lockpick&#039;s pins are open the player can advance to the triangular pick and so forth.&lt;br /&gt;
5 is added to every click sequence so 5 is the minimum click pattern even if you set it to 0.&lt;br /&gt;
In the example above the lockpins specify in order which pick types have how many pins, so the s pick has 1 + 5 = 6 clicks, the t pick has 8 and so on.&lt;br /&gt;
The above is a difficult lock and to avoid annoying the player it is best only used rarely on a special lock like an important big vault door. Ordinary footlockers and common doors can be just 1 or 2 click sequences, eg, lock_pins 2 and lock_picktype t means the player uses one pick and listens for the end of one sequence of 7 clicks.&lt;br /&gt;
&lt;br /&gt;
lockpick_rotate - is placed on the door. It is the amount the visible rotating handle or pin rotates while picking. For a rotating handle or lockbar normally ignore this and leave the default. During lockpicking it oscillates and progresses to the normal full turn of the handle. Example 0 45 0.&lt;br /&gt;
&lt;br /&gt;
lockpick_translate - is placed on the door. It is the amount the visible handle or pin moves in a straight line while picking. Use this if you have eg, a lockbar that you want to move in a straight line and not rotate, eg sliding catch. Example 0 -5 0&lt;br /&gt;
&lt;br /&gt;
By default, doors are pickable. If you don&#039;t set up the above lockpick spawnargs then it can&#039;t be picked. So there is normally no need to enable lockpicking - just set up the above spawnargs. There is a &#039;&#039;pickable&#039;&#039; spawnarg set to 1 by default. If set to 0 then the door becomes unpickable. But hard to think of an application except in testing or perhaps a special custom situation where it is switched by script perhaps.&lt;br /&gt;
&lt;br /&gt;
===Open, Partially Open, or Closed Door at Game Start===&lt;br /&gt;
&lt;br /&gt;
By default, doors are closed at game start. If you want a door to be already open or partially open then do the following.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note well: Create all doors in their &#039;&#039;closed&#039;&#039; position. Adjust as follows and they will automatically be at the open position when game starts.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Already Open Rotating Door:&lt;br /&gt;
* Select the door.&lt;br /&gt;
* Select the entity inspector&lt;br /&gt;
* Check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Select the &#039;&#039;open&#039;&#039; property&lt;br /&gt;
* Edit the value to 1 in the input box below and tick the check button&lt;br /&gt;
* The door will now be fully open at game start.&lt;br /&gt;
&lt;br /&gt;
* If you want it only partly open:&lt;br /&gt;
* Make sure its &#039;&#039;open&#039;&#039; property is set to 1 as above.&lt;br /&gt;
* Right click the entity inspector and select &#039;&#039;add property&#039;&#039; &lt;br /&gt;
* Click the + sign on the left of the top line where atdm:mover_door is listed to open the folder. (if atdm:mover_door is not listed then the entity was likely changed from eg, func_static. If so, save the map and reload to update the add property list)&lt;br /&gt;
*  scroll down, select &#039;&#039;start_rotate&#039;&#039; then click {{ok}}&lt;br /&gt;
* This adds it to the property list.&lt;br /&gt;
* Now select &#039;&#039;start_rotate&#039;&#039; in the property list.&lt;br /&gt;
* Edit the bottom line of the input box &#039;&#039;below&#039;&#039; the properties window to the angle you want in the same form as described in the &#039;&#039;Rotate Direction and Open Angle&#039;&#039; section. So for example, to have a door that has a fully open default &#039;&#039;rotate&#039;&#039; value of 0 90 0 to start only half open you would give it a &#039;&#039;start_rotate&#039;&#039; value of 0 45 0. &lt;br /&gt;
* In a similar way add the property &#039;&#039;first_frob_open&amp;quot;.&lt;br /&gt;
* Set it to 1 and a partly open door should then open fully on the first frob.&lt;br /&gt;
* Set it to 0 and a partly open door should close on the first frob.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Already Open Sliding Door:&lt;br /&gt;
* Select the door.&lt;br /&gt;
* Select the entity inspector&lt;br /&gt;
* Check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Select the &#039;&#039;open&#039;&#039; property&lt;br /&gt;
* Edit the value to 1 in the input box below and click {{check}} or press {{key-enter}}&lt;br /&gt;
* The door will now be fully open at game start.&lt;br /&gt;
&lt;br /&gt;
* If you want it only partly open:&lt;br /&gt;
* Right click the entity inspector and select &#039;&#039;add property&#039;&#039; &lt;br /&gt;
* Make sure its &#039;&#039;open&#039;&#039; property is set to 1&lt;br /&gt;
* Click the + sign on the left of the top line where atdm:mover_door is listed to open the folder.&lt;br /&gt;
*  scroll down, select &#039;&#039;start_position&#039;&#039; then click OK. (if atdm:mover_door is not listed then the entity was likely changed from eg, func_static. If so, save the map and reload to update the add property list)&lt;br /&gt;
* This adds it to the property list.&lt;br /&gt;
* Now select &#039;&#039;start_position&#039;&#039; in the property list.&lt;br /&gt;
* Edit the bottom line of the input box &#039;&#039;below&#039;&#039; the properties window to the position you want in the same form as described in the &#039;&#039;Sliding (Translation) Amount and Direction&#039;&#039; section. So for example, to have a door that has a fully open default &#039;&#039;translate&#039;&#039; value of 0 50 0 to start only half open you would give it a &#039;&#039;start_position&#039;&#039; value of 0 25 0.&lt;br /&gt;
* In a similar way add the property &#039;&#039;first_frob_open&amp;quot;.&lt;br /&gt;
* Set it to 1 and a partly open door should then open fully on the first frob.&lt;br /&gt;
* Set it to 0 and a partly open door should close on the first frob.&lt;br /&gt;
&lt;br /&gt;
===Rotation Centre, Pivot, Hinge point===&lt;br /&gt;
&lt;br /&gt;
The centre of rotation of a door is at the origin point of its entity and the door rotates with reference to the orientation of that origin point, not the world map. See &#039;&#039;Rotate Direction...&#039;&#039; for more about that. This section only deals with the &#039;&#039;position&#039;&#039; of the rotation centre in the door.&lt;br /&gt;
&lt;br /&gt;
Model Door Centre of Rotation:&amp;lt;br&amp;gt;&lt;br /&gt;
The centre of rotation of a model door cannot be changed within Dark Radiant. Because a model door rotates around the centre &#039;spine&#039; of its back edge this will cause clipping (penetration into solid) as in this example (where the door is set to open to 89 degrees for clarity):&amp;lt;BR&amp;gt;[[Image:modelClipping.jpg]]&amp;lt;BR&amp;gt; So care is needed with placement. You will not normally position a door right next to a wall as in the example but against a shallow frame so clipping will barely be noticeable but either way it can be fixed. You can correct it by adding a translation (see &#039;&#039;Sliding (Translation) Directions&#039;&#039;) value of half the door width in the direction of the door handle. This will gently move the door out as it rotates to clear any solid on that side as in this diagram:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:DoorClip.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Half a door width will typically be about 2. Any &#039;attachments&#039; such as door handles will still synchronize with the door movement whether the door is rotating, sliding, or both.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Brush Door Centre of Rotation:&amp;lt;br&amp;gt;&lt;br /&gt;
The centre of rotation of a brush door &#039;&#039;can&#039;&#039; be changed. The default origin point of a brush is at its centre. Therefore a default rotating brush door will rotate around its centre when you first create it. So, mappers will commonly need to move that rotation point to a corner or even to some other offset position for example, for an openable window using the door function.&lt;br /&gt;
&lt;br /&gt;
Put simply, to move the rotation point of a brush door you need to move the entity origin relative to the brush(es.)&lt;br /&gt;
&lt;br /&gt;
Moving the entity origin (centre of rotation) relative to a brush door:&lt;br /&gt;
&lt;br /&gt;
* Select the brush door&lt;br /&gt;
* Select &#039;&#039;Vertices mode&#039;&#039; (default shortcut key is {{key|name=V}} or button on top toolbar &#039;Select Vertices&#039;)&lt;br /&gt;
* Drag the door&#039;s entity origin to the point where you want the door to rotate. This should be on the corner on the leading edge side (the side to where the door is opening.) to avoid clipping as in this diagram....&lt;br /&gt;
[[Image:getCorner.jpg]]&lt;br /&gt;
* You should now find that door rotates around that point.&lt;br /&gt;
&lt;br /&gt;
===Rotate Direction and Open Angle===&lt;br /&gt;
&lt;br /&gt;
By default, rotating doors open anti-clockwise (viewed from above) by 90 degrees from the start orientation. If you want to change this edit the &#039;&#039;rotate&#039;&#039; property in the entity inspector. Don&#039;t confuse this &#039;&#039;rotate&#039;&#039; property with the &#039;&#039;rotation&#039;&#039; property. In the entity inspector remember that to see the inherited rotate property you must check the box &#039;Show inherited properties&#039;.&lt;br /&gt;
&lt;br /&gt;
The three values shown in the rotate property are degrees from the closed position around Y Z X &#039;&#039;entity origin axes&#039;&#039; (NOT absolute map axes) and so include any start &#039;&#039;rotation&#039;&#039;. So the Z value is the axis vertical to the entity origin. If you tilt a model door over in Dark Radiant then its entity origin tilts too so the Z axis is tilted too (with respect to the world map vertical.) So with a normally opening model door if you lay it flat on its back it will open upwards and not rotate around on the floor. But a brush door must be treated differently...&lt;br /&gt;
&lt;br /&gt;
If you turn a brush door using the normal Dark Radiant rotate tool or the Transform Dialog (accessed via a shortcut key) then it only turns the brush &#039;&#039;relative&#039;&#039; to the entity. So, because the entity origin is by default aligned with the world map then &#039;&#039;in most cases&#039;&#039; you can regard a brush door as rotating with respect to the world map if you wish. But there will be a problem when you come to rotations that are not around the main Y Z X axes of the map, for instance a drawbridge that lowers down to the south east. You might think you can combine Y Z X values to get the result you want - and this can be done (for south east use 45 45 90) but it is a bit of a kludge and the drawbridge twists eccentrically as it lowers (though it arrives correctly!) So for such cases you need to turn the entity itself so its start position is facing south east. You can then just use 0 0 90 to lower the drawbridge perfectly because its Y axis is now pointing south east. To turn the entity you must type or paste the rotation values in directly because using the Dark Radiant rotation tool or Transform Dialog will only turn the brush not the entity. The values are rather lengthy (south east is 0.707107 0.707107 0 -0.707107 0.707107 0 0 0 1) so probably the easiest way is to create a temporary model door, turn it how you want, then select its rotation property. If you now deselect and re-select your brush door then that property will still be in the entity inspector input box and you need only click the check(tick) box to add it to the brush door. NOTE: &#039;&#039;neither the entity nor the brush will show as turned in Dark Radiant.&#039;&#039; Only the rotation property in the entity inspector will indicate the orientation. Instead of a rotated &#039;&#039;construction&#039;&#039;, regard it as a rotation &#039;&#039;instruction&#039;&#039; for when the map is compiled.&lt;br /&gt;
&lt;br /&gt;
These are the rotate property fields. Remember they are all with reference to the door&#039;s entity &#039;&#039;not&#039;&#039; the world map. Since there is no absolute frame of reference I indicate them here as if the entity is aligned with the world map axes...&lt;br /&gt;
&lt;br /&gt;
* Positive Y = Open clockwise (Dark Radiant grid front view, looking north)&lt;br /&gt;
* Negative Y = Open anti-clockwise (Dark Radiant grid front view, looking north)&lt;br /&gt;
&lt;br /&gt;
* Positive Z = Open anti-clockwise (Dark Radiant grid top view, looking down)&lt;br /&gt;
* Negative Z = Open clockwise (Dark Radiant grid top view, looking down)&lt;br /&gt;
&lt;br /&gt;
* Positive X = Open anti-clockwise (Dark Radiant grid side view, looking west)&lt;br /&gt;
* Negative X = Open clockwise (Dark Radiant grid side view, looking west)&lt;br /&gt;
&lt;br /&gt;
The values are in the range -179 to +180. Positive values give an anti-clockwise opening rotation (looking down from above) and negative values give a clockwise opening rotation. The value 180 is unique in that it continues in an anti-clockwise rotation when closing rather than returning clockwise so might be used if you can think of some object that might need such a motion when frobbed!&lt;br /&gt;
&lt;br /&gt;
Edit the rotate value by selecting it and using the input box at the bottom and clicking the check(tick) button. That will change the angle the door will open to. Note that the line with the original default of 0 90 0 will still be there but your new entry will be added on a separate line and that is the one that will work in the game. CAUTION: when adjusting later make sure you have your new line selected and not the original! If you do it will appear to change but your first setting will remain unaltered.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
* 0 90 0 = Opens anti-clockwise round the entity&#039;s &#039;vertical&#039; to 90 degrees - typical default vertical door.&lt;br /&gt;
* 0 0 90 = Lowers a drawbridge from the entity &#039;vertical&#039; to horizontal.&lt;br /&gt;
* 0 0 -45 = Opens clockwise by 45 degrees viewed from the east side. This might suit a skylight in a sloping roof.&lt;br /&gt;
&lt;br /&gt;
Combinations can be used and also combined with slide motions (see &#039;&#039;&#039;Sliding (Translation) Directions&#039;&#039;&#039;) to produce exotic and useful motions. A door opening against an upward-sloping floor can thus have a &#039;&#039;lifting hinge&#039;&#039; and raise up slightly to clear the floor; a door can rotate towards you and slide back to one side very effectively.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sliding (Translation) Amount and Direction===&lt;br /&gt;
&lt;br /&gt;
By default a Dark Mod door will rotate open. For most sliding doors you want to stop them rotating as well as make them slide. You cannot delete (remove) the &#039;&#039;rotate&#039;&#039; property - you have to set the &#039;&#039;rotate&#039;&#039; property to 0 0 0 to stop a door rotating (see &#039;&#039;Rotate Direction and Open Angle&#039;&#039;.)&lt;br /&gt;
&lt;br /&gt;
Now edit the &#039;&#039;translate&#039;&#039; property value by selecting it (remember to have inherited properties box checked) and using the input box at the bottom and clicking the check(tick) button. That will change the distance the door will slide to. Note that the line with the original default of 0 0 0 will still be there but your new entry will be added on a separate line and that is the one that will work in the game. CAUTION: when adjusting later make sure you have your new line selected and not the original! If you do it will appear to change but your first setting will remain unaltered.&lt;br /&gt;
&lt;br /&gt;
Typically (but not always) you will want your sliding door to slide the width of the door. The three values in the translate property by default are 0 0 0 and are X Y Z &#039;&#039;absolute map&#039;&#039; values (irrespective of door orientation) where:&lt;br /&gt;
&lt;br /&gt;
* Positive X = Slide East (Right side of Dark Radiant grid in top view)&lt;br /&gt;
* Negative X = Slide West (Left side of Dark Radiant grid in top view)&lt;br /&gt;
* Positive Y = Slide North (top of Dark Radiant grid in top view)&lt;br /&gt;
* Negative Y = Slide South (bottom of Dark Radiant grid in top view)&lt;br /&gt;
* Positive Z = Slide Up (Top of Dark Radiant grid in side views)&lt;br /&gt;
* Negative Z = Slide Down (Bottom of Dark Radiant grid in side views)&lt;br /&gt;
&lt;br /&gt;
So for a 50 unit wide door you want to slide fully to the east you would use 50 0 0 for the translate property values. A 100 unit portcullis sliding vertically up would need 0 0 100 to be fully raised.&lt;br /&gt;
&lt;br /&gt;
=== Doors Collision/Push Behaviour ===&lt;br /&gt;
Doors are pushing all entities by default, except for the player. Doors will also stop moving when anything blocks their movement. However, this default behaviour can be changed by setting the according spawnargs:&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;push_player&#039;&#039;&#039; to &#039;&#039;&#039;1&#039;&#039;&#039; to let the player be pushed by this door:&lt;br /&gt;
 &amp;quot;push_player&amp;quot;  &amp;quot;1&amp;quot;  // Push the player too (default is off)&lt;br /&gt;
&lt;br /&gt;
By default &#039;&#039;&#039;stop_when_blocked&#039;&#039;&#039; is set to 1 and if a door is blocked by an entity then even if the entity is removed afterwards, the door stays still. The next frob will close the door.&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;stop_when_blocked&#039;&#039;&#039; to &#039;&#039;&#039;0&#039;&#039;&#039; to prevent the door from ending the opening sequence when anything blocks its way. It will still pause - but continue to open if the block is removed.&lt;br /&gt;
 &amp;quot;stop_when_blocked&amp;quot;   &amp;quot;0&amp;quot;  // door keeps moving after being blocked (default is off)&lt;br /&gt;
With this setting, doors will still stop at blocking entities (the player, for instance), but will continue to move when the entity clears the way.&lt;br /&gt;
&lt;br /&gt;
There is another spawnarg which stops a door pushing a moveable. Apply this to the &#039;&#039;moveable&#039;&#039; not the door...&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;notPushable&amp;quot;   &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Door Sounds===&lt;br /&gt;
&lt;br /&gt;
The sound of doors opening and closing is set in the snd_open and snd_close properties. You can silence them by setting the following properties as shown:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_open nosound&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;snd_close nosound&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t just use a dash - as it seems to cause a sound of its own.&lt;br /&gt;
&lt;br /&gt;
The above sounds are triggered as the door begins to open (eg, unlatch sound) and when it finally closed (eg, slam.) For special doors that need an on-going sound, eg, a big stone slab that moves slowly, then use:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_move&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_locked&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The sound played when a player tries to open a locked door.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_unlock string&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The sound played when a player unlocks a door.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sound Propagation through Doors and Doorways===&lt;br /&gt;
&lt;br /&gt;
The sound volume reduction to the player (ie, the sound the player hears) is fixed and constant in a cvar which adds a distance factor to the original sound. It is recommended that you do not change that because it will affect other FMs. Currently there is no way to change the way that sound to the player is reduced through doors and doorways.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sound propagation to AI, eg, impact sounds or guard yells is treated separately:&lt;br /&gt;
&lt;br /&gt;
Sound propagation to AI relies on visportals. For details study [[Sound Propagation: Part 1]] and [[Sound Propagation: Part 2]] as well as [[Visportals]] This tutorial will just cover the relevant sound and sound propagation &#039;&#039;properties&#039;&#039; of doors. If you set the &#039;&#039;show inherited properties&#039;&#039; box in the entity inspector you can see them as described here.&lt;br /&gt;
&lt;br /&gt;
Remember, the following have no effect on what the player hears through a door or doorway.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;loss_open&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Drop in sound volume in dB propagated to AI (not player) when going through an open door. (default 1dB)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;loss_closed&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Drop in sound volume in dB propagated to AI (not player) when going through a closed door. (default 15dB) You would want to set this very high to block all sound with a thick door but very low for a barred gate for example.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;loss_double_open&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Drop in sound volume in dB propagated to AI (not player) when going through double doors when only one is open. (default 1dB)&lt;br /&gt;
&lt;br /&gt;
There are also various sound properties for lockpicking:&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;snd_lockpick_pin_1 through 14&#039;&#039; and &#039;&#039;snd_lockpick_pin_success&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Speed of Door Opening and Closing===&lt;br /&gt;
&lt;br /&gt;
Rotating Door Speed:&amp;lt;br&amp;gt;&lt;br /&gt;
At the time of writing, the time a rotating door takes to open or close is set in the &#039;&#039;move_time&#039;&#039; property whatever its maximum open angle. So with rotation set at say 150 degrees the door just opens faster than at say 80 degrees. This is likely to be changed to a constant angular velocity so check to see if there a new property added if the following no longer works. The problem is that if an interruptable (see Extra Notes) door is frobbed while in motion it stops; another frob will reverse the motion - so even if the door is only open a crack it will still take the full time to close and vice versa.&lt;br /&gt;
&lt;br /&gt;
To change the time a rotating door takes to open or close, make sure the door is selected then...&lt;br /&gt;
&lt;br /&gt;
* Right click the entity inspector and check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Scroll down, select &#039;&#039;move_time&#039;&#039;&lt;br /&gt;
* Edit the second line of the input box &#039;&#039;below&#039;&#039; the properties window to the time you want.&lt;br /&gt;
* The time is in seconds and decimal fractions can be used.&lt;br /&gt;
* The default is 1 second and if set to this then the door opens and closes in one second whatever the maximum open angle, great or small.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sliding Door Speed:&amp;lt;br&amp;gt;&lt;br /&gt;
The speed of a sliding door is set in the &#039;&#039;translate_speed&#039;&#039; property. To add this, make sure the door is selected then...&lt;br /&gt;
&lt;br /&gt;
* Right click the entity inspector and check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Scroll down, select &#039;&#039;translate_speed&#039;&#039;&lt;br /&gt;
* Edit the second line of the input box &#039;&#039;below&#039;&#039; the properties window to the speed you want.&lt;br /&gt;
* The speed is in Dark Radiant grid units per second.&lt;br /&gt;
* The default is 0 and if set to this then the door slides open in one second whatever the distance, great or small.&lt;br /&gt;
* CAUTION: If you later change the door back to a rotating door then delete the &#039;&#039;translate_speed&#039;&#039; property or ensure it is set to 0 as (at the time of writing but this will be fixed) a bug makes rotating doors open and close instantly. (Note: you can still mix sliding with rotating but check - this bug might only be if &#039;&#039;translate&#039;&#039; is set to 0 0 0)&lt;br /&gt;
&lt;br /&gt;
===Visportals and Doors===&lt;br /&gt;
&lt;br /&gt;
A visportal face surrounded by solid at its edges and in contact with a door is closed when the door is closed and enabled when the door is open. In most cases you will place a visportal in contact with a working door unless you can see through the door (such as a true glass door or barred gate.) For full details see [[Visportals]].&lt;br /&gt;
&lt;br /&gt;
==Auto-Closing/Opening Doors==&lt;br /&gt;
Doors that automatically close after being open for some time are easy to setup: Each frobmover entity supports these spawnargs:&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;auto_close_time&amp;quot;:Set this to something &amp;gt;= 0 to let the mover automatically close (again) after this time when being fully opened (measured in seconds). Defaults to -1, which means &#039;do not autoclose&#039;. The event is also activated when the mover starts at the open position at map start.&lt;br /&gt;
;&amp;quot;auto_open_time&amp;quot;:&amp;quot;Set this to something &amp;gt;= 0 to let the mover automatically open (again) after this time when being fully closed (measured in seconds). Defaults to -1, which means &#039;do not autoopen&#039;. The event is also activated when the mover starts at the closed position at map start.&lt;br /&gt;
&lt;br /&gt;
Old text:&lt;br /&gt;
&lt;br /&gt;
Note that auto-closing doors and AI closing doors behind them, is very much work in progress at the time of writing, so for now, this is another method that works. Check first if true AI closing of doors is working yet before bothering with this!&lt;br /&gt;
&lt;br /&gt;
I have one door that I particularly want the AI to close as there is a bit of frame lag inside if not. So I set this up and it works good as an auto-closing door - not as good as a true AI closing door as it will auto close when the player goes through as well but it does look very effective to see AI going through and closing the door behind them. Not tested exhaustively so I don&#039;t know if there could be any downside. Here&#039;s what to do....&lt;br /&gt;
&lt;br /&gt;
First a quick summary to make it more clear:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;A trigger_relay is used both as a relay AND carries a stim. We put the trigger_relay with its stim in the path of the open door. The door has a response property. When it opens and contacts the stim its response is to send a signal back to the relay. The relay pauses then closes the door...&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* First, optionally give your door a suitable name like autodoor1, whatever.&lt;br /&gt;
* Copy that name to the clipboard.&lt;br /&gt;
&lt;br /&gt;
Next we need a relay with a delay:&lt;br /&gt;
&lt;br /&gt;
* Create entity &amp;gt; darkmod &amp;gt; trigger_relay&lt;br /&gt;
&lt;br /&gt;
* Place it roughly at the position the door will be at when open and to be on the safe side 3/4th of the way to the far end of the door (not the hinge end) to give max distance from the close door.&lt;br /&gt;
&lt;br /&gt;
* Add the property &#039;target&#039; and paste in the door name you just copied.&lt;br /&gt;
&lt;br /&gt;
* Give the relay itself a name, eg, autoDoor_relay_1, and copy that name to the clipboard, you&#039;ll need that too in a bit.&lt;br /&gt;
&lt;br /&gt;
* Add the property delay and the value 3 - this is the delay in seconds before the door will close; 3 seems about right but 2 might be worth a try because to that 3 is added a random value between 0 to 0.5 seconds from the Time Interval we entered for the stim firings.&lt;br /&gt;
&lt;br /&gt;
* Add the property &#039;wait&#039; and the value 3. This is the time before it can work again in seconds. If you set it too low then in theory the door might trigger again but in this situation I don&#039;t think it&#039;s possible. Too long, eg, one minute, and it won&#039;t work if the AI goes back through the door before then. If this value is -1 then the whole thing will only work ONCE so might be used for an AI who goes through once, closes it behind him, but you don&#039;t want it to be an autodoor thereafter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That&#039;s the relay, now we add a stim to it:&lt;br /&gt;
&lt;br /&gt;
* Still with the trigger relay selected, go to {{menu|Entity|Stim/Response}}&lt;br /&gt;
&lt;br /&gt;
* Custom stim tab.&lt;br /&gt;
&lt;br /&gt;
* Click Add stim type, select the new custom stim type you just made at the bottom of the list and type in eg, autoDoorStim at top right in the input box.&lt;br /&gt;
&lt;br /&gt;
* Click the stim tab and the little drop down arrow against the &#039;type&#039; selector at bottom left and you should see your new custom stim name. Select it.&lt;br /&gt;
&lt;br /&gt;
* Select the new autoDoorStim in the list and on the right you need only type in the radius box 15.0 There is quite a lot of room for error. I had it working on 10 and also on 25. The value should be less than the distance to the closed door else it will trigger open! But no so small that the door might not reach it.&lt;br /&gt;
&lt;br /&gt;
* Select the check box for Time Interval and enter 500 (millisecs.) This is so it doesn&#039;t keep firing more frequently than is necessary. This stim will be firing all through your mission whether the door is used or not so if you had dozens of these then maybe it would affect performance. Too big a number and there may be a long delay before the door shuts - but it will be random depending on the next time the stim happens to fire. We&#039;ll control the delay we want more precisely later.&lt;br /&gt;
&lt;br /&gt;
* Click {{ok}} to confirm it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That&#039;s the stim set up, now for the response to it which is put on the door....&lt;br /&gt;
&lt;br /&gt;
* Select the doorm, then use {{menu|Entity|Stim/response}} and select the response tab.&lt;br /&gt;
&lt;br /&gt;
* Click the little drop down arrow against the &#039;type&#039; selector at bottom left and you should see your new custom stim name. Select it.&lt;br /&gt;
&lt;br /&gt;
* Right click in the big &#039;&#039;Response Effects&#039;&#039; box on the bottom right of the panel.&lt;br /&gt;
&lt;br /&gt;
* Add New Effect and you should get a default &#039;Activate Response&#039; response added to the list. Double click it.&lt;br /&gt;
&lt;br /&gt;
* In the Effect selector at the stop select &#039;Trigger&#039;&lt;br /&gt;
&lt;br /&gt;
* in the Target box, paste in the name of the relay you copied or you can select it from the list at the little arrow.&lt;br /&gt;
&lt;br /&gt;
* Leave the Activator box empty.&lt;br /&gt;
&lt;br /&gt;
* Click {{apply}} and then {{ok}} on the main S &amp;amp; R panel bottom right.&lt;br /&gt;
&lt;br /&gt;
It should now work. No need to wait for an AI, just frob the door and watch it close itself. If not, check the position of the stim brush is close to where the door stops when open.&lt;br /&gt;
&lt;br /&gt;
==AI Door management==&lt;br /&gt;
&lt;br /&gt;
See also [[#Keys_carried_by_AI]] above.&lt;br /&gt;
&lt;br /&gt;
By default AI will open doors and close them behind them. Here are some spawnargs the mapper can use to modify that behaviour:&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;ai_should_not_handle&amp;quot; :If set to 1, AI will not attempt to handle it and add it to the forbidden areas when closed (so that it doesn&#039;t try to path through). They might still walk through the door when it is open though. Useful if you have some special use door that you don&#039;t want the AI to operate.&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;ai_should_not_close&amp;quot; :If set to 1, AI will not close the door behind them unless it obstructs them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To get AI to unlock/relock specific doors there are two methods currently:&lt;br /&gt;
&lt;br /&gt;
1. add the following spawnarg/value to the AI:&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;can_unlock1&amp;quot; &#039;&#039;&amp;lt;doorname&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do NOT use can_unlock_1.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For additional doors on the same AI use &#039;&#039;can_unlock2 doorname&#039;&#039; etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. In the editor position an actual key that works for that door on the AI and also add to the key bind &amp;lt;AIname&amp;gt; and also bindToJoint LeftHips_Dummy (see other joints names elsewhere in wiki.) Currently, if the player pickpockets the key then the AI seeks an alternate route but otherwise does nothing (?) This may be upgraded in the future to better strategies.&lt;br /&gt;
&lt;br /&gt;
3. There is the possibility in the future of an additional method which would just use special attach spawnargs to make the above easier. The key would spawn at the correct position at game start. Watch this space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Door handling positions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is also possible to set custom door handling positions for the AI. This is especially useful when the standard routine that lets the AI choose their standing positions while opening and closing the door fails, leaving them circling around in front of the door helplessly.&lt;br /&gt;
&lt;br /&gt;
Place a movers &amp;gt; atdm:door_handling_position entity where you want the AI to stand while opening/closing the door from this side.(it can be found in the movers folder in the entity chooser)&lt;br /&gt;
&lt;br /&gt;
On the door, you need to set the spawn arg &amp;quot;door_handle_position&amp;quot; &amp;quot;name_of_door_handling_position&amp;quot; You can also place a door handling position on each side of the door, the AI should automatically choose the right one. In this case, you need to set spawn args with &amp;quot;door_handle_position_1&amp;quot; etc and the corresponding names of the door handling position entities on the door.&lt;br /&gt;
&lt;br /&gt;
The door handling positions can also carry spawn args that define the behaviour of the AI, which are useful for example for doors that can only be openend or locked from one side:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_open&amp;quot;&#039;&#039;&#039; If set to true, the AI will not try to open the door from this side (but still walk through when the door is already open)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_close&amp;quot;&#039;&#039;&#039; If set to true, the AI will not attempt to close the door from this side&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_unlock&amp;quot;&#039;&#039;&#039; If set true, the AI will not be able to unlock the door from this side, but still use it when it is not locked.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_lock&amp;quot;&#039;&#039;&#039; If this is set true, the AI will not lock the door from this side.&lt;br /&gt;
&lt;br /&gt;
==Doors as Triggers==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;by Ishtvan &amp;amp; greebo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Doors (or any binary frob mover, buttons, levers, etc) now have the option to trigger their target on closing or opening. (For definition purposes, a button is defined as &amp;quot;closed&amp;quot; in the state when it starts out and &amp;quot;open&amp;quot; in the state you press it down to. I know that&#039;s a little non-intuitive, but it came from deriving from doors).&lt;br /&gt;
&lt;br /&gt;
New spawnargs on frob movers:&lt;br /&gt;
;&amp;quot;trigger_on_open&amp;quot; :If set to 1, this binary mover will trigger its targets when it starts out completely closed and is opened.&lt;br /&gt;
;&amp;quot;trigger_when_opened&amp;quot;:If set to 1, this binary mover will trigger its targets when it is completely opened. Code defaults to 0.&lt;br /&gt;
;&amp;quot;trigger_on_close&amp;quot;:If set to 1, this binary mover will trigger its targets when it completely closes after being open.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Skins: A Wide Variety of Door Textures==&lt;br /&gt;
&lt;br /&gt;
This is to remind you that as with many Dark Mod models, there is a wide range of extras skins (textures) available for door models. There are now several basic door entities of different sizes so choose your size first. Then enter the spawnarg: skin with any temporary value. Now select it and click the skin button at the bottom of Dark Radiant&#039;s Entity Inspector and you will find a large of range of skin textures from which to select to give you a choice of appearances for your door.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Extra Notes==&lt;br /&gt;
The property &#039;&#039;interruptable&#039;&#039; determines whether a door can be stopped by frobbing while it is opening or closing. So by frobbing then frobbing again, the player can open a door to any position, eg, slightly ajar to peek through.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;func_darkmod_door&#039;&#039; is no longer used (just in case you come across it in the Dark Mod forums or wiki.) The Doom func_door is still available but for Dark Mod, but &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; is the entity to use.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=List_of_shaderParm_variables&amp;diff=12167</id>
		<title>List of shaderParm variables</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=List_of_shaderParm_variables&amp;diff=12167"/>
		<updated>2011-01-30T20:09:32Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* List of shaderParms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Variables named &#039;&#039;&#039;shaderParm0&#039;&#039;&#039; to &#039;&#039;&#039;shaderParm11&#039;&#039;&#039; influence the rendering of certain materials. They are either set once in the map editor for some specific entity, or at run-time by various scripts or the C++ code.&lt;br /&gt;
&lt;br /&gt;
Inside material definitions, these can be accessed via &#039;&#039;&#039;parm0&#039;&#039;&#039; ... &#039;&#039;&#039;parm11&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The parms are on a per-entity base, so you can f.i. influence the material (and thus color) of entities or the color of the light.&lt;br /&gt;
&lt;br /&gt;
See also the [[list of global variables]].&lt;br /&gt;
&lt;br /&gt;
== List of shaderParms ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=1 cellpadding=5 cellspacing=0&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#ffdead|#&lt;br /&gt;
!bgcolor=#ffdead|Value&lt;br /&gt;
!bgcolor=#ffdead|Used by&lt;br /&gt;
!bgcolor=#ffdead|Type&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0.00 to 1.00&lt;br /&gt;
|Red value set by [[_color]] spawnarg in the editor&lt;br /&gt;
|once&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0.00 to 1.00&lt;br /&gt;
|Green value set by [[_color]] spawnarg in the editor&lt;br /&gt;
|once&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0.00 to 1.00&lt;br /&gt;
|Blue value set by [[_color]] spawnarg in the editor&lt;br /&gt;
|once&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0.00 to 1.00 (or to X.yz)&lt;br /&gt;
Set by spawnarg shaderParm3 on the entity in the editor.&lt;br /&gt;
|Materials: Alpha (transparency) value, eg, alphatest 0.8. Also used in some LOD materials as the alpha threshold, in this case the engine adjusts the value between 0 and 1.0 at runtime depending on distance to the player.&lt;br /&gt;
Foglights: Distance in units beyond which fog is completely opaque (so higher values make fog thinner.)&lt;br /&gt;
|once&amp;lt;br&amp;gt;run-time&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|0 to 1&lt;br /&gt;
|set shaderparm4 on flickering lights with a value 0 to 1 to vary the flicker offset so they don&#039;t all flicker in sync.&lt;br /&gt;
|?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|about 0.05 .. 0.5&lt;br /&gt;
|Used by [[atdm:liquid_water]] entities to control the (translation) speed of the water waves. Default is 0.1.&lt;br /&gt;
|once&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|about 0.5 .. 3&lt;br /&gt;
|Used by [[atdm:liquid_water]] entities to control the hight of the vertex waves. Default is 1.5.&lt;br /&gt;
|once&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|0..1 (brightness)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
0..1 (speed)&lt;br /&gt;
|Used by the moon-light textures in &amp;lt;code&amp;gt;textures/darkmod/sfx/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also used by some tree entities to vary leaf movement speed, eg, for wind. See [[Trees and how to make custom ones]]&lt;br /&gt;
|once&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|0..360&lt;br /&gt;
|Used by the clock hand decals to mimick time-keeping&lt;br /&gt;
|run-time by script&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|0 or 1&lt;br /&gt;
|non-zero when something is highlighted for frob. This is used by material definitions to make materials &amp;quot;light up&amp;quot; when entities are in the frob-highlight.&lt;br /&gt;
|run-time&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* The [[list of global variables]]&lt;br /&gt;
* [[:Category:Spawnargs|List of all spawnargs]]&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Shop&amp;diff=12060</id>
		<title>Shop</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Shop&amp;diff=12060"/>
		<updated>2011-01-24T14:15:50Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Preventing the player dropping critical items */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{todo}} &amp;lt;!-- needs cleanign up talking about code changes and turn this into a proper step-by-step tutorial from the mappers point of view --&amp;gt;&lt;br /&gt;
&#039;&#039;originally posted by joebarnin&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Click here for a [[default purchasable items]] template.&lt;br /&gt;
&lt;br /&gt;
==How to NOT show the shop==&lt;br /&gt;
&lt;br /&gt;
The shop shows by default at mission start. If you don&#039;t want it then add this spawnarg and value to your map&#039;s worldspawn:&lt;br /&gt;
&lt;br /&gt;
shop_skip 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
I added code support for shop entities to be placed the map, like difficulty settings or objectives entities.&lt;br /&gt;
&lt;br /&gt;
- The entity is called atdm:shop.&lt;br /&gt;
- The spawnarg format is the same as for the worldspawn.&lt;br /&gt;
- Settings on Worldspawn are still supported, for &amp;quot;backwards&amp;quot; compatibility.&lt;br /&gt;
- Multiple atdm:shop entities can be added to the map, all of them are considered.&lt;br /&gt;
&lt;br /&gt;
Additionally, I refactored the shop parsing code, so that a &amp;quot;gap&amp;quot; in the spawnarg numbering doesn&#039;t stop the parser. For instance, it&#039;s now possible to do something like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;shopItem_1_0_item&amp;quot; &amp;quot;atdm:weapon_broadhead&amp;quot;&lt;br /&gt;
 &amp;quot;shopItem_1_0_qty&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
 &amp;quot;shopItem_3_0_item&amp;quot; &amp;quot;atdm:weapon_waterarrow&amp;quot;&lt;br /&gt;
 &amp;quot;shopItem_3_0_qty&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note the missing &amp;quot;2&amp;quot; in the indexing. The parser just continues, which should make prefabbing easier and set up more robust against user errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting up Shop==&lt;br /&gt;
&lt;br /&gt;
Add an atdm:shop entity to your map (probably in the &amp;quot;blue room&amp;quot;).  You can add the following lines in the editor, but it might be easier to load up your map file in a text editor, find the adtm:shop entity, and cut and paste.&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;shop_gold_start&amp;quot; &amp;quot;700&amp;quot;&lt;br /&gt;
 &amp;quot;shopItem_1_item&amp;quot; &amp;quot;atdm:playertools_flashbomb&amp;quot;&lt;br /&gt;
 &amp;quot;shopItem_1_qty&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;shopItem_2_item&amp;quot; &amp;quot;atdm:weapon_waterarrow&amp;quot;&lt;br /&gt;
 &amp;quot;shopItem_2_0_qty&amp;quot; &amp;quot;5&amp;quot;&lt;br /&gt;
 &amp;quot;shopItem_2_1_qty&amp;quot; &amp;quot;3&amp;quot;&lt;br /&gt;
 &amp;quot;shopItem_2_2_qty&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
 &amp;quot;shopItem_2_cost&amp;quot; &amp;quot;225&amp;quot;&lt;br /&gt;
 &amp;quot;startingItem_1_item&amp;quot; &amp;quot;atdm:weapon_broadsword&amp;quot;&lt;br /&gt;
 &amp;quot;startingItem_1_qty&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
 &amp;quot;startingItem_2_item&amp;quot; &amp;quot;atdm:weapon_blackjack&amp;quot;&lt;br /&gt;
 &amp;quot;startingItem_2_qty&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
 &amp;quot;startingItem_3_item&amp;quot; &amp;quot;atdm : playertools_health_potion&amp;quot; (remove the spaces around the colon)&lt;br /&gt;
 &amp;quot;startingItem_3_0_qty&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
 &amp;quot;startingItem_3_1_qty&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
 &amp;quot;startingItem_3_2_qty&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 _# : item number, starting from 1. No gaps.&lt;br /&gt;
 _#_X: X is the skill (difficulty) level this value applies to. So in the above example, the shop contains 5 water arrows at &lt;br /&gt;
 easy, 3 at medium, 1 at hard (difficulty goes from 0 (easy) to 2 (hard)). If you leave off a skill, quantity zero is assumed &lt;br /&gt;
 (e.g., if there was no &amp;quot;shopItem_2_2_qty&amp;quot;, then there would be zero arrows for sale at hard level). Note you can have cost &lt;br /&gt;
 vary by difficulty as well. And starting item quantities too.&lt;br /&gt;
 _item: the &amp;quot;classname&amp;quot; listed in the entitydef (see tdm_shopitems.def).&lt;br /&gt;
 _qty: how many are for sale (or, if a starting item, how many to start with)&lt;br /&gt;
 _cost field is optional (otherwise it uses the default cost defined in tdm shopitems.def).&lt;br /&gt;
&lt;br /&gt;
Okay, now you&#039;ve updated your map with something like this, so get back to the Shop and buy what you want. Start the mission. You should have the appropriate number of items.&lt;br /&gt;
&lt;br /&gt;
tdm-shopitems.def defines the list of the common items that can be purchased (or that can be in the Starting Items list). This file documents the format of ShopItem entityDefs, so if you want to add unique items to your own .def file, you can.&lt;br /&gt;
&lt;br /&gt;
shop.cpp and shop.h are new files that define CShop and CShopItems, classes for dealing with the Shop screen.&lt;br /&gt;
&lt;br /&gt;
player.cpp was updated to create the purchased items&lt;br /&gt;
&lt;br /&gt;
game_local.cpp was modified to handle the Main Menu commands. This was the only way I could figure out to have the shop talk to our code. Apparently the id code behaves differently when your in the main menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Preventing the player dropping critical items==&lt;br /&gt;
&lt;br /&gt;
There is a cannot drop&#039; option for start items, eg, a spawnarg, &amp;quot;startingitem_15_2_candrop&amp;quot; &amp;quot;0&amp;quot;. For use with mission-critical items (like lockpicks) so full start equipment can be shown in the shop without risk the player will drop something crucial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{tutorial-scripting}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Voices&amp;diff=12049</id>
		<title>Voices</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Voices&amp;diff=12049"/>
		<updated>2011-01-22T19:50:07Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* AI Characters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== AI Vocal Sets ==&lt;br /&gt;
&lt;br /&gt;
Although AI come with a default vocal set, mappers can easily modify what kind of voice each AI uses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AI Characters ==&lt;br /&gt;
&lt;br /&gt;
In order to create a variety of character types, vocal sets have been created for various &amp;quot;characters&amp;quot;. A character, in this sense, is a distinctive voice, personality, and way of speaking. The vocal set of any particular character can technically be used for any AI type, though some have been tailored to suit particular AI better than others. &lt;br /&gt;
&lt;br /&gt;
By designing &#039;character&#039; voices, mappers have the freedom to give voices to AI based on their personality rather than just their entity type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Changing the voice an AI ==&lt;br /&gt;
&lt;br /&gt;
There are two ways to change the voice of an AI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Dark Radiant&#039;s Voice Selector &amp;amp; Preview===&lt;br /&gt;
&lt;br /&gt;
* In Dark Radiant, select the AI and check the &#039;show inherited properties&#039; checkbox at the top of Entity Inspector.&lt;br /&gt;
* Scroll down to &amp;quot;def_vocal_set&amp;quot; and select it&lt;br /&gt;
* A button should now show at the bottom of Entity Inspector &#039;Select Vocal Set&#039;&lt;br /&gt;
* Click that button and select a voice.&lt;br /&gt;
* You can use the &#039;play&#039; button shown in that selector to hear samples of the voices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Manually typing the voice name===&lt;br /&gt;
&lt;br /&gt;
To change the voice of any AI add the following spawnarg to the AI in your map:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;def_vocal_set&amp;quot;   &amp;quot;[name of vocal set from list below]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Vocal Sets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The available character vocals are listed below.  Each set has a &amp;quot;guard&amp;quot; and &amp;quot;civilian&amp;quot; version.  Choose the civilian version for unarmed characters.&lt;br /&gt;
&lt;br /&gt;
Vocal sets are defined in darkmod/def/tdm_ai_vocal_sets.def&lt;br /&gt;
&lt;br /&gt;
1.  &#039;&#039;&#039;&amp;quot;The Thug&amp;quot;&#039;&#039;&#039; -- crude and crass; uneducated; violent; threatening voice, talks about gambling, bullying, whoring, and bodily functions; swears a lot (suits guards, commoners, thieves)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_thug_guard_01&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_thug_civilian_01&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://www.mindplaces.com/save/thug_ex.wav Hear Example]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. &#039;&#039;&#039;&amp;quot;The Grumbler&amp;quot;&#039;&#039;&#039; -- a bored, seen-it-all character with a gravelly voice; complains a lot; uneducated; gruff, talks about his aches, pains, hunger, boredom, losing at gambling, etc (suits guards, forger, servants, commoners)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_grumbler_guard_01&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_grumbler_civilian_01&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://www.mindplaces.com/save/grumbler_ex.wav Hear Example]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. &#039;&#039;&#039;&amp;quot;The Pro&amp;quot;&#039;&#039;&#039; -- professional, cool; uneducated but experienced; man of few words, very aware of his surroundings, often predicts the player&#039;s behaviour; talks about doing his job well (suits guards, elite guards, mages, thieves, inventors, nobles)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_pro_guard_01&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_pro_civilian_01&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://www.mindplaces.com/save/pro_ex.wav Hear Example]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. &#039;&#039;&#039;&amp;quot;The Mature Builder&amp;quot;&#039;&#039;&#039; -- strong voice, experienced, determined; archaic language; patient and somewhat monitone, talks about servitude, orthodoxy (suits builder guards, forgers, inquisitors, priests)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_builder_03_guard&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_builder_03_civilian&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://www.mindplaces.com/save/builder3_ex.wav Hear Example]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. &#039;&#039;&#039;&amp;quot;The Young Builder&amp;quot;&#039;&#039;&#039; -- young; overzealous; slips out of archaic language sometimes; cliché scriptures, full of faith and burning with confidence, talks about doing great things.  (suits builder guards, acolytes) &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_builder_04_guard&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_builder_04_civilian&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://www.mindplaces.com/save/builder4_ex.wav Hear Example]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6. &#039;&#039;&#039;&amp;quot;The Lord&amp;quot;&#039;&#039;&#039; -- strong voice; educated; arrogant and cold; dismissive, talks about himself and his own power/money.  The Lord is used to being obeyed.  (suits noblemen, elite guards, mages, inventor scientists) &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_lord_guard_01&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_lord_civilian_01&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://www.mindplaces.com/save/lord_ex.wav Hear Example]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7. &#039;&#039;&#039;&amp;quot;The Simpleton&amp;quot;&#039;&#039;&#039; -- a simple, unintelligent character, who speaks in a slow, measured voice.  He goes about his life dealing with the here and now, and doesn’t think much about anything beyond what he’s doing.  Tends to state the obvious. (suits commoners, generic guards)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_simpleton_guard_01&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_simpleton_civilian_01&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://www.mindplaces.com/save/simpleton_ex.wav Hear Example]&lt;br /&gt;
&lt;br /&gt;
8.  &#039;&#039;&#039;&amp;quot;Average Jack&amp;quot;&#039;&#039;&#039; -- (added 1.02) a generic character, tends to complain.  (suits commoners, generic guards)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;each &#039;type&#039; below is basically the same, but with slightly different idle lines.&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_jack_guard_01&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_jack_civilian_01&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_jack_beggar_01&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_jack_cook_01&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_jack_labourer_01&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_jack_merchant_01&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Incomplete vocal sets:===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_builder_01&#039;&#039;&#039;  -- contains only a builder conversation&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;atdm:ai_vocal_set_builder_02&#039;&#039;&#039;  -- about 3/4 complete at present, barely usable.&lt;br /&gt;
[http://www.mindplaces.com/save/builder2_ex.wav Hear Example]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Moveables&amp;diff=12046</id>
		<title>Moveables</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Moveables&amp;diff=12046"/>
		<updated>2011-01-22T17:15:34Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Create a Collision Model (CM) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Original_Reference|SneaksieDave &amp;amp; Ishtvan|3968}}&lt;br /&gt;
&lt;br /&gt;
Physics fans rejoice! If you want an object (whether a model or multi-brush/patch) to be moveable (pick up and carry, push, float, shoot, etc.), even though it wasn&#039;t designed to be used that way, there is a way to do it anyway, and all within the editor.&lt;br /&gt;
&lt;br /&gt;
==Models==&lt;br /&gt;
&lt;br /&gt;
In summary you need to create the model, make it moveable, and make sure a collision model exists for it...&lt;br /&gt;
&lt;br /&gt;
=== Create a Moveable Model ===&lt;br /&gt;
&lt;br /&gt;
# Create a brush, convert it to a moveable_base entity, and assign it the model you want to use.&lt;br /&gt;
# You only need one collision model file no matter how many instances of this moveable you make in your map so check if it has already been created (a .cm file of the same name as the model and in the same folder.) If not..&lt;br /&gt;
&lt;br /&gt;
=== Create a Collision Model (CM) ===&lt;br /&gt;
&lt;br /&gt;
In DarkRadiant:&lt;br /&gt;
# &#039;&#039;&#039;Important&#039;&#039;&#039;: Make sure the model is not rotated in any way.&lt;br /&gt;
# Drag a new temporary brush over the model, roughly covering it.&lt;br /&gt;
# Clip the shape if necessary, or convert it eg, to pyramid or whatever to best fit the model.&lt;br /&gt;
# Any texture will do on any surface.&lt;br /&gt;
# Convert to func_static (any entity will do)&lt;br /&gt;
# Check the origin of the brush entity is in the same place as the model&#039;s origin because that is where its origin will be in-game. If they do not coincide then either move the brush so it coincides and resize the brush or key V and drag the origin into position.&lt;br /&gt;
# Use the {{menu|File|Save selection as collision model}} menu entry:&lt;br /&gt;
# The model selector dialog appears, Select the correct model. Click {{ok}}.&lt;br /&gt;
# A .cm should have now been saved in the same folder as the model and with the same name as the model.&lt;br /&gt;
# You can now delete the temporary collision model brush entity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In DoomEd:&lt;br /&gt;
&lt;br /&gt;
# Drag a new temporary brush over the model, roughly covering it. This will be the collision hull, so get it as close as you can.&lt;br /&gt;
# Clip the shape if necessary, or convert it eg, to pyramid or whatever to best fit the model.&lt;br /&gt;
# Convert that brush to &#039;&#039;&#039;func_clipmodel&#039;&#039;&#039;.&lt;br /&gt;
# Check the origin of the brush entity is in the same place as the model&#039;s origin because that is where its origin will be in-game.&lt;br /&gt;
# Texture it with &#039;&#039;&#039;common/collision&#039;&#039;&#039;.&lt;br /&gt;
# With that brush still selected, do &#039;&#039;&#039;Selected-&amp;gt;Export-&amp;gt;To CM&#039;&#039;&#039;. Locate the model for which it will stand as a clipmodel, and save with the same name. The path and name are vital. Don&#039;t worry, DoomEd will automatically name it .cm instead by of your model&#039;s extension, so it shouldn&#039;t overwrite anything.&lt;br /&gt;
# You can now delete the temporary collision model brush entity.&lt;br /&gt;
&lt;br /&gt;
==Brush/Patch Moveables==&lt;br /&gt;
&lt;br /&gt;
You can make virtually any brush/patch construction into a moveable. At its core must be a simple brush to form the collision shape. I&#039;ve had a brush with 12 surfaces as a moveable OK. I don&#039;t know if there is a limit but it&#039;s my belief that it won&#039;t work if too complicated a shape. However, we can get round that and produce very complex moveables such as a stepladder with multiple steps and ladder surface. We do that by binding the construction to a single central collision shape brush which is the actual moveable entity.&lt;br /&gt;
&lt;br /&gt;
===Simple brush moveables===&lt;br /&gt;
&lt;br /&gt;
First let&#039;s take the simplest of brush moveables: a stone block. It is not uncommon in FMs to have a hole in a wall filled with stone blocks or rubble the player can move or push out of the way. So first make your brush stone block from the same texture as your wall so it will match perfectly (if desired.) If it is a broken block (rubble) then you can cut pieces off the basic rectangular block but I would get it all working first and save it then gradually cut piecess off and save the early versions. You might find if you have too many surfaces it might not work. (I am still unsure about this.) I have not tried with patches but it should work. In any event you can certainly bind a patch to an unrendered block to get what you want.&lt;br /&gt;
&lt;br /&gt;
* Make the brush an atdm:moveable_base entity. Later a proper entity inheriting from atdm:moveable_base might be made up with the following spawnargs to save time. (I couldn&#039;t get this to work with the custom entities which have to use a model.)&lt;br /&gt;
* Give it mass (in kilos)&lt;br /&gt;
* No need to give it density as this is now calculated from its volume and mass.&lt;br /&gt;
* Give it friction (0 to 1) I usually aim low about 0.1 else it can be &#039;sticky&#039;&lt;br /&gt;
* Give it snd_bounce as the sound it will make on impact. Example: med_metal_impact. I suggest you look at what some already existing moveable of a similar size and material is using.&lt;br /&gt;
* Give it an alert size and hardness. This determines how AI will react to its sound. If you don&#039;t then it will default to medium size and hard so if your object is about that then you need do nothing. Otherwise, give it these two spawnargs/values. These are the possibles:&lt;br /&gt;
** spr_object_hardness - can be soft, medium, or hard&lt;br /&gt;
** spr_object_size - can be small, medium, or large&lt;br /&gt;
&lt;br /&gt;
By default, the above will highlight and can be pushed about, frobbed and picked up, carried, and manipulated by the player.&lt;br /&gt;
&lt;br /&gt;
If you want it only to be pushed but not picked up then give it frobable 0.&lt;br /&gt;
&lt;br /&gt;
If you want it to go in the inventory:&lt;br /&gt;
* Give it inv_category. This can be eg, Special, Tools, Keys. (look at currentsimilar objects)&lt;br /&gt;
* Give it inv_name with the value of whatever name you want it show in the inventory.&lt;br /&gt;
* Give it inv_icon with the value guis/assets/hud/inventory_icons/default which will show blank (otherwise you get a black square.) If you can create your own icon then even better.&lt;br /&gt;
* Give it snd_acquire with the value tool_pickup is a good default (the sound it makes when the player gets it.)&lt;br /&gt;
&lt;br /&gt;
===Remake the map cm file if console error===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT!&#039;&#039;&#039; This caused me a lot of headaches over a couple of years until I realized so memorize this even if you forget everything else. When you first make a brush moveable it might work fine but later you get a console error: &#039;cannot load collision model&#039;. You might get this if you rename the entity or import it as a prefab into another map. What you must do is DELETE the map cm file (in maps folder mymap.cm) then DMAP again. Dmap doesn&#039;t know if you changed anything so you need to force it to recreate the map collision file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===More complex brush and patch moveables===&lt;br /&gt;
&lt;br /&gt;
To make complex brush moveables like a stepladder you first create a simple brush moveable as described above and texture it with textures/common/collision. Size and shape this brush to approximate the basic size and shape of the object you are making. Try to avoid over-complexity of this shape; it only needs to determine collisions. For example, for the stepladder I made an upright right-angled triangle shape. This is the core of the stepladder; the actual moveable entity as described in the above section. You then make your more complex shape(s) into func_static(s) and bind to the collision shape to get the best fit. The collision shape is what the player picks up but it is not visible of course.&lt;br /&gt;
&lt;br /&gt;
==== Making frobable ====&lt;br /&gt;
&lt;br /&gt;
The above is OK for pushing around but if you want to be able to pick up the object it needs to be frobable. At this point only the invisible collision moveable is frobable but its highlight is invisible! To make the visible object frobable do the following:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To the invisible moveable add the property/value:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;frob_peer&#039;&#039; &amp;lt;name of visible object&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To the visible object add the properties/vaues:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;frobable&#039;&#039; 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;frob_distance&#039;&#039; 1 (do NOT use 0 or it defaults to the normal distance.) &lt;br /&gt;
&lt;br /&gt;
What the above does is allow the visible object to highlight but not directly frobable. Instead when it highlights it means you are focused on the invisible moveable which is what you want - and it highlights the visible object through the frob_peer.&lt;br /&gt;
&lt;br /&gt;
===Model/Brush hybrid===&lt;br /&gt;
&lt;br /&gt;
In the earlier sections on making a moveable model is described how to make an external model cm file. In some situations you might instead bind a static model to a brush moveable as described above. In some cases you might make the brush moveable visible or some surfaces visible. An example makes it easier to understand: I took a model chest body. Made a rectangular brush moveable to completely fill it. I textured it with textures/common/collision but the top surface I gave it the texture that the chest used. When aligned carefully it complete sealed the top so it looks like a new luggable crate. Then bind the chest model to the brush moveable. To make it frobable see above [[#Making frobable]]&lt;br /&gt;
&lt;br /&gt;
== Complete List of Default Key/Values for Moveable entities==&lt;br /&gt;
 &amp;quot;Moveable object. Will drop to the floor and rest until activated.&amp;quot;&lt;br /&gt;
 &amp;quot;The visual model set with the &#039;model&#039; key can also be used for&amp;quot;&lt;br /&gt;
 &amp;quot;collision detection. However the model may not be too complex.&amp;quot;&lt;br /&gt;
 &amp;quot;max vertices = 32&amp;quot;&lt;br /&gt;
 &amp;quot;max edges = 32&amp;quot;&lt;br /&gt;
 &amp;quot;max polygons = 16&amp;quot;&lt;br /&gt;
 &amp;quot;&amp;quot;max edges per polygon = 16&amp;quot;&lt;br /&gt;
 &amp;quot;The collision model must be an enclosed hull. Dangling polygons or&amp;quot;&lt;br /&gt;
 &amp;quot;edges are not allowed. If the visual model is too complex or does&amp;quot;&lt;br /&gt;
 &amp;quot;not meet these requirements it can be contained in a less complex&amp;quot;&lt;br /&gt;
 &amp;quot;model for collision detection. Such a collision model is specified with the&amp;quot;&lt;br /&gt;
 &amp;quot;&#039;clipmodel&#039; key.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var density&amp;quot;          &amp;quot;Volume of the object times the density is the mass.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var friction&amp;quot;         &amp;quot;Friction with contacting surfaces in the range [0-1] where 0 is no friction.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var bouncyness&amp;quot;       &amp;quot;How much the object bounces in the range [0-1] where 0 is no bounce.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var mass&amp;quot;             &amp;quot;Mass of the object (overrides density).&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_model clipmodel&amp;quot;      &amp;quot;Model to be used for collision detection.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var clipshrink&amp;quot;       &amp;quot;Shrink the visual model with an epsilon and use it as a clip model.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var allowStep&amp;quot;        &amp;quot;Set to 0 to prevent monsters from ever walking over this object.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var nonsolid&amp;quot;         &amp;quot;Make the object non-solid.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_bool nodrop&amp;quot;          &amp;quot;Do not drop to the floor.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_bool noimpact&amp;quot;        &amp;quot;Do not activate by the impact of other objects.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_bool notpushable&amp;quot;     &amp;quot;Do not allow to be pushed.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_bool unbindondeath&amp;quot;   &amp;quot;Unbind entity when health drops down to or below zero.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var health&amp;quot;           &amp;quot;If set the visual model changes to &#039;broken&#039; when the health drops down to or below zero.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_model broken&amp;quot;         &amp;quot;Visual model to be used when the health drops down to or below zero.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_bool explode&amp;quot;         &amp;quot;If set to 1 the moveable explodes and is removed when the health drops down to or below zero.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var init_velocity&amp;quot;    &amp;quot;Initial linear velocity set when activated.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var init_avelocity&amp;quot;   &amp;quot;Initial angular velocity set when activated.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var init_velocityDelay&amp;quot;   &amp;quot;Delay in seconds before the initial linear velocity is set after being activated.&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var init_avelocityDelay&amp;quot;  &amp;quot;Delay in seconds before the initial angular velocity is set after being activated.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var initialSplineTime&amp;quot;    &amp;quot;Number of milliseconds the moveable should follow the initial spline path.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var damage&amp;quot;               &amp;quot;Damage definition if it damages things it collides with&amp;quot;&lt;br /&gt;
 &amp;quot;editor_var damageWhenActive&amp;quot;     &amp;quot;Only damage when active ( currently for the vagary and influence stuff )&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;editor_var fx_collide&amp;quot;           &amp;quot;FX system to start at impact position when object collides.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Default Settings ==&lt;br /&gt;
 &amp;quot;density&amp;quot;           &amp;quot;0.5&amp;quot;&lt;br /&gt;
 &amp;quot;friction&amp;quot;          &amp;quot;0.05&amp;quot;&lt;br /&gt;
 &amp;quot;bouncyness&amp;quot;        &amp;quot;0.6&amp;quot;&lt;br /&gt;
 &amp;quot;explode&amp;quot;           &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;unbindondeath&amp;quot;     &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;health&amp;quot;            &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;nodrop&amp;quot;            &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;noimpact&amp;quot;          &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;notPushable&amp;quot;       &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;clipshrink&amp;quot;        &amp;quot;0&amp;quot;&lt;br /&gt;
 &amp;quot;allowStep&amp;quot;         &amp;quot;1&amp;quot;&lt;br /&gt;
 &amp;quot;snd_bounce&amp;quot;        &amp;quot;smallpanel_impact &amp;quot;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Pushing]] of moveables.&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Doors&amp;diff=11971</id>
		<title>Doors</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Doors&amp;diff=11971"/>
		<updated>2011-01-18T06:45:37Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Sounds and Sound Propagation through Doors and Doorways */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{todo}}&lt;br /&gt;
&#039;&#039;Written by Fidcal&#039;&#039; &#039;&#039;edit Baddcog&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Quick way to get an unlocked door in your map:&lt;br /&gt;
&lt;br /&gt;
* Insert one of the prefab doors complete with handles and select its skin property and click the button to change its skin appearance to whatever you want. Set any other properties you need.&lt;br /&gt;
&lt;br /&gt;
Alternatively,&lt;br /&gt;
&lt;br /&gt;
* Create a door from the entity list&lt;br /&gt;
* Use the &amp;quot;skin&amp;quot; spawnarg on the door to change its appearance. &lt;br /&gt;
* Create a handle from the entity list&lt;br /&gt;
* Add the &#039;&#039;door_handle&#039;&#039; property to the door and give it the name of the handle&lt;br /&gt;
* To the door handle add the value frob_peer and use the name of the door.&lt;br /&gt;
* To open clockwise, change the &#039;&#039;rotate&#039;&#039; property from &amp;lt;code&amp;gt;0 90 0&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0 -90 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This tutorial explains how to put doors into your map using Dark Radiant, as well as adjust them and their properties.&lt;br /&gt;
&lt;br /&gt;
The rest of this tutorial assumes that you have a basic understanding of using DarkRadiant. If you haven&#039;t done so, please go read the [[Dark Radiant Must Know Basic Intro]] article first.&lt;br /&gt;
&lt;br /&gt;
Additionally:&lt;br /&gt;
&lt;br /&gt;
* Up, down, left, and right in Dark Radiant&#039;s &#039;&#039;top&#039;&#039; orthoview are regarded here as the standard map directions of North, South, East, and West where useful for clarity.&lt;br /&gt;
* Where the term &#039;&#039;brush&#039;&#039; is used with a door it mostly also applies to a door made up of a group of brushes and/or patches.&lt;br /&gt;
* Where the term &#039;&#039;door&#039;&#039; is used it often will also apply to any object you wish to rotate when frobbed, for instance an openable window, box lid, or even more exotic objects that the imaginative mapper might conceive like a signal, engine part, toy, or whatever. So long as it needs to turn or slide just a fixed amount when frobbed then return when frobbed again then the following applies.&lt;br /&gt;
&lt;br /&gt;
==Door types==&lt;br /&gt;
&lt;br /&gt;
All tangible objects in Dark Mod are &#039;&#039;entities&#039;&#039;, having either a pre-made model shape or else brush/patch(es). So there are two ways to create a door in Dark Radiant: as a model door or a textured brush door (or a hybrid of the two).&lt;br /&gt;
&lt;br /&gt;
Models are ready made door objects but cannot within Dark Radiant (at the time of writing) be resized, rescaled, cropped or clipped whereas brushes are very flexible in that respect and can be worked into custom shapes for your map, including secret doors that blend into walls and other surfaces.&lt;br /&gt;
&lt;br /&gt;
Most of the current door models are found in two places along with the door handles.&lt;br /&gt;
*Model Viewer: doors created from here will be static in the world and have no props other than material type.&lt;br /&gt;
You can add any props to them to make them working doors. If nothing else it is a good place to view the different size and skin options for the doors.&lt;br /&gt;
*Entity List: most of the door models can be found here. These doors have properties already assigned so they are ready to be used. Only one base door of each type is listed, create the size/hinge count door you want (2 hinge doors have a &#039;no hinge&#039; skin). You can choose a skin for the door once it has been created in the editor with the &amp;quot;skin&amp;quot; spawnarg (use the model name of the door you want, taken from the model list, as its value). This is the easiest way to create a door. The same goes for door handles.&lt;br /&gt;
&lt;br /&gt;
Remember also that door functions may be applied to objects other than doors for instance to openable windows, drawbridges, gates, in fact anything that needs a partial rotation or slide when frobbed then return when frobbed again such as a signal device. Lockboxes and chests use similar properties.&lt;br /&gt;
&lt;br /&gt;
Door/handle prefabs seem to crash Doom3 when trying to reload a map so far now just create and link each door/handle. You can create one set and copy/paste them, but you need to take great care that all the name props are changed to match each clone. Otherwise you get handles that fly off with a distant door and handles that don&#039;t move.&lt;br /&gt;
&lt;br /&gt;
==Creating a Door==&lt;br /&gt;
&lt;br /&gt;
Put simply, to make a door you will be creating an &#039;entity with model&#039; or &#039;entity with brush&#039; or some variation thereof.&lt;br /&gt;
&lt;br /&gt;
===Creating a Model Door===&lt;br /&gt;
&lt;br /&gt;
There are several approaches to making a model door; the simplest is to create a door from the entity list; or create a door from the model viewer (good for static unusable prop doors).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Entity List&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
*Deselect everything in editor by hitting the Esc button&lt;br /&gt;
*Right-click an ortho view and select Create Entity&lt;br /&gt;
*Navigate to darkmod/movers/&#039;&#039;atdm:door_...&#039;&#039;, choose the door you want&lt;br /&gt;
*Click Add&lt;br /&gt;
*To change its appearance, add a &amp;quot;skin&amp;quot; spawnarg to the door, with the value being the model name of the door you want.&lt;br /&gt;
&lt;br /&gt;
You now have a workable door in your level.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Model Viewer&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Right click in the orthoview, select &#039;&#039;Create Model&#039;&#039; then &amp;lt;code&amp;gt;darkmod&amp;lt;/code&amp;gt; and select a door.&lt;br /&gt;
* Note that you can left drag the image in the &#039;&#039;Choose Model&#039;&#039; dialog to rotate it around.&lt;br /&gt;
* Click [[Image:Button ok.png]] and you have a static door.&lt;br /&gt;
* If you want to make it work (openable, frobbable) then:&lt;br /&gt;
** Select the entity inspector,&lt;br /&gt;
** Select the top classname line so it highlights&lt;br /&gt;
** Select the func_static line in the input box &#039;&#039;below&#039;&#039; the properties window.&lt;br /&gt;
** Edit &amp;lt;code&amp;gt;func_static&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt;&lt;br /&gt;
** Click {{check}} or press {{key-enter}}&lt;br /&gt;
&lt;br /&gt;
Alternatively you can do it the old way:&lt;br /&gt;
&lt;br /&gt;
* Create any temporary brush&lt;br /&gt;
* Right click in orthoview and select &amp;lt;code&amp;gt;Create Entity&amp;lt;/code&amp;gt; then &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Left lick the model name line in the entity inspector.&lt;br /&gt;
* Below it on the &#039;&#039;Entity Inspector&#039;&#039; panel you should now see a button &#039;Choose Model&#039;&lt;br /&gt;
* Left click it, select a door model from the darkmod group.&lt;br /&gt;
* Note that you can left drag the image in the &#039;&#039;Choose Model&#039;&#039; dialog to rotate it around.&lt;br /&gt;
* The temporary brush was deleted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In all three instances, you now have a working door with default properties. &lt;br /&gt;
&lt;br /&gt;
Name your door by adding the prop (or modifing it) to name &#039;&#039;My_Door_1&#039;&#039;. You can use any name that you feel is appropriate but all doors with handles attached &#039;&#039;must&#039;&#039; have their own specific name. Use the name My_Door_1 for your first attempt as it will be referenced when you get around to attaching handles (see below).&lt;br /&gt;
&lt;br /&gt;
To add a handle and other adjustments, see [[#Customising and Adjusting Door Properties]] below.&lt;br /&gt;
&lt;br /&gt;
===Creating a Textured Brush Door===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tip:&#039;&#039;&#039; If unsure of size then you might insert a temporary human AI first to get a sense of height.&lt;br /&gt;
&lt;br /&gt;
==== The simplest brush door: ====&lt;br /&gt;
&lt;br /&gt;
* Drag out a new brush to the size required, eg, a seven foot high door is 84&amp;quot; x 1.1 = about 90 units in Dark Radiant.&lt;br /&gt;
* Give it a door texture from the texture browser (or wall texture for a secret door)&lt;br /&gt;
* Right click in orthoview and select &#039;&#039;Create Entity&#039;&#039; then &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt;&lt;br /&gt;
* You now have a default door that rotates around its center.&lt;br /&gt;
&lt;br /&gt;
To move the rotation point to the door edge and other adjustments, see [[#Customising and Adjusting Door Properties]] below.&lt;br /&gt;
&lt;br /&gt;
==== Multi-brush doors: ====&lt;br /&gt;
&lt;br /&gt;
More complex multi-brush doors can be created using the [[Clipper]] tool, CSG, etc. - this is not covered in this tutorial. Then assign &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; for that whole brush structure. Also you can collect various brushes positioned together in relation to one another as needed, select them all, then assign &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; for the group. All the brushes will be children of the &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; entity and will rotate and be frobbable, etc. as one unit, as one door. To add further brushes or even model shapes later see the section on [[#Adding handles and other items to doors]].&lt;br /&gt;
&lt;br /&gt;
Name your door by adding the prop (or modifing it) to name My_Door_1. You can use any name that you feel is appropriate but all doors with handles attached must have their own specific name. Use the name My_Door_1 for your first attempt as it will be referenced when you get around to attaching handles (see below). (repeated from above in case you didn&#039;t choose to create a model door)&lt;br /&gt;
&lt;br /&gt;
=== Double Doors ===&lt;br /&gt;
Double doors are automatically recognised by the code when the doors are spawned. The prerequisite is that both doors are sharing/touching the same visportal. The spawnarg &#039;&#039;auto_setup_double_door&#039;&#039; (which defaults to &amp;quot;1&amp;quot;) will take care of setting up the open/lock peer relationship between the two doors. The doors will open/close and lock/unlock along with each other as a result.&lt;br /&gt;
&lt;br /&gt;
What happens behind the scenes: the doors are adding each other to their internal open_peer and lock_peer list, which causes the double doors to perform the same action when frobbed or used.&lt;br /&gt;
&lt;br /&gt;
Note that &#039;&#039;auto_setup_double_door&#039;&#039; will not set the frob_peer relationship, i.e. each door will frob-highlight on its own without highlighting the other door. You&#039;ll need to add that spawnarg manually if you want to highlight the entire double door as one.&lt;br /&gt;
&lt;br /&gt;
==Customising and Adjusting Door Properties==&lt;br /&gt;
&lt;br /&gt;
Handles, lockplates, etc. can be added to doors and door properties can be adjusted for rotation, sliding, locking, and more.&lt;br /&gt;
&lt;br /&gt;
Some of the door models have hinge plates and lockboxes that are reskinnable with a good variety of skins.&lt;br /&gt;
&lt;br /&gt;
===Door handles and other door attachments===&lt;br /&gt;
&lt;br /&gt;
 Summary: just add the property &#039;&#039;bind&#039;&#039; with the door&#039;s name to the attachment and position it where you want it on the door. If it&#039;s a &#039;&#039;atdm:mover_door_handle&#039;&#039; then it automatically will work as a handle but you can bind virtually anything.&lt;br /&gt;
You can add handles and other items to doors such that they move correctly with the door whether rotating, sliding, or both and even if the door is not vertical such as a skylight or trapdoor.&lt;br /&gt;
Handle models come in two types, &#039;&#039;single handles&#039;&#039; and &#039;&#039;double handles&#039;&#039;. A single handle is one sided, this means the handle will be inside the door or outside the door, but not both. A double handle has a lever on the inside of the door and a handle on the outside of the door. Each has benefits.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Single door handles&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
Single door handles can be used on a static door, a door that&#039;s just for show that no AI&#039;s or the player can use. In this case you should just create a door handle from the model viewer, it will be static and have no properties such as scripts. It is for looks only.&lt;br /&gt;
&lt;br /&gt;
Single handles can also be used inside AND outside of the same door to save on rendering. Unlike the double handles the handle on the inside of a portal won&#039;t render. The curved handle is only about 130 polys per side, but if you have a large area and 10 handles you can save 1,000 polys from being rendered. Everything counts when it comes to performance.&lt;br /&gt;
I will call this &#039;&#039;multiple handles&#039;&#039;, see more below.&lt;br /&gt;
&lt;br /&gt;
These can also be useful on brush doors created in the editor that may be very thin or very wide.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Double door handles&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
These are models have have a handle inside and outside. The bonus is that they only use one entity. Maps are limited to about 4,000 entities but when you count lights, AI, sound speakers, ect... you can run out of entities quickly on a large map. If you plan on building a large map this is the way to go, even in a small map they have benefits, namely that you only have to attach one handle per door.&lt;br /&gt;
&lt;br /&gt;
Whether you decide to use a single handle or a double handle you must first follow the instructions below and attach one handle first. If you choose a double handle, follow the instructions below and you are done. If you choose a single handle type follow the instructions then also follow the &#039;&#039;multiple handle&#039;&#039; instructions for the second handle.&lt;br /&gt;
&lt;br /&gt;
Both single and double handle types can be found in two places. The model viewer which will create a static model good for show, you can manually add props to make them work OR you can look in the entity browser.&lt;br /&gt;
Using a handle from the entity browser saves you a little bit of time as some props are already added, you just need to add the frob_peer names for the doors/handles and the door_handle name to the door.&lt;br /&gt;
&lt;br /&gt;
=== Adding a working model door handle===&lt;br /&gt;
&lt;br /&gt;
Quick summary:&lt;br /&gt;
* Create a model or brush handle and make it an &#039;&#039;atdm:mover_door_handle&#039;&#039; entity.&lt;br /&gt;
* Position it on your door.  Use the opposite side from the door&#039;s multicolor X-Y-Z indicator (highlight the door to see it) if it&#039;s not obvious which side it goes on.  &lt;br /&gt;
* &#039;&#039;&#039;Bind&#039;&#039;&#039; the handle to the door (bind &amp;lt;doorname&amp;gt;)&lt;br /&gt;
* It should now be a working handle though may need adjustments of rotation etc. see later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Important: read preceding section on door handle types and performance issues first.&lt;br /&gt;
&lt;br /&gt;
This works with both a model door and a brush door:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rotation&#039;&#039;&#039;:&lt;br /&gt;
* By default the door handle entity rotates &#039;&#039;anti-clockwise&#039;&#039; (looked at from the front) then springs back. A &#039;&#039;double handle&#039;&#039; model is OK but two singles (see &#039;&#039;Multiple door handles&#039;&#039; below) need more care as only one is the functioning entity and the other is just attached to it. So anti-clockwise is fine for a door with its hinge on the left and the handle on the right - the handle will rotate down then spring back. If you put the functioning door handle on the other side you will have to change the default &#039;&#039;rotate&#039;&#039; property from -45 0 0 to 45 0 0. &#039;&#039;&#039;&#039;&#039;Therefore it is easier to generally put this handle on the side of the door where the hinge is on the left and the non-functioning attachment handle on the other side.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*If your door only needs one handle, eg, a cupboard door, and from outside its hinge is on the right then you will need to change the &#039;&#039;rotate&#039;&#039; property of the handle as described above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;The functioning handle entity:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* Create an entity door handle (movers folder) or create a brush or model handle and assign it the entity &#039;&#039;atdm:mover_door_handle&#039;&#039;.&lt;br /&gt;
* Position it where you wish on your door.&lt;br /&gt;
* &#039;&#039;&#039;Bind&#039;&#039;&#039; the handle to the door, by adding the &amp;quot;bind&amp;quot; spawnarg to the handle.&lt;br /&gt;
&lt;br /&gt;
You now have a working door handle with default properties.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Multiple door handles&#039;&#039;&#039;:&lt;br /&gt;
Now that you&#039;ve got a handle attached to one side of the door it is time to add one to the other side (unless you used a double handle).&lt;br /&gt;
* Create the new handle. The single handles come in left and right persuasions. A door needs a left facing handle on one side and a right facing handle on the other, so if you have already added the left handle create a right handle and line it up on the other side of the door.&lt;br /&gt;
* Name this handle. I prefer to keep a naming convention for each door and it&#039;s respective handles, it makes things alot easier. The door is named &#039;&#039;&#039;My_Door_1&#039;&#039;&#039;, the first handle is named &#039;&#039;&#039;My_Handle_1&#039;&#039;&#039; so name the second handle &#039;&#039;&#039;My_Handle_1_1&#039;&#039;&#039;. This will make it stay with the first handle in the entity list. This is important to keep organized. If you name it My_Handle_2 then when you get to another door named My_Door_2 you&#039;ll be confused.&lt;br /&gt;
* Place and &#039;&#039;&#039;bind&#039;&#039;&#039; that handle to your door.&lt;br /&gt;
&lt;br /&gt;
You now have two single door handles on either side of the door that rotate together as if they were physically attached.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To add a brush to a brush door&#039;&#039;&#039;:&lt;br /&gt;
* Select the new brush &#039;&#039;and&#039;&#039; the brush door all together; &#039;&#039;the entity &#039;&#039;&#039;must&#039;&#039;&#039; be selected &#039;&#039;&#039;last&#039;&#039;&#039;.&#039;&#039;&lt;br /&gt;
* Use {{menu|Edit|Reparent primitives}}. This ensures the parent entity adopts the new item(s).&lt;br /&gt;
* If you have trouble selecting them in the orthoview because other brushes, etc. get selected then try in the camera view or as a last resort move them temporarily to an open area (but keep them in the same positions relative to each other.) Use {{key-shift}}+{{LMB}} on new item(s) then {{key-shift}}+{{LMB}} on main entity. Once they are all selected, use the {{menu|Edit|Reparent primitives}}.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To add &#039;&#039;model&#039;&#039; static items&#039;&#039;&#039;: knockers, hinges, static handles etc. to a &#039;&#039;Model Door&#039;&#039;:&lt;br /&gt;
* Select item&lt;br /&gt;
* Right click in orthoview and select &#039;&#039;Create Entity&#039;&#039; then &amp;lt;code&amp;gt;entity func_static&amp;lt;/code&amp;gt;&lt;br /&gt;
* Position it where you wish on your door.&lt;br /&gt;
* To synchronize this with your particular door you need to add the property &#039;&#039;bind&#039;&#039; and the individual door name to the brush entity. To do this...&lt;br /&gt;
** Select the model door.&lt;br /&gt;
** In the entity inspector, select the &#039;&#039;name&#039;&#039; line&lt;br /&gt;
** Select the bottom line in the input box &#039;&#039;below&#039;&#039; the properties window.&lt;br /&gt;
** Copy the name&lt;br /&gt;
** Deselect the door with {{key-esc}}&lt;br /&gt;
** Select the brush entity&lt;br /&gt;
** Add a property &amp;quot;bind&amp;quot; to it.&lt;br /&gt;
** Change the value of the property by pasting in the door name&lt;br /&gt;
** Click {{check}} or press {{key-enter}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To add &#039;&#039;brush&#039;&#039; static items&#039;&#039;&#039;: knockers, hinges, static handles to a Model Door:&lt;br /&gt;
* This method is not ideal but it seems to work OK.&lt;br /&gt;
* Select the brush.&lt;br /&gt;
* Right click in orthoview and select Create Entity then &#039;&#039;atdm:mover_door_handle&#039;&#039;&lt;br /&gt;
* Position it where you wish on your door.&lt;br /&gt;
&lt;br /&gt;
To synchronize this with your particular door you need to add the property &#039;&#039;door_handle&#039;&#039; on the door, and give as the value the name of the brush you just created.&lt;br /&gt;
&lt;br /&gt;
This brush turns like a handle. To stop it:&lt;br /&gt;
&lt;br /&gt;
* Adding &#039;&#039;rotate 0 0 0&#039;&#039; or disabling the handle script won&#039;t help.&lt;br /&gt;
* Add a real working handle (as in the section above &#039;&#039;To add a working model door handle...&#039;&#039; and it must be added LAST.)&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want too see a real working handle added maybe try another tiny brush with the handle function and hide it inside the door?&lt;br /&gt;
&lt;br /&gt;
===Locking Doors===&lt;br /&gt;
&lt;br /&gt;
To lock a door check the &#039;&#039;show inherited properties&#039;&#039; in the entity inspector for a &#039;&#039;atdm:mover_door&#039;&#039; entity and you should see the &#039;&#039;locked&#039;&#039; property. Select it and in the input box below the properties you can change its value:&lt;br /&gt;
&lt;br /&gt;
* 0 = unlocked (default)&lt;br /&gt;
* 1 = locked&lt;br /&gt;
&lt;br /&gt;
If locked it will require an entity that is associated with it to be able to act as a key to unlock it.&lt;br /&gt;
&lt;br /&gt;
Currently door handles on locked doors will rotate when frobbed, they will bounce back though and the door will stay locked until unlocked.&lt;br /&gt;
&lt;br /&gt;
===Keys===&lt;br /&gt;
&lt;br /&gt;
Assigning specific keys to specific doors is simple.&lt;br /&gt;
&lt;br /&gt;
* It is recommended that you create an existing key entity. These keys have all required props, they just need to be named.&lt;br /&gt;
&lt;br /&gt;
Alternatively you can create a key from the Model Viewer and want it to be useable&lt;br /&gt;
* Make sure it has the properties:&lt;br /&gt;
 useable 1 [so it can be used by the door]&lt;br /&gt;
 frobable 1&lt;br /&gt;
 inv_name &amp;lt;unique name&amp;gt;&lt;br /&gt;
 inv_category Keys&lt;br /&gt;
 inv_target player1&lt;br /&gt;
 inv_icon guis/assets/hud/inventory_icons/&amp;lt;icon name&amp;gt;&lt;br /&gt;
 inv_stackable 0 or 1 where 1 can be used on all copies of the same key so they show as one entry in the inventory with a total.&lt;br /&gt;
&lt;br /&gt;
Add to the door the property &amp;lt;code&amp;gt;used_by&amp;lt;/code&amp;gt; with the name of the key as the value. Multiple keys can open the same door by using several &amp;lt;tt&amp;gt;used_by&amp;lt;/tt&amp;gt; spawnargs:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;used_by&amp;quot;  &amp;quot;doorkey_1&amp;quot;&lt;br /&gt;
 &amp;quot;used_by1&amp;quot; &amp;quot;doorkey_2&lt;br /&gt;
&lt;br /&gt;
==== Keys carried by AI ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So you have a door and you have a guard Ai and you want the guard to be able to open/close/lock the door but you also want the player to be able to pickpocket the key. For more info on attaching key, props etc - see [[Attaching Props to AI]].&lt;br /&gt;
&lt;br /&gt;
*&amp;quot;def_attach6&amp;quot; &amp;quot;atdm:prop_silverkey&amp;quot; //the entity to spawn - in this case a key.&lt;br /&gt;
*&amp;quot;pos_attach6&amp;quot; &amp;quot;belt_back_right&amp;quot; //where the key will spawn on the Ai.&lt;br /&gt;
*&amp;quot;name_attach6&amp;quot; &amp;quot;door_key&amp;quot; //this gives &#039;attach6&#039; arg the name &amp;quot;door_key&amp;quot; and is the name the arg &amp;quot;used_by&amp;quot; will need, eg: &amp;quot;used_by&amp;quot; &amp;quot;door_key&amp;quot;&lt;br /&gt;
*&amp;quot;set inv_name on door_key&amp;quot; &amp;quot;Door key&amp;quot; //The name the key get when the play adds it to their inventory.&lt;br /&gt;
*&amp;quot;set name on door_key&amp;quot; &amp;quot;door_key&amp;quot; //here it gets a name to be used in the map in general.&lt;br /&gt;
&lt;br /&gt;
updated by bikerdude.&lt;br /&gt;
&lt;br /&gt;
====Master Key for Testing====&lt;br /&gt;
&lt;br /&gt;
By default, ALL locks can be opened by any key named &#039;&#039;key_master&#039;&#039;. Just create a key in your map, name it &#039;&#039;key_master&#039;&#039; and it becomes a master key for use while testing. Add inv_map_start 1 to it so it is in the player inventory at game start. Remember to delete it when your mission is finished.&lt;br /&gt;
&lt;br /&gt;
===Lockpicks===&lt;br /&gt;
&#039;&#039;by Baddcog&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are two lock pick types.&lt;br /&gt;
*&#039;&#039;&#039;s&#039;&#039;&#039;=snake&lt;br /&gt;
*&#039;&#039;&#039;t&#039;&#039;&#039;=triangular&lt;br /&gt;
&lt;br /&gt;
A lock can be set with many pins. Each pin has a click sequence and each needs a designated lockpick type (see above). Keep in mind that the lockpicking in The Darkmod is much more involved than in T2 or T3. The player has to listen to sounds or watch a handle or lockbar to know when a lock is pin is picked.&lt;br /&gt;
&lt;br /&gt;
This means that authors can be very evil and really frustrate the player, in which case their missions will probably not be played. So be nice to the player and don&#039;t waste your time. Use simple locks for the most part and save complicated locks for important sections and to build tension. Don&#039;t make the player have 20 pins to pick all with different lockpicks. In most cases 1 or 2 pins will suffice and it isn&#039;t necessary to use both lockpicks on every lock.&lt;br /&gt;
Also try to include a lock lever on lockboxes or chests, door handles will rotate as the pins are being picked. This gives the player visual clues to help with the picking (and essential in noisy environments where you can&#039;t hear the clicks.)&lt;br /&gt;
IMO this system is a huge leap foward for lockpicking but also has the ability to completely frustrate the player as stated above. Keep this in mind when designing your lockpick systems.&lt;br /&gt;
&lt;br /&gt;
These props go on the door itself, or the lid of a chest, eg,&lt;br /&gt;
*&#039;&#039;&#039;lock_pins&#039;&#039;&#039; 1327&lt;br /&gt;
*&#039;&#039;&#039;lock_picktype&#039;&#039;&#039; stts&lt;br /&gt;
&lt;br /&gt;
The lock_pins property specifies how many pins each lockpicktype has.&lt;br /&gt;
The lockpick_type property specifies how many times the player has to switch picks and which pick they have to use. You can see there must always be an equal number of lock_pins and lock_picktypes specified&lt;br /&gt;
&lt;br /&gt;
So looking at the example above we have lockpick_type s(snake), t(triangular), t(triangular), and s(snake). The player will have to use these lockpicks in this order. Once the snake lockpick&#039;s pins are open the player can advance to the triangular pick and so forth.&lt;br /&gt;
5 is added to every click sequence so 5 is the minimum click pattern even if you set it to 0.&lt;br /&gt;
In the example above the lockpins specify in order which pick types have how many pins, so the s pick has 1 + 5 = 6 clicks, the t pick has 8 and so on.&lt;br /&gt;
The above is a difficult lock and to avoid annoying the player it is best only used rarely on a special lock like an important big vault door. Ordinary footlockers and common doors can be just 1 or 2 click sequences, eg, lock_pins 2 and lock_picktype t means the player uses one pick and listens for the end of one sequence of 7 clicks.&lt;br /&gt;
&lt;br /&gt;
lockpick_rotate - is placed on the door. It is the amount the visible rotating handle or pin rotates while picking. For a rotating handle or lockbar normally ignore this and leave the default. During lockpicking it oscillates and progresses to the normal full turn of the handle. Example 0 45 0.&lt;br /&gt;
&lt;br /&gt;
lockpick_translate - is placed on the door. It is the amount the visible handle or pin moves in a straight line while picking. Use this if you have eg, a lockbar that you want to move in a straight line and not rotate, eg sliding catch. Example 0 -5 0&lt;br /&gt;
&lt;br /&gt;
By default, doors are pickable. If you don&#039;t set up the above lockpick spawnargs then it can&#039;t be picked. So there is normally no need to enable lockpicking - just set up the above spawnargs. There is a &#039;&#039;pickable&#039;&#039; spawnarg set to 1 by default. If set to 0 then the door becomes unpickable. But hard to think of an application except in testing or perhaps a special custom situation where it is switched by script perhaps.&lt;br /&gt;
&lt;br /&gt;
===Open, Partially Open, or Closed Door at Game Start===&lt;br /&gt;
&lt;br /&gt;
By default, doors are closed at game start. If you want a door to be already open or partially open then do the following.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note well: Create all doors in their &#039;&#039;closed&#039;&#039; position. Adjust as follows and they will automatically be at the open position when game starts.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Already Open Rotating Door:&lt;br /&gt;
* Select the door.&lt;br /&gt;
* Select the entity inspector&lt;br /&gt;
* Check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Select the &#039;&#039;open&#039;&#039; property&lt;br /&gt;
* Edit the value to 1 in the input box below and tick the check button&lt;br /&gt;
* The door will now be fully open at game start.&lt;br /&gt;
&lt;br /&gt;
* If you want it only partly open:&lt;br /&gt;
* Make sure its &#039;&#039;open&#039;&#039; property is set to 1 as above.&lt;br /&gt;
* Right click the entity inspector and select &#039;&#039;add property&#039;&#039; &lt;br /&gt;
* Click the + sign on the left of the top line where atdm:mover_door is listed to open the folder. (if atdm:mover_door is not listed then the entity was likely changed from eg, func_static. If so, save the map and reload to update the add property list)&lt;br /&gt;
*  scroll down, select &#039;&#039;start_rotate&#039;&#039; then click {{ok}}&lt;br /&gt;
* This adds it to the property list.&lt;br /&gt;
* Now select &#039;&#039;start_rotate&#039;&#039; in the property list.&lt;br /&gt;
* Edit the bottom line of the input box &#039;&#039;below&#039;&#039; the properties window to the angle you want in the same form as described in the &#039;&#039;Rotate Direction and Open Angle&#039;&#039; section. So for example, to have a door that has a fully open default &#039;&#039;rotate&#039;&#039; value of 0 90 0 to start only half open you would give it a &#039;&#039;start_rotate&#039;&#039; value of 0 45 0. &lt;br /&gt;
* In a similar way add the property &#039;&#039;first_frob_open&amp;quot;.&lt;br /&gt;
* Set it to 1 and a partly open door should then open fully on the first frob.&lt;br /&gt;
* Set it to 0 and a partly open door should close on the first frob.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Already Open Sliding Door:&lt;br /&gt;
* Select the door.&lt;br /&gt;
* Select the entity inspector&lt;br /&gt;
* Check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Select the &#039;&#039;open&#039;&#039; property&lt;br /&gt;
* Edit the value to 1 in the input box below and click {{check}} or press {{key-enter}}&lt;br /&gt;
* The door will now be fully open at game start.&lt;br /&gt;
&lt;br /&gt;
* If you want it only partly open:&lt;br /&gt;
* Right click the entity inspector and select &#039;&#039;add property&#039;&#039; &lt;br /&gt;
* Make sure its &#039;&#039;open&#039;&#039; property is set to 1&lt;br /&gt;
* Click the + sign on the left of the top line where atdm:mover_door is listed to open the folder.&lt;br /&gt;
*  scroll down, select &#039;&#039;start_position&#039;&#039; then click OK. (if atdm:mover_door is not listed then the entity was likely changed from eg, func_static. If so, save the map and reload to update the add property list)&lt;br /&gt;
* This adds it to the property list.&lt;br /&gt;
* Now select &#039;&#039;start_position&#039;&#039; in the property list.&lt;br /&gt;
* Edit the bottom line of the input box &#039;&#039;below&#039;&#039; the properties window to the position you want in the same form as described in the &#039;&#039;Sliding (Translation) Amount and Direction&#039;&#039; section. So for example, to have a door that has a fully open default &#039;&#039;translate&#039;&#039; value of 0 50 0 to start only half open you would give it a &#039;&#039;start_position&#039;&#039; value of 0 25 0.&lt;br /&gt;
* In a similar way add the property &#039;&#039;first_frob_open&amp;quot;.&lt;br /&gt;
* Set it to 1 and a partly open door should then open fully on the first frob.&lt;br /&gt;
* Set it to 0 and a partly open door should close on the first frob.&lt;br /&gt;
&lt;br /&gt;
===Rotation Centre, Pivot, Hinge point===&lt;br /&gt;
&lt;br /&gt;
The centre of rotation of a door is at the origin point of its entity and the door rotates with reference to the orientation of that origin point, not the world map. See &#039;&#039;Rotate Direction...&#039;&#039; for more about that. This section only deals with the &#039;&#039;position&#039;&#039; of the rotation centre in the door.&lt;br /&gt;
&lt;br /&gt;
Model Door Centre of Rotation:&amp;lt;br&amp;gt;&lt;br /&gt;
The centre of rotation of a model door cannot be changed within Dark Radiant. Because a model door rotates around the centre &#039;spine&#039; of its back edge this will cause clipping (penetration into solid) as in this example (where the door is set to open to 89 degrees for clarity):&amp;lt;BR&amp;gt;[[Image:modelClipping.jpg]]&amp;lt;BR&amp;gt; So care is needed with placement. You will not normally position a door right next to a wall as in the example but against a shallow frame so clipping will barely be noticeable but either way it can be fixed. You can correct it by adding a translation (see &#039;&#039;Sliding (Translation) Directions&#039;&#039;) value of half the door width in the direction of the door handle. This will gently move the door out as it rotates to clear any solid on that side as in this diagram:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:DoorClip.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Half a door width will typically be about 2. Any &#039;attachments&#039; such as door handles will still synchronize with the door movement whether the door is rotating, sliding, or both.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Brush Door Centre of Rotation:&amp;lt;br&amp;gt;&lt;br /&gt;
The centre of rotation of a brush door &#039;&#039;can&#039;&#039; be changed. The default origin point of a brush is at its centre. Therefore a default rotating brush door will rotate around its centre when you first create it. So, mappers will commonly need to move that rotation point to a corner or even to some other offset position for example, for an openable window using the door function.&lt;br /&gt;
&lt;br /&gt;
Put simply, to move the rotation point of a brush door you need to move the entity origin relative to the brush(es.)&lt;br /&gt;
&lt;br /&gt;
Moving the entity origin (centre of rotation) relative to a brush door:&lt;br /&gt;
&lt;br /&gt;
* Select the brush door&lt;br /&gt;
* Select &#039;&#039;Vertices mode&#039;&#039; (default shortcut key is {{key|name=V}} or button on top toolbar &#039;Select Vertices&#039;)&lt;br /&gt;
* Drag the door&#039;s entity origin to the point where you want the door to rotate. This should be on the corner on the leading edge side (the side to where the door is opening.) to avoid clipping as in this diagram....&lt;br /&gt;
[[Image:getCorner.jpg]]&lt;br /&gt;
* You should now find that door rotates around that point.&lt;br /&gt;
&lt;br /&gt;
===Rotate Direction and Open Angle===&lt;br /&gt;
&lt;br /&gt;
By default, rotating doors open anti-clockwise (viewed from above) by 90 degrees from the start orientation. If you want to change this edit the &#039;&#039;rotate&#039;&#039; property in the entity inspector. Don&#039;t confuse this &#039;&#039;rotate&#039;&#039; property with the &#039;&#039;rotation&#039;&#039; property. In the entity inspector remember that to see the inherited rotate property you must check the box &#039;Show inherited properties&#039;.&lt;br /&gt;
&lt;br /&gt;
The three values shown in the rotate property are degrees from the closed position around Y Z X &#039;&#039;entity origin axes&#039;&#039; (NOT absolute map axes) and so include any start &#039;&#039;rotation&#039;&#039;. So the Z value is the axis vertical to the entity origin. If you tilt a model door over in Dark Radiant then its entity origin tilts too so the Z axis is tilted too (with respect to the world map vertical.) So with a normally opening model door if you lay it flat on its back it will open upwards and not rotate around on the floor. But a brush door must be treated differently...&lt;br /&gt;
&lt;br /&gt;
If you turn a brush door using the normal Dark Radiant rotate tool or the Transform Dialog (accessed via a shortcut key) then it only turns the brush &#039;&#039;relative&#039;&#039; to the entity. So, because the entity origin is by default aligned with the world map then &#039;&#039;in most cases&#039;&#039; you can regard a brush door as rotating with respect to the world map if you wish. But there will be a problem when you come to rotations that are not around the main Y Z X axes of the map, for instance a drawbridge that lowers down to the south east. You might think you can combine Y Z X values to get the result you want - and this can be done (for south east use 45 45 90) but it is a bit of a kludge and the drawbridge twists eccentrically as it lowers (though it arrives correctly!) So for such cases you need to turn the entity itself so its start position is facing south east. You can then just use 0 0 90 to lower the drawbridge perfectly because its Y axis is now pointing south east. To turn the entity you must type or paste the rotation values in directly because using the Dark Radiant rotation tool or Transform Dialog will only turn the brush not the entity. The values are rather lengthy (south east is 0.707107 0.707107 0 -0.707107 0.707107 0 0 0 1) so probably the easiest way is to create a temporary model door, turn it how you want, then select its rotation property. If you now deselect and re-select your brush door then that property will still be in the entity inspector input box and you need only click the check(tick) box to add it to the brush door. NOTE: &#039;&#039;neither the entity nor the brush will show as turned in Dark Radiant.&#039;&#039; Only the rotation property in the entity inspector will indicate the orientation. Instead of a rotated &#039;&#039;construction&#039;&#039;, regard it as a rotation &#039;&#039;instruction&#039;&#039; for when the map is compiled.&lt;br /&gt;
&lt;br /&gt;
These are the rotate property fields. Remember they are all with reference to the door&#039;s entity &#039;&#039;not&#039;&#039; the world map. Since there is no absolute frame of reference I indicate them here as if the entity is aligned with the world map axes...&lt;br /&gt;
&lt;br /&gt;
* Positive Y = Open clockwise (Dark Radiant grid front view, looking north)&lt;br /&gt;
* Negative Y = Open anti-clockwise (Dark Radiant grid front view, looking north)&lt;br /&gt;
&lt;br /&gt;
* Positive Z = Open anti-clockwise (Dark Radiant grid top view, looking down)&lt;br /&gt;
* Negative Z = Open clockwise (Dark Radiant grid top view, looking down)&lt;br /&gt;
&lt;br /&gt;
* Positive X = Open anti-clockwise (Dark Radiant grid side view, looking west)&lt;br /&gt;
* Negative X = Open clockwise (Dark Radiant grid side view, looking west)&lt;br /&gt;
&lt;br /&gt;
The values are in the range -179 to +180. Positive values give an anti-clockwise opening rotation (looking down from above) and negative values give a clockwise opening rotation. The value 180 is unique in that it continues in an anti-clockwise rotation when closing rather than returning clockwise so might be used if you can think of some object that might need such a motion when frobbed!&lt;br /&gt;
&lt;br /&gt;
Edit the rotate value by selecting it and using the input box at the bottom and clicking the check(tick) button. That will change the angle the door will open to. Note that the line with the original default of 0 90 0 will still be there but your new entry will be added on a separate line and that is the one that will work in the game. CAUTION: when adjusting later make sure you have your new line selected and not the original! If you do it will appear to change but your first setting will remain unaltered.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
* 0 90 0 = Opens anti-clockwise round the entity&#039;s &#039;vertical&#039; to 90 degrees - typical default vertical door.&lt;br /&gt;
* 0 0 90 = Lowers a drawbridge from the entity &#039;vertical&#039; to horizontal.&lt;br /&gt;
* 0 0 -45 = Opens clockwise by 45 degrees viewed from the east side. This might suit a skylight in a sloping roof.&lt;br /&gt;
&lt;br /&gt;
Combinations can be used and also combined with slide motions (see &#039;&#039;&#039;Sliding (Translation) Directions&#039;&#039;&#039;) to produce exotic and useful motions. A door opening against an upward-sloping floor can thus have a &#039;&#039;lifting hinge&#039;&#039; and raise up slightly to clear the floor; a door can rotate towards you and slide back to one side very effectively.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sliding (Translation) Amount and Direction===&lt;br /&gt;
&lt;br /&gt;
By default a Dark Mod door will rotate open. For most sliding doors you want to stop them rotating as well as make them slide. You cannot delete (remove) the &#039;&#039;rotate&#039;&#039; property - you have to set the &#039;&#039;rotate&#039;&#039; property to 0 0 0 to stop a door rotating (see &#039;&#039;Rotate Direction and Open Angle&#039;&#039;.)&lt;br /&gt;
&lt;br /&gt;
Now edit the &#039;&#039;translate&#039;&#039; property value by selecting it (remember to have inherited properties box checked) and using the input box at the bottom and clicking the check(tick) button. That will change the distance the door will slide to. Note that the line with the original default of 0 0 0 will still be there but your new entry will be added on a separate line and that is the one that will work in the game. CAUTION: when adjusting later make sure you have your new line selected and not the original! If you do it will appear to change but your first setting will remain unaltered.&lt;br /&gt;
&lt;br /&gt;
Typically (but not always) you will want your sliding door to slide the width of the door. The three values in the translate property by default are 0 0 0 and are X Y Z &#039;&#039;absolute map&#039;&#039; values (irrespective of door orientation) where:&lt;br /&gt;
&lt;br /&gt;
* Positive X = Slide East (Right side of Dark Radiant grid in top view)&lt;br /&gt;
* Negative X = Slide West (Left side of Dark Radiant grid in top view)&lt;br /&gt;
* Positive Y = Slide North (top of Dark Radiant grid in top view)&lt;br /&gt;
* Negative Y = Slide South (bottom of Dark Radiant grid in top view)&lt;br /&gt;
* Positive Z = Slide Up (Top of Dark Radiant grid in side views)&lt;br /&gt;
* Negative Z = Slide Down (Bottom of Dark Radiant grid in side views)&lt;br /&gt;
&lt;br /&gt;
So for a 50 unit wide door you want to slide fully to the east you would use 50 0 0 for the translate property values. A 100 unit portcullis sliding vertically up would need 0 0 100 to be fully raised.&lt;br /&gt;
&lt;br /&gt;
=== Doors Collision/Push Behaviour ===&lt;br /&gt;
Doors are pushing all entities by default, except for the player. Doors will also stop moving when anything blocks their movement. However, this default behaviour can be changed by setting the according spawnargs:&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;push_player&#039;&#039;&#039; to &#039;&#039;&#039;1&#039;&#039;&#039; to let the player be pushed by this door:&lt;br /&gt;
 &amp;quot;push_player&amp;quot;  &amp;quot;1&amp;quot;  // Push the player too (default is off)&lt;br /&gt;
&lt;br /&gt;
By default &#039;&#039;&#039;stop_when_blocked&#039;&#039;&#039; is set to 1 and if a door is blocked by an entity then even if the entity is removed afterwards, the door stays still. The next frob will close the door.&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;stop_when_blocked&#039;&#039;&#039; to &#039;&#039;&#039;0&#039;&#039;&#039; to prevent the door from ending the opening sequence when anything blocks its way. It will still pause - but continue to open if the block is removed.&lt;br /&gt;
 &amp;quot;stop_when_blocked&amp;quot;   &amp;quot;0&amp;quot;  // door keeps moving after being blocked (default is off)&lt;br /&gt;
With this setting, doors will still stop at blocking entities (the player, for instance), but will continue to move when the entity clears the way.&lt;br /&gt;
&lt;br /&gt;
There is another spawnarg which stops a door pushing a moveable. Apply this to the &#039;&#039;moveable&#039;&#039; not the door...&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;notPushable&amp;quot;   &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Sounds and Sound Propagation through Doors and Doorways===&lt;br /&gt;
&lt;br /&gt;
Sound propagation relies on visportals. For details study [[Sound Propagation: Part 1]] and [[Sound Propagation: Part 2]] as well as [[Visportals]] This tutorial will just cover the relevant sound and sound propagation &#039;&#039;properties&#039;&#039; of doors. If you set the &#039;&#039;show inherited properties&#039;&#039; box in the entity inspector you can see them as described here.&lt;br /&gt;
&lt;br /&gt;
The sound of doors opening and closing is set in the snd_open and snd_close properties. You can silence them by setting the following properties as shown:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_open nosound&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;snd_close nosound&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t just use a dash - as it seems to cause a sound of its own.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_locked&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The sound played when a player tries to open a locked door.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_unlock string&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The sound played when a player unlocks a door.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;loss_open&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Drop in sound volume in dB propagated to AI (not player) when going through an open door. (default 1dB)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;loss_closed&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Drop in sound volume in dB propagated to AI (not player) when going through a closed door. (default 15dB) You would want to set this very high to block all sound with a thick door but very low for a barred gate for example.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;loss_double_open&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Drop in sound volume in dB propagated to AI (not player) when going through double doors when only one is open. (default 1dB)&lt;br /&gt;
&lt;br /&gt;
There are also various sound properties for lockpicking:&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;snd_lockpick_pin_1 through 14&#039;&#039; and &#039;&#039;snd_lockpick_pin_success&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Speed of Door Opening and Closing===&lt;br /&gt;
&lt;br /&gt;
Rotating Door Speed:&amp;lt;br&amp;gt;&lt;br /&gt;
At the time of writing, the time a rotating door takes to open or close is set in the &#039;&#039;move_time&#039;&#039; property whatever its maximum open angle. So with rotation set at say 150 degrees the door just opens faster than at say 80 degrees. This is likely to be changed to a constant angular velocity so check to see if there a new property added if the following no longer works. The problem is that if an interruptable (see Extra Notes) door is frobbed while in motion it stops; another frob will reverse the motion - so even if the door is only open a crack it will still take the full time to close and vice versa.&lt;br /&gt;
&lt;br /&gt;
To change the time a rotating door takes to open or close, make sure the door is selected then...&lt;br /&gt;
&lt;br /&gt;
* Right click the entity inspector and check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Scroll down, select &#039;&#039;move_time&#039;&#039;&lt;br /&gt;
* Edit the second line of the input box &#039;&#039;below&#039;&#039; the properties window to the time you want.&lt;br /&gt;
* The time is in seconds and decimal fractions can be used.&lt;br /&gt;
* The default is 1 second and if set to this then the door opens and closes in one second whatever the maximum open angle, great or small.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sliding Door Speed:&amp;lt;br&amp;gt;&lt;br /&gt;
The speed of a sliding door is set in the &#039;&#039;translate_speed&#039;&#039; property. To add this, make sure the door is selected then...&lt;br /&gt;
&lt;br /&gt;
* Right click the entity inspector and check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Scroll down, select &#039;&#039;translate_speed&#039;&#039;&lt;br /&gt;
* Edit the second line of the input box &#039;&#039;below&#039;&#039; the properties window to the speed you want.&lt;br /&gt;
* The speed is in Dark Radiant grid units per second.&lt;br /&gt;
* The default is 0 and if set to this then the door slides open in one second whatever the distance, great or small.&lt;br /&gt;
* CAUTION: If you later change the door back to a rotating door then delete the &#039;&#039;translate_speed&#039;&#039; property or ensure it is set to 0 as (at the time of writing but this will be fixed) a bug makes rotating doors open and close instantly. (Note: you can still mix sliding with rotating but check - this bug might only be if &#039;&#039;translate&#039;&#039; is set to 0 0 0)&lt;br /&gt;
&lt;br /&gt;
===Visportals and Doors===&lt;br /&gt;
&lt;br /&gt;
A visportal face surrounded by solid at its edges and in contact with a door is closed when the door is closed and enabled when the door is open. In most cases you will place a visportal in contact with a working door unless you can see through the door (such as a true glass door or barred gate.) For full details see [[Visportals]].&lt;br /&gt;
&lt;br /&gt;
==Auto-Closing/Opening Doors==&lt;br /&gt;
Doors that automatically close after being open for some time are easy to setup: Each frobmover entity supports these spawnargs:&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;auto_close_time&amp;quot;:Set this to something &amp;gt;= 0 to let the mover automatically close (again) after this time when being fully opened (measured in seconds). Defaults to -1, which means &#039;do not autoclose&#039;. The event is also activated when the mover starts at the open position at map start.&lt;br /&gt;
;&amp;quot;auto_open_time&amp;quot;:&amp;quot;Set this to something &amp;gt;= 0 to let the mover automatically open (again) after this time when being fully closed (measured in seconds). Defaults to -1, which means &#039;do not autoopen&#039;. The event is also activated when the mover starts at the closed position at map start.&lt;br /&gt;
&lt;br /&gt;
Old text:&lt;br /&gt;
&lt;br /&gt;
Note that auto-closing doors and AI closing doors behind them, is very much work in progress at the time of writing, so for now, this is another method that works. Check first if true AI closing of doors is working yet before bothering with this!&lt;br /&gt;
&lt;br /&gt;
I have one door that I particularly want the AI to close as there is a bit of frame lag inside if not. So I set this up and it works good as an auto-closing door - not as good as a true AI closing door as it will auto close when the player goes through as well but it does look very effective to see AI going through and closing the door behind them. Not tested exhaustively so I don&#039;t know if there could be any downside. Here&#039;s what to do....&lt;br /&gt;
&lt;br /&gt;
First a quick summary to make it more clear:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;A trigger_relay is used both as a relay AND carries a stim. We put the trigger_relay with its stim in the path of the open door. The door has a response property. When it opens and contacts the stim its response is to send a signal back to the relay. The relay pauses then closes the door...&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* First, optionally give your door a suitable name like autodoor1, whatever.&lt;br /&gt;
* Copy that name to the clipboard.&lt;br /&gt;
&lt;br /&gt;
Next we need a relay with a delay:&lt;br /&gt;
&lt;br /&gt;
* Create entity &amp;gt; darkmod &amp;gt; trigger_relay&lt;br /&gt;
&lt;br /&gt;
* Place it roughly at the position the door will be at when open and to be on the safe side 3/4th of the way to the far end of the door (not the hinge end) to give max distance from the close door.&lt;br /&gt;
&lt;br /&gt;
* Add the property &#039;target&#039; and paste in the door name you just copied.&lt;br /&gt;
&lt;br /&gt;
* Give the relay itself a name, eg, autoDoor_relay_1, and copy that name to the clipboard, you&#039;ll need that too in a bit.&lt;br /&gt;
&lt;br /&gt;
* Add the property delay and the value 3 - this is the delay in seconds before the door will close; 3 seems about right but 2 might be worth a try because to that 3 is added a random value between 0 to 0.5 seconds from the Time Interval we entered for the stim firings.&lt;br /&gt;
&lt;br /&gt;
* Add the property &#039;wait&#039; and the value 3. This is the time before it can work again in seconds. If you set it too low then in theory the door might trigger again but in this situation I don&#039;t think it&#039;s possible. Too long, eg, one minute, and it won&#039;t work if the AI goes back through the door before then. If this value is -1 then the whole thing will only work ONCE so might be used for an AI who goes through once, closes it behind him, but you don&#039;t want it to be an autodoor thereafter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That&#039;s the relay, now we add a stim to it:&lt;br /&gt;
&lt;br /&gt;
* Still with the trigger relay selected, go to {{menu|Entity|Stim/Response}}&lt;br /&gt;
&lt;br /&gt;
* Custom stim tab.&lt;br /&gt;
&lt;br /&gt;
* Click Add stim type, select the new custom stim type you just made at the bottom of the list and type in eg, autoDoorStim at top right in the input box.&lt;br /&gt;
&lt;br /&gt;
* Click the stim tab and the little drop down arrow against the &#039;type&#039; selector at bottom left and you should see your new custom stim name. Select it.&lt;br /&gt;
&lt;br /&gt;
* Select the new autoDoorStim in the list and on the right you need only type in the radius box 15.0 There is quite a lot of room for error. I had it working on 10 and also on 25. The value should be less than the distance to the closed door else it will trigger open! But no so small that the door might not reach it.&lt;br /&gt;
&lt;br /&gt;
* Select the check box for Time Interval and enter 500 (millisecs.) This is so it doesn&#039;t keep firing more frequently than is necessary. This stim will be firing all through your mission whether the door is used or not so if you had dozens of these then maybe it would affect performance. Too big a number and there may be a long delay before the door shuts - but it will be random depending on the next time the stim happens to fire. We&#039;ll control the delay we want more precisely later.&lt;br /&gt;
&lt;br /&gt;
* Click {{ok}} to confirm it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That&#039;s the stim set up, now for the response to it which is put on the door....&lt;br /&gt;
&lt;br /&gt;
* Select the doorm, then use {{menu|Entity|Stim/response}} and select the response tab.&lt;br /&gt;
&lt;br /&gt;
* Click the little drop down arrow against the &#039;type&#039; selector at bottom left and you should see your new custom stim name. Select it.&lt;br /&gt;
&lt;br /&gt;
* Right click in the big &#039;&#039;Response Effects&#039;&#039; box on the bottom right of the panel.&lt;br /&gt;
&lt;br /&gt;
* Add New Effect and you should get a default &#039;Activate Response&#039; response added to the list. Double click it.&lt;br /&gt;
&lt;br /&gt;
* In the Effect selector at the stop select &#039;Trigger&#039;&lt;br /&gt;
&lt;br /&gt;
* in the Target box, paste in the name of the relay you copied or you can select it from the list at the little arrow.&lt;br /&gt;
&lt;br /&gt;
* Leave the Activator box empty.&lt;br /&gt;
&lt;br /&gt;
* Click {{apply}} and then {{ok}} on the main S &amp;amp; R panel bottom right.&lt;br /&gt;
&lt;br /&gt;
It should now work. No need to wait for an AI, just frob the door and watch it close itself. If not, check the position of the stim brush is close to where the door stops when open.&lt;br /&gt;
&lt;br /&gt;
==AI Door management==&lt;br /&gt;
&lt;br /&gt;
See also [[#Keys_carried_by_AI]] above.&lt;br /&gt;
&lt;br /&gt;
By default AI will open doors and close them behind them. Here are some spawnargs the mapper can use to modify that behaviour:&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;ai_should_not_handle&amp;quot; :If set to 1, AI will not attempt to handle it and add it to the forbidden areas when closed (so that it doesn&#039;t try to path through). They might still walk through the door when it is open though. Useful if you have some special use door that you don&#039;t want the AI to operate.&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;ai_should_not_close&amp;quot; :If set to 1, AI will not close the door behind them unless it obstructs them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To get AI to unlock/relock specific doors there are two methods currently:&lt;br /&gt;
&lt;br /&gt;
1. add the following spawnarg/value to the AI:&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;can_unlock1&amp;quot; &#039;&#039;&amp;lt;doorname&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do NOT use can_unlock_1.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For additional doors on the same AI use &#039;&#039;can_unlock2 doorname&#039;&#039; etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. In the editor position an actual key that works for that door on the AI and also add to the key bind &amp;lt;AIname&amp;gt; and also bindToJoint LeftHips_Dummy (see other joints names elsewhere in wiki.) Currently, if the player pickpockets the key then the AI seeks an alternate route but otherwise does nothing (?) This may be upgraded in the future to better strategies.&lt;br /&gt;
&lt;br /&gt;
3. There is the possibility in the future of an additional method which would just use special attach spawnargs to make the above easier. The key would spawn at the correct position at game start. Watch this space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Door handling positions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is also possible to set custom door handling positions for the AI. This is especially useful when the standard routine that lets the AI choose their standing positions while opening and closing the door fails, leaving them circling around in front of the door helplessly.&lt;br /&gt;
&lt;br /&gt;
Place a movers &amp;gt; atdm:door_handling_position entity where you want the AI to stand while opening/closing the door from this side.(it can be found in the movers folder in the entity chooser)&lt;br /&gt;
&lt;br /&gt;
On the door, you need to set the spawn arg &amp;quot;door_handle_position&amp;quot; &amp;quot;name_of_door_handling_position&amp;quot; You can also place a door handling position on each side of the door, the AI should automatically choose the right one. In this case, you need to set spawn args with &amp;quot;door_handle_position_1&amp;quot; etc and the corresponding names of the door handling position entities on the door.&lt;br /&gt;
&lt;br /&gt;
The door handling positions can also carry spawn args that define the behaviour of the AI, which are useful for example for doors that can only be openend or locked from one side:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_open&amp;quot;&#039;&#039;&#039; If set to true, the AI will not try to open the door from this side (but still walk through when the door is already open)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_close&amp;quot;&#039;&#039;&#039; If set to true, the AI will not attempt to close the door from this side&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_unlock&amp;quot;&#039;&#039;&#039; If set true, the AI will not be able to unlock the door from this side, but still use it when it is not locked.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_lock&amp;quot;&#039;&#039;&#039; If this is set true, the AI will not lock the door from this side.&lt;br /&gt;
&lt;br /&gt;
==Doors as Triggers==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;by Ishtvan &amp;amp; greebo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Doors (or any binary frob mover, buttons, levers, etc) now have the option to trigger their target on closing or opening. (For definition purposes, a button is defined as &amp;quot;closed&amp;quot; in the state when it starts out and &amp;quot;open&amp;quot; in the state you press it down to. I know that&#039;s a little non-intuitive, but it came from deriving from doors).&lt;br /&gt;
&lt;br /&gt;
New spawnargs on frob movers:&lt;br /&gt;
;&amp;quot;trigger_on_open&amp;quot; :If set to 1, this binary mover will trigger its targets when it starts out completely closed and is opened.&lt;br /&gt;
;&amp;quot;trigger_when_opened&amp;quot;:If set to 1, this binary mover will trigger its targets when it is completely opened. Code defaults to 0.&lt;br /&gt;
;&amp;quot;trigger_on_close&amp;quot;:If set to 1, this binary mover will trigger its targets when it completely closes after being open.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Skins: A Wide Variety of Door Textures==&lt;br /&gt;
&lt;br /&gt;
This is to remind you that as with many Dark Mod models, there is a wide range of extras skins (textures) available for door models. There are now several basic door entities of different sizes so choose your size first. Then enter the spawnarg: skin with any temporary value. Now select it and click the skin button at the bottom of Dark Radiant&#039;s Entity Inspector and you will find a large of range of skin textures from which to select to give you a choice of appearances for your door.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Extra Notes==&lt;br /&gt;
The property &#039;&#039;interruptable&#039;&#039; determines whether a door can be stopped by frobbing while it is opening or closing. So by frobbing then frobbing again, the player can open a door to any position, eg, slightly ajar to peek through.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;func_darkmod_door&#039;&#039; is no longer used (just in case you come across it in the Dark Mod forums or wiki.) The Doom func_door is still available but for Dark Mod, but &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; is the entity to use.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Limits,_Max,_Min,_Stats,_etc&amp;diff=11950</id>
		<title>Limits, Max, Min, Stats, etc</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Limits,_Max,_Min,_Stats,_etc&amp;diff=11950"/>
		<updated>2011-01-13T22:18:12Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Slopes and Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Written by Fidcal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is a collection of game and map limits, maximums and minimums, etc. for the mapper to reference.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note that some values might change as many features are still work in progress.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
All units used here are Dark Radiant grid units (same as Doom 3 units.)&lt;br /&gt;
&lt;br /&gt;
==Conversion of game units==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Main article: [[Conversion of Game Units]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 1.1 DarkRadiant grid units = 1 inch = 2.54 cm&lt;br /&gt;
* 1 DarkRadiant unit = 0.909 inches = 2.309 cm&lt;br /&gt;
&lt;br /&gt;
==Grid Size==&lt;br /&gt;
&lt;br /&gt;
Grid size is 131,072 x 131,072 units x 131,072 (inches) or about 2 x 2 x 2 miles&lt;br /&gt;
&lt;br /&gt;
Theoretically a map might be made with about 50 stacks of 2 x 2 miles each about 200 foot high that&#039;s 100 x 100 miles or 10,000 square miles. Problem is handling the file size but it illustrates that the only limit is labour, imagination, RAM size, etc.&lt;br /&gt;
&lt;br /&gt;
==Entities Max in Map==&lt;br /&gt;
&lt;br /&gt;
The limit is 8192 entities. However, maps should not get too close to this limit, as headroom for entities spawned at runtime has to be left (projectiles and such). &lt;br /&gt;
&lt;br /&gt;
Runtime entities are f.i. the player character, weapons, projectiles you shoot. The biggest source of &amp;quot;hidden entities spawned at runtime&amp;quot; are the combo entities. F.i. each candle or torch spawns at least a flame, fireplaces spawn the flame and possible extra wood piles, candle holders spawn a candle and the flame, a chandelier might spawn 3 candles and 3 flames etc. Note that the flames are spawned even if the entity is not lit, to allow the player relighting it.&lt;br /&gt;
&lt;br /&gt;
So keep your entities well below 7000 or even 6000.&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible to raise the entity limit in the SDK, but usually we won&#039;t do that until it&#039;s absolutely necessary. The bonehoard has about 700 entities currently, but angua is really saving them.&lt;br /&gt;
&lt;br /&gt;
==Player Limits==&lt;br /&gt;
&lt;br /&gt;
===Doorways, gaps===&lt;br /&gt;
&lt;br /&gt;
* Minimum width a player can squeeze through = 33&lt;br /&gt;
* Minimum width a player can lean into = 20&lt;br /&gt;
* Minimum height a player can walk under = 75&lt;br /&gt;
* Minimum height a player can crouch through is 39&lt;br /&gt;
* Minimum square hole to drop into/mantle out of is 39 (length) x 33 (width.) Note that this is difficult (impossible?) to mantle up through if no sides in hole to align to (ie if just a hole in a ceiling rather than a 39 x 33 shaft, see below)&lt;br /&gt;
* Minimum oval hole to drop into/mantle out of is 39 (length) x 33 (width.) Note that this is extremely difficult for the player to align to even to drop down, see below.&lt;br /&gt;
* Minimum circular hole to drop into/mantle out of is 39 x 39 Note that this is presumed and not tested and likely to be extremely difficult for the player to align to even to drop down, see below&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ADDITIONAL NOTES:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Ladders need significant extra space so allow for that and test. Sometimes a ladder does not need to go through an opening but only up to it. See also the following note.&lt;br /&gt;
# Smaller gaps can be simulated by lining the opening with entity brush(es)/patch(es) and giving it/them the property/value:  solid 0. But you need to consider the player&#039;s vision clipping into that &#039;simulated solid&#039; and test this. This same technique can also be used to simulate even legitimate small/minimum sizes (ie, make the actual solid gap larger) in order to make them easier (and probably less frustrating) for the player.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Mantling, Jumping===&lt;br /&gt;
&lt;br /&gt;
* MaximComfortable mantle&lt;br /&gt;
* Maximum normal mantle, standing, walking, or running = 134&lt;br /&gt;
* Maximum jump mantle, standing, walking, or running = 182&lt;br /&gt;
* Minimum height to mantle onto = 1&lt;br /&gt;
* Minimum width to mantle onto = 1&lt;br /&gt;
* Minimum open wall depth to mantle onto = 1&lt;br /&gt;
* Minimum shelf depth to jump mantle onto from front = 16&lt;br /&gt;
* Minimum shelf depth to jump mantle onto from side = 16&lt;br /&gt;
* Minimum ledge depth to mantle or jump mantle onto from front = 16&lt;br /&gt;
* Minimum ledge depth to mantle or jump mantle onto from side = 16&lt;br /&gt;
* Minimum height of bottom of shelf to normal mantle onto = 74&lt;br /&gt;
* Minimum height of bottom of shelf to jump mantle onto = 122&lt;br /&gt;
* Maximum gap to run jump mantle over = 176&lt;br /&gt;
* Maximum fall without damage = 186&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==AI limits==&lt;br /&gt;
&lt;br /&gt;
This varies with the different types of AI.&lt;br /&gt;
&lt;br /&gt;
Minimum doorway width a normal humanoid AI can go through = 48&lt;br /&gt;
Minimum doorway height a normal humanoid AI can go under = 96?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Slopes and Steps==&lt;br /&gt;
&lt;br /&gt;
The maximum slope for an AI is approximately 40 degrees from the horizontal but varies upon the situation and the AI.&lt;br /&gt;
&lt;br /&gt;
The player can walk without slipping off on slopes no steeper than 45 degrees from the horizontal. If the terrain is rough this could be frustratingly difficult, however. By default, the player cannot mantle on slopes steeper than 45 degrees either (this is intended to avoid continuous-mantling exploits).&lt;br /&gt;
&lt;br /&gt;
The maximum step height for AI and player is 16 though some AI cannot step up over 14 and perhaps less. But the minimum depth from front to back of a step is only 1 and this can be used to get extreme slopes and very steep steps - even near vertical walls (see [[Pathfinding]])&lt;br /&gt;
&lt;br /&gt;
==Weapons and Items==&lt;br /&gt;
* Maximum length of rope attached to the rope arrow = ~400&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11901</id>
		<title>Sleeping AI</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11901"/>
		<updated>2010-12-30T18:46:27Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Sleeping position in the bed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Sleeping AI are (mostly) working now. They can either put themselves to bed at map start and remain there (unless alerted) or else patrol there, sleep for a while, then patrol again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Non-patrolling sleepers==&lt;br /&gt;
&lt;br /&gt;
These are defined as sleepers at the start and immediately lay down. They only will get up if alerted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set on the AI the spawn arg:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;sleeping 1&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Patrol sleepers==&lt;br /&gt;
&lt;br /&gt;
This is done by targetting a path_sleep entity which then targets a path_wait to define how long they will sleep before getting up again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting up==&lt;br /&gt;
&lt;br /&gt;
By default, place the AI on the right side of the bed (as you look towards the head of the bed) and &#039;&#039;&#039;facing away&#039;&#039;&#039; from the bed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Direction===&lt;br /&gt;
&lt;br /&gt;
If you want the AI to start from the left side of the bed (as you look towards the head of the bed)  then add:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_left 0&#039;&#039;   (note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
===Sleeping position in the bed===&lt;br /&gt;
&lt;br /&gt;
====Head to Toe====&lt;br /&gt;
&lt;br /&gt;
Stand the AI close to the bed facing away from it and about half way between the head and the foot; adjust as needed towards the head or foot direction of the bed.&lt;br /&gt;
&lt;br /&gt;
====Sideways====&lt;br /&gt;
&lt;br /&gt;
The distance the AI slides across onto the bed can be controlled by&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_slide_dist 16&#039;&#039; (default)&lt;br /&gt;
&lt;br /&gt;
(note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
==Monster clip the bed or not?==&lt;br /&gt;
&lt;br /&gt;
Yes, monster clip should not directly effect the sleep animation and the bed should normally be monsterclipped anyway. The only way it might affect it is if the clip sticks out too far and stops the AI getting near enough. In that case reduce narrow the clip close to the bed edge and/or adjust the slide value (see [[#Sleeping position in the bed]]&lt;br /&gt;
&lt;br /&gt;
==Problems, Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
There are a few known problems:&lt;br /&gt;
&lt;br /&gt;
===AI is sinking into the bed or floating high===&lt;br /&gt;
&lt;br /&gt;
AI animate to the same height so if they are slightly high the first thing to check is the bed surface height. Most Dark Mod beds are a standard height which is correct for sleepers. One known bed (at time of writing) is a little high so AI will animate into it so be sunk a little low. This bed can be sunk a little into the floor to compensate. If they are floating slightly high then the bed can be lifted a little and perhaps some wood brushes under the legs make it right.&lt;br /&gt;
&lt;br /&gt;
If the AI are floating &#039;&#039;&#039;very&#039;&#039;&#039; high then this is most likely caused by the AI clipping into the bed at the start so they are lifted up to stand on its edge before they animate. They then animate up even higher. Solution: move them further out at the start. Note: this problem probably only affects AI that start off sleeping rather than patrol to a bed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AI lays down too far to one side of the bed===&lt;br /&gt;
&lt;br /&gt;
To move an AI across the bed see [[#Sleeping position in the bed]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AI lays wrong way head to foot===&lt;br /&gt;
&lt;br /&gt;
If the AI is laying the wrong way with his head at the foot of the bed and his feet at the head then see [[#Direction]]&lt;br /&gt;
&lt;br /&gt;
==Known bugs==&lt;br /&gt;
&lt;br /&gt;
AI have their eyes closed now while sleeping. This is using the pain anim as a place holder at the moment, since we don&#039;t have a suitable anim yet (sleeping looks like a quite painful experience now...)&lt;br /&gt;
&lt;br /&gt;
Another problem is that the bounding box stays behind and is solid when the AI goes to bed.&lt;br /&gt;
&lt;br /&gt;
When you KO a sleeping AI, they may drop down through the bed, pop back to standing, like they did in Thief, &lt;br /&gt;
&lt;br /&gt;
Also this is probably unrelated but might be contributing to this problem: I&#039;m noticing that KO&#039;d AI are sometimes(?) flashing into the AF pose for just a frame, then back to the pose they were in before KO&#039;ing. You can see it if you watch really closely.&lt;br /&gt;
&lt;br /&gt;
There is also a problem when they see the player while laying down - they jump up for a moment, then finsih putting themselves to bed and then finally get up to chase the player.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-ai}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11900</id>
		<title>Sleeping AI</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11900"/>
		<updated>2010-12-30T18:45:01Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Monster clip the bed or not? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Sleeping AI are (mostly) working now. They can either put themselves to bed at map start and remain there (unless alerted) or else patrol there, sleep for a while, then patrol again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Non-patrolling sleepers==&lt;br /&gt;
&lt;br /&gt;
These are defined as sleepers at the start and immediately lay down. They only will get up if alerted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set on the AI the spawn arg:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;sleeping 1&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Patrol sleepers==&lt;br /&gt;
&lt;br /&gt;
This is done by targetting a path_sleep entity which then targets a path_wait to define how long they will sleep before getting up again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting up==&lt;br /&gt;
&lt;br /&gt;
By default, place the AI on the right side of the bed (as you look towards the head of the bed) and &#039;&#039;&#039;facing away&#039;&#039;&#039; from the bed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Direction===&lt;br /&gt;
&lt;br /&gt;
If you want the AI to start from the left side of the bed (as you look towards the head of the bed)  then add:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_left 0&#039;&#039;   (note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
===Sleeping position in the bed===&lt;br /&gt;
&lt;br /&gt;
Stand the AI close to the bed about half way between the head and the foot; adjust as needed.&lt;br /&gt;
&lt;br /&gt;
The distance the AI slides across onto the bed can be controlled by&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_slide_dist 16&#039;&#039; (default)&lt;br /&gt;
&lt;br /&gt;
(note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
==Monster clip the bed or not?==&lt;br /&gt;
&lt;br /&gt;
Yes, monster clip should not directly effect the sleep animation and the bed should normally be monsterclipped anyway. The only way it might affect it is if the clip sticks out too far and stops the AI getting near enough. In that case reduce narrow the clip close to the bed edge and/or adjust the slide value (see [[#Sleeping position in the bed]]&lt;br /&gt;
&lt;br /&gt;
==Problems, Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
There are a few known problems:&lt;br /&gt;
&lt;br /&gt;
===AI is sinking into the bed or floating high===&lt;br /&gt;
&lt;br /&gt;
AI animate to the same height so if they are slightly high the first thing to check is the bed surface height. Most Dark Mod beds are a standard height which is correct for sleepers. One known bed (at time of writing) is a little high so AI will animate into it so be sunk a little low. This bed can be sunk a little into the floor to compensate. If they are floating slightly high then the bed can be lifted a little and perhaps some wood brushes under the legs make it right.&lt;br /&gt;
&lt;br /&gt;
If the AI are floating &#039;&#039;&#039;very&#039;&#039;&#039; high then this is most likely caused by the AI clipping into the bed at the start so they are lifted up to stand on its edge before they animate. They then animate up even higher. Solution: move them further out at the start. Note: this problem probably only affects AI that start off sleeping rather than patrol to a bed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AI lays down too far to one side of the bed===&lt;br /&gt;
&lt;br /&gt;
To move an AI across the bed see [[#Sleeping position in the bed]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AI lays wrong way head to foot===&lt;br /&gt;
&lt;br /&gt;
If the AI is laying the wrong way with his head at the foot of the bed and his feet at the head then see [[#Direction]]&lt;br /&gt;
&lt;br /&gt;
==Known bugs==&lt;br /&gt;
&lt;br /&gt;
AI have their eyes closed now while sleeping. This is using the pain anim as a place holder at the moment, since we don&#039;t have a suitable anim yet (sleeping looks like a quite painful experience now...)&lt;br /&gt;
&lt;br /&gt;
Another problem is that the bounding box stays behind and is solid when the AI goes to bed.&lt;br /&gt;
&lt;br /&gt;
When you KO a sleeping AI, they may drop down through the bed, pop back to standing, like they did in Thief, &lt;br /&gt;
&lt;br /&gt;
Also this is probably unrelated but might be contributing to this problem: I&#039;m noticing that KO&#039;d AI are sometimes(?) flashing into the AF pose for just a frame, then back to the pose they were in before KO&#039;ing. You can see it if you watch really closely.&lt;br /&gt;
&lt;br /&gt;
There is also a problem when they see the player while laying down - they jump up for a moment, then finsih putting themselves to bed and then finally get up to chase the player.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-ai}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11899</id>
		<title>Sleeping AI</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11899"/>
		<updated>2010-12-30T18:43:57Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Sleeping position in the bed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Sleeping AI are (mostly) working now. They can either put themselves to bed at map start and remain there (unless alerted) or else patrol there, sleep for a while, then patrol again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Non-patrolling sleepers==&lt;br /&gt;
&lt;br /&gt;
These are defined as sleepers at the start and immediately lay down. They only will get up if alerted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set on the AI the spawn arg:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;sleeping 1&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Patrol sleepers==&lt;br /&gt;
&lt;br /&gt;
This is done by targetting a path_sleep entity which then targets a path_wait to define how long they will sleep before getting up again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting up==&lt;br /&gt;
&lt;br /&gt;
By default, place the AI on the right side of the bed (as you look towards the head of the bed) and &#039;&#039;&#039;facing away&#039;&#039;&#039; from the bed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Direction===&lt;br /&gt;
&lt;br /&gt;
If you want the AI to start from the left side of the bed (as you look towards the head of the bed)  then add:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_left 0&#039;&#039;   (note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
===Sleeping position in the bed===&lt;br /&gt;
&lt;br /&gt;
Stand the AI close to the bed about half way between the head and the foot; adjust as needed.&lt;br /&gt;
&lt;br /&gt;
The distance the AI slides across onto the bed can be controlled by&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_slide_dist 16&#039;&#039; (default)&lt;br /&gt;
&lt;br /&gt;
(note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
==Monster clip the bed or not?==&lt;br /&gt;
&lt;br /&gt;
Yes, monster clip should not directly effect the sleep animation and the bed should normally be monsterclipped anyway. The only way it might affect it is if the clip sticks out too far and stops the AI getting near enough. In that case reduce narrow the clip close to the bed edge and/or adjust the slide value&lt;br /&gt;
&lt;br /&gt;
==Problems, Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
There are a few known problems:&lt;br /&gt;
&lt;br /&gt;
===AI is sinking into the bed or floating high===&lt;br /&gt;
&lt;br /&gt;
AI animate to the same height so if they are slightly high the first thing to check is the bed surface height. Most Dark Mod beds are a standard height which is correct for sleepers. One known bed (at time of writing) is a little high so AI will animate into it so be sunk a little low. This bed can be sunk a little into the floor to compensate. If they are floating slightly high then the bed can be lifted a little and perhaps some wood brushes under the legs make it right.&lt;br /&gt;
&lt;br /&gt;
If the AI are floating &#039;&#039;&#039;very&#039;&#039;&#039; high then this is most likely caused by the AI clipping into the bed at the start so they are lifted up to stand on its edge before they animate. They then animate up even higher. Solution: move them further out at the start. Note: this problem probably only affects AI that start off sleeping rather than patrol to a bed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AI lays down too far to one side of the bed===&lt;br /&gt;
&lt;br /&gt;
To move an AI across the bed see [[#Sleeping position in the bed]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AI lays wrong way head to foot===&lt;br /&gt;
&lt;br /&gt;
If the AI is laying the wrong way with his head at the foot of the bed and his feet at the head then see [[#Direction]]&lt;br /&gt;
&lt;br /&gt;
==Known bugs==&lt;br /&gt;
&lt;br /&gt;
AI have their eyes closed now while sleeping. This is using the pain anim as a place holder at the moment, since we don&#039;t have a suitable anim yet (sleeping looks like a quite painful experience now...)&lt;br /&gt;
&lt;br /&gt;
Another problem is that the bounding box stays behind and is solid when the AI goes to bed.&lt;br /&gt;
&lt;br /&gt;
When you KO a sleeping AI, they may drop down through the bed, pop back to standing, like they did in Thief, &lt;br /&gt;
&lt;br /&gt;
Also this is probably unrelated but might be contributing to this problem: I&#039;m noticing that KO&#039;d AI are sometimes(?) flashing into the AF pose for just a frame, then back to the pose they were in before KO&#039;ing. You can see it if you watch really closely.&lt;br /&gt;
&lt;br /&gt;
There is also a problem when they see the player while laying down - they jump up for a moment, then finsih putting themselves to bed and then finally get up to chase the player.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-ai}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11898</id>
		<title>Sleeping AI</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11898"/>
		<updated>2010-12-30T18:43:20Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Sleeping position in the bed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Sleeping AI are (mostly) working now. They can either put themselves to bed at map start and remain there (unless alerted) or else patrol there, sleep for a while, then patrol again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Non-patrolling sleepers==&lt;br /&gt;
&lt;br /&gt;
These are defined as sleepers at the start and immediately lay down. They only will get up if alerted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set on the AI the spawn arg:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;sleeping 1&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Patrol sleepers==&lt;br /&gt;
&lt;br /&gt;
This is done by targetting a path_sleep entity which then targets a path_wait to define how long they will sleep before getting up again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting up==&lt;br /&gt;
&lt;br /&gt;
By default, place the AI on the right side of the bed (as you look towards the head of the bed) and &#039;&#039;&#039;facing away&#039;&#039;&#039; from the bed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Direction===&lt;br /&gt;
&lt;br /&gt;
If you want the AI to start from the left side of the bed (as you look towards the head of the bed)  then add:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_left 0&#039;&#039;   (note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
==Sleeping position in the bed==&lt;br /&gt;
&lt;br /&gt;
Stand the AI close to the bed about half way between the head and the foot; adjust as needed.&lt;br /&gt;
&lt;br /&gt;
The distance the AI slides across onto the bed can be controlled by&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_slide_dist 16&#039;&#039; (default)&lt;br /&gt;
&lt;br /&gt;
(note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
==Monster clip the bed or not?==&lt;br /&gt;
&lt;br /&gt;
Yes, monster clip should not directly effect the sleep animation and the bed should normally be monsterclipped anyway. The only way it might affect it is if the clip sticks out too far and stops the AI getting near enough. In that case reduce narrow the clip close to the bed edge and/or adjust the slide value&lt;br /&gt;
&lt;br /&gt;
==Problems, Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
There are a few known problems:&lt;br /&gt;
&lt;br /&gt;
===AI is sinking into the bed or floating high===&lt;br /&gt;
&lt;br /&gt;
AI animate to the same height so if they are slightly high the first thing to check is the bed surface height. Most Dark Mod beds are a standard height which is correct for sleepers. One known bed (at time of writing) is a little high so AI will animate into it so be sunk a little low. This bed can be sunk a little into the floor to compensate. If they are floating slightly high then the bed can be lifted a little and perhaps some wood brushes under the legs make it right.&lt;br /&gt;
&lt;br /&gt;
If the AI are floating &#039;&#039;&#039;very&#039;&#039;&#039; high then this is most likely caused by the AI clipping into the bed at the start so they are lifted up to stand on its edge before they animate. They then animate up even higher. Solution: move them further out at the start. Note: this problem probably only affects AI that start off sleeping rather than patrol to a bed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AI lays down too far to one side of the bed===&lt;br /&gt;
&lt;br /&gt;
To move an AI across the bed see [[#Sleeping position in the bed]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AI lays wrong way head to foot===&lt;br /&gt;
&lt;br /&gt;
If the AI is laying the wrong way with his head at the foot of the bed and his feet at the head then see [[#Direction]]&lt;br /&gt;
&lt;br /&gt;
==Known bugs==&lt;br /&gt;
&lt;br /&gt;
AI have their eyes closed now while sleeping. This is using the pain anim as a place holder at the moment, since we don&#039;t have a suitable anim yet (sleeping looks like a quite painful experience now...)&lt;br /&gt;
&lt;br /&gt;
Another problem is that the bounding box stays behind and is solid when the AI goes to bed.&lt;br /&gt;
&lt;br /&gt;
When you KO a sleeping AI, they may drop down through the bed, pop back to standing, like they did in Thief, &lt;br /&gt;
&lt;br /&gt;
Also this is probably unrelated but might be contributing to this problem: I&#039;m noticing that KO&#039;d AI are sometimes(?) flashing into the AF pose for just a frame, then back to the pose they were in before KO&#039;ing. You can see it if you watch really closely.&lt;br /&gt;
&lt;br /&gt;
There is also a problem when they see the player while laying down - they jump up for a moment, then finsih putting themselves to bed and then finally get up to chase the player.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-ai}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11897</id>
		<title>Sleeping AI</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11897"/>
		<updated>2010-12-30T18:38:49Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* AI lays down too far to one side of the bed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Sleeping AI are (mostly) working now. They can either put themselves to bed at map start and remain there (unless alerted) or else patrol there, sleep for a while, then patrol again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Non-patrolling sleepers==&lt;br /&gt;
&lt;br /&gt;
These are defined as sleepers at the start and immediately lay down. They only will get up if alerted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set on the AI the spawn arg:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;sleeping 1&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Patrol sleepers==&lt;br /&gt;
&lt;br /&gt;
This is done by targetting a path_sleep entity which then targets a path_wait to define how long they will sleep before getting up again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting up==&lt;br /&gt;
&lt;br /&gt;
By default, place the AI on the right side of the bed (as you look towards the head of the bed) and &#039;&#039;&#039;facing away&#039;&#039;&#039; from the bed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Direction===&lt;br /&gt;
&lt;br /&gt;
If you want the AI to start from the left side of the bed (as you look towards the head of the bed)  then add:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_left 0&#039;&#039;   (note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
==Sleeping position in the bed==&lt;br /&gt;
&lt;br /&gt;
Stand the AI close to the bed about half way between the head and the foot; adjust as needed.&lt;br /&gt;
&lt;br /&gt;
The distance the AI slides across onto the bed can be controlled by&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_slide_dist 16&#039;&#039; (default)&lt;br /&gt;
&lt;br /&gt;
(note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
==Problems, Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
There are a few known problems:&lt;br /&gt;
&lt;br /&gt;
===AI is sinking into the bed or floating high===&lt;br /&gt;
&lt;br /&gt;
AI animate to the same height so if they are slightly high the first thing to check is the bed surface height. Most Dark Mod beds are a standard height which is correct for sleepers. One known bed (at time of writing) is a little high so AI will animate into it so be sunk a little low. This bed can be sunk a little into the floor to compensate. If they are floating slightly high then the bed can be lifted a little and perhaps some wood brushes under the legs make it right.&lt;br /&gt;
&lt;br /&gt;
If the AI are floating &#039;&#039;&#039;very&#039;&#039;&#039; high then this is most likely caused by the AI clipping into the bed at the start so they are lifted up to stand on its edge before they animate. They then animate up even higher. Solution: move them further out at the start. Note: this problem probably only affects AI that start off sleeping rather than patrol to a bed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AI lays down too far to one side of the bed===&lt;br /&gt;
&lt;br /&gt;
To move an AI across the bed see [[#Sleeping position in the bed]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AI lays wrong way head to foot===&lt;br /&gt;
&lt;br /&gt;
If the AI is laying the wrong way with his head at the foot of the bed and his feet at the head then see [[#Direction]]&lt;br /&gt;
&lt;br /&gt;
==Known bugs==&lt;br /&gt;
&lt;br /&gt;
AI have their eyes closed now while sleeping. This is using the pain anim as a place holder at the moment, since we don&#039;t have a suitable anim yet (sleeping looks like a quite painful experience now...)&lt;br /&gt;
&lt;br /&gt;
Another problem is that the bounding box stays behind and is solid when the AI goes to bed.&lt;br /&gt;
&lt;br /&gt;
When you KO a sleeping AI, they may drop down through the bed, pop back to standing, like they did in Thief, &lt;br /&gt;
&lt;br /&gt;
Also this is probably unrelated but might be contributing to this problem: I&#039;m noticing that KO&#039;d AI are sometimes(?) flashing into the AF pose for just a frame, then back to the pose they were in before KO&#039;ing. You can see it if you watch really closely.&lt;br /&gt;
&lt;br /&gt;
There is also a problem when they see the player while laying down - they jump up for a moment, then finsih putting themselves to bed and then finally get up to chase the player.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-ai}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11896</id>
		<title>Sleeping AI</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11896"/>
		<updated>2010-12-30T18:37:21Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Setting up */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Sleeping AI are (mostly) working now. They can either put themselves to bed at map start and remain there (unless alerted) or else patrol there, sleep for a while, then patrol again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Non-patrolling sleepers==&lt;br /&gt;
&lt;br /&gt;
These are defined as sleepers at the start and immediately lay down. They only will get up if alerted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set on the AI the spawn arg:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;sleeping 1&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Patrol sleepers==&lt;br /&gt;
&lt;br /&gt;
This is done by targetting a path_sleep entity which then targets a path_wait to define how long they will sleep before getting up again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting up==&lt;br /&gt;
&lt;br /&gt;
By default, place the AI on the right side of the bed (as you look towards the head of the bed) and &#039;&#039;&#039;facing away&#039;&#039;&#039; from the bed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Direction===&lt;br /&gt;
&lt;br /&gt;
If you want the AI to start from the left side of the bed (as you look towards the head of the bed)  then add:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_left 0&#039;&#039;   (note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
==Sleeping position in the bed==&lt;br /&gt;
&lt;br /&gt;
Stand the AI close to the bed about half way between the head and the foot; adjust as needed.&lt;br /&gt;
&lt;br /&gt;
The distance the AI slides across onto the bed can be controlled by&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_slide_dist 16&#039;&#039; (default)&lt;br /&gt;
&lt;br /&gt;
(note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
==Problems, Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
There are a few known problems:&lt;br /&gt;
&lt;br /&gt;
===AI is sinking into the bed or floating high===&lt;br /&gt;
&lt;br /&gt;
AI animate to the same height so if they are slightly high the first thing to check is the bed surface height. Most Dark Mod beds are a standard height which is correct for sleepers. One known bed (at time of writing) is a little high so AI will animate into it so be sunk a little low. This bed can be sunk a little into the floor to compensate. If they are floating slightly high then the bed can be lifted a little and perhaps some wood brushes under the legs make it right.&lt;br /&gt;
&lt;br /&gt;
If the AI are floating &#039;&#039;&#039;very&#039;&#039;&#039; high then this is most likely caused by the AI clipping into the bed at the start so they are lifted up to stand on its edge before they animate. They then animate up even higher. Solution: move them further out at the start. Note: this problem probably only affects AI that start off sleeping rather than patrol to a bed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AI lays down too far to one side of the bed===&lt;br /&gt;
&lt;br /&gt;
To move an AI across the bed see [[#Sleeping position in the bed]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known bugs==&lt;br /&gt;
&lt;br /&gt;
AI have their eyes closed now while sleeping. This is using the pain anim as a place holder at the moment, since we don&#039;t have a suitable anim yet (sleeping looks like a quite painful experience now...)&lt;br /&gt;
&lt;br /&gt;
Another problem is that the bounding box stays behind and is solid when the AI goes to bed.&lt;br /&gt;
&lt;br /&gt;
When you KO a sleeping AI, they may drop down through the bed, pop back to standing, like they did in Thief, &lt;br /&gt;
&lt;br /&gt;
Also this is probably unrelated but might be contributing to this problem: I&#039;m noticing that KO&#039;d AI are sometimes(?) flashing into the AF pose for just a frame, then back to the pose they were in before KO&#039;ing. You can see it if you watch really closely.&lt;br /&gt;
&lt;br /&gt;
There is also a problem when they see the player while laying down - they jump up for a moment, then finsih putting themselves to bed and then finally get up to chase the player.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-ai}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11895</id>
		<title>Sleeping AI</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11895"/>
		<updated>2010-12-30T18:33:07Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Sleeping position in the bed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Sleeping AI are (mostly) working now. They can either put themselves to bed at map start and remain there (unless alerted) or else patrol there, sleep for a while, then patrol again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Non-patrolling sleepers==&lt;br /&gt;
&lt;br /&gt;
These are defined as sleepers at the start and immediately lay down. They only will get up if alerted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set on the AI the spawn arg:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;sleeping 1&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Patrol sleepers==&lt;br /&gt;
&lt;br /&gt;
This is done by targetting a path_sleep entity which then targets a path_wait to define how long they will sleep before getting up again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting up==&lt;br /&gt;
&lt;br /&gt;
By default, place the AI on the right side of the bed (as you look towards the head of the bed) and &#039;&#039;&#039;facing away&#039;&#039;&#039; from the bed. If you want the AI to start from the other side then add:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_left 0&#039;&#039;   (note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
==Sleeping position in the bed==&lt;br /&gt;
&lt;br /&gt;
Stand the AI close to the bed about half way between the head and the foot; adjust as needed.&lt;br /&gt;
&lt;br /&gt;
The distance the AI slides across onto the bed can be controlled by&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_slide_dist 16&#039;&#039; (default)&lt;br /&gt;
&lt;br /&gt;
(note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
==Problems, Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
There are a few known problems:&lt;br /&gt;
&lt;br /&gt;
===AI is sinking into the bed or floating high===&lt;br /&gt;
&lt;br /&gt;
AI animate to the same height so if they are slightly high the first thing to check is the bed surface height. Most Dark Mod beds are a standard height which is correct for sleepers. One known bed (at time of writing) is a little high so AI will animate into it so be sunk a little low. This bed can be sunk a little into the floor to compensate. If they are floating slightly high then the bed can be lifted a little and perhaps some wood brushes under the legs make it right.&lt;br /&gt;
&lt;br /&gt;
If the AI are floating &#039;&#039;&#039;very&#039;&#039;&#039; high then this is most likely caused by the AI clipping into the bed at the start so they are lifted up to stand on its edge before they animate. They then animate up even higher. Solution: move them further out at the start. Note: this problem probably only affects AI that start off sleeping rather than patrol to a bed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AI lays down too far to one side of the bed===&lt;br /&gt;
&lt;br /&gt;
To move an AI across the bed see [[#Sleeping position in the bed]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known bugs==&lt;br /&gt;
&lt;br /&gt;
AI have their eyes closed now while sleeping. This is using the pain anim as a place holder at the moment, since we don&#039;t have a suitable anim yet (sleeping looks like a quite painful experience now...)&lt;br /&gt;
&lt;br /&gt;
Another problem is that the bounding box stays behind and is solid when the AI goes to bed.&lt;br /&gt;
&lt;br /&gt;
When you KO a sleeping AI, they may drop down through the bed, pop back to standing, like they did in Thief, &lt;br /&gt;
&lt;br /&gt;
Also this is probably unrelated but might be contributing to this problem: I&#039;m noticing that KO&#039;d AI are sometimes(?) flashing into the AF pose for just a frame, then back to the pose they were in before KO&#039;ing. You can see it if you watch really closely.&lt;br /&gt;
&lt;br /&gt;
There is also a problem when they see the player while laying down - they jump up for a moment, then finsih putting themselves to bed and then finally get up to chase the player.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-ai}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11894</id>
		<title>Sleeping AI</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11894"/>
		<updated>2010-12-30T18:32:50Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Sleeping position in the bed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Sleeping AI are (mostly) working now. They can either put themselves to bed at map start and remain there (unless alerted) or else patrol there, sleep for a while, then patrol again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Non-patrolling sleepers==&lt;br /&gt;
&lt;br /&gt;
These are defined as sleepers at the start and immediately lay down. They only will get up if alerted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set on the AI the spawn arg:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;sleeping 1&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Patrol sleepers==&lt;br /&gt;
&lt;br /&gt;
This is done by targetting a path_sleep entity which then targets a path_wait to define how long they will sleep before getting up again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting up==&lt;br /&gt;
&lt;br /&gt;
By default, place the AI on the right side of the bed (as you look towards the head of the bed) and &#039;&#039;&#039;facing away&#039;&#039;&#039; from the bed. If you want the AI to start from the other side then add:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_left 0&#039;&#039;   (note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
==Sleeping position in the bed==&lt;br /&gt;
&lt;br /&gt;
Stand the AI close to the bed about half way between the head and the foot; adjust as needed.&lt;br /&gt;
&lt;br /&gt;
The distance the AI slides across onto the bed can be controlled by&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_slide_dist 16&#039;&#039; (default)&lt;br /&gt;
&lt;br /&gt;
 (note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
==Problems, Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
There are a few known problems:&lt;br /&gt;
&lt;br /&gt;
===AI is sinking into the bed or floating high===&lt;br /&gt;
&lt;br /&gt;
AI animate to the same height so if they are slightly high the first thing to check is the bed surface height. Most Dark Mod beds are a standard height which is correct for sleepers. One known bed (at time of writing) is a little high so AI will animate into it so be sunk a little low. This bed can be sunk a little into the floor to compensate. If they are floating slightly high then the bed can be lifted a little and perhaps some wood brushes under the legs make it right.&lt;br /&gt;
&lt;br /&gt;
If the AI are floating &#039;&#039;&#039;very&#039;&#039;&#039; high then this is most likely caused by the AI clipping into the bed at the start so they are lifted up to stand on its edge before they animate. They then animate up even higher. Solution: move them further out at the start. Note: this problem probably only affects AI that start off sleeping rather than patrol to a bed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AI lays down too far to one side of the bed===&lt;br /&gt;
&lt;br /&gt;
To move an AI across the bed see [[#Sleeping position in the bed]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known bugs==&lt;br /&gt;
&lt;br /&gt;
AI have their eyes closed now while sleeping. This is using the pain anim as a place holder at the moment, since we don&#039;t have a suitable anim yet (sleeping looks like a quite painful experience now...)&lt;br /&gt;
&lt;br /&gt;
Another problem is that the bounding box stays behind and is solid when the AI goes to bed.&lt;br /&gt;
&lt;br /&gt;
When you KO a sleeping AI, they may drop down through the bed, pop back to standing, like they did in Thief, &lt;br /&gt;
&lt;br /&gt;
Also this is probably unrelated but might be contributing to this problem: I&#039;m noticing that KO&#039;d AI are sometimes(?) flashing into the AF pose for just a frame, then back to the pose they were in before KO&#039;ing. You can see it if you watch really closely.&lt;br /&gt;
&lt;br /&gt;
There is also a problem when they see the player while laying down - they jump up for a moment, then finsih putting themselves to bed and then finally get up to chase the player.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-ai}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11893</id>
		<title>Sleeping AI</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11893"/>
		<updated>2010-12-30T18:31:20Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Known bugs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Sleeping AI are (mostly) working now. They can either put themselves to bed at map start and remain there (unless alerted) or else patrol there, sleep for a while, then patrol again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Non-patrolling sleepers==&lt;br /&gt;
&lt;br /&gt;
These are defined as sleepers at the start and immediately lay down. They only will get up if alerted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set on the AI the spawn arg:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;sleeping 1&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Patrol sleepers==&lt;br /&gt;
&lt;br /&gt;
This is done by targetting a path_sleep entity which then targets a path_wait to define how long they will sleep before getting up again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting up==&lt;br /&gt;
&lt;br /&gt;
By default, place the AI on the right side of the bed (as you look towards the head of the bed) and &#039;&#039;&#039;facing away&#039;&#039;&#039; from the bed. If you want the AI to start from the other side then add:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_left 0&#039;&#039;   (note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
==Sleeping position in the bed==&lt;br /&gt;
&lt;br /&gt;
Stand the AI close to the bed about half way between the head and the foot; adjust as needed.&lt;br /&gt;
&lt;br /&gt;
The distance the AI slides across onto the bed can be controlled by&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_slide_dist 16&#039;&#039; (default)&lt;br /&gt;
&lt;br /&gt;
==Problems, Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
There are a few known problems:&lt;br /&gt;
&lt;br /&gt;
===AI is sinking into the bed or floating high===&lt;br /&gt;
&lt;br /&gt;
AI animate to the same height so if they are slightly high the first thing to check is the bed surface height. Most Dark Mod beds are a standard height which is correct for sleepers. One known bed (at time of writing) is a little high so AI will animate into it so be sunk a little low. This bed can be sunk a little into the floor to compensate. If they are floating slightly high then the bed can be lifted a little and perhaps some wood brushes under the legs make it right.&lt;br /&gt;
&lt;br /&gt;
If the AI are floating &#039;&#039;&#039;very&#039;&#039;&#039; high then this is most likely caused by the AI clipping into the bed at the start so they are lifted up to stand on its edge before they animate. They then animate up even higher. Solution: move them further out at the start. Note: this problem probably only affects AI that start off sleeping rather than patrol to a bed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AI lays down too far to one side of the bed===&lt;br /&gt;
&lt;br /&gt;
To move an AI across the bed see [[#Sleeping position in the bed]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known bugs==&lt;br /&gt;
&lt;br /&gt;
AI have their eyes closed now while sleeping. This is using the pain anim as a place holder at the moment, since we don&#039;t have a suitable anim yet (sleeping looks like a quite painful experience now...)&lt;br /&gt;
&lt;br /&gt;
Another problem is that the bounding box stays behind and is solid when the AI goes to bed.&lt;br /&gt;
&lt;br /&gt;
When you KO a sleeping AI, they may drop down through the bed, pop back to standing, like they did in Thief, &lt;br /&gt;
&lt;br /&gt;
Also this is probably unrelated but might be contributing to this problem: I&#039;m noticing that KO&#039;d AI are sometimes(?) flashing into the AF pose for just a frame, then back to the pose they were in before KO&#039;ing. You can see it if you watch really closely.&lt;br /&gt;
&lt;br /&gt;
There is also a problem when they see the player while laying down - they jump up for a moment, then finsih putting themselves to bed and then finally get up to chase the player.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-ai}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11892</id>
		<title>Sleeping AI</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Sleeping_AI&amp;diff=11892"/>
		<updated>2010-12-30T18:27:46Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Sleeping AI are (mostly) working now. They can either put themselves to bed at map start and remain there (unless alerted) or else patrol there, sleep for a while, then patrol again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Non-patrolling sleepers==&lt;br /&gt;
&lt;br /&gt;
These are defined as sleepers at the start and immediately lay down. They only will get up if alerted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set on the AI the spawn arg:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;sleeping 1&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Patrol sleepers==&lt;br /&gt;
&lt;br /&gt;
This is done by targetting a path_sleep entity which then targets a path_wait to define how long they will sleep before getting up again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting up==&lt;br /&gt;
&lt;br /&gt;
By default, place the AI on the right side of the bed (as you look towards the head of the bed) and &#039;&#039;&#039;facing away&#039;&#039;&#039; from the bed. If you want the AI to start from the other side then add:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_left 0&#039;&#039;   (note this goes on the AI if the AI is using sleeping 1 BUT on the path_sleep if you are using a path_sleep)&lt;br /&gt;
&lt;br /&gt;
==Sleeping position in the bed==&lt;br /&gt;
&lt;br /&gt;
Stand the AI close to the bed about half way between the head and the foot; adjust as needed.&lt;br /&gt;
&lt;br /&gt;
The distance the AI slides across onto the bed can be controlled by&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;lay_down_slide_dist 16&#039;&#039; (default)&lt;br /&gt;
&lt;br /&gt;
==Problems, Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
There are a few known problems:&lt;br /&gt;
&lt;br /&gt;
===AI is sinking into the bed or floating high===&lt;br /&gt;
&lt;br /&gt;
AI animate to the same height so if they are slightly high the first thing to check is the bed surface height. Most Dark Mod beds are a standard height which is correct for sleepers. One known bed (at time of writing) is a little high so AI will animate into it so be sunk a little low. This bed can be sunk a little into the floor to compensate. If they are floating slightly high then the bed can be lifted a little and perhaps some wood brushes under the legs make it right.&lt;br /&gt;
&lt;br /&gt;
If the AI are floating &#039;&#039;&#039;very&#039;&#039;&#039; high then this is most likely caused by the AI clipping into the bed at the start so they are lifted up to stand on its edge before they animate. They then animate up even higher. Solution: move them further out at the start. Note: this problem probably only affects AI that start off sleeping rather than patrol to a bed.&lt;br /&gt;
&lt;br /&gt;
==Known bugs==&lt;br /&gt;
&lt;br /&gt;
AI have their eyes closed now while sleeping. This is using the pain anim as a place holder at the moment, since we don&#039;t have a suitable anim yet (sleeping looks like a quite painful experience now...)&lt;br /&gt;
&lt;br /&gt;
Another problem is that the bounding box stays behind and is solid when the AI goes to bed.&lt;br /&gt;
&lt;br /&gt;
When you KO a sleeping AI, they may drop down through the bed, pop back to standing, like they did in Thief, &lt;br /&gt;
&lt;br /&gt;
Also this is probably unrelated but might be contributing to this problem: I&#039;m noticing that KO&#039;d AI are sometimes(?) flashing into the AF pose for just a frame, then back to the pose they were in before KO&#039;ing. You can see it if you watch really closely.&lt;br /&gt;
&lt;br /&gt;
There is also a problem when they see the player while laying down - they jump up for a moment, then finsih putting themselves to bed and then finally get up to chase the player.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-ai}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=FAQ&amp;diff=11826</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=FAQ&amp;diff=11826"/>
		<updated>2010-12-26T06:48:19Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* The briefing is very fuzzy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{important|headline=Important|text=This FAQ relates to the full TDM release version only. For players of the pre-release demos such as &#039;&#039;&#039;[[Thief&#039;s Den]]&#039;&#039;&#039; and &#039;&#039;&#039;[[Saint_Lucia|Tears of Saint Lucia]]&#039;&#039;&#039; please refer to the &#039;&#039;&#039;[[FAQ (Demo Releases)|Demo FAQ]]&#039;&#039;&#039;.&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
== What Doom versions are supported? ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Demo version of Doom 3? ===&lt;br /&gt;
&lt;br /&gt;
No, sorry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Can I use it with the Doom 3 expansion Resurrection of Evil? ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
No, sorry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Does it run with the Steam version of Doom 3? ===&lt;br /&gt;
&lt;br /&gt;
Yes :) You need to install the mod into the directory where Steam put Doom3, this might be under:&lt;br /&gt;
&lt;br /&gt;
 C:\Program Files\Steam\steamapps\common\doom 3&lt;br /&gt;
&lt;br /&gt;
or a similiar folder.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; Create a shortcut on your desktop and set it to the following:&lt;br /&gt;
&lt;br /&gt;
 steam.exe -applaunch 9050 +set fs_game_base darkmod&lt;br /&gt;
&lt;br /&gt;
This ensures that when you start Steam, it will launch TDM and not Doom 3 without TDM.&lt;br /&gt;
&lt;br /&gt;
== Patching Doom 3 to verson 1.3.1.1304 ==&lt;br /&gt;
&lt;br /&gt;
=== How can I check whether my Doom 3 is correctly patched? ===&lt;br /&gt;
&lt;br /&gt;
Open Doom 3 and hit {{key|Ctrl}}+{{key|Alt}}+{{key|~}} (tilde, {{key|^}} on German keyboards) to open the console. You&#039;ll see the version printed in the lower left corner of the console. It should read &#039;&#039;&#039;1.3.1.1304&#039;&#039;&#039;. If your version is ending on 1302, you&#039;ve got the wrong patch installed.&lt;br /&gt;
&lt;br /&gt;
=== Where can I get the right patch? ===&lt;br /&gt;
&lt;br /&gt;
We have the patch hosted on our FTP. See the [[Installation]] article to find a link to it.&lt;br /&gt;
&lt;br /&gt;
If you have version 1.3.1.1302, you may need to uninstall and reinstall before patch 1.3.1.1304 will let you apply it.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s that issue with the 1.3.1 patch? ===&lt;br /&gt;
&lt;br /&gt;
When the 1.3.1 patch was released by Id, they released it a bit too early. Some download sites picked it up quite fast though and started to distribute it. The problem is, that Id replaced that patch with a different one, and, probably thinking that it hadn&#039;t spread yet, didn&#039;t bother to change the version number. However, you can still find &amp;quot;wrong&amp;quot; 1.3.1 patches and these will not work with the mod. That&#039;s why it is important to check the version number in the console to make sure that the right 1.3.1 patch is installed if the mod doesn&#039;t work. The link provided here on our own page points to the correct patch, so if you downloaded it from here you don&#039;t need to worry about it.&lt;br /&gt;
&lt;br /&gt;
== Supported Operating Systems ==&lt;br /&gt;
&lt;br /&gt;
=== Which Windows versions can I use? ===&lt;br /&gt;
&lt;br /&gt;
The following versions of windows have been tested and are known to work : Windows 2000, Windows XP, Windows Vista, Windows 7, Windows Server 2008, Windows Server 2003 in both 32bit and 64bit flavours.&lt;br /&gt;
&lt;br /&gt;
=== Does it run in Linux? ===&lt;br /&gt;
Yes, Linux is supported.&lt;br /&gt;
&lt;br /&gt;
=== Does it run in 64 Bit Linux? ===&lt;br /&gt;
Yes, Linux 64 bit is supported. In addition to the steps above, you need 32 bit compatibility libraries, since Doom3 is 32 bit only:&lt;br /&gt;
* On &#039;&#039;&#039;SuSE&#039;&#039;&#039;, they should be included.&lt;br /&gt;
* On Ubuntu/Kubuntu, install the package &#039;&#039;&#039;ia32&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For TDM after 1.0, this step should be &#039;&#039;&#039;no&#039;&#039;&#039; longer neccessary:&lt;br /&gt;
&lt;br /&gt;
* Since you cannot install 32 bit libraries on a 64 bit system with the normal package manager, you should use [http://ubuntuforums.org/showthread.php?t=474790 getlibs] to install &#039;&#039;&#039;libmng&#039;&#039;&#039; and the boost filesystem lib:&lt;br /&gt;
:&amp;lt;code&amp;gt;getlibs libmng.so.1&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;getlibs -l libboost-filesystem1.34.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== What about Gentoo? ===&lt;br /&gt;
Yes. It&#039;s not &amp;quot;officially&amp;quot; supported (the team doesn&#039;t test it specifically), however several users have reported success running TDM under Gentoo.&lt;br /&gt;
&lt;br /&gt;
=== What about Ubuntu 8.10? ===&lt;br /&gt;
Yes. As of this writing you will need to install the &#039;&#039;&#039;libboost-filesystem&#039;&#039;&#039; package.&lt;br /&gt;
&lt;br /&gt;
=== GLIBCXX_3.4.9 errors ===&lt;br /&gt;
&lt;br /&gt;
If you receive an error about &amp;lt;tt&amp;gt;GLIBCXX_3.4.9&amp;lt;/tt&amp;gt;, delete or rename the files &amp;lt;code&amp;gt;/usr/local/games/doom3/libstdc++.so.6&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/usr/local/games/doom3/libgcc_s.so.1.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this doesn&#039;t resolve the error and you have an old version of GCC, then you may have to upgrade. It has been [http://modetwo.net/darkmod/index.php?/topic/9982-the-dark-mod-doom3-in-linux/ confirmed] that, at least under Gentoo, GCC 4.1 does not work with TDM but GCC 4.3 and GCC 4.4 are compatible.&lt;br /&gt;
&lt;br /&gt;
=== Does it run on Mac OS X?===&lt;br /&gt;
No. Or at least not yet. The Doom 3 game itself does support Mac OS X, but The Dark Mod currently does not because we don&#039;t have any developers who use Macs. If you can help us getting it to run on OS X, please [http://modetwo.net/darkmod/index.php?showforum=11 let us know on the forum].&lt;br /&gt;
&lt;br /&gt;
Since TDM works on Linux already, getting it working on OS X should not be too difficult for anyone with experience programming for that platform. In theory it&#039;s just a question of figuring out how to build the mod, sorting out dependencies, and writing a few pieces of platform-specific code.&lt;br /&gt;
&lt;br /&gt;
== Graphics ==&lt;br /&gt;
&lt;br /&gt;
=== Does TDM support widescreen resolutions? ===&lt;br /&gt;
&lt;br /&gt;
Yes. Choose &amp;quot;16:9&amp;quot; or &amp;quot;16:10&amp;quot; in the in-game &#039;&#039;Settings&#039;&#039; menu, and select the appropriate resolution. Note that you need to restart the game to have the new setting in effect.&lt;br /&gt;
&lt;br /&gt;
If the native resolution of your wide screen monitor is not listed, you can enter it into &#039;&#039;&#039;DoomConfig.cfg&#039;&#039;&#039; by changing the following entries like so:&lt;br /&gt;
&lt;br /&gt;
 set r_mode -1&lt;br /&gt;
 set r_customwidth 1280&lt;br /&gt;
 set r_customheight 800&lt;br /&gt;
&lt;br /&gt;
Note that if you get performance problems, please consider using a lower resolution and taking a look at [[Performance Tweaks]].&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
It is hard to answer question on why something fails, because wildly different systems cause wildy different symptoms. If the following section does not help you, please ask at out our [http://www.modetwo.net/darkmod forums].&lt;br /&gt;
&lt;br /&gt;
=== Updater (tdm_update.exe) closes almost as soon as it&#039;s started ===&lt;br /&gt;
&lt;br /&gt;
See the [[Tdm_update#Updater_closes_almost_as_soon_as_it.27s_started|main article on tdm_update]].&lt;br /&gt;
&lt;br /&gt;
=== Windows 2000: freeaddrinfo cannot be found in WS2_32.DLL ===&lt;br /&gt;
Please refer to the main article [[TDM in Windows 2000]] to work around this problem.&lt;br /&gt;
&lt;br /&gt;
===FM won&#039;t install manually===&lt;br /&gt;
&lt;br /&gt;
If you are running Dark Mod under Linux and have edited the file darkmod/currentfm.txt this might prevent the FM from installing. This may be fixed in an update but apparently editing using notepad under Wine works OK.&lt;br /&gt;
&lt;br /&gt;
=== FMs downloaded but don&#039;t show in menu list===&lt;br /&gt;
&lt;br /&gt;
You have download some FMs but they don&#039;t show on Dark Mod&#039;s New Missions list. Possible causes:&lt;br /&gt;
&lt;br /&gt;
* You must not extract the pk4s or zip files but put them into the darkmod/fms folder (or alternatively you can create the FM folder in there eg, darkmod/fms/chalice for chalice.pk4 or chalice.zip.&lt;br /&gt;
* Early versions of Dark Mod cannot handle zip suffixes. Solution: rename to .pk4 or run tdm_update to get the latest version of Dark Mod.&lt;br /&gt;
* If you are running Linux then Doom 3 MUST be installed in a .doom3 folder. Note the dot before .doom3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FM downloaded but won&#039;t play ===&lt;br /&gt;
&lt;br /&gt;
If you have downloaded an FM you might see it in the New Missions List but can&#039;t get it to play. These are almost always an install problem. These are some of the causes and cures:&lt;br /&gt;
&lt;br /&gt;
FMs (fan missions) are archives and in early versions of Dark Mod MUST be suffixed .pk4 not zip. Apparently Internet Explorer 8 may change it from pk4 to zip during download without telling you. You need to rename it back if running an early version of Dark Mod else run tdm_update to update and then zip files are OK.&lt;br /&gt;
&lt;br /&gt;
You MUST use doom3\darkmod\tdmlauncher.exe to run Dark Mod in Windows and NOT Doom3.exe.&lt;br /&gt;
&lt;br /&gt;
You do NOT need to extract the pk4 archives to install or play. Just download into or move the pk4 into the darkmod\fms folder. Optionally you can create a folder of the same name as the map and put it in there, eg, darkmod\fms\chalice but there is no need because Dark Mod will create that automatically. Just make sure your pk4 goes, unopened, into the fms folder then run tdmlauncher.exe&lt;br /&gt;
&lt;br /&gt;
If you have done the above but see for example, a blank objectives screen and no briefing then it is still almost certainly an install error. I recommend you do a clean sweep if in doubt:&lt;br /&gt;
* Exit Dark Mod&lt;br /&gt;
* Delete doom3\darkmod\currentfm.txt (this just uninstalls any FM)&lt;br /&gt;
* Delete the map game folder (if any) This is NOT the folder in fms but the folder in doom3 of the same name as the FM, eg, doom3\chalice. Note: this has savegames and screenshots in so check and move them out if you want to preserve them. However, if you can&#039;t get the game to play it&#039;s likely you don&#039;t have any yet. If you can&#039;t see the folder don&#039;t worry. The folder name is normally the same as the pk4 but it might not be. Strictly speaking it must be the same as the name in startingmap.txt inside the pk4 archive. You might see this file in fms.&lt;br /&gt;
* Move the pk4 into the darkmod\fms folder if it is not already there.&lt;br /&gt;
* Delete the darkmod\fms\FMname folder if any, eg, darkmod\fms\chalice. Don&#039;t worry if there isn&#039;t one; it will be created automatically later.&lt;br /&gt;
&lt;br /&gt;
So all that is left is the pk4 in the fms folder. Now run tdmlauncher.exe. The FM should be in the list in the New Missions menu. Re-install it and you should now be able to play it.&lt;br /&gt;
&lt;br /&gt;
=== The game crashes on load ===&lt;br /&gt;
Make sure that:&lt;br /&gt;
* You installed [[#Patching_Doom_3_to_verson_1.3.1.1304|the correct version]] of the Doom 3 1.3.1 patch.&lt;br /&gt;
* Your system meets at least the minimum system specs.&lt;br /&gt;
* You have enough free main memory. Try closing a few running programs like Outlook, Anti-Virus or torrent clients.&lt;br /&gt;
&lt;br /&gt;
==== Unknown event &#039;moveToCoverFrom&#039;&amp;quot; ====&lt;br /&gt;
If you get a message like:&lt;br /&gt;
&lt;br /&gt;
 ERROR: Error: file script\doom_events.script, line 1038: Unknown event &#039;moveToCoverFrom&#039;&lt;br /&gt;
&lt;br /&gt;
or see this in the log:&lt;br /&gt;
&lt;br /&gt;
 found DLL in pak file: C:\Program Files\Doom 3\darkmod\tdm_game01.pk4/gamex86.dll&lt;br /&gt;
 copy gamex86.dll to C:\Program Files\Doom 3\darkmod\gamex86.dll&lt;br /&gt;
 could not create destination file&lt;br /&gt;
&lt;br /&gt;
Try extracting that gamex86.dll manually from &#039;&#039;&#039;tdm_game01.pk4&#039;&#039;&#039; with Winzip or a similiar program into that folder.&lt;br /&gt;
&lt;br /&gt;
The reason is very probably that you installed Doom3 into a folder with a space in it, and it seems Doom3 does not like that. Sorry.&lt;br /&gt;
&lt;br /&gt;
=== Unknown event &#039;setEntityRelation&#039; ===&lt;br /&gt;
The game is crashing to a small blue screen on startup:&lt;br /&gt;
&lt;br /&gt;
[[Image:ErrorSetEntityRelation.jpg]]&lt;br /&gt;
&lt;br /&gt;
The reason for this error is most likely an old version of gamex86.dll (or gamex86.so) lying around in your Doom 3 folder. Delete that file and try again.&lt;br /&gt;
&lt;br /&gt;
=== Textures are missing, screen mostly black ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Tdm missing textures.jpg|right|240px|Black textures]]&lt;br /&gt;
&lt;br /&gt;
Look into your &#039;&#039;&#039;DoomConfig.cfg&#039;&#039;&#039; inside your &amp;lt;tt&amp;gt;darkmod&amp;lt;/tt&amp;gt; folder and check that the following settings are like shown below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;max-width:35em&amp;quot;&amp;gt;&lt;br /&gt;
 seta image_usePrecompressedTextures &amp;quot;1&amp;quot;&lt;br /&gt;
 seta image_useNormalCompression &amp;quot;2&amp;quot;&lt;br /&gt;
 seta image_useAllFormats &amp;quot;1&amp;quot;&lt;br /&gt;
 seta image_useCompression &amp;quot;0&amp;quot;&lt;br /&gt;
 seta image_preload &amp;quot;1&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Textures are missing, shadows are pitch black ===&lt;br /&gt;
&lt;br /&gt;
Try disabling the AGP surface accelerator in DXDIAG&lt;br /&gt;
&lt;br /&gt;
=== Graphic Corruption ===&lt;br /&gt;
&lt;br /&gt;
One report we had was for a Radeon ATI HD 4650, catalyst 10.9. This screen corruption as I understand it was heavy pixelation even on the menus. Closing down Xfire fixed it so clearly to do with that. &amp;quot;I fiddled with the xfire Doom 3 configuration through the xfire_games.ini, and determined it has to do with InGameFlags portion.. For some reason the settings in that were interfering with doom 3, and after I removed some things from there, I was still able to run xfire, and doom 3 was still able to look proper&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The briefing is very fuzzy ===&lt;br /&gt;
&lt;br /&gt;
Look into your &#039;&#039;&#039;DoomConfig.cfg&#039;&#039;&#039; inside your &amp;lt;tt&amp;gt;darkmod&amp;lt;/tt&amp;gt;  folder and check that the following settings are like shown below:&lt;br /&gt;
&lt;br /&gt;
 seta image_roundDown &amp;quot;1&amp;quot;&lt;br /&gt;
 seta image_forceDownSize &amp;quot;0&amp;quot;&lt;br /&gt;
 seta image_downSize &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== The sky is corrupted ===&lt;br /&gt;
&lt;br /&gt;
You either see black sky, or fragments of other textures. This seems only to happen on Geforce 6800 cards.&lt;br /&gt;
&lt;br /&gt;
There are two fixes for this:&lt;br /&gt;
&lt;br /&gt;
As a quick fix you can rename the following folder:&lt;br /&gt;
&lt;br /&gt;
 env/skyboxes/skybox_darkland_ne&lt;br /&gt;
&lt;br /&gt;
to an different name. That will result in black sky.&lt;br /&gt;
&lt;br /&gt;
Alternatively, edit the file &amp;lt;tt&amp;gt;materials/tdm_sky.mtr&amp;lt;/tt&amp;gt; with &#039;&#039;&#039;Wordpad&#039;&#039;&#039; or a different editor and&lt;br /&gt;
find the sky material named &#039;&#039;&#039;textures/darkmod/nature/skybox/skybox_darkland_NE&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 //Author: Dram&lt;br /&gt;
 //skybox_ocean with ocean replaced with dark land&lt;br /&gt;
 //Moon moved to north east by Fidcal&lt;br /&gt;
 textures/darkmod/nature/skybox/skybox_darkland_NE&lt;br /&gt;
    {&lt;br /&gt;
    qer_editorimage env/skyboxes/skybox_ocean/ocean_ed&lt;br /&gt;
    noFragment&lt;br /&gt;
    noshadows&lt;br /&gt;
    noimpact&lt;br /&gt;
    nooverlays&lt;br /&gt;
    forceOpaque&lt;br /&gt;
    {&lt;br /&gt;
        forceHighQuality&lt;br /&gt;
        blend add&lt;br /&gt;
        cameraCubeMap env/skyboxes/skybox_darkland_ne/darkland_NE&lt;br /&gt;
        texgen skybox&lt;br /&gt;
        texgen wobblesky .0 .0 .0&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this declaration, comment out the line that reads &#039;&#039;&#039;forceHighQuality&#039;&#039;&#039; by adding &amp;lt;tt&amp;gt;//&amp;lt;/tt&amp;gt; in front of it:&lt;br /&gt;
&lt;br /&gt;
  // forceHighQuality&lt;br /&gt;
&lt;br /&gt;
That should fix the sky and make it render correctly.&lt;br /&gt;
&lt;br /&gt;
=== The Sky rotates ===&lt;br /&gt;
&lt;br /&gt;
This problem only affects FMs with a dynamic sky (eg, moving clouds etc.)&lt;br /&gt;
&lt;br /&gt;
If you see the sky spinning it may be an ATI graphics card problem. One report says this was cured by turning off Catalyst AI. Also gives better loading times and cures bloom problem.&lt;br /&gt;
&lt;br /&gt;
If that doesn&#039;t fix it then try this. Note that it replaces dynamic sky with a static clear one so might look odd in a stormy FM for example but better than a spinning sky:&lt;br /&gt;
&lt;br /&gt;
* Create a new folder in your darkmod folder called materials.&lt;br /&gt;
* Within it create a plain text file named no_skybox.mtr&lt;br /&gt;
* Paste in the following:&lt;br /&gt;
&lt;br /&gt;
 textures/smf/portal_sky&lt;br /&gt;
 {&lt;br /&gt;
 	qer_editorimage env/skyboxes/skybox_ocean/ocean_ed&lt;br /&gt;
 	noFragment&lt;br /&gt;
 	&lt;br /&gt;
 	noimpact&lt;br /&gt;
 	nooverlays&lt;br /&gt;
 	forceOpaque&lt;br /&gt;
 	noShadows&lt;br /&gt;
 	{&lt;br /&gt;
 		forceHighQuality&lt;br /&gt;
 		blend add&lt;br /&gt;
 		cameraCubeMap env/skyboxes/skybox_darkland_ne/darkland_NE&lt;br /&gt;
 		texgen skybox&lt;br /&gt;
 		texgen wobblesky .0 .0 .0&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Bloom problems ===&lt;br /&gt;
&lt;br /&gt;
Bloom has been removed as a default option, if you wish to use it try using r_bloom 1/0; The reasoning behind the change is that it creates lighting situations which are unintended and result in over-bright lights or problems with water textures etc - It is strongly discouraged to use it and should be disabled if you are running an old build from when it was a default. If have a problem with bloom it may be an ATI graphics card problem. One report says this was cured by turning off Catalyst AI. Also gives better loading times and cures spinning sky problem.&lt;br /&gt;
&lt;br /&gt;
===Underwater performance poor===&lt;br /&gt;
&lt;br /&gt;
If you get very low framerates underwater then try turning off bloom.&lt;br /&gt;
&lt;br /&gt;
===Upside-down screen===&lt;br /&gt;
&lt;br /&gt;
If you get an upside-down screen, you can either turn off Catalyst AI if you have an ati card or try turning off bloom.&lt;br /&gt;
&lt;br /&gt;
To turn off Catalyst AI, open your Catylist control panel, go to &#039;graphics&#039; up the top left, select &#039;3d&#039; from the dropdown list and on the new menu below, select the &#039;AI&#039;&lt;br /&gt;
Now select the &#039;Disable Catalyst A.I.&#039; checkbox.&lt;br /&gt;
&lt;br /&gt;
To turn off bloom, enter the console and type &amp;quot;set r_bloom 0&amp;quot; (remove quotes)&lt;br /&gt;
Then type &amp;quot;vid_restart&amp;quot; (remove quotes) to refresh the graphics.&lt;br /&gt;
&lt;br /&gt;
=== The game is &#039;&#039;&#039;very&#039;&#039;&#039; slow! ===&lt;br /&gt;
&lt;br /&gt;
If you get less than 10 FPS, or the game even stutters, please try this:&lt;br /&gt;
&lt;br /&gt;
Look into your &#039;&#039;&#039;DoomConfig.cfg&#039;&#039;&#039; inside your &amp;lt;tt&amp;gt;darkmod&amp;lt;/tt&amp;gt; folder and check that the&lt;br /&gt;
following settings are like shown below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;max-width:35em&amp;quot;&amp;gt;&lt;br /&gt;
 seta image_usePrecompressedTextures &amp;quot;1&amp;quot;&lt;br /&gt;
 seta image_useNormalCompression &amp;quot;2&amp;quot;&lt;br /&gt;
 seta image_useAllFormats &amp;quot;1&amp;quot;&lt;br /&gt;
 seta image_useCompression &amp;quot;1&amp;quot;&lt;br /&gt;
 seta image_preload &amp;quot;1&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If that doesn&#039;t help, your system might run out of memory. Either upgrade to more than 1 Gbyte memory,&lt;br /&gt;
or try to close some other applications before playing.&lt;br /&gt;
&lt;br /&gt;
Please see also the article about [[Performance Tweaks]] to improve the performance.&lt;br /&gt;
&lt;br /&gt;
=== Slow loading times ===&lt;br /&gt;
&lt;br /&gt;
If you find an FM is very slow to load it may be an ATI graphics card problem. One report says this was cured by turning off Catalyst AI. Also cures bloom and spinning sky problem.&lt;br /&gt;
&lt;br /&gt;
Changing the following settings to 0 will also reduce loading time, but be warned...if you have a lower end system, poor graphics card, or low ram...you will likely notice a performance hit ingame since you will now be using uncompressed textures.&lt;br /&gt;
&amp;lt;pre style=&amp;quot;max-width:35em&amp;quot;&amp;gt;&lt;br /&gt;
 seta image_useNormalCompression &amp;quot;0&amp;quot;&lt;br /&gt;
 seta image_useCompression &amp;quot;0&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Game freezes for several seconds when opening doors===&lt;br /&gt;
The following problems :&lt;br /&gt;
&lt;br /&gt;
A) &amp;quot;game freezes and loads some data from hard drive while opening doors&amp;quot;&lt;br /&gt;
B) &amp;quot;while loading mission you are returned to the menu and need to restart loading&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Are often resolved by disabling EAX 4.0 HD in Audio Settings menu.&lt;br /&gt;
&lt;br /&gt;
===Game exits to menu after mission load, with renderpipe error in console===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptoms:&#039;&#039;&#039; Missions are installed properly and will load, but after they reach 100% you are returned to the main menu or objectives screen. If you open the console (Ctrl-Alt-~ on US keyboards), you see one/both of these errors:&lt;br /&gt;
&lt;br /&gt;
 ERROR: Failed to open \\.\pipe\dm_renderpipe&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 ERROR: idRenderSystemLocal::uncrop currentcrop &amp;lt;1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution:&#039;&#039;&#039; Some firewalls, notably &#039;&#039;Sunbelt Firewall&#039;&#039; (aka &#039;&#039;Kerio Firewall&#039;&#039;) are known to interfere with TDM&#039;s lightgem, &#039;&#039;even when &amp;quot;disabled&amp;quot;&#039;&#039;. To fix this problem, completely uninstall the firewall, and get a different one instead.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;COULD NOT FIND TDMLAUNCHER&amp;quot; when installing an FM===&lt;br /&gt;
&lt;br /&gt;
If you receive this error message you should check the start-arguments of DOOM3.exe / tdmlauncher.exe. Arguments are stored in darkmod/dmargs.txt and a faulty syntax e.g. a missing &amp;quot;+&amp;quot; before a &amp;quot;set&amp;quot;-command, will lead to this error message. Steam-users are advised to remove any launch-options from Doom.&lt;br /&gt;
&lt;br /&gt;
===The sound lags behind the picture===&lt;br /&gt;
&lt;br /&gt;
This seems to happen on Linux with certain ALSA drivers. You can try to disable &amp;quot;Dolby Surround&amp;quot; (switch to &amp;quot;Stereo&amp;quot;) or just use OSS instead:&lt;br /&gt;
&lt;br /&gt;
Put the following setting on your tdmlauncher.linux command line:&lt;br /&gt;
&lt;br /&gt;
 +set s_driver oss&lt;br /&gt;
&lt;br /&gt;
and use &amp;quot;Stereo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
On some Ubuntu systems, applications using ALSA are re-directed to &amp;quot;pulseaudio&amp;quot; which causes a lack of syncrony between sound and image. Simply removing &amp;quot;pulseaudio&amp;quot; should get your sound back in syncrony:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get purge pulseaudio&lt;br /&gt;
&lt;br /&gt;
=== Changing the screen resolution/aspect ratio does nothing!? ===&lt;br /&gt;
&lt;br /&gt;
These changes require a restart of Doom to work.&lt;br /&gt;
&lt;br /&gt;
=== Steam launches D3, not TDM ===&lt;br /&gt;
&lt;br /&gt;
Whenever you start Steam and it does launch vanilla Doom instead of TDM, make sure you&lt;br /&gt;
follow this advice:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; Create a shortcut on your desktop and set it to the following:&lt;br /&gt;
&lt;br /&gt;
 steam.exe -applaunch 9050 +set fs_game_base darkmod&lt;br /&gt;
&lt;br /&gt;
This ensures that when you start Steam, it will launch TDM and not Doom 3 without TDM.&lt;br /&gt;
&lt;br /&gt;
== Known bugs ==&lt;br /&gt;
See article [[Known Bugs]].&lt;br /&gt;
&lt;br /&gt;
[[Category:General]] [[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Path_Nodes&amp;diff=11822</id>
		<title>Path Nodes</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Path_Nodes&amp;diff=11822"/>
		<updated>2010-12-25T06:22:37Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Variation and Randomness */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;originally written by Springheel&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For more information on pathfinding, see [[Pathfinding]].&lt;br /&gt;
&lt;br /&gt;
= What are Path Nodes? =&lt;br /&gt;
&lt;br /&gt;
Path entities (or path nodes) are the things that you use to make your AI move (patrol) around the map. Placing path nodes can take a little getting used to; hopefully this article will help (I&#039;m far from an expert, but here&#039;s what I&#039;ve discovered so far).&lt;br /&gt;
&lt;br /&gt;
There are lots of different kinds of path nodes.  It can sometimes help to think of them as &amp;quot;travel nodes&amp;quot; (nodes that AI will travel to) and &amp;quot;behaviour nodes&amp;quot; (nodes that tell AI how to behave at a certain point).  &lt;br /&gt;
&lt;br /&gt;
Although path nodes have a directional arrow in the editor, it has no impact on most nodes.  Rotating the node does add a corresponding &amp;quot;angle&amp;quot; property to the entity (matching the direction of the arrow).  Certain nodes (path_anim, path_wait, and path_turn, for example) are affected by the &amp;quot;angle&amp;quot; property, but most will ignore it.&lt;br /&gt;
&lt;br /&gt;
= How to use Path Nodes =&lt;br /&gt;
&lt;br /&gt;
Path nodes are placed like any other entity (RMB and select &amp;quot;add entity&amp;quot;, then scroll to &amp;quot;paths&amp;quot;).  They show up as a coloured box with an arrow in the editor (colour varies depending on config.)&lt;br /&gt;
&lt;br /&gt;
Path nodes are useless if they are not linked to another entity (either an AI or another node).  In order to link them, you use the &amp;quot;target&amp;quot; property.  This tells the AI what path node they should go to (or act on) next.  If you type &amp;quot;target&amp;quot; &amp;quot;path_corner_1&amp;quot; in your AI property list, then your AI will walk to &amp;quot;path_corner_1&amp;quot; when the map starts.  Without a &amp;quot;target&amp;quot; property, your AI will not go anywhere.  Once you add a &amp;quot;target&amp;quot; property to either your AI or another node, you should see a colored line connecting the two entities.&lt;br /&gt;
&lt;br /&gt;
Behaviour nodes activate behaviour in order.  In other words, if you want an AI to reach a path_corner, then turn to face a direction, then wait for a time, then play an animation, you need to link the nodes in that order.  &lt;br /&gt;
&lt;br /&gt;
 path_corner ---&amp;gt; path_turn ----&amp;gt; path_wait ----&amp;gt; path_cycleanim -----&amp;gt; next path_corner&lt;br /&gt;
&lt;br /&gt;
== Variation and Randomness ==&lt;br /&gt;
&lt;br /&gt;
It is also possible to target multiple nodes (using &amp;quot;target_1&amp;quot;, &amp;quot;target_2&amp;quot; etc. spawn args). In this case, the AI will choose one of these nodes with equal probability. &lt;br /&gt;
If the &#039;&#039;&#039;&amp;quot;chance&amp;quot;&#039;&#039;&#039; spawn arg (between 0 and 1) is set on a node, it defines the probability for the AI to choose this path node next when multiple path nodes are targetted.  The chances at any point must not add to greater than 1, or it won&#039;t work properly.  For example, if a path_corner targets two different nodes, you could set &amp;quot;chance&amp;quot; &amp;quot;.75&amp;quot; on one and &amp;quot;chance&amp;quot; &amp;quot;.25&amp;quot; on the other.  This will result in AI choosing the first path 3/4 of the time.&lt;br /&gt;
&lt;br /&gt;
There are now two new spawnargs, &#039;&#039;&#039;&amp;quot;alert_idle_only&amp;quot;&#039;&#039;&#039; and &#039;&#039;&#039;&amp;quot;idle_only&amp;quot;&#039;&#039;&#039; that can be set on path nodes. The nodes are then only chosen when the AI is in that state.  For example, if you set a path_corner as &amp;quot;idle_only&amp;quot;, then the AI will no longer go to that path node when it has been alerted.  This allows the mapper to set a complete set of alternate patrols and actions for AI who have been alerted (like sending them to guard important areas).&lt;br /&gt;
&lt;br /&gt;
Nodes that make the AI walk to a specified location (currently the only one that does this is the path_corner) can have an &#039;&#039;&#039;&amp;quot;move_to_position_tolerance&amp;quot;&#039;&#039;&#039; spawn arg, which defines how close the AI has to be to the destination point to determine the position as reached. Normally, the AI considers the position reached as soon as it is inside its bounding box (most of our humanoid AI are using aas32, so the point would need to be within 16 units from the AI&#039;s origin). This is not always accurate enough, for example when a path_corner is placed in front of a chair where the AI is supposed to sit down, making the AI place half of their back next to the chair.&lt;br /&gt;
&lt;br /&gt;
[Fidcal: I believe the accuracy spawnarg is replaced by the move_to_position_tolerance above. The following likely applies to the new spawnarg anyway.]&lt;br /&gt;
Setting the accuracy spawn arg will change the horizontal size of the bounding box used for checking. If the accuracy is set to negative values (default is -1), the standard bounding box will be used as before.&lt;br /&gt;
&lt;br /&gt;
This spawnarg is available for all entities and can also affect AIs moving towards levers or buttons.&lt;br /&gt;
&lt;br /&gt;
== path_corner ==&lt;br /&gt;
Probably the most common path node, this is a &amp;quot;travel node&amp;quot;.  AI will walk from their current position to this node in as straight a line as possible.  This node must be on the ground and in an area AI can reach.  See [[Pathfinding]] for more information on how to help AI go from one node to another.&lt;br /&gt;
&lt;br /&gt;
To make AI patrol an area, each path_corner node can target the next one in sequence.  If AI reach a node that does not target anything, they will stop there and no longer move without player interaction.  It is possible for two path_nodes to target each other, which means the AI will walk from one to the other and back again endlessly.&lt;br /&gt;
&lt;br /&gt;
A single entity (path node or AI) can target more than one path_corner; D3 will randomly choose between the targetted nodes.  Use the following syntax:  &#039;&#039;(actually this syntax needs to be double checked)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 target path_corner_1&lt;br /&gt;
 target_2 path_corner_2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(At the moment, targetting more than 2 path_corners from the same entity does not seem to work (possibly a DR bug).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the example below, both A and B are path_corner nodes.  On map start, the AI will walk to A, then turn and walk to B, then stop.&lt;br /&gt;
&lt;br /&gt;
[[image:pathfinding2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Extra note: To make an AI run on patrol add the property/value : &amp;quot;run&amp;quot; &amp;quot;1&amp;quot; to a path_corner on the AI&#039;s patrol and the AI will run to it (then resume walking after it if the next path_corner does not have that property set.) &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note that an AI will return to a path_corner &#039;&#039;(does it choose the nearest or most recent?)&#039;&#039; after a failed search.  If you do not have at least one path_corner, the AI will stop wherever they are when their search is complete.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== path_wait ==&lt;br /&gt;
&lt;br /&gt;
This is a behaviour node. It does not tell an AI to move anywhere.  This node tells an AI to wait in an idle state for a given amount of time.  Once that time is up, the AI will proceed to whatever the next target is (a path_wait with no target is pretty pointless).  &lt;br /&gt;
&lt;br /&gt;
A path_wait node appears as a small orange box.  It has a directional arrow, but that has no affect on which direction the AI faces in the first place. However, you can set the angle key on the path either by rotating the entity or by setting the key directly to make the AI turn and face this direction before starting to wait. &#039;&#039;&#039;Important:&#039;&#039;&#039; If the angle is 0 make sure it is actually on the entity and not just default.&lt;br /&gt;
&lt;br /&gt;
A path_wait node should have a &amp;quot;wait&amp;quot; property, with the number of seconds the AI should wait there before proceeding.  It can also have a &amp;quot;wait_max&amp;quot; property  which will vary the repeat time. So for example...&lt;br /&gt;
&lt;br /&gt;
    * wait 30&lt;br /&gt;
    * wait_max 40 &lt;br /&gt;
&lt;br /&gt;
...will cause the AI to wait between 30 to 40 seconds before proceeding. If wait_max is set to 0, the AI will always wait exactly the time specified in wait before proceeding. If you set wait to 0, the AI will wait between 0 seconds and the time specified in wait_max. Default values are 2 seconds for wait, and 0 seconds for wait_max, so the AI will always wait exactly 2 seconds.&lt;br /&gt;
&lt;br /&gt;
In the following example, A and B are path_corners, and the small orange box is a path_wait entity.  On map start, the AI will walk to A and wait there for the required amount of time, then turn and proceeds to B.&lt;br /&gt;
&lt;br /&gt;
[[image:pathfinding3.jpg]]&lt;br /&gt;
&lt;br /&gt;
Note that it does not matter &#039;&#039;&#039;where&#039;&#039;&#039; the path_wait node is placed.  The AI does not actually follow the orange lines (this is not really intuitive, I know).  The example below would cause the exact same behaviour as the example above--in both cases the AI will walk directly from A to B.&lt;br /&gt;
&lt;br /&gt;
[[image:pathfinding4.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another useful example for path_wait is that of the stationary guard who turns to look in different directions periodically.  This can be schematically represented (arrows indicate target links) as:&lt;br /&gt;
&lt;br /&gt;
AI -&amp;gt; path_corner1 -&amp;gt; path_wait1 -&amp;gt; path_wait2 -&amp;gt; path_corner1&lt;br /&gt;
&lt;br /&gt;
Example properties for the path_wait are:&lt;br /&gt;
 wait: 5  (minimum time to wait on action)&lt;br /&gt;
 wait_max: 10  (maximum time to wait on action)&lt;br /&gt;
 angle: 0  (&#039;&#039;&#039;Important&#039;&#039;&#039;:  this property is essential for proper function even if the angle is 0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AI walks to or stands at the path_corner.  The next action is to do what is indicated by the first path_wait.  In this example, it tells the AI to face a particular direction for a certain period of time.  This then targets a second path_wait which has the AI face a different direction for a certain period of time.  To complete the cycle, the second path_wait then targets the original path_corner.  The path_corners are necessary because again, the path_wait doesn&#039;t contain pathing or location information.  Without the path_corner, if the AI is caused to wander (e.g. becomes alerted), it might not return to the original standing spot, and instead will do the look angles right where it stands.  The path_corner assures the AI returns to its original position.&lt;br /&gt;
&lt;br /&gt;
== path_turn == &lt;br /&gt;
&lt;br /&gt;
This behaviour node tells an AI to turn in place to face a chosen direction.  It does not make the AI walk anywhere.  This is the one node where the directional arrow does seem to matter--the AI turns to face the same direction as the arrow.  Alternately, you can use  the property &amp;quot;angle&amp;quot; and the values below:&lt;br /&gt;
&lt;br /&gt;
* 0 = East (X)&lt;br /&gt;
* 90 = North (Y)&lt;br /&gt;
* 180 = West (-X)&lt;br /&gt;
* 270 = South (-Y)&lt;br /&gt;
* 360 = East(X)&lt;br /&gt;
&lt;br /&gt;
(Actually, to be more accurate, rotating the entity automatically adds the &amp;quot;angle&amp;quot; property to the entity. If you just leave the arrow facing the way it is when you create the entity, there will be no &amp;quot;angle&amp;quot; property, and therefore the AI will not turn.)&lt;br /&gt;
&lt;br /&gt;
== path_anim ==&lt;br /&gt;
&lt;br /&gt;
This is a behaviour node that makes the AI play an animation, once.  When that animation is done, it proceeds to the next target (if any).  This could be used to make an AI walk over to a bookshelf and play a &#039;reaching out&#039; animation, for example. &lt;br /&gt;
&lt;br /&gt;
The syntax proper syntax is:&lt;br /&gt;
&lt;br /&gt;
 anim  [animation name]&lt;br /&gt;
&lt;br /&gt;
You can see the list of animations names here: [[Animation List]].  Do not use the name of the actual animation file.  &lt;br /&gt;
&lt;br /&gt;
A path_anim can have only one animation, but it is possible for a single entity to target more than one path_anim.  The AI will pick one of the path_anim nodes at random and play that animation.&lt;br /&gt;
&lt;br /&gt;
When you first create the path_anim entity, the directional arrow is meaningless.  However, if you rotate the entity, the &amp;quot;angle&amp;quot; property is added to the entity and is updated based on which direction the arrow is pointing.  That property indicates the direction the AI will face while playing the animation.  &#039;&#039;&#039;This value appears to be necessary to make the animation work.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== path_sit ==&lt;br /&gt;
&lt;br /&gt;
This is a behaviour node that makes the AI sit down at its current location.  See [[Sitting Behaviour for AI]] for more information.&lt;br /&gt;
&lt;br /&gt;
= Flee Points =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do NOT target the AI to a flee point; AI will automatically go to a flee point if in danger. Just make available path_flee_point entities at suitable places where you would like your AI to flee to.&lt;br /&gt;
&lt;br /&gt;
On the path_flee_point entity:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;is_guarded&amp;quot; A fleeing AI, eg, a civilian, would give this preference (but it is up to the mapper to actually provide a guard there.)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;team&amp;quot; Only AI on this team would use this flee point.&lt;br /&gt;
&lt;br /&gt;
* This is how the code works:&lt;br /&gt;
* The AI tries to determine the nearest friendly guarded flee point and flee to it.&lt;br /&gt;
* If there is no friendly guarded flee point, the AI tries to find the nearest friendly flee point (on friendly team) and run to it.&lt;br /&gt;
* If this also fails, the AI tries to find an AAS area far from the enemy and run there.&lt;br /&gt;
* If the enemy is still visible when the AI reaches his destination, he chooses the farthest friendly guarded flee point to run to, &lt;br /&gt;
* if this fails, the farthest friendly flee point, &lt;br /&gt;
* and if this also fails falls back to choosing an AAS area far from the enemy to run to.&lt;br /&gt;
* So neither the priority nor the target spawn arg have any function here, it is not possible to weight the flee points. The AI will choose one automatically.&lt;br /&gt;
&lt;br /&gt;
A problem occurs when the AI doesn&#039;t find any appropriate flee points but also no AAS area that is far away enough from the enemy. In this case, he will just stand there. Maybe he should either cower and be afraid in this case or just run around like a mad chicken?&lt;br /&gt;
&lt;br /&gt;
Whether a fleeing AI passes on info to other AI as to the source of their alert (ie so armed guard would go to investigate to the right place whereas another civilan might also flee to the farthest point.)&lt;br /&gt;
Yes, they do. The cry for help bark is propagated to other AI and carries information about the last alert position.&lt;br /&gt;
&lt;br /&gt;
Armed AI will also flee if their health points drop to a certain level? Where is that determined?&lt;br /&gt;
This is determined by the health_critical spawn arg.&lt;br /&gt;
&lt;br /&gt;
== path_interact ==&lt;br /&gt;
&lt;br /&gt;
This lets the AI interact with an entity (for example a button) in a similar way to frobbing. This will only work for buttons etc, not for inventory items and moveables. The AI will stop and look at the entiy while interacting, but not walk to it, so a path_corner next to the entity is required.  AI will use normal doors and elevators without needing a path_interact (confirmation needed).  However, this could be used to make AI turn on lightswitches, open mechanical doors, etc.&lt;br /&gt;
&lt;br /&gt;
You need to add these spawnargs to the path_interact entity:&lt;br /&gt;
&lt;br /&gt;
ent &amp;lt;name of entity to be frobbed by AI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
target &amp;lt;next path entity (if any)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Untested Nodes =&lt;br /&gt;
&lt;br /&gt;
I have not personally tested the following, so I&#039;m just going by their editor descriptions.  They may or may not work as described.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== path_cycleanim ==&lt;br /&gt;
&lt;br /&gt;
The AI stays in place and loops the selected animation, either for a specified amount of time (using the &#039;wait&#039; property) or until triggered.  Syntax needed.&lt;br /&gt;
&lt;br /&gt;
== path_lookat ==&lt;br /&gt;
&lt;br /&gt;
This does not stop the AI, but they will turn their head and look somewhere specific as they walk to their next target.  For the next &#039;&#039;wait&#039;&#039; seconds, turn head to look at the entity given by the &#039;&#039;focus&#039;&#039; spawnarg (defaults to looking at the path_lookat entity itself). This is useful if you want to make sure an AI is looking at a specific spot (or away from a certain spot) during their patrol.&lt;br /&gt;
&lt;br /&gt;
== path_waitfortrigger ==&lt;br /&gt;
&lt;br /&gt;
Waits at a given place until triggered, then proceeds to the next target.  This is useful if you want some control over exactly where the AI is when the players first see it.&lt;br /&gt;
&lt;br /&gt;
== path_hide ==&lt;br /&gt;
&lt;br /&gt;
Supposedly deactivates and stops rendering the AI.  &lt;br /&gt;
&lt;br /&gt;
Turns out this doesn&#039;t work well with TDM...makes AI invisible but they still talk and occupy space.  To remove an AI from the map, try grayman&#039;s approach:&lt;br /&gt;
&lt;br /&gt;
I wrapped the AI&#039;s final path corner in a trigger_once_entityname and gave the trigger the keyword pair &amp;quot;entityname &amp;lt;AI_name&amp;gt;&amp;quot;. (The docs don&#039;t tell you about this key, but the game will error out if it&#039;s not there, and tell you it&#039;s missing. A classic &amp;quot;trial by error&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
The trigger targets a func_remove, which has the key &amp;quot;target &amp;lt;AI_name&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
So when he reaches the last path_corner, the trigger recognizes him and tells the func_remove, which takes him out of the game.&lt;br /&gt;
&lt;br /&gt;
== path_show ==&lt;br /&gt;
&lt;br /&gt;
Starts rendering the AI.  I would assume this one would be linked to a path_waitfortrigger, to create AI that spawn when triggered.  This could be used to create the effect that an AI just came through a doorway or around a corner.&lt;br /&gt;
&lt;br /&gt;
== path_attack ==&lt;br /&gt;
&lt;br /&gt;
Used to script AI attacking a particular enemy, for scripted sequences I guess. AI will continue on to the next path entity if it kills the enemy.&lt;br /&gt;
&lt;br /&gt;
Questions:  How do you define who the AI attacks?&lt;br /&gt;
&lt;br /&gt;
[Fidcal]: Just found this - &amp;quot;Character will attack the character specified by &#039;enemy&#039; key. Character will go to next path when enemy dies or when activated.&amp;quot; Not tested.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Sitting_Behaviour_for_AI&amp;diff=11821</id>
		<title>Sitting Behaviour for AI</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Sitting_Behaviour_for_AI&amp;diff=11821"/>
		<updated>2010-12-25T06:10:05Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Sitting at Map Start */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are two different ways to get AI to sit in your map; pick the one that best suits your needs.&lt;br /&gt;
&lt;br /&gt;
==Sitting at Map Start==&lt;br /&gt;
The easier of the two options. Just set the spawnarg &amp;quot;sitting&amp;quot; &amp;quot;1&amp;quot; on the AI, and the AI will sit down immediately at map start. They will stay this way until alerted to the point of searching, at which point they will get up.  After calming down, they will go back and sit again.&lt;br /&gt;
&lt;br /&gt;
You must place the AI next to the chair, facing away from the direction you want him to sit (or use angles, see below). &#039;&#039;&#039;Important:&#039;&#039;&#039; If the angle is 0 make sure it is actually on the entity and not just default. It is not enough to have it on a path_wait after the path_sit.  The code does not detect the surface the AI sits on, so he will sit on thin air if there is no stool or chair there.&lt;br /&gt;
&lt;br /&gt;
==Sitting During Patrol==&lt;br /&gt;
It is now possible to have the AI sitting down and getting up during patrolling, using a &#039;&#039;&#039;path_sit&#039;&#039;&#039; entity.  You must place the path_sit next to the chair, angled away from the direction you want him to sit.&lt;br /&gt;
&lt;br /&gt;
You can set &amp;quot;wait&amp;quot; and/or &amp;quot;wait_max&amp;quot; to let the AI wait and get up after that time.  &amp;quot;Wait&amp;quot; is a minimum wait time, so if you set &amp;quot;wait&amp;quot; to 5 seconds and &amp;quot;wait_max&amp;quot; to 10 seconds, the AI will wait between 5 and 10 seconds every time. If you only set &amp;quot;wait&amp;quot;, the AI will always wait exactly 5 seconds. If you only set &amp;quot;wait_max&amp;quot;, the AI will wait between 0 and 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t set either one, the AI will stay seated and you can also do path_anims and path_waits for example (they&#039;ll play that animation on the torso channel while sitting).&lt;br /&gt;
&lt;br /&gt;
The AI will get up if alerted to searching state or if it has to move to another position.&lt;br /&gt;
&lt;br /&gt;
Example: If you want an AI to sit, and then play a warm hands after 20 seconds, you would use a path_sit without a wait spawnarg (AI sits down, the path_sit task is terminated and the AI stays seated), then a path_wait for 20 seconds, then a path_anim, then another path_wait, and then a path_corner or something (AI gets up and walks to path_corner).&lt;br /&gt;
&lt;br /&gt;
If you have any path problems, eg, with AI clipping into Monsterclip on chair, then make the chair a moveable and add frobable 0 and notPushable 1 and remove the monsterclip. It is effectively static but the AI will path it correctly without monsterclip.&lt;br /&gt;
&lt;br /&gt;
== Sitting Angles ==&lt;br /&gt;
&lt;br /&gt;
Mappers may want more control over where AI face after sitting down.  By default, AI stand directly in front of the chair when sitting or standing.  This doesn&#039;t work well if you want AI to sit close to a table, however.  The solution is to use a &amp;quot;sit_down_angle&amp;quot; spawnarg on the AI (if AI has &#039;sitting&#039; spawnarg but on the path_sit if that is used.)  This will cause the AI to spin in the chair after sitting until they face the direction listed.  They will turn back when it is time to stand up.&lt;br /&gt;
&lt;br /&gt;
Note that the angles are relative to the world, not the AI.&lt;br /&gt;
&lt;br /&gt;
Other sitting spawnargs include:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;sit_down_slide_dist&amp;quot;, which is currently 8; controls how far AI slide back onto the chair when sitting down.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;sitting_turn_pivot&amp;quot;			&amp;quot;The offset of the pivot for turning while seated.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{tutorial-ai}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Path_Nodes&amp;diff=11820</id>
		<title>Path Nodes</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Path_Nodes&amp;diff=11820"/>
		<updated>2010-12-25T06:05:55Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* path_wait */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;originally written by Springheel&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For more information on pathfinding, see [[Pathfinding]].&lt;br /&gt;
&lt;br /&gt;
= What are Path Nodes? =&lt;br /&gt;
&lt;br /&gt;
Path entities (or path nodes) are the things that you use to make your AI move (patrol) around the map. Placing path nodes can take a little getting used to; hopefully this article will help (I&#039;m far from an expert, but here&#039;s what I&#039;ve discovered so far).&lt;br /&gt;
&lt;br /&gt;
There are lots of different kinds of path nodes.  It can sometimes help to think of them as &amp;quot;travel nodes&amp;quot; (nodes that AI will travel to) and &amp;quot;behaviour nodes&amp;quot; (nodes that tell AI how to behave at a certain point).  &lt;br /&gt;
&lt;br /&gt;
Although path nodes have a directional arrow in the editor, it has no impact on most nodes.  Rotating the node does add a corresponding &amp;quot;angle&amp;quot; property to the entity (matching the direction of the arrow).  Certain nodes (path_anim, path_wait, and path_turn, for example) are affected by the &amp;quot;angle&amp;quot; property, but most will ignore it.&lt;br /&gt;
&lt;br /&gt;
= How to use Path Nodes =&lt;br /&gt;
&lt;br /&gt;
Path nodes are placed like any other entity (RMB and select &amp;quot;add entity&amp;quot;, then scroll to &amp;quot;paths&amp;quot;).  They show up as a coloured box with an arrow in the editor (colour varies depending on config.)&lt;br /&gt;
&lt;br /&gt;
Path nodes are useless if they are not linked to another entity (either an AI or another node).  In order to link them, you use the &amp;quot;target&amp;quot; property.  This tells the AI what path node they should go to (or act on) next.  If you type &amp;quot;target&amp;quot; &amp;quot;path_corner_1&amp;quot; in your AI property list, then your AI will walk to &amp;quot;path_corner_1&amp;quot; when the map starts.  Without a &amp;quot;target&amp;quot; property, your AI will not go anywhere.  Once you add a &amp;quot;target&amp;quot; property to either your AI or another node, you should see a colored line connecting the two entities.&lt;br /&gt;
&lt;br /&gt;
Behaviour nodes activate behaviour in order.  In other words, if you want an AI to reach a path_corner, then turn to face a direction, then wait for a time, then play an animation, you need to link the nodes in that order.  &lt;br /&gt;
&lt;br /&gt;
 path_corner ---&amp;gt; path_turn ----&amp;gt; path_wait ----&amp;gt; path_cycleanim -----&amp;gt; next path_corner&lt;br /&gt;
&lt;br /&gt;
== Variation and Randomness ==&lt;br /&gt;
&lt;br /&gt;
It is also possible to target multiple nodes (using &amp;quot;target_1&amp;quot;, &amp;quot;target_2&amp;quot; etc. spawn args). In this case, the AI will choose one of these nodes with equal probability. &lt;br /&gt;
If the &#039;&#039;&#039;&amp;quot;chance&amp;quot;&#039;&#039;&#039; spawn arg (between 0 and 1) is set on a node, it defines the probability for the AI to choose this path node next when multiple path nodes are targetted.  The chances at any point must not add to greater than 1, or it won&#039;t work properly.  For example, if a path_corner targets two different nodes, you could set &amp;quot;chance&amp;quot; &amp;quot;.75&amp;quot; on one and &amp;quot;chance&amp;quot; &amp;quot;.25&amp;quot; on the other.  This will result in AI choosing the first path 3/4 of the time.&lt;br /&gt;
&lt;br /&gt;
There are now two new spawnargs, &#039;&#039;&#039;&amp;quot;alert_idle_only&amp;quot;&#039;&#039;&#039; and &#039;&#039;&#039;&amp;quot;idle_only&amp;quot;&#039;&#039;&#039; that can be set on path nodes. The nodes are then only chosen when the AI is in that state.  For example, if you set a path_corner as &amp;quot;idle_only&amp;quot;, then the AI will no longer go to that path node when it has been alerted.  This allows the mapper to set a complete set of alternate patrols and actions for AI who have been alerted (like sending them to guard important areas).&lt;br /&gt;
&lt;br /&gt;
Nodes that make the AI walk to a specified location (currently the only one that does this is the path_corner) can have an &#039;&#039;&#039;&amp;quot;move_to_position_tolerance&amp;quot;&#039;&#039;&#039; spawn arg, which defines how close the AI has to be to the destination point to determine the position as reached. Normally, the AI considers the position reached as soon as it is inside its bounding box (most of our humanoid AI are using aas32, so the point would need to be within 16 units from the AI&#039;s origin). This is not always accurate enough, for example when a path_corner is placed in front of a chair where the AI is supposed to sit down, making the AI place half of their back next to the chair.&lt;br /&gt;
Setting the accuracy spawn arg will change the horizontal size of the bounding box used for checking. If the accuracy is set to negative values (default is -1), the standard bounding box will be used as before.&lt;br /&gt;
&lt;br /&gt;
This spawnarg is available for all entities and can also affect AIs moving towards levers or buttons.&lt;br /&gt;
&lt;br /&gt;
== path_corner ==&lt;br /&gt;
Probably the most common path node, this is a &amp;quot;travel node&amp;quot;.  AI will walk from their current position to this node in as straight a line as possible.  This node must be on the ground and in an area AI can reach.  See [[Pathfinding]] for more information on how to help AI go from one node to another.&lt;br /&gt;
&lt;br /&gt;
To make AI patrol an area, each path_corner node can target the next one in sequence.  If AI reach a node that does not target anything, they will stop there and no longer move without player interaction.  It is possible for two path_nodes to target each other, which means the AI will walk from one to the other and back again endlessly.&lt;br /&gt;
&lt;br /&gt;
A single entity (path node or AI) can target more than one path_corner; D3 will randomly choose between the targetted nodes.  Use the following syntax:  &#039;&#039;(actually this syntax needs to be double checked)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 target path_corner_1&lt;br /&gt;
 target_2 path_corner_2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(At the moment, targetting more than 2 path_corners from the same entity does not seem to work (possibly a DR bug).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the example below, both A and B are path_corner nodes.  On map start, the AI will walk to A, then turn and walk to B, then stop.&lt;br /&gt;
&lt;br /&gt;
[[image:pathfinding2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Extra note: To make an AI run on patrol add the property/value : &amp;quot;run&amp;quot; &amp;quot;1&amp;quot; to a path_corner on the AI&#039;s patrol and the AI will run to it (then resume walking after it if the next path_corner does not have that property set.) &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note that an AI will return to a path_corner &#039;&#039;(does it choose the nearest or most recent?)&#039;&#039; after a failed search.  If you do not have at least one path_corner, the AI will stop wherever they are when their search is complete.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== path_wait ==&lt;br /&gt;
&lt;br /&gt;
This is a behaviour node. It does not tell an AI to move anywhere.  This node tells an AI to wait in an idle state for a given amount of time.  Once that time is up, the AI will proceed to whatever the next target is (a path_wait with no target is pretty pointless).  &lt;br /&gt;
&lt;br /&gt;
A path_wait node appears as a small orange box.  It has a directional arrow, but that has no affect on which direction the AI faces in the first place. However, you can set the angle key on the path either by rotating the entity or by setting the key directly to make the AI turn and face this direction before starting to wait. &#039;&#039;&#039;Important:&#039;&#039;&#039; If the angle is 0 make sure it is actually on the entity and not just default.&lt;br /&gt;
&lt;br /&gt;
A path_wait node should have a &amp;quot;wait&amp;quot; property, with the number of seconds the AI should wait there before proceeding.  It can also have a &amp;quot;wait_max&amp;quot; property  which will vary the repeat time. So for example...&lt;br /&gt;
&lt;br /&gt;
    * wait 30&lt;br /&gt;
    * wait_max 40 &lt;br /&gt;
&lt;br /&gt;
...will cause the AI to wait between 30 to 40 seconds before proceeding. If wait_max is set to 0, the AI will always wait exactly the time specified in wait before proceeding. If you set wait to 0, the AI will wait between 0 seconds and the time specified in wait_max. Default values are 2 seconds for wait, and 0 seconds for wait_max, so the AI will always wait exactly 2 seconds.&lt;br /&gt;
&lt;br /&gt;
In the following example, A and B are path_corners, and the small orange box is a path_wait entity.  On map start, the AI will walk to A and wait there for the required amount of time, then turn and proceeds to B.&lt;br /&gt;
&lt;br /&gt;
[[image:pathfinding3.jpg]]&lt;br /&gt;
&lt;br /&gt;
Note that it does not matter &#039;&#039;&#039;where&#039;&#039;&#039; the path_wait node is placed.  The AI does not actually follow the orange lines (this is not really intuitive, I know).  The example below would cause the exact same behaviour as the example above--in both cases the AI will walk directly from A to B.&lt;br /&gt;
&lt;br /&gt;
[[image:pathfinding4.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another useful example for path_wait is that of the stationary guard who turns to look in different directions periodically.  This can be schematically represented (arrows indicate target links) as:&lt;br /&gt;
&lt;br /&gt;
AI -&amp;gt; path_corner1 -&amp;gt; path_wait1 -&amp;gt; path_wait2 -&amp;gt; path_corner1&lt;br /&gt;
&lt;br /&gt;
Example properties for the path_wait are:&lt;br /&gt;
 wait: 5  (minimum time to wait on action)&lt;br /&gt;
 wait_max: 10  (maximum time to wait on action)&lt;br /&gt;
 angle: 0  (&#039;&#039;&#039;Important&#039;&#039;&#039;:  this property is essential for proper function even if the angle is 0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AI walks to or stands at the path_corner.  The next action is to do what is indicated by the first path_wait.  In this example, it tells the AI to face a particular direction for a certain period of time.  This then targets a second path_wait which has the AI face a different direction for a certain period of time.  To complete the cycle, the second path_wait then targets the original path_corner.  The path_corners are necessary because again, the path_wait doesn&#039;t contain pathing or location information.  Without the path_corner, if the AI is caused to wander (e.g. becomes alerted), it might not return to the original standing spot, and instead will do the look angles right where it stands.  The path_corner assures the AI returns to its original position.&lt;br /&gt;
&lt;br /&gt;
== path_turn == &lt;br /&gt;
&lt;br /&gt;
This behaviour node tells an AI to turn in place to face a chosen direction.  It does not make the AI walk anywhere.  This is the one node where the directional arrow does seem to matter--the AI turns to face the same direction as the arrow.  Alternately, you can use  the property &amp;quot;angle&amp;quot; and the values below:&lt;br /&gt;
&lt;br /&gt;
* 0 = East (X)&lt;br /&gt;
* 90 = North (Y)&lt;br /&gt;
* 180 = West (-X)&lt;br /&gt;
* 270 = South (-Y)&lt;br /&gt;
* 360 = East(X)&lt;br /&gt;
&lt;br /&gt;
(Actually, to be more accurate, rotating the entity automatically adds the &amp;quot;angle&amp;quot; property to the entity. If you just leave the arrow facing the way it is when you create the entity, there will be no &amp;quot;angle&amp;quot; property, and therefore the AI will not turn.)&lt;br /&gt;
&lt;br /&gt;
== path_anim ==&lt;br /&gt;
&lt;br /&gt;
This is a behaviour node that makes the AI play an animation, once.  When that animation is done, it proceeds to the next target (if any).  This could be used to make an AI walk over to a bookshelf and play a &#039;reaching out&#039; animation, for example. &lt;br /&gt;
&lt;br /&gt;
The syntax proper syntax is:&lt;br /&gt;
&lt;br /&gt;
 anim  [animation name]&lt;br /&gt;
&lt;br /&gt;
You can see the list of animations names here: [[Animation List]].  Do not use the name of the actual animation file.  &lt;br /&gt;
&lt;br /&gt;
A path_anim can have only one animation, but it is possible for a single entity to target more than one path_anim.  The AI will pick one of the path_anim nodes at random and play that animation.&lt;br /&gt;
&lt;br /&gt;
When you first create the path_anim entity, the directional arrow is meaningless.  However, if you rotate the entity, the &amp;quot;angle&amp;quot; property is added to the entity and is updated based on which direction the arrow is pointing.  That property indicates the direction the AI will face while playing the animation.  &#039;&#039;&#039;This value appears to be necessary to make the animation work.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== path_sit ==&lt;br /&gt;
&lt;br /&gt;
This is a behaviour node that makes the AI sit down at its current location.  See [[Sitting Behaviour for AI]] for more information.&lt;br /&gt;
&lt;br /&gt;
= Flee Points =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do NOT target the AI to a flee point; AI will automatically go to a flee point if in danger. Just make available path_flee_point entities at suitable places where you would like your AI to flee to.&lt;br /&gt;
&lt;br /&gt;
On the path_flee_point entity:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;is_guarded&amp;quot; A fleeing AI, eg, a civilian, would give this preference (but it is up to the mapper to actually provide a guard there.)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;team&amp;quot; Only AI on this team would use this flee point.&lt;br /&gt;
&lt;br /&gt;
* This is how the code works:&lt;br /&gt;
* The AI tries to determine the nearest friendly guarded flee point and flee to it.&lt;br /&gt;
* If there is no friendly guarded flee point, the AI tries to find the nearest friendly flee point (on friendly team) and run to it.&lt;br /&gt;
* If this also fails, the AI tries to find an AAS area far from the enemy and run there.&lt;br /&gt;
* If the enemy is still visible when the AI reaches his destination, he chooses the farthest friendly guarded flee point to run to, &lt;br /&gt;
* if this fails, the farthest friendly flee point, &lt;br /&gt;
* and if this also fails falls back to choosing an AAS area far from the enemy to run to.&lt;br /&gt;
* So neither the priority nor the target spawn arg have any function here, it is not possible to weight the flee points. The AI will choose one automatically.&lt;br /&gt;
&lt;br /&gt;
A problem occurs when the AI doesn&#039;t find any appropriate flee points but also no AAS area that is far away enough from the enemy. In this case, he will just stand there. Maybe he should either cower and be afraid in this case or just run around like a mad chicken?&lt;br /&gt;
&lt;br /&gt;
Whether a fleeing AI passes on info to other AI as to the source of their alert (ie so armed guard would go to investigate to the right place whereas another civilan might also flee to the farthest point.)&lt;br /&gt;
Yes, they do. The cry for help bark is propagated to other AI and carries information about the last alert position.&lt;br /&gt;
&lt;br /&gt;
Armed AI will also flee if their health points drop to a certain level? Where is that determined?&lt;br /&gt;
This is determined by the health_critical spawn arg.&lt;br /&gt;
&lt;br /&gt;
== path_interact ==&lt;br /&gt;
&lt;br /&gt;
This lets the AI interact with an entity (for example a button) in a similar way to frobbing. This will only work for buttons etc, not for inventory items and moveables. The AI will stop and look at the entiy while interacting, but not walk to it, so a path_corner next to the entity is required.  AI will use normal doors and elevators without needing a path_interact (confirmation needed).  However, this could be used to make AI turn on lightswitches, open mechanical doors, etc.&lt;br /&gt;
&lt;br /&gt;
You need to add these spawnargs to the path_interact entity:&lt;br /&gt;
&lt;br /&gt;
ent &amp;lt;name of entity to be frobbed by AI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
target &amp;lt;next path entity (if any)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Untested Nodes =&lt;br /&gt;
&lt;br /&gt;
I have not personally tested the following, so I&#039;m just going by their editor descriptions.  They may or may not work as described.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== path_cycleanim ==&lt;br /&gt;
&lt;br /&gt;
The AI stays in place and loops the selected animation, either for a specified amount of time (using the &#039;wait&#039; property) or until triggered.  Syntax needed.&lt;br /&gt;
&lt;br /&gt;
== path_lookat ==&lt;br /&gt;
&lt;br /&gt;
This does not stop the AI, but they will turn their head and look somewhere specific as they walk to their next target.  For the next &#039;&#039;wait&#039;&#039; seconds, turn head to look at the entity given by the &#039;&#039;focus&#039;&#039; spawnarg (defaults to looking at the path_lookat entity itself). This is useful if you want to make sure an AI is looking at a specific spot (or away from a certain spot) during their patrol.&lt;br /&gt;
&lt;br /&gt;
== path_waitfortrigger ==&lt;br /&gt;
&lt;br /&gt;
Waits at a given place until triggered, then proceeds to the next target.  This is useful if you want some control over exactly where the AI is when the players first see it.&lt;br /&gt;
&lt;br /&gt;
== path_hide ==&lt;br /&gt;
&lt;br /&gt;
Supposedly deactivates and stops rendering the AI.  &lt;br /&gt;
&lt;br /&gt;
Turns out this doesn&#039;t work well with TDM...makes AI invisible but they still talk and occupy space.  To remove an AI from the map, try grayman&#039;s approach:&lt;br /&gt;
&lt;br /&gt;
I wrapped the AI&#039;s final path corner in a trigger_once_entityname and gave the trigger the keyword pair &amp;quot;entityname &amp;lt;AI_name&amp;gt;&amp;quot;. (The docs don&#039;t tell you about this key, but the game will error out if it&#039;s not there, and tell you it&#039;s missing. A classic &amp;quot;trial by error&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
The trigger targets a func_remove, which has the key &amp;quot;target &amp;lt;AI_name&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
So when he reaches the last path_corner, the trigger recognizes him and tells the func_remove, which takes him out of the game.&lt;br /&gt;
&lt;br /&gt;
== path_show ==&lt;br /&gt;
&lt;br /&gt;
Starts rendering the AI.  I would assume this one would be linked to a path_waitfortrigger, to create AI that spawn when triggered.  This could be used to create the effect that an AI just came through a doorway or around a corner.&lt;br /&gt;
&lt;br /&gt;
== path_attack ==&lt;br /&gt;
&lt;br /&gt;
Used to script AI attacking a particular enemy, for scripted sequences I guess. AI will continue on to the next path entity if it kills the enemy.&lt;br /&gt;
&lt;br /&gt;
Questions:  How do you define who the AI attacks?&lt;br /&gt;
&lt;br /&gt;
[Fidcal]: Just found this - &amp;quot;Character will attack the character specified by &#039;enemy&#039; key. Character will go to next path when enemy dies or when activated.&amp;quot; Not tested.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Doors&amp;diff=11818</id>
		<title>Doors</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Doors&amp;diff=11818"/>
		<updated>2010-12-24T18:33:43Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* AI Door management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{todo}}&lt;br /&gt;
&#039;&#039;Written by Fidcal&#039;&#039; &#039;&#039;edit Baddcog&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Quick way to get an unlocked door in your map:&lt;br /&gt;
&lt;br /&gt;
* Insert one of the prefab doors complete with handles and select its skin property and click the button to change its skin appearance to whatever you want. Set any other properties you need.&lt;br /&gt;
&lt;br /&gt;
Alternatively,&lt;br /&gt;
&lt;br /&gt;
* Create a door from the entity list&lt;br /&gt;
* Use the &amp;quot;skin&amp;quot; spawnarg on the door to change its appearance. &lt;br /&gt;
* Create a handle from the entity list&lt;br /&gt;
* Add the &#039;&#039;door_handle&#039;&#039; property to the door and give it the name of the handle&lt;br /&gt;
* To the door handle add the value frob_peer and use the name of the door.&lt;br /&gt;
* To open clockwise, change the &#039;&#039;rotate&#039;&#039; property from &amp;lt;code&amp;gt;0 90 0&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0 -90 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This tutorial explains how to put doors into your map using Dark Radiant, as well as adjust them and their properties.&lt;br /&gt;
&lt;br /&gt;
The rest of this tutorial assumes that you have a basic understanding of using DarkRadiant. If you haven&#039;t done so, please go read the [[Dark Radiant Must Know Basic Intro]] article first.&lt;br /&gt;
&lt;br /&gt;
Additionally:&lt;br /&gt;
&lt;br /&gt;
* Up, down, left, and right in Dark Radiant&#039;s &#039;&#039;top&#039;&#039; orthoview are regarded here as the standard map directions of North, South, East, and West where useful for clarity.&lt;br /&gt;
* Where the term &#039;&#039;brush&#039;&#039; is used with a door it mostly also applies to a door made up of a group of brushes and/or patches.&lt;br /&gt;
* Where the term &#039;&#039;door&#039;&#039; is used it often will also apply to any object you wish to rotate when frobbed, for instance an openable window, box lid, or even more exotic objects that the imaginative mapper might conceive like a signal, engine part, toy, or whatever. So long as it needs to turn or slide just a fixed amount when frobbed then return when frobbed again then the following applies.&lt;br /&gt;
&lt;br /&gt;
==Door types==&lt;br /&gt;
&lt;br /&gt;
All tangible objects in Dark Mod are &#039;&#039;entities&#039;&#039;, having either a pre-made model shape or else brush/patch(es). So there are two ways to create a door in Dark Radiant: as a model door or a textured brush door (or a hybrid of the two).&lt;br /&gt;
&lt;br /&gt;
Models are ready made door objects but cannot within Dark Radiant (at the time of writing) be resized, rescaled, cropped or clipped whereas brushes are very flexible in that respect and can be worked into custom shapes for your map, including secret doors that blend into walls and other surfaces.&lt;br /&gt;
&lt;br /&gt;
Most of the current door models are found in two places along with the door handles.&lt;br /&gt;
*Model Viewer: doors created from here will be static in the world and have no props other than material type.&lt;br /&gt;
You can add any props to them to make them working doors. If nothing else it is a good place to view the different size and skin options for the doors.&lt;br /&gt;
*Entity List: most of the door models can be found here. These doors have properties already assigned so they are ready to be used. Only one base door of each type is listed, create the size/hinge count door you want (2 hinge doors have a &#039;no hinge&#039; skin). You can choose a skin for the door once it has been created in the editor with the &amp;quot;skin&amp;quot; spawnarg (use the model name of the door you want, taken from the model list, as its value). This is the easiest way to create a door. The same goes for door handles.&lt;br /&gt;
&lt;br /&gt;
Remember also that door functions may be applied to objects other than doors for instance to openable windows, drawbridges, gates, in fact anything that needs a partial rotation or slide when frobbed then return when frobbed again such as a signal device. Lockboxes and chests use similar properties.&lt;br /&gt;
&lt;br /&gt;
Door/handle prefabs seem to crash Doom3 when trying to reload a map so far now just create and link each door/handle. You can create one set and copy/paste them, but you need to take great care that all the name props are changed to match each clone. Otherwise you get handles that fly off with a distant door and handles that don&#039;t move.&lt;br /&gt;
&lt;br /&gt;
==Creating a Door==&lt;br /&gt;
&lt;br /&gt;
Put simply, to make a door you will be creating an &#039;entity with model&#039; or &#039;entity with brush&#039; or some variation thereof.&lt;br /&gt;
&lt;br /&gt;
===Creating a Model Door===&lt;br /&gt;
&lt;br /&gt;
There are several approaches to making a model door; the simplest is to create a door from the entity list; or create a door from the model viewer (good for static unusable prop doors).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Entity List&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
*Deselect everything in editor by hitting the Esc button&lt;br /&gt;
*Right-click an ortho view and select Create Entity&lt;br /&gt;
*Navigate to darkmod/movers/&#039;&#039;atdm:door_...&#039;&#039;, choose the door you want&lt;br /&gt;
*Click Add&lt;br /&gt;
*To change its appearance, add a &amp;quot;skin&amp;quot; spawnarg to the door, with the value being the model name of the door you want.&lt;br /&gt;
&lt;br /&gt;
You now have a workable door in your level.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Model Viewer&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Right click in the orthoview, select &#039;&#039;Create Model&#039;&#039; then &amp;lt;code&amp;gt;darkmod&amp;lt;/code&amp;gt; and select a door.&lt;br /&gt;
* Note that you can left drag the image in the &#039;&#039;Choose Model&#039;&#039; dialog to rotate it around.&lt;br /&gt;
* Click [[Image:Button ok.png]] and you have a static door.&lt;br /&gt;
* If you want to make it work (openable, frobbable) then:&lt;br /&gt;
** Select the entity inspector,&lt;br /&gt;
** Select the top classname line so it highlights&lt;br /&gt;
** Select the func_static line in the input box &#039;&#039;below&#039;&#039; the properties window.&lt;br /&gt;
** Edit &amp;lt;code&amp;gt;func_static&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt;&lt;br /&gt;
** Click {{check}} or press {{key-enter}}&lt;br /&gt;
&lt;br /&gt;
Alternatively you can do it the old way:&lt;br /&gt;
&lt;br /&gt;
* Create any temporary brush&lt;br /&gt;
* Right click in orthoview and select &amp;lt;code&amp;gt;Create Entity&amp;lt;/code&amp;gt; then &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Left lick the model name line in the entity inspector.&lt;br /&gt;
* Below it on the &#039;&#039;Entity Inspector&#039;&#039; panel you should now see a button &#039;Choose Model&#039;&lt;br /&gt;
* Left click it, select a door model from the darkmod group.&lt;br /&gt;
* Note that you can left drag the image in the &#039;&#039;Choose Model&#039;&#039; dialog to rotate it around.&lt;br /&gt;
* The temporary brush was deleted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In all three instances, you now have a working door with default properties. &lt;br /&gt;
&lt;br /&gt;
Name your door by adding the prop (or modifing it) to name &#039;&#039;My_Door_1&#039;&#039;. You can use any name that you feel is appropriate but all doors with handles attached &#039;&#039;must&#039;&#039; have their own specific name. Use the name My_Door_1 for your first attempt as it will be referenced when you get around to attaching handles (see below).&lt;br /&gt;
&lt;br /&gt;
To add a handle and other adjustments, see [[#Customising and Adjusting Door Properties]] below.&lt;br /&gt;
&lt;br /&gt;
===Creating a Textured Brush Door===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tip:&#039;&#039;&#039; If unsure of size then you might insert a temporary human AI first to get a sense of height.&lt;br /&gt;
&lt;br /&gt;
==== The simplest brush door: ====&lt;br /&gt;
&lt;br /&gt;
* Drag out a new brush to the size required, eg, a seven foot high door is 84&amp;quot; x 1.1 = about 90 units in Dark Radiant.&lt;br /&gt;
* Give it a door texture from the texture browser (or wall texture for a secret door)&lt;br /&gt;
* Right click in orthoview and select &#039;&#039;Create Entity&#039;&#039; then &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt;&lt;br /&gt;
* You now have a default door that rotates around its center.&lt;br /&gt;
&lt;br /&gt;
To move the rotation point to the door edge and other adjustments, see [[#Customising and Adjusting Door Properties]] below.&lt;br /&gt;
&lt;br /&gt;
==== Multi-brush doors: ====&lt;br /&gt;
&lt;br /&gt;
More complex multi-brush doors can be created using the [[Clipper]] tool, CSG, etc. - this is not covered in this tutorial. Then assign &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; for that whole brush structure. Also you can collect various brushes positioned together in relation to one another as needed, select them all, then assign &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; for the group. All the brushes will be children of the &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; entity and will rotate and be frobbable, etc. as one unit, as one door. To add further brushes or even model shapes later see the section on [[#Adding handles and other items to doors]].&lt;br /&gt;
&lt;br /&gt;
Name your door by adding the prop (or modifing it) to name My_Door_1. You can use any name that you feel is appropriate but all doors with handles attached must have their own specific name. Use the name My_Door_1 for your first attempt as it will be referenced when you get around to attaching handles (see below). (repeated from above in case you didn&#039;t choose to create a model door)&lt;br /&gt;
&lt;br /&gt;
=== Double Doors ===&lt;br /&gt;
Double doors are automatically recognised by the code when the doors are spawned. The prerequisite is that both doors are sharing/touching the same visportal. The spawnarg &#039;&#039;auto_setup_double_door&#039;&#039; (which defaults to &amp;quot;1&amp;quot;) will take care of setting up the open/lock peer relationship between the two doors. The doors will open/close and lock/unlock along with each other as a result.&lt;br /&gt;
&lt;br /&gt;
What happens behind the scenes: the doors are adding each other to their internal open_peer and lock_peer list, which causes the double doors to perform the same action when frobbed or used.&lt;br /&gt;
&lt;br /&gt;
Note that &#039;&#039;auto_setup_double_door&#039;&#039; will not set the frob_peer relationship, i.e. each door will frob-highlight on its own without highlighting the other door. You&#039;ll need to add that spawnarg manually if you want to highlight the entire double door as one.&lt;br /&gt;
&lt;br /&gt;
==Customising and Adjusting Door Properties==&lt;br /&gt;
&lt;br /&gt;
Handles, lockplates, etc. can be added to doors and door properties can be adjusted for rotation, sliding, locking, and more.&lt;br /&gt;
&lt;br /&gt;
Some of the door models have hinge plates and lockboxes that are reskinnable with a good variety of skins.&lt;br /&gt;
&lt;br /&gt;
===Door handles and other door attachments===&lt;br /&gt;
&lt;br /&gt;
 Summary: just add the property &#039;&#039;bind&#039;&#039; with the door&#039;s name to the attachment and position it where you want it on the door. If it&#039;s a &#039;&#039;atdm:mover_door_handle&#039;&#039; then it automatically will work as a handle but you can bind virtually anything.&lt;br /&gt;
You can add handles and other items to doors such that they move correctly with the door whether rotating, sliding, or both and even if the door is not vertical such as a skylight or trapdoor.&lt;br /&gt;
Handle models come in two types, &#039;&#039;single handles&#039;&#039; and &#039;&#039;double handles&#039;&#039;. A single handle is one sided, this means the handle will be inside the door or outside the door, but not both. A double handle has a lever on the inside of the door and a handle on the outside of the door. Each has benefits.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Single door handles&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
Single door handles can be used on a static door, a door that&#039;s just for show that no AI&#039;s or the player can use. In this case you should just create a door handle from the model viewer, it will be static and have no properties such as scripts. It is for looks only.&lt;br /&gt;
&lt;br /&gt;
Single handles can also be used inside AND outside of the same door to save on rendering. Unlike the double handles the handle on the inside of a portal won&#039;t render. The curved handle is only about 130 polys per side, but if you have a large area and 10 handles you can save 1,000 polys from being rendered. Everything counts when it comes to performance.&lt;br /&gt;
I will call this &#039;&#039;multiple handles&#039;&#039;, see more below.&lt;br /&gt;
&lt;br /&gt;
These can also be useful on brush doors created in the editor that may be very thin or very wide.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Double door handles&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
These are models have have a handle inside and outside. The bonus is that they only use one entity. Maps are limited to about 4,000 entities but when you count lights, AI, sound speakers, ect... you can run out of entities quickly on a large map. If you plan on building a large map this is the way to go, even in a small map they have benefits, namely that you only have to attach one handle per door.&lt;br /&gt;
&lt;br /&gt;
Whether you decide to use a single handle or a double handle you must first follow the instructions below and attach one handle first. If you choose a double handle, follow the instructions below and you are done. If you choose a single handle type follow the instructions then also follow the &#039;&#039;multiple handle&#039;&#039; instructions for the second handle.&lt;br /&gt;
&lt;br /&gt;
Both single and double handle types can be found in two places. The model viewer which will create a static model good for show, you can manually add props to make them work OR you can look in the entity browser.&lt;br /&gt;
Using a handle from the entity browser saves you a little bit of time as some props are already added, you just need to add the frob_peer names for the doors/handles and the door_handle name to the door.&lt;br /&gt;
&lt;br /&gt;
=== Adding a working model door handle===&lt;br /&gt;
&lt;br /&gt;
Quick summary:&lt;br /&gt;
* Create a model or brush handle and make it an &#039;&#039;atdm:mover_door_handle&#039;&#039; entity.&lt;br /&gt;
* Position it on your door.  Use the opposite side from the door&#039;s multicolor X-Y-Z indicator (highlight the door to see it) if it&#039;s not obvious which side it goes on.  &lt;br /&gt;
* &#039;&#039;&#039;Bind&#039;&#039;&#039; the handle to the door (bind &amp;lt;doorname&amp;gt;)&lt;br /&gt;
* It should now be a working handle though may need adjustments of rotation etc. see later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Important: read preceding section on door handle types and performance issues first.&lt;br /&gt;
&lt;br /&gt;
This works with both a model door and a brush door:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rotation&#039;&#039;&#039;:&lt;br /&gt;
* By default the door handle entity rotates &#039;&#039;anti-clockwise&#039;&#039; (looked at from the front) then springs back. A &#039;&#039;double handle&#039;&#039; model is OK but two singles (see &#039;&#039;Multiple door handles&#039;&#039; below) need more care as only one is the functioning entity and the other is just attached to it. So anti-clockwise is fine for a door with its hinge on the left and the handle on the right - the handle will rotate down then spring back. If you put the functioning door handle on the other side you will have to change the default &#039;&#039;rotate&#039;&#039; property from -45 0 0 to 45 0 0. &#039;&#039;&#039;&#039;&#039;Therefore it is easier to generally put this handle on the side of the door where the hinge is on the left and the non-functioning attachment handle on the other side.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
*If your door only needs one handle, eg, a cupboard door, and from outside its hinge is on the right then you will need to change the &#039;&#039;rotate&#039;&#039; property of the handle as described above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;The functioning handle entity:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* Create an entity door handle (movers folder) or create a brush or model handle and assign it the entity &#039;&#039;atdm:mover_door_handle&#039;&#039;.&lt;br /&gt;
* Position it where you wish on your door.&lt;br /&gt;
* &#039;&#039;&#039;Bind&#039;&#039;&#039; the handle to the door, by adding the &amp;quot;bind&amp;quot; spawnarg to the handle.&lt;br /&gt;
&lt;br /&gt;
You now have a working door handle with default properties.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Multiple door handles&#039;&#039;&#039;:&lt;br /&gt;
Now that you&#039;ve got a handle attached to one side of the door it is time to add one to the other side (unless you used a double handle).&lt;br /&gt;
* Create the new handle. The single handles come in left and right persuasions. A door needs a left facing handle on one side and a right facing handle on the other, so if you have already added the left handle create a right handle and line it up on the other side of the door.&lt;br /&gt;
* Name this handle. I prefer to keep a naming convention for each door and it&#039;s respective handles, it makes things alot easier. The door is named &#039;&#039;&#039;My_Door_1&#039;&#039;&#039;, the first handle is named &#039;&#039;&#039;My_Handle_1&#039;&#039;&#039; so name the second handle &#039;&#039;&#039;My_Handle_1_1&#039;&#039;&#039;. This will make it stay with the first handle in the entity list. This is important to keep organized. If you name it My_Handle_2 then when you get to another door named My_Door_2 you&#039;ll be confused.&lt;br /&gt;
* Place and &#039;&#039;&#039;bind&#039;&#039;&#039; that handle to your door.&lt;br /&gt;
&lt;br /&gt;
You now have two single door handles on either side of the door that rotate together as if they were physically attached.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To add a brush to a brush door&#039;&#039;&#039;:&lt;br /&gt;
* Select the new brush &#039;&#039;and&#039;&#039; the brush door all together; &#039;&#039;the entity &#039;&#039;&#039;must&#039;&#039;&#039; be selected &#039;&#039;&#039;last&#039;&#039;&#039;.&#039;&#039;&lt;br /&gt;
* Use {{menu|Edit|Reparent primitives}}. This ensures the parent entity adopts the new item(s).&lt;br /&gt;
* If you have trouble selecting them in the orthoview because other brushes, etc. get selected then try in the camera view or as a last resort move them temporarily to an open area (but keep them in the same positions relative to each other.) Use {{key-shift}}+{{LMB}} on new item(s) then {{key-shift}}+{{LMB}} on main entity. Once they are all selected, use the {{menu|Edit|Reparent primitives}}.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To add &#039;&#039;model&#039;&#039; static items&#039;&#039;&#039;: knockers, hinges, static handles etc. to a &#039;&#039;Model Door&#039;&#039;:&lt;br /&gt;
* Select item&lt;br /&gt;
* Right click in orthoview and select &#039;&#039;Create Entity&#039;&#039; then &amp;lt;code&amp;gt;entity func_static&amp;lt;/code&amp;gt;&lt;br /&gt;
* Position it where you wish on your door.&lt;br /&gt;
* To synchronize this with your particular door you need to add the property &#039;&#039;bind&#039;&#039; and the individual door name to the brush entity. To do this...&lt;br /&gt;
** Select the model door.&lt;br /&gt;
** In the entity inspector, select the &#039;&#039;name&#039;&#039; line&lt;br /&gt;
** Select the bottom line in the input box &#039;&#039;below&#039;&#039; the properties window.&lt;br /&gt;
** Copy the name&lt;br /&gt;
** Deselect the door with {{key-esc}}&lt;br /&gt;
** Select the brush entity&lt;br /&gt;
** Add a property &amp;quot;bind&amp;quot; to it.&lt;br /&gt;
** Change the value of the property by pasting in the door name&lt;br /&gt;
** Click {{check}} or press {{key-enter}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To add &#039;&#039;brush&#039;&#039; static items&#039;&#039;&#039;: knockers, hinges, static handles to a Model Door:&lt;br /&gt;
* This method is not ideal but it seems to work OK.&lt;br /&gt;
* Select the brush.&lt;br /&gt;
* Right click in orthoview and select Create Entity then &#039;&#039;atdm:mover_door_handle&#039;&#039;&lt;br /&gt;
* Position it where you wish on your door.&lt;br /&gt;
&lt;br /&gt;
To synchronize this with your particular door you need to add the property &#039;&#039;door_handle&#039;&#039; on the door, and give as the value the name of the brush you just created.&lt;br /&gt;
&lt;br /&gt;
This brush turns like a handle. To stop it:&lt;br /&gt;
&lt;br /&gt;
* Adding &#039;&#039;rotate 0 0 0&#039;&#039; or disabling the handle script won&#039;t help.&lt;br /&gt;
* Add a real working handle (as in the section above &#039;&#039;To add a working model door handle...&#039;&#039; and it must be added LAST.)&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want too see a real working handle added maybe try another tiny brush with the handle function and hide it inside the door?&lt;br /&gt;
&lt;br /&gt;
===Locking Doors===&lt;br /&gt;
&lt;br /&gt;
To lock a door check the &#039;&#039;show inherited properties&#039;&#039; in the entity inspector for a &#039;&#039;atdm:mover_door&#039;&#039; entity and you should see the &#039;&#039;locked&#039;&#039; property. Select it and in the input box below the properties you can change its value:&lt;br /&gt;
&lt;br /&gt;
* 0 = unlocked (default)&lt;br /&gt;
* 1 = locked&lt;br /&gt;
&lt;br /&gt;
If locked it will require an entity that is associated with it to be able to act as a key to unlock it.&lt;br /&gt;
&lt;br /&gt;
Currently door handles on locked doors will rotate when frobbed, they will bounce back though and the door will stay locked until unlocked.&lt;br /&gt;
&lt;br /&gt;
===Keys===&lt;br /&gt;
&lt;br /&gt;
Assigning specific keys to specific doors is simple.&lt;br /&gt;
&lt;br /&gt;
* It is recommended that you create an existing key entity. These keys have all required props, they just need to be named.&lt;br /&gt;
&lt;br /&gt;
Alternatively you can create a key from the Model Viewer and want it to be useable&lt;br /&gt;
* Make sure it has the properties:&lt;br /&gt;
 useable 1 [so it can be used by the door]&lt;br /&gt;
 frobable 1&lt;br /&gt;
 inv_name &amp;lt;unique name&amp;gt;&lt;br /&gt;
 inv_category Keys&lt;br /&gt;
 inv_target player1&lt;br /&gt;
 inv_icon guis/assets/hud/inventory_icons/&amp;lt;icon name&amp;gt;&lt;br /&gt;
 inv_stackable 0 or 1 where 1 can be used on all copies of the same key so they show as one entry in the inventory with a total.&lt;br /&gt;
&lt;br /&gt;
Add to the door the property &amp;lt;code&amp;gt;used_by&amp;lt;/code&amp;gt; with the name of the key as the value. Multiple keys can open the same door by using several &amp;lt;tt&amp;gt;used_by&amp;lt;/tt&amp;gt; spawnargs:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;used_by&amp;quot;  &amp;quot;doorkey_1&amp;quot;&lt;br /&gt;
 &amp;quot;used_by1&amp;quot; &amp;quot;doorkey_2&lt;br /&gt;
&lt;br /&gt;
==== Keys carried by AI ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So you have a door and you have a guard Ai and you want the guard to be able to open/close/lock the door but you also want the player to be able to pickpocket the key. For more info on attaching key, props etc - see [[Attaching Props to AI]].&lt;br /&gt;
&lt;br /&gt;
*&amp;quot;def_attach6&amp;quot; &amp;quot;atdm:prop_silverkey&amp;quot; //the entity to spawn - in this case a key.&lt;br /&gt;
*&amp;quot;pos_attach6&amp;quot; &amp;quot;belt_back_right&amp;quot; //where the key will spawn on the Ai.&lt;br /&gt;
*&amp;quot;name_attach6&amp;quot; &amp;quot;door_key&amp;quot; //this gives &#039;attach6&#039; arg the name &amp;quot;door_key&amp;quot; and is the name the arg &amp;quot;used_by&amp;quot; will need, eg: &amp;quot;used_by&amp;quot; &amp;quot;door_key&amp;quot;&lt;br /&gt;
*&amp;quot;set inv_name on door_key&amp;quot; &amp;quot;Door key&amp;quot; //The name the key get when the play adds it to their inventory.&lt;br /&gt;
*&amp;quot;set name on door_key&amp;quot; &amp;quot;door_key&amp;quot; //here it gets a name to be used in the map in general.&lt;br /&gt;
&lt;br /&gt;
updated by bikerdude.&lt;br /&gt;
&lt;br /&gt;
====Master Key for Testing====&lt;br /&gt;
&lt;br /&gt;
By default, ALL locks can be opened by any key named &#039;&#039;key_master&#039;&#039;. Just create a key in your map, name it &#039;&#039;key_master&#039;&#039; and it becomes a master key for use while testing. Add inv_map_start 1 to it so it is in the player inventory at game start. Remember to delete it when your mission is finished.&lt;br /&gt;
&lt;br /&gt;
===Lockpicks===&lt;br /&gt;
&#039;&#039;by Baddcog&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are two lock pick types.&lt;br /&gt;
*&#039;&#039;&#039;s&#039;&#039;&#039;=snake&lt;br /&gt;
*&#039;&#039;&#039;t&#039;&#039;&#039;=triangular&lt;br /&gt;
&lt;br /&gt;
A lock can be set with many pins. Each pin has a click sequence and each needs a designated lockpick type (see above). Keep in mind that the lockpicking in The Darkmod is much more involved than in T2 or T3. The player has to listen to sounds or watch a handle or lockbar to know when a lock is pin is picked.&lt;br /&gt;
&lt;br /&gt;
This means that authors can be very evil and really frustrate the player, in which case their missions will probably not be played. So be nice to the player and don&#039;t waste your time. Use simple locks for the most part and save complicated locks for important sections and to build tension. Don&#039;t make the player have 20 pins to pick all with different lockpicks. In most cases 1 or 2 pins will suffice and it isn&#039;t necessary to use both lockpicks on every lock.&lt;br /&gt;
Also try to include a lock lever on lockboxes or chests, door handles will rotate as the pins are being picked. This gives the player visual clues to help with the picking (and essential in noisy environments where you can&#039;t hear the clicks.)&lt;br /&gt;
IMO this system is a huge leap foward for lockpicking but also has the ability to completely frustrate the player as stated above. Keep this in mind when designing your lockpick systems.&lt;br /&gt;
&lt;br /&gt;
These props go on the door itself, or the lid of a chest, eg,&lt;br /&gt;
*&#039;&#039;&#039;lock_pins&#039;&#039;&#039; 1327&lt;br /&gt;
*&#039;&#039;&#039;lock_picktype&#039;&#039;&#039; stts&lt;br /&gt;
&lt;br /&gt;
The lock_pins property specifies how many pins each lockpicktype has.&lt;br /&gt;
The lockpick_type property specifies how many times the player has to switch picks and which pick they have to use. You can see there must always be an equal number of lock_pins and lock_picktypes specified&lt;br /&gt;
&lt;br /&gt;
So looking at the example above we have lockpick_type s(snake), t(triangular), t(triangular), and s(snake). The player will have to use these lockpicks in this order. Once the snake lockpick&#039;s pins are open the player can advance to the triangular pick and so forth.&lt;br /&gt;
5 is added to every click sequence so 5 is the minimum click pattern even if you set it to 0.&lt;br /&gt;
In the example above the lockpins specify in order which pick types have how many pins, so the s pick has 1 + 5 = 6 clicks, the t pick has 8 and so on.&lt;br /&gt;
The above is a difficult lock and to avoid annoying the player it is best only used rarely on a special lock like an important big vault door. Ordinary footlockers and common doors can be just 1 or 2 click sequences, eg, lock_pins 2 and lock_picktype t means the player uses one pick and listens for the end of one sequence of 7 clicks.&lt;br /&gt;
&lt;br /&gt;
lockpick_rotate - is placed on the door. It is the amount the visible rotating handle or pin rotates while picking. For a rotating handle or lockbar normally ignore this and leave the default. During lockpicking it oscillates and progresses to the normal full turn of the handle. Example 0 45 0.&lt;br /&gt;
&lt;br /&gt;
lockpick_translate - is placed on the door. It is the amount the visible handle or pin moves in a straight line while picking. Use this if you have eg, a lockbar that you want to move in a straight line and not rotate, eg sliding catch. Example 0 -5 0&lt;br /&gt;
&lt;br /&gt;
By default, doors are pickable. If you don&#039;t set up the above lockpick spawnargs then it can&#039;t be picked. So there is normally no need to enable lockpicking - just set up the above spawnargs. There is a &#039;&#039;pickable&#039;&#039; spawnarg set to 1 by default. If set to 0 then the door becomes unpickable. But hard to think of an application except in testing or perhaps a special custom situation where it is switched by script perhaps.&lt;br /&gt;
&lt;br /&gt;
===Open, Partially Open, or Closed Door at Game Start===&lt;br /&gt;
&lt;br /&gt;
By default, doors are closed at game start. If you want a door to be already open or partially open then do the following.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note well: Create all doors in their &#039;&#039;closed&#039;&#039; position. Adjust as follows and they will automatically be at the open position when game starts.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Already Open Rotating Door:&lt;br /&gt;
* Select the door.&lt;br /&gt;
* Select the entity inspector&lt;br /&gt;
* Check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Select the &#039;&#039;open&#039;&#039; property&lt;br /&gt;
* Edit the value to 1 in the input box below and tick the check button&lt;br /&gt;
* The door will now be fully open at game start.&lt;br /&gt;
&lt;br /&gt;
* If you want it only partly open:&lt;br /&gt;
* Make sure its &#039;&#039;open&#039;&#039; property is set to 1 as above.&lt;br /&gt;
* Right click the entity inspector and select &#039;&#039;add property&#039;&#039; &lt;br /&gt;
* Click the + sign on the left of the top line where atdm:mover_door is listed to open the folder. (if atdm:mover_door is not listed then the entity was likely changed from eg, func_static. If so, save the map and reload to update the add property list)&lt;br /&gt;
*  scroll down, select &#039;&#039;start_rotate&#039;&#039; then click {{ok}}&lt;br /&gt;
* This adds it to the property list.&lt;br /&gt;
* Now select &#039;&#039;start_rotate&#039;&#039; in the property list.&lt;br /&gt;
* Edit the bottom line of the input box &#039;&#039;below&#039;&#039; the properties window to the angle you want in the same form as described in the &#039;&#039;Rotate Direction and Open Angle&#039;&#039; section. So for example, to have a door that has a fully open default &#039;&#039;rotate&#039;&#039; value of 0 90 0 to start only half open you would give it a &#039;&#039;start_rotate&#039;&#039; value of 0 45 0. &lt;br /&gt;
* In a similar way add the property &#039;&#039;first_frob_open&amp;quot;.&lt;br /&gt;
* Set it to 1 and a partly open door should then open fully on the first frob.&lt;br /&gt;
* Set it to 0 and a partly open door should close on the first frob.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Already Open Sliding Door:&lt;br /&gt;
* Select the door.&lt;br /&gt;
* Select the entity inspector&lt;br /&gt;
* Check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Select the &#039;&#039;open&#039;&#039; property&lt;br /&gt;
* Edit the value to 1 in the input box below and click {{check}} or press {{key-enter}}&lt;br /&gt;
* The door will now be fully open at game start.&lt;br /&gt;
&lt;br /&gt;
* If you want it only partly open:&lt;br /&gt;
* Right click the entity inspector and select &#039;&#039;add property&#039;&#039; &lt;br /&gt;
* Make sure its &#039;&#039;open&#039;&#039; property is set to 1&lt;br /&gt;
* Click the + sign on the left of the top line where atdm:mover_door is listed to open the folder.&lt;br /&gt;
*  scroll down, select &#039;&#039;start_position&#039;&#039; then click OK. (if atdm:mover_door is not listed then the entity was likely changed from eg, func_static. If so, save the map and reload to update the add property list)&lt;br /&gt;
* This adds it to the property list.&lt;br /&gt;
* Now select &#039;&#039;start_position&#039;&#039; in the property list.&lt;br /&gt;
* Edit the bottom line of the input box &#039;&#039;below&#039;&#039; the properties window to the position you want in the same form as described in the &#039;&#039;Sliding (Translation) Amount and Direction&#039;&#039; section. So for example, to have a door that has a fully open default &#039;&#039;translate&#039;&#039; value of 0 50 0 to start only half open you would give it a &#039;&#039;start_position&#039;&#039; value of 0 25 0.&lt;br /&gt;
* In a similar way add the property &#039;&#039;first_frob_open&amp;quot;.&lt;br /&gt;
* Set it to 1 and a partly open door should then open fully on the first frob.&lt;br /&gt;
* Set it to 0 and a partly open door should close on the first frob.&lt;br /&gt;
&lt;br /&gt;
===Rotation Centre, Pivot, Hinge point===&lt;br /&gt;
&lt;br /&gt;
The centre of rotation of a door is at the origin point of its entity and the door rotates with reference to the orientation of that origin point, not the world map. See &#039;&#039;Rotate Direction...&#039;&#039; for more about that. This section only deals with the &#039;&#039;position&#039;&#039; of the rotation centre in the door.&lt;br /&gt;
&lt;br /&gt;
Model Door Centre of Rotation:&amp;lt;br&amp;gt;&lt;br /&gt;
The centre of rotation of a model door cannot be changed within Dark Radiant. Because a model door rotates around the centre &#039;spine&#039; of its back edge this will cause clipping (penetration into solid) as in this example (where the door is set to open to 89 degrees for clarity):&amp;lt;BR&amp;gt;[[Image:modelClipping.jpg]]&amp;lt;BR&amp;gt; So care is needed with placement. You will not normally position a door right next to a wall as in the example but against a shallow frame so clipping will barely be noticeable but either way it can be fixed. You can correct it by adding a translation (see &#039;&#039;Sliding (Translation) Directions&#039;&#039;) value of half the door width in the direction of the door handle. This will gently move the door out as it rotates to clear any solid on that side as in this diagram:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:DoorClip.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
Half a door width will typically be about 2. Any &#039;attachments&#039; such as door handles will still synchronize with the door movement whether the door is rotating, sliding, or both.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Brush Door Centre of Rotation:&amp;lt;br&amp;gt;&lt;br /&gt;
The centre of rotation of a brush door &#039;&#039;can&#039;&#039; be changed. The default origin point of a brush is at its centre. Therefore a default rotating brush door will rotate around its centre when you first create it. So, mappers will commonly need to move that rotation point to a corner or even to some other offset position for example, for an openable window using the door function.&lt;br /&gt;
&lt;br /&gt;
Put simply, to move the rotation point of a brush door you need to move the entity origin relative to the brush(es.)&lt;br /&gt;
&lt;br /&gt;
Moving the entity origin (centre of rotation) relative to a brush door:&lt;br /&gt;
&lt;br /&gt;
* Select the brush door&lt;br /&gt;
* Select &#039;&#039;Vertices mode&#039;&#039; (default shortcut key is {{key|name=V}} or button on top toolbar &#039;Select Vertices&#039;)&lt;br /&gt;
* Drag the door&#039;s entity origin to the point where you want the door to rotate. This should be on the corner on the leading edge side (the side to where the door is opening.) to avoid clipping as in this diagram....&lt;br /&gt;
[[Image:getCorner.jpg]]&lt;br /&gt;
* You should now find that door rotates around that point.&lt;br /&gt;
&lt;br /&gt;
===Rotate Direction and Open Angle===&lt;br /&gt;
&lt;br /&gt;
By default, rotating doors open anti-clockwise (viewed from above) by 90 degrees from the start orientation. If you want to change this edit the &#039;&#039;rotate&#039;&#039; property in the entity inspector. Don&#039;t confuse this &#039;&#039;rotate&#039;&#039; property with the &#039;&#039;rotation&#039;&#039; property. In the entity inspector remember that to see the inherited rotate property you must check the box &#039;Show inherited properties&#039;.&lt;br /&gt;
&lt;br /&gt;
The three values shown in the rotate property are degrees from the closed position around Y Z X &#039;&#039;entity origin axes&#039;&#039; (NOT absolute map axes) and so include any start &#039;&#039;rotation&#039;&#039;. So the Z value is the axis vertical to the entity origin. If you tilt a model door over in Dark Radiant then its entity origin tilts too so the Z axis is tilted too (with respect to the world map vertical.) So with a normally opening model door if you lay it flat on its back it will open upwards and not rotate around on the floor. But a brush door must be treated differently...&lt;br /&gt;
&lt;br /&gt;
If you turn a brush door using the normal Dark Radiant rotate tool or the Transform Dialog (accessed via a shortcut key) then it only turns the brush &#039;&#039;relative&#039;&#039; to the entity. So, because the entity origin is by default aligned with the world map then &#039;&#039;in most cases&#039;&#039; you can regard a brush door as rotating with respect to the world map if you wish. But there will be a problem when you come to rotations that are not around the main Y Z X axes of the map, for instance a drawbridge that lowers down to the south east. You might think you can combine Y Z X values to get the result you want - and this can be done (for south east use 45 45 90) but it is a bit of a kludge and the drawbridge twists eccentrically as it lowers (though it arrives correctly!) So for such cases you need to turn the entity itself so its start position is facing south east. You can then just use 0 0 90 to lower the drawbridge perfectly because its Y axis is now pointing south east. To turn the entity you must type or paste the rotation values in directly because using the Dark Radiant rotation tool or Transform Dialog will only turn the brush not the entity. The values are rather lengthy (south east is 0.707107 0.707107 0 -0.707107 0.707107 0 0 0 1) so probably the easiest way is to create a temporary model door, turn it how you want, then select its rotation property. If you now deselect and re-select your brush door then that property will still be in the entity inspector input box and you need only click the check(tick) box to add it to the brush door. NOTE: &#039;&#039;neither the entity nor the brush will show as turned in Dark Radiant.&#039;&#039; Only the rotation property in the entity inspector will indicate the orientation. Instead of a rotated &#039;&#039;construction&#039;&#039;, regard it as a rotation &#039;&#039;instruction&#039;&#039; for when the map is compiled.&lt;br /&gt;
&lt;br /&gt;
These are the rotate property fields. Remember they are all with reference to the door&#039;s entity &#039;&#039;not&#039;&#039; the world map. Since there is no absolute frame of reference I indicate them here as if the entity is aligned with the world map axes...&lt;br /&gt;
&lt;br /&gt;
* Positive Y = Open clockwise (Dark Radiant grid front view, looking north)&lt;br /&gt;
* Negative Y = Open anti-clockwise (Dark Radiant grid front view, looking north)&lt;br /&gt;
&lt;br /&gt;
* Positive Z = Open anti-clockwise (Dark Radiant grid top view, looking down)&lt;br /&gt;
* Negative Z = Open clockwise (Dark Radiant grid top view, looking down)&lt;br /&gt;
&lt;br /&gt;
* Positive X = Open anti-clockwise (Dark Radiant grid side view, looking west)&lt;br /&gt;
* Negative X = Open clockwise (Dark Radiant grid side view, looking west)&lt;br /&gt;
&lt;br /&gt;
The values are in the range -179 to +180. Positive values give an anti-clockwise opening rotation (looking down from above) and negative values give a clockwise opening rotation. The value 180 is unique in that it continues in an anti-clockwise rotation when closing rather than returning clockwise so might be used if you can think of some object that might need such a motion when frobbed!&lt;br /&gt;
&lt;br /&gt;
Edit the rotate value by selecting it and using the input box at the bottom and clicking the check(tick) button. That will change the angle the door will open to. Note that the line with the original default of 0 90 0 will still be there but your new entry will be added on a separate line and that is the one that will work in the game. CAUTION: when adjusting later make sure you have your new line selected and not the original! If you do it will appear to change but your first setting will remain unaltered.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
* 0 90 0 = Opens anti-clockwise round the entity&#039;s &#039;vertical&#039; to 90 degrees - typical default vertical door.&lt;br /&gt;
* 0 0 90 = Lowers a drawbridge from the entity &#039;vertical&#039; to horizontal.&lt;br /&gt;
* 0 0 -45 = Opens clockwise by 45 degrees viewed from the east side. This might suit a skylight in a sloping roof.&lt;br /&gt;
&lt;br /&gt;
Combinations can be used and also combined with slide motions (see &#039;&#039;&#039;Sliding (Translation) Directions&#039;&#039;&#039;) to produce exotic and useful motions. A door opening against an upward-sloping floor can thus have a &#039;&#039;lifting hinge&#039;&#039; and raise up slightly to clear the floor; a door can rotate towards you and slide back to one side very effectively.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sliding (Translation) Amount and Direction===&lt;br /&gt;
&lt;br /&gt;
By default a Dark Mod door will rotate open. For most sliding doors you want to stop them rotating as well as make them slide. You cannot delete (remove) the &#039;&#039;rotate&#039;&#039; property - you have to set the &#039;&#039;rotate&#039;&#039; property to 0 0 0 to stop a door rotating (see &#039;&#039;Rotate Direction and Open Angle&#039;&#039;.)&lt;br /&gt;
&lt;br /&gt;
Now edit the &#039;&#039;translate&#039;&#039; property value by selecting it (remember to have inherited properties box checked) and using the input box at the bottom and clicking the check(tick) button. That will change the distance the door will slide to. Note that the line with the original default of 0 0 0 will still be there but your new entry will be added on a separate line and that is the one that will work in the game. CAUTION: when adjusting later make sure you have your new line selected and not the original! If you do it will appear to change but your first setting will remain unaltered.&lt;br /&gt;
&lt;br /&gt;
Typically (but not always) you will want your sliding door to slide the width of the door. The three values in the translate property by default are 0 0 0 and are X Y Z &#039;&#039;absolute map&#039;&#039; values (irrespective of door orientation) where:&lt;br /&gt;
&lt;br /&gt;
* Positive X = Slide East (Right side of Dark Radiant grid in top view)&lt;br /&gt;
* Negative X = Slide West (Left side of Dark Radiant grid in top view)&lt;br /&gt;
* Positive Y = Slide North (top of Dark Radiant grid in top view)&lt;br /&gt;
* Negative Y = Slide South (bottom of Dark Radiant grid in top view)&lt;br /&gt;
* Positive Z = Slide Up (Top of Dark Radiant grid in side views)&lt;br /&gt;
* Negative Z = Slide Down (Bottom of Dark Radiant grid in side views)&lt;br /&gt;
&lt;br /&gt;
So for a 50 unit wide door you want to slide fully to the east you would use 50 0 0 for the translate property values. A 100 unit portcullis sliding vertically up would need 0 0 100 to be fully raised.&lt;br /&gt;
&lt;br /&gt;
=== Doors Collision/Push Behaviour ===&lt;br /&gt;
Doors are pushing all entities by default, except for the player. Doors will also stop moving when anything blocks their movement. However, this default behaviour can be changed by setting the according spawnargs:&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;push_player&#039;&#039;&#039; to &#039;&#039;&#039;1&#039;&#039;&#039; to let the player be pushed by this door:&lt;br /&gt;
 &amp;quot;push_player&amp;quot;  &amp;quot;1&amp;quot;  // Push the player too (default is off)&lt;br /&gt;
&lt;br /&gt;
By default &#039;&#039;&#039;stop_when_blocked&#039;&#039;&#039; is set to 1 and if a door is blocked by an entity then even if the entity is removed afterwards, the door stays still. The next frob will close the door.&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;stop_when_blocked&#039;&#039;&#039; to &#039;&#039;&#039;0&#039;&#039;&#039; to prevent the door from ending the opening sequence when anything blocks its way. It will still pause - but continue to open if the block is removed.&lt;br /&gt;
 &amp;quot;stop_when_blocked&amp;quot;   &amp;quot;0&amp;quot;  // door keeps moving after being blocked (default is off)&lt;br /&gt;
With this setting, doors will still stop at blocking entities (the player, for instance), but will continue to move when the entity clears the way.&lt;br /&gt;
&lt;br /&gt;
There is another spawnarg which stops a door pushing a moveable. Apply this to the &#039;&#039;moveable&#039;&#039; not the door...&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;notPushable&amp;quot;   &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Sounds and Sound Propagation through Doors and Doorways===&lt;br /&gt;
&lt;br /&gt;
Sound propagation relies on visportals. For details study [[Sound Propagation: Part 1]] and [[Sound Propagation: Part 2]] as well as [[Visportals]] This tutorial will just cover the relevant sound and sound propagation &#039;&#039;properties&#039;&#039; of doors. If you set the &#039;&#039;show inherited properties&#039;&#039; box in the entity inspector you can see them as described here.&lt;br /&gt;
&lt;br /&gt;
The sound of doors opening and closing is set in the snd_open and snd_close properties. You can silence them by setting the following properties as shown:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_open nosound&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;snd_close nosound&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t just use a dash - as it seems to cause a sound of its own.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_locked&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The sound played when a player tries to open a locked door.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_unlock string&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The sound played when a player unlocks a door.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;loss_open&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Drop in sound volume in dB when going through an open door. (default 1dB)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;loss_closed&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Drop in sound volume in dB when going through a closed door. (default 15dB) You would want to set this very high to block all sound with a thick door but very low for a barred gate for example.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;loss_double_open&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Drop in sound volume in dB when going through double doors when only one is open. (default 1dB)&lt;br /&gt;
&lt;br /&gt;
There are also various sound properties for lockpicking:&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;snd_lockpick_pin_1 through 14&#039;&#039; and &#039;&#039;snd_lockpick_pin_success&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Speed of Door Opening and Closing===&lt;br /&gt;
&lt;br /&gt;
Rotating Door Speed:&amp;lt;br&amp;gt;&lt;br /&gt;
At the time of writing, the time a rotating door takes to open or close is set in the &#039;&#039;move_time&#039;&#039; property whatever its maximum open angle. So with rotation set at say 150 degrees the door just opens faster than at say 80 degrees. This is likely to be changed to a constant angular velocity so check to see if there a new property added if the following no longer works. The problem is that if an interruptable (see Extra Notes) door is frobbed while in motion it stops; another frob will reverse the motion - so even if the door is only open a crack it will still take the full time to close and vice versa.&lt;br /&gt;
&lt;br /&gt;
To change the time a rotating door takes to open or close, make sure the door is selected then...&lt;br /&gt;
&lt;br /&gt;
* Right click the entity inspector and check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Scroll down, select &#039;&#039;move_time&#039;&#039;&lt;br /&gt;
* Edit the second line of the input box &#039;&#039;below&#039;&#039; the properties window to the time you want.&lt;br /&gt;
* The time is in seconds and decimal fractions can be used.&lt;br /&gt;
* The default is 1 second and if set to this then the door opens and closes in one second whatever the maximum open angle, great or small.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sliding Door Speed:&amp;lt;br&amp;gt;&lt;br /&gt;
The speed of a sliding door is set in the &#039;&#039;translate_speed&#039;&#039; property. To add this, make sure the door is selected then...&lt;br /&gt;
&lt;br /&gt;
* Right click the entity inspector and check &#039;&#039;show inherited properties&#039;&#039;&lt;br /&gt;
* Scroll down, select &#039;&#039;translate_speed&#039;&#039;&lt;br /&gt;
* Edit the second line of the input box &#039;&#039;below&#039;&#039; the properties window to the speed you want.&lt;br /&gt;
* The speed is in Dark Radiant grid units per second.&lt;br /&gt;
* The default is 0 and if set to this then the door slides open in one second whatever the distance, great or small.&lt;br /&gt;
* CAUTION: If you later change the door back to a rotating door then delete the &#039;&#039;translate_speed&#039;&#039; property or ensure it is set to 0 as (at the time of writing but this will be fixed) a bug makes rotating doors open and close instantly. (Note: you can still mix sliding with rotating but check - this bug might only be if &#039;&#039;translate&#039;&#039; is set to 0 0 0)&lt;br /&gt;
&lt;br /&gt;
===Visportals and Doors===&lt;br /&gt;
&lt;br /&gt;
A visportal face surrounded by solid at its edges and in contact with a door is closed when the door is closed and enabled when the door is open. In most cases you will place a visportal in contact with a working door unless you can see through the door (such as a true glass door or barred gate.) For full details see [[Visportals]].&lt;br /&gt;
&lt;br /&gt;
==Auto-Closing/Opening Doors==&lt;br /&gt;
Doors that automatically close after being open for some time are easy to setup: Each frobmover entity supports these spawnargs:&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;auto_close_time&amp;quot;:Set this to something &amp;gt;= 0 to let the mover automatically close (again) after this time when being fully opened (measured in seconds). Defaults to -1, which means &#039;do not autoclose&#039;. The event is also activated when the mover starts at the open position at map start.&lt;br /&gt;
;&amp;quot;auto_open_time&amp;quot;:&amp;quot;Set this to something &amp;gt;= 0 to let the mover automatically open (again) after this time when being fully closed (measured in seconds). Defaults to -1, which means &#039;do not autoopen&#039;. The event is also activated when the mover starts at the closed position at map start.&lt;br /&gt;
&lt;br /&gt;
Old text:&lt;br /&gt;
&lt;br /&gt;
Note that auto-closing doors and AI closing doors behind them, is very much work in progress at the time of writing, so for now, this is another method that works. Check first if true AI closing of doors is working yet before bothering with this!&lt;br /&gt;
&lt;br /&gt;
I have one door that I particularly want the AI to close as there is a bit of frame lag inside if not. So I set this up and it works good as an auto-closing door - not as good as a true AI closing door as it will auto close when the player goes through as well but it does look very effective to see AI going through and closing the door behind them. Not tested exhaustively so I don&#039;t know if there could be any downside. Here&#039;s what to do....&lt;br /&gt;
&lt;br /&gt;
First a quick summary to make it more clear:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;A trigger_relay is used both as a relay AND carries a stim. We put the trigger_relay with its stim in the path of the open door. The door has a response property. When it opens and contacts the stim its response is to send a signal back to the relay. The relay pauses then closes the door...&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* First, optionally give your door a suitable name like autodoor1, whatever.&lt;br /&gt;
* Copy that name to the clipboard.&lt;br /&gt;
&lt;br /&gt;
Next we need a relay with a delay:&lt;br /&gt;
&lt;br /&gt;
* Create entity &amp;gt; darkmod &amp;gt; trigger_relay&lt;br /&gt;
&lt;br /&gt;
* Place it roughly at the position the door will be at when open and to be on the safe side 3/4th of the way to the far end of the door (not the hinge end) to give max distance from the close door.&lt;br /&gt;
&lt;br /&gt;
* Add the property &#039;target&#039; and paste in the door name you just copied.&lt;br /&gt;
&lt;br /&gt;
* Give the relay itself a name, eg, autoDoor_relay_1, and copy that name to the clipboard, you&#039;ll need that too in a bit.&lt;br /&gt;
&lt;br /&gt;
* Add the property delay and the value 3 - this is the delay in seconds before the door will close; 3 seems about right but 2 might be worth a try because to that 3 is added a random value between 0 to 0.5 seconds from the Time Interval we entered for the stim firings.&lt;br /&gt;
&lt;br /&gt;
* Add the property &#039;wait&#039; and the value 3. This is the time before it can work again in seconds. If you set it too low then in theory the door might trigger again but in this situation I don&#039;t think it&#039;s possible. Too long, eg, one minute, and it won&#039;t work if the AI goes back through the door before then. If this value is -1 then the whole thing will only work ONCE so might be used for an AI who goes through once, closes it behind him, but you don&#039;t want it to be an autodoor thereafter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That&#039;s the relay, now we add a stim to it:&lt;br /&gt;
&lt;br /&gt;
* Still with the trigger relay selected, go to {{menu|Entity|Stim/Response}}&lt;br /&gt;
&lt;br /&gt;
* Custom stim tab.&lt;br /&gt;
&lt;br /&gt;
* Click Add stim type, select the new custom stim type you just made at the bottom of the list and type in eg, autoDoorStim at top right in the input box.&lt;br /&gt;
&lt;br /&gt;
* Click the stim tab and the little drop down arrow against the &#039;type&#039; selector at bottom left and you should see your new custom stim name. Select it.&lt;br /&gt;
&lt;br /&gt;
* Select the new autoDoorStim in the list and on the right you need only type in the radius box 15.0 There is quite a lot of room for error. I had it working on 10 and also on 25. The value should be less than the distance to the closed door else it will trigger open! But no so small that the door might not reach it.&lt;br /&gt;
&lt;br /&gt;
* Select the check box for Time Interval and enter 500 (millisecs.) This is so it doesn&#039;t keep firing more frequently than is necessary. This stim will be firing all through your mission whether the door is used or not so if you had dozens of these then maybe it would affect performance. Too big a number and there may be a long delay before the door shuts - but it will be random depending on the next time the stim happens to fire. We&#039;ll control the delay we want more precisely later.&lt;br /&gt;
&lt;br /&gt;
* Click {{ok}} to confirm it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That&#039;s the stim set up, now for the response to it which is put on the door....&lt;br /&gt;
&lt;br /&gt;
* Select the doorm, then use {{menu|Entity|Stim/response}} and select the response tab.&lt;br /&gt;
&lt;br /&gt;
* Click the little drop down arrow against the &#039;type&#039; selector at bottom left and you should see your new custom stim name. Select it.&lt;br /&gt;
&lt;br /&gt;
* Right click in the big &#039;&#039;Response Effects&#039;&#039; box on the bottom right of the panel.&lt;br /&gt;
&lt;br /&gt;
* Add New Effect and you should get a default &#039;Activate Response&#039; response added to the list. Double click it.&lt;br /&gt;
&lt;br /&gt;
* In the Effect selector at the stop select &#039;Trigger&#039;&lt;br /&gt;
&lt;br /&gt;
* in the Target box, paste in the name of the relay you copied or you can select it from the list at the little arrow.&lt;br /&gt;
&lt;br /&gt;
* Leave the Activator box empty.&lt;br /&gt;
&lt;br /&gt;
* Click {{apply}} and then {{ok}} on the main S &amp;amp; R panel bottom right.&lt;br /&gt;
&lt;br /&gt;
It should now work. No need to wait for an AI, just frob the door and watch it close itself. If not, check the position of the stim brush is close to where the door stops when open.&lt;br /&gt;
&lt;br /&gt;
==AI Door management==&lt;br /&gt;
&lt;br /&gt;
See also [[#Keys_carried_by_AI]] above.&lt;br /&gt;
&lt;br /&gt;
By default AI will open doors and close them behind them. Here are some spawnargs the mapper can use to modify that behaviour:&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;ai_should_not_handle&amp;quot; :If set to 1, AI will not attempt to handle it and add it to the forbidden areas when closed (so that it doesn&#039;t try to path through). They might still walk through the door when it is open though. Useful if you have some special use door that you don&#039;t want the AI to operate.&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;ai_should_not_close&amp;quot; :If set to 1, AI will not close the door behind them unless it obstructs them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To get AI to unlock/relock specific doors there are two methods currently:&lt;br /&gt;
&lt;br /&gt;
1. add the following spawnarg/value to the AI:&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;can_unlock1&amp;quot; &#039;&#039;&amp;lt;doorname&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do NOT use can_unlock_1.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For additional doors on the same AI use &#039;&#039;can_unlock2 doorname&#039;&#039; etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. In the editor position an actual key that works for that door on the AI and also add to the key bind &amp;lt;AIname&amp;gt; and also bindToJoint LeftHips_Dummy (see other joints names elsewhere in wiki.) Currently, if the player pickpockets the key then the AI seeks an alternate route but otherwise does nothing (?) This may be upgraded in the future to better strategies.&lt;br /&gt;
&lt;br /&gt;
3. There is the possibility in the future of an additional method which would just use special attach spawnargs to make the above easier. The key would spawn at the correct position at game start. Watch this space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Door handling positions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is also possible to set custom door handling positions for the AI. This is especially useful when the standard routine that lets the AI choose their standing positions while opening and closing the door fails, leaving them circling around in front of the door helplessly.&lt;br /&gt;
&lt;br /&gt;
Place a movers &amp;gt; atdm:door_handling_position entity where you want the AI to stand while opening/closing the door from this side.(it can be found in the movers folder in the entity chooser)&lt;br /&gt;
&lt;br /&gt;
On the door, you need to set the spawn arg &amp;quot;door_handle_position&amp;quot; &amp;quot;name_of_door_handling_position&amp;quot; You can also place a door handling position on each side of the door, the AI should automatically choose the right one. In this case, you need to set spawn args with &amp;quot;door_handle_position_1&amp;quot; etc and the corresponding names of the door handling position entities on the door.&lt;br /&gt;
&lt;br /&gt;
The door handling positions can also carry spawn args that define the behaviour of the AI, which are useful for example for doors that can only be openend or locked from one side:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_open&amp;quot;&#039;&#039;&#039; If set to true, the AI will not try to open the door from this side (but still walk through when the door is already open)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_close&amp;quot;&#039;&#039;&#039; If set to true, the AI will not attempt to close the door from this side&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_unlock&amp;quot;&#039;&#039;&#039; If set true, the AI will not be able to unlock the door from this side, but still use it when it is not locked.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;ai_no_lock&amp;quot;&#039;&#039;&#039; If this is set true, the AI will not lock the door from this side.&lt;br /&gt;
&lt;br /&gt;
==Doors as Triggers==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;by Ishtvan &amp;amp; greebo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Doors (or any binary frob mover, buttons, levers, etc) now have the option to trigger their target on closing or opening. (For definition purposes, a button is defined as &amp;quot;closed&amp;quot; in the state when it starts out and &amp;quot;open&amp;quot; in the state you press it down to. I know that&#039;s a little non-intuitive, but it came from deriving from doors).&lt;br /&gt;
&lt;br /&gt;
New spawnargs on frob movers:&lt;br /&gt;
;&amp;quot;trigger_on_open&amp;quot; :If set to 1, this binary mover will trigger its targets when it starts out completely closed and is opened.&lt;br /&gt;
;&amp;quot;trigger_when_opened&amp;quot;:If set to 1, this binary mover will trigger its targets when it is completely opened. Code defaults to 0.&lt;br /&gt;
;&amp;quot;trigger_on_close&amp;quot;:If set to 1, this binary mover will trigger its targets when it completely closes after being open.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Skins: A Wide Variety of Door Textures==&lt;br /&gt;
&lt;br /&gt;
This is to remind you that as with many Dark Mod models, there is a wide range of extras skins (textures) available for door models. There are now several basic door entities of different sizes so choose your size first. Then enter the spawnarg: skin with any temporary value. Now select it and click the skin button at the bottom of Dark Radiant&#039;s Entity Inspector and you will find a large of range of skin textures from which to select to give you a choice of appearances for your door.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Extra Notes==&lt;br /&gt;
The property &#039;&#039;interruptable&#039;&#039; determines whether a door can be stopped by frobbing while it is opening or closing. So by frobbing then frobbing again, the player can open a door to any position, eg, slightly ajar to peek through.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;func_darkmod_door&#039;&#039; is no longer used (just in case you come across it in the Dark Mod forums or wiki.) The Doom func_door is still available but for Dark Mod, but &amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt; is the entity to use.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Grime_Corners&amp;diff=11797</id>
		<title>Grime Corners</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Grime_Corners&amp;diff=11797"/>
		<updated>2010-12-22T16:14:41Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: New page: &amp;#039;&amp;#039;written by Fidcal&amp;#039;&amp;#039;  ==Introduction==  Grime corners are material shaders that give impressions of dirt and shadow at the edges and corners of surfaces. They are decals which need to be ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;written by Fidcal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Grime corners are material shaders that give impressions of dirt and shadow at the edges and corners of surfaces. They are decals which need to be applied as patches over brush surfaces.&lt;br /&gt;
&lt;br /&gt;
Use of grime corners decals can be time-consuming and tricky so it is not recommended you attempt to apply to every surface throughout your FM. Instead focus on dirty rooms such as cellars, dungeons; showcase rooms where you want them to look the best in the FM; and barely lit areas that have mostly or only ambient light - these areas can be &#039;lifted&#039; and enhanced without needing lights so they don&#039;t look so flat and uninteresting. You need to consider where &#039;grimed&#039; areas meet non-grimed areas. A non-grimed area can look odd next to a heavily grimed area that ends abruptly. Try to fade out the grime as best you can in-between.&lt;br /&gt;
&lt;br /&gt;
==Application==&lt;br /&gt;
&lt;br /&gt;
This is basically how to apply grime corners decals....&lt;br /&gt;
&lt;br /&gt;
Select some brush surface(s)&lt;br /&gt;
Menu &amp;gt; Create decal patch will cover them with a patch.&lt;br /&gt;
While still all selected pick a texture from:&lt;br /&gt;
darkmod &amp;gt; decals &amp;gt; dirt &amp;gt; grime.... *see below&lt;br /&gt;
Then while still selected hit &#039;fit&#039; on the surface inspector.&lt;br /&gt;
Now individually you need to adjust them.&lt;br /&gt;
Some patches exactly fit the visible surface, say a blank wall or ceiling in a room.&lt;br /&gt;
Others are on walls that are divided into different brushes. These need stretching to cover the wall.&lt;br /&gt;
Others go on surfaces that go partly behind other brushes. These need resizing too to drag the edges of the grime patch to reach the edges of the visible surface&lt;br /&gt;
&lt;br /&gt;
==Different types==&lt;br /&gt;
&lt;br /&gt;
Most of these materials give a transparent rectangle that fades to dark at the edges and corners. Or if you like, it&#039;s a dark rectangle that fades to transparency in the middle.&lt;br /&gt;
&lt;br /&gt;
===grime_corners_light===&lt;br /&gt;
&lt;br /&gt;
I recommend for most cases use grime_corners_light for a reasonable average grime.&lt;br /&gt;
&lt;br /&gt;
===grime_corners===&lt;br /&gt;
&lt;br /&gt;
The original grime_corners if very dark; only use that in the grimmest darkest dirtiest places because it is completely black at the edges. &lt;br /&gt;
&lt;br /&gt;
===grime_corners_medium===&lt;br /&gt;
&lt;br /&gt;
grime_corners_medium is a colorme. Ideally it would be named textures/darkmod/decals/dirt/grime_corners_medium_colorme I think but it cannot be changed now or it would break maps. What this means is you apply it then make the patch (or patches) a func_static. Then it is essential (or it won&#039;t show at all) to give the func_static entity the property _color and values like a light (can&#039;t use the color picker though) 3 values from 0 to 1. They are reversed brightness so 1 is black and 0 is invisible. You would use eg, 0.9 0.9 0.9 for fairly dark and say 0. 4 0.4 0.4 for light (it does depend where used how dark/light it looks though.) In addition you can set it&#039;s color. In Heart there are some pillars in the main hall that are a bit greeny as I recall. The color also is reversed. What you do is set say 0.99 0.99 0.99 (RGB) which is almost black. Then say you want the shadow/grime to be brown (dark red) you would turn DOWN  the red component (which means you are turning it up from black you are adding a bit of red. So 0.7 0.99 0.99 might be dark brown.&lt;br /&gt;
&lt;br /&gt;
===grime_full_light===&lt;br /&gt;
&lt;br /&gt;
grime_full_light is the same as light above but constant throughout the rectangle. It does not fade to light. Sometimes useful for plugging a gap in a doorway between two rooms that have grime_corners_light on the floor ending abruptly at the doorway. We really need a new one that is colorme.&lt;br /&gt;
&lt;br /&gt;
===grime_corners_square_colorme===&lt;br /&gt;
&lt;br /&gt;
grime_corners_square_colorme is an inverse one and the dark area is in the middle fading to light at the edges. This is suitable for placing under pillars (and at the top) and also under some items of furniture etc to give a false shadow especially where there is only ambient light. For example, you might have an outdoor area with an old table in a gloomy corner with only ambient light. The floor under the table and the wall behind might look rather light because the human eye expects it to be darker even in ambient light. Like &#039;medium&#039; it&#039;s a colorme and the same rules apply - you need to give it _color.&lt;br /&gt;
&lt;br /&gt;
==Hints and tips==&lt;br /&gt;
&lt;br /&gt;
A great many applications of the above materials need some imagination and improvisation to scroll and rescale the texture where appropriate. Often you want just grime in one corner so have to enlarge the scale of the texture (not the patch) in surface inspector. Not that currently with Dark Radiant you *reduce* the scale to increase it on patches. As you do this one side of the shadow moves off past the edge. You might need to scroll it around if its the wrong edge or even rotate the patch.&lt;br /&gt;
&lt;br /&gt;
Moderately small windows in the middle of a wall you can put the patch over the whole wall because the transparent part is over the window(s). Doorways are tricky. Sometimes you can improvise with three patches around the door. Other times it is best to bend one patch around the door (see [[Patches#Bend L Shapes]]) Note that after fitting such a patch, exit vertex mode then use &#039;fit&#039; again on Surface Inspector.&lt;br /&gt;
&lt;br /&gt;
L or U shaped rooms use the same method as around doorways.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]]&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_1.03&amp;diff=11784</id>
		<title>What&#039;s new in TDM 1.03</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_1.03&amp;diff=11784"/>
		<updated>2010-12-21T06:43:48Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Textures/Skins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- keywords whats new --&amp;gt;&lt;br /&gt;
See also the changelog on our bugtracker page: [http://bugs.angua.at/changelog_page.php?version_id=43 Changelog].&lt;br /&gt;
&lt;br /&gt;
== Release Date ==&lt;br /&gt;
Version 1.03 of The Dark Mod has &#039;&#039;&#039;not yet&#039;&#039;&#039; been released.&lt;br /&gt;
&lt;br /&gt;
== Changes / Features / Issues fixed ==&lt;br /&gt;
&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=837 #837]: Arrows don&#039;t stick into attachments on living AI (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1181 #1181]: When mantling onto a moving object the mantle process is stationary, often the object is long gone (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1254 #1254]: Cannot see objectives or why failed after mission end (GUI)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1421 #1421]: Arrows can stick in broken arrows (Physics)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1422 #1422]: Arrows can stick in arrows sticking in AI (Physics)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1697 #1697]: AI errors when alerted by melee damage (AI)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1851 #1851]: Bug when &amp;quot;using&amp;quot; AI with &amp;quot;shoulderable&amp;quot; set to &amp;quot;0&amp;quot;. (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=1960 #1960]: No error message when failing to install FM package (GUI)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2065 #2065]: Discarding articles when sorting Missions in the &amp;quot;New Mission&amp;quot;-menu (GUI)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2169 #2169]: Strange AI behaviour/death when underwater (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2198 #2198]: Finish &amp;quot;reaction&amp;quot; soundshaders (Sound)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2210 #2210]: Savegame trying to restore Doom3 objectiveSystem (Saving/Loading)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2218 #2218]: &amp;quot;idle_animations_torso&amp;quot; causes crash (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2225 #2225]: path_anim won&#039;t work without an &amp;quot;angle&amp;quot; property (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2226 #2226]: Lanternbots turn invisible when slain (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2229 #2229]: Conversations only playing once (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2234 #2234]: Weapon scrolling broken (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2236 #2236]: atdm:ai_townsfolk_commoner_armed def vocal set typo (Def / Setup)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2237 #2237]: Need generic text guis for signs etc (Feature proposal)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2241 #2241]: gameLocal.m_StimTimer is not cleared between maps (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2242 #2242]: Stim/Response Code Cleanup (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2243 #2243]: Crash in func_shooter entity when def_projectile is wrong (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2244 #2244]: Invalid tokens in ASE files (errors in NAHT) (Script/Def)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2255 #2255]: New Mission menu GUI improvements. (GUI)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2257 #2257]: Curtain prefab and fabrics (Textures)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2258 #2258]: Climbing chains sounds like rope (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2260 #2260]: Easier override option for main menu music (GUI)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2261 #2261]: in 16:9 aspect resolutions, 1280x720 and 1366x768 are reversed (GUI)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2262 #2262]: Restart Game button for settings menu (GUI)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2265 #2265]: Console commands to mark missions as played/completed (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2268 #2268]: No need to extract startingmap.txt file from mission PK4 (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2269 #2269]: Response Effect Knockout not working (Script/Def)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2269 #2270]: Ambient music volume levels (Sound system)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2280 #2280]: Mission version check is bound to fail on next major version (GUI)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2281 #2281]: No physics for dropped pickpocketed objects (Physics)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2287 #2287]: no_random_headturning Not Working (Animation)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2308 #2308]: Mission Download Manager (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2309 #2309]: Support for replace_anim_* spawnargs directly on AI (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2319 #2319]: Bump tdm_lg_crouch_modifier to -2 (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2324 #2324]: Water should decrease visibility: add Lightgem modifier (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2326 #2326]: Location settings broken if player enters undefined area (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2337 #2337]: Add a falloff to the dynamic ambient light (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2342 #2341]: &amp;quot;No_dups&amp;quot; not working for vocal barks (Sound engine)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2342 #2342]: idRotator reverses direction each time it is triggered (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2343 #2343]: Split Action/Inventoy menu and add keybinds for Spyglass/Cycle Readables (GUI)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2344 #2344]: Elevator button double firing (Def / Setup)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2352 #2352]: Arrows stick into player head (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2362 #2362]: Water texture/wobble is too fast (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2369 #2369]: Horse - skins (Graphis)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2377 #2377]: Add Sotha&#039;s skybox decals (Textures/Materials)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2379 #2379]: New golden Ingots as loot items (Models)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2380 #2380]: CObjectiveLocation doesn&#039;t recognize absence of deleted entities. (Design/Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2385 #2385]: AI playing cards: some sit_down_angles unusable (AI)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2392 #2392]: Patrolling AI get up immediately after path_sleep (AI)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2396 #2396]: Add the Bloom settings to the menu (GUI)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2408 #2408]: Sleepers &amp;quot;seeing&amp;quot; bodies (AI)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2414 #2414]: Problems caused by interleaved thinking (AI)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2417 #2417]: Ambient sounds lost after loading (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2424 #2424]: Click in menu causes game action (Coding/GUI)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2426 #2426]: TDM Updater improvements (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2430 #2430]: If shouldered entity is removed from game, stuck shouldering forever (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2438 #2438]: Norman shield texture error (Textures)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2440 #2440]: Unlit electric lights not switchable (stay dark) (Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2443 #2443]: Sconscript deprecation warnings (Design/Coding)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2446 #2446]: Double check spider death animation (AI)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2450 #2450]: Unknown Pause before Purchase Menu (GUI)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2458 #2458]: Test female sleeping behaviour (Animation)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2461 #2461]: Black wheelbarrow (Models)&lt;br /&gt;
* [http://bugs.angua.at/view.php?id=2465 #2465]: Wench eyes not closing when asleep (Animation)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--== LOD (Level of Detail) ==&lt;br /&gt;
&lt;br /&gt;
The old system with only two levels (object visible and invisible) has been totally rewritten, and features now 7 levels, fade in and fade out distances and can set different models, skins and noshadows on every LOD stage. See [[Level Of Detail|here]] for more information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== LODE (Level of Detail Entity manager) ==&lt;br /&gt;
&lt;br /&gt;
To be written.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
* Spiders have been significantly upgraded: all-new animations (including death animation), new spider types, new behavior (ceiling hang) and quieter footsteps&lt;br /&gt;
* Three new female characters:  noblewoman, wench, and rogue.  [http://modetwo.net/darkmod/index.php?/topic/11535-new-female-characters/]&lt;br /&gt;
* New animations for female characters&lt;br /&gt;
* Lowered volume of zombie foot-drag (again)&lt;br /&gt;
* Implemented run animation for characters with weapons (so they don&#039;t stab their head while running)&lt;br /&gt;
* New &amp;quot;Werebeast&amp;quot; monster added&lt;br /&gt;
* several varied pain animations&lt;br /&gt;
* Horse AI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GUI ==&lt;br /&gt;
&lt;br /&gt;
* A &amp;quot;Restart game&amp;quot; button now in the &amp;quot;Settings menu&amp;quot; (Greebo)&lt;br /&gt;
* The &amp;quot;New mission&amp;quot; menu has been greatly improved and has new features like tracking which mission(s) you played before, how long it took etc. (Greebo)&lt;br /&gt;
* Built-in version check, so TDM can tell you when an update is available. (Greebo)&lt;br /&gt;
* The &amp;quot;Actions/Inventory&amp;quot; menu has been split into &amp;quot;Actions&amp;quot; and &amp;quot;Inventory&amp;quot; (Tels). This makes room for:&lt;br /&gt;
** It is now possible to bind keys for &amp;quot;Spyglass&amp;quot; and &amp;quot;Cycle Readables&amp;quot; from the menu (Tels)&lt;br /&gt;
* The menu now supports three ambient methods (New Horizon):&lt;br /&gt;
** &#039;&#039;&#039;Normal&#039;&#039;&#039; (uses interaction shader to calculate ambient),&lt;br /&gt;
** &#039;&#039;&#039;Fast&#039;&#039;&#039; (JC&#039;s enhanced texture based ambient), &lt;br /&gt;
** &#039;&#039;&#039;Fastest&#039;&#039;&#039; (our original texture based ambient)&lt;br /&gt;
* The menu now has an &amp;quot;Object Details&amp;quot; setting, which can influence the amount and detail of objects. It supports the settings of &amp;quot;Lowest&amp;quot;, &amp;quot;Low&amp;quot;, &amp;quot;Normal&amp;quot;, &amp;quot;High&amp;quot; and &amp;quot;Highest&amp;quot;. (Tels)&lt;br /&gt;
&lt;br /&gt;
== Sounds ==&lt;br /&gt;
* &amp;lt;s&amp;gt;Added a new Builder vocal set -- the Strong Builder&amp;lt;/s&amp;gt; -- Postponed -- (Mortem Desino)&lt;br /&gt;
* Added two new vocal sets: &amp;quot;Wench&amp;quot; and &amp;quot;Lady&amp;quot;&lt;br /&gt;
* AI no longer play the same vocal bark twice in a row, and play a wider range of vocals (you should notice quite a change!)&lt;br /&gt;
* several footstep sounds have been modified&lt;br /&gt;
* ambient sound will no longer be lost on reloading&lt;br /&gt;
* AI vocals have been adjusted to allow for better ability to determine direction of the sound&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Textures/Skins ==&lt;br /&gt;
&lt;br /&gt;
* A new yellow skin for the lily model has been added (Tels)&lt;br /&gt;
* Yellow and brown skins for our grass, as well as a dense and a &#039;&#039;colored&#039;&#039; variant of these has been added (Tels)&lt;br /&gt;
* Grass skins can now be used on all bush models, turning them into grass or plants with long leaves.&lt;br /&gt;
* It is possible to set a list of skins, from which one will be chosen &#039;&#039;&#039;randomly&#039;&#039;&#039; at entity spawn time, see: [[random_skin]]&lt;br /&gt;
* A few building/tree skybox facade textures (Sotha)&lt;br /&gt;
* Copper clad roof texture and old oxidised copper texture, good for statue skins (Serpentine)&lt;br /&gt;
* Two higher res loose stone wall textures (Seperntine)&lt;br /&gt;
* The red-shingles-with-stripes texture has now twice the resolution and much better details (Arcturus)&lt;br /&gt;
* New ladder variants with sounds for chain, foliage (ivy) rope, metal, nosound (silent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Three lilies.jpg|200px|Three lilies]]&lt;br /&gt;
|[[Image:grass_skins.jpg|200px|Grass variants]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
* Aphrodite statue (Arcturus)&lt;br /&gt;
* New carrot stub/turnip stub (Baddcog) and moveables/eaten versions based on them&lt;br /&gt;
* Gold bar model with various sizes (Fidcal &amp;amp; Greebo)&lt;br /&gt;
* a few new [[LOD]] models, which are considerable simpler (and thus render faster) than their originals&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Eaten.jpg|200px|Eaten carrot and turnip]] &lt;br /&gt;
|[[Image:Ingame side by side.jpg|200px|Left: LOD, Right: Original]]&lt;br /&gt;
|[[Image:Lily_after_colorcorrect.png|200px|Left: LOD, Right: Original]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Physics ==&lt;br /&gt;
&lt;br /&gt;
Formerly, mantling (jump, grab ledge, then pull yourself up) only worked for stationary or moving (translating) objects. Ishtvan now implemented mantling onto rotating objects, too. This [http://www.youtube.com/watch?v=EMyHMeuikc8 video] demonstrates nicely the effect and possibilities. Btw, the map is called [http://thedarkmod.com/fmdetails.php?id=33 Swing] and is a contest map that confines the player into a 1280x1280 (unlimited height) cube, and if you watch the video, you will see that the map certainly feels way bigger. A clever trick :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Code ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;id Software&#039;&#039;&#039; had the habit to add a small class for almost each feature needed, instead of combining the features into one class. This leads to situation where one entity can do X, the next can do Y, but none can do X and Y at the same time. Before we only added code to the code base, and fixed bugs. With v1.03 we also &lt;br /&gt;
started an effort on C++ code cleanup. That means:&lt;br /&gt;
&lt;br /&gt;
* combining features into one spawnclass instead of distributing it over or duplicating it at several&lt;br /&gt;
* removing unnec. classes (idFuncRadioChatter, idDoor, idElevator, idTarget_EnableStamina, idAFEntity_ClawFourFingers, anything related to the PDA, idTarget_Tip etc.)&lt;br /&gt;
* adding small utility functions (like ToString() to the idBounds class)&lt;br /&gt;
* improving the performance of idlib classes (the idList class has seen improvements upon adding another list to it, f.i.)&lt;br /&gt;
* We also no longer include and use some AI scripts from the base,working towards our goal of a D3-free TDM&lt;br /&gt;
&lt;br /&gt;
This is ongoing work, but it will contribute to making TDM better overall, in small steps.&lt;br /&gt;
&lt;br /&gt;
{{whatsnew}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Mission_Design_Tips&amp;diff=11782</id>
		<title>Mission Design Tips</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Mission_Design_Tips&amp;diff=11782"/>
		<updated>2010-12-19T15:59:07Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* The Start Place */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Mission Design Tips =&lt;br /&gt;
While the technical aspects of a mission creation is well covered by Fidcal&#039;s excellent A-Z map creation tutorial, there are other non-technical things to be considered when creating a TDM mission. I&#039;ll try to point out these things in this article. I welcome others to add more to this. And please note that some things herein are a matter of taste. The idea is more to make people think about these design elements. -Sotha&lt;br /&gt;
&lt;br /&gt;
== Preparing for mission building ==&lt;br /&gt;
If you are a novice mapper, going forth to create your very first map, start small, fun and simple. Look at the Thief&#039;s Den 1, the Outpost and the Pandora&#039;s Box. Small, fun and excellent. Try not to create something really ambitious. Do something like that once you&#039;ve more experience and confidence in your mapping skills. There are many things to be learned through trial and error.&lt;br /&gt;
&lt;br /&gt;
It is always a good idea to think in advance how your mission flows. You should have a general idea what you&#039;re doing before you start mapping. Have a scetchy floorplan. Find some images for inspiration from the net. It is much easier to create a scene from an image than from your mind. Think about the plot. If you want an elaborate plot, you should think some kind of beginning, a turning point (the point of no return) and the ending. This about the map difficulty. How to place zones of low, medium and high tension. You do not need to think everything before mapping, but when your mapping project has a good foundation it is much more easy to stay on target and not get lost in trivialities. With a good plan, you *will* save time and your nerves. Remember nothing forces you to stick with the plan if you have an even better idea. But in order to get something done, it is better to stick with the plan and record the brilliant idea somewhere so you can use it in a later mission.&lt;br /&gt;
&lt;br /&gt;
==Creating Basic Geometry==&lt;br /&gt;
Try to avoid linear maps. Make the maps such that you can access common areas through multiple routes. The critical areas probably have smaller amount of entries. Supercritical places like bank vaults should have high tension guarding and security. Only one entry way.&lt;br /&gt;
&lt;br /&gt;
It might be a good idea to lay in few brushes according to your floorplan and check how it is going to work. Place an AI as reference so you see how the floorplan scales to a human being.&lt;br /&gt;
&lt;br /&gt;
While mapping, write down all ideas you get while working on your map. You might get some cool location or plot elements, which would be a shame if you forgot them.&lt;br /&gt;
&lt;br /&gt;
When building the geometry or planning it, try to make it realistic. If people live in the region you create, there should be conveniences people require: sustenance, shelter and convenience. Create the rooms in a purposeful, logical locations. Like in real life, each room serve some kind of purpose. Try to relay the meaning to the player. Doing this makes your locale believable, which is important for immersion. &lt;br /&gt;
&lt;br /&gt;
If you find this difficult, check the net for castle/manor/crypt floorplans. Note that which rooms are where. This will get you on the right track.&lt;br /&gt;
&lt;br /&gt;
==Difficulty==&lt;br /&gt;
Once the basic level geometry is created and you&#039;re starting to add details, you should rethink about the mission difficulty. Basically you need to have your map bright enough so that the AI has possibility of seeing the player. Also you need to have enough AI&#039;s to challenge the player. It is boring to have a pitch black mission, where the player can just waltz through everything without the need of considering blackjacking or other use of equipment. On the other hand, you must not make the mission too difficult with many bright lights and too many AI. &lt;br /&gt;
&lt;br /&gt;
Try to add much variations in your map: there should be low tension zones with darkness (cellars, attics), medium tension zones (corridors with occasional patrols) and high tension zones with constantly present danger (barracks, the vault, the trophy room, the lords study). A constant tension throughout the mission is not a good idea.&lt;br /&gt;
&lt;br /&gt;
Typically decent difficulty is achieved by thinking about the mission as in &amp;quot;light, but with islands of darkness the player can hide in.&amp;quot; Islands of darkness may also mean objects the player can hide behind.&lt;br /&gt;
&lt;br /&gt;
The difficulty is probably too low, if you can effortlessly walk in shadow all the time and through the mission. If you need to make quick rushes from a dark spot to another while the guard looks the other way, you&#039;re probably at correct difficulty. Also remember that the game has equipment. Set the mission difficulty so that the clever use of equipment is rewarded with success. In an excellent mission, the player is given options how to proceed and some equipment should be consumed to make progress. &lt;br /&gt;
&lt;br /&gt;
==The Plot==&lt;br /&gt;
Good missions usually have a plot, a story being told by the location the player is in. The plot (in addition to the geometry) sets the mood and atmosphere of your map. A desperate survival story in a haunted tower? Political intrigue and blackmailing? A common burglary? A setup? An ambush? A pickpocketing heist amidst celebrating nobility?&lt;br /&gt;
&lt;br /&gt;
To create a solid plot you need to answer the following questions, some questions deserve multiple answers:&lt;br /&gt;
What is the mission about? Where is it located? Why these things happen? When? Who is involved? Why should the player / main character care?&lt;br /&gt;
&lt;br /&gt;
When you have a good idea what is going on, you need to convey the plot somehow to the player. Place readables, maybe AI conversations. Put in clues in your rooms. Have the villain AI slay the prince as soon as the player sneaks by. Let the villain drop the piece of parchment. The plot should steadily build up tension until the final clue hammers in with it&#039;s horrific implications. Remember to place the plot elements logically and realistically.&lt;br /&gt;
&lt;br /&gt;
Try to create such a plot it does not require you to limit player progress too much. Do not let the plot ruin player/gameplay fun. The plot is there as an fun amplifier.&lt;br /&gt;
&lt;br /&gt;
Note that the mission might not have a plot per se. If the player explores an interesing location, the plot might be the location telling it&#039;s story. Why was the underground temple built? Who does that mysterious statue portray? Providing such information increases your maps suspension of disbelief, making it far more interesting than just another place to loot.&lt;br /&gt;
&lt;br /&gt;
Try not to cram one mission too full of plot. Why not divide the plot over two short missions? Remember, while a single Thief 1 mission had it&#039;s own plot, it progressed a bigger plot that overarched through the whole game. Typically the single mission length plot is not very long or complex.&lt;br /&gt;
&lt;br /&gt;
==Gameplay and Design==&lt;br /&gt;
Your mission is for a game. Games should be fun, not frustrating. When creating something, ask yourself: &amp;quot;If I was playing this and I didn&#039;t know whats coming, would this be fun?&amp;quot; If the result is a &#039;no&#039;, then modify until you get a &#039;yes.&#039; Ask this question very often. This question is probably the most important advice in this article. Write it down somewhere and look at it when you map. ;-D&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The Start Place==&lt;br /&gt;
&lt;br /&gt;
Provide some imaginary way that the player has arrived at the start. This might be by starting in mid air near an unclimbable wall so at the start it is as if he just climbed and dropped over from the other side. Another common alternative is a closed, unopenable door or gate behind the player as if the player entered that way.&lt;br /&gt;
&lt;br /&gt;
Some FMs can take a while to load first time, especially big FMs on low-end systems. It is highly recommended that you start the player where he cannot be seen, heard (dropping off a wall, or felt (yes, Dark Mod AI can &#039;feel&#039; the player if they bump into him/her,)  by enemy right at the start. If there is a special case such as the start of Alchemist then warn players in advance. Otherwise the player might not be attentive or even gone for a coffee and come back to find the FM not only started but failed already!&lt;br /&gt;
&lt;br /&gt;
==Secrets==&lt;br /&gt;
How to do secret compartments and rooms? The player needs to be somehow able to find your secrets. You need to set clues to nudge the player to the correct direction. This essentially breaks into two categories: written clues and visual clues. Other types are possible, but these are probably the most common ones.&lt;br /&gt;
&lt;br /&gt;
If there is no written clue to the secret, put in visual clues. Generally visual clue tells the observant player that there is something odd in the room, hinting that there most likely is a secret there. If done properly, no written clue is needed. The player will notice the visual clue, and starts systematically search the room until the secret is found. Examples of visual clues are strangely placed furniture, odd details like hinges or rails on a bookshelf, or a scratch decal caused by the secret door movement on the floor. If the secret is behind a painting, put the painting a bit skewed, so it looks it was tampered with recently.&lt;br /&gt;
&lt;br /&gt;
The other type of clue is the readable clue. In it&#039;s simplest form, you say in a readable &amp;quot;there is a secret in this and that room,&amp;quot; then you can hide the secret without any visual clues. You need to be specific enough in your clue that the area to be searched is roughly the size of one room. &amp;quot;There is a secret in the mansion&amp;quot; clue would be useless. Note also that the player can not then find the secret if he cannot find the readable.&lt;br /&gt;
&lt;br /&gt;
Whatever clues you give to the player, always bet on stupidity and don&#039;t make them too cryptic. If the objective attached to the secret is optional, when there is no limits for your deviousness. &lt;br /&gt;
&lt;br /&gt;
Also, most players do not have eidetic memory, so it would be nice to have the written clues to be moveable so the players can take them with them and re-examine them if they need to do so.&lt;br /&gt;
&lt;br /&gt;
==Puzzles and Hidden Objects==&lt;br /&gt;
Always bet on stupidity. People will misunderstand clues and riddles, so make them seem easier rather than difficult. What seems too easy for the map creator typically is challenging for the player. If it is challenging for the mapper it is most likely impossible for the player. I am not implying players are dumber than the mappers! Mappers know their own creation very well, and it is difficult for them to estimate whether their creation is challenging enough when viewed from the outside. Usually external view is more difficult than the mapper view. Take this into account when creating puzzles, hidden compartments and hidden keys.&lt;br /&gt;
&lt;br /&gt;
Puzzles and riddles should be solvable using game world help and assets. It is not a good idea to design a puzzle which requires the player to stop playing, quit and search the internet to solve the problem. This only breaks the playing session and frustrates people. If you put a latin text in your mission, you should put a latin dictionary in your mission, rather than expect the player to stop playing an grabbing a dictionary!&lt;br /&gt;
&lt;br /&gt;
There is a way to make as difficult puzzles as you like. Make the objective optional! Doing so you will reward the clever players who crack your difficult puzzle, but on the other hand the players who are already challenged by your map can enjoy it, without the map getting too rough for them.&lt;br /&gt;
&lt;br /&gt;
==Non-Pickable Doors, Keys and Mission Critical Objects== &lt;br /&gt;
Non-pickable locked doors are very dangerous elements. You can ruin your mission with these. Use them sparingly! This kind of door is a plot/mapper imposed obstacle, which requires the player to do things in the order the mapper wants. It may be vital for the plot, but remember that the player *will* be frustrated if he misses the key. Put in clues to lead the player to the key. Put the key in an obvious place so the player will not miss it. Put some kind of light to make the object more visible. Put the key in a logical place! The same advise applies to any kind of Mission Critical Object the player must possess to make progress. Do not have the player walk all the way to Mordor only to realize he left the hidden One Ring back in the Shire.&lt;br /&gt;
&lt;br /&gt;
Think about other options: you could put a difficult pickable door instead of the non-pickable one, place a guard and a nonextinguishable light. Have the guard go for a short patrol, but so short the door cannot be picked while he is gone. Let the patrol be long enough for the player to easily open the door with a key. The player can go there if he/she wishes, but it is much easier with the key. Let the player enjoy your location in the order he chooses. Give player options, but have the options have consequences.&lt;br /&gt;
&lt;br /&gt;
==Ladders== &lt;br /&gt;
Since AI cannot use ladders, they are a player breather element: a place to run away. Thus they should be used sparingly. Alternatively, you could use monsterclip brushes to allow the AI to follow the player. Keep in mind the opposite when designing your mission: the player should have at least some kind of escape and hiding place if things go awry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Mission_Design_Tips&amp;diff=11781</id>
		<title>Mission Design Tips</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Mission_Design_Tips&amp;diff=11781"/>
		<updated>2010-12-19T15:55:30Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Secrets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Mission Design Tips =&lt;br /&gt;
While the technical aspects of a mission creation is well covered by Fidcal&#039;s excellent A-Z map creation tutorial, there are other non-technical things to be considered when creating a TDM mission. I&#039;ll try to point out these things in this article. I welcome others to add more to this. And please note that some things herein are a matter of taste. The idea is more to make people think about these design elements. -Sotha&lt;br /&gt;
&lt;br /&gt;
== Preparing for mission building ==&lt;br /&gt;
If you are a novice mapper, going forth to create your very first map, start small, fun and simple. Look at the Thief&#039;s Den 1, the Outpost and the Pandora&#039;s Box. Small, fun and excellent. Try not to create something really ambitious. Do something like that once you&#039;ve more experience and confidence in your mapping skills. There are many things to be learned through trial and error.&lt;br /&gt;
&lt;br /&gt;
It is always a good idea to think in advance how your mission flows. You should have a general idea what you&#039;re doing before you start mapping. Have a scetchy floorplan. Find some images for inspiration from the net. It is much easier to create a scene from an image than from your mind. Think about the plot. If you want an elaborate plot, you should think some kind of beginning, a turning point (the point of no return) and the ending. This about the map difficulty. How to place zones of low, medium and high tension. You do not need to think everything before mapping, but when your mapping project has a good foundation it is much more easy to stay on target and not get lost in trivialities. With a good plan, you *will* save time and your nerves. Remember nothing forces you to stick with the plan if you have an even better idea. But in order to get something done, it is better to stick with the plan and record the brilliant idea somewhere so you can use it in a later mission.&lt;br /&gt;
&lt;br /&gt;
==Creating Basic Geometry==&lt;br /&gt;
Try to avoid linear maps. Make the maps such that you can access common areas through multiple routes. The critical areas probably have smaller amount of entries. Supercritical places like bank vaults should have high tension guarding and security. Only one entry way.&lt;br /&gt;
&lt;br /&gt;
It might be a good idea to lay in few brushes according to your floorplan and check how it is going to work. Place an AI as reference so you see how the floorplan scales to a human being.&lt;br /&gt;
&lt;br /&gt;
While mapping, write down all ideas you get while working on your map. You might get some cool location or plot elements, which would be a shame if you forgot them.&lt;br /&gt;
&lt;br /&gt;
When building the geometry or planning it, try to make it realistic. If people live in the region you create, there should be conveniences people require: sustenance, shelter and convenience. Create the rooms in a purposeful, logical locations. Like in real life, each room serve some kind of purpose. Try to relay the meaning to the player. Doing this makes your locale believable, which is important for immersion. &lt;br /&gt;
&lt;br /&gt;
If you find this difficult, check the net for castle/manor/crypt floorplans. Note that which rooms are where. This will get you on the right track.&lt;br /&gt;
&lt;br /&gt;
==Difficulty==&lt;br /&gt;
Once the basic level geometry is created and you&#039;re starting to add details, you should rethink about the mission difficulty. Basically you need to have your map bright enough so that the AI has possibility of seeing the player. Also you need to have enough AI&#039;s to challenge the player. It is boring to have a pitch black mission, where the player can just waltz through everything without the need of considering blackjacking or other use of equipment. On the other hand, you must not make the mission too difficult with many bright lights and too many AI. &lt;br /&gt;
&lt;br /&gt;
Try to add much variations in your map: there should be low tension zones with darkness (cellars, attics), medium tension zones (corridors with occasional patrols) and high tension zones with constantly present danger (barracks, the vault, the trophy room, the lords study). A constant tension throughout the mission is not a good idea.&lt;br /&gt;
&lt;br /&gt;
Typically decent difficulty is achieved by thinking about the mission as in &amp;quot;light, but with islands of darkness the player can hide in.&amp;quot; Islands of darkness may also mean objects the player can hide behind.&lt;br /&gt;
&lt;br /&gt;
The difficulty is probably too low, if you can effortlessly walk in shadow all the time and through the mission. If you need to make quick rushes from a dark spot to another while the guard looks the other way, you&#039;re probably at correct difficulty. Also remember that the game has equipment. Set the mission difficulty so that the clever use of equipment is rewarded with success. In an excellent mission, the player is given options how to proceed and some equipment should be consumed to make progress. &lt;br /&gt;
&lt;br /&gt;
==The Plot==&lt;br /&gt;
Good missions usually have a plot, a story being told by the location the player is in. The plot (in addition to the geometry) sets the mood and atmosphere of your map. A desperate survival story in a haunted tower? Political intrigue and blackmailing? A common burglary? A setup? An ambush? A pickpocketing heist amidst celebrating nobility?&lt;br /&gt;
&lt;br /&gt;
To create a solid plot you need to answer the following questions, some questions deserve multiple answers:&lt;br /&gt;
What is the mission about? Where is it located? Why these things happen? When? Who is involved? Why should the player / main character care?&lt;br /&gt;
&lt;br /&gt;
When you have a good idea what is going on, you need to convey the plot somehow to the player. Place readables, maybe AI conversations. Put in clues in your rooms. Have the villain AI slay the prince as soon as the player sneaks by. Let the villain drop the piece of parchment. The plot should steadily build up tension until the final clue hammers in with it&#039;s horrific implications. Remember to place the plot elements logically and realistically.&lt;br /&gt;
&lt;br /&gt;
Try to create such a plot it does not require you to limit player progress too much. Do not let the plot ruin player/gameplay fun. The plot is there as an fun amplifier.&lt;br /&gt;
&lt;br /&gt;
Note that the mission might not have a plot per se. If the player explores an interesing location, the plot might be the location telling it&#039;s story. Why was the underground temple built? Who does that mysterious statue portray? Providing such information increases your maps suspension of disbelief, making it far more interesting than just another place to loot.&lt;br /&gt;
&lt;br /&gt;
Try not to cram one mission too full of plot. Why not divide the plot over two short missions? Remember, while a single Thief 1 mission had it&#039;s own plot, it progressed a bigger plot that overarched through the whole game. Typically the single mission length plot is not very long or complex.&lt;br /&gt;
&lt;br /&gt;
==Gameplay and Design==&lt;br /&gt;
Your mission is for a game. Games should be fun, not frustrating. When creating something, ask yourself: &amp;quot;If I was playing this and I didn&#039;t know whats coming, would this be fun?&amp;quot; If the result is a &#039;no&#039;, then modify until you get a &#039;yes.&#039; Ask this question very often. This question is probably the most important advice in this article. Write it down somewhere and look at it when you map. ;-D&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The Start Place==&lt;br /&gt;
&lt;br /&gt;
Provide some imaginary way that the player has arrived at the start. This might be by starting in mid air near an unclimbable wall so at the start it is as if he just climbed and dropped over from the other side. Another common alternative is a closed, unopenable door or gate behind the player as if the player entered that way.&lt;br /&gt;
&lt;br /&gt;
Some FMs can take a while to load first time, especially big FMs on low-end systems. It is highly recommended that you start the player where he cannot be seen, heard (dropping off a wall, or felt (yes, Dark Mod AI can &#039;feel&#039; the player if they bump into him/her,)  by enemy right at the start. If there is a special case such as the start of Alchemist then warn players in advance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Secrets==&lt;br /&gt;
How to do secret compartments and rooms? The player needs to be somehow able to find your secrets. You need to set clues to nudge the player to the correct direction. This essentially breaks into two categories: written clues and visual clues. Other types are possible, but these are probably the most common ones.&lt;br /&gt;
&lt;br /&gt;
If there is no written clue to the secret, put in visual clues. Generally visual clue tells the observant player that there is something odd in the room, hinting that there most likely is a secret there. If done properly, no written clue is needed. The player will notice the visual clue, and starts systematically search the room until the secret is found. Examples of visual clues are strangely placed furniture, odd details like hinges or rails on a bookshelf, or a scratch decal caused by the secret door movement on the floor. If the secret is behind a painting, put the painting a bit skewed, so it looks it was tampered with recently.&lt;br /&gt;
&lt;br /&gt;
The other type of clue is the readable clue. In it&#039;s simplest form, you say in a readable &amp;quot;there is a secret in this and that room,&amp;quot; then you can hide the secret without any visual clues. You need to be specific enough in your clue that the area to be searched is roughly the size of one room. &amp;quot;There is a secret in the mansion&amp;quot; clue would be useless. Note also that the player can not then find the secret if he cannot find the readable.&lt;br /&gt;
&lt;br /&gt;
Whatever clues you give to the player, always bet on stupidity and don&#039;t make them too cryptic. If the objective attached to the secret is optional, when there is no limits for your deviousness. &lt;br /&gt;
&lt;br /&gt;
Also, most players do not have eidetic memory, so it would be nice to have the written clues to be moveable so the players can take them with them and re-examine them if they need to do so.&lt;br /&gt;
&lt;br /&gt;
==Puzzles and Hidden Objects==&lt;br /&gt;
Always bet on stupidity. People will misunderstand clues and riddles, so make them seem easier rather than difficult. What seems too easy for the map creator typically is challenging for the player. If it is challenging for the mapper it is most likely impossible for the player. I am not implying players are dumber than the mappers! Mappers know their own creation very well, and it is difficult for them to estimate whether their creation is challenging enough when viewed from the outside. Usually external view is more difficult than the mapper view. Take this into account when creating puzzles, hidden compartments and hidden keys.&lt;br /&gt;
&lt;br /&gt;
Puzzles and riddles should be solvable using game world help and assets. It is not a good idea to design a puzzle which requires the player to stop playing, quit and search the internet to solve the problem. This only breaks the playing session and frustrates people. If you put a latin text in your mission, you should put a latin dictionary in your mission, rather than expect the player to stop playing an grabbing a dictionary!&lt;br /&gt;
&lt;br /&gt;
There is a way to make as difficult puzzles as you like. Make the objective optional! Doing so you will reward the clever players who crack your difficult puzzle, but on the other hand the players who are already challenged by your map can enjoy it, without the map getting too rough for them.&lt;br /&gt;
&lt;br /&gt;
==Non-Pickable Doors, Keys and Mission Critical Objects== &lt;br /&gt;
Non-pickable locked doors are very dangerous elements. You can ruin your mission with these. Use them sparingly! This kind of door is a plot/mapper imposed obstacle, which requires the player to do things in the order the mapper wants. It may be vital for the plot, but remember that the player *will* be frustrated if he misses the key. Put in clues to lead the player to the key. Put the key in an obvious place so the player will not miss it. Put some kind of light to make the object more visible. Put the key in a logical place! The same advise applies to any kind of Mission Critical Object the player must possess to make progress. Do not have the player walk all the way to Mordor only to realize he left the hidden One Ring back in the Shire.&lt;br /&gt;
&lt;br /&gt;
Think about other options: you could put a difficult pickable door instead of the non-pickable one, place a guard and a nonextinguishable light. Have the guard go for a short patrol, but so short the door cannot be picked while he is gone. Let the patrol be long enough for the player to easily open the door with a key. The player can go there if he/she wishes, but it is much easier with the key. Let the player enjoy your location in the order he chooses. Give player options, but have the options have consequences.&lt;br /&gt;
&lt;br /&gt;
==Ladders== &lt;br /&gt;
Since AI cannot use ladders, they are a player breather element: a place to run away. Thus they should be used sparingly. Alternatively, you could use monsterclip brushes to allow the AI to follow the player. Keep in mind the opposite when designing your mission: the player should have at least some kind of escape and hiding place if things go awry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Objectives_Editor&amp;diff=11780</id>
		<title>Objectives Editor</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Objectives_Editor&amp;diff=11780"/>
		<updated>2010-12-19T15:44:56Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* The standard &amp;quot;exit here when you&amp;#039;re done objective&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Written by HappyCheeze and Fidcal. Small additions by Sotha.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
The objectives editor is a very useful tool located inside Darkradiant (Version 0.9.7 or later) that allows the map author to set objectives or goals that the player must do in order to win the level. The opposite is also true, the author can set restrictions that the player must adhere to, or will fail the mission.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Adding Objectives Entities==&lt;br /&gt;
&lt;br /&gt;
 IMPORTANT: The add objectives entity has been renamed to atdm:target_addobjectives so ignore any reference to the old name target_tdm_addobjectives in the images.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To access the objectives editor once inside Darkradiant, click the pull-down menu Map&amp;gt;Objectives... &lt;br /&gt;
[[Image:Objmenu.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Upon clicking you will see a separate window that looks like this. &lt;br /&gt;
[[Image:Objedblank.png|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
To start things off, click the &lt;br /&gt;
[[Image:%2Badd.png]]Button&lt;br /&gt;
&lt;br /&gt;
[[Image:Msnobjadd.png]]&lt;br /&gt;
&lt;br /&gt;
This will create an Entity that stores all of the objectives information that will you be editing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we&#039;ve spawned our objectives entity,&lt;br /&gt;
{{clear}}&lt;br /&gt;
[[Image:Objentity.png]]&lt;br /&gt;
{{clear}}&lt;br /&gt;
Notice the numbers in the “[]”&#039;s. Those are the entities&#039; coordinates on the map. These numbers will most likely be different from yours.  When the objectives entity spawns it is placed randomly around the origin (As of 0.9.7 this is how it is, it might change in future versions, but for now this is how it is).&lt;br /&gt;
&lt;br /&gt;
 *Note:Be mindful that sometimes this entity will spawn outside your map and into the void. This will cause a leak, so look around the origin.&lt;br /&gt;
&lt;br /&gt;
 **Alternatively you can right-click in an orthogonal view, create entity, Targets/atdm:target_addobjectives. This will create a small yellow box like placing any entity or object. Then when you open the objectives editor it will be in the list. Good to do this where the players starts, it will always be easy to find.&lt;br /&gt;
&lt;br /&gt;
==Adding Objectives==&lt;br /&gt;
&lt;br /&gt;
Now we&#039;re ready to start adding some objectives.&lt;br /&gt;
&lt;br /&gt;
Click the second [[Image:%2Badd.png]] Button&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Newobj1.png|left]]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
Under Objectives you&#039;ll notice there&#039;s a new Objective. You can add more as needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Editing Objectives==&lt;br /&gt;
&lt;br /&gt;
Click an objective in the list than click [[Image:Edit.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will bring up this window.&lt;br /&gt;
{{clear}}&lt;br /&gt;
[[Image:Editobj.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we&#039;re editing our first objective. It may seem a little confusing at a first glance but a lot of it is self explanitory and a little practice will take you a long way.&lt;br /&gt;
&lt;br /&gt;
So what do all these various lines and checkboxes do? &lt;br /&gt;
They effect the objective components at the bottom.&lt;br /&gt;
&lt;br /&gt;
What do they all mean?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: This what the player will read in the objectives menu. For example: “Steal the scepter”, “Don&#039;t kill any guards”, “Get back to where you entered the warehouse”. Its explaining what you want to player read so he/she knows what to do. A good rule to follow is to make them short and to the point.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;:These refer to Easy/Medium/Hard difficulty levels. If the author wishes, they can be different for each difficulty. For example: on Hard difficulty the player will have to avoid being seen. On Easy the player will only have to steal 200 gold at the minimum. All Levels means that the objectives that are checked under this will be there regardless of difficulty. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Initial State&#039;&#039;&#039;:This is the condition of the objective at mission start. There are four options. Complete, Incomplete, Invalid, Failed. Typically the objective will be incomplete and the player has to complete it in-game to fulfil the objective.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flags&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Mandatory&#039;&#039; means the objective in question is necessary to complete the game. If it is unchecked than the objective will be optional. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ongoing&#039;&#039; means that the objective won&#039;t show completion until the end of the mission. Use this with do NOT type objectives, eg, do NOT kill.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Irreversible&#039;&#039; means that once the objective is done it will not UNcheck even if logically in the game it becomes no longer true. Example: get a special object. If the player later drops it normally the objective will then UNcheck because the player no longer has got it. But sometimes you don&#039;t want it to reverse. Example: get magic skull. New objective: throw it in magic pool. Player no longer has &#039;got&#039; the skull so normally it would then UNcheck the objective. Make it irreversible and it won&#039;t. Another example is to go to a location. If the player then leaves it would UNcheck so make it irreversible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Visible&#039;&#039; means that objective will be visible in the objectives menu ingame. If unchecked than there will be no objective shown. (The objective will still work, it just won&#039;t show up in the menu).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enabling Objectives:&#039;&#039;&#039;&lt;br /&gt;
These are other objectives that must be completed before this objective can be done. Example: &#039;&#039;&amp;quot;When you have completed your main objectives, escape from the castle.&amp;quot;&#039;&#039; So, those main objectives would be the enabling objectives and if the player escapes the castle without doing them first then the escape objective does not check off either.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Logic Success:&#039;&#039;&#039;&lt;br /&gt;
These are only needed if you have more than one type component. For example, if you can escape the castle by either of two routes this would be an objective with two go to &#039;&#039;location&#039;&#039; components. These components would be numbered 1 and 2 so the logic success would be 1 OR 2 since either would work. If however you wanted say the player to escape the castle via a special corridor then the player has to go to both corridor location and exit castle location so that would be logic success 1 AND 2. Those components need not necessarily be the same type - the player might be required to pull a lever AND escape for example (even though he could escape without pulling the lever but you don&#039;t want him to.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scripts&#039;&#039;&#039;: Under Construction&lt;br /&gt;
&lt;br /&gt;
==Components==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Components&#039;&#039;&#039;: These are the type of objective you want, eg, steal, kill - or rather &#039;types&#039; because each objective can have more than one (eg, go to exit A or go to exit B or it could be go to exit A AND go to exit B! - see logic success) These type components are used by the editor to specify what objectives need to be done. The map author can choose from a variety of options under &#039;&#039;&#039;Type&#039;&#039;&#039; with varying degrees of specification. For example: Knocking out an AI named &amp;quot;Roy&amp;quot;. Not being seen by the ANY enemy. (less examples, should cover this in the coming up tutorial.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Components Flags&#039;&#039;&#039;:Components have their own special flags as well. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Satisfied at Start&#039;&#039;:For some objectives it makes sense to have them done at start. For example: Not killing anyone.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Irreversible&#039;&#039;:One the objective has reached a certain state, it will stay that way and not change. (more elaboration, an example?)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Boolean NOT&#039;&#039;:Adds &amp;quot;NOT&amp;quot; to your component so the player has to do the opposite of said objective. For example: Do NOT kill any AI on team 2.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Player Responsible&#039;&#039;:The player MUST follow through with the objective himself. For example:The player must kill the zombie to complete the objective, instead of letting something else take care of it.&lt;br /&gt;
&lt;br /&gt;
Now it might seem a bit crazy trying to take all of this in at once, so lets start with something easy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tutorial ==&lt;br /&gt;
&lt;br /&gt;
 *Note:This tutorial is assuming you&#039;ve learned the basics for using Darkradiant.&lt;br /&gt;
&lt;br /&gt;
You should already be in Darkradiant. Start a new map if you&#039;re in an existing one. &lt;br /&gt;
&lt;br /&gt;
We&#039;ll start with the basic cube room. Nothing fancy, just make a room, stick in a player start, a light and plaster on some textures.&lt;br /&gt;
[[Image:cube.png|left]]&lt;br /&gt;
{{clear}}&lt;br /&gt;
For this tutorial, our player is going to have to knock out a guard and steal a trophy.&lt;br /&gt;
&lt;br /&gt;
So lets start with adding the AI, I chose atdm:ai_citywatch. Select him, go into the entity editor (&amp;quot;N&amp;quot;) and change his NAME to &amp;quot;Roy&amp;quot; (without quotes).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now its time to open up our objectives editor. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Objmenu.png|left]]&lt;br /&gt;
{{clear}}&lt;br /&gt;
Now as you just learned, click add, click the atdm:target_addobjectives_1 and click add again.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;Edit Objective&#039;&#039; window should be open now. Clear the text under &#039;&#039;&#039;Description&#039;&#039;&#039; and type in &amp;quot;Knock out the guard&amp;quot;. Set the initial state to &#039;Complete&#039;. Check the &#039;&#039;&#039;Mandatory&#039;&#039;&#039; and &#039;&#039;&#039;Visible&#039;&#039;&#039; flags.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Time for a new step, click the [[Image:%2Badd.png]] button under &#039;&#039;&#039;Components&#039;&#039;&#039; and the word &amp;quot;Kill&amp;quot; should appear. Select it and you will see some more options. Under &#039;&#039;&#039;Type&#039;&#039;&#039; select &amp;quot;AI is knocked out&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
under &#039;&#039;&#039;Knockout target:&#039;&#039;&#039; select &amp;quot;Name of single entity&amp;quot; and type in the box to the right of it, &amp;quot;roy&amp;quot; (without quotes). Set amount to 1.&lt;br /&gt;
&lt;br /&gt;
Now compare your screen to this, it should be the same.&lt;br /&gt;
[[Image:Editprogress.png|left|]]&lt;br /&gt;
{{clear}}&lt;br /&gt;
If all looks good than click OK.&lt;br /&gt;
&lt;br /&gt;
Its always a good idea to test things to make sure everything is running right. So save your map, get into TDM and load your map.&lt;br /&gt;
&lt;br /&gt;
First, hit ESC and click &#039;&#039;Objectives&#039;&#039;. You should see your objective onscreen.&lt;br /&gt;
[[Image:Onjyes.png]]&lt;br /&gt;
 *NOTE:If you don&#039;t see it on screen, you probably forgot to check the &#039;&#039;&#039;Visible&#039;&#039;&#039; box.&lt;br /&gt;
&lt;br /&gt;
Now its time to test your objective. Exit out of the objectives menu and launch a gas arrow or use the blackjack on poor Roy. When he goes down you should see the words &amp;quot;Objective Complete&amp;quot; appear onscreen and since thats the only objective we&#039;ve added so far you&#039;ll win the mission.&lt;br /&gt;
 *NOTE:If you don&#039;t win nor see the on screen message, go back and try to figure what you did wrong.&lt;br /&gt;
&lt;br /&gt;
If all is well than its time to move on. Exit TDM and go back into Darkradiant. &lt;br /&gt;
&lt;br /&gt;
Now it is time to add the trophy. In your map add a trophy somewhere, I used the entity loot&amp;gt;atdm:loot_trophy_old&lt;br /&gt;
change its name to &amp;quot;trophy&amp;quot; and go back into objectives editor.&lt;br /&gt;
&lt;br /&gt;
Add another objective and edit it. &lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039; should be &#039;&#039;Steal the Trophy&#039;&#039;. State is &#039;&#039;Complete&#039;&#039;, &#039;&#039;&#039;Flags&#039;&#039;&#039; should be &#039;&#039;Mandatory&#039;&#039; and &#039;&#039;Visible&#039;&#039;. Click ADD and select &#039;&#039;&#039;Player possesses item&#039;&#039;. Change &#039;&#039;&#039;Item:&#039;&#039;&#039; to &#039;&#039;Name of single entity&#039;&#039; and type in the box to right, &amp;quot;trophy&amp;quot;. Change the amount to &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Your objective should look like this.&lt;br /&gt;
[[Image:Trophyedit.PNG|left]]&lt;br /&gt;
{{clear}}&lt;br /&gt;
Since this is a tutorial this map is very small and very basic so we are tossing all pre-thought and planning for the objectives out the window. As maps get bigger, more elaborate, complex, so too will the objectives be to suit the level. You might want to the trophy in a vault. Maybe the guards will be patrolling. &lt;br /&gt;
&lt;br /&gt;
Save your map and load it up in TDM. Look at the objectives menu to see if the fresh addition is there. And than take it and see if it completes the objective.&lt;br /&gt;
&lt;br /&gt;
Congratulations!&lt;br /&gt;
&lt;br /&gt;
You now have a basic understanding of how the objectives editor works. For more advanced work, look for more tutorials in the future or go on the forums.&lt;br /&gt;
&lt;br /&gt;
== FAQs &amp;amp; Examples ==&lt;br /&gt;
&lt;br /&gt;
===KO objective but AI already dead!===&lt;br /&gt;
&lt;br /&gt;
;*If I kill the guard I don&#039;t fail the mission, but I can&#039;t complete it either.&lt;br /&gt;
:Answer: I&#039;ll quote Ishtvan for this one. &lt;br /&gt;
:&#039;&#039;&amp;quot;The system is not smart enough to know automatically that someone who&#039;s killed can&#039;t be KO&#039;d later, so if you want it to fail when they&#039;re killed, you have to put that in specifically. Note that this doesn&#039;t have to be a whole &#039;nother objective, it can be a component of the KO objective, so you have two components, KO them, and don&#039;t kill them. We could potentially make this automatic later on, but that&#039;s the way it is right now.&amp;quot;&#039;&#039;&lt;br /&gt;
:Until this is fixed, I&#039;d recommend making a knockout objective optional, unless you want to put in the kill component.&lt;br /&gt;
&lt;br /&gt;
===Kill objective thwarted by another AI===&lt;br /&gt;
&lt;br /&gt;
;*I put a monster in my map and he killed the guard, yet I still passed/failed the objective.&lt;br /&gt;
: Answer: Check the &#039;&#039;&#039;Player Responsible&#039;&#039;&#039; Flag, this means that the player MUST do it himself in order to get credit.&lt;br /&gt;
&lt;br /&gt;
===Leak caused by Objectives Entity===&lt;br /&gt;
&lt;br /&gt;
;*Help! My objectives entity is outside the map and I have a leak! I can&#039;t find it! I even used the pointfile!! help!!!!&lt;br /&gt;
: Answer: The objectives entity is a very small, yellow cube that is spawned around the origin. Its about the size of a light entity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===How to directly trigger an objective or component to complete===&lt;br /&gt;
If the actions that the player has to do in a mission are not directly covered by the normal objectives properties, for example, the player must open a door, then objectives can be triggered to complete by any target entity.&lt;br /&gt;
&lt;br /&gt;
In the objectives editor, to your objective add a component type : custom script. (this might just say &#039;custom&#039; or similar.) The objective now just awaits some external trigger or script in the game to set it complete. To do this with a trigger...&lt;br /&gt;
&lt;br /&gt;
* Create a new entity : &#039;&#039;target_tdm_setobjectivestate&#039;&#039;&lt;br /&gt;
* Give it the properties/values...&amp;lt;br&amp;gt;obj_idN O &amp;lt;br&amp;gt;... where O is the objective number and N is simply the obj_id number if you want several on the same entity. Just use obj_id1 if you only want one.&amp;lt;br&amp;gt; obj_state 1&lt;br /&gt;
&lt;br /&gt;
You must then target that from some triggering entity like a button, lever, door (see [[Doors]]) or you can trigger it from stims &amp;amp; responses or from a custom script.&lt;br /&gt;
&lt;br /&gt;
In a similar way, you can trigger individual components using entity target_tdm_setobjective_component_state. In this give it the properties/values...&lt;br /&gt;
&lt;br /&gt;
* Create a new entity : target_tdm_setobjective_component_state&lt;br /&gt;
* Give it the properties/values...&amp;lt;br&amp;gt;comp_idN C&amp;lt;br&amp;gt;... where N is just this ID number and C is the component number.&amp;lt;br&amp;gt;obj_state 1&lt;br /&gt;
&lt;br /&gt;
Again, trigger that as above.&lt;br /&gt;
&lt;br /&gt;
===How to make my invisible objective become visible to the player later===&lt;br /&gt;
&lt;br /&gt;
There are two methods. One way &#039;&#039;adds&#039;&#039; a new objective at the end of the current list of objectives. The other way makes an existing objective visible. This is the one for general use because it appears in the position in the list where you first put it rather than on the end. It makes sense to have your objectives in some kind of order so for example, you might have right at the end of the list &#039;when all else is done, escape from Castle...&#039;&lt;br /&gt;
 &lt;br /&gt;
====To make an invisible objective visible later====&lt;br /&gt;
&lt;br /&gt;
* Create a new entity : &#039;&#039;atdm:target_setobjective_visibility&#039;&#039;&lt;br /&gt;
* Give it the properties/values...&amp;lt;br&amp;gt;obj_idN O &amp;lt;br&amp;gt;... where O is the objective number and N is simply the obj_id number if you want several on the same entity. Just use obj_id1 if you only want one.&lt;br /&gt;
&lt;br /&gt;
You must then target that from some triggering entity like a button, lever, door (see [[Doors]]) or you can trigger it from stims &amp;amp; responses or from a custom script. Note that sometimes it helps to put in a delay (see below.) It will by default then become visible. You can do it the other way round and make an objective become invisible (remember it is still active by default) by changing the spawnarg value 1 to...&lt;br /&gt;
&lt;br /&gt;
obj_visibility 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====To add a new objective on the end of the list====&lt;br /&gt;
&lt;br /&gt;
* In the objectives editor use the top Add button to create a new &#039;&#039;atdm:target_addobjectives&#039;&#039; entity.&lt;br /&gt;
* Add the new objective(s) just as described above&lt;br /&gt;
* Find the atdm:target_addobjectives entity in the map (you normally need to check it is not in the void anyway plus you might like to place it near where it makes sense the new objective shows.&lt;br /&gt;
* Add to the atdm:target_addobjectives entity the property &#039;&#039;wait_for_trigger&#039;&#039; and the value 1. Otherwise it will show right at the start of the game.&lt;br /&gt;
* You then need to target that atdm:target_addobjectives from some triggering entity like a button, lever, door (see [[Doors]]) or you can trigger it from stims &amp;amp; responses or from a custom script. Note that it may help to include a delay (see below.)&lt;br /&gt;
* The new objective(s) will show as added at the end of the list of objectives when triggered.&lt;br /&gt;
&lt;br /&gt;
====Inserting a delay before new objective shows====&lt;br /&gt;
&lt;br /&gt;
It often helps to include a delay from triggering before the &#039;&#039;New Objective&#039;&#039; message shows. To do this:&lt;br /&gt;
&lt;br /&gt;
* Create a &#039;&#039;trigger_relay&#039;&#039; entity.&lt;br /&gt;
* Give it the properties:&lt;br /&gt;
** &#039;&#039;wait -1&#039;&#039;&lt;br /&gt;
** &#039;&#039;delay N&#039;&#039; (replace N with delay time in seconds)&lt;br /&gt;
** &#039;&#039;target&#039;&#039; &amp;lt;the name of the atdm:target_addobjectives&amp;gt;&lt;br /&gt;
** Make your original trigger target this relay instead of the atdm:target_addobjectives directly.&lt;br /&gt;
&lt;br /&gt;
===Completing Objective Components in a Certain Order===&lt;br /&gt;
&lt;br /&gt;
Suppose you want the player to complete two or more parts of an objective but in a certain order. Example : &amp;quot;Close the office door then open the safe.&amp;quot; In that example you want the player to close the door first not just do both in any order. If you just make the two components they default to a Success Logic of 1 AND 2 which means the player must do both to complete the objective but it does not matter which order. So if the player opens the safe and then closes the office door then the objective will check off - perhaps not what you want. This is how to do it if you want to force the order in which the player does the components...&lt;br /&gt;
&lt;br /&gt;
There are two possible outcomes :&lt;br /&gt;
&lt;br /&gt;
If you want the mission to &#039;&#039;&#039;fail&#039;&#039;&#039; set the failure logic for that objective to&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NOT(1) AND 2&#039;&#039;, i.e., door is open AND safe is open.&lt;br /&gt;
&lt;br /&gt;
But if you just want the objective to not complete (so the player can try again)...&lt;br /&gt;
&lt;br /&gt;
Make &#039;&#039;&#039;two&#039;&#039;&#039; objectives, both using the door and safe components - the first is invisible but still active:&lt;br /&gt;
&lt;br /&gt;
# Objective 1: success logic: Door closed, safe not open = 1 AND NOT(2)&lt;br /&gt;
# Objective 2: success logic: Door closed, safe open = 1 AND 2&amp;lt;br&amp;gt;(Objective 2 enabling objectives = 1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===An Objective to place an object in a Certain Location===&lt;br /&gt;
&lt;br /&gt;
To make an objective where an object has to be placed somewhere:&lt;br /&gt;
&lt;br /&gt;
* Create a brush where you want the object to be put. This might be the size of a room, a street, or a chest or wherever you want the object.&lt;br /&gt;
* Texture it with common &amp;gt; clip&lt;br /&gt;
* With the brush selected, Create entity &amp;gt; info &amp;gt; info_tdm_objective_location&lt;br /&gt;
* Give this entity a name you can remember like BodyDrop. Write it down or in a text editor&lt;br /&gt;
* Give your object, eg, a ragdoll, a name, eg, JakesCorpse and note it down.&lt;br /&gt;
* If it is not the player, then give it the property objective_ent and set it to 1&lt;br /&gt;
* Menu &amp;gt; Map &amp;gt; Objectives&lt;br /&gt;
* If you haven&#039;t yet got any objectives then click the + Add button at top right.&lt;br /&gt;
* This creates a atdm:target_addobjectives entity so later make sure it is not in the void or you get a leak. Put it somewhere convenient. It is not visible in game.&lt;br /&gt;
* Select the atdm:target_addobjectives in the Objectives entities list top left&lt;br /&gt;
* In the objectives list below click the +Add button on the right.&lt;br /&gt;
* This creates a new objective in the objectives list. Select it.&lt;br /&gt;
* Click the edit button on the right.&lt;br /&gt;
* Type a description near the top, eg, Carry Jake&#039;s body back to X and drop it in the soandso&lt;br /&gt;
* In the components list further down click the +Add button on the right.&lt;br /&gt;
* This creates a default Kill objective. Select it. Click the Edit button.&lt;br /&gt;
* Just below it click the Type bar and from the list that show select &#039;Item is in location&#039;&lt;br /&gt;
* Further down click the bar below &#039;Entity&#039; and select &#039;Name of single entity&#039;&lt;br /&gt;
* On the right of that type or paste in the name of the object (eg ragdoll) entity eg, JakesCorpse&lt;br /&gt;
* Below, click the bar below Location and select &#039;Name of single entity&#039;&lt;br /&gt;
* On the right of that type or paste in the location entity name you gave above, eg, BodyDrop&lt;br /&gt;
* Click the OK button and OK again and save your map.&lt;br /&gt;
&lt;br /&gt;
=== Optional &#039;No alerts&#039;, KO&#039;s, and Kills ===&lt;br /&gt;
&lt;br /&gt;
It is recommended that &#039;No alerts&#039;, KO&#039;s, and Kills be optional or at least provide a separate difficulty level that approximates another where these are enforced. Many players find these restrictions limiting and often very annoying. Some will abandon an FM in frustration if they find they can barely move without triggering an alert - mission failed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The standard &amp;quot;exit here when you&#039;re done objective&amp;quot; ===&lt;br /&gt;
* Place a brush in the location you want to work as the exit.&lt;br /&gt;
* Give it texture textures/common/clip&lt;br /&gt;
* Make the thing into an entity info_tdm_objective_location&lt;br /&gt;
* Give it name player_exit&lt;br /&gt;
* Go to objectives editor and make an objective &amp;quot;After you&#039;re done, go to the exit&amp;quot; or something like that. Set it to be INCOMPLETE and mandatory.&lt;br /&gt;
* Set enabling objectives. Here you need to set which objectives need to be complete for the exit to work. If you have objective numbers 1 and 2 must be completed in order the player to exit, you need to put text &amp;quot;1 AND 2&amp;quot; in the enabling objectives box. If you need to have objectives 1,2 and 5 completed you need to put &amp;quot;1 AND 2 AND 5&amp;quot;&lt;br /&gt;
You can check the objective numbers in the objective editor window under &amp;quot;#&amp;quot; mark.&lt;br /&gt;
* set the component to be:&lt;br /&gt;
* Type: item in location&lt;br /&gt;
* Entity: any entity with SDK-level spawnclass idPlayer&lt;br /&gt;
* Location: name of single entity player_exit&lt;br /&gt;
&lt;br /&gt;
Please note that you need to create a separate exit objective for each difficulty level, since the enabling objective numbers change with difficulty levels.&lt;br /&gt;
&lt;br /&gt;
===Technical info===&lt;br /&gt;
&lt;br /&gt;
;*I have some other questions about objectives&lt;br /&gt;
: Answer:This article talks about more specific, more technical and advanced work. [[Objectives]]&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}} {{darkradiant}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Difficulty_Levels&amp;diff=11779</id>
		<title>Difficulty Levels</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Difficulty_Levels&amp;diff=11779"/>
		<updated>2010-12-19T15:35:24Z</updated>

		<summary type="html">&lt;p&gt;Fidcal: /* Excluding &amp;amp; Restricting Entities from/to Difficulty Levels */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==General information==&lt;br /&gt;
&lt;br /&gt;
You can change what is in your FM and the way it plays on the different difficulty levels.&lt;br /&gt;
&lt;br /&gt;
It is highly recommended that you do not use these methods to exclude entire sections or interesting features unless you declare this somewhere in the objectives text or in the readme. It&#039;s also a good idea to declare if the player will &#039;&#039;not&#039;&#039; miss anything whichever difficulty setting he/she chooses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Excluding &amp;amp; Restricting Entities from/to Difficulty Levels==&lt;br /&gt;
&lt;br /&gt;
To restrict an entity to a particular difficulty setting you &#039;&#039;exclude&#039;&#039; it from the others, as follows...&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;exclude&#039;&#039; an entity from a particular difficulty level you set it to not spawn as follows:&lt;br /&gt;
&lt;br /&gt;
* Select the entity&lt;br /&gt;
* Add the following property and value:&lt;br /&gt;
* diff_N_nospawn 1 ... replace N with...&lt;br /&gt;
** 0 = &#039;Easy&#039;&lt;br /&gt;
** 1 = &#039;Hard&#039;&lt;br /&gt;
** 2 = &#039;Expert&#039;&lt;br /&gt;
* The &#039;1&#039; enables it to not spawn and 0 would allow it to spawn (the default)&lt;br /&gt;
&lt;br /&gt;
==Placing Entities at Different Locations on Different Difficulty Settings==&lt;br /&gt;
&lt;br /&gt;
There is a special spawnarg to change the location and rotation of an entity on different difficulty levels:&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;diff_N_change_0&amp;quot; &amp;quot;origin&amp;quot;&lt;br /&gt;
&amp;quot;diff_N_arg_0&amp;quot; &amp;quot;-2530 795 -5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;diff_N_change_1&amp;quot; &amp;quot;rotation&amp;quot;&lt;br /&gt;
&amp;quot;diff_N_arg_1&amp;quot; &amp;quot;315&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
... where N is the difficulty 0, 1, or 2&lt;br /&gt;
&lt;br /&gt;
(note that the number &amp;quot;x&amp;quot; in &amp;quot;change_x&amp;quot; must correspond to the &amp;quot;arg_x&amp;quot; value in the example above) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is another method but not needed if you use the above...&lt;br /&gt;
&lt;br /&gt;
You can position an entity in different locations on different difficulty levels. To do this...&lt;br /&gt;
&lt;br /&gt;
* Clone the entity so you have one copy for each location you want.&lt;br /&gt;
* Optionally rename the entities, eg, sceptor_easy, sceptor_hard, sceptor_expert&lt;br /&gt;
* Add the properties and values, eg, for the one to be used on Easy you would exclude Hard(1) and Expert(2)...&lt;br /&gt;
** diff_1_nospawn 1&lt;br /&gt;
** diff_2_nospawn 1&lt;br /&gt;
* Move the entities to the locations you want.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objectives: &#039;&#039;&#039; If the entity is an objective then you will need three objectives each having their own difficulty setting (see [[Objectives]])&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inventory Name Clash:&#039;&#039;&#039; If testing with no difficulty settings set then all three copies of the entity will appear the in the mission. In that case if the entity can go in the player inventory, each must have an exclusive inventory name or only the first one can be frobbed (if already in inventory at start not sure - maybe error or only one show.) You can get round that by varying the inv_name property on each, eg, &#039;A sceptor&#039;, &#039;The sceptor&#039;, &#039;Sceptor&#039;, &#039;Lord&#039;s sceptor&#039; but you might want to change those back to one name after testing.&lt;br /&gt;
&lt;br /&gt;
==Changing Properties on Entity Instances based on Difficulty Settings==&lt;br /&gt;
&lt;br /&gt;
As an example, say you wanted a statue on medium difficulty to face 90 degrees instead where it faces on easy difficulty, 0 degrees.  On that instance of the statue, you could add the properties:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;diff_1_change_0&amp;quot; &amp;quot;angle&amp;quot;&lt;br /&gt;
 &amp;quot;diff_1_arg_0&amp;quot; &amp;quot;90&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Translated:  At difficulty 1 (medium), the first (0) of a possible list of changes, is applied to the property called &amp;quot;angle&amp;quot;.  The value of the corresponding change is then passed by the arg(ument) keypair, and is &amp;quot;90&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The properties of individual entities can be controlled with difficulty level in this manner, in contrast to the Difficulty Editor, which changes classes instead of instances.&lt;br /&gt;
&lt;br /&gt;
== Relative Changes ==&lt;br /&gt;
You can either assign new values to spawnargs (like the &amp;quot;angle&amp;quot; &amp;quot;90&amp;quot; example above) or change spawnargs relatively to the existing values. Both additive and multiplicative changes are possible:&lt;br /&gt;
&lt;br /&gt;
Add 45 degrees to the &amp;quot;angle&amp;quot; property like this:&lt;br /&gt;
 &amp;quot;diff_1_change_0&amp;quot; &amp;quot;angle&amp;quot;&lt;br /&gt;
 &amp;quot;diff_1_arg_0&amp;quot; &amp;quot;+45&amp;quot;&lt;br /&gt;
Double the &amp;quot;health&amp;quot; property with this:&lt;br /&gt;
 &amp;quot;diff_1_change_0&amp;quot; &amp;quot;health&amp;quot;&lt;br /&gt;
 &amp;quot;diff_1_arg_0&amp;quot; &amp;quot;*2&amp;quot;&lt;br /&gt;
The important part is to use the asterisk *, plus + or minus - sign to indicate relative changes.&lt;br /&gt;
&lt;br /&gt;
== Changing CVARs ==&lt;br /&gt;
You can affect CVARs by placing spawnargs like these on the entities:&lt;br /&gt;
 &amp;quot;diff_1_cvar_0&amp;quot; &amp;quot;tdm_player_default_health&amp;quot;&lt;br /&gt;
 &amp;quot;diff_1_arg_0&amp;quot;  &amp;quot;40&amp;quot;&lt;br /&gt;
 &amp;quot;diff_1_cvar_1&amp;quot; &amp;quot;tdm_player_default_height&amp;quot;&lt;br /&gt;
 &amp;quot;diff_1_arg_1&amp;quot;  &amp;quot;+8&amp;quot;&lt;br /&gt;
The above two spawnargs will be activated on difficulty level 1 (Hard) and will set the CVARs &#039;&#039;&#039;tdm_player_default_health&#039;&#039;&#039; to &#039;&#039;&#039;40&#039;&#039;&#039; and increase &#039;&#039;&#039;tdm_player_default_height&#039;&#039;&#039; by 8.&lt;br /&gt;
&lt;br /&gt;
==Changing the Difficulty Level Names==&lt;br /&gt;
Mappers can change the default names of the difficulty levels, eg, for style, story, or type. For example, suppose in your mission you want one level to include no kills or KOs and add other obstacles so the player has a richer experience playing more stealthily you might want to call it say &amp;quot;Stealthy&amp;quot;. Then another difficulty level in your same mission where you put extra enemies in brightly lit areas that the player can only get past by fighting them then you might want to call it say, &amp;quot;Warrior&amp;quot;. Another idea you might have would be &amp;quot;Extra Clues&amp;quot;. To do this...&lt;br /&gt;
&lt;br /&gt;
* Select any worldspawn brush or patch&lt;br /&gt;
* Add the following properties and values:&lt;br /&gt;
** diff0default Extra Clues&lt;br /&gt;
** diff1default Warrior&lt;br /&gt;
** diff2default Stealthy&lt;br /&gt;
&lt;br /&gt;
Other suggested styles :&amp;quot;Assassin&amp;quot;, &amp;quot;Ninja&amp;quot;, &amp;quot;Key Hunt&amp;quot; and so on.&lt;br /&gt;
&lt;br /&gt;
==Testing Different Difficulty Settings==&lt;br /&gt;
&lt;br /&gt;
To test an uninstalled map on different difficulty levels&lt;br /&gt;
&lt;br /&gt;
* Select any worldspawn brush or patch&lt;br /&gt;
* Add the following property and value:&lt;br /&gt;
* difficulty N ... replace N with...&lt;br /&gt;
** 0 = &#039;Easy&#039;&lt;br /&gt;
** 1 = &#039;Hard&#039;&lt;br /&gt;
** 2 = &#039;Expert&#039;&lt;br /&gt;
&lt;br /&gt;
There is also a CVAR [[tdm_difficulty]] which can be used to override any map-specific or menu-chosen setting. Set the CVAR &lt;br /&gt;
 tdm_difficulty 2&lt;br /&gt;
in the console before starting the map and it will always be using this level. Set the CVAR back to -1 (default) to disable the override. This setting is not saved between sessions to prevent it from unintentionally overriding your settings.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}} {{darkradiant}}&lt;/div&gt;</summary>
		<author><name>Fidcal</name></author>
	</entry>
</feed>